📑 查看全课大纲(第 64 / 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.对偶问题(二)
齐次线性方程组与Cramer法则
约 13 分钟
齐次线性方程组与Cramer法则
小象实战讲义 · 人工智能数学基础
在学习了线性方程组的一般解法(高斯消元法)后,我们常常会遇到一类特殊的方程组——常数项全为零的齐次线性方程组。它在人工智能的诸多领域,如求解特征向量、分析网络结构零空间时都扮演着关键角色。本节将深入探讨齐次线性方程组的解的结构,并引入一个在理论上极其优美、将方程组解与行列式直接联系起来的工具——Cramer法则。学完本节,你将能快速判断齐次方程组是否有非零解,并理解行列式如何决定一个方阵方程组解的唯一性。
💡 核心导读
- 齐次线性方程组的定义与解的特性:常数项全为零的方程组,必定有零解,核心在于判断是否存在非零解。
- 非零解的判定准则:利用高斯消元法得到的系数矩阵的秩
r与未知数个数n的关系:r < n时必有非零解(无穷多解)。 - Cramer法则的引入前提:仅适用于方程个数等于未知数个数的方阵线性方程组。
- 行列式的决定性作用:系数矩阵的行列式
|A| ≠ 0是方程组有唯一解(对于非齐次)或仅有零解(对于齐次)的充要条件。 - Cramer法则的公式与评价:理论上给出了解的显式行列式表达式,但因其计算复杂度高,在实际数值计算中并不常用,其核心价值在于理论判断。
齐次线性方程组:定义与基本性质
一个包含 s 个方程、n 个未知数的线性方程组,如果其每个方程右端的常数项都为零,则称其为 n 元齐次线性方程组。其一般形式为: 用矩阵形式可简洁地表示为: 其中, 是 的系数矩阵, 是未知数列向量, 是零向量。
齐次方程组的一个显著性质是它必定有解。因为将所有未知数取为零,即 ,必然满足所有方程。这个解称为 零解 或 平凡解。
因此,对于齐次方程组 ,我们关心的核心问题不再是“有没有解”,而是 “除了零解之外,还有没有其他解?”。这些其他解被称为 非零解。
根据线性方程组解的一般理论(回顾高斯消元法),线性方程组的解只可能有三种情况:无解、有唯一解、有无穷多解。对于齐次方程组,既然零解已经是一个解,那么“无解”的情况就被排除了。所以,齐次方程组的解只可能是:
- 仅有零解(唯一解)。
- 有无穷多解(即存在非零解)。
判断属于哪种情况,我们依然可以依靠高斯消元法。将系数矩阵 通过初等行变换化为行阶梯形矩阵,设其非零行的个数(即矩阵的秩)为 。
- 若 ,则方程组有唯一解,即零解。
- 若 ,则方程组有无穷多解,即存在非零解。
一个特别简单且常用的推论是:如果齐次线性方程组中,方程的个数 小于未知数的个数 ,则它一定有非零解。 因为行阶梯形矩阵的非零行个数 不可能超过方程个数 ,即 ,必然满足 的条件。
Cramer法则:行列式与方程组的桥梁
当线性方程组满足一个特殊条件——方程的个数等于未知数的个数(即 )时,系数矩阵 是一个 的方阵。此时,我们可以引入一个强大的工具:行列式。
行列式与解的唯一性
考虑一般的 元线性方程组 ,其中 是 方阵, 是常数项列向量。其解的存在性与唯一性,与系数矩阵 的行列式 (也记作 )有着直接而深刻的联系。
定理(Cramer法则的前提):对于 个方程的 元线性方程组 ,其有唯一解的 充要条件 是系数矩阵的行列式 。
逻辑推导:
- 对系数矩阵 进行初等行变换,将其化为行阶梯形矩阵 。
- 回顾行列式性质:对矩阵做一次初等行变换,其行列式要么不变,要么反号,要么乘以一个非零常数。因此,变换前后的行列式只差一个非零因子 :,且 。
- 关键点在于: 是否为零,直接决定了 是否为零。
- 若 ,则 。对于一个方阵 ,若其行列式非零,则其行阶梯形不可能出现全零行(否则行列式为0)。这意味着 有 个非零行(),且必然是一个主对角线元素均非零的上三角矩阵。根据高斯消元法理论,此时方程组有唯一解。
- 若 ,则 。这意味着行阶梯形矩阵 中至少有一行全为零()。此时,方程组要么无解(对于非齐次方程组,可能出现 的矛盾),要么有无穷多解。
这个结论是Cramer法则的核心价值之一:通过计算一个行列式 是否为零,就能判断方阵线性方程组是否有唯一解。
Cramer法则的公式表述
在 ,从而方程组有唯一解的前提下,Cramer法则进一步给出了这个唯一解的具体表达式。
定理(Cramer法则):设 元线性方程组 的系数矩阵 的行列式 ,则方程组有唯一解,且其解为: 其中,矩阵 是将系数矩阵 的第 列用常数项列向量 替换后所得的 阶方阵。
示例:对于二元方程组 若 ,则其解为:
Cramer法则的评价与应用场景
尽管Cramer法则在理论上非常优美,将解直接表示为行列式的商,但在实际数值计算中,尤其是当 较大时,它并不是一个高效的算法。
- 计算复杂度高:计算一个 阶行列式,即使使用优化的算法(如LU分解后求对角元乘积),其复杂度也在 量级。而用Cramer法则求解需要计算 个 阶行列式,总复杂度约为 ,远高于高斯消元法或LU分解法的 。
- 数值稳定性问题:当矩阵接近奇异( 接近零)时,行列式的计算会带来较大的数值误差。
因此,在科学计算和工程软件中,几乎不会使用Cramer法则来实际求解线性方程组。它的主要价值体现在:
- 理论分析:在证明定理或进行公式推导时,Cramer法则提供的显式表达式非常有用。
- 小型方程组(如n=2,3):可以直接套用公式,便于记忆和理解。
- 判断解的唯一性:计算 是否为零,是判断方阵方程组是否有唯一解(或齐次方程组是否仅有零解)的一个有效方法。
对于齐次方程组 ,Cramer法则的推论尤为重要:齐次方程组 有非零解的充要条件是 。 因为如果 ,根据上述定理,方程组有唯一解,而这个唯一解只能是零解。
import numpy as np
# 示例:验证Cramer法则与齐次方程组解的判断
# 定义一个3x3矩阵A
A = np.array([[1, 2, 3],
[2, 5, 7],
[3, 7, 10]], dtype=np.float64)
# 计算系数矩阵A的行列式
det_A = np.linalg.det(A)
print(f"系数矩阵A的行列式 det(A) = {det_A:.6f}")
# 情况1:非齐次方程组 A*x = b
b = np.array([6, 15, 21], dtype=np.float64)
print(f"\n1. 求解非齐次方程组 A*x = {b}")
if not np.isclose(det_A, 0):
# 使用numpy的求解器(基于LU分解等高效算法)
x_numpy = np.linalg.solve(A, b)
print(f" NumPy求解结果: x = {x_numpy}")
# 使用Cramer法则验证(仅用于演示,效率低)
n = A.shape[0]
x_cramer = np.zeros(n)
for j in range(n):
Aj = A.copy()
Aj[:, j] = b # 将第j列替换为b
x_cramer[j] = np.linalg.det(Aj) / det_A
print(f" Cramer法则验证: x = {x_cramer}")
print(f" 两者是否接近: {np.allclose(x_numpy, x_cramer)}")
else:
print(" 行列式为0,Cramer法则不适用,可能无解或有无穷多解。")
# 情况2:对应的齐次方程组 A*x = 0
print(f"\n2. 分析齐次方程组 A*x = 0")
if np.isclose(det_A, 0):
print(f" 因为 det(A) = {det_A:.6f} ≈ 0,所以齐次方程组存在非零解。")
# 求解齐次方程组,即寻找零空间(null space)的非零向量
# 使用奇异值分解(SVD)来找到零空间的一个基向量
U, S, Vh = np.linalg.svd(A)
# 零空间向量对应于奇异值为0的右奇异向量
# 由于数值计算,奇异值可能非常小但不精确为0
tolerance = 1e-10
null_space = Vh[S <= tolerance]
if len(null_space) > 0:
x_null = null_space[0] # 取一个零空间向量
print(f" 一个非零解(零空间向量)示例: x = {x_null}")
print(f" 验证 A * x 是否接近0: {np.allclose(A @ x_null, 0)}")
else:
print(f" 因为 det(A) = {det_A:.6f} ≠ 0,所以齐次方程组仅有零解。")
x_zero = np.zeros(A.shape[1])
print(f" 唯一解是零向量: x = {x_zero}")📝 动手练一练
判断齐次方程组解的情况
判断下列齐次线性方程组是仅有零解,还是存在非零解(无穷多解)。不必求解。应用Cramer法则(小规模)
利用Cramer法则求解下列线性方程组:
参考答案:
判断齐次方程组解的情况
观察三个方程,发现第二个方程是第一个方程的2倍,第三个方程是第一个方程的-1倍。因此,这三个方程本质上是同一个方程,有效方程个数为1,小于未知数个数3。根据“方程个数小于未知数个数的齐次方程组必有非零解”的推论,该方程组存在非零解(有无穷多解)。
严谨做法:写出系数矩阵并化简,可得秩 ,故有无穷多解。应用Cramer法则(小规模)
系数矩阵 ,常数项 。
计算行列式:。
构造 和 :
, 。
, 。
根据Cramer法则:
,
。
故方程组的解为 。
本章小结
本节我们聚焦于线性方程组中两个紧密相连的重要专题:齐次线性方程组和Cramer法则。
要点回顾:
- 齐次线性方程组 必定有零解。其核心问题是判断非零解的存在性。
- 非零解存在的充要条件是系数矩阵的秩 小于未知数个数 。一个快速推论是:当方程个数少于未知数个数时,必有非零解。
- Cramer法则适用于方程个数等于未知数个数的方阵方程组。它指出:
- 判定条件:方程组 有唯一解 。对齐次方程组,这意味着 是有非零解的充要条件。
- 求解公式:当 时,唯一解可由行列式的商表示:。
- 实践认知:Cramer法则的公式在理论推导和小规模计算中很有价值,但由于其 的计算复杂度,在实际大规模数值计算中应使用高斯消元法、LU分解法等更高效的算法。
行动清单:
- 强化判断:遇到齐次方程组,首先尝试观察方程间关系或计算秩,快速判断其是否必有非零解。
- 善用工具:对于方阵方程组,在需要从理论上判断解的唯一性时,计算其行列式 是一个有效方法。
- 代码验证:运行本节提供的Python代码,修改矩阵 和向量 ,直观感受行列式为零与非零时,方程组解的不同情况,并比较直接求解与Cramer法则的结果。
— 小象教研组
- 第10章讲义(含板书):线性代数(PDF · 15.5MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问