1
を使ってscipy.optimize.broyden2を使用します。scipy.optimize.broyden2を使用したいのですが、問題は私の関数が単に引数を配列として取るのではなく、より多くのパラメータを取ることです。いくつかのパラメータを受け取る関数
どうすればよいですか?グローバル変数を定義しますか?
これらは私の関数です:
def F(S, I, R, alpha, beta):
return [- beta * S * I, beta * S * I - alpha * R, alpha * R]
def euler(xi, xf, m, F, initial_values, alpha, beta):
h = (xf - xi)/m
t = np.linspace(xi, xf, m + 1)
t = np.delete(t, 0)
vect_y = [initial_values[0], initial_values[1], initial_values[2]]
for i in range(len(t)):
y_actual = [sum(x) for x in zip(vect_y, [element * h for element in F(vect_y[0], vect_y[1], vect_y[2], alpha, beta)])]
vect_y = y_actual
return vect_y
私はx0
はinitial_values
だろうeuler
、とbroyden2
を使用したいです。
は、一般的にPython的ソリューションではありません。 Pythonicの解決策は、おそらくあなたのパラメータを取る関数を定義し、 'scipy.optimize.broyden2'を使用する配列を作成し、' scipy.optimize.broyden2'の結果を返します。しかし、あなたのパラメータや問題について何も知らなくても、もっと言い表すのは難しいです。 –
* argsなどを使用するようにリファクタリングすることができます。現在のコードを表示できますか?理論工学には難しいが、実際の問題を見る方が良い。 – mwm314
@ mwm314私の機能を追加しました。 – OiciTrap