この記事では、Python言語でルンゲクッタ法(Runge Kutta Method)により常微分方程式の解を求めるプログラムについてソースコード付きで解説します。
ルンゲクッタ法
ルンゲクッタ法は、常微分方程式を近似的に解くアルゴリズムの1つです。 【参考】ルンゲクッタ法のアルゴリズム
今回は、このアルゴリズムをPython言語で実装してみました。
ソースコード
サンプルプログラムのソースコードです。
■runge(x0, t0, tn, n) x0:初期条件 t0、tn:区間[t0, tn] n:分割数
実行結果
サンプルプログラムの実行結果です。 時間tが0~1の区間を100分割して以下の微分方程式(RC回路の出力電圧v)を順に計算しています。
(1)
![]()
e:入力電圧[V]、v:出力電圧[V]、r:抵抗[Ω]、c:コンデンサ容量[F]
[0.951625, 1.8126909859375,…, , 9.999445479083073, 9.99949824867983, 9.999545996589836]
過渡応答により、時間経過につれて入力電圧10[V]に近づいています。
【関連記事】 Pythonで数値計算処理 Python入門 数値計算プログラミング入門


コメント