我正在解决大型方程组,但可以访问雅可比矩阵。
我决定使用scipy.optimize.root(对其他建议开放),我可以将jacobian作为额外的callable传递。唯一的问题是我的jacobian包含额外的常量,例如。
对于此示例y,z需要求解,k是常数
import scipy.optimize
def fun(x, k):
[y, z]= x
return [k*y**2 + z**2 - 25, k*z*y ]
def jacobian(x, k):
[y, z] = x
j = [[2*k*y, 2*z],
[ k*z, k*y]]
return j
solution = scipy.optimize.root(fun, [x1, x2], jaco=(jacobian, value_for_k))
答案 0 :(得分:2)
使用root(..., args=(value,))
查找固定fun(x,value)==0
的{{1}}的根目录。请注意,即使是单个元素,value
也必须是元组。