📑 查看全课大纲(第 63 / 93 节)
- 1.概论和集合的定义
- 2.逼疯康托的实数集理论
- 3.常用不等式与映射
- 4.函数及特殊函数
- 5.序列极限的定义
- 6.序列极限的性质与夹逼定理
- 7.重要极限
- 8.无穷小量,无穷大量和一组重要的阶的比较关系
- 9.聚点原理
- 10.函数极限及其性质
- 11.重要极限与等价无穷小
- 12.连续函数
- 13.导数的概念(那些年,扛起牛顿的胡克)
- 14.定义法求导
- 15.函数四则运算的导数与反函数求导法则
- 16.复合函数,隐函数,参数式求导
- 17.不定式求导之“洛必达与伯努利的师生情”
- 18.一阶微分
- 19.高阶导数
- 20.高阶微分
- 21.罗尔中值定理与拉格朗日中值定理
- 22.柯西空降科学院遭排挤
- 23.泰勒公式与泰勒的克妻属性
- 24.利用泰勒展开唯一性定理计算泰勒展开
- 25.泰勒公式的余项估计
- 26.极值问题与导数
- 27.函数凹凸性
- 28.无卵用的渐近线与函数作图
- 29.不定积分的定义
- 30.第一换元法
- 31.第二换元法
- 32.分部积分法
- 33.有理式积分
- 34.三角替换
- 35.定积分的概念
- 36.定积分的性质与积分中值定理
- 37.变上限定积分
- 38.微积分基本定理之“高斯教你如何优雅地装逼”
- 39.定积分的换元法
- 40.奇偶函数与周期函数的定积分
- 41.曲线求长与不可求长曲线(海岸线居然算不出长度?)
- 42.旋转体体积
- 43.旋转体侧面积
- 44.极坐标下图形的面积(数学系常用表白曲线)
- 45.欧式空间
- 46.点列极限,开集与闭集
- 47.多元函数的定义
- 48.多元函数的极限
- 49.多元连续函数
- 50.一阶偏导数
- 51.高阶偏导数
- 52.全微分
- 53.方向导数与梯度
- 54.链式法则
- 55.一阶全微分形式的不变性与高阶微分
- 56.多元函数的泰勒公式
- 57.隐函数存在定理与逆映射存在定理
- 58.多元函数的极值
- 59.矩阵基础知识
- 60.行列式的定义与特殊矩阵的行列式
- 61.行列式的性质
- 62.行列式按k行展开
- 63.线性方程组初步与高斯消元法
- 64.齐次线性方程组与Cramer法则
- 65.线性空间
- 66.线性相关与线性无关
- 67.向量组的秩
- 68.矩阵的秩与线性方程组有解的充要条件
- 69.齐次线性方程组的解集结构
- 70.非齐次线性方程组解集结构
- 71.基与维数
- 72.矩阵的乘法
- 73.特殊矩阵
- 74.矩阵乘积的秩与行列式
- 75.矩阵的逆
- 76.正交矩阵
- 77.矩阵对角化与特征值特征向量
- 78.实对称矩阵对角化
- 79.二次型与正定矩阵
- 80.LU分解
- 81.Cholesky分解
- 82.SVD分解
- 83.线搜索
- 84.步长
- 85.最速下降法和牛顿法
- 86.共轭梯度法
- 87.拟牛顿法
- 88.无约束优化
- 89.若干知识点补充(一)
- 90.若干知识点补充(二)
- 91.凸优化问题
- 92.对偶问题(一)
- 93.对偶问题(二)
线性方程组初步与高斯消元法
约 36 分钟
线性方程组初步与高斯消元法
小象实战讲义 · 人工智能数学基础
线性方程组是连接线性代数理论与实际计算的桥梁,也是理解机器学习中优化问题、线性回归模型等核心算法的基础。本节我们将从最熟悉的“消元法”出发,抽象出其背后的矩阵运算本质,并系统学习利用矩阵的“初等行变换”求解任意线性方程组的通用算法——高斯-约当消元法。学完本节,你将能判断任意线性方程组解的情况(无解、唯一解、无穷多解),并掌握其标准求解流程。
💡 核心导读
- 从方程到矩阵:理解线性方程组如何被其“系数矩阵”和“增广矩阵”完全刻画。
- 初等行变换:掌握矩阵的三种基本行操作,它们对应方程组的“加减消元法”。
- 阶梯形与简化行阶梯形:认识矩阵的两种关键形态,它们是判断方程组解情况的核心。
- 高斯-约当算法:学习将任意矩阵化为简化行阶梯形的标准化求解流程。
- 解的判定定理:掌握通过矩阵形态(非零行数、矛盾行)判定方程组解的唯一性、无穷多解或无解的准则。
从消元法到矩阵表示
线性方程组的基本概念
一个包含 个方程、 个未知数的 元线性方程组 通常写作: 其中 是未知数, 是第 个方程中 的 系数, 是第 个方程的 常数项。
若将一组有序实数 代入方程组,使得所有 个方程同时成立,则称该数组为方程组的一个 解。所有解构成的集合称为 解集。
消元法的矩阵本质
回顾中学所学的加减消元法:通过将某个方程的倍数加到另一个方程上,逐步消去未知数。例如,解方程组: 我们实质只对两样东西进行操作:未知数的系数 和 等号右边的常数,而未知数符号 本身只是占位符。因此,我们可以将方程组的核心信息抽象出来,写成矩阵形式。
系数矩阵 和 增广矩阵 定义为: 其中 。增广矩阵完整地刻画了一个线性方程组。
矩阵的初等行变换与阶梯形
初等行变换
对应方程组的加减消元操作,我们对矩阵定义三种 初等行变换:
- 倍加变换:将一行的倍数加到另一行上。
- 对换变换:互换两行的位置。
- 倍乘变换:用一非零数乘某一行。
关键性质:对线性方程组的增广矩阵进行初等行变换,所得新矩阵对应的方程组与原方程组 同解。
阶梯形矩阵
通过初等行变换,我们可以将任意矩阵化为一种易于分析的标准形态——阶梯形矩阵。其定义如下:
- 元素全为零的行(零行)位于矩阵的下方。
- 非零行(元素不全为零的行)的 主元(即该行左起第一个非零元素)的列标,随着行标的增加而严格递增。
形象理解:非零行的首个非零元素像楼梯一样向右下方“阶梯状”排列。
例如,以下矩阵是阶梯形: 其中加框元素 即为主元。零行位于最下方,且主元列标递增。
简化行阶梯形矩阵
阶梯形矩阵可以进一步化简为更简洁的形式——简化行阶梯形矩阵。它在阶梯形的基础上满足:
- 每个主元都等于 。
- 每个主元所在的列,除主元自身外,其余元素全为 。
例如,上述阶梯形矩阵可化为简化行阶梯形: 此时,方程组解一目了然:。
重要定理:任何矩阵都可以通过一系列初等行变换,化为唯一的简化行阶梯形矩阵。
高斯-约当消元法与解的判定
算法流程:高斯-约当消元法
这是求解线性方程组的标准化算法:
- 输入:写出方程组的增广矩阵 。
- 消元:通过初等行变换,将 化为阶梯形矩阵。
- 判定:检查阶梯形矩阵中是否存在形如 ()的行。若存在,则原方程组 无解。否则,方程组 有解,进入下一步。
- 回代:继续使用初等行变换,将有解情况下的阶梯形矩阵化为简化行阶梯形矩阵。
- 输出:
- 若简化行阶梯形矩阵中,非零行个数 等于未知数个数 ,则有 唯一解,解由矩阵最后一列直接给出。
- 若 ,则有 无穷多解。此时,非主元列对应的未知数称为 自由未知量,可用它们表示主元未知数,得到方程组的 一般解。
解的判定定理
对于 元线性方程组,设其增广矩阵化阶梯形后,非零行个数为 ,则有且仅有以下三种情况:
- 无解:当且仅当阶梯形矩阵中出现“ ()”的矛盾行。
- 有唯一解:当有解且 。
- 有无穷多解:当有解且 。
关键推论:
- 若方程组有解,则称其为 相容的;否则称为 不相容的。
- 线性方程组的解不可能出现“有且仅有两个解”或其它有限个(>1)解的情况。解的情况非此即彼:无解、唯一解或无穷多解。
- 非零行个数 不可能大于未知数个数 ,即恒有 。
实例分析
例1(唯一解):前述方程组 ,经高斯-约当消元法得到简化行阶梯形 。因 ,故有唯一解 。
例2(无解):解方程组 。 其增广矩阵的阶梯形为: 第三行对应方程 ,即 ,矛盾。故原方程组无解。
例3(无穷多解):解方程组 。 其增广矩阵的简化行阶梯形为: 对应方程 。非零行数 ,有一个自由未知量()。令 ( 为任意实数),则一般解为:
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 为任意实数。")📝 动手练一练
解的判定:判断下列线性方程组的解的情况(无解、唯一解或无穷多解),无需具体求解。
求解与表达:用高斯-约当消元法求解下列方程组。如果有无穷多解,请写出其一般解。 提示:先写出增广矩阵并化为简化行阶梯形。
参考答案:
- 交换第一、二行后消元:。阶梯形中无矛盾行,非零行数 ,故该方程组有 唯一解。回代得 ,,,即 。代入原方程组三式分别为 、、,全部成立。
- 增广矩阵为 。。第三行对应方程 ,是矛盾行,故该方程组 无解。 直观理解: 给出 ,而 给出 ,两者矛盾。
本章小结
本节我们建立了从具体方程到抽象矩阵的桥梁,并掌握了求解线性方程组的系统方法。
要点回顾:
- 矩阵是本质:线性方程组由其系数矩阵和增广矩阵完全描述。
- 变换即消元:矩阵的初等行变换直接对应方程组的同解加减消元操作。
- 形态定解况:通过将增广矩阵化为阶梯形(判断无解)和简化行阶梯形(求解),可以系统判定并求得方程组的解。
- 解的三分法: 元线性方程组的解有且仅有三种情况:无解、唯一解、无穷多解。这由阶梯形矩阵中是否存在矛盾行以及非零行数 与 的关系决定。
行动清单:
- 练习化矩阵:任取一个线性方程组,尝试手动将其增广矩阵化为阶梯形和简化行阶梯形,并解释每一步变换的消元意义。
- 代码验证:运行讲义中的 Python 示例代码,并尝试修改方程组的系数和常数项,观察矩阵形态与解的情况如何随之变化。
- 联系应用:思考在机器学习(如线性回归的最小二乘法)中,遇到的方程组通常是什么形态?其解的存在性和唯一性如何用本节知识理解?
— 小象教研组
- 第10章讲义(含板书):线性代数(PDF · 15.5MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问