对数表与算盘

【大观元年·汴京·陈砚】

大观元年的初秋,汴京凉意渐生。陈砚案上摊着三样东西:一把上好的红木算盘,是万胜行东家送的谢礼;一沓写满数字的竹纸,是他这半月手算的对数表草稿;还有一支竹尺,上面他用小刀刻了一行密密的刻度——那是对数刻度,相邻刻度间距不等,左疏右密,看似古怪,却是化乘除为加减的器物。前日司天监一位老吏来问:欲推五星行度,须算 365.25 的 12 次方,筹算摆了三日未毕。陈砚听了,心想:这正是对数登场的时机。算盘善加减而对乘除力拙,对数恰好补其短——两者配合,便是计算机出现之前最高效的算法。他拿起竹尺端详片刻,又提起笔,在草稿顶端补一行字:”log(ab) = log(a) + log(b)“。

0. 一句话价值

对数把乘除化为加减、把乘方开方化为乘除——与算盘配合,是计算机出现前人类最高效的算法,天文、工程、金融大数计算的利器。

1. 科学原理

对数的核心思想一句话可尽:化乘除为加减

若有一数 a,其对数记作 log(a)。对数满足两条基本性质:

log(a × b) = log(a) + log(b)
log(a ÷ b) = log(a) − log(b)

由此,欲算两数之积 a × b,不必直接乘,只须:

  1. 查表得 log(a)、log(b);
  2. 相加得 log(a) + log(b) = log(a × b);
  3. 反查表(查”反对数”),由 log(a × b) 得 a × b。

除法同理,改为相减。乘方与开方更妙:

log(aⁿ) = n × log(a)
log(ⁿ√a) = log(a) ÷ n

故 a 的 12 次方,只须查 log(a),乘以 12,再反查表即得——三日之功化为半刻。

对数的底数可任取。常用者二:

  • 常用对数(以 10 为底):log₁₀(a),记作 lg(a)。布里格斯(Briggs, 1624)所倡,因与十进制契合,工程计算最便。
  • 自然对数(以 e 为底):ln(a),e ≈ 2.71828。微积分之用,陈砚此时可暂不教。

对数之发明,源于简化天文大数计算之需。苏格兰人纳皮尔(John Napier)于 1614 年出版《奇妙的对数表》,首次公开对数概念与表;瑞士人比尔吉(Bürgi)独立发明稍晚。此被誉为 17 世纪三大数学发明之一(另二者为解析几何、微积分)。与解析几何、微积分不同,对数是纯粹的”计算工具”——不靠天才灵感,只靠一张表、一把尺,便能把数日之功缩为数刻。

计算尺是对数的器物化。将对数刻度刻于两根可相对滑动的尺上,则两数之积对应刻度之加(尺之滑动相加),除法对应滑动相减。1620 年甘特(Gunter)首刻对数于尺(甘特尺),1621 年奥特雷德(Oughtred)以两把甘特尺制成首把计算尺,1630 年又制圆形计算尺。计算尺精度有限(约三位有效数字),无小数位(须心算估位),但便携速算,是工程师三百年之随身利器,直至 20 世纪 70 年代电子计算器普及方退。

2. 北宋背景

大观年间的汴京,计算工具已是”算盘天下”,然大数乘除仍是大难。

算盘之盛。 宋代算盘已普及。《清明上河图》中”赵太丞家药铺”柜台上绘有算盘(学界尚有争议,但至迟南宋已成熟无疑);1921 年河北巨鹿故城(宋大观二年黄河决口所淹)出土木质算盘珠,扁圆形、有孔,与今通用算珠无异,是宋代算盘之铁证。宋代”算盘”二字已见于文献,珠算口诀(九归除法等)逐渐成型。算盘之长在加减——拨珠如飞,目不暇接;其短在乘除与乘方——须口诀配合,多位乘除繁琐易错,乘方开方更须反复运算,大数尤难。

筹算之余。 筹算在宋代渐被算盘取代,然天文历法、高次方程仍用筹算(增乘开方法、正负开方术)。筹算之长在开方解方程,其短在乘除繁琐、不留过程。司天监推五星行度,动辄多位大数连乘,筹算摆满一案,一日难竟一题。

