連分数とその応用分数の分母に分数が登場するという構造の分数を連分数 (continued fraction ) と呼ぶ。
先ず例を挙げよう。

√√
11√
2 = 1 + ( 2 − 1) = 1 + √=1+2+12 + ( 2 − 1)√と変形してみる。第２番目に登場した ( 2 − 1) は最後の式の分母にも登場しているのでこれを複数回代入してみる。その結果√

12=1+12+2+1.
2 + ..

√といった関係式が成立すると思われる。 2 は無理数であるから、この表現は無限に続√く。因みに、この式を途中で打ち切って、数値を代入して 2 の既知の値、1.41421356 · · ·と比較してみよう。
最初に ２ が出て来たところで止めると 、1 + (1/2) = 1.5 である。二つ目に２が1出て来た所で止めると、1 += 1 + (2/5) = 7/2 もう一つ近似を進めると、
2 + (1/2)
1
1+= 1 + (5/12) = 17/12 と続く。括弧で括られた部分は、直前に計算した
2 + (2/5)
結果を流用している。１０個までの計算結果を表にしてみよう。
２の個数
12345
6
78
910

分数表示
小数表示
1+ 1/2
1.5
1+ 2/5
1.4
1+ 5/121.416666667
1+12/29
1.413793103
1+29/70
1.414285714
1+70/169
1.414201183
1+169/408 1.414215686
1+408/985 1.414213198
1+985/2378 1.414213623
1+2378/5741 1.414213551√
常識的な値に急速に収束していく。もしも 2 を筆算出来るならば 、その手数を比較してみよ。連分数の方が簡単だと納得するだろう。数字 １ を一回と数字 ２ を１０√回使用するだけで、 2 を９桁目で１の誤差に追い込む程度の表現力を持っている。こういう発想からは、four fours というゲームを思い出す。
数字４を４回 (必ず４回) 使用して１から順番に自然数を作れというゲームである。例えば 、1 =(4 + 4)/(4 + 4) 、2 = (4 × 4)/(4 + 4) 、3 = (4 + 4 + 4)/4 といった具合である。５は？ 4 + 44−4 というのはスマートでないな。もしもこれまでに経験がなければ挑戦してみよ。頭の体操という意味はあるだろう。

1ここに挙げた表現の収束性を仮定し 、１ を除いた部分を x と置くと、x = 1/(2 + x) という x に関√する２次方程式を得、x = −1 ± 2 を得る。無理数を表現したのだから、２次方程式が出て来るのも仕方がない。x が負の方は捨てなければならない。
px = 1/(2 + x) という式を、 (2) − 1 を計算する漸化式だと見立てる。先ず、右辺の x に１を代入すると x = 1/3 を得る。この x = 1/3 をもう一度右辺に代入し 、x = 0.4285 · · · をえる。この作業を１２回手元の電卓で繰り返すと x = 0.41421356 に収束した。この手法は、代数方程式の簡単な解法を例示している。

分子と分母に自由な整数が使えるから 、数値表現の自由度が上がっていると考える事も出来る。否定的に分数表現の式を見ると、分子と分母の有効桁数の和程度の精度を実現しているのだから、特に驚くに当たらないと言う批判もあり得るだろう。
1黄金分割 (比) に関して 1 +1+1という表現は、かなりの人に知られている。πに関する表現.
1 + ..

も好む人達がいる。

ここで登場した連分数の表現では、以下の手順が使用された。
ステップ １ １よりも大きなある数値が与えられ、これを (整数部) ＋ (小数部) と書く。
ステップ ２ 小数部＝１/(１よりも大きな別のある数) と書く。
ステップ ３ 分母に登場した (１よりも大きな別のある数) を最初に与えた (１よりも大きなある数値) と考えて、ステップ １に戻る。
この手順を踏むと、実数の連分数展開の可能性が理解できる。しかし 、この連分数展√開も一意に確定している訳ではない。ステップ １を例に取り、 3 が与えられたもの√√√√としよう。ある人は、 3 = 1 + ( 3 − 1) と変形し , 別の人は 3 = 2 − (2 − 3) と変形するだろう。両者の相違は、1.732 · · · = 1 + 0.732 · · · と少数部分を正の数に限定するか、1.732 · · · = 2 − 0.2679 · · · の様に、少数部分を負にするかという判断にかかっている。この判断の一つの合理的な基準は、少数部の絶対値が 0.5 よりも小さな数になるように整数部を決めるというものである。
この考え方の相違は、片側連分数展開と両側連分数展開という表現で区別される。少数部分の絶対値を小さく出来るから、両側連分数展開の方が収束性が大きいと予想される。
πを片側 (少数部は全部正) と両側連分数に展開してみた。

