Transcript x - 九州工業大学
数値計算法I
第8回
数値積分
2006年度
九州工業大学工学部電気電子工学コース用講義資料
講師:趙孟佑
[email protected]
1
数値積分
• 関数f(x)が複雑な形をしていて、解析的に積分し
にくい時、数値計算により(定)積分を行う。
I f (x)dx
b
a
n
I wi f (xi )
i0
aからbの間をn分割する。
f(xi)は各分割点での値
wiは各分割点での値に与える重み
重みの与え方によって、積分方法が異なる。
2
台形公式による数値積分
最も単純で直感的な方法
f (x)
h
x0
a
x1
x2
---- xn-1 xn
b
ba
刻み幅 h
n
3
台形公式による数値積分
f (x1 ) f (x2 )
x0
a
x1
赤線で囲まれた台形の面積
x2
---- xn-1 xn
b
f (xi ) f (xi1 )
h で各区間の積分を近似
2
4
台形公式による数値積分
f (x0 ) f (x1 )
f (x1 ) f (x2 )
f (xn2 ) f (xn1 )
f (xn1 ) f (xn )
h
h L
h
h
2
2
2
2
h
h
f (x0 ) f (x1 )h f (x2 )h L f (xn2 )h f (xn1 )h f (xn )
2
2
n1
h
h
f0 h fi fn
2
2
i1
I
n1
h
f0 2 fi
2
i1
fn
簡単化のため、f (xi ) を
fi
と書く
5
台形公式による数値積分の誤差
fi+1をxiの近傍でテイラー展開する
2
3
4
h h h (4)
fi1 fi hfi fi fi fi L
2
3!
4!
xiでの微分は
fi1 fi h h h (4)
fi
fi fi
fi L
h
2
6
24
2
3
6
台形公式による数値積分の誤差
Ii
xi1
xi
f (x)dx f (xi z)dz
h
0
z2 z 3 z 4 (4)
fi zfi fi fi fi L
0
2
3!
4!
h
dz
h2
h3 h4 h5 (4)
hfi fi fi
fi
fi L
2
6
24
120
fi1 fi h h2 h3 (4)
fi
fi fi
fi L を代入すると、
h
2
6
24
fi1 fi h3 h4
Ii h
fi
fiL
2
12
24
台形の面積
この分が誤差
7
台形公式による数値積分の誤差
fi1 fi h3 h4
Ii h
fi
fiL
2
12
24
一区間辺りの誤差Ei
h3
Ei fi
12
全部で、
h3 n
E Ei fi
12 i1
i1
n
区間中の2階微分の最大値をMとすると、
h3
h2
b a h2
ba 2
E nM nh M n
M
hM
12
12
n 12
12
8
台形公式による数値積分の誤差
ba 2
E
hM
12
台形公式の誤差は刻み幅の2乗に比例する。
9
台形公式による数値積分(例)
4
0 1 x2 dx
1
n
h
積分値
誤差
2
0.500000000000
3.100000000000
-0.041592653590
4
0.250000000000
3.131176470588
-0.010416183002
8
0.125000000000
3.138988494491
-0.002604159099
16
0.062500000000
3.140941612041
-0.000651041548
32
0.031250000000
3.141429893175
-0.000162760415
64
0.015625000000
3.141551963486
-0.000040690104
128
0.007812500000
3.141582481064
-0.000010172526
256
0.003906250000
3.141590110458
-0.000002543132
512
0.001953125000
3.141592017807
-0.000000635783
10
台形公式による数値積分(例)
10-1
10-2
error
10-3
10-4
10-5
10-6
10-7 -3
10
10-2
h
10-1
100
11
台形公式による数値積分例
implicit real*8 (a-h,o-z)
parameter(nmax=1000)
c
pi=4*datan(1.d0)
b=1
a=0
do in=1,9
n=2**in
h=(b-a)/n
sum=0
do i=0,n-1
sum=sum+(f(a+i*h)+f(a+(i+1)*h))*h/2
end do
error=sum-pi
write(6,100)n,h,sum,error
100 format(1x,i5,3(1x,f20.12))
end do
stop
end
c
function f(x)
implicit real*8 (a-h,o-z)
f=4/(1+x*x)
return
end
12
シンプソン法
fi1
fi
fi1
h
xi1
h
xi
xi1
fi-1,fi,fi+1の3点を通る2次曲線で、xi-1からxi+1
の間のf(x)を近似する。
2次補間
13
2次補間
P2 (x) y1a1(x) y2a2 (x) y3a3 (x)
ここで、a1(x),a2(x),a3(x)は2次式
P2(x)が、(x1,y1),(x2,y2),(x3,y3)を通る時、
P2 (x1 ) y1 y1a1(x1 ) y2a2 (x1 ) y3a3 (x1 )
より、
a1(x1 ) 1,a2 (x1 ) 0,a3 (x1 ) 0
同様に、
a1(x2 ) 0,a2 (x2 ) 1,a3 (x2 ) 0
a1(x3 ) 0,a2 (x3 ) 0,a3 (x3 ) 1
14
2次補間
a1(x1 ) 1,a2 (x1 ) 0,a3 (x1 ) 0
a1(x2 ) 0,a2 (x2 ) 1,a3 (x2 ) 0
a1(x3 ) 0,a2 (x3 ) 0,a3 (x3 ) 1
を満たす2次式は、
a1 (x) A(x x2 )(x x3 )
a2 (x) B(x x1 )(x x3 )
a3 (x) C(x x1 )(x x2 )
の形をしている。
15
2次補間
a1 (x1 ) 1 となるには、係数Aは
A(x1 x2 )(x1 x3 ) 1
より、
同様に
1
A
(x1 x2 )(x1 x3 )
1
B
(x2 x1 )(x2 x3 )
1
C
(x3 x1 )(x3 x2 )
16
2次補間
P2 (x) y1a1(x) y2a2 (x) y3a3 (x) は
(x x2 )(x x3 )
(x x1 )(x x3 )
(x x1 )(x x2 )
P2 (x) y1
y2
y3
(x1 x2 )(x1 x3 )
(x2 x1 )(x2 x3 )
(x3 x1 )(x3 x2 )
と書ける。
fi-1,fi,fi+1の3点を通る2次曲線は
P2 (x) fi1
(x xi )(x xi1 )
(x xi1 )(x xi1 )
(x xi1 )(x xi )
fi
fi1
(xi1 xi )(xi1 xi1 )
(xi xi1 )(xi xi1 )
(xi1 xi1 )(xi1 xi )
と書ける。
17
シンプソン公式
xi-1からxi+1の積分
xi1
xi1
f (x)dx
f(x)をP2(x)で近似して積分する。
fi1
fi
fi1
h
xi1
h
xi
xi1
18
シンプソン公式
xi1
xi1
f (x)dx
xi1
xi1
P2 (x)dx
(x xi )(x xi1 )
fi1
dx
xi1
(xi1 xi )(xi1 xi1 )
xi1
(x xi1 )(x xi1 )
fi
dx
xi1
(xi xi1 )(xi xi1 )
xi1
(x xi1 )(x xi )
fi1
dx
xi1
(xi1 xi1 )(xi1 xi )
xi1
fi1
(x xi )(x xi1 )dx
x
(xi1 xi )(xi1 xi1 ) i1
xi1
fi
(x xi1 )(x xi1 )dx
x
(xi xi1 )(xi xi1 ) i1
xi1
fi1
(x xi1 )(x xi )dx
(xi1 xi1 )(xi1 xi ) xi1
xi1
19
シンプソン公式
xi1
xi1
xi1
fi1
f (x)dx (x x )(x x ) xi1 (x xi )(x xi1 )dx
i1
i
i1
i1
xi1
fi
(x xi1 )(x xi1 )dx
x
(xi xi1 )(xi xi1 ) i1
xi1
fi1
(x xi1 )(x xi )dx
x
(xi1 xi1 )(xi1 xi ) i1
xi1 xi h, xi1 xi1 2h 等を使って、
xi1
fi1
(x xi )(x xi1 )dx
x
(h)(2h) i1
xi1
fi
(x xi1 )(x xi1 )dx
x
(h)(h) i1
xi1
fi1
(x xi1 )(x xi )dx
x
(2h)(h) i1
20
シンプソン公式
xi1
xi1
fi1 xi1
f (x)dx 2 xi1 (x xi )(x xi1 )dx
2h
fi xi1
2 (x xi1 )(x xi1 )dx
h xi1
fi1 xi1
2 (x xi1 )(x xi )dx
2h xi1
2h
z3 3 2
2 3
2
(x
x
)(x
x
)dx
(z
h)(z
2h)dz
hz
2h
z
h
i
i1
3 2
xi1
0
0 3
xi1
2h
2h
z3
4 3
2
(x
x
)(x
x
)dx
(z)(z
2h)dz
hz
h
i1
i1
3
xi1
0
3
0
xi1
2h
2h
z h 2
2 3
(x
x
)(x
x
)dx
(z)(z
h)dz
z
h
i1
i
3 2
xi1
0
0 3
xi1
2h
3
21
シンプソン公式
xi1
xi1
fi1 2 3 fi 4 2 fi1 2 2
f (x)dx 2 h 2 h 2 h
2h 3
h 3 2h 3
h
nは偶数
fi1 4 fi fi1
3
よって、x0(=a)からxn(=b)までの積分値は、
0から2の積分
b
a
2から4の積分
4から6の積分
h
h
h
f (x)dx f0 4 f1 f2 f2 4 f3 f4 f4 4 f5 f6
3
3
3
h
h
L fn4 4 fn3 fn2 fn2 4 fn1 fn
3
3
b
a
n/2
n/21
h
f (x)dx f0 4 f2n1 2 f2n
3
i1
i1
fn
22
シンプソン公式の誤差
fi+1とfi-1をxiの近傍でテイラー展開する
h2
fi1 fi hfi
2
h2
fi1 fi hfi
2
3
4
5
6
h
h
h
h
fi fi fi (4) fi (5) fi (6) L
3!
4!
5!
6!
3
4
5
6
h
h
h
h
(4)
(5)
(6)
fi fi fi fi fi L
3!
4!
5!
6!
和をとって、
4
6
h
h
2
(4)
(6)
fi1 fi1 2 fi h fi fi
fi L
12
360
差をとって、
h3 h5 (5)
fi1 fi1 2hfi fi
fi
3
60
23
シンプソン公式の誤差
xi1
xi1
f (x)dx f (xi z)dz f (xi z)dz f (xi z)dz
h
h
0
h
0
h
h
z2 z 3 z 4 (4) z5 (5) z6 (6)
( fi zfi fi fi fi fi fi L )dz
2
3!
4!
5!
6!
0
0
z2 z 3 z 4 (4) z5 (5) z6 (6)
( fi zfi fi fi fi fi fi L )dz
2
3!
4!
5!
6!
h
2 h3 2 h5 (4) 2 h7 (6)
2hfi
fi
fi
fi L
32
5 4!
74 6!
6
h (4) h (6)
fi1 fi1 2 fi h fi fi
fi L
12
360
より、
2
4
f
2
f
f
h
h
(4)
(6)
i
i1
fi i1
f
f
L を代入
i
i
2
h
12
360
24
2
シンプソン公式の誤差
2 h3 2 h5 (4) 2 h7 (6)
xi1 f (x)dx 2hfi 3 2 fi 5 4! fi 7 6! fi L
h3 fi1 2 fi fi1 h2 (4) 2 h5 (4) 2 h7 (6)
2hfi
fi
fi
fi L
2
3
h
12
7 6!
5 4!
xi1
h
1 5 (4)
1
fi1 4 fi fi1 h fi L
60 36
3
h
1 5 (4)
fi1 4 fi fi1 h fi L
3
90
シンプソン公式
誤差
x0からxnまで誤差を足すと、全誤差Eは
n h5 (4) n b a h4 (4) b a 4 (4) b a 4
E
f
f
h f
hM
2 90
2 n 90
180
180
25
シンプソン公式の誤差
n h5 (4) n b a h4 (4) b a 4 (4) b a 4
E
f
f
h f
hM
2 90
2 n 90
180
180
Mは4階微分の最大値
シンプソン公式の誤差は刻み幅の4乗に比例
台形公式は2乗
26
シンプソン公式の例
/2
0
xcos xdx
解析解は
/2
0
xcos xdx xsin x0
/2
/2
0
n
2
4
8
16
32
64
128
256
512
h
0.785398163397
0.392699081699
0.196349540849
0.098174770425
0.049087385212
0.024543692606
0.012271846303
0.006135923152
0.003067961576
sin xdx xsin x0 cos x0
/2
積分値
0.581572016637
0.571416499264
0.570834320361
0.570798689642
0.570796474290
0.570796336010
0.570796327371
0.570796326831
0.570796326797
/2
2
1
誤差
0.010775689842
0.000620172469
0.000037993566
0.000002362847
0.000000147495
0.000000009216
0.000000000576
0.000000000036
27
0.000000000002
解析解はπ
n
h
2
4
8
16
32
64
128
シンプソン公式の例
1
4
0 1 x2 dx
0.500000000000
0.250000000000
0.125000000000
0.062500000000
0.031250000000
0.015625000000
0.007812500000
積分値
3.133333333333
3.141568627451
3.141592502459
3.141592651225
3.141592653553
3.141592653589
3.141592653590
誤差
-0.008259320256
-0.000024026139
-0.000000151131
-0.000000002365
-0.000000000037
-0.000000000001
0.000000000000
28
シンプソン公式の例
10-1
台形公式
シンプソン法
10-3
error
10-5
10-7
10-9
10-11
10-13 -3
10
10-2
h
10-1
100
29