Excelで連分数展開してみた

Excelで連分数展開してみましょう。
簡単です。

連分数とは

ある数xを

    $$ x=a_0+\frac{b_1}{a_1+\frac{b_2}{a_2+\dots}} $$

のように展開した表現を連分数といいます。特に、b1, b2, …が全て1、すなわち、

    $$ x=a_0+\frac{1}{a_1+\frac{1}{a_2+\dots}} $$

のように展開した表現を正則連分数といいます。

正則連分数は、

    $$ x=\left[a_0;a_1,a_2,\cdots\right] $$

とする表記法もあります。

本記事では正則連分数を扱います。

連分数の作り方

例えば、11.73766066という数を連分数展開したい場合、

    \begin{eqnarray*} 11.73766066 &=& 11+0.73766066 \\ &=& 11+\frac{1}{1.355636886} \\ &=& 11+\frac{1}{1+0.355636886} \\ &=& 11+\frac{1}{1+\frac{1}{2.81856811}} \end{eqnarray*}

のようにして作ります。すなわち、整数部分を除いた小数部分の逆数を取ることの繰り返しで展開できます。

こうして、

    $$ 11.73766066=\left[11;1,2,1,4,3,5,1,3,5,\cdots \right] $$

が得られます。

Excelで連分数を作ってみよう

連分数の求め方

連分数の求め方

まず、A1、B1、C1にそれぞれ、「元の数」「連分数」「少数部」とでも書きましょう

次に、A2に展開したい元の数11.73766066などを書きましょう。

B2は整数部を取り出したいので「=INT(A2)」です。

C2は、少数部を取り出したいので、「=A2-B2」です。

A3は、少数部の逆数にしたいので、「=1/C2」です。

B3、C3は、それぞれ「=INT(A3)」「=A3-B3」です。

さらに、3行目をコピーして、4行目以降にペーストすれば、出来上がりです。

連分数の例

連分数の例

簡単ですね。

でも、手計算しか手段がなかった頃にこれをやりたくはないなぁ。

電卓があっても間違えそうです。

連分数を作って何が嬉しいの?

それは、数の背後に隠された規則性が見えることか?な?

例えば、A2に「=SQRT(2)」と入れてみてください。そうすると、

    $$ \sqrt{2}=\left[1;\overline{2}\right] $$

が得られます。ただし、上線は循環を示しています。

黄金比は、

    $$ \frac{1+\sqrt{5}}{2}=\left[1;\overline{1}\right] $$

となります。

さらに、ネイピア数e(自然対数の底)は、

    $$ e=\left[2;1,2,1,1,4,1,1,6,1,1,8,1,1,10,\cdots\right] $$

となります。規則性は明らかです。

なんかすごいパワフルなツールを得たような気がします。

でも、3乗根では、

    $$ \sqrt[3]{2}=\left[1;3,1,5,1,1,4,1,1,8,1,14,1,10,2,1,4,\cdots\right] $$

となり、規則性が見当たりません。
4乗根でも

    $$ \sqrt[4]{2}=\left[1;5,3,1,1,40,5,1,1,25,2,3,1,6,2,2,\cdots\right] $$

です。

また、πは、

    $$ \pi=\left[3;7,15,1,292,1,1,1,2,1,3,1,14,3,3,23,\cdots\right] $$

となり、やはり規則性が見あたりません。

出だしは好調でしたが、ぬか喜びだったのでしょうか?

連分数を分数に直そう

乗り掛かった舟なので、連分数を分数に戻すことはしておきましょう。
手計算では、途中に出てくる小数を無視してから分数に戻せばOKです。

    \begin{eqnarray*} \sqrt{2} &=& 1+\frac{1}{2+\frac{1}{2+0.414213562}}\\ &\approx& 1+\frac{1}{2+\frac{1}{2}}\\ &=& 1+\frac{2}{5}\\ &=& \frac{7}{5} \end{eqnarray*}

最後、7/5=1.4ですので、確かに\sqrt{2}の近似値です。

