数値積分

(1) 数値積分
(2) 数値微分
(2.1) オイラー法
(2.2) かえるとび法
(2.3) ルンゲ・クッタ法
(2.4) 補足
1
(1) 数値積分
(1.1)1 次元
y = f (x) の積分
∫b
a
f (x)dx を近似的に求める公式
n 次の公式は曲線 f (x) を n 次の曲線で近似したものである。例えば,n = 2
であれば,3 点 f0 , f1 , f2 を通る 2 次曲線 y = ax2 + bx + c で y = f (x) を近
似したものである。
次数
公式 精度 n=1
n=2
n=3
h
2 (f0
h3 h4 h5 n=4
S1 =
+ f1 )
h
S2 = 3 (f0 + 4f1 + f2 )
S3 = h8 (3f0 + 9f1 + 9f2 + 3f3 )
S4 =
h
45 (14f0
+ 64f1 + 24f2 + 64f3 + 14f4 )
台形公式
シンプソンの公式
h6 ここで h = (b − a)/n, xj = a + nh, (j = 0, 1, 2, · · · , n), fj = f (xj ) である。
2
(2) 数値微分
(2.1) オイラー法(Euler method)
運動方程式 ma(t) = f (t) を dx(t)/dt = v(t)、dv(t)/dt = f (t)/m と変形す
る。時刻 t の刻みを ∆t とし、時刻 t + ∆t での x と v の値を
x(t + ∆t) = x(t) + v(t)∆t
v(t + ∆t) = v(t) + a(t)∆t = v(t) + (f (t)/m)∆t
と近似する。 具体的に書くと
a(0) = f (0)/m
x(∆t) = x(0) + v(0)∆t
v(∆t) = v(0) + a(0)∆t
a(∆t) = f (Δ t)/m
x(2∆t) = x(∆t) + v(∆t)∆t
v(2∆t) = v(∆t) + a(∆t)∆t
(2.2) かえるとび法(Leapfrog method)
時刻 t + ∆t での x と v の値を求めるのに t + ∆t/2 での値を利用。具体的
に書くと
a(0) = f (0)/m
v(∆t/2) = v(0) + a(0)∆t/2
x(∆t) = x(0) + v(∆t/2)∆t
a(∆t) = f (∆t)/m
v(∆t + ∆t/2) = v(∆t/2) + a(∆t)∆t/2
x(2∆t) = x(∆t) + v(∆t + ∆t/2)∆t
(2.3) ルンゲ・クッタ法(Runge-kutta method)
dv/dt = F (t, v) であるとき、時刻 t1 = t0 + ∆t における v の値 v1 を
v1 = v0 + a とする。ここで、a = ∆t(a1 + 2a2 + 2a3 + a4)/6 である。
a1 = F (t0, v0)
a2 = F (t0 + ∆t/2, v0 + a1/2)
a3 = F (t0 + ∆t/2, v0 + a2/2)
a4 = F (t0 + ∆t, v0 + a3)
(2.4) 補足(ルンゲ・クッタ法)
(2.1)1 次元
d2 x
dx
dx
du
= f (x, , t) →
= u,
= f (x, u, t)
dt2
dt
dt
dt
3
x = (x, u),
dx
= (u, f ) = f (x, t)
dt
k1 = f (x1 , t1 ) = (k11 , k12 )
h
k 1 , t1 +
2
h
k3 = f (x1 + k2 , t1 +
2
k2 = f (x1 +
h
)
2
h
)
2
k4 = f (x1 + hk3 , t1 + h)
x2 = x1 +
h
(k1 + 2k2 + 2k3 + k4 )
6
(2.2)2 次元
d2 x
dx dy
= f (x, y, , , t)
dt2
dt dt
d2 y
dx dy
= g(x, y, , , t)
dt2
dt dt
x = (x1 , x2 , x3 , x4 ) = (x, y, u, v) = (x, y,
dx dy
, )
dt dt
d
x = (u, v, f, g) = f (x, t)
dt
k1 = f (x1 , t1 ) = (k11 , k12 , k13 , k14 )
h
k 1 , t1 +
2
h
k3 = f (x1 + k2 , t1 +
2
k2 = f (x1 +
h
)
2
h
)
2
k4 = f (x1 + hk3 , t1 + h)
x2 = x1 +
h
(k1 + 2k2 + 2k3 + k4 )
6
4