手計算が面白い                   戻る

 平方根の計算ができる電卓が、ほぼタダ同然で手に入る世の中にあって、いろいろな数
学的値が実感できない人が増えつつある。

  の値が把握されていないものだから、底辺、垂辺の長さが、1 と 2 の直角三角形を
書くと、斜辺の長さは、何も考えずに、 と自信満々に答える。相当に、2:1: の比
をもつ三角形の呪縛にはまっているという感じである。

  は、2 より小さい数なので、この3辺の組合せでは、決して斜辺の長さとはなり得ない。
小学・中学・高校において、数の値を把握する訓練の必要性を痛感する。

 例えば、中学3年で学習する「分母の有理化」は、数の値を把握するための計算なのであ
り、何も「分母に無理数があると美しくないから」という理由で有理化するわけではないので
ある。もっと詳しく言及すれば、Q()=Q[]が真の意味するところであるが...。

 ここら辺の認識が現在の中学・高校生にはないように感じられる。だから、分母に無理数
を残したままでよいというと、一様に生徒は戸惑いを覚えるようだ。いままで、機械的に分母
の有理化を行ってきたツケだろう。

 みなさんは、次の問にすぐ答えることができるだろうか?

問  ≒1.732 であることを用いて、次の数はおおよそいくら位か?

 (1)             (2)   

(答) (1) 0.577  (2) 2.366

 手計算で平方根、立方根を計算する方法も知られているので、もし興味をもたれたら是
非、挑戦して欲しいと思う。

 このページでは、いろいろな値を手計算で求める方法についてまとめてみたい。

例  の値を小数第1位まで正しく求めよ。

(解) 42<23<52 で、4< <5 より、  =4+α (0<α<1) とおける。

両辺を平方して式を整理すると、 α2+8α−7=0  という2次方程式が得られる。

このとき、10α (αの10倍を考えることにより、αの小数第1位を求める!)を X とおく。

α=X/10 を、さきほどの2次方程式に代入して式を整理すると、

グラフによる解法      X2+80X−700=0

 F(X)=X2+80X−700 とおくと、

     F(7)=−91<0、F(8)=4>0

 したがって、左図より、10α=X=7.・・・ となるので、

  α=0.7・・・ であることが分かる。
 

 以上から、  ≒ 4.7・・・ となる。  (終)

 この方法を順次続ければ、平方根の値により近い小数が得られる。

(因みに、電卓を用いれば、 ≒ 4.79583・・・ である。)

例  の値を小数第1位まで正しく求めよ。

 この値は、関数電卓を用いれば、 =0.630929746・・・ である。関数電卓がなく
ても、小数第1位ぐらいまでは手計算で、いつも求まるようにしておきたいものだ。

(解) 26<34 より、2<30.666・・・ だから、 <0.666・・・

 また、35<28 より、30.625<2 だから、0.625<

したがって、0.625< <0.666・・・ となり、 ≒0.6・・・ であることが分かる。

 この手計算で、 の小数第2位を決定することは難しい。

 220=1048576、313 =1594323 で、220<313 より、2<30.65 だから、

 0.625< <0.65 を求めるのが精一杯である。


(追記) 平成25年8月30日付け

 当HP読者のHN「ももっこうの父」さんよりご投稿頂きました。

 上記の計算で、指数を1ずつ小さくして、219=524288、312=531441で、

 219<312 より、2<30.63158 だから、 0.625< <0.632 と求まる。

これより、 の小数第2位は、2または3ということが分かる。さらに続けて、

 246=70368744177664、329=68630377364883 で、246>329 より、

 2>30.6304 だから、 0.6304< <0.632 と求まる。

 これより、 の小数第2位は、3ということが分かる。


(コメント) 246と329の計算は大変ですが、手計算でやってやれないことはないですね!
   ただ、この2数の組を探す方がもっと大変かも...。ももっこうの父さんに感謝します。


(追記) DD++ さんからご投稿いただきました。(平成29年1月25日付け)

 log3 2 を(手計算で)求めよ、という問題について、2=3x の解をファレイ数列的に有理数
