我正在尝试在python中解决以下多项式.一些常量(2.11和.125567481)是动态的,并且会在程序中发生变化.我需要一种方法来计算python中这个等式的解.我尝试使用Sympy,但它一直在执行,从未提出过解决方案.Wolfram Alpha提供了4个解决方案,其中3个是复杂的,1个是真实的.我只需要真正的那个.有没有办法在python中有效地解决这个等式?在mathematica中这很容易做到,但我找不到在python3中有效的方法.
(要将它与symPy的fsolve函数一起使用,我必须操纵等式,使其等于零.它仍然没有找到解决方案.)
小智 5
这不是多项式,因为d被提升到分数.充满浮点常数的等式不太可能受益于像SymPy这样的符号包.使用SciPy可以轻松获得数值实值解决方案:
from scipy.optimize import fsolve
from math import pi
fsolve(lambda d: 0.125567481 * (d+0.04) - d**2.25 * (pi*2.11+0.10053 + 2.513274*d), 1)
Run Code Online (Sandbox Code Playgroud)
回报 array([ 0.06086999])
请注意,我清除了分母(将它们与它们相乘),因为除法使得数值解更难.粗略地说:表达式看起来像多项式越多越好.我按照fsolve的语法重新安排了表达式,使其等于0 .
数字1是解决方案的猜测; 它不一定是好的; 它只需要一点思考:我们需要一个正根,所以让我们从一个正数开始.