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

10. 高階常微分方程式や連立微分方程式の解法 10.1.

N/A
N/A
Protected

Academic year: 2021

シェア "10. 高階常微分方程式や連立微分方程式の解法 10.1."

Copied!
3
0
0

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

全文

(1)

コンピュータプログラミング

- 46 -

10. 高階常微分方程式や連立微分方程式の解法

10.1. 連立微分方程式の解法

一般的な形で書くのは大変でありわかりづらいので,ここでは2変数に限って議論する.以下 のような連立常微分方程式を考える.

この方程式は以下のようにルンゲ・クッタ法を用いて計算することができる.

ここで,

10.2. 高階常微分方程式を計算する

もとの高階常微分方程式を連立微分方程式にすることによって,高階常微分方程式の計算は行 うことができる.例えば以下のような2階常微分方程式

は,以下のように連立微分方程式に変更することができる.

これは についての連立微分方程式なので,上に示した方法で数値的に解くことができる.

10.3. 例(減衰振動)

簡単だけど面白い例として減衰振動の方程式を考える.

この方程式は解析的に解くことができる.解は判別式 の値によって区別される.

のとき指数関数で表される減衰を示し, のときは振動しながら減衰する.この様子を

ルンゲ・クッタ法によって計算してみよう.

(2)

コンピュータプログラミング

- 47 -

パラメータ eta を変更して幾つかの解を得てグラフにまとめてみよう.

Sub calcDampedOsc()

Const initialX As Double = 1#

Const initialV As Double = 0#

Const deltaT As Double = 0.2, maxT As Double = 20 Dim x As Double, newX As Double, t As Double Dim v As Double, newV As Double

Dim kx1 As Double, kx2 As Double, kx3 As Double, kx4 As Double Dim kv1 As Double, kv2 As Double, kv3 As Double, kv4 As Double Dim counter As Integer

ActiveCell.Value = "Time"

ActiveCell.Offset(0, 1).Value = "x(t)"

ActiveCell.Offset(0, 2).Value = "v(t)"

ActiveCell.Offset(1, 0).Value = 0

ActiveCell.Offset(1, 1).Value = initialX ActiveCell.Offset(1, 2).Value = initialV x = initialX

v = initialV counter = 2

For t = deltaT To maxT Step deltaT kx1 = deltaT * doX(x, v)

kv1 = deltaT * doV(x, v)

kx2 = deltaT * doX(x + kx1 / 2, v + kv1 / 2) kv2 = deltaT * doV(x + kx1 / 2, v + kv1 / 2) kx3 = deltaT * doX(x + kx2 / 2, v + kv2 / 2) kv3 = deltaT * doV(x + kx2 / 2, v + kv2 / 2) kx4 = deltaT * doX(x + kx3, v + kv3)

kv4 = deltaT * doV(x + kx3, v + kv3)

newX = x + (kx1 + 2 * kx2 + 2 * kx3 + kx4) / 6 newV = v + (kv1 + 2 * kv2 + 2 * kv3 + kv4) / 6

ActiveCell.Offset(counter).Value = t ActiveCell.Offset(counter, 1).Value = newX ActiveCell.Offset(counter, 2).Value = newV x = newX

v = newV

counter = counter + 1 Next t

End Sub

Function doX(x As Double, v As Double) As Double doX = v

End Function

Function doV(x As Double, v As Double) As Double Const k As Double = 0.5

Const eta As Double = 2.5

doV = -eta * v - k * x End Function

(3)

コンピュータプログラミング

- 48 - 計算例を下に示した.

10.4. 練習問題

A) 上の減衰振動において,振動がなくなるギリギリの値を見つけなさい.

B) 他の微分方程式についても計算する方法を考えなさい.例えば以下の方程式ではどうなる だろうか?

1) (単振動)

2) (van der Pol 方程式)

3) (Lotka-Volterra 方程式)

参照

関連したドキュメント

常微分方程式の数値解法 長所 解析的に解けない微分方程式を解くことができる

この点 でこれまでに発表されてきた HIDM の差 分化技法 [2,3,4] とは異なるが高次数の陰的

GFDワークノート 常微分方程式の初期値問題 2 関数fx, tが滑らかな関数3 ならば, 1式と2式を満たすような関数xtが一 意に定まる.. 連立常微分方程式4 の場合も基本的な考え方は一緒であり, d dtxit =fix1t,

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

工学やその他の分野の問題で,連立方程式の解を求める ことに帰着できるものは多くあります.微分方程式とよ ばれる方程式 (

AKNS 階層は $2\cross 2$ 行列係数の線形微分作用素 (Lax 作用素 ) を基本的な変数と考えて方程式系 を構成することが多いが , Sato-Wilson

力学では運動方程式が代表例で、ma=fのaは速度の

与えられた式において、分母分子を で割ると、同次形であることが分かる。式 及び 式 を使い、