• ベストアンサー

頭は文系なんですが・・・

stomachmanの回答

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.8

さてさて、第3弾です。 Lotka-Volterra(L-V)方程式の軌道を描くだけなら、もし f(x) = x - ln(x) の逆関数、あるいは、 F(x) = exp(x) / x の逆関数(F(x) = exp(f(x))だから、Fの逆関数が分かればfの逆関数も分かる。) を求めることができれば、わざわざ差分方程式を使わなくても、保存則Sだけで計算できます。(どうしてか分かりますよね?)また、差分方程式を安定に計算するのにも、Sを使うから、この逆関数の計算が必要です。  既に、よく使われるニュートン法による計算法を示しましたが、xの値が1に近いときには計算が不安定になるという性質を持っていて、二通りの計算法を切り替える必要がありました。ここでは「もう少し遅いけれど、収束が安定している方法」を紹介します。これだと、切り替えが(多分)不要です。  実は、面白いことに、最近同じ問題「F(x) = exp(x) / x の逆関数」が質問としてUPされているんです。(http://oshiete1.goo.ne.jp/kotaeru.php3?q=17648)  以下はその質問の回答として移動中の時間を使って書いたんだけど、UPするまえに質問者がCLOSEしてしまって宙に浮いていたもの。(いやー、こんなに早く日のめを見るとは思わなかった。) 以下の(2)(3)の漸化式を使って計算すれば、F(x)の逆関数x(F)の値が出せます。L-V方程式ではx>0かつF(x)>e についてだけFの逆関数が求められれば十分です。 =========================== (1) まず、F(x)のグラフを描いてみて下さい。表計算ソフト(excelとか)を使うと簡単です。 F(x)=exp(x)/xはx<0 では負, x>0 では正です。x->+0では∞、x->-0では-∞、x->∞では∞、x->-∞では0であることが分かります。F(x)の導関数(xによる微分)は F'(x) = ((x-1)/(x^2))exp(x) だから、F(x)は x=1 だけで極値(極小)を持つことが分かります。この極小値はF(1) = e (e=exp(1)です)。F(x)はx>0では下に凸の関数です。これでF(x)のグラフが描けたことでしょう。  明らかに、F(x)の逆関数 x(F)はF<0およびF>=eの範囲でだけ定義され、e>F>=0の範囲には値がありません。 x(F)はF<0では1価関数、F>=e では2価になります。一方の解はx>=1, もう一方は1>=x>0の範囲にある(x=1の時のみ二つの解が一致)という訳です。 (2) 逆関数は簡単な数式で表せません。まずx>1の方の解だけ考えることにしましょう。 (以下ではFの代わりにyと書いています。)y>eの時の、y = exp(x)/xの逆関数x=G(y) (ただしx>1となる枝)は、以下に示す漸化式x[0], x[1],...の極限です。(ln()は自然対数、exp()は指数関数です。) x[0]= ln(y) x[1]= ln(y) + ln(x[0]) : x[n+1]= ln(y) + ln(x[n]) : 強いて一つの式にまとめると x =G(y)= ln(y)+ln(ln(y)+ln(ln(y)+ln(ln(y)+ ...... と表せる。これが一つの答です。(他にも表し方はある。) (3) では0<x<1におけるx(y)の漸化式は? x[0]=1/y x[n+1]=exp[n]/y です。まとめるとどうなるか、はご自分で。 (4) すぐに信用しちゃいけません。(2),(3)をFに代入してF(G(y))=y になる事を確かめてみてください。またG(F(x))=xもやってみてください(面白いですよ)。数値的には、表計算ソフトでも(1)(2)のやり方でx[0], x[1],...が簡単に計算できますから確かめてみてください。(なお、もっと速い計算法としては「ニュートン法」があります。) (5) では(2)の導出のあらすじを書いときましょう。((3)はそのバリエーションでできます。) x>=1という条件で考えます。y = exp(x)/x をln(y)=x-ln(x)と変形しておきます。 x>1ではxもln(x)も単調増加なのに、ln(y)=x-ln(x)が単調増加である。だから、ln(x)の項よりxの項の方が優位である(増え方が速い)ことが分かります。そこでとりえあえずln(x)の項を無視した第0次近似として x[0]= ln(y) を考えます。誤差(正解との差)は x-x[0] = (ln(y)+ln(x))-x[0] = (ln(y)+ln(x))-ln(y)=ln(x) だけありますから、x[0]にあとln(x)を加えれば正解になるわけです。しかしあいにくxが分からないので、代わりにx[0]を使って誤魔化します。これで第1次近似ができました。 x[1] = ln(y) + ln(x[0]) もちろん「x[0]よりx[1]の方が誤差の絶対値が小さくなる」という事を証明しなくちゃいけませんが、めんどくさいのでパス。さて、ここから数学的帰納法を使います。 n(>0)のときに x[n]= ln(y) + ln(x[n-1]) であるとすると、誤差は x-x[n] = (ln(y)+ln(x))-x[n] =ln(x)-ln(x[n-1]) 従って、ln(x)-ln(x[n-1])をx[n]に加えたいのですが、ln(x)の代わりにln(x[n])で誤魔化して第n+1次近似を作ります。 x[n+1]= x[n]+ln(x[n])-ln(x[n-1]) = ln(y)+ ln(x[n]) (ここでもホントはx[n+1]の方がx[n]よりも正解のxに近いという事を証明しなくちゃいけません。)  このように、誤差をどんどん修正していくように漸化式を構成する訳です。修正のやり方を変えればいろんな漸化式が得られ、ニュートン法もそのひとつです。

botan
質問者

お礼

第1弾~第3弾までまとめてお礼を申し上げます。長いのに丁寧にありがとうございました。うれしくてちょっと泣けてきます。ちょっとまだ難しい!と思うけど、なんとなくやれば出来そうな気分ではあります。いろいろ本も見たけど、どれも良く分からなくて。その辺の難しい参考書よりもずいぶん親切でした!あとは自分でなんとかやってみます。卒論の内容も、まだ最初に書いた程度にしか教えてもらっていなくて、具体的には来週発表されるようです。いや、卒論の締め切りは1月の中旬なんであと1ヶ月もないんですがね。でも、その短い期間で、あまり多くのことは求められないのでは?という同じ研究室のこからのアドバイスもあり、あまり深く突っ込まない様にその子と協定を結びました(←みんなで渡れば恐くない方式?)。 この場を借りて、皆様、こんな質問にご回答いただき誠にありがとうございます。どこまでやれるか分かりませんが、自分で精一杯頑張ってみるつもりです。ここで、出来ないなんて言っててもしょうがないですもんね。ずいぶん参考になりました。なんか、こんな質問のために時間を割いていただいたことが申し訳ない!ありがとうございます。ぜったい、卒業しますんで!!!

関連するQ&A

  • 閾値付き拡散方程式

    n次元(1次元限定でも可)拡散方程式 ∂u/∂t = ∇^2 u において、u<σとなったら、u=0という条件をつけます。 0. この方程式は数学的に意味があるでしょうか?   つまり、デルタ関数とか弱解といった分野的に、という意味です。 1. この方程式は解析的に解けるでしょうか? 2. 各種の数値解法を適用した場合、   数値解は格子のスケールに依存しないでしょうか?

  • 差分法とオイラー法の違いについて

    最近微分方程式の数値解析について学びだした者です。 微分方程式の数値解法として差分法とオイラー法があると思うのですが、この2つの違いや互いの位置づけはどうなっているのでしょうか? また、差分法には風上法などがありますが、これらとオイラー法の位置づけについても教えていただきたいです。 できればこれら近辺の全体的な体系について教えていただけるとうれしいです。よろしくお願いします。

  • 数値解析の手法(差分法)について

    現在、とある2元の1階偏微分方程式(解はu,vでそれぞれ右と左に進行する波)を数値解析によって解こうと考えています。 数値解析の手段として、差分法がよく用いられると思いますが、 現在、私は、場所に関してはuは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って解いています。 ネットでは場所に関しては中心差分、時間に関してはルンゲ=クッタやリープフロッグなどが 使われていることが多く、私もこの2つを用いて解いてみました。 偏微分方程式には線形項が含まれていたため、 線形問題に対する制約であるΔt/Δx << 1は最低満たすように刻み幅をいろいろ取り、 計算時間も辞さず計算機を動かしてみましたが、 ノイズが消えず、解析解に限りなく近づくには至りませんでした。。 Δt/Δx=0.0001なども試したのですが・・・ そこで、諦めて違う差分法を試し、 場所に関して、uは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って見たところ、 Δt/Δx=0.01程度で解析解に近い、なかなか精度の良い数値解を得ることが出来ました。 2次の差分では上手くいかず、1次の差分だとわりかし上手くいく・・・ 精度的には中心差分やルンゲ=クッタなどの方がいいと思うのですが・・ 正直不思議でなりませんでした。。。 最初に試した差分法のコードミスかと思い、何回もコードを確認し直しましたが、 やはり解析解に近づくには至りませんでした。 こんなことってあるのでしょうか?? 差分法でも場合によって使い分ける必要があるということでしょうか・・? その場合分けするときの指標など、知っておられる方、教えて頂けると助かります。 問題によって

  • 数値解析 微分方程式

    数値解析における常微分方程式を解くために用いる手法についてです。 オイラー公式、ホルン公式、ルンゲクッタ、ルンゲクッタ4次、有限差分法の関係 違いがよくわからなのでどなたか教えてください また常微分方程式を有限差分で解くとなったとき、結局オイラー公式などを使うと言う認識で間違いないでしょうか?それとも有限差分だけで解けるのでしょうか

  • 流体解析(ナビエ・ストークスでベナール対流の非定常解析)について

    連続の式,Navier-Storksとエネルギー方程式をHSMAC法にてベナール対流の非定常解析をしていますが、困っています。二次元、縦横比8:1の長方形領域にて、左の加熱面付近が”振動”しているようなのです。これが原因で非対称となり、時間が発展すると渦が奇数個になってしまいます。離散化はEular陽解法、移流項は一次風上差分、拡散項は中心差分を行っています。2次元の移流拡散方程式(移流項は中心差分)の安定条件は満たすようにDTを決めています。どうればよいでしょうか。

  • 解析的に解くと言えば、一般解や厳密解を求めることでしょうか。

    解析的に解くと言えば、一般解や厳密解を求めることでしょうか。 FEMのような数値解析は、解析的に解くとは言わないんでしょうか。 英語で論文を書いているのですが、 FEMによる方法を numerical analytical methodと書こうと思ってますが、 方程式の一般解を導いた方法は英語で何と書けばよいのでしょうか。 単に,analytical method でよいのでしょうか? analytical method と書いたら、numerical analytical methodのことも 含みますか? お恥ずかしいですが、こんな低レベルで論文を書こうとしていますww よろしくお願いいたします。

  • 解析的の意味?

    数学の用語に関する質問です. 方程式を解く際に, 「解析的に解けないので数値的に解く」 場合がよくありますが, なぜ 「解析的」 と呼ぶのでしょうか? 「代数的」 の方がしっくりくるのですが. 複素関数の分野でしたら解析的は微分可能といいますし,場合によって読み手が解釈を変更する必要があるのでしょうか?

  • 統計解析の勉強で使うデータ

    大学3年で、数学を勉強しています。 今はルベーグ積分や微分方程式を勉強していますが、統計にも興味があります。 本屋さんで統計のコーナーを見ると、数学に近いけど、若干違うのかな、という配列人なっている感じがします。 統計学って、数学科よりも工学系の学科や経済学部で勉強した方がいいのでしょうか? そもそも、統計って、それを分類したり解析したりするもので、教科書にのっているものは、数値の個数が少なかったり、当たり前の子ことを調べるためのデータのような気がします。どういうデータを使って勉強したらいいのでしょうか。

  • 拡散方程式の数値計算(有限差分法)による解き方

    下記の拡散方程式を数値計算(有限差分法)で解き方について教えてください。 拡散方程式 D∂^2C(x,y,t)/∂x^2+u∂C(x,y,t)/∂x=∂C(x,y,t)/∂t 境界条件 D∂C(x,y,t)/∂x=(K/β-u)×C(x,y,t)-KC'(y,t) at x=0 初期条件 C(x,y,0)=Co at t=0 質量保存則 ∂C'(y,t)/∂y=4/vd(K/β×C(0,y,t)-KC'(y,t) ) ---------------------------------------------------------- また、可能であれば、有限差分法以外にも数値解法(有限要素法、有限体積法など)があると思いますが、拡散方程式を解く場合、どの解法が一般的に適しているのか教えてください! よろしくお願い申し上げます。

  • 数学科の人は計算が苦手って本当ですか?

    数学科の人は1+1の証明とかそういうことを大学で勉強しているから計算が苦手ということを聞きました。フーリエ解析や偏微分方程式などの計算ができないのではないか?実は物理学科の学生のほうが計算はできるんだと物理学科の学生が言ってました。実際はどうなんでしょうか?