将附加参数传递给 scipy.optimize.root 中的雅可比矩阵

EDW*_*yte 0 scipy python-3.x

我正在求解大型方程组,但可以使用雅可比矩阵。

我决定使用 scipy.optimize.root (接受其他建议),在这里我可以将雅可比作为额外的可调用对象传递。唯一的问题是我的雅可比包含额外的常量,例如。

对于本例,需要求解 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))
Run Code Online (Sandbox Code Playgroud)

ev-*_*-br 6

Use root(..., args=(value,)) to find the root of fun(x,value)==0 at fixed value. Note that args must be a tuple even if a single-element one.