鸡兔同笼问题的程序解法

定义

“鸡兔同笼问题”是我国古算书《孙子算经》中著名的数学问题,其内容是:

今有雉(鸡)兔同笼,上有三十五头,下有九十四足。问雉兔各几何。

数学描述

设鸡有 x 只,兔有 y 只,则:

1
2
x + y = 35
2x + 4y = 94

解这个方程组得 x = 23, y = 12

用矩阵表示:

1
2
[1, 1]  *  [x]  =  [35]
[2, 4] [y] [94]

Python 代码

1
2
3
4
5
6
>>> import numpy as np
>>> a = np.mat([[1, 1], [2, 4]])
>>> b = np.mat([[35], [94]])
>>> a.I * b
matrix([[23.],
[12.]])

再来一题三元版本:

有蜘蛛,蜻蜓,蝉三种动物共 18 只,共有腿 118 条,翅膀 20 对,三种动物各几只?

蜘蛛 8 条腿;蜻蜓 6 条腿, 2 对翅膀;蝉 6 条腿,1 对翅膀。

1
2
3
[1, 1, 1]     [x]     [18]
[8, 6, 6] * [y] = [118]
[0, 2, 1] [z] [20]

代码:

1
2
3
4
5
6
7
>>> import numpy as np
>>> a = np.mat([[1, 1, 1], [8, 6, 6], [0, 2, 1]])
>>> b = np.mat([[18], [118], [20]])
>>> a.I * b
matrix([[5.],
[7.],
[6.]])