• ベストアンサー

微分方程式の数値解法

2階の微分方程式で、 例えば、初期条件が、y(0)=0、y(1)=0のような 「globalな」ものだった場合って、どのように数値的にとけばよいのでしょう? 普通、数値解法って、y(0)=0、y'(1)=0のような 局所的に折れ線をつなげていくじゃないですか・・・? 質問の場合には、その解法だと恐ろしく面倒ですよね。

noname#108554
noname#108554

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

  • ベストアンサー
  • chukanshi
  • ベストアンサー率43% (186/425)
回答No.1

このような場合には、 y(0)=0,y'(0)=k と置いて、kをいろいろな値にとって 微分方程式を数値的に解きます。 そして、y(1)=0となる条件の元で、 kの値を決めてやります。そうして 求まったy(x)が解です。 プログラムでかくと、 定義 eps=10E-8 y10=-10 :y'(0)の初期値 step=1.E-2 :y'(0)を変化させる1ステップの大きさ y00=0 :初期条件 y01=0 :初期条件 本体 While(k<10) サブルーチン (y00=0,y10=kを初期条件として微分方程式を解く。 解いた結果、y(1)をy0endとして返す。) if(|y0end-y01|<eps) Then End(プログラム終了) else(k=k+step) End while みたいな感じで解きます。 アルゴリズム的には、「shooting method」といいます。 この言葉は、日本語の教科書には余り出ていませんが、 英語の数値計算の辞書のように厚い本には、 「shooting method」と出ています。 たとえば、こんな本には出ています。 Numerical Recipes in Fortran William H. Press (編集), Saul A. Teukolsky (著), William T. Vetterling (著) ハードカバー - 963 p / 2nd 版 (1992/01/15) Cambridge University Press ; ISBN: 052143064X 読んでみてください。

noname#108554
質問者

お礼

ありがとうございます。 やっぱりそういう方法しかないですよね。 なんか超絶技巧な技があるのかと思いましたが。

その他の回答 (3)

  • motsuan
  • ベストアンサー率40% (54/135)
回答No.4

基本的に境界値問題のことをおっしゃっているのだとおもいますが 線形であれば 線型方程式を解く方法もあると思います。 Σa_n(x) (∂ /∂x)^n f(x) = C というようなものであれば、結局、各場所の値 f(x_j) (j=1,2,...,N)を未知数として、 方程式から境界条件を除いて適当な数の連立方程式がえられますよね(適切な問題であれば)。 たとえば、端の点の値が与えられているのであれば、1階の微分方程式であれば完全にきまって、 2個の境界条件と微分方程式を差分式になおしたN-2個の連立方程式が得られて 結局、線形連立方程式に帰着できることがわかります。 でも、線形じゃないばあいはやっぱり「いろいろやってみる」方式のようで、 Mathematica などでは(マニュアルによると) 非剛性アダムズ(Adams)法と剛性ギア(Gear)法とを交互に切り替えるのだそうです。 http://www.wolfram.com/products/calculationcenter/features/solvers.ja.html ちなみに 線型境界値問題の場合はゲルファンド・ロクチェフスキー(Gel'fand-Lokutsiyevskii)追跡法 だそうです。 確認できなかったのですが、方程式には硬い軟らかいのがあるそうで http://grape.c.u-tokyo.ac.jp/~makino/kougi/system_suuri4_1999/note8/node1.html 局所的にそれを切り替えて収束をはやくしているようです。 非線形数値計画法とかの(準)ニュートン法の微分方程式版みたいなものなのでしょうか? あと、L(f(x) )=0を微分方程式として 発展方程式 (∂/∂t ) f(x) = L(f(x) ) +「境界では境界を満たすようにする」 を考えて、(良く収束するとして)、 発展方程式の時間を進めて 定常解 (∂/∂t ) f(x) =0を解とするという考え方もありますよね。

  • chukanshi
  • ベストアンサー率43% (186/425)
回答No.3

>やっぱりそういう方法しかないですよね。 >なんか超絶技巧な技があるのかと思いましたが。 あとで、自分で回答を読んで、わかりにくかったかな、と思いましたが、 わかっていただけてよかったです。 というよりも、誰でも真っ先に思いつく方法ですよね。 英語で、「shooting method」とちゃんと名前がついていること自体 始めは驚きでした。 でも、周囲の数値計算の専門の仲間に聞いても、これ以外の方法は みんな知らないって言うので、私は論文(理論物理です)の 微分方程式の数値計算をこの方法でやって、英文専門誌に投稿して受理 されましたから、認められた方法だと今では思っています。 tgbさんのように、なるほど、両側から解いていって、間で継ぎ合わせる という方法もありますよね。 収束の速さや、解の精度を挙げるには、いろいろと検討しなければ ならないかもしれません。 私もいまだに、超絶技巧があるのでは?と調べたり、研究していますが、 新しい方法は、見つかりません。 このページに画期的な方法が現れるのを期待していますし、 ibm_111さんが、新しい方法を手に入れられたら、こちらが 教えていただきたいほどです。

  • tgb
  • ベストアンサー率78% (32/41)
