ここから本文です

オイラー法と4次のルンゲクッタ法について オイラー法と4次のルンゲクッタ法...

アバター

ID非公開さん

2019/2/1319:41:17

オイラー法と4次のルンゲクッタ法について

オイラー法と4次のルンゲクッタ法はそれぞれ何次のオーダーなんですか?

1ステップでの誤差がオイラー法 O(h^2) y_i+1=y_i+f(y_i)*h+O(h^2?)
4次のルンゲクッタ法 O(h^5)であってまか?y_ +1=y_ +1/6(k_1+2k_2+2k_3+k_4)+O(h^5?)

「厳密解とRK4のテイラー展開が4次の項まで一致し、1ステップの推定誤差は O ( h ^5 ) のオーダーになる。目的の時刻の y を求めるのに必要なステップ数は O ( h ^− 1 ) になるので、全体の推定誤差は O ( h ^4 ) になる。」というのがよく分からないです。

また、C言語で4次のルンゲクッタ法を実装していて刻み幅hを0.1に設定しているのですが、誤差は0.1^4 になりません。0.01くらいずれます。コードに欠陥があるのでしょうか?必要であればコードを追記します

閲覧数:
46
回答数:
1

違反報告

ベストアンサーに選ばれた回答

2019/2/1401:06:30

簡単な数字で考えてみればいい。

一階微分方程式 y'=f(x,y) と y(0) が与えられたときに
y(1) の値を求めるにはどうするか。
f(x,y)が複雑すぎてとても解析解が求まりそうにない、
というときに使うのが数値解析による概算である。

刻み幅を h として、y(x+h)=g(h,y(x)) とするよい近似式があったとすれば、
この式を1/h回繰り返し適用する、すなわち
y(h)=g(h,y(0))
y(2h)=g(h,y(h))
...
y(1)=g(h,y((n-1)h))
とすることによってy(1)の近似解が求められるのである。

このステップ数は、
初期値と目的値の間の距離
(先ほどの例では0と1の間の1が距離であり、
y(3)からy(5)を求める場合は距離は2である)に比例し、
また、h の逆数にも比例する。
大体の場合、目的値は決まっているのだから、
「ステップ数は~hの逆数にも比例する。」ので、
ステップ数はΟ(h^(-1))となるのだ。

また、RK4 では g(h,(y(x))=y(x)+Ο(h^5) となる。
これを先ほどの繰り返しの式に当てはめていくと
y(h)=g(h,y(0))+Ο(h^5)
y(2h)=g(h,y(h))+Ο(h^5)
...
y(1)=g(h,y((n-1)h))+Ο(h^5)
となるので、これらを辺々加えていくと
y(1)=g(h,y(0))+Ο(h^5)/h
という評価になる。Ο(h^5)/h=Ο(h^4) なので
全体の推定誤差は Ο(h^4) になるということである。


最後に、Ο(h^4) は h=0.1 にすれば誤差が 0.0001 になるという意味ではない。
オーダー記法はあくまで「この値に大まかに比例する」という意味である。
Ο(h^4)を実験によって評価したいということであれば、
刻み幅を 1/2 にしたら誤差は (1/2)^4=1/16 倍になった
ことが言えればよいのだ。
h=0.1 のときに 誤差が 0.01 になるという結果を得たのであれば、
h=0.05 のときに誤差が 0.0007 程度になることが分かればいいのである。

微分方程式 y'=xy, y(0)=1 のときの y(1) をRK4で求めてみよう。
厳密解は y=e^(x^2/2) であるから y(1)=√(e)≒1.64872127070012 である。

h=1 の場合、
y(1)=1.64583333333333, 誤差 0.0028879
h=0.5 の場合、
y(1)=1.64852770169576, 誤差 0.0001936
h=0.25 の場合、
y(1)=1.64870973607629, 誤差 0.0000115

ということで、実験結果からも Ο(h^4) であることが見て取れるだろう。

  • アバター

    質問者

    ID非公開さん

    2019/2/1401:11:20

    大変分かりやすい説明ありがとうございました。スッキリしました。
    数学に疎い専門学生ですが頑張ります!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/2/14 01:12:01

ありがとうございました

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる