• ベストアンサー

常微分方程式の問題で。

常微分方程式の問題で オイラー法、ルンゲ・クッタ法、ルンゲ・クッタ・ギル法、ミルン法、アダムス法より2つの方法を用いて解け。 y''+y'/x+y=0 初期条件y'/x=-1/2 0<=x<=4 h=0.4 という問題なのですが、基本的に解き方がわかりません。 二階微分なので連立ルンゲ・クッタで解くのかな?っと思ったのですが 結局それからどうすればいいのかわかりません。 2つの方法とありますが、これはどの方法でも解けるものなのでしょうか? 本当はC言語のプログラムを組まなければいけないのですが、 この理論がわからないのでおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • petit-C
  • ベストアンサー率46% (7/15)
回答No.4

No.2です。 No.1さんの指摘どおり間違っております。 すみません。訂正させていただきます。 オイラー法では、 u[n+1] = u[n] + v[n] * h v[n+1] = v[n] + ( - v[n] / ( n * h ) - u[n] ) * h でした。(括弧はずしたほうが良いでしょう) No.1さんのいうとおり、初期条件は、  y'/x → -1/2 (x→+0) と読むしかないので、  y''(0) = -1/2 , y'(0) = 0 , y(0) = 1 ですね。 ( y''(0) = lim(x→+0)y'/x ) なので、u[0] = 1 , v[0] = 0 ですが、 上の漸化式は、n=0で0で割る問題があるので、 (他の方法でも同じです。) 1回目の手順だけ、v[0] / ( n * h )を、 -1/2としなければいけないと思います。 レポートにするなら、ここは、手計算で、 u[1],v[1]から、数値計算したらいいと思います。 参考になりました??

usui323
質問者

お礼

回答ありがとうございます。 う~ん、難しいなぁ(^^;) 一階微分ならまだ比較的理解できるのですが・・・。

その他の回答 (4)

  • petit-C
  • ベストアンサー率46% (7/15)
回答No.5

アドバイスです。  「1階化」→「連立常微分方程式」→「各差分化手法」 で考えたらいいと思います。 <1階化> j階常微分方程式は、k次導関数を変数に割り当てることで、ベクトルの1階常微分方程式になります。 z_k(t) = (yのk階微分) ( kは、0~j-1 ) 最後以外は、z_1'(x) = z_2(x)見たいな感じです。 最後の式は、z_(j-1)'(x) とz_1からz_(j-1)で書きます。 こういう手順を1階化というはずです。 手順自体に、必然性は無いと思いますが、 この手順で、1階化できて、高階の導関数が無くなってよかったねという感じで、次の段階に行きます。 「必然性は無い」とは、別の方法でも1階化できるということ。 <連立常微分方程式> さっきの微分方程式は、連立だけど、1階の常微分方程式になりました。 z_kをk成分とするベクトルvを考えてもいいですか?  v(x) = ( z_1 , z_2 , ‥ , z_(j-1) ) とすると、  v'(x) = f(v) というベクトル値関数f(v)のある方程式になります。  { v(x + dx) - v(x) } / dx = f(v) とよめるので、移項して、  v(x + dx) = v(x) + f(v) dx になります。 <各差分化手法> できたように見えますが、実は、さっきの式のf(v)がまずいです。 vは、v(x)でしょうか?v(x+dx)でしょうか? dxを有限の値とした場合、本来ならuとか書くべきで、 厳密に言うなら、平均値の定理から出てくる、存在の保証されたある値です。 でも、誤差を評価すると、x~x+dxの間のvのどれでも、大体OKになりまし、そもそも、v(x)からだけでuを決めないといけないので、ガッツリ決めるのは無理があります。 つまり、  v(x + dx) = v(x) + f(u) dx uの決め方が、何とか法になります。 ここで、uは、vと同じ次数のベクトルです。 (u≒vです) (ふつうの)オイラー法の場合、uは、v(x)と定めます。やってみたらわかりますが、v(x+dx)を求めるのに、v(x)がわかっていたら、一発だからすごく簡単という感じです。 ルンゲクッタだと、もうちょっと複雑な決め方をしますが、理論的側面(というか証明の計算)よりは、実用上の話が大事なようにおもえます。(計算機科学の数学が大事な人だったら別ですが) 手順をちゃんと踏めるかが重要。 オイラー法は、精度がdx程度ですが、ルンゲクッタは、精度がdx^6の精度になったと思います。 一回の差分での手順は、オイラー法が1手順ですが、ルンゲクッタは、4手順かかります。 でも、精度が6次なので、ルンゲクッタはすげーとなります。 オイラーは速いからいいじゃんとも言います。(?) どの手法も一長一短があって、どれを使うかは、問題の性質によります。全部ひっくるめて、ルンゲクッタは、最終兵器という人もいます。 こんな感じのイメージで調べてみてください。

usui323
質問者

お礼

回答ありがとうございました。 難しいですが、もう少し考えてみようとおもいます。

回答No.3

No.1です。 連立化することと、オイラー法について No.2さんが書かれているので(ただし、v' = - v/u - u → v' = - v/x - u ですよね)、初期条件に関してですが、ものすごく善意に解釈して >y''+y'/x+y=0 >初期条件y'/x=-1/2 >0<=x<=4 >h=0.4 の2番目の式が、x=0の近傍で成り立つものと考えれば、y'=-1/2xと変形して、x=0 では、y'=0 で y''=-1/2 なので1番目の式から y=1 となり、x=0におけるy,y'の初期条件は定まります。また、計算機の上ではx=0におけるy'/xの値の評価は出来ませんが、x=0でy'/x=-1/2 と与えられているのでそれを一つの変数と考えることで計算できるでしょう。

usui323
質問者

お礼

回答ありがとうございます。 初期条件については少しわかりました。

  • petit-C
  • ベストアンサー率46% (7/15)
回答No.2

「2つの方法」とは、「答えを2個作りなさい」という意味でOKだと思います。 連立も正しいと思います。 u = y v = y' として、 u' = v v' = - v/u - u とおいたら、ほとんど終わりですね。 オイラー法なら、 u[n+1] = u[n] + v[n] * h v[n+1] = v[n] + ( - v[n] / u[n] - u[n] ) * h として、ぐるぐる回せばいいと思います。 メモリを枯渇させないよう、注意してください。 問いてないので、わかりませんが、 初期条件は、何でも、いいと思います。 例えば、x[0] = 1 , y[0]= 0 , y'[1] = -1/2 。 一応、2個の答えの初期条件を合わせて、計算して、 「比べてみよ」というのが、問題の意図だと思います。 たぶん、xが小さいところで、差異が生じると思います。

usui323
質問者

お礼

回答ありがとうございます。 う~ん、なんかよくわからないんですよねー。 一階微分ならまだわからんでもないのですが、運悪く2階微分が 当たってしまったもので・・・。

回答No.1

>オイラー法、ルンゲ・クッタ法、ルンゲ・クッタ・ギル法、ミルン法、アダムス法より2つの方法を用いて解け。 どれも数値計算のアルゴリズムなので、それぞれをキーワードにしてWEBで検索すれば概要は分かると思うのですが、それ以前に >y''+y'/x+y=0 >初期条件y'/x=-1/2 >0<=x<=4 >h=0.4 は、初期条件が不足していて、どの方法でも解けません。

関連するQ&A

  • 微分方程式をオイラー法でときたい

    高階常微分方程式 y” =f(x、y) y(0)=yo y’(0)=y’o この式と初期値でオイラー法を使って解きたいのですが... オイラー法を二回使えばよい、一階の連立方程式に なおせばよい。という意味がいまいちつかめません。 教えていただけると助かります。お願いします。

  • 常微分方程式の問題

    微分方程式x'=x^2-t-1で初期値がx(0)=1の問題で、 オイラー法とルンゲクッタ法は出せたのですが、 それらと比較するために出す解析解がわかりません。 どなたかよろしくお願いします。

  • 連立常微分方程式の問題。。。

    手元の参考書などを調べても、連立された微分方程式について書いていなくて困っています。 以下の問題なのですが、どのように進めていけばよいのでしょうか?? ------------------------------------------------------- 問) dx/dt + 2x - 3y = exp(t) dy/dt - 3x + 2y = exp(2t) について、以下の問に答えなさい。 (1)x に関する2階の非同次常微分方程式を求めなさい。 (2)(1)を解き、x の一般解を求めなさい。 (3)(2)を用い、y の一般解を求めなさい。 -------------------------------------------------------- 基本的なものなのかもしれませんが、連立微分方程式について、 一般的にどのように取り組んだらよいのかわからず困っています。 お手数ですが、よろしくお願いします。

  • 常微分方程式の数値計算

    実験で常微分方程式の数値計算をしました y'(x)=2xy,y(0)=1.0(解はy=ex2)←eのx二乗の微分方程式できざみ幅h=0.1、区間〔0,2〕の条件で オイラー法と改良オイラー法とルンゲクッタ法を使って 表計算ソフトを使って求めよとあるのですが、 表計算で近似値のy座標とか Δt後のxの変化分K1とか求めるのですが、全然意味がわからなくて、 何かいい方法はないでしょうか?

  • 連立微分方程式の解き方

    d^2x/dt^2=f(t) d^2y/dt^2=g(t, y, dy/dt, z, dz/dt, d^2z/dt^2) d^2z/dt^2=h(t,d^2y/dt^2, z, dz/dt) というような連立微分方程式を解きたいのですが,どのような方法で解くことができるのでしょうか? ルンゲ・クッタは適用できますか? (d^2y/dt^2の式にd^2z/dt^2が変数として出てきたりしているので,わからなくなってしまいました.) 宜しくお願いします.

  • ルンゲクッタ法の二階微分方程式(Fortran)

    数値計算の演習問題で以下の二階微分方程式をルンゲ・クッタで解けという問題があります。 -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となってしまうんですがどうなんでしょう? おそらくどこかで勘違いしてると思うんです。 長い質問になってしまいましたがどうかご教授のほどよろしくお願いします。

  • 2階常微分方程式

    x*y''-y'=0 この微分方程式を解きたいのですが解法がわかりません・・・ y"の係数がx^2であればオイラーの微分方程式としてy=x^αを代入して解を得ることができますが この形ですとα=0となってしまい解を求めることができません。 このような定数係数以外の時の2階常微分方程式の解の求め方について説明をお願いします。

  • 常微分方程式の問題

    常微分方程式の問題でいくつか解けなかったところがあるので教えていただきたいです。 この章で扱っているのは 変数分離系・同時系・線形1階微分方程式・完全微分形・線形2階微分方程式(同次形)・線形2階微分方程式(非同次形) を扱っていました。 その内、一般解を求める以下の問題 (1)dy/dx=xe^-y (2)x(dy/dx)-y=1 (3)(2y-x^2)dx+(2x-y^2)dy=0 と 与えられた条件をそれぞれ満たす微分方程式の解を求める以下の問題 (1)dy/dx=y/x (x=1のときY-2) (5)y''+5y'+6y=0 (x=0のときy=0、y'=1) の問題が解くことができませんでした。 どなたか解法をわかりやすく教えていただけないでしょうか?

  • 連立常微分方程式

    次の連立常微分方程式 2x′ -2x+y′ -y = e^t,x′ +3x+y = 0 どう解きますか?

  • 微分方程式

    次の微分方程式の解き方がわかりません。 (1) y^(4) + 4y = 0 (2) 連立微分方程式 x ' = 3x - y  x(0)=3 y ' = x + y   y(0)=0 (3) y '' + y = cosx 出来るだけ詳しく答えて頂けると助かります。 よろしくお願いします。