• 締切済み

1回の常微分方程式解法について

常微分方程式df/dt=g(t)で、関数fとtの数値的な関係を求める場合、ルンゲクッタ法が用いられることが多いと思います。特にtが時間の場合、g(t)は未来には影響しますが、過去には影響できないので解法としてもルンゲクッタ形式の解法になることはわかります。計算が一方向に進むというイメージです。 df/dx=g(x)でxが空間の関数だった場合、g(x)がxの±領域全体に影響を与えると考える場合、反復計算によって全体に影響しながら解を求めていくことは可能でしょうか。ただし、微分は1回しかありません。 2回微分だとSOR法のような反復計算が可能です。全体が影響を与え合いながら式を満たすfを求めていくことができますが、1回微分でもそのようにできるでしょうか。 独立変数がx(空間)に限定ですから時間という概念はありませんが、時間が含まれないということは時間的に変化しなくなった解と見ることもできます。 例えば、シューティングメソッドとか言うのだろうと思いますが、ルンゲクッタ法で一方向に向かって計算し、計算が領域の端部になったらその結果と境界条件を比較して収束が足りないならば少し変化させて再度ルンゲッタで計算する、すなわちルンゲクッタ法の収束計算というやり方もあるようです。 ルンゲクッタ法で計算するような問題を反復計算で計算領域がお互いに影響を与えながら計算する方法があったら教えて頂きたいのですが。境界条件が計算領域の両端にある場合、2点境界値問題というのでしょうか。これを解く方法ということにもなろうかと思います。手前の境界で与えられたものから出発し、もう片方の境界で計算結果と境界値を見合わせることになるのかもしれませんが。 よろしくお願いします。

みんなの回答

  • yammy-j
  • ベストアンサー率60% (6/10)
回答No.5

何か根本的な勘違いをしていませんか? > 特にtが時間の場合、g(t)は未来には影響しますが、過去には影響できない > 計算が一方向に進むというイメージです。 例えば放射性崩壊の計算には、現在から未来へ計算する場合(拡散した放射能が失われるのにかかる時間の計算)と現在から過去へ計算する場合(同位体年代測定)の両方がありますよ。 もしも、一方向にしか物理的に意味のある解が得られないのであれば、それは方程式の形や解法(ルンゲクッタ法など)の問題ではなく、モデル化しようとしている物理現象固有の問題ではないかと思います。

回答No.4

わたしの話は、2階微分方程式の話ですよ。 たとえば、  y'' + 3y' + 2y = g(t) で、y(a)とy(b)が与えられる境界値問題の場合です。 こういう問題ならば、境界値問題を初期値問題に直して、解くことができる場合がある、 ということ。 1階微分方程式の話ではありませんよ。 差分法についてご存知のようですから、 差分法によって離散化された連立方程式を解いた方がずっと賢明です。 そして、SORなどを使わず、ガウス消去法やTDMAで連立方程式を解く。 ただし、  y'' + 3yy' + 2y = g(t) のような非線形の微分方程式になりますと、反復計算をする必要がでてきます。 といいますか、 解かなければいけない微分方程式を教えてもらえませんか? こういう形ですという適当な微分方程式でも構いませんから。 そうすると、話が早いんですけれども。

回答No.3

あっ、NO2で変なことを書いている。 ~~~~~~~ fは(x,t)の関数なんでしょうね~。で、x = x(t)。 だったら、 面倒くさがらずに、  y = f(x,t) と書くものだぜ。 ~~~~~~~ この部分はなかったことにしてください。 無視してください。

回答No.2

こんばんは。 まず、最初に、 質問の内容を誤解していたらごめんなさい、 と前置きをして、回答します。 ☆2階微分だとSOR法のような反復計算が可能です。 ◇2階微分方程式の境界値問題ならば、ええ、SORのような反復計算を用いて計算ができます。差分法などを使って得られた連立方程式を解くのに、SORなどを使います。 この場合、SORなどの反復計算法を使うのは、あくまで、連立方程式を解くため。 ですから、ガウス消去法などの直接法を用いてもいいです。 ───ガウス消去法を使って解くのが一般的。差分法を使うなら、TDMAという方法もある─── しかし、初期値問題は、ダメですよ。1階はもっとダメ!! 境界値問題:f(a)、f(b)が与えられている場合 初期値問題:f(a)とその1階微分のf'(a)が与えられているような場合 初期値問題を、f(b)の値を予想し境界値問題に直して解くことはできますけれども、そんなことは普通しませんよ。 ☆ルンゲクッタ法で計算するような問題を反復計算で計算領域がお互いに影響を与えながら計算する方法があったら教えて頂きたいのですが。境界条件が計算領域の両端にある場合、2点境界値問題というのでしょうか。これを解く方法ということにもなろうかと思います。手前の境界で与えられたものから出発し、もう片方の境界で計算結果と境界値を見合わせることになるのかもしれませんが。 ◇ええ、あります。 たとえば、こんな感じ。 計算領域の端をaとbとします(a<b)。 nは区間[a,b]の分割数   h = (b-a)/n   f'(a)の値を予想     ───f'(a) = (f(b) - f(a))/(b - a)とでも置いてください─── I f(a)とf'(a)を使い、bに向かってルンゲ=クッタで前進的に解く   計算結果のf(b)と実際のf(a)の値が収束条件を満たしていればOK!! II f'(a) = (f(a+h) - f(a))/h III Iに戻る みたいな感じ。 ───この計算には、各点でのf(x)の値が必要になるので、配列を使わないといけない─── これでうまくゆくかどうかは、実際に、問題を解いてみないとわかりません。 IIの予想式を、もっと良い予想式に変えないといけないかもわかりません。 fは(x,t)の関数なんでしょうね~。で、x = x(t)。 だったら、 面倒くさがらずに、  y = f(x,t) と書くものだぜ。

