連分数展開
Continued-fraction expansion

名古屋工業大学
先進セラミックス研究センター
井田 隆

名古屋工業大学 環境材料工学科 3 年次授業「マテリアルデザイン」の講義ノートです。

前へ 上へ 次へ


第1部 コンピュータの基礎
Fundamentals about Computer

第4章 数値計算
Numerical calculation

4−2 初等関数と特殊関数
Elementary and special functions

4−2−4 連分数展開
Continued-fraction expansion

変数 x の値が大きいときでも「原理的には級数展開が収束する」ことは多いのですが,収束が遅いと実際の計算は困難です。 計算時間が余計にかかるというだけでなく,計算の誤差が積み重なって,正しい答えが得られなくなる場合もあります。このような場合に連分数展開という方法が用いられることがあります。

たとえば正接関数 tan x は以下のような形式で表すことができます。

tan x =  x
1 − x2
3 − x2
5 − x2
7 − …

x = 1 のとき,

tan 1 = 1.5574077246549…

となる一方で,

1  = 1.5 ,
1 − 1
3
1  = 1.555… ,
1 − 1
3 − 1
5
1  = 1.55737… ,
1 − 1
3 − 1
5 − 1
7

などとなります。このような形式で関数の値を計算する方法を連分数展開と呼びます。

級数展開の形式から連分数展開の形式を導く方法が知られています。この方法はユークリッドの互除法に似ています。級数展開が

y =
a0
+ a1x
+ a2x2
+ …

と表されるとき,以下のように,順々に変形して連分数展開の形式が導かれます。

y
= a0 + a1x [ 1 + (a2/a1)x + (a3/a1)x2 + … ]
= a0 + a1x
1
1 + (a2/a1)x + (a3/a1)x2 + …
= a0 + a1x
1 − (a2/a1)x + (a3/a1)x2 + …
1 + (a2/a1)x + (a3/a1)x2 + …
= a0 + a1x
1 − (a2/a1)x [ 1 + (a3/a2)x + (a4/a2)x2 + … ]
1 + (a2/a1)x + (a3/a1)x2 + …
= a0 + a1x
1 − (a2/a1)x
1 + (a2/a1)x + (a3/a1)x2 + …
1 + (a3/a2)x + (a4/a2)x2 + …
= a0 + a1x
1 − (a2/a1)x
1 − (a3/a2a2/a1)x + (a4/a2a3/a1)x2 + …
1 + (a3/a2)x + (a4/a2)x2 + …
= a0 + a1x
1 − (a2/a1)x
1 − (a3/a2a2/a1)x { 1 + [(a4/a2a3/a1)/(a3/a2a2/a1)]x + … }
1 + (a3/a2)x + (a4/a2)x2 + …
= a0 + a1x
1 − (a2/a1)x
1 − (a3/a2a2/a1)x
1 + (a3/a2)x + (a4/a2)x2 + …
1 + [(a4/a2a3/a1)/(a3/a2a2/a1)]x + …
= a0 + a1x
1 − (a2/a1)x
1 − (a3/a2a2/a1)x
1 − [(a4/a2a3/a1)/(a3/a2a2/a1)−a3/a2]x + …
1 + [(a4/a2a3/a1)/(a3/a2a2/a1)]x + …

ただし,実際の関数計算で,級数展開を使うのが良いのか,連分数展開を使うのが良いのかは簡単には予測できません。

補足 tan x の冪級数展開

正接関数 tan xべき級数展開は,

tan x
= x
+ x3
3
+ 2x5
15
+ 17x7
315
+ 62x9
2835
+ 1382x11
155925
+ …

という形式を持つので,tan 1 = 1.5574077246549… に対する冪級数展開による近似値は,

1 + 1 = 1.333 … ,
3
1 + 1 + 2 = 1.466 … ,
3 15
1 + 1 + 2 + 17 = 1.5206 … ,
3 15 315
1 + 1 + 2 + 17 + 62 = 1.5425 … ,
3 15 315 2835
1 + 1 + 2 + 17 + 62 + 1382 = 1.5513 … ,
3 15 315 2835 155925

などとなります。


前へ 上へ 次へ

2005年10月26日公開
2013年5月2日更新