• 締切済み

摂動法について

物理のみならず摂動法はいろんなところに出てくると思います。 私の解釈ですが、ある発展方程式があり、とりあえず安定といわれている解があるとします。その解に何らかの変動(摂動)を与え、それが増幅していく様子を調べたり、方程式や安定解のパラメータを使って増幅率を調べたりするという方法だと思います。増幅せず摂動がゼロに収束していく場合はそのパラメータは安定領域に属するというようなことになると思います。(私の理解が違っていたらご指摘下さい。) さて、ここからが質問ですが、そのような計算を行う場合、紙と鉛筆でかなり複雑な四則計算を展開していくと思いますが、この過程は非常にたいくつでつまらないように思います。また、うっかり計算ミスをやると大失敗ですし、再計算をする気が無くなります。これこそ、数式処理ソフトの得意分野かと思います。例えば、摂動をexp(-λt)などとおいて、微分方程式に代入して代数方程式化して増幅率λをパラメータ(α、β)の空間における等高線を描いてみたりするわけですが、そのための具体的な数式処理ソフトの利用法が分からないのです。実例を教えてくれるようなサイトとか文献とかないでしょうか。Maxima(フリー)が使える環境ではあります。Mathematica(ver.3),Mapleは10年以上前のバージョンのものはなくはないという感じです。 よろしくお願いします。

みんなの回答

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.2

おそらく手順としては、 1. ある微分方程式があり、平衡点がある。 2. 平衡点の周りに摂動(微少変化)を想定し、方程式を展開。 3. もとの点が平衡であることを使って、摂動だけの方程式にする。 4. 摂動の2次以上の項を無視して線形方程式にする。 5. 得られた線型方程式の固有値を計算する。 になるかとおもいます。 1-3は数式処理ソフトで処理できそうですし、5の固有値解析も得意かとおもいます。 問題は、4の二次以上の項を削除する、というのを機械的に処理(記述)できるかどうかにかかってくるのでは無いでしょうか。 これを機械的に処理(記述)できれば、全プロセスの処理を記述できそうにおもいます。

skmsk19410
質問者

お礼

回答有難うございます。まさにこの手法です。 y=y0+y1などして方程式に代入し、y0はもとの方程式の解であることを使って整理。y1=exp(-λt)...という感じでその式に代入してλの代数方程式(固有方程式?)を複素数の領域まで解を求める。というようなものだと思います。ここで問題となるのは、実際のソフトでこれをどのように実現するかということだと思います。 特に簡単化みたいなところが問題のように思います。ソフトは難しい展開のまま処理していくからですね。sin^2+cos^2=1というようなことです。また、1つのプロセスの結果を次のプロセスの入力条件とする、という処理がフィーリングと合致しないので紙と鉛筆で処理していくような自由度が得られないのです。

回答No.1

くわしくないですが、初段で言っているのは断熱的変化のようなことではないでしょうか? 摂動法と聞いて浮かぶイメージとちょっと違うような気がしました。 摂動の効果はゼロか発散、ではなく有限でもあり得ます。 摂動後の解は非摂動の一般解の線形結合で表わしていたような気がします。 計算の方も実際にやってないのでうまく言えませんが、 摂動法というより数値積分の方がイメージに近いのでは?と思います。 ただ、数式を展開する手間を省くのに数式処理ソフトを使うところまでは構いませんが、数値積分でソフトウェアが自動的に正しい答えを出してくれると期待するのは危険な気がします。 やっている計算が妥当なのか、チェックするのはそれはそれでたいくつでつまらないという感想にいたるかもしれませんが。 数式処理はMathematicaでもMapleでも教科書は売っているでしょう。 10年前のものだから機能が足りないということはさほどないと思います。Maximaは知りません。

skmsk19410
質問者

お礼

