在scipy.optimize.root中将其他参数传递给jacobian

时间:2016-05-12 20:19:37

标签: python-3.x scipy

我正在解决大型方程组,但可以访问雅可比矩阵。

我决定使用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))

1 个答案:

答案 0 :(得分:2)

使用root(..., args=(value,))查找固定fun(x,value)==0的{​​{1}}的根目录。请注意,即使是单个元素,value也必须是元组。