広島工業大学紀要研究編
第 44 巻（2010）pp.269-275

論文

複素関数の積分に対する数値積分の試み
殿塚勲*（平成21年10月27日受理）

Application of Numerical method to Complex integration
Isao TONOZUKA(Received Oct. 27, 2009)

Abstract
A method of numerical integration is, as a general rule, applied to a real integral, namely,integration along a real axis. In this note, a trial of application of numerical integration tocomplex integral is made. In several cases, we have made an error analysis of trapezoidal ruleand Simpson’s rule. In particular, in case of integral of complex function taken along a circle,
it is shown that the error is minimized if the test points are selected at even intervals.
Key Words: numerical integral, complex intagral, holomorphic function, trapezoidal rule,
Simpson’s rule, error estimation

１

積分

はじめに

f dz
∫ （z）

I＝

通常，数値積分は実数上の積分に対し行う近似計算法でB（１）A（ Ｃ）ある。ここではそれを複素平面上の積分の値を求めるためにおいて，曲線 C 上に点（z0，z1，･･･，zN）をとり，各区間に，数値積分法を適用することを考える。複素積分には複毎の積分値を Ik とおくと
N−1

素平面上 A 点から B 点までの経路を与えて線積分を求め

Σ I ここで I ＝∫る場合，すなわち開いた経路上での積分値を求める問題と，閉じた経路を与えて線積分を求める場合がある。後者は実k

ここでここでは複素積分に適用した数値積分の誤差を議論し，kΔz ＝zk+1−zk

（３）（z）
f dz＝（ （zf k）＋ （zf k+1））Δz/2−Δz3f（z" k）＋O（h4）
12（４）となるが，この誤差評価は実数関数の積分の場合と同様でまず複素平面上の A 点から B 点までの曲線 C に沿った＊＊＊zk+1∫z

I k＝効であることを示す。

台形則（２）により近似する。このとき h ＝￨Δz￨ とおくといくつかの例題において複素積分を数値積分することが有2.1（z）
f dz

～
I k＝
（ （zf k）＋ （zf k+1））Δz/2

応用例が多い。

数値積分の誤差zkである。台形則ではこれをの定理や留数の定理に関連して閉曲線の場合の方が重要な

２kk= 0数上の積分では現れなかった問題であり，しかも Cauchy

また応用例をも述べるが，複素関数は正則関数のみを扱い，zk+1I＝ある。

広島工業大学情報学部知的情報システム学科― 269 ―

殿塚

2.2

中点則

勲も同様であり，また実数積分の場合と同じである。

Ik に対する近似として～Ik＝（fzk＋zk+1）Δz2（５）2.2.2 『例２』∫ e dz＝e −1 ただし A＝0，B＝2＋2i（11）I＝z +zが中点則である。複素積分では中点則では k 2 k+1 におけるBzBA（ Ｃ）

関数値を用いるので一般には積分路上ではない点での関数

例題１，例題２を通して中点則と台形則では n＝2 は全値を用いることになり，本来の数値積分の公式としては好く同じであるが，（10）式 K の値は台形則は中点則に比較ましくない。しかしながら点 zk を密にとればそのようなして２倍である。これは（４）式と（６）式にも現れている。

違いは無視できることが期待される。
zk+1∫zIk＝k＋（z）
f dz＝f（2.3zk＋zk+1）Δz2Δz3f（z" k）＋O（h4）
24

Simpson 則

Simpson 則は関数を２次曲線で近似するのでその近似（６）ユニットは２区間分となる。
I＝から分かるように中点則の精度は台形則より高くなり，こ

ここでBA
（ Ｃ）

zk+2∫zI k＝k（z）
f dz

（12）

ただしはB2A

A＝0，B＝2＋2i～I k＝（ （zf k）＋4 （zf k+1）＋ （zf k+2））（zk+2−zk）/6 （13）

（７）

［2］
ここで積分路は曲線と直線の２種類を選ぶこととする。

積分路１k

Simpson 則では k，Nは偶数であり，実数の Simpson 則で111−izlog
dz ＝∫ z ＋12i1＋iz

I＝ΣI

k=0,even

