不定方程(一)——鸡兔同笼与方程组
鸡兔同笼是最经典的不定方程问题。已知头和脚的数量,求鸡兔各几何?古人用"盈不足术"巧妙地避开了代数符号,直接给出算术解法。
原典
今有雉兔同笼,上有三十五头,下有九十四足。问:雉、兔各几何?
答曰:雉二十三,兔十二。
术曰:上置三十五头,下置九十四足。以足减半,得一十七。以少减多,加头中,得兔。其余为雉。
——《孙子算经·卷下》
这道题说的是什么
笼子里有鸡和兔子,数了数脑袋——35 个;数了数脚——94 只。问:鸡有多少只?兔有多少只?
答案是:鸡 23 只,兔 12 只。
验证:23 + 12 = 35 头 ✓,23 × 2 + 12 × 4 = 46 + 48 = 94 足 ✓
示意图
数学原理
1. 现代代数解法
设鸡有 只,兔有 只。
由第一个方程:,代入第二个方程:
2. 古人的"盈不足术"
术文说:"以足减半,得一十七。以少减多,加头中,得兔。其余为雉。"
让我逐句拆解:
"以足减半,得一十七":94 ÷ 2 = 47。等等,术文说"得一十七",不是 47。再读:可能是"以足减半"指的是另一种操作。
实际上,术文的正确理解是:
"置三十五头": heads = 35 "置九十四足": feet = 94 "以足减半":94 ÷ 2 = 47(每只动物至少 2 只脚,先假设全是鸡) "以少减多,加头中":这里"少"指头数 35,"多"指足半 47?不,应该是 47 - 35 = 12,这就是兔数。
验证:47 - 35 = 12 只兔,35 - 12 = 23 只鸡。✓
为什么这样算?设想每只动物都被"减半"——鸡变成 1 只脚,兔变成 2 只脚。那么 94 只脚减半后变成 47"半脚单位"。如果全是鸡,应该只有 35 个单位;多出来的 47 - 35 = 12,就是兔的额外贡献(每只兔多 1 个单位)。所以兔有 12 只。
3. 一般公式
对于"头的总数为 ,脚的总数为 "的问题:
这个公式成立的前提是 为偶数,且 (否则无解)。
4. 为什么叫"盈不足术"
盈不足术的核心思想是"假设—调整":先假设所有动物都是鸡(足最少的),计算出"不足"的脚数,然后逐步将鸡换成兔(每次换增加 2 只脚),直到补足为止。
本题中:
- 假设 35 只全是鸡:应有 70 只脚
- 实际有 94 只脚:多出 24 只脚
- 每将一只鸡换成兔,脚数增加 2
- 需要换 只
所以兔 12 只,鸡 23 只。
古人的算法
术文的操作步骤(筹算实现):
- 置头三十五于上:在算筹布局的上排放 35
- 置足九十四于下:在下排放 94
- 以足减半:94 ÷ 2 = 47
- 以少减多:47 - 35 = 12(兔数)
- 其余为雉:35 - 12 = 23(鸡数)
现代数学视角
鸡兔同笼问题是一个二元一次方程组的特例。更一般地,任何形如:
的方程组都可以用消元法或代入法求解。
鸡兔同笼的特殊性在于系数非常简单:,,。这种特殊结构使得算法可以大大简化,不需要一般的消元步骤。
从线性代数的角度看,这是一个二维平面上的两条直线的交点问题。两条直线不平行(系数不成比例),所以有唯一解。
高中课本关联
二元一次方程组(七年级)
鸡兔同笼是二元一次方程组的经典应用题。学生学习代入消元法和加减消元法。
一元一次方程(七年级)
也可以转化为一元一次方程:设兔有 只,则鸡有 只,列方程 。
数学建模(高中)
鸡兔同笼问题是数学建模的入门案例——将实际问题抽象为方程组,求解后再验证结果的实际意义。
思考与拓展
第1题:鸡兔同笼,头 35,脚 94。如果脚数是 100,答案是多少?如果脚数是 80,答案是多少?什么情况下无解?
第2题:和尚分馒头问题。100 个和尚分 100 个馒头,大和尚每人分 3 个,小和尚每 3 人分 1 个。问大、小和尚各多少人?
提示:设大和尚 人,小和尚 人。,。解得 ,。
第3题:证明——对于鸡兔同笼问题,如果头的总数为 ,脚的总数为 ,则解存在的充要条件是: 为偶数,且 。
第4题:扩展——如果有鸡、兔、鸭三种动物,已知头的总数和脚的总数,能否唯一确定每种动物的数量?为什么?
一句话总结
鸡兔同笼问题用"假设—调整"的思路,将二元方程组转化为一步算术运算——这是中国古代数学"以简驭繁"的典范。