Python使用Sympy求解三次方程

时间:2018-06-29 22:41:41

标签: python math sympy equation

尝试使用sympy求解方程式时遇到问题。 一些变量已分配了特定值。 我正在尝试求解bcd的方程式。 这是我的尝试:

from random import randint
import sympy
from sympy.abc import b,c,d,B,C,r,x

B=10
C=20
r=123

# Equation: x^3+b*x^2+c*x+d=x^3+(B−r)x^2+(C−B*r)x−C*r
equation = sympy.Eq(x**3+b*x**2+c*x+d,x**3+(B−r)*x**2+(C−B*r)*x−C*r)

print(sympy.solve(equation,"b"))
print(sympy.solve(equation,"c"))    
print(sympy.solve(equation,"d"))

Python向我显示以下错误:

    [user@user Python Scripts]$ python polygen.py 
  File "polygen.py", line 10
    equation = sympy.Eq(x**3+b*x**2+c*x+d,x**3+(B−r)*x**2+(C−B*r)*x−C*r)
                                                  ^
SyntaxError: invalid character in identifier

我想念什么?

2 个答案:

答案 0 :(得分:4)

您的-字符有问题。由于某种原因,它不是常规字符,而python无法识别它。我用机器上的连字符替换了您所有的减号,并且可以使用:

from random import randint
import sympy
from sympy.abc import b,c,d,B,C,r,x

B=10
C=20
r=123

# Equation: x^3+b*x^2+c*x+d=x^3+(B−r)x^2+(C−B*r)x−C*r
equation = sympy.Eq(x**3+b*x**2+c*x+d,x**3+(B-r)*x**2+(C-B*r)*x-C*r)

print(sympy.solve(equation,"b"))
print(sympy.solve(equation,"c"))
print(sympy.solve(equation,"d"))

我不确定错误的-符号是哪种字符:

a = 2−2在我的机器上不起作用

a = 2-2可以

答案 1 :(得分:1)

-不是减号。在Python中,它们的解释有所不同,第一个编码为u"\u002D",但第二个编码为u"\u2212",显然它们不会做同样的事情。确保使用数字键盘。