0

算术方法续谈

 2 years ago
source link: https://z-rui.github.io/post/2016/11/more-arithmetic/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

算术方法续谈

Mon Nov 28, 2016

我一直用一个简单的近似公式来估算一个数的平方根: n2+d≈n+d2n.

例如我想估算10的算术平方根,心中默想10=32+1,于是10≈3+16=3.167。这个方法非常简单有效。

我不知道以前的算术课程是否要讲授笔算开方的方法。反正自从电子计算器普及,这些技术就无人问津了。有一种竖式方法可以用来做任意位数的开方运算,如下图所示:

latex-2.svg

方法是,将被开方数以小数点为基准,每两位分为一段,每段将要对应结果中的一位。接下来列一个类似除法的竖式。略有不同的是,除数是不定的。确定除数的方法如下:将现有的商数(即第一行的数值,不计小数点)乘以20,写在最左边一栏,这时候,末尾的一位0暂时不要写,用下划线代替。确定好除数以后,进行试商,即取一个0~9的数字,填在下划线上,然后将除数和这个数相乘。如果恰好最接近被除数但不超过,就确定了这位商数,可以写在第一行相应的位置上。试商的时候,可以先利用高位的数字进行估算,然后填上下划线上数字,进行具体的计算。接下来的运算和除法类似:计算余数,然后从被开方数中补上一段,构成新的被除数。

这种算法式的描述并没有讲明白这个运算的原理。这个计算方法有一个优点就是可以无限地进行下去,缺点则是算式中数字的位数会越来越大,计算也就会越来越困难。

由上面的算式可知,10≈3.1622777,前面提到的估算方法的误差大约为0.1%,精度很不错了,而且省了大量的脑力。

如果手头有平方数表,那么开方自然是一件不费力的事。要获得较多的有效数字,除了竖式笔算以外,通常需要借助较为精密的对数表。我偶然看到了一本1970年的《简便八位对数表》,它的计算方法非常精妙,使得对数表本身可以精简,而且精度也足够。对此我感到耳目一新。只是可惜那个年代已应是计算机大行其道的时候了,即便研究出再巧妙的手工计算方法,意义真的不大。

使用对数表开方的原理为下述恒等式:lg⁡x=12lg⁡x。例如,10的对数(碰巧)是1,那么它的算术平方根的对数就是0.5。我们只需在对数表中找出0.5对应的真数即可。用那本《简便八位对数表》做例子1,经过一系列的计算将得到lg⁡10=0.5=lg⁡3.16227766,和竖式方法的结果是一致的。

如果不是要开平方而是要开立方,那也很容易通过对数表来完成。以一般的四位对数表为例,只要查0.3333对应的真数即可。很容易查到答案为2.155,用计算器验算可知误差为0.02%。如用八位对数表,则很容易得到8位有效数字。另一方面,如果要用竖式的方法开立方,那么计算将是相当繁琐的。

作为对这种神奇的技术的致敬,我花了几个小时的时间对《简便八位对数表》做了“数码重制”,并且印制成了A5大小的小册子。

mathtab-1.jpgmathtab-2.jpg

  1. 事实上我还没找到其他的八位对数表的原本,不知道它们是怎样编排的。(据我所知有几百页厚。) ↩︎



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK