- 自然数xがn桁の数で最高位の数字がaであるということを不等式で表すと,
- a0000…(0がn−1個)≦x≦a9999…(9がn−1個)
- となり,これを同値変形していくと
- a×10n-1≦x<(a+1)×10n-1
- log(a×10n-1)≦logx<log((a+1)×10n-1)
- n−1+loga≦logx<n−1+log(a+1)
- ゆえに
- n=(logxの整数部分)+1
- loga≦(logxの小数部分)<log(a+1)
- x=232 とすると
- logx=32log2=32×0.3010=9.6320
- n=9+1=10
- log4=0.6020≦0.6320<0.6990=log5 より a=4
したがって,232 は 4*********(40億強)であることがわかる.
(正確な値は 4294967296.)
|
- logaの値
(小数第5位四捨五入)
-
a | loga
|
---|
1 | 0.0000
| 2 | 0.3010
| 3 | 0.4771
| 4 | 0.6021
| 5 | 0.6990
| 6 | 0.7782
| 7 | 0.8451
| 8 | 0.9031
| 9 | 0.9542
| 10 | 1.0000
|
|
2の累乗 2k(k=0,1,2,3,…)の最高位の数字を見ると,
1,2,4,8,1,3,6,1,2,5 が周期的に現れるように見える.
これは,210=1024 が10の累乗に近いために起きている現象で,
この周期が永久に続くわけではなく,いつか7や9も現れる.
2の累乗 2k の最高位の数字が7になる最小のkはいくつか.
- 前問の考察から,次の不等式を満たす最小のkを求めればよい.
- log7≦(klog2の小数部分)<log8
- 0.8451≦(0.3010×kの小数部分)<0.9031
- kを2桁の数 ab (aが十の位,bが一の位)とする.
- 小数第1位が8になることからbは6である.
- 小数部分は 0.8a60 となるので,ab=46 が最小のkである.
- たしかに 246 は7で始まる最小の2の累乗である.
では2の累乗 2k の最高位の数字が9になる最小のkはいくつか.
- 同様に考える.
- log9≦(klog2の小数部分)<log10
- 0.9542≦(0.3010×kの小数部分)<1.0000
- 小数第1位が9になることからbは3である.
- 小数部分は 0.9a30 となるので,ab=63 が最小のkである.
- ところが,9で始まる最小の2の累乗は253である.
最小のkが63であると導いた上の論法のどこが間違っているのか.
0.3010×53=15.9530 の小数部分は 0.9530>0.9542=log9 だから,
253 の最高位の数字は8ではないのか.
- log2=0.3010 は小数第5位を四捨五入した近似値である.
正確には=でなくて次の範囲にあることを示している.
- 0.30095≦log2<0.30105
- log4=0.6021 より,この範囲はもっとせばめることができる.
- 0.60205≦log4=2log2<0.60215
- 0.301025≦log2<0.30105
- log9=0.9542 も次の範囲にあることを示している.
- 0.95415≦log9<0.95425
- これから253 の最高位の数字が9であることがわかる.
- 53log2≧0.301025×53=15.954325
- (53log2の小数部分)>0.95425>log9
|
- 2の累乗
-
k | 2k
|
---|
0 | 1
| 1 | 2
| 2 | 4
| 3 | 8
| 4 | 16
| 5 | 32
| 6 | 64
| 7 | 128
| 8 | 256
| 9 | 512
| 10 | 1024
| 11 | 2048
| 12 | 4096
| 13 | 8192
| 14 | 16384
| 15 | 32768
| 16 | 65536
| 17 | 131072
| 18 | 262144
| 19 | 524288
| 20 | 1048576
| 21 | 2097152
| 22 | 4194304
| 23 | 8388608
| 24 | 16777216
| 25 | 33554432
| 26 | 67108864
| 27 | 134217728
| 28 | 268435456
| 29 | 536870912
| 30 | 1073741824
|
|
このように,近似値は扱いを誤ると間違った結果を導くおそれがある.
問題の作成には十分な注意をはらわないといけない.
また,近似値,有効数字,誤差の範囲について数学のどこかの時間で解説してほしい.
|
通常コンピュータの内部表現は2進法を用いているので,0.1 さえも正確な値ではなく近似値で表されている.
大量の計算をすると誤差が蓄積されて思わぬ結果を導き出すことがある.
|