十七世紀的常用對數表是怎麼算出來的

2021-10-05 17:53:31 字數 4220 閱讀 3189

十七世紀的常用對數表是怎麼算出來的

前不久,在網上看到了金澤長街小牛先生的博文

《回到十七世紀,讓我來編算一本常用對數表》

,受益匪淺。在我上中學時,也曾對數學用表中的對數和三角函式值是怎麼算出來的感到好奇,但始終不得其解。中學時學的是四位對數表,後來也見到過八位對數表和十位對數表,但看不懂,不會用。讀過小牛先生的文章後,不僅知道了對數表是怎麼算出來的,也豁然明白八位對數表是怎麼回事了。受小牛先生博文啟發,我也想到了一種更為簡單精確的計算常用對數表的方法,不用手算開高次方,只需加減乘除開平方,就可以編制出常用對數表,這裡介紹出來,與大家分享。

第一步、計算第一組基礎對數

這組基礎的對數值是: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之間的間距僅有1/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這兩個數的對數的平均值。平均值計算實際也是

「線性內

插」,但

要簡單得多,真正需要用比較麻煩的「線性內插」計算的質數只有幾百個,合數的對數由其約數的對數相加

得到,這種製表方法計算量要少一些,但精度也要稍遜一些。總的來說,編制對數表要比反對數表計算量要少一些。

編制八位常用對數表和反對數表,計算量巨大,個人很難獨力完成,如果有幾十個人分工合作,一兩個月製出常

用對數表和反對數表,應該不算什麼大問題。

計算編制常用對數表的工作也一樣可以找多人分擔,以加快速度。

對數函式不是直線函式,做線性內插必會有誤差,誤差大小決定於插值區間大小,區間越小,誤差也越小。若想要更精確的對數表,我認為應該多增加算幾個基礎對數,盡量減小插值區間。第二組基礎對數值必須進行檢驗,消除誤差。

上面就是我對常用對數表計算方法的思考。時隔幾百年,十七世紀的常用對數表究竟是不是這樣算出來的,有沒有更好的方法就不知道了。以我的看法,本文敘述的方法已經足夠簡單精確了,沒有技術障礙,若組織好了,即便是一些中學生也能完成這樣的計算編制工作。

雲計算對21世紀IT人的挑戰

大中華區雲計算中心專案總監 朱近之 隨著計算技術的發展和商業的推動,雲計算逐漸成為it 發展的趨勢,並逐漸融入 it的日常管理和開發模式之中。雲計算在全球已經有了很多成功案例,這些案例均證實了雲計算技術的可行性 穩定性和高效性。處於 21世紀的 it人才,只有充分了解雲計算所帶來的挑戰和機遇,才能更...

雲計算對21世紀IT人才的挑戰

隨著計算技術的發展和商業的推動,雲計算逐漸成為it 發展的趨勢,並逐漸融入 it的日常管理和開發模式之中。雲計算在全球已經有了很多成功案例,這些案例均證實了雲計算技術的可行性 穩定性和高效性。處於 21世紀的 it人才,只有充分了解雲計算所帶來的挑戰和機遇,才能更好地適應這種 it管理上的創新。雲計...

朱近之 雲計算對21世紀IT人才的挑戰

本文講的是朱近之 雲計算對21世紀it人才的挑戰,it168 雲計算頻道 隨著計算技術的發展和商業的推動,雲計算逐漸成為it發展的趨勢,並逐漸融入it的日常管理和開發模式之中。雲計算在全球已經有了很多成功案例,這些案例均證實了雲計算技術的可行性 穩定性和高效性。處於21世紀的it人才,只有充分了解雲...