• 締切済み

ルンゲ=クッタ法の間隔hの位置

dy / dy = -2xy を、ルンゲ=クッタ法で解こうとしています。 http://ja.wikipedia.org/wiki/%E3%83%AB%E3%83%B3%E3%82%B2%EF%BC%9D%E3%82%AF%E3%83%83%E3%82%BF%E6%B3%95 の式を参考にExcelでマクロを組んでみたのですが、 なぜか違う答え(正答は0に収束なのに、+に発散してしまう)が出ます。 y n+1を求めるときに第2項にかけているhを、 k1~k4を求めるときにk1 = h * f(t,y)などとすると、 上手く収束するのですが… なぜhのかける位置によって収束するしないが変わってしまうのでしょうか? 教えてください。

みんなの回答

noname#96418
noname#96418
回答No.3

#2です。 k2, k3, k4 を求める式が間違っているのでは? y + k1 / 2 の k1 に h をかけるべき、等。

Uchujin
質問者

補足

この回答を読む前に確認したところ、 仰るとおりk2、k3、k4の式にもhをかけなければ いけないことに気づきました。 これが原因のようです。

noname#96418
noname#96418
回答No.2

おそらく、計算の過程のどこかに間違いがあるのでしょう。 dy/dx = -2xy は変数分離により y = C exp(-x^2) と積分できますが、「上手く収束する」場合の結果はこの解とよく合っていますか?質問文でこの点に触れられていないのが気になります。

Uchujin
質問者

補足

質問文4行目に書いているとおり、 上手く収束する場合は正答の0に、 上手く収束しない場合は+∞になります。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

どんな式を使ってるんでしょうか?

Uchujin
質問者

補足

x = 0 y = 1 h = 0.1 N = 50 For i = 0 To N k1 = F(x, y) k2 = F(x + h / 2, y + k1 / 2) k3 = F(x + h / 2, y + k2 / 2) k4 = F(x + h, y + k3) x = x + h y = y + (k1 + 2 * (k2 + k3) + k4) * h / 6 Next i Function F(x, y) F = -2# * x * y End Function です