【发布时间】:2015-04-27 17:52:45
【问题描述】:
我有一个函数,我想找到它的根源。我可以编写一个程序来找出它的根,但重点是,每次我想找到另一个根时,我都应该手动给它一个初始值,我不想这样做。我想把所有的根都放在一个列表中,因为我想在找到根之后对它们进行一些操作。这是我的代码:
import math
import scipy
import scipy.optimize
c = 5
alambda = 1
rho = 0.8
b = rho * c / alambda
def f(zeta):
y = ((zeta**c)*(math.exp((alambda*b)*(1-zeta)))) - 1
return y
print scipy.optimize.newton(f, -1)
【问题讨论】:
-
没有算法可以计算一个函数的所有根,除了一些特殊结构的函数(例如多项式等)。对于您的函数,根似乎可以与 Lambert W 函数相关。
-
确实,我会赞同@pv. 的评论。你需要在函数上使用一些聪明(并且有一些关于变得更聪明的文献),但最终,在某种意义上,你注定要失败,即使你知道所有的根源都是真实的。如果它们可以变得复杂,那么生活会变得更加艰难......