回答No.2

 線形問題にしか適用できませんが、学生の頃、境界値問題 の解法の1つとして何かの本に載っていたのを見たことがあ ります。この方法は両端の境界条件でyやy'を組み合わせて 指定する場合にも応用できます。 ・y(0)=0となる解yaを1つ求めます。 ・y(1)=0となる解ybを1つ求めます。 ・y=a*ya+b*ybとして  境界条件を満たすようにa、bを決定します。 (実質的にはそれぞれ反対側の境界条件を満たすよう係数を  決定している)  境界条件の値を0とする解を選ぶことにより、係数を決める 時片側だけに寄与するようにしたのがミソですが、質問のよう な両端で0と言う条件に対してはうまく行かないようです。そ れ以外ならすっきりした解法だと思いますがいかがでしょうか?

noname#108554
質問者

お礼

なるほど!確かに線形なら可能ですね。 ありがとうございます。

関連するQ&A

  • 偏微分方程式の数値解法

    偏微分方程式の込み入った質問です。 2次元(x,y)の空間で2つの関数f(x,y),g(x,y)を考えます。 そこで、それぞれにラプラス方程式を立てました。 fxx+fyy = 0  (1) gxx+gyy = 0 (2) です。これは境界値問題で、差分式からSOR法を使って収束計算によって数値解を求めることができます。f, gはそれぞれ独立という形にはなります。 そこにもう1つ式が出てきました。 fxfy + gxgy = 0 (3) というものです。f,gをx,yで1回微分してできる式です。 都合3つの式が出てきました。 この数値解を求めるにはどのような方法があるでしょうか。 数値解ですから近似解です。 3つ目の拘束条件の下でのラプラス方程式とみると、ペナルティ関数とかラグランジュの未定係数法とかいろいろあるかもなと思いますが。 3つ目の式は完全に満たすというより、できるだけ満足するようにしたいというものです。 よろしくお願いします。

  • 微分方程式の解法について

    微分方程式の解法について X^3-3xy+y^3=0    ならば、dy/dxはいくつになるか どうやったら、いいんでしょうか。 解法を教えてください。

  • 微分方程式の解法

    d^2y/dx^2+2*x*dy/dx=0 境界条件 x=0: y=1、x→∞: y→0 この2階の微分方程式を解けという問題ができません。 dy/dx=z と置いて、1階の微分方程式にして解こうとしたのですが、exp(-x^2)が出てきてしまいました。これは確率積分みたいに積分できるのでしょうか。 回答よろしくお願いします。

  • 微分方程式の解法について

    以下の微分方程式の解法が分かりません。y '=pと置いて変数分離で解くことを試みたのですが、行き詰まってしまいました…。 2xy"=√{1+(y ')^2}、y(1)=y '(1)=0 回答よろしくお願いします。

  • 微分方程式

    dy/dx+2y=4cos2x (初期条件 x=0,y=0) この微分方程式を解きたいのですが、自力では無理です。。。 解法を教えてくれませんか? 大学のレポートなんです。

  • 微分方程式の解法

    こんにちは。微分方程式で分からない問題があります。 y=(dx/dy)x+4(dx/dy)^2 という問題がわからなくて困っています。 自分が微分方程式を解くときは完全にパターンで解いているのですがその中で(dx/dy)^2というものは見たことがありません。 右辺の二項目が「d^2y/dx^2」なら二階微分方程式に当てはめれば解けるのですが、「(dx/dy)^2」と「d^2y/dx^2」は違うものですよね?(まず、違うということが正しいのかが微妙です)では、この場合はどうやって解けばいいのでしょうか。 よろしくお願いいたします。

  • 微分方程式の解き方

    y"+ay'+by=c (yはxの関数で、y"はyをxで2階微分したもの、y'はyをxで1階微分したもの。a、b、cは定数。) この微分方程式はどうやって解けばいいのでしょうか? c=0の場合の解法はよく見かけるのですが、cが0ではない定数の場合どうやって解けばいいのでしょうか?

  • 微分方程式の数値解法 1段解法収束性の証明

    微分方程式の1段解法の収束性を示す過程で、 h:刻み幅 L:リプシッツ条件を満たす定数 としたとき、(1+hL)<e^(hL)という式が出てきていました。 どの本を見てもこの式が使われているのですが、どうしてこの関係が言えるのかがわかりません。 まだ数値解法を勉強し始めたばかりで知識が足りないだけかもしれませんが、分かる方、ぜひ教えてください! お願いします(><)

  • 微分方程式

    すいません。 微分方程式 dx/dt=y dy/dt=t+0.1-x-(x-t)^{3} を解ける人いたら解いてもらえませんでしょうか?(数値解法でない方法で) 真解が知りたいです。 初期値は適当な値でいいので、t=0,x=4,y=1 でお願いします。 そもそも、これって真解求まるのかすらわかりません。 今、プログラムの課題で上記の微分方程式をおいらー法で解くプログラムを作ってるんですが、真解を求めて、その誤差を測りたいと思っている次第です。 よろしくお願いします。

  • 常微分方程式の問題

    常微分方程式の問題でいくつか解けなかったところがあるので教えていただきたいです。 この章で扱っているのは 変数分離系・同時系・線形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) の問題が解くことができませんでした。 どなたか解法をわかりやすく教えていただけないでしょうか?