近似していけばいいのではないかということを思いつきました。

 まず、底と真数のうち小さい方の1乗と大きい方の0乗を比較します。
(2= ) 2^1 > 3^0 ( =1) …… (1)

 次に、小さい方の1乗と大きい方の1乗を比較します。
(2= ) 2^1 < 3^1 ( =3) …… (2)

以下、最後に出てきた左辺が大きい式と、最後に出てきた右辺が大きい式で辺々積をとり、
大小を判定します。

(1)(2) の辺々で積をとって比較  (4= ) 2^2 > 3^1 ( =3) …… (3)

(3)(2) の辺々で積をとって比較  (8= ) 2^3 < 3^2 ( =9) …… (4)

(3)(4) の辺々で積をとって比較  (32= ) 2^5 > 3^3 ( =27) …… (5)

(5)(4) の辺々で積をとって比較  (256= ) 2^8 > 3^5 ( =243) …… (6)

(6)(4) の辺々で積をとって比較  (2048= ) 2^11 < 3^7 ( =2187) …… (7)

(6)(7) の辺々で積をとって比較  (524288= ) 2^19 < 3^12 ( =531441) …… (8)

(6)(8) の辺々で積をとって比較  (134217728= ) 2^27 > 3^17 ( =129140163) …… (9)

(9)(8) の辺々で積をとって比較  (70368744177664= ) 2^46 > 3^29 ( =68630377364883)

で、 3^(29/46) < 2 < 3^(12/19) が得られ、 0.6304 < 29/46 <log3 2< 12/19 < 0.6316 を見
出すことができます。

 この方法の何が嬉しいかといえば、掛け算を2回するごとに、これまでより良い不等式が必
ず手に入る点。せっかく計算したのに当てが外れてガッカリということが一切ありません。

 運悪く不等号が同じ側に連続すると(つまりlogの値が簡単な分母の有理数に近いと)収束
が非常にもたつくという欠点はありますが。

途中から必要な桁数分の有効数字にしても大丈夫と思います。

10^0 < 2^1 ( =2)
10^1 > 2^1 ( =2)
10^1 > 2^2 ( =4) ---> log[10]2 < 1/2 = 0.5
10^1 > 2^3 ( =8) ---> log[10]2 < 1/3 < 0.334
10^1 < 2^4 ( =16) ---> log[10]2 > 1/4 = 0.25
10^2 < 2^7 ( =128) ---> log[10]2 > 2/7 > 0.285
10^3 < 2^10 ( =1024) ---> log[10]2 > 3/10 = 0.3
10^4 > 2^13 ( =8192) ---> log[10]2 < 4/13 < 0.30770
10^7 > 2^23 ( =0.8389×10^7)  ---> log[10]2 < 7/23 < 0.30435
10^10 > 2^33 ( =0.8590×10^10)  ---> log[10]2 < 10/33 < 0.30304
10^13 > 2^43 ( =0.8796×10^13)  ---> log[10]2 < 13/43 < 0.30233
10^16 > 2^53 ( =0.9007×10^16)  ---> log[10]2 < 16/53 < 0.30189
10^19 > 2^63 ( =0.9223×10^19)  ---> log[10]2 < 19/63 < 0.30159
10^22 > 2^73 ( =0.9444×10^22)  ---> log[10]2 < 22/73 < 0.30137
10^25 > 2^83 ( =0.9671×10^25)  ---> log[10]2 < 25/83 < 0.30121
10^28 > 2^93 ( =0.9903×10^28)  ---> log[10]2 < 28/93 < 0.301075
10^31 < 2^103 ( =1.0141×10^31)  ---> log[10]2 > 31/103 > 0.300971
10^59 < 2^196 ( =1.0043×10^59)  ---> log[10]2 > 59/196 > 0.301020
10^87 > 2^289 ( =0.9946×10^87)  ---> log[10]2 < 87/289 < 0.3010381
10^146 > 2^485 ( =0.9989×10^146)  ---> log[10]2 < 146/485 < 0.30103092
10^205 < 2^681 ( =1.0032×10^205)  ---> log[10]2 > 205/681 > 0.30102790
10^351 < 2^1166 ( =1.0021×10^351)  ---> log[10]2 > 351/1166 > 0.30102915
10^497 < 2^1651 ( =1.0010×10^497)  ---> log[10]2 > 497/1651 > 0.30102967
10^643 ? 2^2136 ( =0.9999×10^643)  ---> log[10]2 ? 643/2136 = 0.30102996……
(今回の有効数字だと最後の大小は非常にあやしいので不採用)

