繁体   English   中英

在python中使用sympy solver的难度

[英]Difficulty in using sympy solver in python

请运行以下代码

    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同意通常输出答案为[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)。

SymPy的solve方案只提供符号解决方案。 CRootOf是一种象征性地表示多项式根的方法,多项式的根不能用自由基表示。 如果您只对数字解决方案感兴趣,可以在@tfv建议的每个术语上使用N ,或使用nsolve ,它以数字方式求解方程。 一般而言,如果您只关心数字解,那么符号solve可能会过度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM