卷下·第28题:百鹿入城——盈不足术的经典应用
一百只鹿进城,每家取一鹿取不完,三家共一鹿恰好分完。古人不用方程,用盈不足术两步假设锁定答案七十五家。
原文
今有百鹿入城,家取一鹿,不尽,又三家共一鹿,适尽。问:城中家几何?
答曰:七十五家。
术曰:以盈不足取之,假令七十二家鹿不尽四,令之九十家鹿不足二十。置七十二于右上,盈四于右下,置九十于左上,不足二十于左下,维乘之所得并为实,并盈不足为法,除之,即得。
白话翻译
现在有一百只鹿运进城里,如果每家分一只鹿,分不完(还有剩余);再让三家合分一只鹿,恰好分完。问:城里一共有多少家?
答案是七十五家。
古人的算法是这样的:用盈不足术来解。先假设城里有七十二家,这样鹿会多出四只(盈四);再假设城里有九十家,这样鹿会少二十只(不足二十)。把七十二放在右上角,盈四放在右下角;把九十放在左上角,不足二十放在左下角。交叉相乘(维乘),把乘积相加作为"实",把盈和不足相加作为"法",用实除以法,就得到答案。
示意图
数学解读
一、现代解法:列一元一次方程
设城中有 家。每家先取一只鹿,共取走 只;剩下的鹿按"三家共一鹿"分配,即每家再取 只,共取走 只。两次取完恰好分完一百只鹿,于是:
合并得:
解得:
城中有七十五家。验证:七十五家每家取一只,取走七十五只,余二十五只;三家共一鹿,七十五家需二十五只,恰好分完。与题意完全吻合。
二、古术逐句解释
「以盈不足取之」——明确方法:用盈不足术求解。盈不足术的核心思想是:先做两次假设,一次偏多(盈),一次偏少(不足),再通过交叉相乘加权平均,锁定真实值。
「假令七十二家鹿不尽四」——第一次假设:假设有七十二家。每家取一只,取走七十二只,余二十八只;三家共一鹿,七十二家需 只。二十八只比二十四只多出四只,所以"鹿不尽四",即盈四。
「令之九十家鹿不足二十」——第二次假设:假设有九十家。每家取一只,取走九十只,余十只;三家共一鹿,九十家需 只。十只比三十只少二十只,所以"鹿不足二十",即不足二十。
「置七十二于右上,盈四于右下,置九十于左上,不足二十于左下」——这是算筹的摆放位置。四个数摆成一个方阵:
左上九十、右上七十二、左下不足二十、右下盈四。
「维乘之所得并为实」——"维乘"即交叉相乘。右上乘左下:;左上乘右下:。相加得实:。
「并盈不足为法」——把盈和不足相加:,作为法(除数)。
「除之,即得」——实除以法:。城中有七十五家。
三、古今对照验证
| 步骤 | 古术 | 现代计算 |
|---|---|---|
| 假设一 | 七十二家,盈四 | , |
| 假设二 | 九十家,不足二十 | , |
| 维乘 | ||
| 并盈不足 | ||
| 相除 |
古术答案七十五家,与现代方程解完全一致。
四、盈不足术的本质:线性插值
盈不足术的公式可以写成一般形式。设两次假设为 ,对应误差为 (盈)、(不足),则:
这其实就是线性插值(linear interpolation),也叫假位法(false position)。其原理是:假设真实值与误差成线性关系,用两个已知点确定一条直线,再求零点。
代入本题::
五、背景与中西比较
盈不足术在《九章算术》第七章已有系统论述,《孙子算经》此题是其典型应用。这种方法在西方被称为"假位法",古埃及纸草书(约公元前1650年)中已有类似算法,古希腊也有使用。但中国的盈不足术更为成熟和系统化,且能处理"两盈""两不足""盈不足"等多种情形,比西方同类方法早数百年。
值得注意的是,本题古人没有列方程,而是通过两次假设加交叉相乘直接得到答案。这体现了中国古代数学"以算为主"的特点:不追求符号化的代数表达,而是通过固定的算法程序(术)解决问题。这种算法化思想,与现代计算机的"程序化求解"有异曲同工之妙。
高中课本关联
1. 一元一次方程(初中):本题可直接列方程 求解,是方程思想的经典应用。
2. 算法初步(高中必修):盈不足术是一种完整的算法——输入两个假设值,经过固定的计算步骤(交叉相乘、相加、相除),输出答案。这与现代算法的"输入—处理—输出"结构完全一致。高考中程序框图题常考此类算法思想。
3. 线性插值与函数思想:盈不足术的本质是用一次函数近似求解。在高中数学中,二分法求方程近似解(必修一)与盈不足术思想相通:都是通过不断缩小区间来逼近真实值。
4. 数学文化:高考数学文化题常涉及《九章算术》《孙子算经》等经典,理解盈不足术的原理有助于应对此类题目。
思考与拓展
练习一:若题目改为"今有百鹿入城,家取一鹿,不尽,又四家共一鹿,适尽。问:城中家几何?"请用现代方程和盈不足术两种方法求解。
提示:设 家,则 ,解得 。用盈不足术可假设七十二家和九十家,计算盈与不足,再交叉相乘验证。
练习二:盈不足术的公式 与今天的线性插值公式有何联系?请从函数图像的角度解释:为什么两个假设点的误差可以"加权平均"得到真实值?
提示:把误差看作假设值的函数 ,则 (盈),(不足)。假设 是线性函数,求 的点,即为所求。
练习三:已知盈不足术的两次假设为七十二家(盈四)和九十家(不足二十),能否反推出总鹿数?如果总鹿数不是百鹿,而是其他数值,盈不足术的答案会如何变化?
提示:设总鹿数为 。七十二家时,,盈 ,得 。九十家时,,不足 ,得 。两个假设相互印证,总鹿数确为一百。
一句话总结
百鹿入城问题用盈不足术两步假设、交叉相乘,不列方程便锁定七十五家——这是中国古代算法化数学的典范,其本质与现代线性插值一脉相承。