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

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 方程式)

参照

関連したドキュメント

[r]

Yamamoto: “Numerical verification of solutions for nonlinear elliptic problems using L^{\infty} residual method Journal of Mathematical Analysis and Applications, vol.

[r]

[r]

この節では mKdV 方程式を興味の中心に据えて,mKdV 方程式によって統制されるような平面曲線の連 続朗変形,半離散 mKdV

In this paper, we consider the discrete deformation of the discrete space curves with constant torsion described by the discrete mKdV or the discrete sine‐Gordon equations, and

電子式の検知機を用い て、配管等から漏れるフ ロンを検知する方法。検 知機の精度によるが、他

上であることの確認書 1式 必須 ○ 中小企業等の所有が二分の一以上であることを確認 する様式です。. 所有等割合計算書