- 締切済み
いろいろなルンゲクッタがありますが違いはあるのでしょうか?
ルンゲクッタをインターネットで検索すると様々なルンゲクッタの式が出てきます. 例えば,y'=f(x,y)に対して (1) k1=f(x,y) k2=f(x+dx/2,y+dx/2*k1) k3=f(x+dx/2,y+dx/2*k2) k4=f(x+dx,y+dx*k3) y(n+1)=y(n)+dx/6*(k1+2k2+2k3+k4) (2) k1=f(x,y) k2=f(x+dx/2,y+k1/2) k3=f(x+dx/2,y+k2/2) k4=f(x+dx,y+k3) y(n+1)=y(n)+dx/6*(k1+2k2+2k3+k4) など、以上にあげたもののほかにいくつか出てきます. この(1)と(2)の違いはk1~k4を求める際に k2=f(x+dx/2,y+dx/2*k1) k2=f(x+dx/2,y+k1/2) と,f(x,y)のyの方にdxがかけられている場合とかけられていない場合があります. この違いは何なんでしょうか?詳しい方がいらっしゃいましたらお願いします. ちなみに簡単な微分方程式を上記の両方で解いてみたのですが同じ結果になりました。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
じ~っと見てもらえばわかりますが, その 2つは (数学的には) 全く同じです. 計算上どうかというと.... 精度という点では同じかなぁ. 「一方では切り捨て誤差が出るけどもう一方では出ない」ということは起きないような気がする. 速度は (2) の方がちょっとだけ速いかもしれない. dx との乗算の回数が 1ステップあたり 1回だけ少なくなるのかな?
- Tacosan
- ベストアンサー率23% (3656/15482)
念のため補足しておくと, 「dx がないと足し算できない」というのは「dx がないと『次元が違うので』足し算できない」という意味です. 当然「数値としては足し算できる」んですが, 次元が違う以上「足した結果」に意味はありません.
- Tacosan
- ベストアンサー率23% (3656/15482)
や, どう考えても dx がないとおかしいんだけどなぁ.... だって, dx がないと足し算できないよね. その「同じ結果になった」ときの dx はいくつに設定しました? あと, 「y(n)」 って何を表してますか?
お礼
ご回答ありがとうございます。 返信がおそくなり申し訳ありません。 あ、失礼しました。(2)の表記が間違っていました。確かにこれでは次元がことなりますね。。。すみません。 正しくは、 (2) k1=dx*f(x,y) k2=dx*f(x+dx/2,y+k1/2) k3=dx*f(x+dx/2,y+k2/2) k4=dx*f(x+dx,y+k3) y(n+1)=y(n)+1/6*(k1+2k2+2k3+k4) 一緒になったときの計算はdx=1.0E-06でやりました。そしてy(n)は化学種のmol濃度をあらわしています.