私は現在、SciPy の integrate.ode パッケージを使用して、結合された一次 ODE のペアを解こうとしています。ただし、これは、統合ループ中に、反復ごとにメソッドに送信しているパラメーターを更新する必要があることを意味し、単純に前の値を追跡しset_f_params()
て反復ごとに呼び出すだけではうまくいかないようです。
hprev = Ho
pprev = Po
yh = np.zeros(0)
yp = np.zeros(0)
while dh.successful() and dp.successful() and dp.t < endtime and dh.t < endtime:
hparams = [alpha, beta, pprev]
pparams = [delta, gamma, hprev]
dh.set_f_params(hparams)
dp.set_f_params(pparams)
dh.integrate(dh.t + stepsize)
dp.integrate(dp.t + stepsize)
yh = np.append(yh, dh.y)
yp = np.append(yp, dp.y)
hprev = dh.y
pprev = dp.y
各反復で設定している値はset_f_params
、コールバック メソッドに反映されていないようです。これは、ウェブ上の例のどれもコールバックに「ライブ」変数を渡すことを含まないように見えることを考えると、それほど驚くことではありませんでしたが、これはこれらの値をコールバック メソッドに取得する唯一の方法でした。
これらの ODE を数値的に統合するために SciPy を使用する方法について誰かアドバイスはありますか?