これをExcelでやってみます。

うまい方法がなかなか思いつかず、いわゆる「ベストプラクティス」とはいえません。

分数への直し方

分数への直し方

E1に「=F2」、F1に「=E2」と入力します。
E2に「=IF(F3<>0,F3,1)」、F2に「=$B2*IF(F3<>0,F3,1)+E3」と入力します。
あとは、E2:F2をコピーしてE, F列の下方に適当に貼り付けてください。

分数に直した例

分数に直した例

E4:F4まで貼り付けた時、このようになり、E1/F1が求める分数(7/5)になります。

Excelの丸め誤差を考えると、実用となるのは10行目くらいまででしょうか。

本当のところ連分数にメリットがあるの?

1つ目のメリットは、無理数について、近似的な有理数が得られることでしょう。

例えば、πに対して考えると、

    $$ \frac{103993}{33102}=3.141592653\cdots $$

ですよ。小数点以下9桁が一致しています。すごくないですか?
え?使い道がないので、あまりすごくない?

2つ目のメリットは、公倍数の近似値が得られることです。

例えば、65 mm×91 mmの紙を切り出したいとします。ただし、材料として、正方形の紙しか得られないとします。なるべく無駄なくカードを作るとしたら、どのような大きさの紙を選びますか?

答えは、455 mm×455 mmの紙です。65=13×5、91=13×7であり、最小公倍数が455だからです。これは問題ありません。

では、64 mm×92 mmの紙を切り出したいときはどうしますか?64と92の最小公倍数が1472だから、1472 mm×1472 mmの紙を使いますか?模造紙でも1091 mm×788 mmなので、そのような紙の入手は難しいかもしれません。

そこで、連分数を使います。92/64=1.4375=[1;2,3,1,1]なので、これを分数に直すと、3:2, 10:7, 13:9, 23:16という比率が得られます。それぞれの比について必要な紙のサイズを調べてみると、192 mm×184 mm、640 mm×644 mm、832 mm×828 mm、1472 mm×1472 mmとなります。

よって、644 mm×644 mmの材料を用いてはいかがでしょうか?余るのは4 mm×644 mm÷(10×7 枚)=36.8 mm2/枚ですので、無駄は出てしまうものの、その値は小さいようです。めでたしめでたし。

実はここまで書いて、少し驚いています。65 mmと64 mm、91 mmと92 mmはそれぞれ1 mmずつしか違いません。よって、7:5という比率が出てくると思っていました。でも、連分数で求めた場合、そのような比率は出てきません。ちなみに、7:5だとすると448 mm×460 mmとなって、正方形の紙を仮定すると12 mm×448 mm÷(7×5 枚)=153.6 mm2/枚もの無駄が出てしまいます。

連分数展開の方法は、ユークリッドの互除法にそっくりです。
ユークリッドの互除法は、最大公約数を見つける方法です。よって、連分数が公倍数の近似値を見つけられることは不思議なことではありません。不思議ですが。

逆数の場合の連分数

公倍数の近似値が求められることは、それなりに嬉しいとしましょう。

ただ、ちょっと待ってください。前節では、92/64=1.4375から連分数を求めましたよね?

逆数を取って、64/92=0.69562174から求めたら、違う結果が得られませんか?

ところが同じなんですね。

    \begin{eqnarray*} \frac{64}{92} &=& 0.69562174\\ &=& 0+\frac{1}{1.4375}\\ &=& 0+\frac{1}{1+0.4375} \end{eqnarray*}

ほら。先頭に0がひとつ余計に付きはしましたが、2行目からは1.4375を連分数展開しています。

まとめ

Excelで連分数展開をしてみました。
連分数を分数に直す方法も示しましたが、使い勝手はいまいちかもしれません。

連分数を使う最大のメリットは、公倍数の近似値を得ることだと思います。
よろしければ、次の「日食や月食の食周期について調べてみた」という記事をご覧になってみてください。

コメント

タイトルとURLをコピーしました