で、 0.30102967 < 497/1651 < log10 2< 146/485 < 0.30103092 を得ました。

 特に、最後の 643/2136 は、仮数部分がぐっと1に近づいたので、大小は不明ですがかな
りよい近似分数になっているのではないかと考えられます。

 右の計算は収束速度の参考にやっただけで、実際は必要な行だけやれば十分です。これ
なら手計算でもなんとかなるのではないでしょうか。

 3/10 に値が近いせいで、3桁目の決定にもたつきすぎなことと、その後は一気に進行する
ことが見て取れますね。log10 3 はもっと早く求まると思います。


 らすかるさんからのコメントです。(平成29年1月25日付け)

 log の手計算は以前考えたことがありますが、以下の公式を使うと効率良く精度が上げら
れます。(以下、底のない対数は自然対数です)

 y = (x-1)/(x+1) とすると、 logx = log((1+y)/(1-y)) = 2(y + y^3/3 + y^5/5 + …) なので、

x=(t+1)/t とすると、 y=1/(2t+1) となり、

 log((t+1)/t) = 2(1/(2t+1) + 1/((2t+1)^3・3) + 1/((2t+1)^5・5) + …)

 これを使って、log3 2を求めます。t が大きいほど精度が良いので、小さい t を使うのは
避け、まず、

 log(7/6)≒2{1/13+1/(13^3・3)}≒0.154150
 log(8/7)≒2{1/15+1/(15^3・3)}≒0.133531
 log(9/8)≒2{1/17+1/(17^3・3)}≒0.117783

の3つを求めると、

 log2=2{log(7/6)+log(8/7)}+log(9/8)≒0.693145
 log3=3{log(7/6)+log(8/7)}+2log(9/8)≒1.098609

より、log3 2=log2/log3≒0.693145/1.098609≒0.630930 のように求まります。

 2/(13^5・5)≒10^(-6) なので、上記のように級数2項で6桁近くの精度があります。級数を1
項増やすと精度は2桁以上上がります。もう1つ、log(10/9)を求めておけば、

 log2=2{log(7/6)+log(8/7)}+log(9/8)
 log3=3{log(7/6)+log(8/7)}+2log(9/8)
 log4=2log2
 log5=log4+log(9/8)+log(10/9)
 log6=log2+log3
 log7=log6+log(7/6)
 log8=3log2
 log9=2log3
 log10=log2+log5

のように、log2〜log10 まで求められますので、log10 2〜log10 9も算出できることになります。


 ますた〜さんからのコメントです。(平成29年1月26日付け)

 まさにオイラーの用いた方法ですね。これは試行錯誤で気付いたものなのでしょうか?そ
れとも収束が速いと何かしらの方法であらかじめ解っていたのでしょうか?収束の速さを計
算することなくはかる方法があるか以前ふと思ったこともあって気になりました。もしよけれ
ば教えてください。


 らすかるさんからのコメントです。(平成29年1月27日付け)

 オイラーの用いた方法だったのですか、それは存じませんでした。上記は試行錯誤で気付
きました。最大約2万桁を扱う自作電卓プログラムを作るのに、いろいろな計算で収束を速く
する必要があり、logに限らず他もいろいろ考えました。


 ますた〜さんからのコメントです。(平成29年1月28日付け)

 なるほどプログラムが動機だったのですね。ありがとうございました。


例  の値を小数第1位まで正しく求めよ。

(解) 52<33、37<55 より、1.4< <1.5 だから、 ≒1.4・・・  (終)

例  のおおよその値を求めよ。

(解) 23=8≒10 だから、3 ≒ 1   よって、 ≒ 0.3・・・

 23<32<10 だから、3 <2 <1

