2016-05-12 13 views
0

大きな系の方程式を解いていますが、ジャコビア行列にアクセスできます。追加の引数をscipy.optimize.rootのjacobianに渡す

私はscipy.optimize.root(他の提案に開放されています)を使用することに決めました。追加の呼び出し可能コードとしてjacobianを渡すことができます。唯一の問題は、私のジャコビアンには例えば、この例ではYの

は、Zは、解決する必要があり、kは固定valuefun(x,value)==0のルートを見つけるために使用​​定数

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

あります。 argsは、単一要素の場合でもタプルでなければならないことに注意してください。

関連する問題