← 返回Book 3目录
第23章

鸡兔同笼1

Linear Systems I

线性方程组入门:从古典问题到现代解法。

📚 本章导览

线性方程组是线性代数的核心内容,也是机器学习中最基础的数学工具。本章从经典的"鸡兔同笼"问题入手,介绍线性方程组的求解方法、几何意义以及在不同坐标系下的表示。

23.1 求解线性方程
矩阵方法、逆矩阵、数值求解
23.2 不同坐标系
标准基与非标准基的转换
23.3 非正交坐标系
线性变换与坐标系变换
23.4 矩阵伪逆
最小二乘法与过定方程组

23.1 求解线性方程

线性方程组是形如 Ax = b 的方程,其中 A 是系数矩阵,x 是未知向量,b 是常数向量。

求解线性方程组有多种方法:矩阵求逆、高斯消元、数值求解等。理解这些方法对学习机器学习至关重要。

鸡兔同笼问题

📖 经典问题

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

设鸡有 x₁ 只,兔有 x₂ 只,则:

• 鸡兔总数:x₁ + x₂ = 35
• 总脚数:2x₁ + 4x₂ = 94

矩阵形式

Ax = b
系数矩阵 A
[1 1]
[2 4]
未知向量 x
[x₁]
[x₂]
常数向量 b
[35]
[94]

求解方法

方法一:矩阵求逆

如果矩阵 A 可逆,则方程组的解为:

x = A⁻¹b
这种方法简单直观,但计算逆矩阵的代价较高

方法二:数值求解

使用 NumPy 的 solve 函数直接求解:

x = np.linalg.solve(A, b)
这种方法更高效,使用了优化的数值算法(如 LU 分解)

方法三:符号求解

使用 SymPy 进行符号计算:

sol = solve([x1 + x2 - 35, 2*x1 + 4*x2 - 94], [x1, x2])
适用于需要精确解或推导公式的情况

求解结果

解:x = [23, 12]
鸡有 23 只, 兔有 12 只

验证:

23 + 12 = 35 ✓
总头数正确
2×23 + 4×12 = 94 ✓
总脚数正确

💡 关键要点

  • • 矩阵形式:线性方程组可以写成 Ax = b 的形式
  • • 唯一解条件:当 A 可逆时,方程组有唯一解
  • • 多种方法:求逆、数值求解、符号求解各有优劣
  • • 实际应用:从古代算术到现代机器学习

23.2 不同坐标系

同一个向量在不同的坐标系(或称为基)下有不同的坐标表示。理解坐标系变换是理解线性代数的关键。

标准正交基 (e₁, e₂) 和非标准基 (a₁, a₂) 可以表示同一个向量,但坐标值不同。

标准正交基

标准基向量

e₁ = [1, 0]
x 轴单位向量
e₂ = [0, 1]
y 轴单位向量

在标准基下,向量 v = [3, 8] 表示:

v = 3e₁ + 8e₂

非标准基

新基向量

定义新的基向量(以标准基表示):

a₁ = [1, 2]
第一个基向量
a₂ = [1, 4]
第二个基向量

坐标变换

同一向量 v = [3, 8] 在新基下的坐标为 [x₁, x₂],满足:

v = x₁a₁ + x₂a₂

求解新坐标

这等价于求解线性方程组:

x₁ × [1, 2] + x₂ × [1, 4] = [3, 8]
⇒ x₁ + x₂ = 3
⇒ 2x₁ + 4x₂ = 8
解:[x₁, x₂] = [2, 1]

矩阵形式的坐标变换

变换矩阵

将基向量排列成矩阵 A:

A = [a₁ | a₂] = [1 1]
[2 4]

则坐标变换关系为:v = Ax

🎯 几何理解

  • • 向量不变:向量本身是几何对象,不依赖坐标系
  • • 坐标改变:选择不同的基,同一向量有不同坐标
  • • 线性变换:坐标变换可用矩阵乘法表示
  • • 可逆性:如果基向量线性无关,变换可逆

23.3 非正交坐标系

非正交坐标系的基向量之间不垂直。这种坐标系在某些问题中更自然,例如晶体学、应力分析等。

理解非正交坐标系有助于理解更一般的线性变换和坐标系变换。

定义非正交基

基向量

定义两个不垂直的基向量:

r₁ = [1, 2]
第一个基向量
r₂ = [3, 1]
第二个基向量
注意:这两个向量的点积 r₁ · r₂ = 1×3 + 2×1 = 5 ≠ 0, 说明它们不垂直

