scipyのoptimize.root関数( 公式Docs )を使って関数fのゼロ点を求めています。
いま、オプションのargsを用いてfに渡す引数を指定しています。
例えば、
python
1 2def f(a,b,c,d): 3 return a*a+b*b+3*c*c+d*d*d 4 5r=optimize.root(fun=f, 6 x0=(1e11), 7 args=(2, 3, 4), 8 method="lm").x[0]
とすると
方程式 f(a,b=2,c=3,d=4) =0
のゼロ点が計算されてrに代入されます。
いま、私がやりたいのは、b以外の変数(つまりa, c, d)を定めた時のf(a,b,c,d)=0のゼロ点を計算したいと思っております。
しかし、args=(hoge, hogehoge, hogegehoge)のhogeの渡される引数の位置が関数fの引数の2番目から順番となっており、
変更方法が分かりません。
その場しのぎの方法として、新たに
def f(b, a, c, d): return a*a+b*b+3*c*c+d*d*d
という引数の位置以外は全く同じ関数を作ることで対応しており、非効率的です。
args中の値が渡される引数を指定する方法や、もっとスマートなやり方がありましたらご教示ください。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/23 13:59
2019/05/23 14:00
2019/05/23 14:01
2019/05/23 14:02