10

自然数の平方根を任意の精度で有理数近似する方法

1295
2

はじめに

この記事は 日曜数学 Advent Calendar 2020  の2日目の記事です。

ハイレベルな記事が多い(と予想される)中、私は「日曜数学」らしく趣味に走った記事を書きたいと思います。テーマに選んだのは、Twitterで数学で遊んでいたときに見つけた自然数の平方根の有理数近似の方法です。方法自体はおそらく既知のものだと思いますが、この記事では私がどうやってこの方法に思い至ったかという部分を趣味全開で記事にしたいと思います。

この記事で取り扱うのは自然数の平方根を有理数近似する方法です。
例えば、こんな近似があります。

自然数の平方根の有理数近似

23363237832620871513165930249416020655376189936317903581775817605132417925426944427685841408

さて、上記の有理数近似はある方法で作ったものです。この方法を使うと、任意の精度で自然数の平方根を有理数近似することができます!
 ……「任意の精度」の表現ではよくわからないかもしれません。もう少し正確に表現してみます。自然数の平方根を次のような分数表記にしたとき、分子が「ほとんど整数」となるようなものの小数部分を四捨五入することで得られる有理数近似を「良い有理数近似」とし、分子が整数に近いものから作った近似であるほど、「より良い有理数近似」であるとしましょう。

分子が整数に近いほど「良い有理数近似」であると考える

2=3362.9998523783=262086.9999981513165=930248.999999441602065537=618993631790358177581760512.99999999999999999999999999912417925426944427685841408

このとき、いくらでも「より良い有理数近似」となるような分数を得る方法を見つけたということです。

 その方法は、過去に私がtwitterで書いた内容と同じですし、この記事の最後に書いてありますので、結果だけ知りたい人は最後まで飛ばしてもらっても構いません。
 ですが、この記事では、どのようにこの方法を思いついたかについてここから少し詳しく書いてみたいと思います。

黄金比の累乗とフィボナッチ数の関係

 より良い有理数近似を作るためにまず最初に考えたのは、黄金比の累乗とフィボナッチ数の次のような関係でした。

フィボナッチ数の一般項の四捨五入を使った表現

   Fn=(1+52)n5

参考: フィボナッチ数の一般項の四捨五入による表現の導出

なぜこのようなことができるのかというと、フィボナッチ数の一般項は次のように表すことができる(ビネの公式)のですが、

    Fn=(1+52)n5第1項(152)n5第2項

この式を観察すると、第1項は公比 1+52 の等比数列、第2項は公比 152 の等比数列となっていることがわかります。
|152|=0.618<1 ですから、 n が大きいときは第2項はほとんどゼロになってしまうため、四捨五入を使った表現をつくることができたのでした。

自然数の平方根の有理数近似の方法への応用

ここで「第2項がほとんどゼロになる仕組みを応用すれば、良い有理数近似を作れそう!」というヒラメキがありました。具体的にはn と一番近い整数との差の絶対値は1未満になることを利用して次のような計算をします。

有理数近似作成の具体例

(12)10=3363237822=3363(12)10237833632378

(23)10=26208715131633=262087(23)10151316262087151316

(25)10=93024941602055=932049(25)10416020930249416020

(25665537)10=61899363179035817758176051324179254269444276858414086553765537=618993631790358177581760513(25665537)1024179254269444276858414086189936317903581775817605132417925426944427685841408

この方法を一般化するとこうなります。

自然数の平方根の有理数近似作成法

の記号を x=x+12 の意味で使います。以下では k,n,Ak,Bk,NN とします。Nを次のように定めます。
 N=n
つまり n を四捨五入したものをN ということです。このとき、次のようにして分数を作ります。
 (Nn)k=AkBknn=Ak(Nn)kBkAkBk

Ak,Bk は自然数で、 N の定義より|Nn|12 なので
|(Nn)k|12k
となり、
nAkBk
であることがわかります。また、分子の誤差は k を大きくすればいくらでも小さくすることができることもわかります。

任意の精度で有理数近似する式の完成

次に、Ak,Bkn,k の式で表すことを考えます。
Ak,Bk は次の式を展開して求めましたが、
 (Nn)k=AkBkn…❤️
少し考えれば次のような式も成り立つことが分かります。
 (N+n)k=Ak+Bkn…♠️

❤️と♠️を、Ak,Bk についての連立方程式と見て解くことで次の式が得られます。

自然数の平方根の有理数近似

kN,nN,AkN,BkNnAkBk

{Ak=(n+n)k+(nn)k2Bk=(n+n)k(nn)k2n

二項係数を使うと、次のように書き換えることもできます。(Ak,Bkの値は上記と同じものになります。)

kN,nN,AkN,BkNnAkBk

{Ak=i=0k2(k2i)nk2iniBk=i=0k12(k2i+1)nk2i1ni

分子の誤差を d とすると、誤差 d は次のように評価できます。

誤差の評価

n=Ak+dBk|d|12k

分母が2のべき乗になっていますので、kを大きくすればdはいくらでも小さくすることができることがわかりますね!
以上、フィボナッチ数の一般項の四捨五入表現から、自然数の平方根の良い有理数近似を得る方法を思いついたという、趣味全開の記事でした。

(追記)
もっと短い表現にできることに気が付きました。
なぜこういう表現ができるのかよかったら考えてみてください。

自然数の平方根の有理数近似(改良版)

kN,nN,AkN,BkNnAkBk

{Ak=(n+n)k2Bk=(n+n)k2n

投稿日:2020121
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

apu_yokai
apu_yokai
484
65390

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 黄金比の累乗とフィボナッチ数の関係
  3. 自然数の平方根の有理数近似の方法への応用
  4. 任意の精度で有理数近似する式の完成