数値計算では,微分積分は,通常 離散的に与えられたデータを基に数値的に行われる.まず簡単な例を 示そう.関数
u
(
x
)
は,図6.1
に示すように,等間隔の計算点::: x
;1x
0x
1x
2:::
における関数値::: u
;1u
0u
1u
2:::
で離散的(discrete)
に与えられるものとする.u
i
=
u
(
x
i
)
(
i
= 0
1
2
:::
)
, 計算点の間隔x
i
+1 ;x
i
=
h
= const
:
とする.これらの関数値を直線で結ぶことにすれば,区間x
0< x < x
1 内の点x
におけるu
(
x
)
の値は1
次補間式u
(
x
) =
x
1 ;x
h u
0+
x
;x
0h u
1+ 12(
x
;x
0)(
x
;x
1)
u
00 0+
から求められ,また微分値と点x
0からx
までの積分値はこの式を微分または積分した次式から求められる.u
0(
x
) =
u
1 ;u
0h
+ 12(2
x
;x
0 ;x
1)
u
00 0+
Zx
x
0u
(
x
)
dx
=
x
;x
02
;u
0+
u
(
x
)
;(
x
;x
0)
312
u
00 0+
数値微分の式は明らかで,また数値積分の式も後述の台形則より明らかである.この数値微分と数値積分 の式は,任意の点x
に対するものであるが,通常用いられるものは次の計算点x
=
x
0x
1に対するもので ある.u
0 0=
u
0 1=
u
1 ;u
0h
+ O(
h
)
Zx
1x
0u
(
x
)
dx
= 12
h
(
u
0+
u
1) + O(
h
3)
これらの式は,補間,微分,積分の厳密値]=
離散近似式]+
打切り誤差]
という形で表されており,右辺 の最後の部分は打切り誤差(truncation error)
と呼ばれ次のようにして求められる.すなわちこれらの式の 図6.1:
離散関数の微分と積分1
両辺に点
x
0まわりのTaylor
展開u
(
x
) =
u
0+(
x
;x
0)
u
0 0+ 12!(
x
;x
0)
2u
00 0+ 13!(
x
;x
0)
3u
00 0 0+
u
0(
x
) =
u
0 0+(
x
;x
0)
u
00 0+ 12!(
x
;x
0)
2u
000 0+
Zx
x
0u
(
x
)
dx
= (
x
;x
0)
u
0+ 12!(
x
;x
0)
2u
0 0+ 13!(
x
;x
0)
3u
00 0+ 14!(
x
;x
0)
4u
00 0 0+
u
i
=
u
0+
ihu
0 0+ 12!(
ih
)
2u
00 0+ 13!(
ih
)
3u
000 0+
(
i
= 1
2
:::
)
を代入すれば ,1
次補間とそれに関連する式ではu
0u
0 0を含む項は両辺同じになり,それよりも高次の項 が打切り誤差になる.上式ではu
00 0の項のみ残されそれ以降は省略されている.打切り誤差は,離散近似式 を,ある項で打切ったTaylor
展開式を基に導いたために生じた誤差と解釈することができ,名称もこれに 由来する.打切り誤差の項に含まれるx
;x
0x
;x
1などは計算点の間隔h
の大きさの小さな値で,打切り 誤差はそれらの次数によりO(
h
2), O(
h
3)
のように表され,その離散近似式はそれぞれ2
次精度の式,3
次 精度の式と言われる. 次に離散的に与えられた3つの関数値u
;1u
0u
1を通る放物線を考えれば ,区間x
;1< x < x
1内の点x
におけるu
(
x
)
の値は2
次補間式u
(
x
) = 1
h
2 n1
2(
x
;x
0)(
x
;x
1)
u
;1 ;(
x
;x
1)(
x
;x
;1)
u
0+ 12(
x
;x
;1)(
x
;x
0)
u
1 o+ 13!(
x
;x
;1)(
x
;x
0)(
x
;x
1)
u
000 0+
から求められ,また微分値と積分値は次式から求められる.u
0(
x
) = 1
2
h
2(2
x
;x
0 ;x
1)
u
;1 ;2(2
x
;x
;1 ;x
1)
u
0+(2
x
;x
;1 ;x
0)
u
1+ 13!
(
x
;x
0)(
x
;x
1)+(
x
;x
1)(
x
;x
;1)+(
x
;x
;1)(
x
;x
0)
u
000 0+
Zx
x
;1u
(
x
)
dx
= (
x
;x
;1)
212
h
2(2
x
;x
0 ;x
1)(
u
;1+
u
1)
;4(
x
;x
1 ;h
)
u
0 ;(
x
;x
;1)(
x
;x
1)
2
h
u
0+ 14!(
x
;x
;1)
2(
x
;x
1)
2u
000 0+
また点x
が計算点の場合には次のようになる.u
0 0= 12
h
(
;u
;1+
u
1) + O(
h
2)
u
0 1= 12
h
(
u
;1 ;4
u
0+3
u
1) + O(
h
2)
Z 1 ;1u
(
x
)
dx
= 13
h
(
u
;1+4
u
0+
u
1) + O(
h
4)
離散近似式は一般に微分すると精度が下がり,積分すると精度が上がる.補間式の誤差は計算点に近付く につれ減少し計算点ではゼロになる.また数値積分の誤差は,上記のものは1
区間のもので,多区間では1
次低くなる.以下本章には,第1
節と第2
節に数値積分,第3
節と第4
節に数値微分について述べる.第1
節と第3
節には多項式近似を基にした通常使われている公式を説明する.また第2
節と第4
節には前2
章 に述べた補間式ないし近似関数を積分または微分することによって得られたものを示す.その多くは,普通 の多項式近似を基にした公式が適用できないか,あるいは適用しても良い結果が期待できない場合に用い られるものである.6.1
数値積分
数値積分
(numerical integration, numerical quadrature)
は,定積分Z
b
a
u
(
x
)
dx
を数値的に行うものである.被積分関数u
(
x
)
は有界,一価で,適当に滑らかに繋ぐことのできる点列u
i
(
i
=
0
1
2
::: n
)
として離散的(discrete)
に与えられ,また積分区間a b
]
は通常いくつかの小区間に分割さ れ,各区間ごとに数値積分が行われる.関数u
(
x
)
が不連続性1 を持つ場合には,区間の接点に不連続点が 来るように積分区間を分割すべきである.ここでは始めに不等間隔計算点にも適用できる未定係数法によ る数値積分について述べ,次に等間隔の場合にのみ適用できるNewton-Cotes
求積法について述べる.未 定係数法ではその都度 連立1
次方程式を解かなければならないが,等間隔の場合にはこの連立1
次方程式 の係数行列と定数ベクトルは既知になり,これを解けばNewton-Cotes
求積法の公式が導かれる.最後にGauss-Legendre
求積法あるいは単にGauss
法と呼ばれる方法について述べる.この方法ではLegendre
多項式のゼロ点の
u
i
を用いなければならなが,少ない計算点で高精度の結果を得ることができる.6.1.1
未定係数法による数値積分
関数u
(
x
)
がu
0u
1::: u
n
で与えられるものとする.u
i
=
u
(
x
i
)
,x
0=
a < x
1<
< x
n
=
b
.これ らのn
+1
個のデータを通るn
次多項式p
n
(
x
)
は一意的に定まる.未定係数法は上記の定積分を多項式を積 分することによって近似的に求めるものである.一般にn
次多項式は次のよう書くことができる.p
n
(
x
) =
a
0+
a
1x
+
a
2x
2+
+
a
n
x
n
図6.2
は,この多項式の定積分すなわちn
次曲線の下の面積が,高さu
0u
1::: u
n
にそれぞれ適切な幅A
0A
1::: A
n
を付与し ,長方形の面積の和で表せることを示している.したがって次のように置くこと ができる. Zb
a
p
n
(
x
)
dx
=
A
0p
n
(
x
0)+
A
1p
n
(
x
1)+
+
A
n
p
n
(
x
n
)
(6.1)
この式が,常に成立するためには,すなわち多項式の未定係数a
0a
1::: a
n
の値によらず成立するため には,n
+1
個の未定係数a
0a
1::: a
n
にかかる両辺の係数がそれぞれ等しくなければならない.これよ 図6.2:
未定係数法による数値積分 1 不連続性(discontinuities)
とは関数自身またはその1 2
:::階微分が不連続になることであるが,離散データに対してはあい まいに使われる.り次の
n
+1
個の条件式が導かれる. Zb
a
dx
=
A
0+
A
1+
+
A
n
Zb
a
xdx
=
A
0x
0+
A
1x
1+
+
A
n
x
n
(6.2)
Zb
a
x
n
dx
=
A
0x
n
0+
A
1x
n
1+
+
A
n
x
nn
ただし Zb
a
dx
=
b
;a
Zb
a
xdx
=
b
2 ;a
22
Zb
a
x
n
dx
=
b
n
+1 ;a
n
+1n
+1
である.幅A
0A
1A
n
は,式(6.2)
を書換えた次の連立1
次方程式から求められる. 0 B B B B @1 1
1
x
0x
1x
n
: :: :: : :: : :: :: : :: : :
x
n
0x
n
1x
nn
1 C C C C A 0 B B B B @A
0A
1...
A
n
1 C C C C A=
0 B B B B @b
;a
(
b
2 ;a
2)
=
2
...
(
b
n
+1 ;a
n
+1)
=
(
n
+1)
1 C C C C A(6.3)
この方程式は係数行列がVandermonde
の行列式で,x
0x
1::: x
n
の値がみな異なるから,A
0A
1::: A
n
の値は一意的に決定できる.数値積分の値は,式(6.3)
から求めたA
0A
1::: A
n
を次式に代入すること によって求められる. Zb
a
u
(
x
)
dx
=
A
0u
0+
A
1u
1+
+
A
n
u
n
(6.4)
次にこのようにして求めた積分値がn
次多項式p
n
(
x
)
をa
からb
まで積分したものであること,すな わち図6.2
に示すu
0u
1::: u
n
を通るn
次曲線の下の面積であることを示す.式(6.4)
の右辺は,u
0=
p
n
(
x
0)
u
1=
p
n
(
x
1)
u
n
=
p
n
(
x
n
)
なる関係,p
n
(
x
i
) =
a
0+
a
1(
x
i
)+
+
a
n
(
x
i
) (
i
= 0
1
::: n
)
な る関係,式(6.2)
を順に用い書換えていけば Zb
a
u
(
x
)
dx
=
A
0p
n
(
x
0)+
A
1p
n
(
x
1)+
+
A
n
p
n
(
x
n
)
=
a
0(
A
0+
A
1+
+
A
n
) +
a
1(
A
0x
0+
A
1x
1+
+
A
n
x
n
) +
+
a
n
(
A
0x
n
0+
A
1x
n
1+
+
A
n
x
nn
)
=
a
0 Zb
a
dx
+
a
1 Zb
a
xdx
+
+
a
n
Zb
a
x
n
dx
=
Zb
a
p
n
(
x
)
dx
となるから明らかである. 上述の数値積分は通常 全積分区間に対してではなく,n
= 2
4
程度の小区間に対し適用されるもので ある.この方法は計算点が不等間隔の場合に用いられ,等間隔の場合は次節の方法が用いられる.次に参考 までにA
i
を求める簡単なプログラムを示す.SUBROUTINE NUMINT(x,u,if,s) DIMENSION x(0:if),u(0:if),A(0:4),x1(0:4) REAL(8) v(5,6),wa(6) w=x(if)-x(0) FORALL(i=0:if)x1(i)=(x(i)-x(0))/w DO i=1,5 v(i,6)=1./FLOAT(i) IF(i==1)THEN FORALL(j=1:5)v(1,j)=1. ELSE FORALL(j=1:5)v(i,j)=x1(j-1)*v(i-1,j) ENDIF ENDDO det=1. e=0. CALL GAUSS(v,wa,5,6,det,e) FORALL(i=0:if)A(i)=w*v(i+1,6) s=0. DO i=0,if s=s+A(i)*u(i) ENDDO ENDSUBROUTINE
! Solution of simultaneous linear equations by Gaussian elimination SUBROUTINE GAUSS(a,wa,n,n1,det,e)
REAL(8) a(n,n1),wa(n1) det=1.
e=MAX(e,1.E-5)
cycle_1: DO k=1,n l=k
w=a(k,k) IF(ABS(w)>e) GOTO 11
l=k 12 l=l+1 IF(l>n)STOP 5555
w=a(l,k) IF(ABS(w)<=e) GOTO 12
FORALL(j=k:n1)
wa(j)=a(k,j) a(k,j)=a(l,j) a(l,j)=wa(j) ENDFORALL det=-det 11 det=w*det FORALL(j=k+1:n1)a(k,j)=a(k,j)/w IF(k==n)CYCLE cycle_1 FORALL(i=k+1:n,j=k+1:n1)a(i,j)=a(i,j)-a(i,k)*a(k,j) ENDDO cycle_1 DO k=n,2,-1 FORALL(i=1:k-1)a(i,n1)=a(i,n1)-a(i,k)*a(k,n1) ENDDO END このプログラムは,図
6.2
を描くために作られたものである.計算を簡単にするために,始めにa
=
x
0 !0
b
=
x
4 !1
と置いている.配列x1はその0
から1
までの新しい座標である.計算は桁落ちしないように倍精度で行っている.sは数値積分.GAUSSは連立
1
次方程式をGauss
消去法で解くサブルーチンで,a,vは連立
1
次方程式の係数行列と右辺!解を並べて記憶する配列.n1=n+1.なおwaは行の入れ替えに用い6.1.2 Newton-Cotes
求積法
上述の未定係数法による数値積分における係数A
0A
1::: A
n
は等間隔計算点の場合には既知になる.A
i
=
ha
i
(
i
= 0
1
::: n
)
,h
は計算点の間隔,とa
i
は次表のようになる.n
a
0a
1a
2a
3a
4a
5a
61
1/2
1
1
台 形 公 式2
1/3
1
4
1
Simpson 1/3
公式3
3/8
1
3
3
1
Simpson 3/8
公式4 2/45
7 32 12 32 7
5 5/288 19 75 50 50 75 19
6 1/140 41 216 27 272 27 216 41
(6/20) (1 5
1
6
1
5 1) (Weddle
公式)
Newton-Cotes
求積法では,通常 積分区間a b
]
は多項式の次数n
の整数倍N
に等分割される.計算点の 間隔h
= (
b
;a
)
=N
,x
i
=
x
0+
ih
(
i
= 0
1
2
::: N
)
,x
0=
a x
N
=
b
.この方法は,関数u
i
=
u
(
x
i
)
の値が既知のときに利用できる. 最も簡単なn
= 1
の台形公式(
梯形則trapezoidal law)
の場合には,全区間にわたる積分は次のように なる. Zx
Nx
0u
(
x
)
dx
=
h
;1
2
u
0+
u
1+
u
2+
+
u
N
;1+ 12
u
N
またn
= 2
のSimpson 1/3
公式の場合には,例えばN
= 7
に対してはSimpson 3/8
公式を補い,全区間 にわたる積分は次のようになる. Zx
Nx
0u
(
x
)
dx
= 13
h
(
u
0+4
u
1+2
u
2+4
u
3+
u
4) + 38
h
(
u
4+3
u
5+3
u
6+
u
7)
次に
Newton-Cotes
求積法の打切り誤差(truncation error)
について,Simpson
の1/3
公式を例に説明す る.関数u
(
x
)
のTaylor
展開u
(
x
) =
u
0+(
x
;x
0)
u
0 0+ 12!(
x
;x
0)
2u
00 0+ 13!(
x
;x
0)
3u
00 0 0+ 14!(
x
;x
0)
4u
(4) 0+
を区間x
0x
2]
で積分すれば次式が得られる. Zx
2x
0u
(
x
)
dx
= 2
hu
0+2
h
2u
0 0+43
h
3u
00 0+23
h
4u
000 0+ 415
h
5u
(4) 0+
この式は厳密なものである.他方 区間x
0x
2]
のSimpson 1/3
公式をTaylor
展開すれば次式が得られる.1
3
h
(
u
0+4
u
1+
u
2) = 2
hu
0+2
h
2u
0 0+ 43
h
3u
00 0+23
h
4u
000 0+ 518
h
5u
(4) 0+
これら2つの式を比較すれば Zx
2x
0u
(
x
)
dx
= 13
h
(
u
0+4
u
1+
u
2)
;1
90
h
5u
(4) この式の最後の項は1つの区間のSimpson 1/3
公式の打切り誤差である.全区間にわたるSimpson 1/3
公 式の打切り誤差はこの誤差に区間の数N
= (
b
;a
)
=
2
h
をかけたもので次のようになる.e
t
=
;b
;a
180
h
4u
(4)Simpson 1/3
公式は4
次精度で,その打切り誤差はO(
h
4)
である. 次表はNewton-Cotes
求積法の打切り誤差をまとめて示したものである.n
1
2
3
4
5
;e
t
b
;a
12
h
2u
00b
;a
180
h
4u
(4)b
;a
80
h
4u
(4)2(
b
;a
)
945
h
6u
(6)55(
b
;a
)
12096
h
6u
(6)Taylor
展開を基にしたこのような議論は,一般に 与えられたデータが十分滑らかでTaylor
級数が収束する ことを前提にしている2 .上の表は次数n
が高く偶数のものが優れていることを示している.しかしながら これは あくまで与えられたデータが十分滑らかな場合のことで,与えられたデータが不連続性を持つ場合 ゆらぎを含む場合には,高次多項式は大きく波打つ虞があり,またn
が偶数のNewton-Cotes
求積法は係数A
i
の変化が大きいので不連続性やゆらぎに敏感で大きい誤差をまねく虞がある.与えられたデータが十分 滑らかでない場合には,上表の形式的精度とは反対に,実質的精度は低次でn
奇数のものの方が良いこと になる. 問 滑らかな周期関数u
(
x
)
の1
周期にわたる積分をNewton-Cotes
求積法で求めよ.1
周期を偶数N
に等分割しSimpson 1/3
公式を用いれば次式が得られる. Zx
Nx
0u
(
x
)
dx
= 13
h
(2
u
0+4
u
1+2
u
2+4
u
3+2
u
4+
+2
u
N
;2+4
u
N
;1)
この式では偶数番目の点でSimpson 1/3
公式を継ぎ 合わせているが,周期関数に対しては奇数番目の点で 継ぎ 合わせることも可能で,その式は次のようになる. Zx
Nx
0u
(
x
)
dx
= 13
h
(2
u
1+4
u
2+2
u
3+4
u
4+2
u
5+
+2
u
N
;1+4
u
N
)
これら2つの式を平均すれば次式が得られる. Zx
Nx
0u
(
x
)
dx
=
h
(
u
0+
u
1+
u
2+
u
3+
+
u
N
;1)
これは台形公式のものと同じである.周期関数の1
周期にわたる積分では,n
=
n
の高次の求積法を用い る式は継ぎ 合わせる点を変えればn
個得られ,それらを平均すれば最も高精度かつ妥当な積分の式が得ら れると考えられる.しかしこのようにして得られた式は,実は台形公式のものと全く同じになる.周期関数 の1
周期にわたる積分では,最も簡単な台形公式を用いることによって最良の結果が得られる.6.1.3 Gauss-Legendre
求積法
区間x
0x
1]
における台形公式では2つのデータu
0とu
1を必要としたが,1つのデータu
(
x
1=
2)
に区間 の幅h
をかけても同程度の結果が得られる.また区間x
0x
2]
におけるSimpson 1/3
公式では3つのデー タu
0u
1u
2を必要としたが ,2つのデータでも選ばれた点のものを用いれば 更に良い結果が得られる.Gauss-Legendre
求積法ないしはGauss
積分と呼ばれる方法は,n
+ 1
次Legendre
多項式のn
+ 1
個の零点のデータを用いることにより,
2
n
+1
次多項式相当の高精度の結果を得る方法である.この方法は,少ない計算量で高精度の結果が得られるので,数多くの数値積分を行わなければならない有限要素法で多用され ている.またこの方法は1つのデータを得るのに膨大な計算を要する場合にも適している.
2
滑らか
(smooth)
とは解析的すなわち関数自身とその無限階までの微分がすべて連続であること,十分滑らか(suciently smooth)
とは必要な階数までの微分が連続であることをいうが,離散的データに対してはあいまいに使われる.Legendre
多項式の零点の値をそのまま用いられるように,積分区間を;1
1]
に取る.区間a b
]
の積分 は,予め変数変換~
x
=
a
+
2 +
b
b
;a
2
x
を行い,区間;1
1]
の積分に直される. Zb
a
u
~
(~
x
)
d
x
~
=
b
;a
2
Z 1 ;1u
(
x
)
dx
前述のようにn
+1
個のデータu
(
x
i
)
(
i
= 0
1
::: n
)
を通るn
次多項式は一意的に決まる.またこれ らのデータを通る高高2
n
+1
次多項式p
2n
+1(
x
)
は一般に次のように表すことができる.p
2n
+1(
x
) =
p
n
(
x
) +
a
(
x
;x
0)(
x
;x
1)
(
x
;x
n
)
q
n
(
x
)
(6.5)
ただしa
は任意定数,q
n
(
x
)
は高高n
次の多項式である.この式を区間;1
1]
で積分すれば 次式が得ら れる. Z 1 ;1p
2n
+1(
x
)
dx
=
Z 1 ;1p
n
(
x
)
dx
+
Z 1 ;1a
(
x
;x
0)(
x
;x
1)
(
x
;x
n
)
q
n
(
x
)
dx
(6.6)
ここでx
0x
1::: x
n
をn
+1
次のLegendre
多項式P
n
+1(
x
)
の零点に取り,またa
をa
(
x
;x
0)(
x
;x
1)
(
x
;x
n
) =
P
n
+1(
x
)
になるように置く.このとき式(6.6)
の右辺第1
項は,式(6.4)
で書換え,更に式(6.5)
から得られる関係p
n
(
x
k
) =
p
2n
+1(
x
k
)
(
k
= 0
1
::: n
)
を用いれば次のようになる. Z 1 ;1p
n
(
x
)
dx
=
Xn
i
=0A
i
p
2n
+1(
x
i
)
また式(6.6)
の右辺第2
項は,Legendre
多項式に関する公式 Z 1 ;1x
r
P
m
(
x
)
dx
= 0
(
r
= 0
1
::: m
;1)
を用いればゼロになる.これより次のGauss-Legendre
求積法の式が導かれる. Z 1 ;1p
2n
+1(
x
)
dx
=
n
Xi
=0A
i
p
2n
+1(
x
i
)
(6.7)
ただしx
i
はn
+1
次Legendre
多項式の零点,またA
i
は式(6.3)
を満足するように決定された係数で,x
i
とA
i
の値は次表のようになる.n
x
i
A
i
0
0
2.0
1
.5773502
1.0
2
0
.7745966
.8888888 .5555555
3
.3399810
.8611363
.6521452 .3478548
4
0
.5384693
.9061798 .5688888 .4786288 .2369268
5
.2386191
.6612093
.9324695 .4679140 .3607616 .1713244
Gauss-Legendre
求積法による区間a b
]
の積分の打切り誤差は次のように見積もられる.e
t
= (
b
;a
)
2n
+32
n
+ 3
(
n
+ 1)!
(
n
+ 2)(
n
+ 3)
(2
n
+ 2)
2u
(2n
+2)(2
n
+ 2)!
(6.8)
問 次の積分の値を上述の求積法で計算し精度を比較せよ.
I
=
Z 2 1dx
x
2= 0
:
5
ここには3
個,5
個,7
個のデータを用いるSimpson 1/3
公式,4
個のデータを用いるSimpson 3/8
公 式,3
個のデータを用いるn
= 2
のGauss-Legendre
求積法などによる積分の結果を示す. 求 積 法 データ数 積分値 打切り誤差trapezoidal (n=1)
7
.50115
+
:
00115
Simpson 1/3 (n=2)
3
.50463
+
:
00463
5
.50042
+
:
00042
7
.50009
+
:
00009
Simpson 3/8 (n=3)
4
.50219
+
:
00219
7
.49695
;:
00305
Newton-Cotes (n=4)
5
.50014
+
:
00014
Newton-Cotes (n=6)
7
.49556
;:
00444
Gauss-Legendre (n=2)
3
.49988
;:
00012
Gauss-Legendre (n=3)
4
.49999
;:
00001
Gauss-Legendre
法による積分は次のように計算される.I
= 12
Z 1 ;1dx
(1
:
5+
:
5
x
)
2= 2
:
55555
(3
:
;:
77460)
2+
:
88888
3
:
2+
:
55555
(3
:
+
:
77460)
2=
:
49988
この問題の被積分関数は滑らかであるがx
の減少とともに加速度的に値が増加する.Simpson 3/8
公式のデー タ数7
やNewton-Cotes
法の(n=6)
はこれに追従できず誤差が大きくなるものと考えられる.Gauss-Legendre
法は一般に言われているように確かに少ないデータで高精度の結果が得られている. 6.2各種補間式に基づく数値積分
前2章には,離散的に与えられたデータu
i
=
u
(
x
i
)
を近似する関数u
(
x
)
を求める方法について述べた. このu
(
x
)
は一般に積分可能で,これより各種の数値積分の式が導かれる.ここにはLagrange
補間多項式, 各種のスプライン,または指数関数を用いた補間式に基づく数値積分について述べる.6.2.1 Lagrange
補間多項式に基づく数値積分
第1
節に述べた3つの数値積分は,いずれもLagrange
補間多項式の全区間にわたる積分と等価なもので ある.3
次のLagrange
補間多項式は,コンピュータ以前の時代に数表作りに用いられたもので,ある条件下では高い精度を示し特にその中央の区間ではそうである.
3
次Lagrange
補間多項式は次のように書かれる.u
(
x
) =
3 Xk
=0C
3k
(
)
u
i
;1+k
(6.9)
C
3 0(
) =
;(
h
1 ;)(
h
1+
h
2 ;)
h
0(
h
0+
h
1)(
h
0+
h
1+
h
2)
C
3 1(
) = (
h
0+
)(
h
1 ;)(
h
1+
h
2 ;)
h
0h
1(
h
1+
h
2)
C
3 2(
) = (
h
0+
)
(
h
1+
h
2 ;)
(
h
0+
h
1)
h
1h
2C
3 3(
) =
;(
h
0+
)
(
h
1 ;)
(
h
0+
h
1+
h
2)(
h
1+
h
2)
h
2 ただし=
x
;x
i
h
0=
x
i
;x
i
;1h
1=
x
i
+1 ;x
i
h
2=
x
i
+2 ;x
i
+1である.この式を直接積分しても良い が,ここでは次のように1
次補間とそれを3
次にする補正項の和で表した式を積分することにする.u
(
x
) = (1
;)
u
i
+
u
i
+1 ;(1
;)(1+
h
2 ;)
h
0(1+
h
0)(1+
h
0+
h
2)
u
i
;1+
(1
;)(1
;h
0+
h
2 ;)
h
0(1+
h
2)
u
i
+
(1
;)(
h
0 ;h
2+
)
h
2(1+
h
0)
u
i
+1 ;(1
;)(
h
0+
)
h
2(1+
h
2)(1+
h
0+
h
2)
u
i
+2 ただし=
=h
1h
0=
h
0=h
1h
2=
h
2=h
1である.この式を中央の区間x
i
x
i
+1]
に対して積分すれば次 の数値積分の式が得られる. Zx
i+1x
iu
(
x
)
dx
= 12
h
1(
u
i
+
u
i
+1) + 112
h
1 h ;1+2
h
2h
0(1+
h
0)(1+
h
0+
h
2)
u
i
;1+ 1
;2
h
0+2
h
2h
0(1+
h
2)
u
i
+ 1+2
h
0 ;2
h
2h
2(1+
h
0)
u
i
+1 ;1+2
h
0h
2(1+
h
2)(1+
h
0+
h
2)
u
i
+2 i(6.10a)
同様に,端の区間x
0x
1]
に対して積分すれば次式が得られる. Zx
1x
0u
(
x
)
dx
= 12
h
0(
u
0+
u
1) + 112
h
0 h ;3+4
h
1+2
h
2(1+
h
1)(1+
h
1+
h
2)
u
0em
+ 1+4
h
1+2
h
2h
1(
h
1+
h
2)
u
1 ;1+2
h
1+2
h
2h
1h
2(1+
h
1)
u
2+
1+2
h
1h
2(
h
1+
h
2)(1+
h
1+
h
2)
u
3 i(6.10b)
ただしこの式では=
=h
0h
1=
h
1=h
0h
2=
h
2=h
0である.特に等間隔h
0=
h
1=
h
2=
h
の場合には これらの式は次のように簡単になる. Zx
i+1x
iu
(
x
)
dx
=
24(
h
;u
i
;1+13
u
i
+13
u
i
+1 ;u
i
+2)
(6.11a)
Zx
1x
0u
(
x
)
dx
=
24(9
h
u
0+19
u
1 ;5
u
2+
u
3)
(6.11b)
また等間隔の場合の全体の数値積分の式は次のようになる. Zx
Nx
0u
(
x
)
dx
=
h
n8
24
u
0+31
24
u
1+20
24
u
2+25
24
u
3+
u
4+
u
5+
+
u
N
;4+25
24
u
N
;3+ 20
24
u
N
;2+ 31
24
u
N
;1+ 824
u
N
o(6.11c)
この数値積分の式は中間部分は台形公式のものになり,また両端のところも台形公式に近く係数が大きく変 化しないので,データに含まれるゆらぎの影響は比較的小さい.上記の不等間隔の式は係数があまり簡単 とは言えないが,ゆらぎの影響については同様のことが言える.6.2.2
スプラインに基づく数値積分
スプライン法については4.3節に詳しい説明がある.区間x
i
x
i
+1]
の3
次スプラインの式は3
次多項式S
(
x
) =
a
0(1
;)
3+
a
1 3+
a
2(1
;)+
a
3(6.12)
の未定係数a
0a
1a
2a
3を区間の接点の条件S
(
x
i
)
S
(
x
i
+1)
S
00(
x
i
)
S
00(
x
i
+1)
から決定することによって 求められ,次のように書くことができる.S
(
x
) =
x
2i
6
(1
;)
3u
00i
+
3u
00i
+1+(1
;)
u
i
;x
2i
6
u
00i
+
u
i
+1 ;x
2i
6
u
00i
+1(6.13)
ただしx
i
=
x
i
+1 ;x
i
= (
x
;x
i
)
=x
i
である.3
次スプラインは与えられたデータu
i
を通る区分的3
次式で,接点上で2
階微分まで連続である.上式は容易に積分することができ,次の区間x
i
x
i
+1]
の数値 積分の式が得られる. Zx
i+1x
iu
(
x
)
dx
+x
Z 1 0S
(
)
d
=
x
3i
24 (
u
00i
+
u
00i
+1)+
x
i
2
nu
i
;x
2i
6
u
00i
+
u
i
+1 ;x
2i
6
u
00i
+1 o= 12
x
i
(
u
i
+
u
i
+1)
;x
3i
24 (
u
00i
+
u
00i
+1)
(6.14)
u
00i
の求め方については4.3.1項参照.この式の右辺第1
項は台形則,第2
項はその補正項で,また打ち切 り誤差はテイラー展開をもとに見積もれば ,x
5i
u
(4)i
=
5!
となる. 指数スプラインは,スプライン曲線が不自然に波打つ場合に用いられるもので,その式は1
次式に単調 な双曲線関数を重ねたS
(
x
) =
a
0sinh
;(1
;)
x
i
p
i
+
a
1sinh(
x
i
p
i
)+
a
2(1
;)+
a
3 から作られ,次のように書くことができる.u
(
x
) =
p
21
i
sinh
x
i
p
i
sinh
;(1
;)
x
i
p
i
u
00i
+sinh(
x
i
p
i
)
u
00i
+1+ (1
;)
u
i
;1
p
2i
u
00i
+
u
i
+1 ;1
p
2i
u
00i
+1(6.15)
ただしp
i
は,スプライン曲線を梁に譬えたときに梁にかかる張力に相当するもので,各区間x
i
ごとの区 分的定数値である.この式は容易に積分することができ,当該区間の数値積分の式は次のようになる. Zx
i+1x
iu
(
x
)
dx
+1
2
x
i
(
u
i
+
u
i
+1)+
cosh(
x
i
p
i
)
;1
p
3i
sinh(
x
i
p
i
)
;x
i
2
p
2i
(
u
00i
+
u
00i
+1)
(6.16)
u
00i
の求め方については4.3.2項参照.なお指数スプラインの打切り誤差を見積もることは無意味である. それはテイラー展開を基に評価すれば ,波打つスプラインを積分したものが高精度で,指数スプラインを 積分したものはスプラインとの差の面積に相当する誤差を含むことになるからである.スプラインに較べ 波打ちを抑えた指数スプラインがより妥当なものとする立場とは相容れない. 実験データのようにばらつきのある多くのデータを区分的3
次式で近似する最小2乗スプラインは,3
次 スプラインと同じ式(6.12)
から出発し ,次式で表される.u
(
x
) = 16
x
2i
u
00i
(1
;)
3+16
x
2i
u
00i
+1 3+
a
2(1
;)+
a
3(6.17)
ただし
a
2a
3はこの式が区間x
i
x
i
+1]
で与えられたデータを平均的に満足するよう最小2乗法によって求 められる.a
2a
3u
00j
の求め方にについては4.4.1参照.この式は容易に積分することができ,当該区間の 数値積分の式は次のようになる. Zx
i+1x
iu
(
x
)
dx
+x
3i
24 (
u
00i
+
u
00i
+1)+12
x
i
(
a
2+
a
3)
(6.18)
この式の誤差も評価し難い.6.2.3
指数関数を用いた補間式に基づく数値積分
5.1.1項に述べた指数関数を用いた補間式は,十分安定な補間法として知られ,境界に向かって急激に変 化する関数もご く自然に近似できる.この補間式は次のように表される.u
(
x
)
+(1
;)
u
i
+
u
i
+1+ 1
R
;1
R
;1
R
;1
; 2u
i
+1(6.19)
ただし= (
x
;x
i
)
=h u
i
+1=
2=
u
i
+1 ;u
i
2
u
i
=
u
i
+1=
2 ;u
i
;1=
2R
=
2u
i
+1=
2u
i
である.この 式を区間x
i
x
i
+1]
で積分すれば次式が得られる. Zx
i+1x
iu
(
x
)
dx
+h
; ; 22
u
i
+
22
u
i
+1+ 1
R
;1
R
=
log
R
;R
;1
; 22
2u
i
+1 1 0=
h
2
hu
i
+
u
i
+1+ 1
R
;1
2
log
R
;R
+1
R
;1
2u
i
+1 i(6.20a)
また区間x
i
;1x
i
]
またはx
i
+1x
i
+2]
で積分すれば次式が得られる. Zx
ix
i;1u
(
x
)
dx
+h
2
h3
u
i
;u
i
+1+ 1
R
;1
2
R
log
R
+
R
;3
R
;1
2u
i
+1 i(6.20b)
Zx
i+2x
i+1u
(
x
)
dx
+h
2
h ;u
i
+3
u
i
+1+ 1
R
;1
2
R
log
R
;3
R
;1
R
;1
2u
i
+1 i(6.20c)
付録
Romberg
法
この数値積分法はほとんど 使われていないが参考までに簡単に説明する.この方法は連続関数u
(
x
)
の定 積分を逐次近似計算によって所定の精度まで求めるものである.その計算手順は次のようになる. 第1
近似計算:第1
近似値T
(1) 1 は,積分区間を単一区間b
;a
=
h
1として台形公式から求められる.T
(1) 1= 12
h
1 fu
(
x
0)+
u
(
x
0+
h
1)
g=
I
+ 112(
b
;a
)
h
2 1u
00(
x
0) + O(
h
3)
(6.21)
ただしI
は積分の厳密な値,残りの項は打切り誤差で,この近似値の精度はO(
h
2)
である. 第2
近似計算:第2
近似値T
(2) 1 は,積分区間を2
等分し(
計算点の間隔h
2= (
b
;a
)
=
2)
同様に台形公式か ら求められる.T
(2) 1= 12
h
2 fu
(
x
0)+2
u
(
x
0+
h
2)+
u
(
x
0+2
h
2)
g=
I
+ 112(
b
;a
)
h
2 2u
00(
x
0) + O(
h
3)
(6.22)
T
(1) 1T
(2) 1 から打切り誤差の大きさは計算点の間隔の2
乗h
2 によることが分かる.今この誤差の大きさがh
2 に比例するものとし ,1
次外挿によってh
2 !0
に相当するより高い精度の積分値を求めればT
(2) 2= 13(4
T
(2) 1 ;T
(1) 1) =
I
+ O(
h
3)
(6.23)
この積分値はまた,積分領域にわたって
u
00 がほぼ一様になるものとして,式(6.21)
と(6.22)
からO(
h
2)
の打切り誤差の項を消去したものでもある. 第3
近似計算:第3
近似値T
(3) 1 は,積分区間を2
2= 4
等分し(
計算点の間隔h
3= (
b
;a
)
=
4 =
h
2=
2)
,台形 公式から求められる.T
(3) 1= 12
h
3 fu
(
x
0)+2
u
(
x
0+
h
3)+2
u
(
x
0+2
h
3)+2
u
(
x
0+3
h
3)+
u
(
x
0+4
h
3)
g(6.24)
=
I
+ 112(
b
;a
)
h
2 3u
00(
x
0) + O(
h
3)
またT
(2) 1T
(3) 1 から1
次外挿によってh
2 !0
に相当するより高い精度の積分値T
(3) 2 を求めればT
(3) 2= 13(4
T
(3) 1 ;T
(2) 1) =
I
+ O(
h
3)
(6.25)
更にT
(2) 2T
(3) 2 から1
次外挿によってh
3 !0
に相当する更に高い精度の積分値T
(3) 3 を求めればT
(3) 3= 2
3T
(3) 2 ;T
(2) 22
3 ;1
=
I
+ O(
h
4)
(6.26)
第k
近似計算:第k
近似値T
(k
) 1 は,積分区間を2
k
;1 等分し(
計算点の間隔h
k
= (
b
;a
)
=
2
k
;1=
h
k
;1=
2)
, 台形公式から求められる.T
(k
) 1= 12
h
k
fu
(
x
0)+2
u
(
x
0+
h
k
)+2
u
(
x
0+2
h
k
)+
+
u
(
x
0+2
k
;1h
k
)
g(6.27)
=
I
+ 112(
b
;a
)
h
2k
u
00(
x
0) + O(
h
3)
またT
(k
;1) 1T
(k
) 1 から1
次外挿によってh
2 !0
に相当するより高い精度の積分値T
(k
) 2 を求めればT
(k
) 2= 2
2T
(k
) 1 ;T
(k
;1) 12
2 ;1
=
I
+ O(
h
3)
(6.28)
更にT
(k
;1) 2T
(k
) 2 から1
次外挿によってh
3 !0
に相当する更に高い精度の積分値T
(k
) 3 を求め,同様の1
次外挿を次々に行い積分値T
(k
)k
までを求める.T
(k
)m
= 2
m
T
(k
)m
;1 ;T
(k
;1)m
;12
m
;1
=
I
+ O(
h
m
+1)
(2
< m
k
)
(6.29)
以上 計算した積分の近似値を表に纏めれば次のようになる. 近 似m
=1
2
3
k
;1
k
1
T
(1) 12
T
(2) 1T
(2) 23
T
(3) 1T
(3) 2T
(3) 3...
...
...
...
k
;1
T
(k
;1) 1T
(k
;1) 2T
(k
;1) 3T
(k
;1)k
;1k
T
(k
) 1T
(k
) 2T
(k
) 3T
(k
)k
;1T
(k
)k
この計算はjT
(k
)k
;T
(k
)k
;1 j<
のときに収束したものと判定され ,T
(k
)k
が求める積分値になる.ただしは 十分小さい正数である.
6.3
差分法と数値微分
差分式
(nite-dierence formulas)
はTaylor
級数または多項式をもとに作ることができるが,ここには後者について述べる.一般に
1
次式からは1
階の差分式を1
次精度で作ることができる.2
次式からは1
階 の差分式を2
次精度で,2
階の差分式を1
次精度で作ることができる.またn
次多項式からはk
階の差分 式をn
;k
+1
次精度で作ることができる.ここにはまず不等間隔計算点に対するLagrange
補間多項式を不 等間隔計算点に対して定義された差分を導入して簡潔に表現し ,これから任意点における数値微分の式を 導く.それから計算点における数値微分の式を導く.最後に等間隔計算点に対する計算点における数値微分 の式すなわち周知の差分式をまとめて示す.以下には,1
次のものから順に4
次のものまで説明する.6.3.1 1
次式に基づく数値微分
1
次補間公式はu
(
x
) = (1
;)
u
i
+
u
i
+1+ 12
(
;1)
h
2u
00i
+
のようになる.ただしh
=
x
i
+1 ;x
i
= (
x
;x
i
)
=h
,最後の項は打切り誤差である.この式を微分すればd=dx
= (1
=h
)
d=d
であるから次式が得られる.u
0(
x
) = 1
h
(
;u
i
+
u
i
+1) +
; ;1
2
hu
00i
+
(6.30)
この式の誤差は一般にO(
h
)
であるが= 1
=
2
の時にはO(
h
2)
になる.なお2
階微分は0
になり精度不足 で無意味である.= 0
の点x
i
,= 1
の点x
i
+1ではu
0i
=
u
0i
+1= 1
hu
i
+1=
2+ O(
h
)
u
0i
= 1
hu
i
;1=
2+ O(
h
)
(6.31)
ただし後者の式ではh
=
x
i
;x
i
;1である.6.3.2 2
次式に基づく数値微分
2
次補間公式は1
次補間とそれを2
次にする補正項の和で表せばu
(
x
) =
u
i
+
u
ei
+1=
2+ 12!
(
;1)
e 2u
i
+ 13!(
+
m
;)
(
;1)
h
3u
000i
+
のようになる.不等間隔の場合の1
階と2
階の差分を次のように定義する. eu
i
;1=
2=
u
i
;u
i
;1m
; eu
i
+1=
2=
u
i
+1 ;u
i
eu
i
+3=
2=
u
i
+2 ;u
i
+1m
+ e 2u
i
= 2
m
;+1(
eu
i
+1=
2 ; eu
i
;1=
2)
e 2u
i
+1= 2
1+
m
+(
eu
i
+3=
2 ; eu
i
+1=
2)
ただしh
=
x
i
+1=
2m
;=
x
i
;1=
2=h m
+=
x
i
+3=
2=h
である.上式を微分すれば次式が得られる.u
0(
x
) = 1
h
n eu
i
+1=
2+ 12!(2
;1)
e 2u
i
o+ 13!
(
+
m
;)(2
;1)+
(
;1)
h
2u
000i
+
(6.32a)
u
00(
x
) = 1
h
2 e 2u
i
+ 13(3
+
m
; ;1)
hu
000i
+
(6.32b)
これらの式の誤差は
1
階微分ではO(
h
2)
,2
階微分ではO(
h
)
である.これより= 0
の中心差分の式は次 のようになる.u
0i
= 1
h
eu
i
+1=
2 ;1
2
e 2u
i
+ O(
h
2)
(6.33a)
u
00i
= 1
h
2 e 2u
i
+ O(
h
)
(6.33b)
また補正項のe 2u
i
の代わりにe 2u
i
+1を用いれば次の片側差分の式を導くことができる.u
0i
= 1
h
eu
i
+1=
2 ;1
2
e 2u
i
+1+ O(
h
2)
(6.33c)
u
00i
= 1
h
2 e 2u
i
+1+ O(
h
)
(6.33d)
i
;1i
i
+1i
+2 -m
; -1 -m
+-6.3.3 3
次式に基づく数値微分
3
次補間公式は,上の2
次補間式とそれを3
次にする補正項の和で表せばu
(
x
) =
u
i
+
u
ei
+1=
2+12
(
;1)
n e 2u
i
+13(
+
m
;)
e 3u
i
+1=
2 o+ 14!(
+
m
;)
(
;1)(
;1
;m
+)
h
4u
(4)i
+
のようになる.ただし3
階差分は次のように定義される. e 3u
i
+1=
2=
3
m
;+1+
m
+(
e 2u
i
+1 ; e 2u
i
)
ここで補正項を簡単に求める方法について説明する.補正項は補間式を3
次にするためにの3
次式で,3
階微分したときに2
次補間の部分はゼロになるので,補正項は@
3u=@x
3 を近似するものでなければなら ない.また=
;m
;0
1
でゼロでなければならない.したがってa
1
2
(
;1)(
+
m
;)
e 3u
i
+1=
2 のように置かれる.ただしa
は未定係数で,u
(
(1+
m
+ )h
) =
u
i
+2なる条件から,すなわちu
i
+2の係数が1
になるように決定される.a
1
2(1+
m
+)
m
+(
m
;+1+
m
+)
3
m
;+1+
m
+2
1+
m
+1
m
+= 1
これよりa
= 1
=
3
.このようにして導かれた式が3
次のLagrange
補間多項式そのものであることは,4
点u
i
;1u
i
u
i
+1u
i
+2を通る3
次多項式の唯一性から明らかである.次に打切り誤差は,点x
i
;1x
i
x
i
+1x
i
+2 でゼロになるの4
次式であるから因数(
+
m
;)
(
;1)(
;1
;m
+)
を持つ.またその係数は,3
次補間 式の両辺にTaylor
展開を代入し ,h
4u
(4)i
の項の4 の係数を比較すれば ,左辺は(1
=
4!)
h
4u
(4)i
となり右辺 の補間公式に関する部分には該当項がなく,打切り誤差の4 の係数がこれに釣合うべきであるから,左辺 と同じものになる.これから出てくる他の式の補正項と打切り誤差も同様にして求めることができる.上の