ルンゲクッタ法とオイラー法がなぜそれほど違うのですか?


10

私は連立一次方程式を解く午前、、数値的に。オイラー法とルンゲクッタ法(RK)の一般的な方法を使用してこれを行いました。この2つの分析ソリューションの精度にはかなりの違いがあることに気づきました。これの理由は何ですか?バツ˙_=_バツ_


5
同じタイムステップの場合、2つの方法の精度と安定性は大きく異なります。悲しいかな、これは主に数学の質問であり、数値解法についての理解のレベルを説明するとよいでしょう。
ja72 2015

この科目の私のレベルは非常に限られています。しかし、あなたの意見を共有してくれてありがとう。

回答:


18

最初に、あなたが言及したかもしれません、あなたが使用したどのRKメソッド。ここでは、RK法とオイラー法の簡単な概要を説明します。実際には、メリットとデメリットがあります。

オイラー法

オイラー法は一次法です。これは、現在のポイントの変化率に基づいて次のポイントを推定する簡単な方法であり、コーディングが簡単です。シングルステップ方式です。特に、フォワードオイラー法は、空間の離散化における非減衰振動系(ばね質量系や波動方程式など)では無条件に不安定です。複雑な問題や境界条件の場合、失敗する可能性があります。基本的な数値解析に使用できます。この方法は空間的離散化では一般的に使用されませんが、時間離散化では使用されることがあります。このスキームはより拡散的であるため、双曲線微分方程式には推奨されません。このスキームとグリッド細分割の収束の順序は非常に貧弱です。オイラー法を高次法に拡張するのは簡単で簡単です。

RKメソッド:

Runge-Kuttaメソッドは、実際には特定のスタイルで派生したスキームのファミリーです。このリンクを参照して、RKメソッドの基本的なアイデアを入手できます。http//web.mit.edu/10.001/Web/Course_Notes/Differential_Equations_Notes/node5.html

フォワードオイラー法は、実際には最も単純なRK法です(1段階、1次)。高次の正確なRK法は、現在と次の離散時間の値またはその間の複数のステップでの勾配計算を含むため、多段階です。従属変数の次の値は、ソリューションのテイラー級数近似に基づいて、これらの複数のステージの加重平均をとることによって計算されます。この加重平均の加重は、テイラー級数の誤差項のキャンセルを必要とすることによって形成される非線形代数方程式を解くことによって得られます。高次RKメソッドの開発は、計算にシンボリックツールを使用しないと面倒で困難です。

最も一般的なRKメソッドはRK4です。これは、精度の順序と計算コストのバランスが取れているためです。RK4は、精度の次数と同じ数のステップを必要とする、最高次の陽的ルンゲクッタ法です(つまり、RK1 = 1ステージ、RK2 = 2ステージ、RK3 = 3ステージ、RK4 = 4ステージ、RK5 = 6ステージ、。 ..)。4次を超えると、RKメソッドの計算は比較的高価になります。

回答

  • 通常、オイラー法の誤差は、高次RK法(RK2、RK3など)よりも高くなります。これは、高次法の打ち切り誤差がオイラー法に比べて少ないためです。

  • 数値法の初級レベルの文献のいくつかでは、高次の方法(たとえば、RK4)は低次の方法(たとえば、オイラー法)よりも誤差が少ないと大まかに述べられています。ほとんどの場合、これは当てはまりますが、常に当てはまるわけではありません。このプロパティは、メッシュ、初期条件、および考慮した微分方程式に依存します。

  • RK4法における最初の「絶対最大差誤差は」等しい(又は)粗いグリッドのオイラー法よりも高い相対短い波の問題のために精製グリッドに低減する グリッド。RK4法の収束率はオイラーよりも大きいからです。グリッドの粗さまたは細かさは、完全に微分方程式、初期条件、および数値スキームに基づいていることに注意してください。詳細は下記リンクをご参照ください。これは微分に基づいていますが、「数値積分」が安定している限り、時間の数値積分と微分の相対的な比較を行うことができます。

ログerrorログgrd sze


6
より高い次数が常により低いエラーではなく、より速い収束を意味することを認識する他の人々を見るのは素晴らしいことです。それは重要なポイントですが、多くの人はそれを逃しているようです!
tpg2114 2015

はい、先生の講義の1つからこれを知って、私の課題の1つでこれを確認しました。ほとんどの場合、細かいメッシュと比較的硬くない微分方程式で作業するので、それは欠けていると思います。
AGN 2015

全体的に非常に良い答え。いくつかの点を修正するために編集し、いくつかの詳細を追加しました。うまくいけば、あなたは気にしないでください。
Doug Lipinski、2015

1
@ダグ、これであなたの貴重な時間を過ごしていただきありがとうございます。私のポイントは単純です。つまり、低次のメソッドはコースグリッドで正確であり、高次のメソッドはファイングリッドで正確です。なぜ私が言及したのか(グリッドの粗さまたは細かさは完全に微分方程式、初期条件、数値スキームに基づいていることに注意してください)スキームの打ち切り誤差はグリッドサイズと打ち切り関数の微分の次数の大きさに依存します(間接的に、これはODEの剛性に関連している可能性があります)。
AGN 2015

申し訳ありませんが、今まであなたのコメントはありませんでした。ユーザーが完全なユーザー名に@返信した場合(または投稿の所有者である場合)にのみ、人々は通知を受け取ります。入力@Dou...を開始すると、オートコンプリートが表示されます。他の質問に回答を投稿しました。
Doug Lipinski、2015

8

オイラー法は解の曲率を考慮しないため、ステップサイズによって異なる結果が得られる傾向があります。RKは、次数に応じて、曲率を考慮します。これにより、推定される「次のステップ」がより正確になります。基本的に、直線が曲線(オイラー)の良い近似であると偽っている場合は、常にソリューションをオーバーシュートします。しかし、曲率(RK)を考慮すると、曲線をたどることができます。

有名なホッケーの引用(Gretzky)と比較してください。オイラーはパックがどこにあるかをスケートします。ルンゲクッタは、パックが配置される場所に向かってスケートします。

これらのアルゴリズムについて読むことをお勧めします。ここここからウィキペディアの記事から始めることができます


5

me-tooの回答を追加したことをお許しください。しかし、Press、et al: "Numerical Recipes in C"のこのページを含めることに抵抗できませんでした。

ここに画像の説明を入力してください


1
他の答えを非常にうまく補完します。その本は古典です。FORTRANのルーツは、インデックス1で配列を開始することによって示されますが、
Floris

2
@Floris:私はかつて、イタリア北部の男性と一緒に働いていました。人々がなぜCのような現代の言語に変換しなかったのかについて、私は考えていました。
Mike Dunlavey

1
私はジュゼッペのあなたの説明の約半分に合います... :-)
フローリス

4

基本的に、精度が異なる理由は、それらの導出方法にあります。(私はフォワードを想定しています)オイラー法は一次であり、いくつかの方法で導出できます。最も簡単にテイラーの定理から。この方法では、2次項のみが保持されるため、エラーが1次になります。

一方、Runge kuttaメソッドは段階的であり、非常に具体的に選択された係数を使用して、いくつかの次数のエラー項を「キャンセル」します。Rk4は、0、1、2、3次の誤差項がステージ係数の選択によって相殺されるため、4次です。これらの係数の導出はそれほど難しくはなく、見たい場合はウィキペディアで見つけることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.