合数表:对数表是怎样算出来的?

我读初二的时候 , 其中一本教材就是薄薄的《常用对数表》 。当时很好奇 , 这个常用对数表是怎么算出来的 。昨天看到李永乐对比3的361次方和10的81次方大小 , 又想起来这个初中时候的疑惑 。网上搜到这个文章 , 觉得很有收获 , 转帖给大家 。虽然不一定是当时人的算法 , 但是也可以开拓我们的思维 。
回到十七世纪 , 让我来编算一本常用对数表
自十八、九岁学习了对数后 , 就觉得造对数表真不简单 。据说十七世纪那时 , 说如果谁发现了对数表上有一个数字错 , 就奖一两黄金 。
据百科百度:纳皮尔(1550~1617年),苏格兰数学家,对数的创始人 。他的最大贡献是发明了对数 。纳皮尔的杰作《奇妙的对数定律说明书》于1614年6月在爱丁堡出版 。纳皮尔的朋友 , 英国人布里格斯 , 将纳皮尔创立的对数改为常用对数,它才得到广泛使用 。并在1624年出版了《对数算术》 , 公布了以10为底包含1—20000及90000—100000的14位常用对数表 。
1671年 , 著名的德国数学家莱布尼兹(G.W.Leibnitz)制成了第一台能够进行加、减、乘、除四则运算的机械式计算机 。
可见 , 布里格斯编算常用对数表时 , 机械式计算机还未发明 , 看来只能是手算了 。
我那时不知道十七世纪是怎样编算对数表的 。但我还是想自己亲手来编一份 , 那怕为数很少也可以 , 只想弄明白 , 对数表是怎样编算的 。这一心愿几十年来一直没有了结 。
想起二十世纪五六十年代 , 对数表不能离手 , 少了它就无法工作 , 真不胜感慨 。当70年代用上了飞鱼牌手摇计算机后 , 就告别了六位对数表 。当80年代用上了电子计算器后 , 又告别了八位函数表和手摇计算机 。在电脑已普及的今天 , 我仍有用手算方法来造对数表的想法 , 这似乎有点可笑 , 但“怎样造原始的对数表”的问题 , 仍牵引着我的心 , 一直想了此一事 。
想不到年老了 , 竟灵光一闪 , 得到了一个造表方法 , 并且可以分配到许多人 , 各自独立计算不同的数值范围 , 最后汇集于一起 , 成为一本对数表 , 这样就可以较快完成 , 不必化几年、乃至几十年时间了 。
所谓常用对数 , 就是以10为底时 , 有方程10^D=Z 。如果知道一个数Z (叫真数) , 则10的指数就是D ,  D就叫十进对数 , 也叫常用对数 。给出Z , 求D 。并以D = Lg Z表示之 。例如10^D=2 , 给出2 , 求D 。并以D = Lg2表示之 。查对数表可得D = Lg2 =0.30103 , 即10^0.30103 = 2。亦即10的0.30103次方等于2 。
10的整数次乘方可以算 , 可是0.30103次方怎么算呢?真是无法理解 。但如果说 , 因为0.30103=30103/100000 , 那末先算10的30103的次方 , 再开100000次方 , 倒是有道理的 , 但2的对数是0.30103 , 决不可能是这样算的 , 所以仍很玄 。那么2的对数是0.30103 , 到底是怎样算出来的呢?
这么一想就有一个启发 , 就是10的零点几次方 , 可以这样算:先乘方、再开方 , 而主要是开方 。例如10的开平方 , 就是10的0.5次方 。10的开3方 , 就是10的0.33333次方等等 。受此启发 , 经反复试算 , 得到编算常用对数表的步骤和方法:
$1 先求最基础的对数
1 、我想 , 世界上第一个常用对数 , 可能就是3.16227766的对数0.5 。因为 3.16227766 = √10
【合数表:对数表是怎样算出来的?】= 10^(1/2)= 10^0.5  , 而0.5就是它的对数 。10的开方 , 用笔算可以一次开出 , 也可以用逐步试算趋近 。如先用3.16*3.16=9.9856 , 不够 , 再用3.163*3.163=10.004569 , 超过了一点 , 再用
3.16228*3.16228 =10.0000147984…最后定为3.16227766 。也就是说3.16227766的对数为0.500000 。
2、 第二个 , 可能就是2.15443469的对数为0.333333了 。因为2.15443469 = 3√10 =10^(1/3)
= 10^0.33333  , 而0.3333333就是它的对数 。10的开3方比较麻烦 , 可以逐步试算趋近 。如先用2.15*2.15*2.15 = 9.9384 , 不够 , 再用2.1544*2.1544*2.1544 = 9.99952 , 还不够 , 再试 , 最后定为2.15443469 。也就是说2.15443469的对数为0.333333 。
3 3.16227766的对数为0.500000 。2.15443469的对数为0.333333…这样的对数 , 我称它们为最基础的对数 。最基础的对数需要多少个呢?这里仅算出8个 , 我想也许够了 。即只要计算:
10的1/2次方 , 亦即10的开2次方 。注意2是素数 。
10的1/3次方 , 亦即10的开3次方 。注意3是素数 。
10的1/5次方 , 亦即10的开5次方 。注意5是素数 。
10的1/7次方 , 亦即10的开7次方 。注意7是素数 。
10的1/11次方 , 亦即10的开11次方 。注意11是素数 。
10的1/13次方 , 亦即10的开13次方 。注意13是素数 。
10的1/17次方 , 亦即10的开17次方 。注意17是素数 。
10的1/19次方 , 亦即10的开19次方 。注意19是素数 。
就可以得到相应的对数 。用这些最基础对数 , 再去拓展其他的对数 。计算这些最基础对数 , 只要用开方就可以了 。开方虽然很烦 , 特别是开7次方以上时 , 要逐步、反覆连乘7次以上来校核改进 , 的确很烦 , 但毕竟是可以用手工算得出来的 。我想 , 在十七世纪时 , 也只能这样硬算了 。
4 、 而10的开4次方 ,  10的开6次方 ,  10的开15次方…就不必了 , 因为它们可以根据上述最基础的对数 , 就能方便算出的 , 不必白费力气了 。
由 10 的 开 D 次 方 所 得 的 《基 础 对 数 表》

