ルート2の手計算

計算フアンの皆さま、こんにちは。
さて、しょうもない会議のときは私は聞いたふりしながらルート2\sqrt{2}=1.414213562373095\cdotsの手計算をしていることが多い。つい最近、画期的な方法を見つけたのでご紹介したい。

普通、この手の計算では逐次近似法が使われるのではないだろうか。小数を打ち切っても、計算ミスをしてもかってに次のステップの計算で修正されていくので手計算には最適である。Wikiにものっているがニュートン法では、漸化式 x_{n+1}=x_n/2+1/x_nとなる。やってみよう。


x_0=1
x_1=1/2+1/1=1.5
x_2=1.5/2+1/1.5=1.41666\cdots
x_3=1.4166/2+1/1.4166=1.414215\cdots


という計算が続く。実は収束は非常に良いのだが、お気づきになるように2項目の割り算が筆算では非常に面倒であり、この計算を続けるのはかなり大変である。私もいつもあと数ケタ計算精度を上げるぐらいでもう止めてしまっていた。

なんとか割り算なしにできないか。そう思って次に\sqrt{2}を分数で近似することをあれこれ考えた。そのうち気付いたのは\sqrt{2}の連分数展開:

{\displaystyle {\sqrt {2}}=[1;2,2,2,2,2,2,\dots ]=1+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2+{\frac {1}{\cdots }}}}}}}}}}}}}}}

を利用することである(うむむ、cfrac表記が効かない)。途中でばっさり打ち切ればよい。やってみよう。

x_1=1
x_2=1+{\frac {1}{2}}=3/2=1.5
x_3=1+{\frac {1}{2+{\frac {1}{2}}}}=7/5=1.4
x_4=1+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2}}}}}}=17/12=1.4166\cdots
x_5=1+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2}}}}}}}}=41/29=1.41379\cdots
x_6=1+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2+{\frac {1}{2}}}}}}}}}}=99/70=1.414285\cdots


一見面倒そうであるが、漸化式はx_{n+1}=1+1/(1+x_n)であり、x_n=A/Bと分数で表記しておけば、x_{n+1}=\frac{A+2B}{A+B}と非常に簡単である(このときたまたまだが、x_nが既約分数ならx_{n+1}もそうである)。

x_7=239/169=1.4142011\cdots
x_8=577/408=1.4142156\cdots
x_9=1393/985=1.41421319\cdots
x_{10}=3363/2378=1.414213624\cdots
x_{11}=8119/5741=1.414213551\cdots


収束はやや遅いが、割り算は最後に一回やるだけである。またこの方法の一般化で\sqrt{N}を計算することができる。x_n=A/Bに対して、x_{n+1}=\frac{A+NB}{A+B}とするだけである(ただし、今度は連分数展開を基礎にするわけではない。また一般化すると先の既約分数の性質は失われる)。

あなたの計算ライフにぜひお試しください。