π−3'1 1 1 14687== .1415926530119
7+ 15+ 1+ 292
33102
π−3'14687
1 1=7+ 16− 29333102

たまたま同じ結果になったところで打ち切ったが、片側連分数の方が１段余計に手間がかかっている。

連分数の漸化式
2連分数を以下の様に書こう。

h = b0 +a1b1 +b2 +a2= b0 +a3a1 a2
a3b1 + b2 + b3 + · · ·.
b3 + . .

初項は、a0 と書きたい所だが、後の都合もあるので b0 としてある。更に、an /bn で打ち切った有理数表現を hn とし 、hn = An /Bn で An 、Bn を定義する。An /Bn という比の形で定義されるので、An , Bn には (n に依存しても良い) 定数倍の不定性がある。
この時、An , Bn は以下の漸化式を満足する事が証明できる。

An = bn An−1 + an An−2 , Bn = bn Bn−1 + an Bn−2
漸化式としては全く同じ形をしているが 、以下の様に異る初期値を持つとする。

A−1 = 1, A0 = b0 , B−1 = 0, B0 = 1
この漸化式が成立する事を示すには、数学的帰納法に依るのが簡単である。直接代入すれば 、n = 0, 1 に対して成立する事が分かる。n に対して成立すると仮定し 、n+1でも成立する事を示す。n を一つ増やす事は、bn を bn + an+1 /bn+1 で置き換える事であるという事実に注目し 、これを帰納法の仮定の式に代入する。

Ân ≡ (bn +an+1an+1 An−1An+1)An−1 + an An−2 = An +=bn+1bn+1bn+1

即ち、Ân の bn+1 倍を An+1 とすれば良い。Bn+1 についても同様である。
この漸化式のお蔭で、連分数が非常に取扱易くなるという恩恵を受ける事になる。
連分数の数値計算
ここでは、無限連分数が与えられた場合を想定し 、具体的に計算する処方を説明する。
もう一度定義を繰り返しておく。

hn = b0 +a1anAn···=b1 +bn
Bn

An Bn は上に説明した漸化式を満足する。更に Dn ≡Bn に関する漸化式をこの Dn を用いて表現する。
Dn =Bn−1という助変数を導入する。
Bn

1bn + an Dn−1

この表現を用いて、hn の右辺を変形する。

hn =Anbn An−1 + an An−2=。
Bn
Bn

Dn の定義、hn−1 (= An−1 /Bn−1 ) や an Dn−1 Dn = 1 − bn Dn という関係を用いて an に関係する項を消去すると、
hn = bn Dn (hn−1 − hn−2 ) + hn−23という単純な関係が導かれる。
更に、次の記号を導入する。

∆hn ≡ hn − hn−1
この記号を使用すると、上の関係式は次の様に変形できる。

∆hn = (bn Dn − 1) ∆hn−1
まとめると、計算手順は次の様になる。

1 D1 = 1/b1 , ∆h1 = a1 /b1 を作り、h = b0 + ∆h1 とする。
2 n=2 から収束するまで次の計算を続ける。
Dn = 1/(bn + an Dn−1 ), ∆hn = (bn Dn − 1) ∆hn−1 を計算し 、∆hn を h に加える。
3 収束判定は、|∆hn /h| が |b0 | よりも十分小さくなれば良い。
この計算手続きを見ると、与えられた連分数が収束する条件についての判断基準が分かる。収束比が ∆hn /∆hn−1 が −(an Dn−1 )/(bn + an Dn−1 ) と与えられているから、これが (n − 1)/n よりも小さければ収束するし 、小さくなり方がこれと同じかこれよりも穏やかならば発散する。漸化式を作る時に、この収束因子を参考にすると良いだ
ろう。
連分数の数値計算には、収束性の判定がつきまとう。ここに提示した計算法では、∆hnが毎回計算して、収束判定を行う。もしも最初から計算すべき項数が分かっているな
らば 、An , Bn の漸化式を直接用いて必要な項数をまで計算し最後に割算を一回だけ行えば良い。上で提示した方法ではループの中で割算を行っていると言う意味で、効率が悪いと言える。
関数の連分数展開
これまでは、ある実数が与えられた時の連分数展開を想定していた。次に、関数を連分数で表現すると言う話題に移ろう。
先ず、高橋・室谷著 数値計算とその応用 、コロナ社 pp42-48 付近の引用から始めよう。自然対数に対する次の様な連分数展開がある。

