在仓九年:古人的简算与复利的差距
粟三十六万九千九百八十斛七斗,在仓九年,年斛耗三升,问一年、九年各耗几何?答曰一年一万一千零九十九斛四斗二升一合,九年九万九千八百九十四斛七斗八升九合。术文只说「以三升乘之,又以九乘之」——九年耗就是一年耗乘九。可如果每年的存量都在减少,这个算法对不对?"
原典
今有粟,三十六万九千九百八十斛七斗,在仓九年,年斛耗三升。问:一年、九年各耗几何?
答曰:一年耗一万一千九十九斛四斗二升一合,九年耗九万九千八百九十四斛七斗八升九合。
术曰:置三十六万九千九百八十斛七斗,以三升乘之,得一年之耗,又以九乘之,即九年之耗。
白话翻译
有粟三十六万九千九百八十斛七斗,存入粮仓九年,每斛每年损耗三升。问:一年和九年各损耗多少?
答案是:一年损耗一万一千零九十九斛四斗二升一合,九年损耗九万九千八百九十四斛七斗八升九合。
术文给的算法是:拿三十六万九千九百八十斛七斗乘三升,得一年的损耗;再乘九,得九年的损耗。
这道题是《孙子算经》里最有金融意味的一道。 它不是简单的一次乘法——九年耗怎么从一年耗推出来,藏着「简算」与「复利」的分歧。
示意图
古人的算法
先算一年耗。 每斛每年耗三升,即损耗率
一年损耗
再算九年耗。 术文说「又以九乘之」,即
这里就是关键的数学判断。 术文把九年的损耗当成一年损耗的九倍。这个做法成立的前提是:每年损耗的都是最初那批存量,不考虑「损耗之后剩下的粟也在继续变少」。
换个说法:第一年损耗 ,此时仓里剩 ;第二年若按实际,应损耗 ,比第一年少一点。但术文假设第二年仍损耗 ——它把存量固定在最初的水平上做线性外推。
这叫「简算」:够用就好,不必精确。
现代数学视角
两条路,两个答案。
路径一:简算(术文)
路径二:复利(逐年递减)
设第 年初存量为 ,第 年损耗 ,余下 。九年累计损耗
用等比求和:
代入数值,九年累计约 斛;而术文的简算给 斛。简算比复利多算了约 1190 斛,相对差 1.19%。
古人选了简算,为什么合理? 三个理由:
- 损耗率极小(0.3%),九年累计不到 3%,复利效应很弱;
- 古代仓储本来就是「陈陈相因」——每年新粮入仓、旧粮出粜,存量大致维持,不是一袋米放九年不动;
- 算筹上「乘九」比「九次求和」容易得多,简算的效率优势压倒精度优势。
今天这件事叫「模型选择」。 银行算九年利息,必须用复利,差一分钱都是资产;粮仓估九年损耗,用线性外推完全够用。同一个数学问题,用简算还是用复利,取决于场景对精度的要求。
顺带一提:本题的原始数据有个疑点——按题面「三十六万九千九百八十斛七斗」(369980.7 斛)乘 0.003,得 1109.94 斛,与答曰「一万一千零九十九斛」相差十倍;而若按「三百六十九万九千八百零七斛」代入,则与答曰完全吻合。传本在数字上可能有脱漏。本书按答曰反推的数值讲解,重在算法而非数字。
高中课本关联
等比数列:复利路径正是 构成的等比数列求和。这是等比数列最实用的场景之一,比课本上的「细胞分裂」更贴近经济。
指数衰减: 是指数衰减模型。九年剩 ,即损耗约 2.68%。这与简算的 2.7% 差 1.19%,正好让学生看到线性近似在低速率、短周期下够用,高速率下失效。
模型选择的思想:同一问题两种算法,差距 1.19%。让学生讨论:什么场合必须精确,什么场合简算更好?这是数学建模的核心训练。
数据核对的意识:本题原始数据与答案存在十倍差。让学生自己发现这个矛盾,比做十道题更有价值——读题时核对数量级,是工程师的基本功。
思考与拓展
-
算一算:按简算,一年耗多少?九年耗多少?用题面数字验证与答曰的对应关系(注意十倍的疑点)。
-
复利重算:设存量 、年损耗率 ,列出九年累计损耗的等比求和式,算出数值,与简算结果比较,求相对误差。
-
损坏率变大会怎样:若年损耗率升到 30%,九年简算与复利各是多少?相对误差多大?由此说明「简算什么时候会失效」。
-
真实仓储:若仓储不是九年不动,而是「每年陈粮出尽、新粮入仓」,存量始终不变,问九年总损耗是多少?这支持了简算还是复利?
-
古今金融:本题的「年斛耗三升」类似今天的折旧率、损耗率。查一查企业固定资产折旧的两种方法(直线法与加速折旧法),它们分别对应本题的简算还是复利?
一句话总结
一年耗乘九就是九年耗——古人用一条乘法把九年的账算完;而复利告诉我们,损耗掉的粮食第二年就不再损耗了。