Python使用sympy解决三次方程

5

当我使用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

我错过了什么?


你在(B-r)后面漏了一个*吗? - Stuti Rastogi
我添加了 *,但错误完全相同。 - Kyu96
尝试在(C-Br)后面添加“”,因为Python无法处理带括号的乘法推断。 - Tissuebox
@Tissuebox 我已经在各处添加了它(请参见更新的起始帖)。另外,我尝试了**^这两种符号表示乘方,但表达式没有改变。 - Kyu96
2个回答

6

你的 - 符号存在问题,可能不是普通字符,导致 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则可以


哦,天啊...那一定是从PDF文件中复制方程式时发生的。这是一个非常愚蠢的错误:D谢谢! - Kyu96
1
@Kyu96 那个错误的符号是U+2212,一个Unicode减号。 - PM 2Ring

2

-代表减号,代表负号。在Python中,它们的解释不同,第一个编码为u"\u002D",而第二个编码为u"\u2212",很明显它们不会执行相同的操作。要确保,请使用您的数字键盘。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接