x2x2xx
1 2 2×3 2×3 2×5log(1 + x)=x
1+ 1+ 1+1+ 1 + · · ·一般的に書くと、

但し 、log(1 + x)
1 `1 x `2 x `3 x=
x1+ 1+ 1+ 1 + · · ·nn+11, `2 n+1 = −`1 = − , `2 n = −22(2 n + 1)
2 (2 n + 1)

この連分数展開の特徴を引用しておこう。
先ず、展開精度に関する件。
4log(1 + x) =∞X(−x)n+1n=1nというテイラー展開で x10 で打ち切った時と、上の連分数展開で `5 迄で打ち切った時の精度比較をした、先の文献の表 ２. ２の一部を引用しておこう. x = 0.1 では両者ともに７桁程度の精度があったが、x が大きくなると決定的に連分数展開の方が精度を確保できた。例えば 、x ＝０. ８ではテイラー展開だと１割弱, 連分数展開だと 1.4 × 10−5という相対誤差である.

x0.1
0.2
0.30.50.81.01.52.0

巾級数展開0.095 310 20.182 321 60.262 364 40.405 435 00.583 276 80.645 634 9-2.403 036-64.824 76

連分数展開
0.095 310 170.182 321 50.262 364 10.405 464 40.587 778 40.693 121 60.916 120 21.098 039

真値
0.095 310.182 320.262 360.405 460.587 790.693 140.916 291.098 62

次に収束半径に関する件。
テイラー展開だと |x| < 1 という条件が付く。無理矢理に x = 2 を代入したところ、正の数を与えなければならないのに、負の数を与た。ところが、連分数展開では x = 2に対しても 5.3 × 10−4 という相対誤差しか生じていない。
この例のように、テイラー展開と比較して、連分数展開は収束性が良く、収束半径も大きい場合がある。何故、学校ではこのように有用な連分数展開を教えずに、利用範囲の狭いテイラー展開を教えるのだろう？という疑問に答えるのは数学者に任せておこう。
与えられた関数の定義から有用な連分数展開をどのようにして導き出すのか？という事が問題となる。一つの例は、上に引用した高橋の教科書を精読する事である。この本は、連分数展開を用いた準乱数の発生とその多重積分への応用に付いても論じており、乱数を用いた多重積分の計算をする前には 、必ず読んだ方が良いと思う。疑似乱数と準乱数の言葉の区別も気にしてみると、視野が広がるだろう。僕は、このような多重積分を行った経験がないのでこれ以上は言えない。
与えられた関数を 、斉次式の比で表現する近似を Pade 近似と呼ぶ。上に書いた
An , Bn を x の関数だと思うと 、連分数近似は Pade 近似を更に一般化したものだと考える事も可能だろう。
理科年表 (古い版は不可) の後ろに、tan(x) の級数展開と連分数展開の簡単な公式が載っている。両者に数値を代入し 、展開精度や展開の利用可能範囲を比較してみよ。
クーロン関数の連分数展開
級数展開された関数の場合は、上に引用した本が良いとして、別の手法を含み、さらに将来実際に扱う場合がある事等を考慮して、散乱状態のクーロン波動関数の数値計算への応用を取り上げよう。クーロン波動関数は、η = 0 の極限では 球 ベッセル関数5や球ノイマン関数になる。更に ` を半奇数だとおくと通常のベッセル関数やノイマン関数が登場するという意味でも非常に汎用性がある手法をこれから紹介する事になる。
参考書は 、Abramowitz と Stegun 編、Handbook of Mathematical Functions withFormulas, Graphs and Mathematical Tables(1965), Dover Pub. である。この本を座右に置く事を強く勧める。
クーロン波動関数は、３次元極座標でのクーロンポテンシャルの下での, 以下に示す
動径部分シュレーデ ィンガー方程式の解として定義され 、原点で正則な (発散する) 解を F` (G` ) と書く。これらの解は実数である。
Ã!

