y'=f(x,y), x0 ≦ x ≦ xN
y(x0)=y0
の数値解法を考える. 分点 x0 < x1 < x2
< ... <xN-1< xN をとり,分点 xkで
の値を yk とし,簡単のため分点は等間隔 h
であるとする.ここでは,オイラー法とルンゲ・クッタ法を取り上げる.
y'=(yk+1-yk)/h + O(h2)
と直線で近似すると,微分方程式は,
yk+1=yk+ h f(xk,yk)+ O(h2)
と表すことができる.この式に (x0, y0) を代入すると y1が 求まる.同 様に,(x1, y1) を代入すると y2が求ま る.このように次々代入して yN が求まる.
上述のように微分方程式を解く方法をオイラー法という.オイラー法の1ステップの誤差(局所誤差)は2次であり,多ステップ計算した結
果は,誤差(大域誤 差)は h の1次であることが知られている.一般に局所誤差が m+1 次のとき大域誤差は m
次であり,このような近似を与える式を m 次の近似式という.
dy/dx=y
を初期値 y(x0)=y0 として 一次の近似で解くプログラ厶です.x
の分点は等間隔 h です.作成して実行してみましょう.
入力は、
(x の初期値) (y の初期値) (分点の幅 h) (繰り返しの数)
です。
プログラムでは、y1=y0+hh*y0 の代わりに dd=(1.0+hh) として y1=dd*y0 としてある。
出力結果をファイルに保存して,gnuplot で確認しましょう.
% gcc pex4-1.c -o pex4-1 -lm
% ./pex4-1
% 1 1 0.1 20
% gnuplot
gnuplot> plot "out.d", "out.d" using 1:3 w l
1行目は x の値、2行目は y の値、3行目は解析解です。赤の点が計算値で、緑の線が解析解です。