回答有難うございました。 私は全く門外漢なのですが、お話を伺って、これは量子力学の発散問題からくりこみ理論とか経路積分とかそのようなところに出てくる摂動法(?)を想定されているような気がします。ファインマンの有名な仕事なのでしょうか。 私の質問はもっとずっとシンプルで流体運動の解に対する摂動というようなものです。基礎方程式に摂動を入れて代数方程式化するだけなのですが、とにかくめんどくさいのです。 Maple, Mathematicaの解説本は持っていますが、ぴったりの例がありません。本には連立一次方程式、1次方程式の近似解、マトリックス計算、簡単な微積分、作図などが取り扱われています。具体的な数値を計算する例が多いです。今回の問題は式の変形なので具体的な数値を計算するわけではないのですが。 Matlab, octave, Rなどの科学技術ソフト群は具体的な数値を計算するようですが、Mathematica, Maple, Maximaは数式処理ですね。いい例が載っていないかなと思っています。

関連するQ&A

  • 数式処理での整数指定と式の簡略化

    数式処理でsin(nπ)となると、nが整数ならゼロとしていいわけですが、maximaではそうなっていません。maximaはπは%piで指定できるのですが、nが整数と指定していないからゼロにできないのだろうと思います。数式処理では展開した結果ものすごく長くなる場合がありますが、実は簡約化できて表現が短くなる場合が多いのではないかと思います。nを整数だとして簡単化できるでしょうか。また、maximaだとどうやって指定するのでしょうか。参考までにmaple,mathematicaは高価で手が出ませんが、どうなっているでしょうか。よろしくお願いします。

  • mathematicaにおけるニュートン法の精度

    mathematicaを使ってニュートン法(FindRoot)を利用して方程式の解を求めました。 ここで一つ質問なのですがニュートン法は最終的に接線とx軸の交点Xnにおいて |Xn-Xn-1|<εを満たすようなXnを求めるまで計算を繰り返しますがmathematicaのニュートン法FindRootではこのεの値は何なのでしょうが。 知っている方よろしくお願いいたします。

  • 数式処理ソフトについて

    数式処理ソフト(Mathematica, Maxima, Reduce, Maple)など新旧とりまぜていろんなものがあると思います。ガイドブックやネット上の解説ページなどがあると思います。 どうしても1つ理解できないことがあり、ご質問します。解説本はどれも以下のような1つ1つの項目が独立しているように思います。 ○因数分解等の数式操作 ○行列計算 ○微分と積分 ○グラフ しかし、実際の問題に使う場合、それらが連続的なつながりを持っていると思います。 級数展開してx,yの1次の係数を取り出し、その係数方程式=0の方程式群の係数マトリックスの固有値と固有ベクトルを求め、...というような技の連続だと思います。つまり、1つの操作によって得られた結果は次の操作の入力に使えるということであるはずですね。私の知る限り、それができないのです。私の理解が不足していると思いますが、どのように考えればよろしいでしょうか。問題が具体的でなく、申し訳ありませんが。 これと付随してお尋ねしますが、ラプラス演算子の極座標、球面座標への変換について数式処理ソフトでスマートに行えないでしょうか。結構細かい処理が必要なのでこれこそ数式処理ソフトの得意技だと思っているのですが。よろしくお願いします。

  • Mathematicaによる記号計算

    Mathematicaでは、数学で習うような数式の解析解を記号を使った解の式として出力する機能がありますが、これは既知の解法や数式の変換手法などの組み合わせのみで作られているのでしょうか? また、Mathematicaでは解析解を出せない変微分方程式などがあったら教えていただきたいです。

  • 数式処理ソフト[maple]で微分方程式を解く

    数式処理ソフト[maple]を使い始めました. 連立微分方程式を解こうとしているのですが、条件をどう入れればいいか困っています.よろしくおねがいします。 dx/dt=y-2ax; dy/dt=-x; この微分方程式は手で解く事も可能ですが、練習としてmapleで数式処理したいと思っています. 手で解く際には、特性方程式を解くと-a±sqrt(a^2-1)が出てきます。 これをmapleのdsolveで解くと,(a^2-1)が正の値として計算されてしまいます. ここで質問なのですが,(a^2-1)を負の値とした場合の連立微分方程式の解法を教えていただきたいです。 よろしくおねがいします.

  • maximaで微分方程式の数値的解法

    フリーの数式処理ソフトmaximaを使って、連立微分方程式を解きたいのですが、コマンドdesolveで実施すると処理できないというメッセージが出ます。どうやら解析解がなくて数値的にしか解けないようなのですが、この場合どのようなコマンドがあるのでしょうか、詳しい方ご教示願います。

  • 5元連立方程式を解きたい

    複雑な方程式を解きたいと考えています。 方程式は、未知数は5つ、関係式も5つあるので、 解析的に解くことが可能な5元連立方程式だと思います。 複雑、といっても、高度な関数などが登場するのではなく (せいぜい三角関数程度)、項の数がかなり多いだけです。 とりあえず手計算を試みたのですが、 項を書き下すことすら難しいような状況で、 そのまま計算を進めても、結局、解まで辿り着けたことはありません (数人で挑戦したのですが、みんな駄目でした)。 フリーの数式処理ソフト Maxima も導入して計算させてみたのですが、 エラーを吐いてしまい、やはり解は求まりませんでした (誤植等が無いか何度も確認しましたが、駄目でした)。 他の、有償のソフトならば解ける可能性はあるでしょうか? また、方程式が解析的に解けるものなのかどうかを 判断する方法などがありましたら、お教え下さい。

  • 数式エディタ

    Microsoft Word 2010を使っているのですが、それに入っている数式エディタがとても使いにくくて困ってます。初心者の方には分かりやすいかもしれませんが、たくさん数式を書くときには非常に面倒です。特に、Σ、指数関数、積分、下付き文字、などが不便です。 できれば、maxima、mathematica のような入力形式で数式を作ることができ、、Wordと互換性があるソフトがあれば教えてください。計算はできなくていいんです。数式が作れればいいです。また、Wordに入っている数式エディタを使わないで、数式を書く方法があれば教えてください。

  • 微分方程式の解析で解を定常状態にするには

    こんにちは。 かれこれ3ヶ月以下のような微分方程式の解を出そうとしているのですがうまく求めることができません・・・ 数値計算の途中でオーバーフローして発散してしまったり、出るはずのない振動解が出てしまいます。 下の方程式でrが大きくなるにつれて、f→1に、A→0に漸近していき定常状態になる解を出したいのです。 f ''(r)+(1/r)*f '(r)-((1-A)^2/r^)*f(r)-(f^2-1)f=0 ・・・(1) A''(r)+1/r)*A'(r)-A/r^2+f^2(1-A)=0 ・・・(2) 自分はまず、この方程式のr=0まわりの解を以下のようにマクローリン展開で近似しました。 f(r)=f0+f1*r+f2*r^2+f3*r^3+f4*r^4 A(r)=a0+a1*r+a2*r^2+a3*r^3+a4*r^4 これらを元の(1)、(2)に代入してmathematicaで計算して展開係数f0~f4,a0~a4の関係式を得て、 それらを初期条件のパラメータとしました。 そしてその初期値を元にルンゲクッタ法で解を出そうとしました。 しかし、特異点があるためなのか元の方程式が不安定だからなのか数値計算しても解が発散(もしくは振動)してしまいます。 自分のプログラムが間違っているかもしれないと思い、簡単な非線形微分方程式(ファンデルポール方程式など)で同じ方法を試したんですが、ちゃんと解を求めることができました。 (1)、(2)の場合はどうして数値計算がうまくいかないのでしょうか・・・ ちなみにこの方程式はnielsen olesen vortexというものに関係する微分方程式なのですが、このような方程式はルンゲクッタ法などでは解くことができないのでしょうか? 色々調べてみると硬い方程式などではルンゲクッタが使えないらしいので・・・ 自分でも思いつくことは色々試してみたのですが不勉強でわかりません。 こういうときどのようなアプローチが有効なのでしょうか?

  • maximaで方程式解の文字式のままの計算

    数式処理ソフトmaximaで、連立1次方程式を解いたのち、その解を別の式の中に文字式のまま使いたい場合どのようにすればよいのでしょうか。 たとえば、 solve([x+y=2、x-y=3],[x,y]) を解いてx=2.5,y=-0.5と出ている場合に、続けてz=x+2yと記述して計算させ、結果を1.5と表示させたいということです。 普通に記述するだけでは欲しい結果が得られません。 詳しい方ご教示ください。