对数之缺。 对数 1614 年方由纳皮尔发明,17 世纪中叶(清初)经穆尼阁、薛凤祚《比例对数表》(又名《历学会通》)传入中国,称”假数”“比例数”。康熙朝《数理精蕴》始系统介绍,称”对数比例”。换言之,大观元年(1107)的汴京,对数尚未问世,更未传入——陈砚所引入者,是比历史提前五百余年的”未来算法”。

陈砚的优势:对数概念、对数表、计算尺,皆为现成知识,无须试错。所需物料仅为纸笔墨(编表)与竹木(制尺),与宋人日常无二。难点不在”造”,而在”教”——对数概念抽象,须以大量实例令宋人会意。

3. 知识体系构建步骤

第一步:教对数之”理”——化乘为加

先不讲定义,只讲效果。取两数,如 100 与 1000:

100 × 1000 = 100000
log(100) = 2      (因为 10² = 100)
log(1000) = 3     (因为 10³ = 1000)
log(100) + log(1000) = 2 + 3 = 5
10⁵ = 100000      ✓

令学生验之:积之对数 = 对数之和。再取除法:

1000 ÷ 100 = 10
log(1000) − log(100) = 3 − 2 = 1
10¹ = 10      ✓

教诀:“乘变加,除变减,乘方变乘,开方变除”。此一句胜千言。反复以 10 的幂验之,令学生先信其理,再究其故。

第二步:教常用对数之定义

以 10 为底的对数:log₁₀(a) = b,意为 10^b = a。

log(1)   = 0      (10⁰ = 1)
log(10)  = 1      (10¹ = 10)
log(100) = 2      (10² = 100)
log(1000)= 3      (10³ = 1000)

凡 1 与 10 之间之数,其对数在 0 与 1 之间;10 与 100 之间者,对数在 1 与 2 之间。此即”首数”与”尾数”之分:

log(235) = 2 + log(2.35) ≈ 2.371
          首数     尾数

首数即整数位数减一,可一眼看出;尾数须查表。教学生:查表只查尾数,首数自定

第三步:编对数表

此乃本篇最耗工之力。须编一份”常用对数表”,列 1 至 10(或 1.0 至 9.9,每 0.1 一行)之对数值,精度四位或五位。

编表之法:

  • 初阶:陈砚凭记忆中数值(如 log(2) ≈ 0.3010、log(3) ≈ 0.4771、log(7) ≈ 0.8451)与 10 的幂推算,先编一份粗表。
  • 进阶:以级数法精算。ln(1+x) = x − x²/2 + x³/3 − ……,再换底 log₁₀(a) = ln(a) / ln(10)。此法精确,须先教级数与换底,难度大,可留待后学。
  • 务实:陈砚先编四位对数表(1.0 至 9.9,每 0.1 一行,共 90 行),令学徒以算盘反复校核。表成刻版印行,分发商号与司天监。

第四步:教查表与反对数

查表:已知 a,求 log(a)。

求 log(235):
  235 = 2.35 × 100,首数 = 2
  查表 log(2.35) ≈ 0.3711
  故 log(235) ≈ 2.3711

反对数(反查表):已知 log(a),求 a。

求 antilog(2.3711):
  首数 2 → 10² = 100
  尾数 0.3711 查反对数表 → 2.35
  故 a = 2.35 × 100 = 235

教诀:“正查知积之对数,反查知对数之积”。须反复练查表与反查,令学生如拨算盘般熟练。

第五步:教对数运算——乘除乘方开方

乘法,求 235 × 47:

log(235) ≈ 2.3711
log(47)  ≈ 1.6721
相加:    4.0432
反查:    antilog(4.0432) ≈ 11045
验:235 × 47 = 11045 ✓

除法,求 11045 ÷ 235:

log(11045) ≈ 4.0432
log(235)   ≈ 2.3711
相减:       1.6721
反查:       antilog(1.6721) ≈ 47 ✓

乘方,求 1.05¹²(月息五厘,十二月复利):

log(1.05) ≈ 0.0212
乘 12:    0.2543
反查:     antilog(0.2543) ≈ 1.796
故 1.05¹² ≈ 1.796(本利和约为本金 1.8 倍)

开方,求 √2:

log(2) ≈ 0.3010
除 2:  0.1505
反查:  antilog(0.1505) ≈ 1.414
故 √2 ≈ 1.414 ✓

