diffeq_heun プログラム仕様
- cms.diffeq_heun.diffeq_heun(force, t0, x0, dt)[ソース]
Heun法(修正オイラー法)を用いて、次の時刻の状態変数を計算する。
Heun法は、オイラー法よりも精度の高い常微分方程式の数値解法である。 現在の点での勾配と、オイラー法で予測された次の点での勾配の平均を用いて、次のステップを計算する。
現在の状態 (t0, x0) からオイラー法で次のステップを予測 (k0)。
予測された次のステップ (t0+dt, x0+k0) を用いて勾配 k1 を計算。
k0 と k1 の平均値を使用して、より正確な次の状態 x1 を計算する。
- パラメータ:
force -- callable: dx/dt = force(t, x) の形式で定義される微分方程式の右辺関数。 第一引数に時刻 t、第二引数に状態変数 x をとる。
t0 -- float: 現在の時刻。
x0 -- float: 現在の状態変数。
dt -- float: 時間ステップ幅。
- 戻り値:
float: 次の時刻 t0 + dt における状態変数 x1 の値。
- cms.diffeq_heun.force(t, x)[ソース]
積分対象となる関数 dx/dt = f(t, x) を定義する。
この関数は f(t, x) = -x*x を返す。これは例として使用される特定の微分方程式の右辺である。
- パラメータ:
t -- float: 現在の時刻。
x -- float: 現在の状態変数。
- 戻り値:
float: dx/dt の値。