よって、0.45・・・< <0.5 の範囲の数であることが分かる。  (終)


(追記) 平成25年10月26日付け

 上記の例からも分かるように、数のおおよその値を求める場合、不等式による評価だけ
では何れ限界がくる。

 最近、Niklaus Wirth さんのHPサイト「Programming in Oberon」の14頁に、対数を求める
プログラムが載っていることを、都立深川高校の加藤 一さんにお教えいただいた。

 次のような手順で求めるらしい。

(1) log10x=(1/2)log102

(2) 2≧10 ならば、 log102=1+log10(x2/10)

 以降、(1)(2)を繰り返す。

例 実際に、このアルゴリズムで計算してみると、

 =1/22+1/25+1/26+1/28+1/212+・・・

 =0.25+0.03125+0.015625+0.0039062+0.0002441+・・・

 =0.3010253・・・・

上記の計算から、小数第3位までは正しい値であるものと推察される。

(参考)  ≒ 0.3010 2999 5663 9811 9521 3738 8947 2449 ・・・


(コメント) 上記の計算を手計算で行うのは少し無理がありますが、普通の電卓で十分計算
     可能ですね!

 同様にして、 も計算してみた。

log103=(1/2)log109=(1/4)log1081=1/4+(1/4)log108.1

 =1/4+(1/8)log1065.61=1/4+1/8+(1/8)log106.561

 =1/4+1/8+(1/16)log1043.046721

 =1/4+1/8+1/16+(1/16)log104.3046721

 =1/4+1/8+1/16+(1/32)log1018.530201

 =1/4+1/8+1/16+1/32+(1/32)log101.8530201

 =1/4+1/8+1/16+1/32+(1/64)log103.4336834

 =1/4+1/8+1/16+1/32+(1/128)log1011.790181

 =1/4+1/8+1/16+1/32+1/128+(1/128)log101.1790181

 =1/4+1/8+1/16+1/32+1/128+(1/2048)log1013.942072

 =1/4+1/8+1/16+1/32+1/128+1/2048+(1/2048)log101.3942072

 =0.25+0.125+0.0625+0.03125+0.0078125+0.0004882+・・・

 =0.4770507・・・

 上記の計算から、小数第3位までは正しい値であるものと推察される。

(参考) log103 ≒ 0.4771 2125 4719 6624 3729 5027 9032 5512 ・・・


(コメント) アルゴリズムは理解できたが、とっても収束が遅いような...そんな雰囲気。


例 220 は何桁の数で、その首位の数は何か?ただし、 ≒0.3010。

(解)  ≒ 0.3010  だから、20 ≒6.02

 よって、106<220<107 となり、7桁の数であることが分かる。

 また、0<0.02<0.3010 より、6<6.02<6+

 したがって、106<220<2・106 だから、220 の首位の数は、1 である。

(因みに、220 =1048576 である。)

例 (1/2)20 は小数第何位に初めて0でない数字が現れるか?また、その数字は

 何か? ただし、 ≒0.3010 、 ≒0.4771 とする。


(解) −20 ≒ −6.02 なので、10-7<(1/2)20<10-6

よって、小数第7位に初めて0でない数字が現れる。

また、−6.02=−7+0.98 で、2×0.4771<0.98<1 だから、

 −7+2× <−6.02 <−6 すなわち、9・10-7<(1/2)20<10-6

したがって、求める数は、9 である。

(因みに、(1/2)20 =0.00000095367・・・ である。)

例 (0.99)10 の値を小数第2位まで正しく求めよ。

(解) 2項定理 (a+b)=a+nan-1b+n(n-1)/2an-22+・・・+b を用いて、

 (0.99)10=(1−0.01)10

 =1−10・0.01+45・0.0001−120・0.000001+・・・

 ≒0.90・・・   (第3項の45・0.0001以下急速に小さくなる!)

例  の値を小数第3位まで正しく求めよ。

 ただし、 ≒0.3010 、 ≒0.4771 とする。


 この問題は、東北大学 理系 後期(2008)の入試問題の一部である。