2η `(` + 1)
d2+1−−U` (η, ρ) = 02dρρρ2

登場するパラメータは以下の様に定義されている。

η=z Zα, ρ=r×k
βα は微細構造定数であり、β は荷電粒子の相対速度である。` は軌道角運動量である。
関数の絶対値や位相の自由度を確定する為に、次の条件が使用される。
F` (η, ρ = 0) = 0, F` (η, ρ) → sin θ`G` (η, ρ = 0) → ∞, G` (η, ρ) → cos θ`
ここで、θ` = ρ − η log 2ρ − `π/2 + σ`であり、σ` = argΓ(1 + ` + i η) である。
Γ 関数には良く知られた漸化式 Γ(z + 1) = z Γ(z) があり、` = 0 に対するクーロン波の位相のズレ σ0 だけ計算出来れば 、後は簡単である。Γ 関数の位相は、log Γ(z) の虚部として計算すればよく、スターリングの公式を知っていれば 、何の問題も生じないだろう。
これからは、面倒だから下付き文字だけを残して、F` , G` 等と記す。F, G を代表して U と記すと、F` や G` は、以下の漸化式を満足する。

U`0 = R` U`−1 − S` U`
U`0 = S`+1 U` − R`+1 U`+1
微分を消去すると、

R`+1 U`+1 = T` U` − R` U`−1
ここで、sR` =1+η2, S` = `/ρ + η/`, T` = S` + S`+1`2と定義した。
解の独立性を保証する “Wronskian “ は以下の様になる。

F`0 G` − F` G0` = 1 、 F` G`+1 − F`+1 G` = 1/R`+16

独立解が二つあるから、二つの独立量を計算をしなければいけない。クーロン波動関数は、エネルギーがクーロンポテンシャルよりも上にある、いわゆる古典力学的に許される領域と、古典的に立ち入り禁止領域とでは振幅が極端に変化するので、その絶対値ではなく微分との比、即ち対数微分、を計算すると変化が穏やかで取扱易い。そこで、(G0` + i F`0 )/(G` + i F` ) と F`0 /F` の計算をする。

(G0` + i F`0 )/(G` + i F` ) の計算(G` + i F` ) = y` exp (iθ) と書いて y` を定義すると、y` は以下の微分方程式を満足する。
η d y` (iη − `)(iη + ` + 1)
d2 y`
+ 2 i(1 − )+y` = 02dρρ dρρ2
ここで、z ≡ 1/(2iρ) と変数変換すると、y` は、超幾何関数である事が分かる。これから暫くは、記号の簡単化の為に、a ≡ i η − `, b ≡ i η + ` + 1 とする。

y` (η, ρ) = 2 F0 (a, b ; z)超幾何関数は以下の様に定義されている。
2 F0 (a, b ; z) = 1 +X (a)n (b)n z na b z a(a + 1)b(b + 1)z 2++ ··· =
1!
2!
n!
n

この式は、厳密には等号は成立しない。n を無限大にもっていくと、右辺は発散するか
ら、漸近展開と呼ぶのが良いだろう。しかし比の形で書いた式 (G0` + i F`0 )/(G` + i F` )は、収束するようである。
ところで、y` の定義から

i(ρ − η)ab 2 F0 (a + 1, b + 1 ; z)G0` + i F`0=+i 2
G` + i F`
ρ2ρ
2 F0 (a, b ; z)であるので、超幾何関数の微分が必要となる。次の微分に関する関係式を利用する。

d/dz 2 F0 (a, b ; z) = dF/dz = ab 2 F0 (a + 1, b + 1 ; z)
d2 /dz 2 2 F0 (a, b ; z) = a(a + 1)b(b + 1) 2 F0 (a + 2, b + 2 ; z)y` の満足する微分方程式を y`0 で割って、上に書いた 2 F0 の微分に関する関係式を代入すると、
2 F0 (a, b ; z)
2 F0 (a + 1, b + 1 ; z)

= 1 − (a + b + 1)z − z 2 (a + 1)(b + 1)

2 F0 (a + 2, b + 2 ; z)
2 F0 (a + 1, b + 1 ; z)

この式は、a と b を含む関数と、a + 1 と b + 1 を含む超幾何関数の比を、a + 1 と b + 1を含む関数と a + 2 と b + 2 を含む関数の逆比で表した関係と見る事が出来る。即ちこの関係は連分数展開が出来る事を示唆している。故に、
2 F0 (a + 1, b + 1 ; z)
2 F0 (a, b ; z)=1(a + 1)(b + 1)z 2(a + 2)(b + 2)z 21 − (a + b + 1)z− 1 − (a + b + 3)z− 1 − (a + b + 5)z − · · ·という連分数を書き下す事が出来た。実際には、分子と分母に 2ρ を掛けた式で表すと、
Ã1i(iη − `)(iη + ` + 1) (iη − ` + 1)(iη + ` + 2)
G0` + i F`0=i (ρ − η) +G` + i F`ρ2(ρ − η + i)+2(ρ − η + 2 i) + · · ·7!

別の表現をすると

a1 = −η 2 − `(` + 1) + iη; ak+1 − ak = 2k + 2 iηb1 = 2(ρ − η) + 2 i; bk+1 − bk = 2 i
これで、連分数展開の形に持ち込めた事になる。後でもう少し説明するが 、この操作に依り収束域が非常に拡大された事になる。

