√13 の追究
共通テストの問題、からの管理人さんの追究、からのさらに先を。
(5√13)^2 - 18^2 = 1 と右辺が 1 (または -1)になるものを得た時点で、
あとは (5√13-18) (5√13+18) = 1 の両辺を n 乗するだけで簡単に精度を高められます。
・2 乗の場合
(649-180√13) (649+180√13) = 1 と 1298 < 649+180√13 < 1299 より、
(649-1/1299)/180 < √13 < (649-1/1298)/180
すなわち
3.60555127546…… < √13 < 3.60555127876……
で小数点以下 8 桁
・3 乗の場合
(6485√13-23382) (6485√13+23382) = 1 と 46764 < 6485√13+23382 < 46765 より、
(23382+1/46765)/6485 < √13 < (23382+1/46764)/6485
すなわち
3.6055512754639187…… < √13 < 3.6055512754639892
で小数点以下 13 桁
√13 = 3.6055512754639892931…… と比較すればわかるように、偶数乗では下限が、奇数乗では上限がかなり精度のいい近似になります。
(1乗の時も実は上限側はかなり精度がよい)
連分数の打ち切りとの関係
√13=[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,…]
[3;1,1,1,1]=18/5
[3;1,1,1,1,6,1,1,1,1]=649/180=(18+1/36)/5
[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1]=23382/6485
[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1]=842401/233640=(649-1/1298)/180
[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1]=30349818/8417525
[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1]
=1093435849/303264540=(23382+1/46764)/6485
なお、上と重複しますが
(649-1/1298)/180=3.60555127546…
=[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1]
(649-1/1299)/180=3.60555127876…
=[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,3]
(23382+1/46765)/6485=3.60555127546391878…
=[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,2,2,3,3,3]
(23382+1/46764)/6485=3.60555127546398929…
=[3;1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1]
とここまで書いて気付きましたが
(649-1/1299)/180 < √13 < (649-1/1298)/180
は
(649-1/1298)/180 < √13 < (649-1/1299)/180
の誤りですね。
それから、上の流れを見ると
18/5=3.6
(18+1/(18*2))/5=649/180=3.60555…
(649-1/(649*2))/180=842401/233640=3.60555127546…
(842401-1/(842401*2))/233640=1419278889601/393637139280
=3.60555127546398929311922…
(1419278889601-1/(1419278889601*2))/393637139280
=4028705132934095091878401/1117361763886065161254560
=3.605551275463989293119221267470495946251296573845…
(小数は√13と一致する桁のみ)
のように計算することで精度を倍々にすることができますね。
あ、1298 と 1299 逆だった……管理人さん、記事化の時に修正なりなんなりをお願いします。
ペル方程式の解の構成から着想を得ているので、連分数展開と関係があるのはまさにその通りです。
らすかるさんの方法で疑問なんですが、倍精度で一致していく保証はどこから取るのでしょう?
DD++さんの「2乗の場合」の計算から言えているような気がしますが、違いますかね?
(a-b√13)(a+b√13) = 1のとき
(a-b√13)^2 = a^2+13b^2-2ab√13 = 2a^2-1-2ab√13
(2a^2-1)/(2ab) = (a-1/(2a))/b
となり、これはa/bと比較して精度が2倍
ちょっと雑だったかも知れませんので補足します。
(a-b√13)(a+b√13)=1 のとき
a-b√13=1/(a+b√13)
a/b-√13=1/{b(a+b√13)}
最初の式を2乗すると
(a-b√13)^2(a+b√13)^2=1
2a^2-1-2ab√13=1/(a+b√13)^2
(2a^2-1)/2ab-√13=1/{2ab(a+b√13)^2}<1/{b(a+b√13)}^2=(a/b-√13)^2
∴(a-1/(2a))/b-√13<(a/b-√13)^2
もう一つ補足
(a-b√13)(a+b√13) = -1 の場合(5√13-18=1のような場合)は
13b^2=a^2-1 でなく 13b^2=a^2+1 となりますので
(a-b√13)^2 = a^2+13b^2-2ab√13 = 2a^2+1-2ab√13
(2a^2+1)/(2ab) = (a+1/(2a))/b
のように1箇所符号が変わりますが、他は同じです。
一度2乗した後は a-b√13=1 の形になりますので、
(a+1/(2a))/b のようにプラスになる可能性があるのは初回だけです。
私のは
3.60555127546…… < √13 < 3.60555127876……
と上下から挟んでますので、
・3.60555127 までは確定
・続きも 546 くらいまであってそう(予想)
というように証明と予想を区別して出しています。
DD++さんが書かれている評価としてはその通りですね。
しかし計算は2乗していることから、(言い方が雑ですが)√13との誤差が2乗されていて
精度が2倍になっていることが見てとれますね。私が書いた上の計算を見ると、実際には
2乗よりさらに小さくなっている(2乗の約0.14倍)こともわかります。
実際、1742で書いた計算でも正しい小数点以下の桁数が
2桁、5桁、11桁、23桁、48桁のように2倍以上になっていますね。
この計算方法は√13以外にも使えて、実際にいくつか計算してみましたが
√2は7/5=1.4から始めて5回の計算で72桁
√3は7/4=1.75から始めて5回の計算で71桁
√5は9/4=2.25から始めて5回の計算で78桁
√6は5/2=2.5から始めて5回の計算で62桁
(いずれも桁数は真値と一致している小数点以下の桁数)
のようになっていました。
せっかく計算したので実際の計算を書いておきましょう。
・√2
7^2-(5√2)^2=-1(差が±1であることは重要)
7/5=1.4
(7+1/(7*2))/5=99/70 (7-5√2<0なのでここだけ「+」)
(99-1/(99*2))/70=19601/13860
(19601-1/(19601*2))/13860=768398401/543339720
(768398401-1/(768398401*2))/543339720=1180872205318713601/835002744095575440
(1180872205318713601-1/(1180872205318713601*2))/835002744095575440
=2788918330588564181308597538924774401/1972063063734639263984455073299118880
=1.414213562373095048801688724209698078569671875376948073176679737990732478…
・√3
7^2-(4√3)^2=1
7/4=1.75
(7-1/(7*2))/4=97/56 (7-4√3>0なのでこれは「-」、以下√5と√6も同じ)
(97-1/(97*2))/56=18817/10864
(18817-1/(18817*2))/10864=708158977/408855776
(708158977-1/(708158977*2))/408855776=1002978273411373057/579069776145402304
(1002978273411373057-1/(1002978273411373057*2))/579069776145402304
=2011930833870518011412817828051050497/1161588808526051807570761628582646656
=1.73205080756887729352744634150587236694280525381038062805580697945193301…
・√5
9^2-(4√5)^2=1
9/4=2.25
(9-1/(9*2))/4=161/72
(161-1/(161*2))/72=51841/23184
(51841-1/(51841*2))/23184=5374978561/2403763488
(5374978561-1/(5374978561*2))/2403763488=57780789062419261441/25840354427429161536
(57780789062419261441-1/(57780789062419261441*2))/25840354427429161536
=6677239169351578707225356193679818792961/2986152136938872067784669198846010266752
=2.236067977499789696409173668731276235440618359611525724270897245410520925637804…
・√6
5^2-(2√6)^2=1
5/2=2.5
(5-1/(5*2))/2=49/20
(49-1/(49*2))/20=4801/1960
(4801-1/(4801*2))/1960=46099201/18819920
(46099201-1/(46099201*2))/18819920=4250272665676801/1735166549767840
(4250272665676801-1/(4250272665676801*2))/1735166549767840
=36129635465198759610694779187201/14749861913749949808286047759680
=2.44948974278317809819728407470589139196594748065667012843269256…
いえ、あの、元の共通テストの問題はご覧になってますかね?
この問題はどれだけ近い有理数を作れるかではなく、真値がわからない状態で上から n 桁を確定したいという意図の問題です。
なので、「実際の真値を見ると上から n 桁合っている」だけなのはそれほど価値はないのですよ。
いいえ、拝見していません。
最初から、「このように計算すると精度の高い値を得ることが出来ますね」という、元の問題とは関係なく(私の)興味がある計算を書いただけのつもりです。
元の問題から話がそれてはいけなかったのでしたら、ごめんなさい。
逸れていけないことはないですが、別の話だと断りを入れてから始めないとただ無意味に場を混乱させるだけかと思います。
そして、近い有理数を得たいだけなのであれば、
(5√13-18)^16 = 4028705132934095091878401 - 1117361763886065161254560√13
より(略)
で、わざわざ倍々計算を辿らなくても 1 行の式で 48 桁合わせられますよ。