【问题标题】:Python solve cubic equation using sympyPython使用sympy求解三次方程
【发布时间】:2018-06-29 22:41:40
【问题描述】:

我在尝试使用 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) 之后是否缺少*
  • 我添加了*,但错误完全相同。
  • 尝试在 (C-B*r) 之后添加*,python 不处理带括号的乘法推断
  • @Tissuebox 我到处都添加了它(请参阅更新的开始帖子)。我也尝试了**^ 的力量,因为表达不会改变任何东西。

标签: python math sympy equation


【解决方案1】:

你的- 字符有问题。由于某种原因,它不是常规字符,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 那个错误的符号是 U+2212,一个 Unicode 减号。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多