加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

常用对数表编制新方案的试算

(2016-02-06 17:11:52)
标签:

教育

                             常用对数表编制新方案的试算


    先转录“事理环境论”先生的博文。该博文声明“禁止转载”,但因为该文内容述及本人三年前的同类博文,所以我就复制一下,转录到这里。目的是想传播一下有关编制常用对数表的方法原来可以有多个。我还想根据“事理环境论”先生的方法,编出一部份常用对数表,看看效果如何。

                                            十七世纪的常用对数表是怎么算出来的

                                                              “事理环境论”      (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的真数A5次方,并用开方公式做修正”。我以为不必。在作了许多试凑之后,我意外的发现了一个利用微分公式的逐渐趋近法。用0.1的真数A10次方作控制,不要盲目的去凑,而要利用不符值去修正,

   0.1的近似真数为A1.2589254197515,误差为dA,注意,它的10次方就是1的真数值BB10,绝对正确。如果A连乘10次后,结果与10相等,说明A很正确。如果不等,相差Δ,就可利用Δ来改正A,不要盲目的去修正。原理:

二项式展开:(AdA)10 = A 10 10A 9 dA 45A 8 dA 2 120 A 7 dA3   dA10 B10

由于dA极小,dA的高次项可省掉,所以可简化为:

A 10 10A 9 dA10

得不符值 Δ=(A1010)

所以 dA=Δ∕(10A9) (A10B) (10 A9  (1)

AAdA         (2)

第二次A=第一次AdA 再按前述公式循环计算,当Δ→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 1010

0.0000006320734

0.0000000000026

dA=Δ∕10A 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 

其他的情况如下表:

对数      设近似真数        已知控制数                      趋近次数   

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.02         1.0471285480510   -1           1.0471285480509         
0.03         1.0715193052378   -1           1.0715193052377         
0.04         1.0964781961434   -2           1.0964781961432         
0.05         1.1220184543022   -2           1.1220184543020         
0.06         1.1481536214972   -3           1.1481536214969         
0.07         1.1748975549399   -3           1.1748975549396         
0.08         1.2022644346178   -4           1.2022644346174         
0.09         1.2302687708129   -5           1.2302687708124        
0.10         1.2589254117947   -5           1.2589254117942        

二级对数           真  数  Z′       改正数          改正后真数 Z         误差
0.10         1.2589254117942     0           1.2589254117942      
0.11         1.2882495516932    -1           1.2882495516931      
0.12         1.3182567385566    -2           1.3182567385564      
0.13         1.3489628825919    -3           1.3489628825916      
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        

二级对数             真   数  Z′    改正数          改正后真数 Z          误 差
0.20          1.5848931924611     0            1.5848931924611        
0.21          1.6218100973590    -1            1.6218100973589        
0.22          1.6595869074377    -2            1.6595869074375       -1 
0.23          1.6982436524620    -3            1.6982436524617        
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        

二级对数             真  数 Z′     改正数                 改正后真数 Z      误差
0.30         1.9952623149689     0               1.9952623149689      
0.31         2.0417379446696    -1              2.0417379446695      
0.32         2.0892961308542    -2              2.0892961308540      
0.33         2.1379620895025    -3               2.1379620895022      
0.34         2.1877616239500    -4               2.1877616239496      
0.35         2.2387211385689    -6               2.2387211385683      
0.36         2.2908676527684    -7               2.2908676527677    - 1 
0.37         2.3442288153207    -8               2.3442288153199      
0.38         2.3988329190204   -9                2.3988329190195      
0.39         2.4547089156860    -10             2.4547089156850      
0.40         2.5118864315107    -11             2.5118864315096      

二级对数              真  数 Z′     改正数              改正后真数 Z          误差
0.40        2.5118864315096       0                2.5118864315096      
0.41         2.5703957827690       -1             2.5703957827689      
0.42         2.6302679918956       -3             2.6302679918953      -1 
0.43         2.6915348039273       -4             2.6915348039269      
0.44         2.7542287033387       -6             2.7542287033381       -1 
0.45         2.8183829312651     -7               2.8183829312644       -1 
0.46         2.8840315031274    -8                2.8840315031266        
0.47         2.9512092266673     -10             2.9512092266663       - 1 
0.48         3.0199517204031    -11              3.0199517204020      
0.49         3.1622776601698 -   14               3.1622776601684      

二级对数                真  数 Z′    改正数                 改正后真数 Z      误差
0.50         3.1622776601684       0              3.1622776601684        
0.51        3.2359365692964       -2              3.2359365692962       -1 
0.52        3.3113112148262       -4              3.3113112148258       -1 
0.53        3.3884415613925       -5             3.3884415613920        
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.59       3.8904514499444       -16            3.8904514499428        
0.60       3.9810717055368       -18            3.9810717055350        

二级对数             真  数 Z′       改正数               改正后真数 Z        误差
0.60        3.9810717055350        0                3.9810717055350    
0.61        4.0738027780414       -2              4.0738027780412      
0.62        4.1686938347038      -4               4.1686938347034      
0.63        4.2657951880166      -7               4.2657951880159      
0.64         4.3651583224025     -11             4.3651583224014      -1 
0.65         4.4668359215107     -11            4.4668359215096        
0.66         4.5708818961501     -13            4.5708818961488        
0.67         4.6773514128735     -15            4.6773514128720        
0.68         4.7863009232282     -18            4.7863009232264        
0.69         4.8977881936865    -20             4.8977881936845        
0.70         5.0118723362750    -22             5.0118723362728        

二级对数              真  数 Z′       改正数              改正后真数 Z        误差
0.70         5.0118723362728        0             5.0118723362728        
0.71         5.1286138399140       -3             5 .1286138399137      
0.72        5.2480746024983        -6             5.2480746024977        
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      

二级对数            真  数   Z′        改正数            改正后真数 Z          误差
0.80        6.3095734448019         0             6.3095734448019        
0.81         6.4565422903470       -4             6.4565422903466        
0.82          6.6069344800767       -7            6.6069344800760        
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.90         7.9432823472465       -37            7.9432823472428        

二级对数            真  数 Z′         改正数               改正后真数 Z        误差
0.90          7.9432823472428        0               7.9432823472428    
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    
1.00         10.0000000000046      -46           10.0000000000000    

                                                 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.301         1.9998618696328             0         1.9998618696327        
0.302         2.0044720273652             0         2.0044720273652        
0.303         2.0090928126087             0         2.0090928126087        
0.304         2.0137242498624            0          2.0137242498624        
0.305          2.0183663636816           0           2.0183663636816        
0.306         2.0230191786783            0           2.0230191786783        
0.307         2.0276827195213            0           2.0276827195213        
0.308         2.0323570109362            0           2.0323570109362        
0.309         2.0370420777057           0            2 .0370420777057      
0.310         2.0417379446696           1           2.0417379446695        

三级对数            真  数   Z′          改正数           改正后真数 Z           误差
0.490          3.0902954325136       0              3.0902954325136      
0.491         3.0974192992166        0              3.0974192992166      
0.492         3.1045595881284        0              3.1045595881284      
0.493         3.1117163371060         0             3.1117163371060      
0.494         3.1188895840940        0              3.1188895840940      
0.495         3.1260793671240        0              3 .1260793671240    
0.496         3.1332857243156        0              3.1332857243156      
0.497         3.1405086938762         0             3.1405086938762      
0.498          3.1477483141013       0              3.1477483141013      
0.499          3.1550046233747        0             3.1550046233747      
0.500          3.1622776601684       0              3.1622776601684      

三级对数                  真  数 Z′       改正数              改正后真数 Z             误差
0.500           3.1622776601684       0              3.1622776601684            
0.501          3.1695674630435        0              3.1695674630435            
0.502          3.1768740706498        0              3.1768740706498            
0.503         3.1841975217262         0              3.1841975217262            
0.504          3.1915378551008        0              3.1915378551008            
0.505          3.1988951096914        0              3.1988951096914            
0.506          3.2062693245055        0              3.2062693245055            
0.507          3.2136605386404        0              3.2136605386404            
0.508          3.2210687912835        0              3.2210687912835            
0.509          3.2284941217127        0              3.2284941217127            
0.510          3.2359365692963       1               3.2359365592962            

             第四步,计算给定真数的对数值,编制常用对数表

       真正用来编制常用对数表的,主要靠“三级反对数表”。方法还是内插。内插公式:
设:每段段首的对数为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                  
1.997                 0.00173769          0.00033635               0.30034               0.30038                  
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 

   表中特地令Z3,超出区间,看误差有多大。结果第二位差1.7,不行。不能外插。

还试算了用“二级反对数表” 编表,保守一点,可编五位用表。这里就不再详录了。

我算了一个多星期,到最后才醒悟到:

编算一本常用对数表,真正的起算数,只需两个:对数1及其真数10。说起来不可思议,但这是真的。

感谢“事理环境论”先生。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有