れらは次の例に対する数値実験でも確かめられた。
2.2.1 『例１』N −1t2
C1 ：z（t）＝ t ＋ i （0 ＜ t ＜ 2）
2─ ─となるが，複素関数では点は経路 C 上（z0，z1，･･･，zN）に（８）点を選ぶので，このような形にはならず～Ik＝（ （zf k）＋2 （zf k+1））（zk+1−zk）/3

積分路２C2 ：z（t）＝ t ＋ it（0 ＜ t ＜ 2）
（９）─ ─
台形則と中点則の全区間ではΔz を 一定値 Δz＝h とおく

f k+1）＋ （zf k+2））（zk+2－zk+1）/3+（2 （zと誤差は h2 に比例することが期待されるので
E 〜 KhnK，n は定数（10）（14）となる。この公式では関数値は線分上でとっているが，積分路 C が曲線のときは精度は台形則と同じ程度にとどまとおき，パラメータ K，n を最小二乗法で決めると表１のり，誤差は h の２乗に比例する。実数の Simpson 則ではような結果となった。このとき誤差について特徴的なこと

h の４乗に依存する筈であるが，（14）でも積分路 C が直は（h，E）を両対数グラフに描くときれいな直線になる線であれば h の４乗に比例する。

ことである。これは後の例でも示される。その傾き n は（13）の代わりにいずれも２を示していたが，これは積分路 C1 でも C2 で『例１』（積分路１）Kn台形則0.162.0

中点則

0.085

2.0

台形則

0.015

2.0

中点則

0.0084

2.0『例２』（積分路１）

Kn台形則

2.07

2.0

中点則

1.04

2.0

台形則

1.31

2.0

中点則

0.655

2.0

『例１』（積分路２）『例２』（積分路２）

表１

台形則・中点則の誤差～
Ik＝（（zf k）＋4（fzk＋zk+2）
2f k+2））（zk+2－z2k）/6
＋（z（15）を用いると例題（１）（２）でも示されるように誤差は h4あるいはそれ以上の精度となる。但し（15）は関数値 （zf k+1）
z +zは用いず一般には曲線 C 上ではない点 k 2 k+2 の関数値を用いるという欠点をもつ。
実数関数の場合，台形則では誤差は h2 に比例し Simpson
則では h4 に比例するということは，Simpson 則を導くにあたり３点（zk，zk＋1，zk＋2）が一直線上にあるという事実を利用しているのである。なお台形則の（４）と（６）の誤差項を比較すると，（（４）＋2（６））/3 を計算すれば，さらによい精度が得られることが分かるが（Romerg 積分法），― 270 ―

複素関数の積分に対する数値積分の試み【積分法 2.】極座標による計算『例１』（積分路１）

K

nSimpson 則（14）式

0.172.0

一方複素関数論でよく用いられる z から極座標への変Simpson 則（15）式

0.07254.0

数変換

Simpson 則（14）式

0.409

5.03

Simpson 則（15）式

0.409

5.03

『例２』（積分路１）

K

nSimpson 則（14）式

1.4

2.0

Simpson 則（15）式

0.498

3.98

『例１』（積分路２）0.1754.0

Simpson 則（15）式

0.175

4.0

表２（19）∫0 f（z ＋re ）rie dθ（20）を行い
I＝～
I＝iθ0iθN−1

Σf（z ＋re ）rie Δθiθk0iθk（21）

k= 0

ここで

impson 則の誤差

Δθ＝

これは Simpson 則（15）と同じものである。
複素積分に対する数値積分では，積分路が曲線（曲がっN−1θk ＝kΔθ（22）

Σ

N−1Σ

rieiθkΔθ＝iΔθ＝2πireiθkk= 0k= 0

いはそれ以上の高次の公式は作っても精度は台形則なみになる。

2πNである。『例３』に（21）を適用すると，ているとき）では Simpson 則のような２次の公式，ある３2π（20）に台形則を適用してみる。

『例２』（積分路２）
Simpson 則（14）式

z＝z0＋reiθ （0 ＜θ＜ 2π）
─ ─（23）となり誤差はなくなる。すなわち通常の極座標変換（19）により，誤差は h2 依存からいきなり０になって閉曲線に沿った積分に対する数値積分しまった。これは偶然のことであろうか。
『例３』は変換（19）を行うと被積分関数は定数と閉じた曲線 C に沿う複素線積分
f dz∮（z）

