この記事では、Java言語でオイラー法(euler)により常微分方程式の解を求めるプログラムについてソースコード付きで解説します。
[latexpage]
## オイラー法
オイラー法は、常微分方程式を近似的に解くアルゴリズムの1つです。
【参考】オイラー法のアルゴリズム
今回は、このアルゴリズムをJava言語で実装してみました。
## ソースコード
サンプルプログラムのソースコードです。
■calc(double x0, double t0, double tn, int n)
x0:初期条件
t0、tn:区間[t0, tn]
n:分割数
## 実行結果
サンプルプログラムの実行結果です。
時間tが0~1の区間を100分割して以下の微分方程式(RC回路の出力電圧v)を順に計算しています。
\begin{eqnarray}
\frac{dv(t)}{dt}=\frac{e-v(t)}{rc}
\end{eqnarray}
e:入力電圧[V]、v:出力電圧[V]、r:抵抗[Ω]、c:コンデンサ容量[F]
x(0.010000)=1.000000
x(0.020000)=1.900000
x(0.030000)=2.710000
︙
x(0.990000)=9.999705
x(1.000000)=9.999734
x(1.0)=9.999734
過渡応答により、時間経過につれて入力電圧10[V]に近づいています。
【関連記事】
Javaで数値計算処理
Java入門
数値計算プログラミング入門
コメント