python - 在 python 中使用 sympy 求解器的困难

标签 python sympy

请运行以下代码

    from sympy.solvers import solve
    from sympy import Symbol
    x = Symbol('x')
    R2 = solve(-109*x**5/3870720+4157*x**4/1935360-3607*x**3/69120+23069*x**2/60480+5491*x/2520+38-67,x)
    print R2

代码的输出是

[2*CRootOf(109*x**5 - 4157*x**4 + 50498*x**3 - 184552*x**2 - 527136*x + 3507840, 0), 2*CRootOf(109*x**5 - 4157*x**4 + 50498*x**3 - 184552*x**2 - 527136*x + 3507840, 1), 2*CRootOf(109*x**5 - 4157*x**4 + 50498*x**3 - 184552*x**2 - 527136*x + 3507840, 2), 2*CRootOf(109*x**5 - 4157*x**4 + 50498*x**3 - 184552*x**2 - 527136*x + 3507840, 3), 2*CRootOf(109*x**5 - 4157*x**4 + 50498*x**3 - 184552*x**2 - 527136*x + 3507840, 4)]

有人可以解释答案代表什么以及如何以常规形式获得输出,即如果答案是 0.1,0.2,0.3,0.1,0.4 sympy 通常将答案输出为 [0.1,0.2,0.3,0.1,0.4]

最佳答案

要在答案中获得数值近似值,您可以使用 N()。由于您有多个解决方案,因此您可以遍历列表。我使用了一个更简单的方程式,因为你需要一段时间......

试试这个:

from sympy.solvers import solve

from sympy import Symbol, N
x = Symbol('x')
#R2 = solve(-109*x**5/3870720+4157*x**4/1935360-3607*x**3/69120+23069*x**2/60480+5491*x/2520+38-67,x)
R2 = solve(x**2+2*x-4,x)
print R2
print [N(solution) for solution in R2]

[编辑]:如以下评论所述,五阶方程只能在升级 sympy 后求解(在我的情况下为 1.0)。

关于python - 在 python 中使用 sympy 求解器的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36811495/

相关文章:

symbols - Sympy 获取符号名称

python - 使用 Graphicsmagick 或 pgmagick 进行洪水填充

python - Python 中的成对集交集

python - Sympy "not all arguments converted during string formatting"使用 zeros((n,n))

Python求解一个变量的方程

python - 如何对包含用于 NumPy 的 erf 函数的 SymPy 表达式进行 lambdify

Python:将表达式解释为文本而不计算它

python - 在不使用子进程调用的情况下将 Bash 脚本嵌入 python

python - 通过字体名称而不是文件名和跨平台字体选择 PIL.ImageFont

python - 在 pandas 中读取 csv 文件时出错[CParserError : Error tokenizing data. C 错误 : Buffer overflow caught - possible malformed input file.]