合数表:对数表是怎样算出来的?

文章插图
$2 基 础 对 数 表 扩 充
有了上面的最基础的对数之后 , 就根据对数基本原理:真数相乘除 , 对数便加减的方法 , 可将最基础的对数扩充 。例如:
1 (2√10)*(5√10) = 3.162277660*1.584893192=5.01187
相应之对数为:0.500000+0.200000=0.70000
2 (2√10)/(5√10) = 3.162277660/1.584893192=1.99526
相应之对数为:0.500000-0.200000=0.30000
3 这样 , 扩充后的对数 , 共96个 , 见下表:
合数表:对数表是怎样算出来的?

文章插图
基 础 对 数 扩 充 表 ,  由最基础的真数和对数 , 经真数乘除、对数加减而得 。
当然 , 这个表很小 , 数量远远不够 。但可以作基础 , 再通过多次交错乘除 , 得到更多的对数 。但要想通过更多次交错乘除 , 得到全部对数 , 是不可能的 , 得另找出路 。其实 , 只要设法先求出“素数的对数” , 那就一劳永逸地解决问题了 。这张《基础对数扩充表》就为下一步求“素数的对数”作了准备 。
$3 求素数的对数(注:采用的二分法)
大家知道 , 合数是素数的乘积 。所以 , 只要知道素数的对数 , 就可以用乘除、加减法 , 算出合数的对数 。于是任何数的对数 , 都可以算出 。那末 , 素数的对数怎样求呢?
分两步:
第一 , 选择数据(选两个基准点) 。在《对数扩充表》内 , 选择尽量靠近所求素数的两个数 。例如 , 要算2的对数 , 表中仅有真数1.99526与2.20220其中1.99526离2很近 , 选中 。而2.20220离2还远 , 我们就不用它 , 另找 。方法是:仍利用上面的对数扩充表 , 找到1.95393与1.03273 , 两个数相乘 , 得:
1.95393*1.03273=2.01788 , (离2很近了) , 选中 。其相应对数为:
0.29091+0.01399=0.30490。
这样 , 就取1.99526与2.01788两个数去内插 , 求2的对数 。1.99526与2.01788这两个数 , 称做逼近值 。
第二 , 内插法(二分法计算) 。
真数 对数
a= 1.99526 A=0.30000
b= 2.01788 B=0.30490 求 Z=2 的对数 。
在很小区间内(所求值百分之一、二的误差) , 采用线性内插公式
Lg Z = A+(B-A)/(b-a)*(Z-a)
计算得Lg 2 = 0.30103
这个方法只用到乘 , 除、加、减 , 所以可用手算 。为减少工作量 , 最好多采用乘法去找逼近值、内插 。
以下是 Lg 2、Lg 3、 Lg 5、Lg 7 、Lg41、Lg 43的计算过程:
合数表:对数表是怎样算出来的?

文章插图
合数表:对数表是怎样算出来的?

文章插图
数 据 准 备 中 的 真 数 和 对 数  , 来自 《基 础 对 数 扩 充 表》
合数表:对数表是怎样算出来的?

文章插图
合数表:对数表是怎样算出来的?

文章插图
$5 分工合作、同心协力编常用对数表
最基础对数→对数扩充表→素数的对数→合数的对数 , 这样的四个步骤 , 使许多人同时作业成为可能 。组织分工如下:
1、先由少数人计算最基础对数 。要准 , 取位要多 , 如编八位对数表 , 最基础对数至少要取十位以上 。
2、再由少数人 , 分工计算对数扩充表 。最基础对数与对数扩充表便作为公用 。
3、组织许多人 , 同时计算素数的对数 。每人分担一段 , 如1—50 、50—100 、 101—200 、 201—400…在各自范围内 , 计算素数的对数 。素数的对数也作为公用 。
4、组织许多人 , 同时计算合数的对数 。也是每人分担一段 , 既互用成果 , 又互不干涉 。
5、每人每天的成果 , 汇总公布 , 以便下一步工作时互相利用 , 提高工效 。
结 语
假如把乘除比作一条汹涌的河 , 那末对数表就是一座平缓的桥 。它使众多的实用计算者 , 较轻松的到达彼岸 , 极大的提高工作效率 。但时隔三百年至于今天 , 那些造桥的人 , 乃至造桥的方法 , 己淹没在历史的巨卷之中 , 对数表也进入了历史博物馆 。
我们纪念逝去的人 , 还要发愿:要发扬先辈追求真理、为全人类效力的精神 , 为科学的理性发展而学习、而奋斗!

    推荐阅读