变换矩阵

R = [1 3]
[2 1]

任意向量 v 在非正交基下的表示:v = Rz

坐标变换示例

鸡兔同笼的非正交视角

原问题中:

  • • 标准基:(鸡的数量, 兔的数量) = (x₁, x₂)
  • • 新基:组合A = 1只鸡+2只兔,组合B = 3只鸡+1只兔

如果有 10 组A 和 10 组B,实际的鸡兔数量为:

[鸡数] = 10×1 + 10×3 = 40
[兔数] = 10×2 + 10×1 = 30

网格变换

标准正交网格经过非正交变换后,变成倾斜的平行四边形网格:

原始网格
正方形,坐标轴垂直
变换后网格
平行四边形,坐标轴倾斜

💡 非正交坐标系的特点

  • • 基不垂直:基向量之间有夹角
  • • 计算复杂:距离和角度的计算不如正交基简单
  • • 实际应用:晶体结构、应力张量等
  • • 可视化:网格变成平行四边形

23.4 矩阵伪逆

当线性方程组 Ax = b 的方程数多于未知数个数时(过定系统),通常无精确解。此时使用最小二乘法求近似解。

矩阵伪逆(Moore-Penrose 伪逆)是求解过定系统的关键工具。

过定方程组

📊 问题场景

假设我们有多次鸡兔同笼的观测数据,但存在测量误差:

观测1:x₁ + x₂ = 30, 2x₁ + 4x₂ = 90
观测2:x₁ + x₂ = 35, 2x₁ + 4x₂ = 110

4个方程,2个未知数,方程组可能无精确解

矩阵形式

A = [1 1] b = [30]
[1 1] [35]
[2 4] [90]
[2 4] [110]

A 是 4×2 矩阵(4个方程,2个未知数)

最小二乘解

优化目标

最小化残差的平方和:

minimize ||Ax - b||²

找到最接近所有方程的解

最小二乘公式

最小二乘解由以下公式给出:

x = (AᵀA)⁻¹Aᵀb

其中 (AᵀA)⁻¹Aᵀ 称为 A 的伪逆,记作 A⁺

求解步骤

  1. 1. 计算 AᵀA:2×4 矩阵乘以 4×2 矩阵,得到 2×2 矩阵
  2. 2. 求逆 (AᵀA)⁻¹:计算 2×2 矩阵的逆
  3. 3. 计算 Aᵀb:2×4 矩阵乘以 4×1 向量
  4. 4. 最终结果:x = (AᵀA)⁻¹Aᵀb

示例结果

最小二乘解:x = [15, 17.5]
鸡约 15 只, 兔约 17.5 只

残差分析:

观测1预测:15 + 17.5 = 32.5
实际:30,误差:2.5
观测2预测:15 + 17.5 = 32.5
实际:35,误差:-2.5

最小二乘解使总体误差最小,而非完全满足每个方程

🎯 最小二乘法的应用

  • • 数据拟合:线性回归、曲线拟合
  • • 信号处理:噪声滤波、参数估计
  • • 机器学习:线性回归模型的核心方法
  • • 统计分析:最大似然估计的基础

章节总结

🎯 核心概念

  • • 线性方程组:Ax = b 的求解
  • • 矩阵方法:逆矩阵、数值求解、符号求解
  • • 坐标系变换:同一向量在不同基下的表示
  • • 最小二乘:过定系统的近似解

🔑 重要公式

  • • 逆矩阵法:x = A⁻¹b
  • • 坐标变换:v = Ax
  • • 最小二乘:x = (AᵀA)⁻¹Aᵀb
  • • 残差:r = Ax - b

💡 几何直观

  • • 方程组的解是超平面的交点
  • • 坐标变换改变网格形状
  • • 非正交基导致倾斜坐标系
  • • 最小二乘找最近点

🚀 应用场景

  • • 工程计算:结构分析、电路设计
  • • 数据分析:线性回归、参数估计
  • • 计算机图形:坐标变换、投影
  • • 机器学习:特征变换、模型拟合

📖 从鸡兔同笼到机器学习

古代的"鸡兔同笼"问题本质上是求解线性方程组。现代机器学习中的线性回归、最小二乘法、 坐标变换等核心技术,都建立在本章介绍的数学基础之上。理解线性方程组及其几何意义, 是深入学习机器学习算法的必经之路。