I＝（16）

Cに対する数値積分を考えよう。ここで C は円に限ることにする。これを数値積分により近似する場合，円に沿ったなる特別な例であったが，一般にはθの周期 2πの周期関数である。よって Fourier 展開∞
f（z0＋reiθ）rieiθ≡F（θ）＝
cjeijθ

Σ（24）

j＝ −∞

積分であれば上端も下端もない。数値積分の台形則ではすが可能である。区間［0，2π）を N 等分して台形則べての点での重みが同じであるのに対し，Simpson 則や更を適用し，その結果を上の Fourier 係数で表すとに高次の公式では点により重みが異なるのは，積分の上端・下端からの効果を補償するためである。よって上端・下端

N−1

ΣF（θ ）Δθ＝I＋c ＋c ＋c ＋c ＋･･･ （25）k−NN－2N2N

k= 0のない円の沿う積分では台形則のみを考える。［1］となるが，I＝c0 であり，その次の項以降は aliasing

円 C 上に等間隔に N 個の点による項であり，これが台形則に対する誤差となる。
すなわち周期関数を一周期にわたって積分するとき，z0，z1，z2･･･ zN－1，ただし zN＝z0

台形則を適用するとその誤差は Fourier 係数をとる。数値積分では（16）を
N−1

z −zf ）＋ （zf））
Σ（ （z2～I＝kk+1k+1k（17）～￨E＝￨c−N＋cN＋･･･￨＝
c−N￨＋￨cN￨（26）

k= 0により表わされる。

により近似する。
2

この近似式は台形則であるから，誤差は基本的に h に

一般に Fourier 係数は関数 F（θ）が C0級であればO（1/N 2）の速さで０に近づき，C1 級であれば O（1/比例する筈である。

N 3）で近づくことが知られる。正則関数では F（θ）
3.0.1 『例３』は何回でも連続微分可能であるから C ∞級であり，こ∮のとき Fourier 係数は任意の p ＞０に対して O（1/N p）

I＝ ｜z｜＝11dz＝2πi 積分は原点を中心とする単位円（18）z【積分法１.】（17）の適用よりも速く０に近づくことが知られている。このようなとき数値積分の誤差（26）は誤差に対し（10）式をあてはめると，K＝2.61，n＝1.97となったが，10－10 程度の精度を得るのにきざみ数
N＝106 にする必要があった。
― 271 ―A
E 〜 Bexp（－aN）＝Bexp（－ ）h殿塚

A，B，a は定数

勲（27）

（z）
f ＝（31）に よ り 支 配 さ れ る こ と が 多 い。 こ の形は台形則やの上半平面の極 z＝i を囲む閉曲線

Simpson 則よりも，N とともにはるかに速く０になる。

￨z－i￨＝１に沿った複素積分を極座標変換して行う。

『例３』の場合には極座標変換により被積分関数が通常は極 z＝i における留数が求めるわけであるが，定数なので誤差は０となるが，上の一般論は以下の例

ここでは直接に数値複素数値積分による。

題で利用する。

４1
z2＋1

∮z−i｜

実積分への応用｜＝11dz
z2＋1（32）

誤差は大体 h2 に比例するので（17）式を適用したと4.0.2 『例４』き（10）式をあてはめると，K＝1.32，n＝1.98 となり，∫−∞∞

I＝1dx＝πx2＋110－10 の精度を得るのにきざみ数 N＝106 にする必要（28）があった。これはかなり多いきざみ数である。このと【積分法 1.】実数の範囲での積分

きの誤差ときざみ幅（E vs h）を両対数グラフに描いたのが《図１》である。

このような区間（－∞，∞）にわたる積分ではきざみ幅を一定にして台形則を適用するのが最もよい精度を【積分法 3.】（21）の適用［1］得る ことが知られる。そこで精度εでこの数値積分（21）を適用して誤差に（27）を当てはめると，B＝9.33，するために（28）を有限区間［－R，R］の積分に置き換

A＝4.42 が得られた。ここできざみの数 n＝36 で精度え，Rの値を評価する。