教诀:“乘方乘对数,开方除对数”。此四例须令学生反复练,体会”大数难算之题,对数化简之妙”。

第六步:与算盘配合

算盘善加减,对数善化乘除为加减。两者配合之workflow:

1. 查对数表:log(a)、log(b)        —— 纸面查表
2. 算盘加减:log(a) ± log(b)        —— 算盘拨珠
3. 反查对数表:antilog(结果)        —— 纸面查表

如此,算盘做加减(其所长),对数表做乘除(其所化),各取所长,效率倍增。陈砚可定一”算盘—对数”协同规程,令学徒照行。

第七步:制计算尺

取竹木之尺两根,各刻对数刻度(刻度间距 = log(刻度值) × 尺长系数):

1 — 2 — 3 — 4 — 5 — 6 — 7 — 8 — 9 — 10
(刻度左疏右密,因 log 之增长渐缓)

两尺相对滑动,可读积商:

  • 乘法:滑尺上”1”对准定尺上 a,则滑尺上 b 所对定尺之刻度即 a × b。
  • 除法:滑尺上 b 对准定尺上 a,则滑尺上”1”所对定尺之刻度即 a ÷ b。

计算尺精度约三位有效数字,无小数位(须心算估位),但便携速算,无须翻表。陈砚可制数把分赠商号与工坊。

第八步:实战应用

选题须贴近汴京实务:

  • 复利精算:印子钱月利滚算,旧法筹算数日,对数半刻可毕。
  • 天文推步:五星行度之连乘连除,司天监旧法数日,对数数时辰。
  • 工程估算:筑城、铸钟之用料连乘(长 × 宽 × 高 × 比重),大数速算。
  • 航海定位:球面三角之乘除(须配合三角函数表,衔接几何篇)。
  • 人口统计:各路户数连乘连除之汇总。

每题先用算盘旧法算一遍,再用对数算一遍,对照显效——此举最能服人。

第九步:说服士大夫

托名”回回测天之妙法”,称此法得自大食(阿拉伯)天文学家,用以推五星行度。强调”非新术,乃算术之捷径”,与宋人筹算之”以加减代乘除”思想同源(纳皮尔算筹即类似)。对士大夫讲”对数乃’数之shortcut’,化繁为简,与《易》之’易简而天下之理得’暗合”;对商人讲”对数即’一表在手,万金可算’“,直指其利。

4. 难点与避坑

一、概念之抽象。 对数定义”10^b = a 则 log(a) = b”,须先懂指数。宋人无指数概念,骤讲对数必懵。对策:先不讲定义,只讲效果(化乘为加),以大量实例令学生信其有效;待熟练后再回头讲定义与指数,水到渠成。此即”先用后理”之法。

二、首数尾数之混。 初学最易把首数当尾数查,或忘加首数。须令学生牢记:“首数看位数,尾数查表”。如 log(2350),位数 4,首数 3;尾数查 2.35 得 0.3711;合为 3.3711。反复练,至不假思索。

三、小数位之失。 对数表只给尾数,结果之小数位须心算估。如 antilog(4.0432),首数 4 意为五位整数,故结果约 11045 而非 1104.5 或 110450。初学易错位,须令学生养成”先估数量级,再查表”的习惯。

四、负首数之惑。 小于 1 之数,其对数为负。如 log(0.0235) = −2 + 0.3711 = −1.6289,或记作 2̄.3711(首数上加横线表负)。此记法宋人极易混淆。对策:初学只教大于 1 之数,待熟练后再引入负首数;或统一用纯小数表示(−1.6289),避免首数尾数分离。

五、表之误差累积。 四位对数表,每步误差约 0.01%,多步运算累积可至 1%。精密计算(天文、铸炮)须用五位或六位表。对策:日常商用四位足矣,天文工程须精编五位表,且关键步骤以算盘验算。

六、计算尺之精度限。 计算尺仅三位有效数字,且无小数位,不能直接加减。须讲明:计算尺是”速估之器”,非”精算之器”;精算须查表,速估用尺。两者分工,不可混用。

七、对数与算盘之”争”。 老账房或视对数为”旁门左道”,坚持算盘口诀。须不争优劣,只论效率:以同题对照,令其自见高下。又须强调”算盘不废”——加减仍用算盘,对数只补乘除之短,非取而代之。

