【问题标题】:x and y in sympy's Line.equation() behave strangesympy 的 Line.equation() 中的 x 和 y 表现得很奇怪
【发布时间】:2021-11-19 10:31:05
【问题描述】:

为什么myLemyEq在下面的代码中不一样?打印出来的时候看起来是一样的。

我需要 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

【问题讨论】:

    标签: python sympy


    【解决方案1】:

    当您编写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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      相关资源
      最近更新 更多