← 返回《人工智能数学基础》
📑 查看全课大纲(第 63 / 93 节)
  1. 1.概论和集合的定义
  2. 2.逼疯康托的实数集理论
  3. 3.常用不等式与映射
  4. 4.函数及特殊函数
  5. 5.序列极限的定义
  6. 6.序列极限的性质与夹逼定理
  7. 7.重要极限
  8. 8.无穷小量,无穷大量和一组重要的阶的比较关系
  9. 9.聚点原理
  10. 10.函数极限及其性质
  11. 11.重要极限与等价无穷小
  12. 12.连续函数
  13. 13.导数的概念(那些年,扛起牛顿的胡克)
  14. 14.定义法求导
  15. 15.函数四则运算的导数与反函数求导法则
  16. 16.复合函数,隐函数,参数式求导
  17. 17.不定式求导之“洛必达与伯努利的师生情”
  18. 18.一阶微分
  19. 19.高阶导数
  20. 20.高阶微分
  21. 21.罗尔中值定理与拉格朗日中值定理
  22. 22.柯西空降科学院遭排挤
  23. 23.泰勒公式与泰勒的克妻属性
  24. 24.利用泰勒展开唯一性定理计算泰勒展开
  25. 25.泰勒公式的余项估计
  26. 26.极值问题与导数
  27. 27.函数凹凸性
  28. 28.无卵用的渐近线与函数作图
  29. 29.不定积分的定义
  30. 30.第一换元法
  31. 31.第二换元法
  32. 32.分部积分法
  33. 33.有理式积分
  34. 34.三角替换
  35. 35.定积分的概念
  36. 36.定积分的性质与积分中值定理
  37. 37.变上限定积分
  38. 38.微积分基本定理之“高斯教你如何优雅地装逼”
  39. 39.定积分的换元法
  40. 40.奇偶函数与周期函数的定积分
  41. 41.曲线求长与不可求长曲线(海岸线居然算不出长度?)
  42. 42.旋转体体积
  43. 43.旋转体侧面积
  44. 44.极坐标下图形的面积(数学系常用表白曲线)
  45. 45.欧式空间
  46. 46.点列极限,开集与闭集
  47. 47.多元函数的定义
  48. 48.多元函数的极限
  49. 49.多元连续函数
  50. 50.一阶偏导数
  51. 51.高阶偏导数
  52. 52.全微分
  53. 53.方向导数与梯度
  54. 54.链式法则
  55. 55.一阶全微分形式的不变性与高阶微分
  56. 56.多元函数的泰勒公式
  57. 57.隐函数存在定理与逆映射存在定理
  58. 58.多元函数的极值
  59. 59.矩阵基础知识
  60. 60.行列式的定义与特殊矩阵的行列式
  61. 61.行列式的性质
  62. 62.行列式按k行展开
  63. 63.线性方程组初步与高斯消元法
  64. 64.齐次线性方程组与Cramer法则
  65. 65.线性空间
  66. 66.线性相关与线性无关
  67. 67.向量组的秩
  68. 68.矩阵的秩与线性方程组有解的充要条件
  69. 69.齐次线性方程组的解集结构
  70. 70.非齐次线性方程组解集结构
  71. 71.基与维数
  72. 72.矩阵的乘法
  73. 73.特殊矩阵
  74. 74.矩阵乘积的秩与行列式
  75. 75.矩阵的逆
  76. 76.正交矩阵
  77. 77.矩阵对角化与特征值特征向量
  78. 78.实对称矩阵对角化
  79. 79.二次型与正定矩阵
  80. 80.LU分解
  81. 81.Cholesky分解
  82. 82.SVD分解
  83. 83.线搜索
  84. 84.步长
  85. 85.最速下降法和牛顿法
  86. 86.共轭梯度法
  87. 87.拟牛顿法
  88. 88.无约束优化
  89. 89.若干知识点补充(一)
  90. 90.若干知识点补充(二)
  91. 91.凸优化问题
  92. 92.对偶问题(一)
  93. 93.对偶问题(二)

线性方程组初步与高斯消元法

约 36 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

线性方程组初步与高斯消元法

小象实战讲义 · 人工智能数学基础

