为什么逆矩阵这么重要?
想象你在解一个方程组 \(A\mathbf{x} = \mathbf{b}\)。如果 \(A\) 可逆,那解就很简单:\(\mathbf{x} = A^{-1}\mathbf{b}\)。但现实往往没那么顺利——矩阵可能不可逆,这时候你得知道怎么判断,以及如果可逆的话该怎么求它的逆。
一、判定方阵是否可逆
1.1 核心定义
对于一个 \(n \times n\) 的方阵 \(A\),如果存在另一个 \(n \times n\) 矩阵 \(B\),使得:
\[AB = BA = I_n\]
其中 \(I_n\) 是 \(n\) 阶单位矩阵,那么 \(A\) 就是可逆的(也称为非奇异矩阵),\(B\) 就是 \(A\) 的逆矩阵,记作 \(A^{-1}\)。
1.2 多种判定方法
方法一:行列式法
\[\det(A) \neq 0 \iff A \text{ 可逆}\]
这是最直接的判定方法。如果行列式为零,矩阵就是奇异矩阵,不可逆。
方法二:秩的判断
\[\text{rank}(A) = n \iff A \text{ 可逆}\]
满秩方阵一定可逆。
方法三:行变换法
对增广矩阵 \([A | I_n]\) 进行初等行变换:
- 如果能将 \(A\) 部分化为 \(I_n\),则 \(A\) 可逆,且右侧变为 \(A^{-1}\)
- 如果在变换过程中 \(A\) 部分出现全零行,则 \(A\) 不可逆
方法四:齐次方程组
\[A\mathbf{x} = \mathbf{0} \text{ 只有零解} \iff A \text{ 可逆}\]
方法五:特征值法
\(A\) 可逆 \(\iff\) \(0\) 不是 \(A\) 的特征值
二、逆矩阵的求法
2.1 伴随矩阵法
对于 \(n \times n\) 矩阵 \(A\),逆矩阵公式为:
\[A^{-1} = \frac{1}{\det(A)} \text{adj}(A)\]
其中 \(\text{adj}(A)\) 是 \(A\) 的伴随矩阵,即 \(A\) 的余子式矩阵的转置。
步骤:
- 计算 \(\det(A)\),确认不为零
- 计算每个元素的代数余子式 \(A_{ij} = (-1)^{i+j}M_{ij}\)
- 构造余子式矩阵,再转置得到 \(\text{adj}(A)\)
- 代入公式计算 \(A^{-1}\)
2.2 初等行变换法(高斯-约旦消元法)
这是最实用的方法,特别适合编程实现。
步骤:
- 构造增广矩阵 \([A | I_n]\)
- 对 \(A\) 部分进行初等行变换,将其化为行最简形
- 如果 \(A\) 部分化为 \(I_n\),则右侧就是 \(A^{-1}\)
- 如果 \(A\) 部分不能化为 \(I_n\)(出现全零行),则 \(A\) 不可逆
操作细节:
- 初等行变换包括:
- 交换两行
- 某行乘以非零常数
- 某行加上另一行的倍数
- 目标是把 \(A\) 变成对角线全为 1、其余全为 0 的单位矩阵
2.3 分块矩阵法
对于分块矩阵,有特殊的求逆公式。例如,对于:
\[M = \begin{bmatrix} A & B \\ C & D \end{bmatrix}\]
当 \(A\) 可逆时,可以利用 Schur 补来求逆。这种方法在大型矩阵计算中很有用。
三、逆矩阵的性质
- 唯一性:如果 \(A\) 可逆,则 \(A^{-1}\) 唯一
- 双重逆:\((A^{-1})^{-1} = A\)
- 转置与逆可交换:\((A^T)^{-1} = (A^{-1})^T\)
- 乘积的逆:\((AB)^{-1} = B^{-1}A^{-1}\)
- 数乘:\((kA)^{-1} = \frac{1}{k}A^{-1}\)(\(k \neq 0\))
- 行列式关系:\(\det(A^{-1}) = \frac{1}{\det(A)}\)
四、经典例题详解
例题 1:判定 2×2 矩阵是否可逆
题目:判断矩阵 \(A = \begin{bmatrix} 3 & 2 \\ 6 & 4 \end{bmatrix}\) 是否可逆。
解答:
计算行列式: $\(\det(A) = 3 \times 4 - 2 \times 6 = 12 - 12 = 0\)$
由于 \(\det(A) = 0\),所以 \(A\) 不可逆(是奇异矩阵)。
验证:观察发现第二行是第一行的 2 倍,说明两行线性相关,矩阵不满秩,确实不可逆。
例题 2:求 2×2 逆矩阵
题目:求矩阵 \(A = \begin{bmatrix} 2 & 1 \\ 5 & 3 \end{bmatrix}\) 的逆矩阵。
解答:
方法一:伴随矩阵法
计算行列式: $\(\det(A) = 2 \times 3 - 1 \times 5 = 6 - 5 = 1 \neq 0\)\( 所以 \)A$ 可逆。
计算代数余子式:
- \(A_{11} = (-1)^{1+1} \times 3 = 3\)
- \(A_{12} = (-1)^{1+2} \times 5 = -5\)
- \(A_{21} = (-1)^{2+1} \times 1 = -1\)
- \(A_{22} = (-1)^{2+2} \times 2 = 2\)
余子式矩阵: $\(\begin{bmatrix} 3 & -5 \\ -1 & 2 \end{bmatrix}\)$
伴随矩阵(转置): $\(\text{adj}(A) = \begin{bmatrix} 3 & -1 \\ -5 & 2 \end{bmatrix}\)$
逆矩阵: $\(A^{-1} = \frac{1}{1} \begin{bmatrix} 3 & -1 \\ -5 & 2 \end{bmatrix} = \begin{bmatrix} 3 & -1 \\ -5 & 2 \end{bmatrix}\)$
验证: $\(AA^{-1} = \begin{bmatrix} 2 & 1 \\ 5 & 3 \end{bmatrix} \begin{bmatrix} 3 & -1 \\ -5 & 2 \end{bmatrix} = \begin{bmatrix} 6-5 & -2+2 \\ 15-15 & -5+6 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = I_2 \checkmark\)$
方法二:公式法(2×2 特例)
对于 \(A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}\),有: $\(A^{-1} = \frac{1}{ad-bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix}\)$
代入得: $\(A^{-1} = \frac{1}{1} \begin{bmatrix} 3 & -1 \\ -5 & 2 \end{bmatrix} = \begin{bmatrix} 3 & -1 \\ -5 & 2 \end{bmatrix}\)$
结果一致!
例题 3:求 3×3 逆矩阵(初等行变换法)
题目:求矩阵 \(A = \begin{bmatrix} 1 & 2 & 3 \\ 0 & 1 & 4 \\ 5 & 6 & 0 \end{bmatrix}\) 的逆矩阵。
解答:
构造增广矩阵 \([A | I_3]\): $\(\left[\begin{array}{ccc|ccc} 1 & 2 & 3 & 1 & 0 & 0 \\ 0 & 1 & 4 & 0 & 1 & 0 \\ 5 & 6 & 0 & 0 & 0 & 1 \end{array}\right]\)$
步骤 1:消去第 3 行第 1 列元素,\(R_3 \leftarrow R_3 - 5R_1\): $\(\left[\begin{array}{ccc|ccc} 1 & 2 & 3 & 1 & 0 & 0 \\ 0 & 1 & 4 & 0 & 1 & 0 \\ 0 & -4 & -15 & -5 & 0 & 1 \end{array}\right]\)$
步骤 2:消去第 3 行第 2 列元素,\(R_3 \leftarrow R_3 + 4R_2\): $\(\left[\begin{array}{ccc|ccc} 1 & 2 & 3 & 1 & 0 & 0 \\ 0 & 1 & 4 & 0 & 1 & 0 \\ 0 & 0 & 1 & -5 & 4 & 1 \end{array}\right]\)$
步骤 3:消去第 2 行第 3 列元素,\(R_2 \leftarrow R_2 - 4R_3\): $\(\left[\begin{array}{ccc|ccc} 1 & 2 & 3 & 1 & 0 & 0 \\ 0 & 1 & 0 & 20 & -15 & -4 \\ 0 & 0 & 1 & -5 & 4 & 1 \end{array}\right]\)$
步骤 4:消去第 1 行第 3 列元素,\(R_1 \leftarrow R_1 - 3R_3\): $\(\left[\begin{array}{ccc|ccc} 1 & 2 & 0 & 16 & -12 & -3 \\ 0 & 1 & 0 & 20 & -15 & -4 \\ 0 & 0 & 1 & -5 & 4 & 1 \end{array}\right]\)$
步骤 5:消去第 1 行第 2 列元素,\(R_1 \leftarrow R_1 - 2R_2\): $\(\left[\begin{array}{ccc|ccc} 1 & 0 & 0 & -24 & 18 & 5 \\ 0 & 1 & 0 & 20 & -15 & -4 \\ 0 & 0 & 1 & -5 & 4 & 1 \end{array}\right]\)$
最终得到: $\(A^{-1} = \begin{bmatrix} -24 & 18 & 5 \\ 20 & -15 & -4 \\ -5 & 4 & 1 \end{bmatrix}\)$
验证: $\(AA^{-1} = \begin{bmatrix} 1 & 2 & 3 \\ 0 & 1 & 4 \\ 5 & 6 & 0 \end{bmatrix} \begin{bmatrix} -24 & 18 & 5 \\ 20 & -15 & -4 \\ -5 & 4 & 1 \end{bmatrix}\)$
计算第一个元素:\(1(-24) + 2(20) + 3(-5) = -24 + 40 - 15 = 1\) ✓ 计算 \((1,3)\) 元素:\(1(5) + 2(-4) + 3(1) = 5 - 8 + 3 = 0\) ✓
(完整验证略,结果正确)
例题 4:不可逆矩阵的判定
题目:判断矩阵 \(B = \begin{bmatrix} 2 & 1 & -1 \\ 4 & 2 & -2 \\ 6 & 3 & -3 \end{bmatrix}\) 是否可逆。
解答:
观察矩阵 \(B\):
- 第 2 行 = \(2 \times\) 第 1 行
- 第 3 行 = \(3 \times\) 第 1 行
三行线性相关,\(\text{rank}(B) = 1 < 3\),所以 \(B\) 不可逆。
或者计算行列式: $\(\det(B) = 0\)$ (因为有两行成比例)
例题 5:含参数的可逆性讨论
题目:讨论矩阵 \(C = \begin{bmatrix} 1 & 2 \\ 3 & k \end{bmatrix}\) 的可逆性。
解答:
\[\det(C) = 1 \times k - 2 \times 3 = k - 6\]
- 当 \(k \neq 6\) 时,\(\det(C) \neq 0\),\(C\) 可逆
- 当 \(k = 6\) 时,\(\det(C) = 0\),\(C\) 不可逆
当 \(k \neq 6\) 时,逆矩阵为: $\(C^{-1} = \frac{1}{k-6} \begin{bmatrix} k & -2 \\ -3 & 1 \end{bmatrix}\)$
例题 6:实际应用——解线性方程组
题目:用逆矩阵法解方程组: $\(\begin{cases} x + 2y = 5 \\ 3x + 4y = 11 \end{cases}\)$
解答:
写成矩阵形式 \(A\mathbf{x} = \mathbf{b}\): $\(A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad \mathbf{x} = \begin{bmatrix} x \\ y \end{bmatrix}, \quad \mathbf{b} = \begin{bmatrix} 5 \\ 11 \end{bmatrix}\)$
计算 \(\det(A) = 1 \times 4 - 2 \times 3 = -2 \neq 0\),可逆
求 \(A^{-1}\): $\(A^{-1} = \frac{1}{-2} \begin{bmatrix} 4 & -2 \\ -3 & 1 \end{bmatrix} = \begin{bmatrix} -2 & 1 \\ 1.5 & -0.5 \end{bmatrix}\)$
求解 \(\mathbf{x} = A^{-1}\mathbf{b}\): $\(\mathbf{x} = \begin{bmatrix} -2 & 1 \\ 1.5 & -0.5 \end{bmatrix} \begin{bmatrix} 5 \\ 11 \end{bmatrix} = \begin{bmatrix} -10 + 11 \\ 7.5 - 5.5 \end{bmatrix} = \begin{bmatrix} 1 \\ 2 \end{bmatrix}\)$
所以 \(x = 1, y = 2\)。
验证:\(1 + 2(2) = 5\) ✓,\(3(1) + 4(2) = 11\) ✓
五、编程实现
Python 代码实现
”`python import numpy as np
def check_and_invert_matrix(A):
"""
判断方阵是否可逆,并求逆矩阵
返回:(是否可逆, 逆矩阵)
"""
A = np.array(A, dtype=float)
# 检查是否为方阵
if A.ndim != 2 or A.shape[0] != A.shape[1]:
raise ValueError("输入必须是方阵")
n = A.shape[0]
# 方法一:行列式判定
det_A = np.linalg.det(A)
if abs(det_A) < 1e-10: # 考虑浮点误差
print(f"行列式 ≈ 0,矩阵不可逆")
return False, None
print(f"行列式 = {det_A:.6f},矩阵可逆")
# 方法二:求逆矩阵
try:
A_inv = np.linalg.inv(A)
print("逆矩阵为:")
print(A_inv)
# 验证:A * A_inv = I
identity_check = np.dot(A, A_inv)
print("\n验证 A * A_inv:")
print(identity_check)
return True, A_inv
except np.linalg.LinAlgError:
print("求逆失败,矩阵不可逆")
return False, None
测试例题
print(“=” * 50) print(“例题 2:2x2 矩阵”) print(“=” * 50) A = [[2, 1], [5, 3]] check_and_invert_matrix(A)
print(“\n”
