アプリ版:「スタンプのみでお礼する」機能のリリースについて

数値計算の演習問題で以下の二階微分方程式をルンゲ・クッタで解けという問題があります。

-y"+x^2・y=e・y(eは定数、”・”は単なる掛け算)

y(0)=1, y'(0)=0, 0<=x<=2までを計算せよ。



これは

y’=z・・・(1)
 
z'=(x^2-e)y・・・(2)

この2つの連立方程式を解けばよいところまではわかります。
まず(2)を解くときにルンゲ・クッタの場合
(k1+2k2+2k3+k4)/6の項(←公式の右辺第二項)のk(1~4)を求めなければいけません。

質問はkの求め方です。

本にはy'=f(x,y,z) , z'=g(x,y,z)とおけば
(2)の場合だと例えばk1は
k1=g(xn,yn,zn)dxで計算する。と書いてあります
しかしz'=(x^2-e)y(←zが入ってない) なので、計算すると
k1=g(xn,yn)dxとなってしまうんですがどうなんでしょう?

おそらくどこかで勘違いしてると思うんです。
長い質問になってしまいましたがどうかご教授のほどよろしくお願いします。

A 回答 (2件)

良いと思いますよ。


ちなみに、私は、dx=hとして、
k1=f(x,y,z)・h
l1=g(x,y,z)・h
k2=f(x+h/2,y+k1/2,z+l1/2)・h
l2=g(x+h/2,y+k1/2,z+l1/2)・h
k3=f(x+h/2,y+k2/2,z+l2/2)・h
l3=g(x+h/2,y+k2/2,z+l2/2)・h
k4=f(x+h,y+k3,z+l3)・h
l4=g(x+h,y+k3,z+l3)・h
としてプログラムを書きました。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
同じ問題やられてたんですか(笑)
お答えの中で
k1=f(x,y,z)・h
l1=g(x,y,z)・h
とありますが
実際プログラムで計算するとき
f(x,y,z)の中身は
f(x,y,z)=z

g(x,y,z)の中身は
g(x,y,z)=(x^2-e)・y
ということでいいんですか?

って何がいいたいかと言うと
例えばg(x,y,z)・hを実際に計算する場合、
g(x,y,z)=(x^2-e)・y
に変数(xとy)に数を代入して計算しますよね。
その場合g(x,y,z)(←zが入っている)にはどこにもzを代入する
ところがないんですがg(x,y,z)と記述するのは単に形式的なものと
考えていいんですか?

お礼日時:2001/07/06 00:30

卒論で微分方程式の数値計算をやったので多少の覚えはあります。

結局僕の場合はy'の項が入ってるのでリープフロッグの方が収束が早いという事でそっちにしましたが。

> k1=g(xn,yn)dxとなってしまうんですがどうなんでしょう?

問題ありません。

> 本にはy'=f(x,y,z) , z'=g(x,y,z)とおけば

というのはy', z'がx,y,zの関数という一般の場合であり、仮に
f(x, y, z) = x + y
という関数が存在しても何の問題もないのと同じです。

k1を計算する際にも
k1 = (x^2 - e)y * dx
と値が一意に決まり、問題ないでしょう。

ちなみにこの程度の微分方程式なら刻み幅dxにも寄りますが、プログラムなど組まなくてもExcelで一発で出ますよ。グラフも。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
もしかしたら私は勘違いしてるんじゃないかと思ってたので・・
しつこく質問してしまいすいませんでした。

お礼日時:2001/07/07 03:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!