线性方程组是连接线性代数理论与实际计算的桥梁,也是理解机器学习中优化问题、线性回归模型等核心算法的基础。本节我们将从最熟悉的“消元法”出发,抽象出其背后的矩阵运算本质,并系统学习利用矩阵的“初等行变换”求解任意线性方程组的通用算法——高斯-约当消元法。学完本节,你将能判断任意线性方程组解的情况(无解、唯一解、无穷多解),并掌握其标准求解流程。

💡 核心导读

  • 从方程到矩阵:理解线性方程组如何被其“系数矩阵”和“增广矩阵”完全刻画。
  • 初等行变换:掌握矩阵的三种基本行操作,它们对应方程组的“加减消元法”。
  • 阶梯形与简化行阶梯形:认识矩阵的两种关键形态,它们是判断方程组解情况的核心。
  • 高斯-约当算法:学习将任意矩阵化为简化行阶梯形的标准化求解流程。
  • 解的判定定理:掌握通过矩阵形态(非零行数、矛盾行)判定方程组解的唯一性、无穷多解或无解的准则。

从消元法到矩阵表示

线性方程组的基本概念

一个包含 ss 个方程、nn 个未知数的 nn 元线性方程组 通常写作: {a11x1+a12x2++a1nxn=b1a21x1+a22x2++a2nxn=b2as1x1+as2x2++asnxn=bs\begin{cases} a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n = b_1 \ a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n = b_2 \ \quad \vdots \ a_{s1}x_1 + a_{s2}x_2 + \cdots + a_{sn}x_n = b_s \end{cases} 其中 x1,x2,,xnx_1, x_2, \ldots, x_n 是未知数,aija_{ij} 是第 ii 个方程中 xjx_j系数bib_i 是第 ii 个方程的 常数项

若将一组有序实数 (c1,c2,,cn)(c_1, c_2, \ldots, c_n) 代入方程组,使得所有 ss 个方程同时成立,则称该数组为方程组的一个 。所有解构成的集合称为 解集

消元法的矩阵本质

回顾中学所学的加减消元法:通过将某个方程的倍数加到另一个方程上,逐步消去未知数。例如,解方程组: {x1+3x2+x3=23x1+4x2+2x3=9x15x2+4x3=102x1+7x2+x3=1\begin{cases} x_1 + 3x_2 + x_3 = 2 \ 3x_1 + 4x_2 + 2x_3 = 9 \ -x_1 - 5x_2 + 4x_3 = 10 \ 2x_1 + 7x_2 + x_3 = 1 \end{cases} 我们实质只对两样东西进行操作:未知数的系数等号右边的常数,而未知数符号 x1,x2,x3x_1, x_2, x_3 本身只是占位符。因此,我们可以将方程组的核心信息抽象出来,写成矩阵形式。

系数矩阵 AA增广矩阵 A\tilde{A} 定义为: A=(131342154271),A=(Ab)=(13123429154102711)A = \begin{pmatrix} 1 & 3 & 1 \ 3 & 4 & 2 \ -1 & -5 & 4 \ 2 & 7 & 1 \end{pmatrix}, \quad \tilde{A} = (A \mid \mathbf{b}) = \begin{pmatrix} 1 & 3 & 1 & 2 \ 3 & 4 & 2 & 9 \ -1 & -5 & 4 & 10 \ 2 & 7 & 1 & 1 \end{pmatrix} 其中 b=(2,9,10,1)T\mathbf{b} = (2, 9, 10, 1)^T增广矩阵完整地刻画了一个线性方程组

矩阵的初等行变换与阶梯形

初等行变换

对应方程组的加减消元操作,我们对矩阵定义三种 初等行变换

  1. 倍加变换:将一行的倍数加到另一行上。
  2. 对换变换:互换两行的位置。
  3. 倍乘变换:用一非零数乘某一行。

关键性质:对线性方程组的增广矩阵进行初等行变换,所得新矩阵对应的方程组与原方程组 同解

阶梯形矩阵

通过初等行变换,我们可以将任意矩阵化为一种易于分析的标准形态——阶梯形矩阵。其定义如下:

  1. 元素全为零的行(零行)位于矩阵的下方。
  2. 非零行(元素不全为零的行)的 主元(即该行左起第一个非零元素)的列标,随着行标的增加而严格递增。

形象理解:非零行的首个非零元素像楼梯一样向右下方“阶梯状”排列。

例如,以下矩阵是阶梯形: (1312011300360000)\begin{pmatrix} \boxed{1} & 3 & 1 & 2 \ 0 & \boxed{1} & -1 & -3 \ 0 & 0 & \boxed{3} & 6 \ 0 & 0 & 0 & 0 \end{pmatrix} 其中加框元素 1,1,3\boxed{1}, \boxed{1}, \boxed{3} 即为主元。零行位于最下方,且主元列标递增。

简化行阶梯形矩阵

阶梯形矩阵可以进一步化简为更简洁的形式——简化行阶梯形矩阵。它在阶梯形的基础上满足:

  1. 每个主元都等于 11
  2. 每个主元所在的列,除主元自身外,其余元素全为 00

例如,上述阶梯形矩阵可化为简化行阶梯形: (1003010100120000)\begin{pmatrix} \boxed{1} & 0 & 0 & 3 \ 0 & \boxed{1} & 0 & -1 \ 0 & 0 & \boxed{1} & 2 \ 0 & 0 & 0 & 0 \end{pmatrix} 此时,方程组解一目了然:x1=3,x2=1,x3=2x_1=3, x_2=-1, x_3=2

重要定理:任何矩阵都可以通过一系列初等行变换,化为唯一的简化行阶梯形矩阵。

高斯-约当消元法与解的判定

算法流程:高斯-约当消元法

这是求解线性方程组的标准化算法:

  1. 输入:写出方程组的增广矩阵 A\tilde{A}
  2. 消元:通过初等行变换,将 A\tilde{A} 化为阶梯形矩阵。
  3. 判定:检查阶梯形矩阵中是否存在形如 (0,0,,0d)(0, 0, \ldots, 0 \mid d)d0d \neq 0)的行。若存在,则原方程组 无解。否则,方程组 有解,进入下一步。
  4. 回代:继续使用初等行变换,将有解情况下的阶梯形矩阵化为简化行阶梯形矩阵。
  5. 输出
    • 若简化行阶梯形矩阵中,非零行个数 rr 等于未知数个数 nn,则有 唯一解,解由矩阵最后一列直接给出。
    • r<nr < n,则有 无穷多解。此时,非主元列对应的未知数称为 自由未知量,可用它们表示主元未知数,得到方程组的 一般解

解的判定定理

对于 nn 元线性方程组,设其增广矩阵化阶梯形后,非零行个数为 rr,则有且仅有以下三种情况:

  1. 无解:当且仅当阶梯形矩阵中出现“0=d0 = d (d0d \neq 0)”的矛盾行。
  2. 有唯一解:当有解且 r=nr = n
  3. 有无穷多解:当有解且 r<nr < n

关键推论

  • 若方程组有解,则称其为 相容的;否则称为 不相容的
  • 线性方程组的解不可能出现“有且仅有两个解”或其它有限个(>1)解的情况。解的情况非此即彼:无解、唯一解或无穷多解。
  • 非零行个数 rr 不可能大于未知数个数 nn,即恒有 rnr \le n

实例分析

例1(唯一解):前述方程组 A=(13123429154102711)\tilde{A} = \begin{pmatrix}1 & 3 & 1 & 2 \ 3 & 4 & 2 & 9 \ -1 & -5 & 4 & 10 \ 2 & 7 & 1 & 1\end{pmatrix},经高斯-约当消元法得到简化行阶梯形 (1003010100120000)\begin{pmatrix}1 & 0 & 0 & 3 \ 0 & 1 & 0 & -1 \ 0 & 0 & 1 & 2 \ 0 & 0 & 0 & 0\end{pmatrix}。因 r=3=nr=3=n,故有唯一解 (3,1,2)(3, -1, 2)

例2(无解):解方程组 {x1x2+x3=1x1x2x3=32x12x2x3=3\begin{cases} x_1 - x_2 + x_3 = 1 \ x_1 - x_2 - x_3 = 3 \ 2x_1 - 2x_2 - x_3 = 3 \end{cases}。 其增广矩阵的阶梯形为: (111100110002)\begin{pmatrix} 1 & -1 & 1 & 1 \ 0 & 0 & 1 & -1 \ 0 & 0 & 0 & \boxed{-2} \end{pmatrix} 第三行对应方程 0x1+0x2+0x3=20 \cdot x_1 + 0 \cdot x_2 + 0 \cdot x_3 = -2,即 0=20 = -2,矛盾。故原方程组无解。

例3(无穷多解):解方程组 {x1x2+x3=1x1x2x3=32x12x2x3=5\begin{cases} x_1 - x_2 + x_3 = 1 \ x_1 - x_2 - x_3 = 3 \ 2x_1 - 2x_2 - x_3 = 5 \end{cases}。 其增广矩阵的简化行阶梯形为: (110200110000)\begin{pmatrix} 1 & -1 & 0 & 2 \ 0 & 0 & 1 & -1 \ 0 & 0 & 0 & 0 \end{pmatrix} 对应方程 {x1x2=2x3=1\begin{cases} x_1 - x_2 = 2 \ x_3 = -1 \end{cases}。非零行数 r=2<n=3r=2 < n=3,有一个自由未知量(x2x_2)。令 x2=kx_2 = kkk 为任意实数),则一般解为: {x1=2+kx2=kx3=1(kR)\begin{cases} x_1 = 2 + k \ x_2 = k \ x_3 = -1 \end{cases} \quad (k \in \mathbb{R})

import numpy as np
import sympy as sp

# 使用NumPy和SymPy演示高斯消元与解的判定

print("=== 例1:唯一解 ===")
A1 = np.array([[1, 3, 1],
               [3, 4, 2],
               [-1, -5, 4],
               [2, 7, 1]], dtype=float)
b1 = np.array([2, 9, 10, 1], dtype=float)
# 使用SymPy进行精确的符号计算,得到简化行阶梯形
A1_aug = sp.Matrix(np.column_stack((A1, b1)))
rref1, pivot_cols1 = A1_aug.rref()
print("增广矩阵的简化行阶梯形(RREF):")
print(rref1)
print("主元列索引:", pivot_cols1)
print("非零行数 r =", len(pivot_cols1))
print("未知数个数 n =", A1.shape[1])
if len(pivot_cols1) == A1.shape[1]:
    print("结论:有唯一解。")
    # 提取解
    solution1 = rref1[:-1, -1] if rref1.rows > rref1.cols-1 else rref1[:, -1]
    print(f"解为: x1={solution1[0]}, x2={solution1[1]}, x3={solution1[2]}")
else:
    # 检查是否有矛盾行
    for i in range(rref1.rows):
        if all(rref1[i, j] == 0 for j in range(rref1.cols-1)) and rref1[i, -1] != 0:
            print(f"第{i+1}行为矛盾行:0 = {rref1[i, -1]}")
            print("结论:无解。")
            break
    else:
        print("结论:有无穷多解。")

print("\n=== 例2:无解 ===")
A2 = np.array([[1, -1, 1],
               [1, -1, -1],
               [2, -2, -1]], dtype=float)
b2 = np.array([1, 3, 3], dtype=float)
A2_aug = sp.Matrix(np.column_stack((A2, b2)))
rref2, pivot_cols2 = A2_aug.rref()
print("增广矩阵的简化行阶梯形(RREF):")
print(rref2)
# 判断解的情况
for i in range(rref2.rows):
    if all(rref2[i, j] == 0 for j in range(rref2.cols-1)) and rref2[i, -1] != 0:
        print(f"发现矛盾行(第{i+1}行):0 = {rref2[i, -1]}")
        print("结论:方程组无解。")
        break

print("\n=== 例3:无穷多解 ===")
b3 = np.array([1, 3, 5], dtype=float)  # 仅常数项与例2不同
A3_aug = sp.Matrix(np.column_stack((A2, b3)))
rref3, pivot_cols3 = A3_aug.rref()
print("增广矩阵的简化行阶梯形(RREF):")
print(rref3)
print("主元列索引:", pivot_cols3)
print("非零行数 r =", len(pivot_cols3))
print("未知数个数 n =", A2.shape[1])
if len(pivot_cols3) < A2.shape[1]:
    print("结论:有无穷多解。")
    # 提取主变量和自由变量
    x1, x2, x3 = sp.symbols('x1 x2 x3')
    # 根据RREF写出方程
    eq1 = rref3[0, 0]*x1 + rref3[0, 1]*x2 + rref3[0, 2]*x3 - rref3[0, 3]
    eq2 = rref3[1, 0]*x1 + rref3[1, 1]*x2 + rref3[1, 2]*x3 - rref3[1, 3]
    print("对应的方程为:")
    print(f"  (1) {sp.simplify(eq1)} = 0")
    print(f"  (2) {sp.simplify(eq2)} = 0")
    # 令自由变量 x2 = k
    k = sp.symbols('k')
    # 从方程(2)解出 x3
    x3_sol = sp.solve(eq2, x3)[0]
    # 代入方程(1)解出 x1
    x1_sol = sp.solve(eq1.subs(x3, x3_sol), x1)[0]
    print(f"\n令自由未知量 x2 = k,则一般解为:")
    print(f"  x1 = {x1_sol}")
    print(f"  x2 = k")
    print(f"  x3 = {x3_sol}")
    print("  其中 k 为任意实数。")

📝 动手练一练

  1. 解的判定:判断下列线性方程组的解的情况(无解、唯一解或无穷多解),无需具体求解。 {2x1+x2x3=1x1x2+x3=23x1+3x22x3=0\begin{cases} 2x_1 + x_2 - x_3 = 1 \ x_1 - x_2 + x_3 = 2 \ 3x_1 + 3x_2 - 2x_3 = 0 \end{cases}

  2. 求解与表达:用高斯-约当消元法求解下列方程组。如果有无穷多解,请写出其一般解。 {x1+2x2+3x3=42x1+4x2+7x3=103x1+6x2+10x3=13\begin{cases} x_1 + 2x_2 + 3x_3 = 4 \ 2x_1 + 4x_2 + 7x_3 = 10 \ 3x_1 + 6x_2 + 10x_3 = 13 \end{cases} 提示:先写出增广矩阵并化为简化行阶梯形。

参考答案:

  1. 交换第一、二行后消元:(111221113320)r22r1, r33r1(111203330656)r32r2(111203330010)\begin{pmatrix}1&-1&1&2\2&1&-1&1\3&3&-2&0\end{pmatrix} \xrightarrow{r_2-2r_1,\ r_3-3r_1} \begin{pmatrix}1&-1&1&2\0&3&-3&-3\0&6&-5&-6\end{pmatrix} \xrightarrow{r_3-2r_2} \begin{pmatrix}1&-1&1&2\0&3&-3&-3\0&0&1&0\end{pmatrix}。阶梯形中无矛盾行,非零行数 r=3=nr=3=n,故该方程组有 唯一解。回代得 x3=0x_3=0x2=1x_2=-1x1=1x_1=1,即 (1,1,0)(1, -1, 0)。代入原方程组三式分别为 21=12-1=11+1=21+1=233=03-3=0,全部成立。
  2. 增广矩阵为 (123424710361013)\begin{pmatrix}1&2&3&4\2&4&7&10\3&6&10&13\end{pmatrix}r22r1, r33r1(123400120011)r3r2(123400120001)\xrightarrow{r_2-2r_1,\ r_3-3r_1} \begin{pmatrix}1&2&3&4\0&0&1&2\0&0&1&1\end{pmatrix} \xrightarrow{r_3-r_2} \begin{pmatrix}1&2&3&4\0&0&1&2\0&0&0&-1\end{pmatrix}。第三行对应方程 0=10=-1,是矛盾行,故该方程组 无解。 直观理解:(2)2×(1)(2)-2\times(1) 给出 x3=2x_3=2,而 (3)3×(1)(3)-3\times(1) 给出 x3=1x_3=1,两者矛盾。

本章小结

本节我们建立了从具体方程到抽象矩阵的桥梁,并掌握了求解线性方程组的系统方法。

要点回顾

  • 矩阵是本质:线性方程组由其系数矩阵和增广矩阵完全描述。
  • 变换即消元:矩阵的初等行变换直接对应方程组的同解加减消元操作。
  • 形态定解况:通过将增广矩阵化为阶梯形(判断无解)和简化行阶梯形(求解),可以系统判定并求得方程组的解。
  • 解的三分法nn 元线性方程组的解有且仅有三种情况:无解、唯一解、无穷多解。这由阶梯形矩阵中是否存在矛盾行以及非零行数 rrnn 的关系决定。

行动清单

  1. 练习化矩阵:任取一个线性方程组,尝试手动将其增广矩阵化为阶梯形和简化行阶梯形,并解释每一步变换的消元意义。
  2. 代码验证:运行讲义中的 Python 示例代码,并尝试修改方程组的系数和常数项,观察矩阵形态与解的情况如何随之变化。
  3. 联系应用:思考在机器学习(如线性回归的最小二乘法)中,遇到的方程组通常是什么形态?其解的存在性和唯一性如何用本节知识理解?

— 小象教研组

配套学习资源与课件
  • 第10章讲义(含板书):线性代数(PDF · 15.5MB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问