• 検索結果がありません。

= f ( t;x ( t )) dxdt 2. 常微分方程式 数値解析

N/A
N/A
Protected

Academic year: 2021

シェア "= f ( t;x ( t )) dxdt 2. 常微分方程式 数値解析"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

数値解析

2. 常微分方程式 dx

dt = f (t, x(t))

石渡哲哉

(

芝浦工大数理

)

(2)

この章の目標

常微分方程式の初期値問題 (IVP):

dx

dt = f(t, x(t)), t > a, (1)

x(a) = x0 (2)

の近似計算法を学び、誤差解析等について理解する。

対象:

上記のような 1 階の正規形 ODE に対する方法を紹介するが、1

の連立系にしてもまったく同じように適用可能である。スカラー 関数 x, f をベクトル値の関数に読み替えるだけで良い。また、高 ODE は、1 階連立系に書きなおすことができることにも注意。

(3)

f は十分滑らかとし、解の存在と一意性は保証されているとする。

また、このとき解 x f の滑らかさに応じて十分に滑らかであ ることにも注意。

(4)

代表的な方法

オイラー法 (Euler method)

ホイン法 (Heun method), 中点法 (改良オイラー法)

ルンゲ・クッタ法 (Runge-Kutta method)

(5)

2.1 オイラー法 (Euler method)

dx

dt = f(t, x(t))

の左辺を次で近似 (h > 0 とする) x(t + h) x(t)

h = dx

dt = lim

h0

x(t + h) x(t) h

式を整理すると,

x(t + h) = x(t) + h · f(t, x(t))

となり, x(t) の値から x(t + h) の値を逐次的に計算することができる.

(6)

tn := a + nh とし, x(tn) の近似値を Xn と書くことにする. (IVP) を次にように離散化する方法をオイラー法という.

オイラー法のスキーム