(解) 4=log102401 であるのに対して、その近くの値として

log102400=log1024×100

 =log103+3log102+2

 =0.4771+3×0.3010+2=3.3801  であることに注目する。

 ここで、 log102401−log102400=log10(1+1/2400)

ところで、 x≧0 のとき、 log(1+x)≦x が成り立つ。

 実際に、 F(x) = x−log(1+x) とおくと、F’(x) = 1−1/(1+x) = x/(1+x) ≧0

であるので、 F(x) は単調に増加する。 また、 F(0) = 0 であるので、

 x≧0 のとき、 F(x) ≧ 0 となり、 log(1+x) ≦ x となる。

このことから、

 log102401−log102400

 =log10(1+1/2400)

 <log(1+1/2400)≦1/2400=0.0004166・・・

より、 log102401<log102400+0.0004166・・・=3.3805166・・・

すなわち、 3.3801<4<3.38052 より、0.845025<<0.84513

なので、 の値を小数第3位まで正しく求めれば、 0.845 となる。  (終)


(追記) 平成30年7月11日付け

 数研通信No.91(数研出版)で、埼玉県立豊岡高校の結川義明先生が、この
値について考察されている。興味深く拝読させていただいた。

 1桁の常用対数は、すべて の値を用いて求められる。

 実際に、

log104=2

log105=1−

log106=

log108=3

log109=2

 さて、問題は、log107 である。上記のように を用いた等式で表すことは
諦める必要がありそうだが、不等式で評価するという技が有効である。

 log107 の値を小数第2位まで求めたい場合

 不等式 4<7<5 において、

 log10=2+(1/2)

  =0.3010、=0.4771 として、log10=0.84055

 同様にして、

 log10=1−+(1/2)=1−(1/2)=0.8495

 よって、 0.84055<<0.8495 から、 =0.84・・・ と言える。

 log107 の値を小数第3位まで求めたい場合

 上記の東北大学の問題のように解いても得られるが、次のような別解が示されている。

  4=log102401>log102400 であることに注目して、

  log102400=log1024×100=log103+3log102+2=3.3801

  よって、 >0.845025

 また、 24・3×210=48×1024=49152>49000=72×103 に注目して、

 log104・3×210>log102×103

 すなわち、 14>2+3 より、

  <(14−3)/2=0.84555

 よって、 0.845025<<0.84555 から、 =0.845・・・ と言える。


(コメント) 不等式の評価により、何とか小数第3位までは正しく求められたが、さらに、小
      数第4位まで正しく・・・と問われると、かなり難しい...。


(追記) 平成20年7月30日付け

 当HPの掲示板「出会いの泉」にHN「まったりーな」さんが関数電卓について書き込みを
された。

 関数電卓が、Windows に標準で付いているということを伺って、いろいろ遊んでみた。

手持ちのカシオの関数電卓を久しぶりに引っ張り出して使ってみたら、液晶部分が黒ずんでいてひど
くガッカリした!私のお気に入りだったのに...。


 普通の電卓も関数電卓もともに32桁の表示で、かなり高性能である。これだと、もう関数
電卓を別途購入する必要は全くないですね!

 常用対数は通常4桁くらいしか覚えておらず、その先がどうなっているか興味があったの
で計算させてみた。

 log102 ≒ 0.3010 2999 5663 9811 9521 3738 8947 2449 ・・・

 log103 ≒ 0.4771 2125 4719 6624 3729 5027 9032 5512 ・・・

 掲示板で、「まったりーな」さんは、次の問題を提起された。

 3の1000乗を常用対数表を使って、近似値を求めたい

 数学Uで学ぶ手法では、次のように解かれる。

 log101000=1000×log10

通常は、log103 ≒ 0.4771 より、 log101000 ≒ 477.1 となるので、

 log10 a =0.1 となる数 a をとれば、a はだいたい 1.26〜1.58 の間の数で、

 31000 ≒ a × 10477

と書けることになる。

 このことから、31000 は、478桁の整数で、首位の数は、1 で、末位の数も 1 となる。