skmsk1941093
質問者

お礼

回答ありがとうございます。空間微分だけで時間が関係しない問題ですが、収束計算と考えると一種の時間発展問題と考えて時間的に変化しなくなるものが近似解であるとも言えそうです。 もう一度まとめてみました。 h=(b-a)/n !区間分割数n個、点は0~nなのでn+1点 f(0)=A ! f(a)=Aですが、配列番号は0(左端)これは必ず与える。A,Bは境界値(正解) ! f(b)=Bですが、配列番号はn(右端)これは終点の正解値 ! ルンゲクッタ法では収束計算をしないので第一推定値(前条件)が必要ない。 do i=1,n ! 点を更新していく f(i)=....! 1回微分の式でルンゲクッタなどで決める(計算システム)       f(0)→f(1)→f(2)→f(3)→...f(n)まで enddo err=f(n)-B ! 右端(f(n))ではBのはずなのにBではない。計算がBに向かっている保証がない。 このerrの値を用いて計算のシステムを更新しなければなりません。上記には更新するところがありません。 しかし、例えば、収束計算のための前条件(第一推定値:線形補間が順当)を与えて計算するシステムにしておけば、エラー(あるいは前条件との偏差)を評価してその値に応じて前条件を変化させていくという手法があるのではないかと思います。まるでSOR法の1回微分版です。 元の式df/dx=h(x)を離散化するとき、 (f(i+1)-f(i))/dx=(h(f(i+1),x(i+1))+h(f(i),x(i)))/2. 右辺を第一推定値で計算し、収束計算(すなわち更新が終了するまで計算)するというのはどうですかね。微分を区間の真ん中で取るというのは理屈には合っていますが。 どうせだめだろうと思うのでプログラミングする気力がわきませんが。だめもとでやってみますかね。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

1階の微分方程式 df/dt=g(t) の解は、 f(t)=∫g(t)dt + C なわけで、積分定数は一個しかありませんから、そもそも(任期に与えられる)境界条件は1個しかありません。

skmsk1941093
質問者

お礼

回答ありがとうございます。 なるほど、理論ではそうなりますかね。実現象のモデル化と関係がありますが、実現象⇔数式化⇔数値計算 の3者を比べると、現象を数式化するときにある種の簡単化や近似が入ります。そのため方程式の微分の回数が1つ減ります。本来は2回微分です。2回微分の方程式だったら2点境界値問題になり、式の微分の回数が上がることで反復計算のプログラムを作成することができます。SOR法などです。 ただ、物理現象面を考えると2回微分の項はかなり弱いのでそれを無視して1回微分の方程式のまま無理やり反復計算が構成できないかなあと思っているのです。

