矩阵的逆可以通过多种方法计算,具体方法根据矩阵的阶数和结构有所不同。以下是常用的计算方法及公式:
线性代数学过的方法
1. 伴随矩阵法(Adjugate Matrix)
适用于低阶矩阵(如二阶、三阶),公式为:
A
−
1
=
1
det
(
A
)
⋅
Adj
(
A
)
A^{-1} = \frac{1}{\det(A)} \cdot \text{Adj}(A)
A−1=det(A)1⋅Adj(A)
其中:
- det ( A ) \det(A) det(A) 是矩阵 A A A 的行列式;
- Adj ( A ) \text{Adj}(A) Adj(A) 是 A A A 的伴随矩阵,其元素为 A A A 的代数余子式转置。
示例(二阶矩阵):
若
A
=
(
a
b
c
d
)
A = \begin{pmatrix} a & b \\ c & d \end{pmatrix}
A=(acbd),则:
A
−
1
=
1
a
d
−
b
c
(
d
−
b
−
c
a
)
A^{-1} = \frac{1}{ad - bc} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix}
A−1=ad−bc1(d−c−ba)
(要求
a
d
−
b
c
≠
0
ad - bc \neq 0
ad−bc=0).
2. 初等行变换法(高斯-若尔当消元法)
通过增广矩阵的行变换将 [ A ∣ I ] [A | I] [A∣I] 转换为 [ I ∣ A − 1 ] [I | A^{-1}] [I∣A−1],步骤如下:
- 构造增广矩阵 [ A ∣ I ] [A | I] [A∣I];
- 通过初等行变换(交换行、数乘行、行加减)将左半部分化为单位矩阵;
- 右半部分即为 A − 1 A^{-1} A−1。
公式表示:
[
A
∣
I
]
→
行变换
[
I
∣
A
−
1
]
[A | I] \xrightarrow{\text{行变换}} [I | A^{-1}]
[A∣I]行变换[I∣A−1]
3. 分块矩阵求逆
适用于分块矩阵,公式为:
A
=
(
A
11
A
12
A
21
A
22
)
,
A
−
1
=
(
(
A
11
−
A
12
A
22
−
1
A
21
)
−
1
⋯
⋯
⋯
)
A = \begin{pmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{pmatrix}, \quad A^{-1} = \begin{pmatrix} (A_{11} - A_{12}A_{22}^{-1}A_{21})^{-1} & \cdots \\ \cdots & \cdots \end{pmatrix}
A=(A11A21A12A22),A−1=((A11−A12A22−1A21)−1⋯⋯⋯)
具体分块逆公式需根据子矩阵的逆和舒尔补(Schur complement)计算.
特殊分块公式(四块求逆):
A
−
1
=
(
(
A
11
⋅
2
)
−
1
−
(
A
11
⋅
2
)
−
1
A
12
A
22
−
1
−
A
22
−
1
A
21
(
A
11
⋅
2
)
−
1
A
22
−
1
+
A
22
−
1
A
21
(
A
11
⋅
2
)
−
1
A
12
A
22
−
1
)
A^{-1} = \begin{pmatrix} (A_{11\cdot 2})^{-1} & -(A_{11\cdot 2})^{-1}A_{12}A_{22}^{-1} \\ -A_{22}^{-1}A_{21}(A_{11\cdot 2})^{-1} & A_{22}^{-1} + A_{22}^{-1}A_{21}(A_{11\cdot 2})^{-1}A_{12}A_{22}^{-1} \end{pmatrix}
A−1=((A11⋅2)−1−A22−1A21(A11⋅2)−1−(A11⋅2)−1A12A22−1A22−1+A22−1A21(A11⋅2)−1A12A22−1)
其中
A
11
⋅
2
=
A
11
−
A
12
A
22
−
1
A
21
A_{11\cdot 2} = A_{11} - A_{12}A_{22}^{-1}A_{21}
A11⋅2=A11−A12A22−1A21.
4. 特殊矩阵的逆
- 对角矩阵:若
A
=
diag
(
a
11
,
…
,
a
n
n
)
A = \text{diag}(a_{11}, \dots, a_{nn})
A=diag(a11,…,ann),则:
A − 1 = diag ( a 11 − 1 , … , a n n − 1 ) A^{-1} = \text{diag}(a_{11}^{-1}, \dots, a_{nn}^{-1}) A−1=diag(a11−1,…,ann−1) - 正交矩阵:若 A A A 是正交矩阵,则 A − 1 = A T A^{-1} = A^T A−1=AT.
- Woodbury 恒等式:适用于低秩修正矩阵:
( A + U C V ) − 1 = A − 1 − A − 1 U ( C − 1 + V A − 1 U ) − 1 V A − 1 (A + UCV)^{-1} = A^{-1} - A^{-1}U(C^{-1} + VA^{-1}U)^{-1}VA^{-1} (A+UCV)−1=A−1−A−1U(C−1+VA−1U)−1VA−1
(要求 A A A 和 C C C 可逆).
5. 凯莱-哈密尔顿定理法
利用矩阵特征多项式求逆。若
A
A
A 的特征多项式为:
p
(
λ
)
=
λ
n
+
c
n
−
1
λ
n
−
1
+
⋯
+
c
0
=
0
p(\lambda) = \lambda^n + c_{n-1}\lambda^{n-1} + \dots + c_0 = 0
p(λ)=λn+cn−1λn−1+⋯+c0=0
则
A
−
1
A^{-1}
A−1 可表示为:
A
−
1
=
−
1
c
0
(
A
n
−
1
+
c
n
−
1
A
n
−
2
+
⋯
+
c
1
I
)
A^{-1} = -\frac{1}{c_0}(A^{n-1} + c_{n-1}A^{n-2} + \dots + c_1I)
A−1=−c01(An−1+cn−1An−2+⋯+c1I)
(要求
c
0
≠
0
c_0 \neq 0
c0=0).
注意事项:
- 可逆条件:矩阵必须是方阵且行列式 det ( A ) ≠ 0 \det(A) \neq 0 det(A)=0.
- 计算复杂度:伴随矩阵法对高阶矩阵计算量极大,推荐使用初等变换法或分块法.
- 验证:计算后需验证 A A − 1 = I AA^{-1} = I AA−1=I 以确保正确性.
LU分解(Matlab等常用)
以上方法可根据矩阵的具体形式选择使用。对于大型矩阵,数值方法(如LU分解)更高效
以下是关于LU分解法的详细说明和示例,结合原理、步骤及应用场景:
LU分解的核心原理
LU分解是将方阵( A )分解为一个下三角矩阵( L )(对角线元素为1)和一个上三角矩阵( U )的乘积,即:
A
=
L
U
A = LU
A=LU
若分解过程中需要行交换(保证数值稳定性),则表示为:
P
A
=
L
U
PA = LU
PA=LU
其中( P )为置换矩阵。
LU分解的步骤(高斯消元法)
以3×3矩阵为例,步骤如下:
-
初始化:
- ( L )初始化为单位矩阵,( U )初始化为原矩阵( A )。
- 例如,若( A = \begin{pmatrix} 2 & 3 & 1 \ 4 & 7 & 1 \ 6 & 7 & 3 \end{pmatrix} ),则:
L = ( 1 0 0 0 1 0 0 0 1 ) , U = A L = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}, \quad U = A L= 100010001 ,U=A
-
消元过程:
-
第一列消元:
- 计算消元系数( m_{21} = U_{21}/U_{11} = 4/2 = 2 ),更新( L )的第2行第1列为2。
- 更新( U )的第2行:( U_2 = U_2 - 2U_1 ),得到( U_2 = [0, 1, -1] )。
- 同理处理第三行,得到( L_{31} = 3 ),更新( U_3 = [0, -2, 0] )。
-
第二列消元:
- 计算( m_{32} = U_{32}/U_{22} = (-2)/1 = -2 ),更新( L_{32} = -2 )。
- 更新( U_3 = U_3 - (-2)U_2 ),得到( U_3 = [0, 0, 2] )。
-
-
最终分解结果:
L = ( 1 0 0 2 1 0 3 − 2 1 ) , U = ( 2 3 1 0 1 − 1 0 0 2 ) L = \begin{pmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 3 & -2 & 1 \end{pmatrix}, \quad U = \begin{pmatrix} 2 & 3 & 1 \\ 0 & 1 & -1 \\ 0 & 0 & 2 \end{pmatrix} L= 12301−2001 ,U= 2003101−12
验证:( A = LU )。
LU分解的应用场景
-
解线性方程组:
- 将( Ax = b )分解为两步:
- 前向替换:解( Ly = Pb )得到( y );
- 后向替换:解( Ux = y )得到( x )。
- 将( Ax = b )分解为两步:
-
计算行列式:
- 因( \det(A) = \det(L)\det(U) ),而( \det(L) = 1 ),故只需计算( \det(U) ),即对角线元素的乘积。
-
求逆矩阵:
- 通过求解( AX = I )的多个方程组,得到逆矩阵( X )。
-
数值稳定性优化:
- 部分主元法(PLU分解)通过行交换避免主元为0,减少舍入误差。
示例:解方程组
考虑方程组:
{
2
x
+
3
y
+
z
=
8
4
x
+
7
y
+
z
=
30
6
x
+
7
y
+
3
z
=
25
\begin{cases} 2x + 3y + z = 8 \\ 4x + 7y + z = 30 \\ 6x + 7y + 3z = 25 \end{cases}
⎩
⎨
⎧2x+3y+z=84x+7y+z=306x+7y+3z=25
-
LU分解:
- 使用上述分解结果( L )和( U )。
-
前向替换解( Ly = b ):
- ( b = [8, 30, 25]^T ),解得( y = [8, 14, -3]^T )。
-
后向替换解( Ux = y ):
- 最终解为( x = [17, 0, -3]^T )。
数值方法的变体
- Doolittle算法:
- ( L )的对角线为1,直接递推计算( L )和( U )的元素。
- Crout算法:
- ( U )的对角线为1,适用于对称矩阵优化。
- 分块LU分解:
- 针对大型稀疏矩阵,分块处理以提高效率。
注意事项
- 可分解条件:
- 矩阵必须是非奇异的(行列式非零),且所有顺序主子式非零。
- 优化建议:
- 对病态矩阵使用部分主元法(PLU分解),避免数值不稳定。
- 计算复杂度:
- 分解过程为( O(n^3) ),但回代仅需( O(n^2) ),适合多次求解相同系数矩阵的方程组。
通过LU分解,可将复杂矩阵操作简化为三角矩阵运算,广泛应用于工程计算和科学模拟中