diffeq_simpson プログラム仕様
- cms.diffeq_simpson.diffeq_euler(diff1func, t0, x0, dt)[ソース]
オイラー法を用いて1階常微分方程式を1ステップ進めます。
- 詳細説明:
x(t+dt) = x(t) + dt * f(t, x(t)) の式に基づき、 次の時刻における x の値を計算します。
- cms.diffeq_simpson.diffeq_heun(diff1func, t0, x0, dt)[ソース]
ホイン法(修正オイラー法)を用いて1階常微分方程式を1ステップ進めます。
- 詳細説明:
オイラー法で求めた予測値と、その予測値を用いて再計算した傾きの平均を取ることで、 より精度の高い次の時刻の x の値を計算します。
- cms.diffeq_simpson.diffeq_simpson(diff1func, t0, x0, dt)[ソース]
シンプソン法(に似た重みを持つRunge-Kutta法)を用いて1階常微分方程式を1ステップ進めます。
- 詳細説明:
3つの傾き k0, k1, k2 を計算し、シンプソン則の重み (1/3, 4/3, 1/3) に似た 加重平均 (k0 + 4*k1 + k2) / 3 を用いて、次の時刻における x の値を計算します。 この実装はRunge-Kutta法のバリアントとして、シンプソン則の重み付けを適用しています。
- cms.diffeq_simpson.dxdt(t, x)[ソース]
評価対象となる微分方程式 dx/dt = -x^2 の右辺を計算します。
- 詳細説明:
時刻 t と変数 x の値を受け取り、微分方程式の右辺である -x*x を計算します。
- cms.diffeq_simpson.fsolution(t)[ソース]
微分方程式 dx/dt = -x^2 の解析解を計算します。
- 詳細説明:
初期条件 x(0)=1.0 の場合の解析解 x = 1 / (1 + t) を返します。