2016-05-12 80 views
0

我正在求解大型方程組,但可以訪問jacobian矩陣。將附加參數傳遞給jacobian中的scipy.optimize.root

我決定使用scipy.optimize.root(打開其他建議),在那裏我可以將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

你可以使用'functools.partial'注入一個k。 https://docs.python.org/3/library/functools.html#functools.partial – cel

回答

2

使用​​找到fun(x,value)==0根在固定value。請注意,即使是單元素元素,args也必須是元組。