ここら辺が、常用対数表で求められる限界である。

 Windows に標準でついている関数電卓に出会うまでは、上記の解答で満足していた
が、「まったりーな」さんに教えていただいた関数電卓を使うとさらに詳しく調べられる。

 log103 ≒ 0.4771 2125 4719 6624 3729 5027 9032 5512 ・・・

なので、

 log101000=1000×log10

=477.1212 5471 9662 4372 9502 7903 2551 2 ・・・

 よって、 log10 a =0.1212 5471 9662 4372 9502 7903 2551 2 ・・・

となる a の値を詳しく求めれば、31000 に関する情報も詳しくなる。

 関数電卓を用いると、

  a ≒ 1.3220 7081 9480 8066 3689 0455 2597 664 ・・・

と簡単に求められる。(「Inv」と「log」を活用すればよい!)

 このことから、怖ろしく大きい数 31000 のだいたいの様子が分かる。

 1000 ≒ 1322 0708 1948 0806 6368 9045 5259 7664 ・・・・ ・・・1

 これは、ちょっと感動ものですね...!

 こんな面倒なことをせず関数電卓を使えば、

 1000 ≒ 1322 0708 1948 0806 6368 9045 5259 7521 ・・・・ ・・・1

と出る。

 先頭から30番目以降の数に違いがあるので、ここら辺から誤差が生じているのだろう。

ちょっと、気になりますね...?


(コメント) 関数電卓は、今後私とお友達になれそうです。関数電卓のことを教えていただ
      いた「まったりーな」さんに感謝いたします。


(追記) 平成28年12月6日付け

 最近、岩手大学前期理系(平成12年度)の入試問題に、上記の話題に関連する問題が
出題されていることに気づかされた。

問題 80<81および243<250であることに注意して、

   3/10<log102<23/75、19/40<log103<12/25

であることを示せ。

(解) 210>103 より、 10log102>3 なので、 3/10<log102 が言える。

 さらに、 80<81 より、 3log102+1<4log10

 243<250 より、 5log103<3−2log102 なので、4log103<12/5−(8/5)log10

 よって、 3log102+1<12/5−(8/5)log102 より、

   (23/5)log102<12/5−1=7/5 なので、 log102<7/23

 7/23−23/75=(525−529)/(23・75)<0 なので、 7/23<23/75

 よって、 3/10<log102<7/23<23/75

 3log102+1<4log103 より、 3(3/10)+1<4log103 なので、 19/40<log10

 また、 5log103<3−2log102<3−2(3/10)=12/5 より、 log103<12/25

 よって、 19/40<log103<12/25


(コメント) 23/75=0.30666・・・ に対して、 7/23=0.3043478・・・ なので、

 問題文の評価式 3/10<log102<23/75 よりも、3/10<log102<7/23 の方が

 より厳しい評価となる。また、7/23<23/75 から、log102<23/75 を示したが、直接

に示すことも可能である。

  3log102+1<4log103 と log103<12/25 から、 3log102+1<48/25

 よって、 log102<(48/25−1)/3=23/75

 上記の計算から、確実に言えることは、 log102≒0.30・・・ であることと、

19/40=0.4775・・・ 、12/25=0.48 から、 log103≒0.4・・・ である。


(追記) 次の日本大学(1997)の問題も手計算の魅力を追求した問題である。
    (平成29年1月25日付け)

問題 101100の下8桁は?

(解) 2項定理より、

101^100= (100+1)^100

= 1^100 + 1001・100 + 1002・100^2 + 1003・100^3 + 1004・100^4 + ・・・

 求めるのは下位8桁なので、上の式から

 1^100 + 1001・100 + 1002・100^2 + 1003・100^3

の値を求めれば十分である。(100^4は9桁の数)

 よって、

 1^100 + 1001・100 + 1002・100^2 + 1003・100^3

= 1 + 100・10^2 + 4950・10^4 + 161700・10^6

= 161749510001

より、求める下8桁は、「49510001」である。


(追記) 令和6年1月29日付け

 電卓を用いると、 =3.605551275・・・ である。

 このの「整数部分、少数第1位、小数第2位を求めよ」という問題が、