関連するQ&A

  • 2階微分方程式の解法

    d^2y/dx^2+2*x*dy/dx=0 境界条件 x=0: y=1、x→∞: y→0 上記の微分方程式をルンゲクッタ法を使って数値的に解きたいのですが、どのように x→∞ : y→0 の境界条件をいれればいいかわかりません。どなたか教えて頂けないでしょうか。回答よろしくお願いします。

  • 常微分方程式の問題

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

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

    偏微分方程式の込み入った質問です。 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つ目の式は完全に満たすというより、できるだけ満足するようにしたいというものです。 よろしくお願いします。

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

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

  • 常微分方程式、4次のルンゲクッタ法

    (d^2x/dt^2)-2(dy/dt)=f(x) (d^2y/dt^2)+2(dx/dt)=g(y) この連立常微分方程式を4次のルンゲクッタ法で解くためにはどうすればいいのでしょうか?

  • 高階連立常微分方程式の数値計算

    4次のルンゲクッタ法を用いた数値計算を勉強しています. 1階連立常微分方程式と高階常微分方程式は理解でき,プログラムも作成することができました. 次に高階の連立常微分方程式を解こうと思ったら,頭が混乱してしまいました. 4次のルンゲクッタ法を用いて高解連立常微分方程式を解く考え方を教えて頂ければ嬉しいです. また何か良い参考書があれば教えて頂きたいと思います. よろしくお願いします.

  • 偏微分方程式と常微分方程式

    物質濃度をC、時間をt、座標をx、物質の分子拡散係数をνとすると分子拡散による物質濃度の時空間変化は以下の偏微分方程式によって記述される。これについて以下の問いに答えよ。 ∂C/∂t=ν((∂^2)C/∂x^2) (1)C(x,t)=X(x)T(t)と仮定することにより、X(x)およびT(t)に関する常微分方程式をそれぞれ導出せよ。 (2)(1)での2つの常微分方程式の一般解をそれぞれ求めよ。 (3)上記拡散方程式は一般に放物型と言われる偏微分方程式に分類される。これとは別の楕円型と言われる偏微分方程式を1つ、数式で記述せよ。 困っているのは(2)の問題です。 以下のようなwebサイトを見つけました。 http://www12.plala.or.jp/ksp/mathInPhys/partial/ これに沿って問題を解いていったとき、一般解をどのようにするべきか迷いが生じました。今回の問題では初期条件や境界条件はないため、一般解はλが正、ゼロ、負のとき全ての場合の一般解を求めなければならないということですか? 後もう1点、もしよければ、楕円型の微分方程式として有名な物理現象、あるいは式を教えていただけないでしょうか? ヨロシクお願いしますm(_ _)m 特に(2)の問題に関する質問、ヨロシクお願いします。。。

  • この方程式、stiffなんでしょうか・・・

    僕は以下のような連立微分方程式を数値計算で解こうと試みています。 現在微分方程式の解を級数展開と変数変換とルンゲクッタ法で求めようとしています。 しかし、どのように初期値をいじっても必ず解が発散してしまいます。 色々と自分で調べてみる過程で微分方程式を数値計算で解くときにstiff問題というものが生じることがあると知りました。 解の挙動が急に変わる場合や境界条件に大きく依存する場合などで途中からルンゲクッタ法などで数値計算できなくなり、解が発散してしまうという条件がぴったり自分の場合と一致しました。 以下の連立微分方程式はstiffなのでしょうか? (x-1)^4*f ''(x)+(2x-1)(x-1)^3/x*f '(x)-{ ((x-1)/x+A(x))^2+f^2-1 }f=0, (x-1)^4*A''(x)+(2x-1)(x-1)^3/x*A'(x)-(x-1)^2/x^2A(x)-f^2(A+(x-1)/x)=0 stiffだとルンゲクッタ法は使えなくなってしまうんですよね・・・・?

  • 偏微分方程式の解き方を教えていただけないでしょうか

    偏微分方程式の解き方を教えていただけないでしょうか。 u_t (tの一階微分) = u_xx (xの二階微分) x∈[0,1]のとき、 境界条件 u_x(0,t)=0 、u(1,t)=5t (↑xの一階微分) 初期条件が、 u(x,0)=0 自分で _____________________ du/dt = d^u/dx^2 x∈[0,1] du/dx(0,t)=0 、u(1,t)=5t u(x,0)=0 のとき、変数を分離して、 u=(X,Y) X''=-λXとしました。 X=c1 cos(√(λ) x) +c2 sin(√(λ) x) として、 X’=√(λ) *(ーc1 sin(√(λ) x) +c2 cos(√(λ) x) ) 境界条件をいれると、 X’(0)=√(λ) *(ーc1 sin(√(λ) 0) +c2 cos(√(λ) 0) ) より c2=0 X(1)=c1 cos(√(λ)*1) +c2 sin(√(λ)*1) =5t c1*cos(√(λ)*1) =5t ____________________________ と計算をしてみたのですが、5tの扱い方がわからず、躓いてしまいました。 どのように計算をすればよいか、教えていただけないでしょうか。

  • 微分を数値的に積分して近似解を求める方法

    du/dt=f(u,t) というような感じの単純な常微分方程式を逐次的にコンピュータで数値積分していく場合、単純陽解法とかルンゲクッタ法とか予測子・修正子法、台形公式などいろいろあると思います。あるいは反復計算を含むものなどもあると思います。これらについてグラフを作図して解析解との差を評価したりするわけですが、偏微分方程式で使う場合も全く同じ評価がそのまま当てはまるでしょうか。常微分方程式での知見がそのまま偏微分方程式の計算に当てはまるのか、ということなのですが。反復計算を用いる方法で常微分方程式では芳しくない結果だったのですが、偏微分の場合は反復計算の価値が高くなるのではないかと思ったりするものですから。反復計算、すなわち繰り返しをやるうちに陰解法的になっていくからなのですが。 いかがでしょうか。細かい内容の質問で恐縮ですが、よろしくお願いします。