sympy 的 Line.equation() 中的 x 和 y 表现得很奇怪
x and y in sympy's Line.equation() behave strange
为什么下面代码中的myLe
和myEq
不一样?打印出来的时候看起来是一样的。
我需要 myLe-myEq
为零。
from sympy import *
var('x y')
myLe=Line(Point(2,3), Point(3,5)).equation()
myEq=-2*x + y + 1
print("#",type(x-x ),x-x )
print("#",type(myLe),myLe)
print("#",type(myEq),myEq)
print("#",type(myLe-myEq),myLe-myEq)
# <class 'sympy.core.numbers.Zero'> 0
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.add.Add'> -2*x + 2*x - y + y
当您编写 myLe=Line(Point(2,3), Point(3,5)).equation()
时,sympy 使用内部变量,这些内部变量在外部具有名称 x 和 y,但与您之前声明的内部变量不同。
你可以通过写 Line(Point(2, 3), Point(3, 5)).equation(x=x, y=y)
.
强制 sympy 使用相同的内部变量
from sympy import *
var('x y')
myLe = Line(Point(2, 3), Point(3, 5)).equation(x=x, y=y)
myEq = -2 * x + y + 1
print("#", type(x - x), x - x)
print("#", type(myLe), myLe)
print("#", type(myEq), myEq)
print("#", type((myLe - myEq)), myLe - myEq)
# <class 'sympy.core.numbers.Zero'> 0
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.numbers.Zero'> 0
根据您的应用,您甚至可能希望对不同的方程使用不同的名称。
var('x1 y1')
myLe = Line(Point(2, 3), Point(3, 5)).equation(x=x1, y=y1)
print("#", myLe)
# -2*x1 + y1 + 1
为什么下面代码中的myLe
和myEq
不一样?打印出来的时候看起来是一样的。
我需要 myLe-myEq
为零。
from sympy import *
var('x y')
myLe=Line(Point(2,3), Point(3,5)).equation()
myEq=-2*x + y + 1
print("#",type(x-x ),x-x )
print("#",type(myLe),myLe)
print("#",type(myEq),myEq)
print("#",type(myLe-myEq),myLe-myEq)
# <class 'sympy.core.numbers.Zero'> 0
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.add.Add'> -2*x + 2*x - y + y
当您编写 myLe=Line(Point(2,3), Point(3,5)).equation()
时,sympy 使用内部变量,这些内部变量在外部具有名称 x 和 y,但与您之前声明的内部变量不同。
你可以通过写 Line(Point(2, 3), Point(3, 5)).equation(x=x, y=y)
.
from sympy import *
var('x y')
myLe = Line(Point(2, 3), Point(3, 5)).equation(x=x, y=y)
myEq = -2 * x + y + 1
print("#", type(x - x), x - x)
print("#", type(myLe), myLe)
print("#", type(myEq), myEq)
print("#", type((myLe - myEq)), myLe - myEq)
# <class 'sympy.core.numbers.Zero'> 0
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.add.Add'> -2*x + y + 1
# <class 'sympy.core.numbers.Zero'> 0
根据您的应用,您甚至可能希望对不同的方程使用不同的名称。
var('x1 y1')
myLe = Line(Point(2, 3), Point(3, 5)).equation(x=x1, y=y1)
print("#", myLe)
# -2*x1 + y1 + 1