令和6年1月14日に行われた大学入学共通テスト 数学 I+A の第1問[1]で出題された。

 計算の方法は、2の小数部分を評価する手法が取られた。

 2の小数部分を a とおき、b=1/a の取り得る値の範囲を求めて、の近似値が
求められる。

 実際に、7<2<8 から、2の整数部分は、7 なので、小数部分 a は、

a=2−7 となる。このとき、b=1/a=1/(2−7)=(2+7)/3 において、

7<2<8 から、14/3<b<5 となる。よって、 1/5<a<3/14 となる。

 1/5<2−7<3/14 なので、 18/5<<101/28

 ここで、18/5=3.6 、101/28=3.607・・・ なので、

の整数部分は3で、小数第1位の数字は6、小数第2位の数字は0であることが分かる。

 「2」では、小数第2位までしか正しく計算されない。一般の「k」に、この手法を用

いて、の近似値を追求することにしよう。

 「5」では、18<5<19 なので、a=5−18 とおき、1/a を求める。

1/a=5+18 より、 36<1/a<37 なので、 1/37<a<1/36

すなわち、 (18+1/37)/5<<(18+1/36)/5 より、

 3.6054・・・<<3.6055・・・

 よって、の小数第3位が5であることが確かめられた。

 上記の計算から分かるように、小数第4位がまだ未確定である。もう少し計算を続けよう。

 「15」では、54<15<55 なので、a=15−54 とおき、1/a を求める。

1/a=(15+54)/9 より、 12<1/a<109/9 なので、 9/109<a<1/12

すなわち、 (54+9/109)/15<<(54+1/12)/15 より、

 3.60550・・・<<3.60555・・・

 よって、の小数第4位が5であることが確かめられた。


の小数第4位を求めるのに、「15」の計算が必要であった。それほど能率のい
 い方法ではないのかもしれない。


 DD++ さんからのコメントです。(令和6年2月1日付け)

 について、さらにその先を追究したいと思います。

 (5)^2−18^2=1 と右辺が 1 (または -1)になるものを得た時点で、あとは、

(5−18) (5+18)=1 の両辺を n 乗するだけで簡単に精度を高められます。

・2乗の場合

(649−180) (649+180)= 1 と 1298 < 649+180 < 1299 より、

(649−1/1298)/180 << (649−1/1299)/180 すなわち、

3.60555127546…… << 3.60555127876…… で、小数点以下 8 桁まで正しい。

・3 乗の場合

(6485−23382) (6485+23382)= 1 と 46764 < 6485+23382 < 46765

より、 (23382+1/46765)/6485 <<(23382+1/46764)/6485 すなわち、

3.6055512754639187…… << 3.6055512754639892 で、

小数点以下 13 桁まで正しい。

 = 3.6055512754639892931…… と比較すればわかるように、偶数乗では下限が、奇
数乗では上限がかなり精度のいい近似になります。
(1乗の時も実は上限側はかなり精度がよい)


(コメント) DD++ さん、さらなる追求をありがとうございます。


 らすかるさんからのコメントです。(令和6年2月1日付け)

 連分数の打ち切りとの関係

=[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/1298)/180 << (649−1/1299)/180

 (23382+1/46765)/6485 <<(23382+1/46764)/6485

 それから、上の流れを見ると、

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…(小数はと一致する桁のみ)

のように計算することで精度を倍々にすることができますね。


 DD++ さんからのコメントです。(令和6年2月1日付け)

 ペル方程式の解の構成から着想を得ているので、連分数展開と関係があるのは、まさに
その通りです。らすかるさんの方法で疑問なんですが、倍精度で一致していく保証はどこか
ら取るのでしょう?


 らすかるさんからのコメントです。(令和6年2月1日付け)

 DD++ さんの「2乗の場合」の計算から言えているような気がしますが、違いますかね?

 (a-b)(a+b) = 1 のとき、(a-b)^2 = a^2+13b^2-2ab = 2a^2-1-2ab

 (2a^2-1)/(2ab) = (a-1/(2a))/b となり、これは、a/b と比較して精度が2倍

 ちょっと雑だったかも知れませんので補足します。

 (a-b)(a+b) = 1 のとき、

 a-b = 1/(a+b) より、a/b- = 1/{b(a+b)}

