我有一个两个变量的函数,需要为另一个变量找到大量不同值的函数的根。这样做的最佳方式是什么?
我可以用循环来做,但我认为有更好的方法来实现它。
import scipy as sp
def g(y,x):
return x**2+y
for i in range(1000):
sp.optimize.fsolve(g,0,i)
答案 0 :(得分:1)
@Zhenya评论你可以使你的函数基于矢量。实际上它已经是,你可以打电话
xs = arange(1000)
sp.optimize.fsolve(g,zeros_like(xs), xs)
但是,这样你就会让fsolve认为它有一个1000维的COUPLED问题,而不是1000个解耦的问题。
因此循环可能是最好的事情。
我建议您使用最后一次迭代的结果作为下一次迭代的新初始猜测,例如
y_root = .0
for i in range(1000):
y_root = sp.optimize.fsolve(g,y_root,i)