∫π每天一道数学题
← 返回孙子算经
孙子算经 · 第 49 讲 · 2026-11-04 · 约 12 分钟

在仓九年:古人的简算与复利的差距

粟三十六万九千九百八十斛七斗,在仓九年,年斛耗三升,问一年、九年各耗几何?答曰一年一万一千零九十九斛四斗二升一合,九年九万九千八百九十四斛七斗八升九合。术文只说「以三升乘之,又以九乘之」——九年耗就是一年耗乘九。可如果每年的存量都在减少,这个算法对不对?"

原典

今有粟,三十六万九千九百八十斛七斗,在仓九年,年斛耗三升。问:一年、九年各耗几何?

答曰:一年耗一万一千九十九斛四斗二升一合,九年耗九万九千八百九十四斛七斗八升九合。

术曰:置三十六万九千九百八十斛七斗,以三升乘之,得一年之耗,又以九乘之,即九年之耗。

白话翻译

有粟三十六万九千九百八十斛七斗,存入粮仓九年,每斛每年损耗三升。问:一年和九年各损耗多少?

答案是:一年损耗一万一千零九十九斛四斗二升一合,九年损耗九万九千八百九十四斛七斗八升九合。

术文给的算法是:拿三十六万九千九百八十斛七斗乘三升,得一年的损耗;再乘九,得九年的损耗。

这道题是《孙子算经》里最有金融意味的一道。 它不是简单的一次乘法——九年耗怎么从一年耗推出来,藏着「简算」与「复利」的分歧。

示意图

在仓九年:简算与复利两条路径的对照

图:一年耗 = 存量 × 0.003;九年耗简算 = 一年耗 × 9;若按复利则逐年递减,两者相差 1.19%

古人的算法

先算一年耗。 每斛每年耗三升,即损耗率

3 升1000 升=0.003=0.3%\frac{3\ \text{升}}{1000\ \text{升}} = 0.003 = 0.3\%

一年损耗

V1=V0×0.003V_1 = V_0 \times 0.003

再算九年耗。 术文说「又以九乘之」,即

V9=V1×9=V0×0.003×9V_9 = V_1 \times 9 = V_0 \times 0.003 \times 9

这里就是关键的数学判断。 术文把九年的损耗当成一年损耗的九倍。这个做法成立的前提是:每年损耗的都是最初那批存量,不考虑「损耗之后剩下的粟也在继续变少」。

换个说法:第一年损耗 0.003V00.003 V_0,此时仓里剩 0.997V00.997 V_0;第二年若按实际,应损耗 0.003×0.997V00.003 \times 0.997 V_0,比第一年少一点。但术文假设第二年仍损耗 0.003V00.003 V_0——它把存量固定在最初的水平上做线性外推。

这叫「简算」:够用就好,不必精确。

现代数学视角

两条路,两个答案。

路径一:简算(术文)

V9=9×V0×0.003V_9 = 9 \times V_0 \times 0.003

路径二:复利(逐年递减)

设第 kk 年初存量为 Vk−1V_{k-1},第 kk 年损耗 0.003Vk−10.003 V_{k-1},余下 0.997Vk−10.997 V_{k-1}。九年累计损耗

∑k=190.003×0.997k−1V0\sum_{k=1}^{9} 0.003 \times 0.997^{k-1} V_0

用等比求和:

V9复利=0.003V0×1−0.99791−0.997V_9^{\text{复利}} = 0.003 V_0 \times \frac{1 - 0.997^9}{1 - 0.997}

代入数值,九年累计约 98704.498704.4 斛;而术文的简算给 99894.78999894.789 斛。简算比复利多算了约 1190 斛,相对差 1.19%。

古人选了简算,为什么合理? 三个理由:

  1. 损耗率极小(0.3%),九年累计不到 3%,复利效应很弱;
  2. 古代仓储本来就是「陈陈相因」——每年新粮入仓、旧粮出粜,存量大致维持,不是一袋米放九年不动;
  3. 算筹上「乘九」比「九次求和」容易得多,简算的效率优势压倒精度优势。

今天这件事叫「模型选择」。 银行算九年利息,必须用复利,差一分钱都是资产;粮仓估九年损耗,用线性外推完全够用。同一个数学问题,用简算还是用复利,取决于场景对精度的要求。

顺带一提:本题的原始数据有个疑点——按题面「三十六万九千九百八十斛七斗」(369980.7 斛)乘 0.003,得 1109.94 斛,与答曰「一万一千零九十九斛」相差十倍;而若按「三百六十九万九千八百零七斛」代入,则与答曰完全吻合。传本在数字上可能有脱漏。本书按答曰反推的数值讲解,重在算法而非数字。

高中课本关联

等比数列:复利路径正是 0.003V0,0.003V0×0.997,…0.003V_0, 0.003V_0 \times 0.997, \ldots 构成的等比数列求和。这是等比数列最实用的场景之一,比课本上的「细胞分裂」更贴近经济。

指数衰减:0.997k0.997^k 是指数衰减模型。九年剩 0.9979≈0.97320.997^9 \approx 0.9732,即损耗约 2.68%。这与简算的 2.7% 差 1.19%,正好让学生看到线性近似在低速率、短周期下够用,高速率下失效。

模型选择的思想:同一问题两种算法,差距 1.19%。让学生讨论:什么场合必须精确,什么场合简算更好?这是数学建模的核心训练。

数据核对的意识:本题原始数据与答案存在十倍差。让学生自己发现这个矛盾,比做十道题更有价值——读题时核对数量级,是工程师的基本功。

思考与拓展

  1. 算一算:按简算,一年耗多少?九年耗多少?用题面数字验证与答曰的对应关系(注意十倍的疑点)。

  2. 复利重算:设存量 V0V_0、年损耗率 r=0.003r = 0.003,列出九年累计损耗的等比求和式,算出数值,与简算结果比较,求相对误差。

  3. 损坏率变大会怎样:若年损耗率升到 30%,九年简算与复利各是多少?相对误差多大?由此说明「简算什么时候会失效」。

  4. 真实仓储:若仓储不是九年不动,而是「每年陈粮出尽、新粮入仓」,存量始终不变,问九年总损耗是多少?这支持了简算还是复利?

  5. 古今金融:本题的「年斛耗三升」类似今天的折旧率、损耗率。查一查企业固定资产折旧的两种方法(直线法与加速折旧法),它们分别对应本题的简算还是复利?

一句话总结

一年耗乘九就是九年耗——古人用一条乘法把九年的账算完;而复利告诉我们,损耗掉的粮食第二年就不再损耗了。

— Y. · 2026-11-04