{ Xn+1 = Xn + h · f(tn, Xn) (n = 0, 1, 2, · · · ) X0 = x0

h > 0 はステップサイズ、刻み幅、離散化パラメータなどと呼ばれる.

近似の妥当性

Q h 0 としたとき, Xn は元の解 x(t) に収束するだろうか?*1

*1 より詳しく, (tn, Xn) をつないでできた折れ線が x(t) の解曲線に収束するか, いう観点もあり.

(7)

■ 解の収束性について (誤差解析)

閉区間 [a, b] (T := b a > 0) 上で解 x(t) が存在しているとする. h = T /N (N R) とし, この区間で離散化誤差 en := x(tn)Xn (n = 0, 1, 2, · · · , N) を調べる。

定理 (誤差解析)

離散化誤差に対して以下が成り立つ:

h N に依存しない定数 C > 0 が存在して max

0nN |en| ≤ Ch.

Remark:

上の結果をランダウの記号を使って |en| = O(h) と書くことも

(8)

ある.

h 0 のとき, 誤差が h 1 次のオーダーで 0 に収束する.

今回の誤差解析は離散化誤差のみ考慮している. 丸め誤差の影響

についても考察する必要がある場合は, 初期値の設定, 各ステップ

の計算時に丸め誤差が混入するとして解析を行う.

オイラー法はシンプルであり、プログラミングも容易であるが、収束が 遅く、実用上はあまり使われない。

次節以降において、オイラー法の改良や、ODE の数値計算でよく使わ

れているルンゲ・クッタ法について紹介する.

(9)

2.2 次数と収束

以下の 1 段階法のスキームを考える:

Xn+1 = Xn + h · Φ(tn, Xn) (n = 0, 1, 2, · · · , N 1) (3) x(t) を真の解として、

x(tn+1) = x(tn) + h · Φ(tn, x(tn)) + O(hk+1)

を満たすとき, スキーム (3) k 次の / 次数 k (精度をもつ) 離散化

である, という.

このとき, 以下の収束定理が成り立つ:

(10)

収束定理 Φ はリプシッツ連続とする. 1 段階法のスキーム (3) k 次精度を

もつとすると, 以下が成立する: max

0nN |en| ≤ O(hk).

上の定理より, 近似の精度を上げれば収束も速くなることが分かる.

よって, 比較的シンプルなスキームで*2, なるべく高精度のものを作り たい, ということになる.

*2 計算の手間が少なければ, それだけ丸め誤差の混入の機会が減る.

(11)

2.3 オイラー法の改良

ODE x(t) = f(t, x(t)) tn から tn+1 まで積分すると、

x(tn+1) x(tn) =

tn+1

tn

f(s, x(s))ds i.e.

x(tn+1) = x(tn) +

tn+1 tn

f(s, x(s))ds

オイラー法などの 1 段階法:Xn+1 = Xn + h · Φ(tn, Xn) では、積

tn+1 tn

f(s, x(s))ds h · Φ(tn, Xn) でどう近似するかということ に相当する。

オイラー法では、この積分を 1 t = tn での値を利用して, 高さ f(tn, Xn), h の長方形で近似している.(区分求積)

(12)

この近似を、よりよいものに変える.

代表的なものを2つ紹介: ホイン法、中点法(修正オイラー法)

ホイン法: 積分を台形で近似:

tn+1

tn

f(s, x(s))dsh

2 (f(tn, x(tn)) + f(tn+1, x(tn+1))

h

2 (f(tn, Xn) + f(tn+1, Xn+1))

ただし, Xn+1 の値は未知なので, これをオイラー法を利用して近似 X˜n+1 = Xn + hf(tn, Xn) で代用する.

(13)

ホイン法のスキーム











Xn+1 = Xn + h · Φ(tn, Xn) (n = 0, 1, 2, · · · ) where Φ(tn, Xn) = 12(k1 + k2)

k1 = f(tn, Xn)

k2 = f(tn+1, Xn + hk1) X0 = x0

(14)

中点法: 積分を区間の中点での値を用いた長方形で近似:

tn+1 tn

f(s, x(s))dshf(tn + h

2 , x(tn + h

2 ))hf(tn + h

2 , Xn+1/2)

ただし, Xn+1/2 の値は未知なので, これを刻み幅を h/2 としたオイ ラー法を利用して近似値 X˜n+1/2 = Xn + h2 f(tn, Xn) で代用する.

中点法のスキーム











Xn+1 = Xn + h · Φ(tn, Xn) (n = 0, 1, 2, · · · ) where Φ(tn, Xn) = k2

k1 = f(tn, Xn)

k2 = f(tn + h2, Xn + h2 k1) X0 = x0

(15)

以上の2つの方法は 2 次精度をもつ 1 段階法となる.(各自)

= 先の定理より 2 次収束することも分かる.

これらの方法のように、[tn, tn+1] の複数の点を用い, それらの点での f の値を (何らかの意味での) 平均をとることで積分の近似精度を上げる ことができることがある. この方向での高次化の方法にルンゲ・クッタ 法が知られている. (これまで紹介した方法は、すべてこの方法の一種と なっている.)

(16)

2.4 ルンゲ・クッタ法 (Runge-Kutta method)

s 段のルンゲ・クッタ法





























Xn+1 = Xn + h · Φ(tn, Xn) (n = 0, 1, 2, · · · )

where Φ(tn, Xn) = b1k1 + b2k2 + · · · bsks k1 = f(tn, Xn) (c1 = 0, a11 = 0)

k2 = f(tn + c2h, Xn + ha21k1)

k3 = f(tn + c3h, Xn + h(a31k1 + a32k2)) ...

ks = f(tn + csh, Xn + h(as1k1 + as2k2+

· · · + ass1ks1)) X0 = x0

aij, bi, ci : ルンゲ・クッタ法の係数パラメータ

(17)

Remarks:

オイラー法は s = 1, ホイン法は s = 2, a21 = 1, b1 = b2 = 1/2, c2 = 1 のルンゲクッタ法とみることができる.

s = 1, 2, 3, 4 に対しては、係数パラメータをうまく選ぶことで s

s 次のルンゲクッタ法のスキームを作ることができる.

s 5 では、s s 次のルンゲクッタ法のスキームは構成できな いことが示されている. *3

*3 陰的ルンゲ・クッタ法であれば可能.

(18)

実用上は、次の 4 段のルンゲ・クッタ法のスキームがよく使われている. s = 4, a21 = a32 = 1/2, a31 = a41 = a42 = 0, a43 = 1

b1 = b4 = 1/6, b2 = b3 = 1/3 c2 = c3 = 1/2, c4 = 1

この設定にすると, 4 次精度を持つことを示すことができる. 4 4 RK 法のスキーム



















Xn+1 = Xn + h · Φ(tn, Xn) (n = 0, 1, 2, · · · )

where Φ(tn, Xn) = 16(k1 + 2k2 + 2k3 + k4) k1 = f(tn, Xn)

k2 = f(tn + 12h, Xn + 12hk1) k3 = f(tn + 12h, Xn + 12hk2) k4 = f(tn + h, Xn + hk3)

X0 = x0

(19)

【参考】3 3 RK 法のスキーム















Xn+1 = Xn + h · Φ(tn, Xn) (n = 0, 1, 2, · · · ) where Φ(tn, Xn) = 16(k1 + 4k2 + k3)

k1 = f(tn, Xn)

k2 = f(tn + 12h, Xn + 12hk1)

k3 = f(tn + h, Xn hk1 + 2hk2) X0 = x0

参照

関連したドキュメント

また, 熱の伝わり方を表す方程式として「熱方程式」と呼ばれる偏 微分方程式が知られているが, フーリエ (Jean-Baptiste-Joseph Fourier, 1768-1830)

改良型にガウス・ジョルダン法(掃出し法)がある。この 方法では、非対角成分をすべて消す。そのため計算量は増え

おわりに $t1$ [1] で提案した近似解法の理論的な骨子は一般の 2

(A) プレコンパィラと FORTRAN コンパイラの処理時間の比較 (B) 数値微分と高速微分法での, 微分計算の時間の比較

3.2 例題の説明 次の例題から始めます。 例題1: 二分法によって、方程式 cosx−x= 0 の解を計算せよ。 例題2: Newton 法によって、方程式 cosx−x= 0 の解を計算せよ。 この方程式は、一見シンプルですが、式の変形で解を求めることは簡単ではありません 多 分…不可能でしょう。 一方、解が存在することを示すのは比較的簡単です。実際

事実, もともとの関心は, 準 線形保存系 ( 空間 1 次元多成分系 ) の一種の漸近解析から発した波の干渉の

磁気ベクトルポテンシャル $A_{1}$ 、ス カラーポテンシャル

たらした [8]. それは界面の運動を Langevin 型の確率拡散方程式で表すもので, これに.. この方程式は著者たちの頭 文字を取って “KPZ 方程式