- ベストアンサー
無限大の条件を含む微分方程式の解
- 無限大の条件を含む微分方程式をmathematicaを使って解く方法を教えてください。
- mathematicaで無限大の条件を含む微分方程式を解く方法について教えてください。
- DSolveを使用して、無限大の条件を持つ微分方程式の解を求める方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご参考までに。 y = c[1] exp(ax)+c[2] exp(-ax) という一般解において、a≧0としてかまいません。(aが負のときは-aが正になりますから) a>0のとき 第一項はx→+∞で c[1] exp(ax)→(c[1]の符号)×∞ 第二項はx→+∞で c[2] exp(-ax)→0 となるので、x→∞でy = 0となる解は一般にc exp(-ax) 但しa>0 の形になります。 またa=0のときは exp(ax)=exp(-ax)=1 ですのでy = c[1]+c[2]=(定数) すなわちy=0のみが解となります。 しかしこれはy=c exp(-ax)でc=0の場合でもあるので、結局y=c exp(-ax)、但しa>0, cは任意の定数、が条件を満たす一般の解になります。 mathematicaを用いる場合、aが正か負かでx→∞で exp(-ax)の挙動が全く変わってしまうので、エラーメッセージが出たんだと思われます。この場合a>0として解く、特にa=1の場合を解かせて一般のaに対する解は自分で定数倍を付ける、というのがよいと思います。 それ以外の方法だと、自分でプログラムを組むしかないでしょう。しかしプログラムを組むのは多少なりとも手間ひまかかりますし、mathematicaは多くの計算をやってくれるので、自分でアナログ計算する部分とmathematicaにやらせる部分を分けてやることをお勧めします。
その他の回答 (2)
- alice_44
- ベストアンサー率44% (2109/4759)
Mathematica はよく知らないのだが、エラーメッセージから見て、 a の符号が判らないことが問題なのかなと思う。 a の符号が変わっても、第一項と第二項が入れ替わるだけだから、 a≧0 に限定してしまえば、解決するような気がする。 DSolve の条件式に a>=0 と書けるのだろうか? それが無理なら、 a^2 を b^4 で置き換える手は、どうだろう。 (質問も、この回答も、かなりスレ違いっぽいけれど。)
- naniwacchi
- ベストアンサー率47% (942/1970)
すべて計算機まかせにするのは… aの正負によりますが、a> 0として e^(a*x)、e^(-a*x)それぞれの項の極限を考えてみるとどうですか?
お礼
ありがとうございます。 a=9 DSolve[{y''[x] == a^2 *y[x], y[Infinity] == 0}, y[x], x] というようにaに正の数を指定することでうまく計算することができました。 でも、簡単な計算だとこれでも良いのですが、代数で計算することはできないのでしょうか? DSolve[{y''[x] == a^4 *y[x], y[Infinity] == 0}, y[x], x] DSolve[{y''[x] == Abs[a]^2 *y[x], y[Infinity] == 0}, y[x], x] DSolve[{y''[x] == a^2 *y[x], y[Infinity] == 0, a>0}, y[x], x] など、それらしいコマンドを試してみましたが、うまく計算することができませんでした。 良い方法があれば教えてください。