Scipy fsolve趋向无穷而不是解

时间:2019-07-24 19:01:07

标签: python math optimization scipy

我想求解这个方程:enter image description here

但是,当我尝试使用scipy fsolve解决它时,它会收敛于无穷大,而不是给我解决方案。

它趋于无穷大的原因是,当x趋于无穷大时,函数趋于0:

enter image description here

这里有示例代码:

def f(x, r): return -e ** (-r * x)

def h(r): return 2 * f(4, r) - f(2, r) - f(10, r)

x0 = np.array([1])

print(optimize.fsolve(h, x0))

使用其他一些参数可以找到解决方案。但是,我希望代码使用不同的参数,而不仅仅是示例中的参数。我也想避免零解决方案。

非常感谢

1 个答案:

答案 0 :(得分:1)

如果让t = exp(-2x)那么方程就是多项式,所以可以用numpy.roots

求解。
import numpy as np

roots = np.roots([[-1, 0, 0, 2, -1, 0])
solutions = map(lambda x: -log(x)/2, roots)

为您提供3种实际解决方案和2种复杂解决方案。