F`0 /F` の連分数展開
連続する３個の ` に対するクーロン波動関数の漸化式を次の様に書いてみる。
Un+1 = bn Un + an Un−1
こう書いてみると、これは連分数を分数表示した時の、分子と分母が満足する漸化式そのものである。係数 an と bn は先に定義した R` , S` 等を用いると、次式で表せる。

an = −Tn
Rn, bn =Rn+1
Rn+1

F や G に対してこの漸化式が成立すると言う事は、F と G の任意の線形結合に対してもこの漸化式が成立するという事である. そこで、連分数に対応した初期条件
q= 0, B0q = 1
Aq−1 = 1, Aq0 = b0 , B−1

を満足する様な組合せを念頭に置いて, 次の二つの線形結合を作る。

Aqp = α Fp+q + β Gp+q , Bpq = γ Fp+q + δ Gp+q
ここで、p と q は、パラメータであり、p は これから１ずつ増やしていくパラメータであるが q は固定的に考える事を想定して、区別して書いた。この関係式が 、連分数展開時の初期値を満足するように , 即ち、次の式が成立するように α, β, γ, δ を決定する。
Aq−1 = α Fq−1 + β Gq−1 = 1, A10 = α Fq + β Gq = b0q= γ Fq−1 + δ Gq−1 = 0,
B−1

B0q = γ Fq + δ Gq = 1

その結果、

α=Gq − b0 Gq−1b0 Fq−1 − Fq
, β=,Rq
Rq

γ=−Gq−1
Fq−1, δ=RqRqp を無限大とした極限での以下の連分数は計算可能である。
hq = p→∞lim

Aqp
Fqβ= b0 −q =BpδFq−1

ここで、p が大きくなると、(遠心力の効果により)Fp+q → 0 、Gp+q → ∞ という性質を利用した。まとめると、
Fqa1a2= b0 −Fq−1
b1 + b2 + · · ·8として計算可能である。ここで、q = ` + 1 とおくと、
2R2R`+2F`+1= `+1
R`+1 F`T`+1 − T`+2 − · · ·右辺に平方根が登場しない様に変形しておいた。先に与えた、F` , F`+1 , F`0 の関係式を用いると、この式から F`0 /F` の関係式に変換するのは簡単である。
` を与えた時,F` , F`0 , G` , G0` の４個の数値を決定するには , ４個の独立な情報が必要である. (G0` + i F`0 )/(G` + i F` ) は複素数だから , ２個の情報を与える. F`0 /F` は一つの情報である. そして４番目の情報は Wronskian の関係式である. これで原理的にはクーロン波動関数を計算できる. 実際にやってみると , ２次方程式が登場し , ２根の内のどちらを採用すべきかと言う符号に関する情報がもう一つ必要である.
Fq−1 Gp+q
連分数の和が収束した極限で Bp+q → δ Gp+q =となるが、R も G も正でRqあるから、Fq−1 と Bp+q は同符号である。先の連分数の数値計算の時の記号で言うな
らば Fq−1 の符号は Πn Dn の符号と同符号である。
注意： (G0` + iF`0 )/(G` + iF` ) の式は、ρ ≥ 2η では信頼できるが 、ρ < 2η となると、F` や F`0 の絶対値が G` , G0` に比較して小さくなるので、虚部は信用置けなくなる。別の方法で F に関する情報を確保する必要がある。
これらの連分数表現は収束する事が分かっているから、広い範囲で使用できる。しかし最も早く収束する表現であるという保証がある訳ではない。
Fröberg は、Reviews of Modern Physics 27(1955) 399 に当時のクーロン波動関数の計算方法をまとめている。それによると、ρ < 10, η < 10 の領域だけで、５個の異る領域毎に異る計算方法を推奨している。ρ < 50, η < 50 となると領域の分割だけでも８種類と細かくなっている。ところが 、この連分数展開法では ρ = 10000, η = 1000という例まで計算可能として例示されている。
直交多項式が満足する以下の基本漸化式を知っている人もいるだろう。

pn+1 (x) = (α x + β)pn (x) + γ pn−1 (x)この漸化式も上に引用したクーロン波動関数と同じ形式であるから、同様な計算手法があると想像されるだろう。
最後に連分数の応用という面から個人的に読んだ本を見てみる。一松信が 近似式 (竹内書店) で 、森口繁一が 数値計算工学 (岩波書店) でカーテンを開けるように呼びかけ、高橋磐郎が数値計算とその応用 (コロナ社) で努力をし 、やっと光が射し込んで明るくなりかけたという時期の様に思える。

9