常用对数表编制新方案的试算
先转录“事理环境论”先生的博文。该博文声明“禁止转载”,但因为该文内容述及本人三年前的同类博文,所以我就复制一下,转录到这里。目的是想传播一下有关编制常用对数表的方法原来可以有多个。我还想根据“事理环境论”先生的方法,编出一部份常用对数表,看看效果如何。
十七世纪的常用对数表是怎么算出来的
“事理环境论”
(2016-01-21
01:56:26)
前不久,在网上看到了金泽长街小牛先生的博文《
回到十七世纪,让我来编算一本常用对数表
》,受益匪浅。在我上中学时,也曾对数学用表中的对数和三角函数值是怎么算出来的感到好奇,但始终不得其解。中学时学的是四位对数表,毕业后也见到过八位对数表和十位对数表,但看不懂,不会用。读过小牛先生的文章后,不仅知道了对数表是怎么算出来的,也豁然明白八位对数表是怎么回事了。受小牛先生博文启发,我也想到了一种更为简单精确的计算常用对数表的方法,不用手算开高次方,只需加减乘除开平方,就可以编制出常用对数表,这里介绍出来,与大家分享。
第一步、计算第一组基础对数
这组基础的对数值是:1∕2, 1∕4, 1∕8, 1∕16, 1∕32, 1∕64, 1∕128,
1∕256, 1∕512, 1∕1024, 1∕2048, 1∕4096, 1∕8192共13个。
计算的方法很简单,就是不断开平方。在常用对数里,10的对数是1,把10开平方就得到对数1∕2的真数值,即√10,把计算结果再开平方就得到对数1∕4的真数值,把计算结果再开平方就得到对数1∕8的真数值,把计算结果再开平方就得到对数1∕16的真数值,…一直进行下去,等开到1∕8192就可以了。有这13个基础对数值,算8位对数表就够了,如果想要更精确的对数表,可以再多算几个基础对数,这里就不讨论了。
开平方是简单的运算,列竖式就可以开出来,开12位有效数字一般不会超过半小时,计算这13个基础对数一个人几小时就可以完成。有了这组基础对数,就可以通过把若干个基础对数相加的方式,计算出从1∕8192,2∕8192,3∕8192,......8191∕8192的任何一个对数,这8191个对数在0.0000~1.0000之间均匀分布。
第二步、计算第二组基础对数
这第二组基础的对数值是:0.5, 0.1, 0.05, 0.01, 0.005, 0.001,
0.0005, 0.0001共八个。
0.5即1/2,在第一组基础对数中就有;0.1=819.2∕8192,介于819∕8192与820∕/8192之间,其中819∕8192
=512∕8192+256∕8192+32∕8192+16∕8192+2∕8192+1∕8192
=1∕16+1∕32+1∕256+1∕512+1∕4096+1∕8192
对数相加,真数需相乘,将式中这6个基础对数对应的真数值相乘就可以得到819∕8192的真数值。
820∕8192
=512∕8192+256∕8192+32∕8192+16∕8192+4∕8192
=1∕16+1∕32+1∕256+1∕512+1∕2048
将式中这5个基础对数对应的真数值相乘就可以得到820∕8192的真数值。
819∕8192与820∕8192之间的间距很小,可以当成线性处理,在算出对数819∕8192和
820∕8192的真数值后,通过“线性内插法”就可以算出对数819.2∕8192即0.1对应的真数值。如担心多次相乘以及做线性内插时导致误差积累增大,可以把对数0.1的真数值累乘计算5次方,看与0.5的真数值能否对得上,如有误差,用开方公式做修正,消除误差。由于这样的计算本身已经很精确,误差修正的工作不会太费事。
得到对数0.1的真数值后,将之开平方就得到对数0.05的真数值。
然后,0.01=81.92∕8192,分别计算出对数81∕8192和82∕8192的真数值,再用“线性内插法”计算出对数0.01的真数值,当然,也要做误差修正。
同样的方法,可以计算出对数0.005, 0.001,
0.0005, 0.0001的真数值。
在算出这一组8个基础对数之后,就可以计算编制反对数表了。
第三步、计算编制反对数表
用对数做乘、除、乘方、开方运算得到的对数值,最终都要通过查反对数表才能得到真数,所以,反对数表是迟早必须要编的,而反对数表在计算方法上没有障碍,所以应该首先计算编制。有反对数表之后,再计算对数表就容易多了。
有了对数0.5和0.1对应的真数值,就可以计算出从0.1,0.2,0.3,….0.9这9个对数对应的真数值了,这9个对数构成的反对数表可以叫一级反对数表。计算的方法很简单,就是对数相加,真数相乘,比如0.6的对数,对数0.6=0.5+0.1,所对应的真数就是3.162277660168*1.258925411794
= 3.98107170553 …
有了对数0.05和0.01对应的真数值以及一级反对数表,很容易就可以计算出从0.01,0.02,0.03,…
0.99这99个对数对应的真数值,这99个对数构成的反对数表可以叫二级反对数表。计算的方法与前面相同,即对数相加,真数相乘。
有了对数0.005和0.001对应的真数值以及二级反对数表,就可以计算出从0.001,0.002,0.003,…
0.999这999个对数对应的真数值,这999个对数构成的反对数表可以叫三级反对数表。计算的方法与前面相同。
有了对数0.0005和0.0001对应的真数值,就可以计算出从0.0001,0.0002,0.0003,…
0.9999这9999个对数对应的真数值了,这9999个对数构成的反对数表可以叫四级反对数表。有四级反对数表应该就够了。要计算编制包含99999个对数的五级反对数表不是做不到,而是有没有必要,值不值得做。
编制时要先完成一级反对数表,然后再扩充到二级反对数表、三级反对数表、四级反对数表,不要用很小的对数累乘得到大的对数,以避免误差累积增大。
这样计算出的反对数表非常齐整,而且精确度有充分保证。
扩充计算对数表只用两数相乘,不用除法。我觉得乘法比除法简单,工作量小。比如两个有10位有效数字的数相乘,会得到一个大约有20位的数字,但我们只要10位有效数字,后面的那些位数都要舍去,既然不需要,为什么要乘出来?所以在列竖式相乘时,那些注定不会加到前12位的数字,主要是乘数的后几位与被乘数的后几位相乘的数字,根本就别乘,直接画0补位,只要前12位,多出的两位用于四舍五入,故而乘法可以减少计算量。
在编制反对数表过程中已经可以多找人手分摊工作量了。以前在书上看到过去有“制表工人”一说,应该是指专门从事计算制表的工作人员,如果是职业熟练工人,那应该会掌握很多计算技巧,计算速度也会快过常人,以我估计的计算量,如果有几十人同时工作,两三周做出反对数表应该没问题。
第四步,计算给定真数的对数值,编制常用对数表
在有了反对数表之后,再计算编制常用对数表就好办了,而且精确度有保证。方法就是“线性内插法”。以求2的对数为例,在反对数表里可以查到,对数0.3010对应的真数是1.9998618696,对数0.3011对应的真数是2.0003224078,那就在0.3010和0.3011之间做线性内插,求2的对数值,由于1.9998618696与2.0003224078的间距非常微小,所以得到的2的对数值也必是非常精准的。
从1.001~9.999之间的所有数都可以用这种“线性内插”法算出,用这8999个数就可以编制出一个完整的常用对数表,而且精度极佳,只不过要计算8999个数据,计算量颇大。
如果先算出那些质数(即素数)的对数,合数的对数由其质因子的对数相加而得到,计算量就可以大幅减少。
10000以内的质数仅有1229个,而且那些较大的质数,其对数可以用两对数平均值算出,例如8663是个素数,在算出8662和8664这两个数的对数后,8663的对数就是8662和8664这两个数的对数的平均值。平均值计算实际也是“线性内插”,但要简单得多,真正需要用比较麻烦的“线性内插”计算的质数只有几百个,合数的对数由其几个质因子的对数相加得到,这种制表方法计算量要少一些,但精度也要稍逊一些。总的来说,编制对数表要比反对数表计算量要少一些。
编制八位常用对数表和反对数表,计算量巨大,个人很难独力完成,如果有几十个人分工合作,一两个月制出常用对数表和反对数表,应该不算什么大问题。
计算编制常用对数表的工作也一样可以找多人分担,以加快速度。
对数函数不是直线函数,做线性内插必会有误差,误差大小决定于插值区间大小,区间越小,误差也越小。若想要更精确的对数表,我认为应该多增加算几个基础对数,尽量减小插值区间。第二组基础对数值必须进行检验,消除误差。
上面就是我对常用对数表计算方法的思考。时隔几百年,十七世纪的常用对数表究竟是不是这样算出来的,有没有更好的方法就不知道了。以我的看法,本文叙述的方法已经足够简单精确了,没有技术障碍,若组织好了,即便是一些中学生也能完成这样的计算编。
下面是我的文章
读了“事理环境论”先生的博文,我也受益匪浅。于是化了一个星期,用纸笔、计算器、电脑,按该文中所说的方法,演算一通。加深了理解,发现了一些问题,改进了一些方法,并编出了一部份连续的八位常用对数表,值得整理成文。
首先,我认为编制任何数表,必须符合以下条件:
1
理论正确
2 方法可行
3 保证一定精度
4
工作量要尽量小
“事理环境论”先生提出的编制常用对数表的方法,经试算,我认为理论正确、方法可行,并有一定新意,也可以保证一定精度。用“三级反对数表”可编七位或八位常用对数表。
至于工作量问题,全靠内插来完成全表,不是办不到,但工作量太大。如果先内插出质数的对数,这样编连续的合数就方便得多了。但要编合数的对数,也先要作质因数分解才行,这又有一定麻烦。真是难以两全。总之,这些仅仅是对“怎样编常用对数表”的方法的看法,各有千秋,议论一下而已。反正又不要我们正式的去编表。但古洋人当时到底是如何编常用对数表的,我仍然不知。
我好像堂•吉诃德一样,无事在为古洋人操心。我操起现代计算工具,代替手算,与数字大战。说是在搞学术罢,水平太低谈不上。我只是在低水平上做做我的功课,时间就过得快一些,生活就不太空虚。当我有所发现、有所前进的时候,非常高兴。老伴看到我瞎忙,知道我内心平静,她也非常高兴。我为什么不为此而瞎忙呢!
下面按原文中的步骤,作具体计算。当作做一道数学题罢。
第一步、计算第一组基础对数
这组基础的对数值是:1∕2, 1∕4, 1∕8, 1∕16, 1∕32, 1∕64, 1∕128, 1∕256, 1∕512,
1∕1024, 1∕2048, 1∕4096, 1∕8192共13个。
从√10开始,连续开平方,算出它们的真数。
表一
第一组基础对数表
10的开 ?次方 = 最基础对数
最基础真数
对 数
真
数
3/4=0.75
5.62341325190349
1/2=0.5
A=3.16227766016838
1/4=0.25
B=1.77827941003892
1/8=0.125
C=1.33352143216332
1/16=0.0625
D=1.15478198468946
1/32=0.03125
E=1.07460782832132
1/64=0.015625
F=1.03663292843770
1/128=0.0078125
G=1.01815172171818
1/256=0.00390625
H=1.00903504484145
1/512=0.001953125
I=1.00450736425446
1/1024=0.0009765625
J=1.00225114829291
1/2048=0.00048828125
K=1.00112494139988
1/4096=0.000244140625
L=1.00056231260221
1/8192=0.0001220703125
M=1.00028111678778
1/16384=0.00006103515625
1.00014054851695
我加进二个对数为0.75与对数为1/16384的真数,以作备用。这张表里的对数与真数,是最原始的。取小数后13位,误差在14位上小于5。当然,我是靠电脑算的。但如果用手算,一次次开平方还是可行的,谁要你编对数表呢?在十七世纪只能手工开平方了。
但是,读到后面,你就可以发现,其实这张表是完全可以不要的。不必开方、开方、开方,只要利用“对数1的真数是10”的简单原理就可以直接算出“第二组基础对数”。你信不信?
第二步、计算第二组基础对数
这第二组基础对数值是:0.5,
0.1, 0.05, 0.01, 0.005, 0.001, 0.0005,
0.0001共八个。要算出它们的真数。
一
计算对数为0.1、0.01、0.001、0.0001的真数
1 计算对数为0.1 时的真数Z
。0.1=819.2∕8192,介于819∕8192与820∕8192之间。
分二步走:先算819∕8192与820∕8192的对数与真数,再内插得到819.2∕8192=0.1的真数。
第一步:
819∕8192,就是对数T1= 512∕8192 +
256∕8192 + 32∕8192 + 16∕8192 + 2∕8192 + 1∕8192
= 1∕16 +
1∕32 + 1∕256 + 1∕512 + 1∕4096 + 1∕8192
= 0.9997
5585 9375
819∕8192的真数
Z1 = D×E×H×I×L×M = 1.2588 5464 2716
78
820∕8192,就是对数T2= 512∕8192 +
256∕8192 + 32∕8192 + 16∕8192 + 4∕8192
= 1∕16
+1∕32 +1∕256 +1∕512 +1∕2048
= 0.1000 9765 6250
820∕8192的真数
Z2 = D×E×H×I×K= 1.2592 0852 7890 22
第二步:
线性内插,求对数为819.2∕8192=0.1 时的真数Z 。内插简单,但还是说一下公式。
设:已知第一个对数T1、真数Z1、第二个对数T2、真数Z2,要计算区间内对数T的真数Z。
所求点离T1为d t、离Z1为d z
。
令 ΔT=T2-T1、 ΔZ=Z2-Z1、d
t=T-T1、Z=Z1+d z。
由于ΔZ∕ΔT=dz∕dt
得
dz=(ΔZ∕ΔT) dt =(ΔZ∕ΔT)
(T-T1)
Z=Z1+dz=Z1+(ΔZ∕ΔT) (T-T1)
代入数据得:
T1=819∕8192 = 0.0999 7558 5937
Z1= 0.9997 5585
9375
T2=820∕8192 = 0.1000 9765 6250
Z2=0.1000 9765
6250
(ΔZ∕ΔT)=2.8990273390191
T=0.1 d
t=T-T1=0.1-0.0999 7558 5937 =0.0000244140623
Z=0.9997 5585
9375+2.8990273390191 ×0.0000244140623 =1.2589 2541 9751
5
2
同理,对数为0.01、0.001、0.0001的真数,也在“第一组基础对数表”中找出对应的真数后,相乘而得,不作烦顼细草了。只列内插结果如下:
对
数
真
数
81∕8192 = 0.0098 8769 53125
1.0230 2841 2031
49
81.92∕8192=0.01
Z=?
内插得 Z=1.0232 9299 5255
6
82∕8192 = 0.0100 0976 5625
1.0233 1600
2492 48
8∕8192 = 0.0009 7656 25000
1.0022 5114
8293
8.192∕8192=0.001
Z=?
内插得 Z=1.0023 0524 4220 6
9∕8192 =0.0010 9863 28125
1.0025 3289
7916
0.5∕8192 =0.0000 6103 51563
1.0001 4054 8516
95
0.8192∕8192=0.0001
Z=?
内插得 Z=1.0002 3028
73010
1∕8192 = 0.0001 2207 03125
1.0002 8111
6787 78
二
对数为0.1、0.01、0.001、0.0001的各个真数的误差情况
0.1、0.01、0.001、0.0001
的真数的精确性,是非常重要的。因为要用它们作起算数,靠它们一次次对数累加、真数累乘,递推下去,才能得到完整的对数表。但非常遗憾的是,非线性的对数函数,却靠线性内插来求得这些真数,就会有误差,而且不小。以下是内插结果与正确值的比较:
基础对数
由内插法算得的真数
正确值(由计算器查得)
真数误差13位上
0.1
1.25892541
97515
1.25892541 17942
79573
0.01
1.02329299 52556
1.02329299 22808
29748
0.001
1.0023052 442206
1.0023052 380779
61427
0.0001
1.00023028
73010
1.00023028 50208
22802
可见它们只正确到8位。用它们再去求其他对数的真数,况且又要用线性内插,岂能保证精度。“事理环境论”先生看到了这一点,所以他说:
“如担心多次相乘以及做线性内插时导致误差积累增大,可以把对数0.1的真数值累乘计算5次方,看与0.5的真数值能否对得上,如有误差,用开方公式做修正,消除误差。由于这样的计算本身已经很精确,误差修正的工作不会太费事。”
三
近似真数的微分修正法
怎样修正误差很大的真数呢?“事理环境论”先生利用0.1的真数A的5次方,并用开方公式做修正”。我以为不必。在作了许多试凑之后,我意外的发现了一个利用微分公式的逐渐趋近法。用0.1的真数A的10次方作控制,不要盲目的去凑,而要利用不符值去修正,
1
设0.1的近似真数为A=1.2589254197515,误差为dA,注意,它的10次方就是1的真数值B,B=10,绝对正确。如果A连乘10次后,结果与10相等,说明A很正确。如果不等,相差Δ,就可利用Δ来改正A,不要盲目的去修正。原理:
二项式展开:(A+dA)10
= A 10 +10A
9 dA +45A
8 dA 2
+120 A
7
dA3+ … +dA10
=B=10
由于dA极小,dA的高次项可省掉,所以可简化为:
A
10 +10A
9 dA=10
得不符值 Δ=(A10-10)
所以
dA=Δ∕(10A9)
=
(A10-B)
∕(10
A9)
… (1)
A=A-dA
…
(2)
即第二次A=第一次A-dA
再按前述公式循环计算,当Δ→0时,就得到误差极小的真值A。我原先不知道收敛的速度,以为可能要趋很多次才行。一试,收敛极快,第二次就搞定,真是开心。
请看0.1对数的近似真数1.2589254197515,用趋近法怎样求得正确值的计算过程:
趋近次数
|
第一次
|
第二次
|
近似的A=
|
1.2589254197515
|
1.2589254117942
|
A 2
|
1.5848932124965
|
1.5848931924612
|
A 4
|
2.5118864950175
|
2.5118864315098
|
A 5
|
3.1622777601080
|
3.1622776601688
|
A 9
|
7.9432827991092
|
7.9432823472447
|
A 10
|
10.0000006320734
|
10.0000000000026
|
已知 B
|
10.0000000000000
|
10.0000000000000
|
Δ=A 10-10
|
0.0000006320734
|
0.0000000000026
|
dA=Δ∕10∕A
9
|
0.0000000079573
|
0.0000000000000
|
A=A-dA
|
1.2589254117942
|
1.2589254117942
|
收敛极快,是因为近似值精度己经很高了。至此,0.1的真数为1.2589254117942,放心了。
2
对数为0.01的近似真数1.0232 9299 5255 6怎样修正?
0.1的真数现在刚刚出笼=1.2589 2541
17942,就马上用它作控制数B,有:
1.0232 9299 5255 6连乘10次=1.2589
2541 17942=B为条件,作趋近计算。
用电子表格计算:
近似的A
第一次 1.0232929952556
第二次
免
A*A*A*A*A
1.1220184706112
A*A*A*A*A*A*A*A*A=K
1.2302688030013
A*A*A*A*A*A*A*A*A*A=S
1.2589254483928
已知 B
1.2589254117942
误差Δ=S-B
0.0000000365986
改正值dA=Δ∕10∕K
0.0000000029748
A=A-dA
1.0232929922808
至此,0.01的真数为1.0232929922808。我们现在有现成的计算器可查,知道它与正确值相同了,所以就不再多趋近一次了。但古人在正式编表时,一定再要趋近一次,直到Δ接近0为止。
3
对数为0.001的近似真数1.0023052 442206怎样修正?
0.01的真数现在刚刚算出,=1.0232929922808,就马上用它作控制数B,有:
1.0023052
442206连乘10次=1.0232929922808=B为条件,作趋近计算。也用(1)、(2)式计算:
近似的A
第一次
1.0023052442206
第二次
免
A*A*A*A*A
1.0115794852576
A*A*A*A*A*A*A*A*A=K
1.0209395400198
A*A*A*A*A*A*A*A*A*A=S
1.0232930549940
已知 B
1.0232929922808
误差Δ=S-B
0.0000000627132
改正值dA=Δ∕10∕K
0.0000000061427
A=A-dA
1.0023052380779
至此,0.001的真数为1.0023052380779。它又作为0.0001真数的控制数B
。
4
对数为0.0001的近似真数1.0002302873010怎样修正?同理,见下表计算:
近似的A
第一次
1.0002302873010
第二次
免
A*A*A*A*A
1.0011519669496
A*A*A*A*A*A*A*A*A=K
1.0020744958959
A*A*A*A*A*A*A*A*A*A=S
1.0023052609270
已知 B
1.0023052380779
误差Δ=S-B
0.0000000228491
改正值dA=Δ∕10∕K
0.0000000022802
A=A-dA
1.0002302850208
至此,0.0001的真数为1.0002302850208。但古人要再趋近一次,直到Δ接近0为止。最后得:
表二
第二组基础对数
对 数
真
数
0.1
1.2589 2541 17942
0.01
1.0232 9299
22808
0.001
1.0023 0523
80779
0.0001
1.0002 3028 50208
5
计算至此,我不禁想到,既然这些真数最后都得渐近修正,那又何必先通过“表一”去内插,又再去渐近修正呢?干脆直接假设一个近似数去渐近修正,不是结果相同吗?假设的近似数误差要大一些,趋近次数要多一些,这又何妨。这样,“表一”就完全可以不要。
例如取0.1的真数为1.2 (可用图解得到)
,作为第一近似值,也只要作7次趋近。第6次与第7次就完全相同:趋近情况:
1.2
1.2738066994678
1.2581146566622
1.25892776669423
1.2589254118140
1.2589254117942
1.2589254117942
其他的情况如下表:
对数
设近似真数
已知控制数B
趋近次数
0.1
1.2
10
7
0.01
1.01
1.2589 2541
17942
15
0.001
1.001
1.0232929922808
14
0.0001
1.0001
1.0023052380779
14
至于0.05
、0.005、 0.0005
的真数,更不必算了。
由此可见,编算一本常用对数表,真正的起算数,只需两个:对数1及其真数10。说起来不可思议,但这是真的。
“反对数表”共分三级。
1
一级反对数表的计算
有了基础对数后,就能算“一级反对数表”了。它的起算值只有二对:
0.1
1.2589254117942
1
10
要计算出0.1,0.2,0.3,….0.9这9个对数所对应的真数。计算的方法即对数相加,真数相乘。
先用A=1.2589254117942自乘,得1.2589254117942×1.2589254117942=1.5848931924611,它就是0.2
(0.1+0.1) 的真数A*A=A
Λ2。一直累乘到1.0时,得相应真数为AΛ10=10。如果与已知值不符,用测量学术语讲,这叫有闭合差。为了提高精度,要作闭合差配赋,配赋也用线性内插,算出改正数,改正后的数才是最终结果。但由于这次起算值精度极高,所以第一次计算,闭合差就极小,仅在第13位上有2的误差,所以一次算完。
表 三
一 级 反 对 数 表
一级对数 算 得 真 数
算
法
正确值
(由计算器查得)
0.1
1.2589254117942
已知 A
1.2589254117942
0.2
1.5848931924611
A*A
1.5848931924611
0.3
1.9952623149689
A*A*A
1.9952623149689
0.4
2.5118864315096
A*A*A*A
2.5118864315096
0.5
3.1622776601684
A*A*A*A*A=已知 B ?
3.1622776601684
0.6
3.9810717055350
B*A
3.9810717055350
0.7
5.0118723362728
B*A*A
5.0118723362728
0.8
6.3095734448020
B*A*A*A
6.3095734448020
0.9
7.9432823472430
B*A*A*A*A
7.9432823472429
1.0
10.0000000000002
B*A*A*A*A=已知
C ?
10.0000000000000
2
二级反对数表的计算
有了一级反对数表后,才能算二级反对数表。二级反对数表的起算数为:0.01、0.1、0.2、 … 0.9 、1.0
相应的真数1.0232929922808、1.2589254117942 …
等等。要一段一段的编,即0.01→0.1、0.1 → 0.2、 0.2 → 0.3 …
0.8 → 0.9 、0.9 →1.0
共十段。每一段首尾都是已知值。算到最后,就与已知尾数对比。如有不符值,要作闭合差配赋,算出改正数,改正后的数才是最终结果。
以0.01→0.10为例,由0.01的1.0232929922808起算,算得0.02的1.0232929922808×1.0232929922808=1.0471285480510、……
一直连乘到0.10的1.2589254117947 ,它与已知的1.2589254117942
不符,不符值1.2589254117947-1.2589254117942=5 ( 第十三位上
),就平均分摊改正。改正后与正确值相比,差额只有1、2、3的误差,说明精度良好。
最后0.9
→1.0一段,不符值最大为46,经配赋改正后,残留误差最大3。
表 四
二 级 反 对 数 表
二级对数
真 数 Z′
改正数
改正后真数 Z
误差
0.01
1.0232929922808
0
1.0232929922808
0
0.02
1.0471285480510
-1
1.0471285480509
0
0.03
1.0715193052378
-1
1.0715193052377
1
0.04
1.0964781961434
-2
1.0964781961432
0
0.05
1.1220184543022
-2
1.1220184543020
0
0.06
1.1481536214972
-3
1.1481536214969
0
0.07
1.1748975549399
-3
1.1748975549396
1
0.08
1.2022644346178
-4
1.2022644346174
0
0.09
1.2302687708129
-5
1.2302687708124
0
0.10
1.2589254117947
-5
1.2589254117942
0
二级对数
真 数
Z′
改正数
改正后真数 Z
误差
0.10
1.2589254117942
0
1.2589254117942
0
0.11
1.2882495516932
-1
1.2882495516931
0
0.12
1.3182567385566
-2
1.3182567385564
0
0.13
1.3489628825919
-3
1.3489628825916
0
0.14
1.3803842646032
-4
1.3803842646028
-1
0.15
1.4125375446231
-5
1.4125375446226
-2
0.16
1.4454397707464
-6
1.4454397707458
-1
0.17
1.4791083881687
-7
1.4791083881680
-2
0.18
1.5135612484368
-7
1.5135612484361
-1
0.19
1.5488166189132
-8
1.5488166189124
-1
0.20
1.5848931924619
-8
1.5848931924611
0
二级对数
真
数 Z′
改正数
改正后真数 Z
误 差
0.20
1.5848931924611
0
1.5848931924611
0
0.21
1.6218100973590
-1
1.6218100973589
0
0.22
1.6595869074377
-2
1.6595869074375
-1
0.23
1.6982436524620
-3
1.6982436524617
0
0.24
1.7378008287497
-4
1.7378008287493
-1
0.25
1.7782794100393
-5
1.7782794100388
-1
0.26
1.8197008586105
-6
1.8197008586099
-1
0.27
1.8620871366635
-7
1.8620871366628
-1
0.28
1.9054607179639
-8
1.9054607179631
-1
0.29
1.9498445997588
-9
1.9498445997579
-1
0.30
1.9952623149698
-9
1.9952623149689
0
二级对数
真
数 Z′ 改正数
改正后真数 Z
误差
0.30
1.9952623149689
0
1.9952623149689
0
0.31
2.0417379446696
-1
2.0417379446695
0
0.32
2.0892961308542
-2
2.0892961308540
0
0.33
2.1379620895025
-3
2.1379620895022
0
0.34
2.1877616239500
-4
2.1877616239496
0
0.35
2.2387211385689
-6
2.2387211385683
0
0.36
2.2908676527684
-7
2.2908676527677
- 1
0.37
2.3442288153207
-8
2.3442288153199
0
0.38
2.3988329190204 -9
2.3988329190195
0
0.39
2.4547089156860
-10
2.4547089156850
0
0.40
2.5118864315107
-11
2.5118864315096
0
二级对数
真 数 Z′
改正数
改正后真数 Z
误差
0.40
2.5118864315096
0
2.5118864315096
0
0.41
2.5703957827690
-1
2.5703957827689
0
0.42
2.6302679918956
-3
2.6302679918953
-1
0.43
2.6915348039273
-4
2.6915348039269
0
0.44
2.7542287033387
-6
2.7542287033381
-1
0.45
2.8183829312651
-7
2.8183829312644
-1
0.46
2.8840315031274
-8
2.8840315031266
0
0.47
2.9512092266673
-10
2.9512092266663
- 1
0.48
3.0199517204031
-11
3.0199517204020
0
0.49
3.1622776601698 - 14
3.1622776601684
0
二级对数
真 数 Z′
改正数
改正后真数 Z
误差
0.50
3.1622776601684
0
3.1622776601684
0
0.51
3.2359365692964
-2
3.2359365692962
-1
0.52
3.3113112148262
-4
3.3113112148258
-1
0.53
3.3884415613925
-5
3.3884415613920
0
0.54
3.4673685045259
-7
3.4673685045252
-1
0.55
3.5481338923366
-9
3.5481338923357
-1
0.56
3.6307805477020
-11
3.6307805477009
-1
0.57
3.7153522909729
-13
3.7153522909716
-1
0.58
3.8018939632070
-14
3.8018939632056
0
0.59
3.8904514499444
-16
3.8904514499428
0
0.60
3.9810717055368
-18
3.9810717055350
0
二级对数
真
数 Z′
改正数
改正后真数 Z
误差
0.60
3.9810717055350
0
3.9810717055350
0
0.61
4.0738027780414
-2
4.0738027780412
1
0.62
4.1686938347038
-4
4.1686938347034
0
0.63
4.2657951880166
-7
4.2657951880159
0
0.64
4.3651583224025
-11
4.3651583224014
-1
0.65
4.4668359215107
-11
4.4668359215096
0
0.66
4.5708818961501
-13
4.5708818961488
0
0.67
4.6773514128735
-15
4.6773514128720
0
0.68
4.7863009232282
-18
4.7863009232264
0
0.69
4.8977881936865
-20
4.8977881936845
0
0.70
5.0118723362750
-22
5.0118723362728
0
二级对数
真 数 Z′
改正数
改正后真数 Z
误差
0.70
5.0118723362728
0
5.0118723362728
0
0.71
5.1286138399140
-3
5 .1286138399137
1
0.72
5.2480746024983
-6
5.2480746024977
0
0.73
5.3703179637033
-9
5.3703179637024
-1
0.74
5.4954087385773
-12
5.4954087385761
-1
0.75
5.6234132519048
-15
5.6234132519033
-2
0.76
5.7543993733732
-18
5.7543993733714
-2
0.77
5.8884365535578
-21
5.8884365535557
-2
0.78
6.0255958607458
-24
6.0255958607434
-2
0.79
6.1659500186174
-27
6.1659500186147
-1
0.80
6.3095734448049
-30
6.3095734448019
0
二级对数
真
数 Z′
改正数
改正后真数 Z
误差
0.80
6.3095734448019
0
6.3095734448019
0
0.81
6.4565422903470
-4
6.4565422903466
0
0.82
6.6069344800767
-7
6.6069344800760
0
0.83
6.7608297539208
-11
6.7608297539197
-2
0.85
7.0794578438431
-18
7.0794578438413
-1
0.86
7.2443596007520
-22
7.2443596007498
-1
0.87
7.4131024130116
-26
7.4131024130090
-2
0.88
7.5857757502947
-30
7.5857757502917
-1
0.89
7.7624711662902
-33
7.7624711662869
0
0.90
7.9432823472465
-37
7.9432823472428
0
二级对数
真
数 Z′
改正数
改正后真数 Z
误差
0.90
7.9432823472428
0
7.9432823472428
0
0.91
8.1283051616414
-5
8.1283051616409
-1
0.92
8.3176377110275
-10
8.3176377110265
-2
0.93
8.5113803820250
-14
8.5113803820236
-2
0.94
8.7096358995625
-18
8.7096358995607
-1
0.95
8.9125093813395
-23
8.9125093813372
-3
0.96
9.1201083935616
-28
9.1201083935588
-3
0.97
9.3325430079729
-32
9.3325430079697
-2
0.98
9.5499258602179
-37
9.5499258602142
-2
0.99
9.7723722095622
-41
9.7723722095581
0
1.00
10.0000000000046
-46
10.0000000000000
0
3
三级反对数表的计算
“二级反对数表”提供0.01至0.99共99个数,加上0.001与1.0的基础真、对数,用来计算三级反对数表。“三级反对数表”由0.001到0.999
组成,也是分段编算,共100段。由于0.001的真数1.0023052380779很准,所以各段闭合差都很小。现录其中的三段于下:
表 五
部 份 三 级 反 对 数 表
三级对数
真 数
Z′
改正数
改 正 后 真 数 Z
误差
0.300
1.9952623149689
0
1.9952623149689
0
0.301
1.9998618696328
0
1.9998618696327
0
0.302
2.0044720273652
0
2.0044720273652
0
0.303
2.0090928126087
0
2.0090928126087
0
0.304
2.0137242498624
0
2.0137242498624
0
0.305
2.0183663636816
0
2.0183663636816
0
0.306
2.0230191786783
0
2.0230191786783
0
0.307
2.0276827195213
0
2.0276827195213
0
0.308
2.0323570109362
0
2.0323570109362
0
0.309
2.0370420777057
0
2 .0370420777057
0
0.310
2.0417379446696
1
2.0417379446695
1
三级对数
真
数 Z′
改正数
改正后真数 Z
误差
0.490
3.0902954325136
0
3.0902954325136
0
0.491
3.0974192992166
0
3.0974192992166
0
0.492
3.1045595881284
0
3.1045595881284
0
0.493
3.1117163371060
0
3.1117163371060
0
0.494
3.1188895840940
0
3.1188895840940
0
0.495
3.1260793671240
0
3 .1260793671240
0
0.496
3.1332857243156
0
3.1332857243156
0
0.497
3.1405086938762
0
3.1405086938762
0
0.498
3.1477483141013
0
3.1477483141013
0
0.499
3.1550046233747
0
3.1550046233747
0
0.500
3.1622776601684
0
3.1622776601684
0
三级对数
真
数 Z′
改正数
改正后真数 Z
误差
0.500
3.1622776601684
0
3.1622776601684
0
0.501
3.1695674630435
0
3.1695674630435
0
0.502
3.1768740706498
0
3.1768740706498
0
0.503
3.1841975217262
0
3.1841975217262
0
0.504
3.1915378551008
0
3.1915378551008
0
0.505
3.1988951096914
0
3.1988951096914
0
0.506
3.2062693245055
0
3.2062693245055
0
0.507
3.2136605386404
0
3.2136605386404
0
0.508
3.2210687912835
0
3.2210687912835
0
0.509
3.2284941217127
0
3.2284941217127
0
0.510
3.2359365692963
1
3.2359365592962
1
第四步,计算给定真数的对数值,编制常用对数表
真正用来编制常用对数表的,主要靠“三级反对数表”。方法还是内插。内插公式:
设:每段段首的对数为T1、段首的真数为Z1、段尾的对数为T2、段尾的真数为Z2,要计算区间内真数Z的对数T。
所求点离Z1为d z、所求点离T1为d t
,
令ΔT=T2-T1、
ΔZ=Z2-Z1、 d z=Z-Z1、 T=T1+d t。
由于ΔT∕ΔZ=d t∕d z
得
d t = (ΔT∕ΔZ) d z =(ΔT∕ΔZ)
(Z-Z1)
T = T1+d t = T1 +(ΔT∕ΔZ)
(Z-Z1)
现在计算0.3→0.4区间内的一批连续数表。
T1=0.301
Z1=1.9998618696327
T2=0.302
Z2=2.0044720273652
ΔT=0.001
ΔZ=0.00461015774
ΔT∕ΔZ=0.216912318
用电子表格帮忙计算。得:
部份 常用八位对数表
真数Z
dz=Z-Z1
dt=(ΔT/ΔZ)(Z-Z1)
对数T=T1+dt
查电脑LOG Z
第8位误差
1.9999990
0.00013713
0.00002975
0.30102975
0.30102978
-3
1.9999991
0.00013723
0.00002977
0.30102977
0.30102980
-3
1.9999992
0.00013733
0.00002979
0.30102979
0.30102982
-3
1.9999993
0.00013743
0.00002981
0.30102981
0.30102984
-3
1.9999994
0.00013753
0.00002983
0.30102983
0.30102987
-4
1.9999995
0.00013763
0.00002985
0.30102985
0.30102989
-4
1.9999996
0.00013773
0.00002988
0.30102988
0.30102991
-3
1.9999997
0.00013783
0.00002990
0.30102990
0.30102993
-3
1.9999998
0.00013793
0.00002992
0.30102992
0.30102995
-3
1.9999999
0.00013803
0.00002994
0.30102994
0.30102997
-3
2.0000000
0.00013813
0.00002996
0.30102996
0.30103000
-4
2.0000001
0.00013823
0.00002998
0.30102998
0.30103002
-4
2.0000002
0.00013833
0.00003001
0.30103001
0.30103004
-3
2.0000003
0.00013843
0.00003003
0.30103003
0.30103006
-3
2.0000004
0.00013853
0.00003005
0.30103005
0.30103008
-3
2.0000005
0.00013863
0.00003007
0.30103007
0.30103010
-3
2.0000006
0.00013873
0.00003009
0.30103009
0.30103013
-4
2.0000007
0.00013883
0.00003011
0.30103011
0.30103015
-4
2.0000008
0.00013893
0.00003014
0.30103014
0.30103017
-3
2.0000009
0.00013903
0.00003016
0.30103016
0.30103019
-3
2.0000010
0.00013913
0.00003018
0.30103018
0.30103021
-3
2.0000011
0.00013923
0.00003020
0.30103020
0.30103023
-3
2.0000012
0.00013933
0.00003022
0.30103022
0.30103026
-4
2.0000013
0.00013943
0.00003024
0.30103024
0.30103028
-4
2.0000014
0.00013953
0.00003027
0.30103027
0.30103030
-3
2.0000015
0.00013963
0.00003029
0.30103029
0.30103032
-3
2.0000016
0.00013973
0.00003031
0.30103031
0.30103034
-3
2.0000017
0.00013983
0.00003033
0.30103033
0.30103036
-3
2.0000018
0.00013993
0.00003035
0.30103035
0.30103039
- 4
2.0000019
0.00014003
0.00003037
0.30103037
0.30103041
-4
2.0000020
0.00014013
0.00003040
0.30103040
0.30103043
-3
2.0000021
0.00014023
0.00003042
0.30103042
0.30103045
-3
2.0000022
0.00014033
0.00003044
0.30103044
0.30103047
-3
2.0000023
0.00014043
0.00003046
0.30103046
0.30103050
-4
2.0000024
0.00014053
0.00003048
0.30103048
0.30103052
-4
可见,用“三级反对数表”编八位常用对数表时,尾上误差为3或4,所以有把握可编七位常用对数表。
“三级反对数表”有100段,可以分配给100个人编制各自的对数表。这是一个优点。
但也遇到了一些麻烦,那就是数据分散混乱。如本段0.301至0.302区间内,真数1.9998618696327 至2.0044720273652。凡2字打头的,个位数只能编2、两位数无、三位数无、四位数只能编2000
2001 2002
2003 2004。而2005 2006等就不行。连续数可编
20044700 20044701
20044702 20044703
… 20044720 ,但20044721又不行了。
总之,算出的数比较乱。要想得到一大批连续的数,不容易。这样分散的数,最后要汇成连续的数字流,非得再做一个排序工作不可。编表谈何容易。
附:
经我演算,认为利用“一级反对数表”就可编四位用表。保守一点编三位。见下表:
真数Z
dz=Z-Z1
dt=(ΔT/ΔZ)(Z-Z1)
对数T=T1+dt
电脑LOG Z
第4位误差
1.996
0.00073769
0.00014279
0.30014
0.30016
0
1.997
0.00173769
0.00033635
0.30034
0.30038
0
1.998
0.00273769
0.00052992
0.30053
0.30060
-1
1.999
0.00373769
0.00072348
0.30072
0.30081
-1
2
0.00473769
0.00091705
0.30092
0.30103
-1
2.1
0.10473769
0.02027348
0.32027
0.32222
-19
2.11
0.11473769
0.02220912
0.32221
0.32428
-21
2.222
0.22673769
0.04388833
0.34389
0.34674
-29
2.2222
0.22693769
0.04392704
0.34393
0.34678
-29
2.333333
0.33807069
0.06543842
0.36544
0.36798
-25
2.3333333
0.33807099
0.06543848
0.36544
0.36798
-25
2.33333333
0.33807102
0.06543849
0.36544
0.36798
-25
2.5
0.50473769
0.09769921
0.39770
0.39794
-24
3
1.00473769
0.19448137
0.49448
0.47712
174
表中特地令Z=3,超出区间,看误差有多大。结果第二位差1.7,不行。不能外插。
还试算了用“二级反对数表”
编表,保守一点,可编五位用表。这里就不再详录了。
我算了一个多星期,到最后才醒悟到:
编算一本常用对数表,真正的起算数,只需两个:对数1及其真数10。说起来不可思议,但这是真的。
感谢“事理环境论”先生。
加载中,请稍候......