combine the numerical coincidences 10^.3 ~= 2 and 10^.7 ~= 5 (equivalently 10^.1 ~= 2^(1/3) ~= 5^(1/7) ) in various ways, shifting by powers of 10 as necessary, to yield the approximations below. multiple routes can result in disagreeing approximations. for example, 10^-0.9 = 10^(0.7*3 - 3) = 5^3/1000 = 0.125 or 10^-0.9 = 10^(0.3*7 - 3) = 2^7/1000 = 0.128 . the exact values (to 3 significant figures) are also included in bold. the exact values can also be distinguished because they usually are not digit patterns from powers of two: 625 125 25 5 1 2 4 8 16 32 64 128 256 512.
inspiration was to determine whether 10^.8 ~= sqrt 40 is related to the above concidences. it is, because we can derive (10^.8)^2 = 10^1.6 = 10 * 10^.6 ~= 10 * 4 = 40 from the table below.
10^-0.9 = 0.125
10^-0.9 = 0.126
10^-0.9 = 0.128
10^-0.8 = 0.158
10^-0.8 = 0.16
10^-0.7 = 0.2
10^-0.6 = 0.25
10^-0.6 = 0.251
10^-0.6 = 0.256
10^-0.5 = 0.316
10^-0.5 = 0.32
10^-0.4 = 0.398
10^-0.4 = 0.4
10^-0.3 = 0.5
10^-0.3 = 0.501
10^-0.3 = 0.512
10^-0.2 = 0.625
10^-0.2 = 0.631
10^-0.2 = 0.64
10^-0.1 = 0.794
10^-0.1 = 0.8
10^0.0 = 1
10^0.1 = 1.25
10^0.1 = 1.26
10^0.1 = 1.28
10^0.2 = 1.58
10^0.2 = 1.6
10^0.3 = 2
10^0.4 = 2.5
10^0.4 = 2.51
10^0.4 = 2.56
10^0.5 = 3.16
10^0.5 = 3.2
10^0.6 = 3.98
10^0.6 = 4
10^0.7 = 5
10^0.7 = 5.01
10^0.7 = 5.12
10^0.8 = 6.25
10^0.8 = 6.31
10^0.8 = 6.4
10^0.9 = 7.94
10^0.9 = 8
perl -we 'for ( $i = -4 ; $i <= 9 ; ++$i ) { for ( $j = -4 ; $j <= 3 ; ++$j ) { $x = 10 ** $j * 2 ** $i ; $l = log ( $x ) / log ( 10 ) ; next if ( $l < -1.999 ) or ( 1.999 < $l ) ; printf ( "%.1f %g\n" , $l , $x ) } } for ( $i = -19 ; $i <= 19 ; $i++) { $x = $i / 10. ; $y = sprintf ( "%.2e" , 10 ** $x ) ; printf ( "%.1f %g\n" , $x , $y ) }' | sort -g | uniq
next, we consider errors of a specific choice of approximation:
approx | exact | relative error | min. range | max. range | |
---|---|---|---|---|---|
10^0.1 | 1.25 | 1.259 | -0.71% | 1.244 | 1.274 |
10^0.2 | 1.6 | 1.5849 | 0.95% | 1.566 | 1.604 |
10^0.3 | 2 | 1.9953 | 0.24% | 1.971 | 2.019 |
10^0.4 | 2.5 | 2.512 | -0.47% | 2.482 | 2.542 |
10^0.5 | 3.2 | 3.162 | 1.19% | 3.1246 | 3.2 |
10^0.6 | 4 | 3.981 | 0.48% | 3.934 | 4.029 |
10^0.7 | 5 | 5.012 | -0.24% | 4.952 | 5.072 |
10^0.8 | 6.3 | 6.310 | -0.15% | 6.234 | 6.3848 |
10^0.9 | 8 | 7.943 | 0.71% | 7.849 | 8.038 |
10^1.0 | 10 | 10 | 0% | 9.881 | 10.119 |
Pari/GP:
a=[1.25,1.6,2,2.5,3.2,4,5,6.3,8,10]
maxerror=(3.2-sqrt(10))/sqrt(10) ; for(i=1,10,x=a[i] ; y=10^(i/10) ; z=(x-y)/y*100 ; printf("<tr> <td>10^%.1f</td> <td>%5.2f</td> <td>%6.3f</td> <td>%5.2f%%</td> <td>%6.3f</td> <td>%6.3f</td> </tr>\n",i/10,x,y,z,y-maxerror*y,y+maxerror*y))
the "approx" column is the aesthetically chosen approximation. "exact" is to 3 (ish) decimal digits. the largest relative error, 1.19%, happens at 10^0.5 = sqrt(10). the min and max range columns gives the bounds for 1.19% error around all the exact values.
assuming we're not willing choose a more accurate approximation for sqrt 10 than 3.2, the aesthetic problem is to choose the "simplest" number in each range as the approximation. should 10^.1 be 1.26 or 1.25 ? should 10^.9 be 7.9 or 8 ?
previously, common logarithms, tenth root of ten, etc.
No comments :
Post a Comment