使用sympy求解具有复系数的多项式

使用sympy求解具有复系数的多项式,第1张

概述我是 python的新手,请原谅我,如果这有一个简单的解决方案.我正在尝试使用sympy来求解具有复系数多项式.如果k’太复杂’,我发现我得到一个空白输出……我不太确定如何定义那意味着什么.作为第一个例子,考虑具有复系数的这个四阶多项式, In [424]: solve(k**4+ 2*I,k)Out[424]: [-2**(1/4)*sqrt(-sqrt(2)/4 + 1/2) - 2** 我是 python的新手,请原谅我,如果这有一个简单的解决方案.我正在尝试使用sympy来求解具有复系数的多项式.如果k’太复杂’,我发现我得到一个空白输出……我不太确定如何定义那意味着什么.作为第一个例子,考虑具有复系数的这个四阶多项式,

In [424]: solve(k**4+ 2*I,k)Out[424]: [-2**(1/4)*sqrt(-sqrt(2)/4 + 1/2) - 2**(1/4)*I*sqrt(sqrt(2)/4 + 1/2),2**(1/4)*sqrt(-sqrt(2)/4 + 1/2) + 2**(1/4)*I*sqrt(sqrt(2)/4 + 1/2),-2**(1/4)*sqrt(sqrt(2)/4 + 1/2) + 2**(1/4)*I*sqrt(-sqrt(2)/4 + 1/2),2**(1/4)*sqrt(sqrt(2)/4 + 1/2) - 2**(1/4)*I*sqrt(-sqrt(2)/4 + 1/2)]

获得输出没有问题.不过,我有兴趣解决类似的问题,

In [427]: solve(k**6 + 3*I*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,k)Out[427]: []

这更复杂并返回一个空列表.但是,我可以使用枫木来解决这个问题.另请注意,在删除复杂系数时,没有问题,

In [434]: solve(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,k)Out[434]: [CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,0),CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,1),2),3),4),5)]

可以用数字方式评估结果数组的元素.

那么,这与复杂系数有关吗?我如何解决像在线[427]那样的方程式?

我试图用nsolve()解决并逐个考虑根,但我也没有运气这个方法.

解决方法 根据 Stelios的 comment,您可以使用 sympy.polys.polytools.nroots:

>>> from sympy import solve,nroots,I>>> from sympy.abc import k>>> solve(k**6 + 3*I*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,k)[]>>> nroots(k**6 + 3*I*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1)[-2.05972684672 - 0.930178254620881*I,-0.0901851681681614 + 0.433818575087712*I,-0.0734840785305346 - 0.434217215694685*I,0.60726931721974 - 0.0485101438937812*I,0.745127208196241 + 0.945593905069312*I,0.870999568002712 - 2.96650686594768*I]
总结

以上是内存溢出为你收集整理的使用sympy求解具有复系数的多项式全部内容,希望文章能够帮你解决使用sympy求解具有复系数的多项式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1197704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存