实现数学定理

时间:2017-12-05 06:56:14

标签: theorem

这是实现数学定理的一般设计问题。 我试图用编程语言中的微分几何来实现一些数学定理(无关紧要;为简单起见,我使用python语言,但这不应影响一般的想法。)。我可以用一个例子更好地描述这个问题。

定理: r类> 2表面上的任何直线都是渐近曲线。

如何实施这样的定理。显然,函数需要一行作为参数,表面作为参数。

def theorem (line, surface): pass

该函数应该返回true,false还是不可判定?或者函数应该返回“渐近”。如果我们将函数命名为“is-asymptotic”,那么它应该返回true,false或undecidable。

该函数应检查的第一件事是线是否笔直。我们不详细说明。然后,它应该计算表面的类

def theorem (line, surface): 
  if not straight(line, surface):
    return "undecidable"
  else:
    if class-of(surface) >= 2:
      ???

上述方法促使我返回true / false。另一方面,如果我将它作为一个方法实现为一个名为line的类,它要求给定行的所有属性,那么它应该返回一个属性列表,包括“渐近”。

最后,我上面所做的是要求一个给定线的属性,我们的论点。该函数没有说明所有其他直线。

您如何解决定理的整个实现设计?

提前谢谢。

PS。为了进一步阐明编程语言内容中的问题,上述问题被重新描述如下。假设我有一个对象“Line”的实例“line”。我是否询问实例是否渐近

is_asymptotic(line) # returns true/false/undecidable

或者我是否要求其属性并获取包含渐近属性的属性列表,如

line_properties(line) # returns [..., "asymptotic", ...]

或者在创建实例时我将属性设置为渐近,检查它是否是直的,如

line = Line(surface) # sets line.asymptotic = True

1 个答案:

答案 0 :(得分:0)

使用sympy包。

In [153]: from sympy import *
In [154]: x = symbols('x')
In [155]: y = symbols('y')
In [156]: z = symbols('z')
In [157]: p = (x+y)**2
In [158]: p
Out[158]: (x + y)**2
In [159]: q = x**2 + 2*x*y + y**2
In [160]: p == q
Out[160]: False
In [161]: p.expand() == q
Out[161]: True
你很可能会找到 https://github.com/sympy/sympy/wiki/Geometry-Module

有帮助。

祝你好运!