10－10 となり，【積分法 2.】に比較して（21）の効率がはるかに良いことが分かる（《図２》は片対数）。また【積11dxdx＝2＋∫∫ ）x ＋1∫ x ＋1−∞（∞∞−R2R2R

分法 1.】でおこなった２重指数変換による方法と比較しても効率よく，かつ精度よく計算ができた。

∫ x dx＝ R2 ＝ε＜2∞1R

2

積分を R＝2/εで打ち切ればεの精度で得られるが，もしε＝10−104.0.3 『例５』10とすると R＝2・10 となる。これでは1πdx＝＝2.22144146909183 （33）∫√2−∞ x ＋1∞

I＝

コンピュータの利用を前提とした数値積分といえども4【積分法 1.】２重指数関数変換（29）を用いる方法

多過ぎる分点数である。
そこで関数の減衰を速めるために変換

これに２重指数関数変換（29）を適用しππ∞ 2 cosh（ 2 sinh（u））cosh（u）
du
I＝
4 π−∞sinh（（u））＋12 sinh

x ＝ sinh（u）∫［3］が考えられるが，さらに高橋・森 の提唱した２重指（34）u＝［－R，R］の有限区間で積分に置き換えると，10－10数関数変換
x＝sinh（πsinh u）
2の精度とすると R＝2.6 となり，きざみ数 n＝75 であっ（29）が積分の分点数を最小化し，かつ精度も最適な変換でた。
【積分法 2.】複素積分の利用［1］あることがよく知られている 。このとき（28）は

∫−∞

I＝∞

π2 cosh udu
πcosh（ 2 sinh u）

1dz∮z ＋1C

4C：￨z－i￨＝1√2（35）π（30）を計算する。ここで C は上半平面の２つの極 exp（i 4 ），3πexp（i 4 ）を含むように選んでいる。となり，ε＝10－10 の精度を得るために u の上限は R（17）の台形則を適用し，誤差に対し（10）式をあてはめ＝3.6 で打ち切ることができる。

ると，K＝0.598，n＝1.91となったが，10－11の精度を実際，きざみの数は 25，Δu＝0.3 で精度 10－11 が得得るのにきざみ数 n＝106 にする必要があった。
（《図られた。

３》）【積分法 2.】複素積分の利用【積分法 3.】（21）の適用

以上は（28）の積分値を実数積分の範囲で精度よく求極座標変換を行い，これに台形則を適用した（21）を用める方法であるが，これに複素積分を利用して求める

い， 誤 差 に（27）を 当 て は め る と，B＝4.16，A＝2.19

ときには関数が 得 ら れ た。
（《 図 ４》）こ こ で き ざ み の 数 70 で 精 度― 272 ―

複素関数の積分に対する数値積分の試み

10－10 となり，（17）の適用に比較して（21）の効率が良したがって C を選びながら I（C）
＝1 のときの I（C）を求
01いことが分かる。

めればそれが方程式の根となる。

しかし『例４』に較べて A の値が小さく，したがって高い精度を得るにはきざみの数も大きくとる必要が5.0.5 『例７』ある。【積分法 1.】の２重指数関数変換公式と同じき（z）
f ＝z5－z4－12z3＋66z2－104z＋80＝0

ざみの数で精度 10－10 が得られた。

（41）

代数方程式（41）の根を求めるために，次の表３のような4.0.4 『例６』

積分路について I（C）と I（C）を計算した。このうち I（C）
010の値は整数であることがあらかじめ分かっている。また方cos2θ7dθ＝2π（4－）∫0 2＋sinθ√3I＝2π＝－0.260449870560705

程式の係数が実数なので，複素根は共役複素数であること（36）【積分法 1.】直接台形則を用いる方法も既知である。
C1，C2，C3 について計算を行うと，I（C）の値が２，４，５0で増えることは￨z￨＝2 の内部に２個，￨z￨＝4 と￨z￨＝2 の（36）の被積分関数は周期２πの周期関数であるから，間に２個の根があることである。また￨z￨＝6

これに直接台形則を適用する。きざみ数 n＝24 で 10の間には１つの根があり，しかもその根は I1（C3）－I（C12）桁の精度が得られた。

