使用Python查找不同变量值的多变量函数的根

时间:2014-02-03 08:58:35

标签: python scipy mathematical-optimization

我有一个两个变量的函数,需要为另一个变量找到大量不同值的函数的根。这样做的最佳方式是什么?

我可以用循环来做,但我认为有更好的方法来实现它。

import scipy as sp
def g(y,x):
    return x**2+y
for i in range(1000):
    sp.optimize.fsolve(g,0,i)

1 个答案:

答案 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)