最初の式を2乗すると、

 (a-b)^2(a+b)^2 = 1 より、2a^2-1-2ab = 1/(a+b)^2

(2a^2-1)/2ab- = 1/{2ab(a+b)^2}<1/{b(a+b)}^2 = (a/b-)^2

 よって、 (a-1/(2a))/b-<(a/b-)^2

もう一つ補足。

 (a-b)(a+b) = -1 の場合(5-18 = 1 のような場合)は、13b^2 = a^2-1 でなく、

13b^2 = a^2+1 となりますので、 (a-b)^2 = a^2+13b^2-2ab = 2a^2+1-2ab

より、(2a^2+1)/(2ab) = (a+1/(2a))/b のように、1箇所符号が変わりますが、他は同じです。

 一度2乗した後は、a-b = 1 の形になりますので、(a+1/(2a))/b のようにプラスになる
可能性があるのは初回だけです。


 DD++ さんからのコメントです。(令和6年2月2日付け)

 私のは、3.60555127546…… << 3.60555127876…… と上下から挟んでるので、

・3.60555127 までは確定
・続きも 546 くらいまであってそう(予想)

というように証明と予想を区別して出しています。


 らすかるさんからのコメントです。(令和6年2月2日付け)

 DD++さんが書かれている評価としてはその通りですね。しかし、計算は2乗していることか
ら、(言い方が雑ですが)との誤差が2乗されていて、精度が2倍になっていることが見
てとれますね。

 私が書いた上の計算を見ると、実際には2乗よりさらに小さくなっている(2乗の約0.14倍)
こともわかります。

 実際、上記で書いた計算でも、正しい小数点以下の桁数が、2桁、5桁、11桁、23桁、48桁
のように2倍以上になっていますね。

 この計算方法は、以外にも使えて、実際にいくつか計算してみましたが、

は、7/5 = 1.4 から始めて、5 回の計算で、72 桁
は、7/4 = 1.75 から始めて、5 回の計算で、71 桁
は、9/4 = 2.25 から始めて、5 回の計算で、78 桁
は、5/2 = 2.5 から始めて、5 回の計算で、62 桁
(いずれも桁数は真値と一致している小数点以下の桁数)

のようになっていました。せっかく計算したので、実際の計算を書いておきましょう。



7^2-(5)^2 = -1(差が±1であることは重要)
7/5 = 1.4
(7+1/(7*2))/5 = 99/70 (7-5<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…



7^2-(4)^2 = 1
7/4 = 1.75
(7-1/(7*2))/4 = 97/56 (7-4>0 なので、これは「−」、以下、も同じ)
(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…



9^2-(4)^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…



5^2-(2)^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…


 DD++ さんからのコメントです。(令和6年2月2日付け)

 いえ、あの、元の共通テストの問題はご覧になってますかね?この問題はどれだけ近い有
理数を作れるかではなく、真値がわからない状態で、上から n 桁を確定したいという意図の
問題です。なので、「実際の真値を見ると上から n 桁合っている」だけなのは、それほど価値
はないのですよ。


 らすかるさんからのコメントです。(令和6年2月2日付け)

 いいえ、拝見していません。最初から、「このように計算すると精度の高い値を得ることが
出来ますね」という、元の問題とは関係なく(私の)興味がある計算を書いただけのつもりで
す。元の問題から話がそれてはいけなかったのでしたら、ごめんなさい。


 DD++ さんからのコメントです。(令和6年2月2日付け)

 逸れていけないことはないですが、別の話だと断りを入れてから始めないと、ただ無意味
に場を混乱させるだけかと思います。

 そして、近い有理数を得たいだけなのであれば、

(5-18)^16 = 4028705132934095091878401 - 1117361763886065161254560

より・・・(略)

で、わざわざ倍々計算を辿らなくても 1 行の式で 48 桁合わせられますよ。



  以下、工事中!