＝－5 により計算できる。

【積分法 2.】（17）の適用
変数変換
z＝reiθ

dθ＝

積分路番号

積分路I（C）
0I（C）
1dzizを行い，複素積分∮

I＝ ｜z｜＝1z4＋1dz
22z（z ＋4iz−1）（37）を求める。
誤差に対し（10）式をあてはめると，K＝0.13，n＝2.00となったが，10－10の精度を得るのにきざみ数 2.6×510 にする必要があった。（《図５》）C1￨z￨＝222.0C2￨z￨＝446.0C3￨z￨＝6

5

1.0C4

￨z＋5￨＝1

1－ 5.0C5￨z－1－i￨＝11

1.0＋1.0i

C6￨z－2－2i￨＝112.0＋2.0i

積分路￨z＋5￨＝1 の結果はその確認である。（《図７》）積分路 C5：￨z－1－i￨＝1 の結果より z＝1.0＋1.0i が根であり，その共役複素数 z＝1.0－1.0i も根となる。同様に積分【積分法 3.】（21）の適用路 C6：￨z－2－2i￨＝1 の結果より z＝2.0＋2.0i，z＝2.0－2.0i

誤差に（27）を当てはめると，B＝113，A＝8.34 が得ら－10れた。ここできざみの数 22 で精度 10となり，（17）の適用に比較して（21）の効率がはるかに良いことが分かる。（《図６》）が根となり，５つの根すべてを求めることができた。（《図８》）６

同じ精度を得るために（36）に直接に台形則を適用する
場合とほぼ同じ積分の分点数であった。

５と￨z￨＝4複素関数の積分に対し数値積分を試み，その精度・誤差を調べた。実数関数に対して行われる台形則や Simpson則を複素積分に対しても行ったが，その誤差は曲がった線代数方程式の根への応用
（z）
f ＝０

終わりに分に対しては基本的にきざみ幅を h とすると h2 に比例す（38）ることが分かった。台形則の誤差は h2 に比例するのは当然であるが，Simpson 則でも３点を直線上にとらないとh4 ではなしに h2 に比例する。

を解く問題に関連して
I（C）＝0f（z）'dz
∮ （z）
f12πiC（39）

閉じた曲線では特に円だけを取り上げたので台形則に限るが，このとき極座標に変換するかしないかで大きな違いを考える。 偏角の原理より I（C）の値は閉曲線 C の内部0がでる。極座標に変換せず元のカルテシアン座標の場合はの方程式の根の数である。また円は曲線であり誤差は h2 に比例し，高精度は得られない。

I（C）＝1f（z）'dz
∮z （z）
f12πi

Cの値は閉曲線 C に含まれる根の和である。

（40）

しかし極座標に変換するとについては実数での積分となり通常の実数積分における台形則の最良性が現れるのである。

― 273 ―

殿塚

勲

周回積分に対し，極座標に変換することは通常もよく行ので，複素数を含む数値計算も容易になった。ここであげわれることであり，その応用範囲は広い。ここでは通常はたいくつかの例では Linux 上の C99 コンパイラを用いて留数定理により求めている定積分を複素積分で計算するこ計算を行った。と，また代数方程式の解法への応用を試み満足すべき結果

参考文献を得た。
この方法は代数方程式だけではなく，一般の関数を含ん［1］森正武，数値解析と複素関数論，筑摩書房（1975.7）だ方程式に対しても適用が可能である。特に Newton 法と［2］殿塚勲・河村哲也，理工系の複素関数論，東京大学出比較してよりグローバルな解の探索が可能であることが有利である。

版会（1999.10）［3］数値積分による特殊関数の計算，京大数理解析研究所

なお C 言語も C99 規格［4］においては複素数型も使える

講究録，149（1972），p130－145［4］戸川隼人，ザ・C99，サイエンス社（2006.12）― 274 ―

複素関数の積分に対する数値積分の試み《図１》『例４』積分法２《図２》『例４』積分法３《図３》『例５』積分法２《図４》『例５』積分法３《図５》『例６』積分法２《図６》『例６』積分法３《図７》『例７』積分路１，２，３《図８》『例７』積分路４，５，６― 275 ―