古典ルンゲ・クッタ法(4次の精度)による積分テスト
局所計算精度が4次である古典ルンゲ・クッタ法を用いて、1階の微分方程式
を計算して、誤差を調べます。具体的にはに対して の範囲で積分した結果を解析解と比較します。 局所計算精度が4次なので、1ステップの計算誤差は5次です。そのため大局計算誤差4次となります。 次のグラフは積分区間の分割数に対する計算誤差をプロットした結果です。 大局計算誤差が4次であることが確認できます。
計算誤差
計算アルゴリズム(古典ルンゲ・クッタ法)
//積分区間 var T = 1; //被積分関数 function g( t, x ){ return t*t*t; } //1ステップの計算 function RK4 ( f, dt, t, x ){ var k1 = f( t, x ); var k2 = f( t + dt/2, x + k1*dt/2 ); var k3 = f( t + dt/2, x + k2*dt/2 ); var k4 = f( t + dt , x + k3*dt ); return x + dt / 6 *( k1 + 2 * k2 + 2 * k3 + k4 ); } function calculation( N ){ var dt = T/N; var x = 0; for( var i=1; i<=N; i++ ){ var t = dt * (i-1); x = RK4( g, dt, t, x ); } return x; }
物理シミュレーションについては「HTML5による物理シミュレーション」を参照ください。 数式の表示は「Tex表記によるHTML文書への式の埋め込み」をご覧ください。