5. 价值评估

基础价值:对数是计算机出现前最高效的算法。天文推步、工程精算、金融复利、航海定位——凡涉大数乘除乘方开方,皆可化简。无对数,则五星行度须筹算数日,复利滚算须算盘半旬,开高次方几乎不可能。

经济价值:商号复利精算效率提升数十倍。万胜行老账房算三年滚利,旧法三日,对数半刻。司天监推五星行度,旧法数日,对数数时辰。省下的人力即是钱,省下的时辰即是机。

战略价值:陈砚日后布局天文(推步验历)、军工(弹道射程)、海贸(航海定位)、情报(密码统计),每条线都须大量大数计算。对数表一旦刻版传世,便是汴京最高效的”计算引擎”——一张纸、一把尺、一把算盘,便抵得上一个算房。

更深远:对数与解析几何、微积分并称 17 世纪三大数学发明。对数不仅是计算工具,更蕴含”函数变换”思想——把乘法群映射到加法群,此乃近代数学”同构”概念之雏形。陈砚种下此因,百年之后,其后学或能由此悟出更深之理。

6. 升级路径

  1. 对数之理与查表(本篇):化乘除为加减,四位常用对数表。
  2. 对数运算实战:乘除乘方开方,与算盘协同。
  3. 计算尺:对数刻度尺,速估之器。
  4. 五位六位对数表:精密计算之需,衔接天文篇。
  5. 自然对数与 e:微积分之用,ln 与 e ≈ 2.71828。
  6. 对数与级数:ln(1+x) 级数展开,编表精算之法。
  7. 指数函数与对数函数:从计算工具到函数概念,衔接代数篇。
  8. 微积分思想:以对数与指数为桥梁,引入变化率与面积。

7. 参考

  • 约翰·纳皮尔(John Napier, 1550—1617)《奇妙的对数表的描述》(Mirifici Logarithmorum Canonis Descriptio, 1614):对数首次公开。
  • 约斯特·比尔吉(Jost Bürgi, 1552—1632):独立发明对数,稍晚于纳皮尔。
  • 亨利·布里格斯(Henry Briggs, 1561—1630)《对数算术》(Arithmetica Logarithmica, 1624):常用对数(以 10 为底),十四位对数表。
  • 埃德蒙·甘特(Edmund Gunter, 1581—1626):1620 年刻对数于尺(甘特尺),计算尺之雏形。
  • 威廉·奥特雷德(William Oughtred, 1574—1660):1621 年以两把甘特尺制成首把计算尺,1630 年制圆形计算尺。
  • 阿梅代·马内姆(Amédée Mannheim, 1831—1906):1850 年改进计算尺,加游标,定型现代计算尺。
  • 薛凤祚、穆尼阁《比例对数表》(又名《历学会通》,清初):对数首次传入中国,称”假数”“比例数”。
  • 康熙朝《数理精蕴》(1723):系统介绍对数,称”对数比例”,”对数”之名始定。
  • 《清明上河图》(北宋张择端):”赵太丞家药铺”柜台绘有算盘图样。
  • 河北巨鹿故城出土宋代木质算盘珠(1921 年发掘,宋大观二年黄河决口所淹):宋代算盘之实物铁证。
  • 程大位《直指算法统宗》(1592):珠算集大成之作,算盘用法与口诀之典范。

【大观元年·汴京·陈砚】

又过半月,司天监那位老吏再来,拿回一张写满数字的纸,纸上算的是 365.25 的 12 次方——用对数,半刻即毕,结果是 1.018×10³⁰ 量级,与旧法筹算三日所得吻合。老吏抚掌叹道:”此法真乃神术。”陈砚摇头:”非神术,乃算术之捷径。算盘做加减,对数化乘除,二者配合,便无难算之题。”他把那把刻了对数刻度的竹尺递给老吏:”这尺子随身可带,估数虽粗,却胜在速——你若在城头望见烟尘,量一仰角,滑一滑尺,便知敌骑远近。”老吏接过尺子,半信半疑地试着滑动两下,忽然眼睛一亮。陈砚看着他的背影消失在巷口,心想:对数表一旦刻版印行,计算尺一旦成批制出,汴京便有了第一套”大数计算引擎”——往后推历法、算复利、估弹道、画地图,都要从这张表、这把尺算起。