线性方程
1. 消元
a . a. a . 线性方程的矩阵形式
在前面的线性代数基础中,我们提到了下面的方程:
x − 2 y = 1 3 x + 2 y = 11 \begin{aligned}
x - 2y &= 1\\
3x + 2y &= 11
\end{aligned} x − 2 y 3 x + 2 y = 1 = 11
可以写作向量的线性组合:
x [ 1 3 ] + y [ − 2 2 ] = [ 1 11 ] . \begin{aligned}
x\begin{bmatrix}1\\[4pt]3\end{bmatrix} + y\begin{bmatrix}-2\\[4pt]2\end{bmatrix}
&= \begin{bmatrix}1\\[4pt]11\end{bmatrix}.
\end{aligned} x [ 1 3 ] + y [ − 2 2 ] = [ 1 11 ] .
也可以写作如下的矩阵形式:
A = [ 1 − 2 3 2 ] , A [ x y ] = [ 1 − 2 3 2 ] [ x y ] = [ 1 11 ] . A=\begin{bmatrix}1 & -2\\[4pt]3 & 2\end{bmatrix},\qquad
A\begin{bmatrix}x\\[4pt]y\end{bmatrix}
= \begin{bmatrix}1 & -2\\[4pt]3 & 2\end{bmatrix}\begin{bmatrix}x\\[4pt]y\end{bmatrix}
= \begin{bmatrix}1\\[4pt]11\end{bmatrix}. A = [ 1 3 − 2 2 ] , A [ x y ] = [ 1 3 − 2 2 ] [ x y ] = [ 1 11 ] .
其中 A A A 为系数矩阵 。这样,我们就将线性方程转换为了矩阵形式 A x = b A x = b A x = b 。
b . b. b . 使用矩阵进行消元
考虑下面的方程:
2 x 1 + 4 x 2 − 2 x 3 = 2 4 x 1 + 9 x 2 − 3 x 3 = 8 − 2 x 1 − 3 x 2 + 7 x 3 = 10 \begin{aligned}
2x_1 + 4x_2 - 2x_3 &= 2\\
4x_1 + 9x_2 - 3x_3 &= 8\\
-2x_1 - 3x_2 + 7x_3 &= 10
\end{aligned} 2 x 1 + 4 x 2 − 2 x 3 4 x 1 + 9 x 2 − 3 x 3 − 2 x 1 − 3 x 2 + 7 x 3 = 2 = 8 = 10
也即:
[ 2 4 − 2 4 9 − 3 − 2 − 3 7 ] [ x 1 x 2 x 3 ] = [ 2 8 10 ] = [ b 1 b 2 b 3 ] = b \begin{bmatrix}
2 & 4 & -2\\
4 & 9 & -3\\
-2 & -3 & 7
\end{bmatrix}
\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}
=
\begin{bmatrix}2\\8\\10\end{bmatrix}=\begin{bmatrix}{b_1}\\{b_2}\\{b_3}\end{bmatrix} = b 2 4 − 2 4 9 − 3 − 2 − 3 7 x 1 x 2 x 3 = 2 8 10 = b 1 b 2 b 3 = b
根据消元法,消元的第一步是“将第 1 个方程乘以 2,然后从第 2 个方程中减去”。并且我们希望这个过程能用一个矩阵描述,这个矩阵把我们的 b b b 变成了 b ∗ n e w = E ∗ 21 b b*{new} = E*{21}b b ∗ n e w = E ∗ 21 b 。
首先我们基于单位矩阵 I I I 构造这个矩阵,因为单位矩阵相当于没有变换:I b = b Ib=b I b = b 。然后我们让 b 2 ′ = b 2 − 2 b 1 b'_2=b_2-2b_1 b 2 ′ = b 2 − 2 b 1 ,这可以通过让 a 21 = − 2 a_{21}=-2 a 21 = − 2 得到,于是我们得到了消元矩阵 E 21 E_{21} E 21 :
[ 1 0 0 − 2 1 0 0 0 1 ] [ b 1 b 2 b 3 ] = [ b 1 b 2 − 2 b 1 b 3 ] \displaystyle \begin{bmatrix}1 & 0 & 0\\ -2 & 1 & 0\\ 0 & 0 & 1\end{bmatrix}\begin{bmatrix}b_1\\ b_2\\ b_3\end{bmatrix}=\begin{bmatrix}b_1\\ b_2-2b_1\\ b_3\end{bmatrix} 1 − 2 0 0 1 0 0 0 1 b 1 b 2 b 3 = b 1 b 2 − 2 b 1 b 3
同样地,我们也可以得到其他的消元矩阵。将这个矩阵用在我们的方程上:
E ( A x ) = E b ( E A ) x = E b \begin{aligned}
E(Ax) &= Eb\\
(EA)x &= Eb
\end{aligned} E ( A x ) ( E A ) x = E b = E b
c . c. c . 交换矩阵
在进行消元时,我们依赖于主元(即对角线上的元素)来消去其下方同一列的元素。但如果某个主元位置的元素恰好是 0,消元就无法进行下去了。这时我们就要进行行交换操作。交换矩阵 P P P 就是用来完成这个任务的。
交换 i i i 和 j j j 行的矩阵 P i j P_{ij} P ij 构造十分简单:我们从单位矩阵出发,然后交换单位矩阵的 i i i 、j j j 行即可,如:
P 23 = [ 1 0 0 0 0 1 0 1 0 ] P_{23} =
\begin{bmatrix}
1 & 0 & 0\\
0 & 0 & 1\\
0 & 1 & 0
\end{bmatrix} P 23 = 1 0 0 0 0 1 0 1 0
令:
A = [ 1 2 3 0 0 4 0 6 7 ] A=\begin{bmatrix}1&2&3\\[4pt]0&0&4\\[4pt]0&6&7\end{bmatrix} A = 1 0 0 2 0 6 3 4 7
则:
P 23 A = [ 1 0 0 0 0 1 0 1 0 ] [ 1 2 3 0 0 4 0 6 7 ] = [ 1 2 3 0 6 7 0 0 4 ] . P_{23}A=
\begin{bmatrix}1&0&0\\[4pt]0&0&1\\[4pt]0&1&0\end{bmatrix}
\begin{bmatrix}1&2&3\\[4pt]0&0&4\\[4pt]0&6&7\end{bmatrix}
=
\begin{bmatrix}1&2&3\\[4pt]0&6&7\\[4pt]0&0&4\end{bmatrix}. P 23 A = 1 0 0 0 0 1 0 1 0 1 0 0 2 0 6 3 4 7 = 1 0 0 2 6 0 3 7 4 .
d . d. d . 增广矩阵
消元的每一步,无论是行交换还是行倍减,都是对一整行进行的操作。这意味着,施加在 A A A 矩阵某一行上的操作,也必须完全相同地施加在 b b b 向量对应的分量上。于是,我们可以把 b b b 当作 A A A 的一个额外列,让它们形成一个更宽的矩阵,也即增广矩阵 (Augmented Matrix)。例如前面的方程可以写为:
[ A b ] = [ 2 4 − 2 2 4 9 − 3 8 − 2 − 3 7 10 ] [A\ b] =
\left[\begin{array}{ccc|c}
2 & 4 & -2 & 2\\
4 & 9 & -3 & 8\\
-2 & -3 & 7 & 10
\end{array}\right] [ A b ] = 2 4 − 2 4 9 − 3 − 2 − 3 7 2 8 10
这样,我们的消元矩阵和变换矩阵就可以直接作用在一个矩阵上了。
2. 矩阵操作
a . a. a . 基本规则
维度匹配规则:一个 m m m 行 n n n 列的矩阵 A ∈ R m × n A\in\mathbb{R}^{m\times n} A ∈ R m × n ,只能与一个 n n n 行 p p p 列的矩阵 B ∈ R n × p B\in\mathbb{R}^{n\times p} B ∈ R n × p 相乘。关键在于 A A A 的列数等于 B B B 的行数。相乘后的结果是一个 m m m 行 p p p 列的矩阵 C ∈ R m × p C\in\mathbb{R}^{m\times p} C ∈ R m × p ,记作:
( m × n ) ⋅ ( n × p ) = ( m × p ) . (m\times n)\cdot(n\times p)=(m\times p). ( m × n ) ⋅ ( n × p ) = ( m × p ) .
元素计算规则:结果矩阵 C C C 中第 i i i 行第 j j j 列的元素 C i j C_{ij} C ij ,由 A A A 的第 i i i 行和 B B B 的第 j j j 列的点积给出:
C i j = ∑ k = 1 n A i k B k j . C_{ij}=\sum_{k=1}^{n} A_{ik}\,B_{kj}. C ij = k = 1 ∑ n A ik B kj .
结合律(Associativity):矩阵乘法满足结合律,意味着
( A B ) C = A ( B C ) , (AB)C = A(BC), ( A B ) C = A ( BC ) ,
因此可以任选先计算哪一对乘积,结果相同。
多种计算视角:
列视角:A B AB A B 的第 j j j 列等于 A A A 作用于 B B B 的第 j j j 列:
( A B ) : , j = A B : , j . (AB)_{:,j}=A\,B_{:,j}. ( A B ) : , j = A B : , j .
行视角:A B AB A B 的第 i i i 行等于 A A A 的第 i i i 行与 B B B 相乘(行向量与矩阵相乘):
( A B ) i , : = A i , : B . (AB)_{i,:}=A_{i,:}\,B. ( A B ) i , : = A i , : B .
外积分解(列×行之和):A B AB A B 可以写成各列与对应行的外积之和:
A B = ∑ k = 1 n A : , k B k , : , AB=\sum_{k=1}^{n} A_{:,k}\,B_{k,:}, A B = k = 1 ∑ n A : , k B k , : ,
其中 A : , k A_{:,k} A : , k 是第 k k k 列,B k , : B_{k,:} B k , : 是第 k k k 行。
不可交换性(Non-commutativity):一般情况下矩阵乘法不满足交换律,即
A B ≠ B A , AB\neq BA, A B = B A ,
分块乘法(Block Multiplication):将矩阵分块后按块运算可以简化计算。若把
A = [ A 1 A 2 ] , B = [ B 1 B 2 ] , A=[A_1\ A_2],\qquad B=\begin{bmatrix}B_1\\[4pt]B_2\end{bmatrix}, A = [ A 1 A 2 ] , B = [ B 1 B 2 ] ,
其中块尺寸匹配,则
A B = A 1 B 1 + A 2 B 2 . AB = A_1B_1 + A_2B_2. A B = A 1 B 1 + A 2 B 2 .
这在处理大型矩阵或利用结构化矩阵时非常有用。
b . b. b . 行视角与列视角
矩阵乘法的一般计算方法如下:第 i i i 行第 j j j 列的元素等于 “A A A 的第 i i i 行” 与 “B B B 的第 j j j 列” 的点积:
( A B ) i j = ∑ k = 1 n A i k B k j . (AB)_{ij}=\sum_{k=1}^{n} A_{ik} B_{kj}. ( A B ) ij = k = 1 ∑ n A ik B kj .
而矩阵 A B AB A B 的每一列,都是矩阵 A A A 与矩阵 B B B 相应列向量相乘的结果。进一步说,A B AB A B 的每一列都是 A A A 的所有列向量的线性组合 :
A [ b 1 , … , b p ] = [ A b 1 , … , A b p ] A\,[b_1,\dots,b_p]=[Ab_1,\dots,Ab_p] A [ b 1 , … , b p ] = [ A b 1 , … , A b p ]
同样地,矩阵 A B AB A B 的每一行,都是矩阵 A A A 的相应行向量与整个矩阵 B B B 相乘的结果。进一步说,A B AB A B 的每一行都是 B B B 的所有行向量的线性组合 :
(row i of A ) [ b 1 , … , b p ] = [ ( row i of A ) b 1 , … , ( row i of A ) b p ] = [row i of A B ] . \text{(row }i\text{ of }A)\,[b_1,\dots,b_p]
=\big[(\text{row }i\text{ of }A)b_1,\dots,(\text{row }i\text{ of }A)b_p\big]
=\text{[row }i\text{ of }AB]. (row i of A ) [ b 1 , … , b p ] = [ ( row i of A ) b 1 , … , ( row i of A ) b p ] = [row i of A B ] .
c . c. c . 外积视角
矩阵乘法还可以用外积的方法分解如下:
A B = ∑ k = 1 n A : , k B k , : AB \;=\; \sum_{k=1}^{n} A_{:,k}\,B_{k,:} A B = k = 1 ∑ n A : , k B k , :
其中 A : , k A_{:,k} A : , k 表示矩阵 A A A 的第 k k k 列(列向量),B k , : B_{k,:} B k , : 表示矩阵 B B B 的第 k k k 行(行向量),它们的乘积 A : , k B k , : A_{:,k}\,B_{k,:} A : , k B k , : 是一个矩阵(外积)。以下面两个矩阵为例:
A = [ a b c d ] , B = [ E F G H ] A=\begin{bmatrix}a & b\\[4pt] c & d\end{bmatrix},\qquad
B=\begin{bmatrix}E & F\\[4pt] G & H\end{bmatrix} A = [ a c b d ] , B = [ E G F H ]
A A A 的第 1 1 1 列 与 B B B 的第 1 1 1 行 的外积:
A : , 1 B 1 , : = [ a c ] [ E F ] = [ a E a F c E c F ] A_{:,1}B_{1,:}=
\begin{bmatrix}a\\[4pt]c\end{bmatrix}
\begin{bmatrix}E & F\end{bmatrix}
=
\begin{bmatrix}aE & aF\\[4pt] cE & cF\end{bmatrix} A : , 1 B 1 , : = [ a c ] [ E F ] = [ a E c E a F c F ]
A A A 的第 2 2 2 列 与 B B B 的第 2 2 2 行 的外积:
A : , 2 B 2 , : = [ b d ] [ G H ] = [ b G b H d G d H ] A_{:,2}B_{2,:}=
\begin{bmatrix}b\\[4pt]d\end{bmatrix}
\begin{bmatrix}G & H\end{bmatrix}
=
\begin{bmatrix}bG & bH\\[4pt] dG & dH\end{bmatrix} A : , 2 B 2 , : = [ b d ] [ G H ] = [ b G d G b H d H ]
相加即得:
A B = A : , 1 B 1 , : + A : , 2 B 2 , : = [ a E + b G a F + b H c E + d G c F + d H ] \begin{aligned}
AB &= A_{:,1}B_{1,:}+A_{:,2}B_{2,:}\\[4pt]
&=\begin{bmatrix}aE+bG & aF+bH\\[4pt] cE+dG & cF+dH\end{bmatrix}
\end{aligned} A B = A : , 1 B 1 , : + A : , 2 B 2 , : = [ a E + b G c E + d G a F + b H c F + d H ]
外积视角将矩阵乘法 A B AB A B 分解成了 n n n 个更简单的矩阵之和 。每一个 A r o w B c o l A_{row} B_{col} A ro w B co l 都是一个“秩一矩阵”(rank-one matrix)。这种分解思想在很多高级应用中都非常重要。
d . d. d . 分块
i . i. i . 基本概念
矩阵的分块很简单:将矩阵用水平线和垂直线,分割成由多个子矩阵组成的网络。例如下面的矩阵:
[ 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 ] = [ I I I I I I ] , \begin{bmatrix}
1 & 0 & 1 & 0 & 1 & 0\\
0 & 1 & 0 & 1 & 0 & 1\\
1 & 0 & 1 & 0 & 1 & 0\\
0 & 1 & 0 & 1 & 0 & 1
\end{bmatrix}
=
\begin{bmatrix}
I & I & I\\
I & I & I
\end{bmatrix}, 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 = [ I I I I I I ] ,
分块后的矩阵比原始的 4x6 矩阵在结构上清晰得多。它能让我们从一个更高的、更宏观的视角来理解矩阵的构造 ,忽略掉不必要的细节。
分块矩阵也可以执行乘法操作,这是分块矩阵最有用的地方:我们可以像操作普通数字一样操作矩阵块,前提是必须满足一个关键条件:A A A 矩阵的列切割方式,必须与 B B B 矩阵的行切割方式完全匹配 。
b . b. b . 对外积表示的另一种理解
我们可以把 A ∈ R m × n A\in\mathbb{R}^{m\times n} A ∈ R m × n 视为 1 × n 1\times n 1 × n 的分块矩阵(每块是一列):
A = [ c o l 1 c o l 2 ⋯ c o l n ] , c o l k ∈ R m × 1 . A=\big[\;\mathrm{col}_1\;\;\mathrm{col}_2\;\cdots\;\mathrm{col}_n\;\big],
\qquad \mathrm{col}_k\in\mathbb{R}^{m\times 1}. A = [ col 1 col 2 ⋯ col n ] , col k ∈ R m × 1 .
然后把 B ∈ R n × p B\in\mathbb{R}^{n\times p} B ∈ R n × p 视为 n × 1 n\times 1 n × 1 的分块矩阵(每块是一行):
B = [ r o w 1 r o w 2 ⋮ r o w n ] , r o w k ∈ R 1 × p . B=\begin{bmatrix}\mathrm{row}_1\\[4pt]\mathrm{row}_2\\[4pt]\vdots\\[4pt]\mathrm{row}_n\end{bmatrix},
\qquad \mathrm{row}_k\in\mathbb{R}^{1\times p}. B = row 1 row 2 ⋮ row n , row k ∈ R 1 × p .
此时的分块乘法结果为:
A B = ∑ k = 1 n c o l k r o w k , AB=\sum_{k=1}^{n}\mathrm{col}_k\,\mathrm{row}_k, A B = k = 1 ∑ n col k row k ,
其中每一项 c o l k r o w k \mathrm{col}_k\,\mathrm{row}_k col k row k 正好是一个 m × p m\times p m × p 的外积矩阵。这说明了两种视角的等价性。
i i i . iii. iii . 分块消元与舒尔补
我们也可以对分块后的矩阵也执行前面的消元操作。普通的消元操作如下:
[ a b c d ] → eliminate c [ a b 0 d − c a b ] . \begin{bmatrix}a & b\\[4pt] c & d\end{bmatrix}
\quad\xrightarrow{\ \text{eliminate }c\ }\
\begin{aligned}
&\begin{bmatrix}a & b\\[4pt] 0 & d - \dfrac{c}{a}\,b\end{bmatrix}.
\end{aligned} [ a c b d ] eliminate c a 0 b d − a c b .
对于分块矩阵,假设
[ A B C D ] , A ∈ R m × m and is invertible . \begin{bmatrix}A & B\\[4pt] C & D\end{bmatrix},
\qquad A\in\mathbb{R}^{m\times m}\ \text{and is invertible}. [ A C B D ] , A ∈ R m × m and is invertible .
那么对其进行消元,有:
[ I 0 − C A − 1 I ] [ A B C D ] = [ A B 0 D − C A − 1 B ] . \begin{bmatrix}I & 0\\[4pt] -C A^{-1} & I\end{bmatrix}
\begin{bmatrix}A & B\\[4pt] C & D\end{bmatrix}
=
\begin{bmatrix}A & B\\[4pt] 0 & D - C A^{-1} B\end{bmatrix}. [ I − C A − 1 0 I ] [ A C B D ] = [ A 0 B D − C A − 1 B ] .
而右下块(又称舒尔补(Schur complement))
S = D − C A − 1 B , S = D - C A^{-1} B, S = D − C A − 1 B ,
恰好对应标量情形中的 d − ( c / a ) b d - (c/a)\,b d − ( c / a ) b 。舒尔补在降维和解耦方面非常有用。
3. 逆矩阵
a . a. a . 基本概念
假设 A A A 是一个方阵。我们想找一个同样大小的逆矩阵 A − 1 A^{-1} A − 1 ,这个矩阵乘以 A A A 等于单位矩阵 I I I 。
逆矩阵 A − 1 A^{-1} A − 1 的作用就是撤销 A A A 的操作 。
正式定义如下:如果存在一个矩阵 A − 1 A^{-1} A − 1 使得 A − 1 A = I A^{-1}A = I A − 1 A = I 并且 AA⁻¹ = I,那么矩阵 A 就是可逆的 (invertible)。
关于逆矩阵的几个要点如下:
逆矩阵存在的充要条件是,通过高斯消元法(允许行交换)能够得到 n n n 个主元(对于 n x n n x n n x n 矩阵)。这意味着消元后不会出现全零行 。
逆矩阵是唯一的。
如果 A A A 可逆,那么对于任何向量 b b b ,方程 A x = b Ax = b A x = b 都有唯一解 x = A − 1 b x = A^{-1}b x = A − 1 b 。
假设存在一个非零向量 x x x ,使得 A x = 0 Ax = 0 A x = 0 。那么 A A A 不可能是可逆的。这是因为矩阵 A A A 把一个非零向量 x x x 映射到了零向量 0,而任何矩阵都无法把零向量 0 再变回原来的非零向量 x x x 。换句话说,如果 A A A 可逆,那么 A x = 0 Ax = 0 A x = 0 的唯一解必然是 x = A − 1 0 = 0 x = A^{-1}0 = 0 x = A − 1 0 = 0 。如果还能找到一个非零的 x x x 满足这个方程,说明 A A A 不可逆。
b . b. b . 矩阵乘积的逆
A B AB A B 可逆,当且仅当 A A A 和 B B B 各自都可逆(并且大小匹配)。
这个也可以从“矩阵是一种变换”的角度理解,只要这个“变换链条”中有一个部分是不可逆的,就没办法通过逆矩阵撤销整个操作。
并且 A B AB A B 的逆是逆序的:
( A B ) − 1 = B − 1 A − 1 (AB)^{-1} = B^{-1}A^{-1} ( A B ) − 1 = B − 1 A − 1
c . c. c . 消元矩阵的逆
这里我们特别讨论一下消元矩阵的逆,这一过程解释了 LU 分解的可行性。
假设我们有下面两个消元矩阵:
E:从第 2 行减去 5 倍的第 1 行。
F:从第 3 行减去 4 倍的第 2 行。
E = [ 1 0 0 − 5 1 0 0 0 1 ] , F = [ 1 0 0 0 1 0 0 − 4 1 ] . E=\begin{bmatrix}1&0&0\\[4pt]-5&1&0\\[4pt]0&0&1\end{bmatrix},\qquad
F=\begin{bmatrix}1&0&0\\[4pt]0&1&0\\[4pt]0&-4&1\end{bmatrix}. E = 1 − 5 0 0 1 0 0 0 1 , F = 1 0 0 0 1 − 4 0 0 1 .
我们让它依次作用,也即计算 F E FE FE :
F E = [ 1 0 0 0 1 0 0 − 4 1 ] [ 1 0 0 − 5 1 0 0 0 1 ] = [ 1 0 0 − 5 1 0 20 − 4 1 ] . \begin{aligned}
FE
&=\begin{bmatrix}1&0&0\\[2pt]0&1&0\\[2pt]0&-4&1\end{bmatrix}
\begin{bmatrix}1&0&0\\[2pt]-5&1&0\\[2pt]0&0&1\end{bmatrix}
=
\begin{bmatrix}1&0&0\\[2pt]-5&1&0\\[2pt]20&-4&1\end{bmatrix}.
\end{aligned} FE = 1 0 0 0 1 − 4 0 0 1 1 − 5 0 0 1 0 0 0 1 = 1 − 5 20 0 1 − 4 0 0 1 .
第三行第一列出现了一个突兀的 20,这来自交叉项:F F F 的操作是 row 3 ← row 3 − 4 ⋅ row 2 ′ \text{row}_3\leftarrow\text{row}_3-4\cdot\text{row}_2' row 3 ← row 3 − 4 ⋅ row 2 ′ ,而 row 2 ′ = row 2 − 5 ⋅ row 1 \text{row}_2'=\text{row}_2-5\cdot\text{row}_1 row 2 ′ = row 2 − 5 ⋅ row 1 ,所以 row 3 \text{row}_3 row 3 收到来自 row 1 \text{row}_1 row 1 的影响,产生 ( − 4 ) ⋅ ( − 5 ) = 20 (-4)\cdot(-5)=20 ( − 4 ) ⋅ ( − 5 ) = 20 。
然后我们试着从最终的上三角矩阵“撤销”这些作用,也即计算 F − 1 E − 1 F^{-1}E^{-1} F − 1 E − 1 :
E − 1 = [ 1 0 0 5 1 0 0 0 1 ] , F − 1 = [ 1 0 0 0 1 0 0 4 1 ] . E^{-1}=\begin{bmatrix}1&0&0\\[4pt]5&1&0\\[4pt]0&0&1\end{bmatrix},\qquad
F^{-1}=\begin{bmatrix}1&0&0\\[4pt]0&1&0\\[4pt]0&4&1\end{bmatrix}. E − 1 = 1 5 0 0 1 0 0 0 1 , F − 1 = 1 0 0 0 1 4 0 0 1 .
E − 1 F − 1 = [ 1 0 0 5 1 0 0 0 1 ] [ 1 0 0 0 1 0 0 4 1 ] = [ 1 0 0 5 1 0 0 4 1 ] . \begin{aligned}
E^{-1}F^{-1}
&=\begin{bmatrix}1&0&0\\[2pt]5&1&0\\[2pt]0&0&1\end{bmatrix}
\begin{bmatrix}1&0&0\\[2pt]0&1&0\\[2pt]0&4&1\end{bmatrix}
=
\begin{bmatrix}1&0&0\\[2pt]5&1&0\\[2pt]0&4&1\end{bmatrix}.
\end{aligned} E − 1 F − 1 = 1 5 0 0 1 0 0 0 1 1 0 0 0 1 4 0 0 1 = 1 5 0 0 1 4 0 0 1 .
由于逆矩阵的作用是撤销矩阵操作,对于我们的消元矩阵,只需要把消元操作对应位置的符号改一下即可。
这里没有产生 20,因为逆的作用顺序是先 F − 1 F^{-1} F − 1 再 E − 1 E^{-1} E − 1 ,E − 1 E^{-1} E − 1 对第二行的改变不会再传播到第三行 ,所以没有交叉项出现。它允许我们将所有消元步骤的乘数直接、干净地填入下三角矩阵 L L L 中,而无需计算那些复杂的交叉项。
d . d. d . 高斯——若尔当消元法
i . i. i . 基本原理
高斯-若尔当 (Gauss-Jordan) 消元法的基本思路是解方程组 A A − 1 = I AA^{-1} = I A A − 1 = I 。
设 A − 1 A^{-1} A − 1 的列向量为 x 1 , … , x n x_1,\dots,x_n x 1 , … , x n ,单位矩阵 I I I 的列向量为 e 1 , … , e n e_1,\dots,e_n e 1 , … , e n (例如 e 1 = [ 1 , 0 , … , 0 ] T e_1=[1,0,\dots,0]^T e 1 = [ 1 , 0 , … , 0 ] T )。则由 A A − 1 = I AA^{-1}=I A A − 1 = I 得:
A [ x 1 ⋯ x n ] = [ A x 1 ⋯ A x n ] = [ e 1 ⋯ e n ] . A[\,x_1\ \cdots\ x_n\,]=[\,Ax_1\ \cdots\ Ax_n\,]=[\,e_1\ \cdots\ e_n\,]. A [ x 1 ⋯ x n ] = [ A x 1 ⋯ A x n ] = [ e 1 ⋯ e n ] .
这等价于线性方程组:
A x 1 = e 1 A x 2 = e 2 ⋮ A x n = e n \begin{aligned}
A x_1 &= e_1\\
A x_2 &= e_2\\
&\vdots\\
A x_n &= e_n
\end{aligned} A x 1 A x 2 A x n = e 1 = e 2 ⋮ = e n
求出这 n n n 个解向量 x k x_k x k 后,即可得到 A − 1 A^{-1} A − 1 。而我们对增广矩阵
[ A ∣ I ] = [ A ∣ e 1 ⋯ e n ] [\,A\mid I\,]=[\,A\mid e_1\ \cdots\ e_n\,] [ A ∣ I ] = [ A ∣ e 1 ⋯ e n ]
做行简化(行初等变换),可直接得到:
[ I ∣ A − 1 ] , [\,I\mid A^{-1}\,], [ I ∣ A − 1 ] ,
从而一次性得到 A − 1 A^{-1} A − 1 。
以下面的矩阵为例:
K = [ 2 − 1 0 − 1 2 − 1 0 − 1 2 ] K=\begin{bmatrix}2 & -1 & 0\\-1 & 2 & -1\\0 & -1 & 2\end{bmatrix} K = 2 − 1 0 − 1 2 − 1 0 − 1 2
构造增广矩阵 [ K ∣ I ] [K\mid I] [ K ∣ I ] :
[ K ∣ I ] = [ 2 − 1 0 1 0 0 − 1 2 − 1 0 1 0 0 − 1 2 0 0 1 ] [K\mid I]=\left[\begin{array}{ccc|ccc}
2 & -1 & 0 & 1 & 0 & 0\\[4pt]
-1 & 2 & -1 & 0 & 1 & 0\\[4pt]
0 & -1 & 2 & 0 & 0 & 1
\end{array}\right] [ K ∣ I ] = 2 − 1 0 − 1 2 − 1 0 − 1 2 1 0 0 0 1 0 0 0 1
向下消元(得到上三角矩阵):
用 R 2 ← R 2 + 1 2 R 1 R_2\leftarrow R_2+\tfrac{1}{2}R_1 R 2 ← R 2 + 2 1 R 1 (消去第2行第1列)得
[ 2 − 1 0 1 0 0 0 3 2 − 1 1 2 1 0 0 − 1 2 0 0 1 ] \left[\begin{array}{ccc|ccc}
2 & -1 & 0 & 1 & 0 & 0\\[4pt]
0 & \tfrac{3}{2} & -1 & \tfrac{1}{2} & 1 & 0\\[4pt]
0 & -1 & 2 & 0 & 0 & 1
\end{array}\right] 2 0 0 − 1 2 3 − 1 0 − 1 2 1 2 1 0 0 1 0 0 0 1
用 R 3 ← R 3 + 2 3 R 2 R_3\leftarrow R_3+\tfrac{2}{3}R_2 R 3 ← R 3 + 3 2 R 2 (消去第3行第2列,注意用的是更新后的 R 2 R_2 R 2 )得
[ 2 − 1 0 1 0 0 0 3 2 − 1 1 2 1 0 0 0 4 3 1 3 2 3 1 ] \left[\begin{array}{ccc|ccc}
2 & -1 & 0 & 1 & 0 & 0\\[4pt]
0 & \tfrac{3}{2} & -1 & \tfrac{1}{2} & 1 & 0\\[4pt]
0 & 0 & \tfrac{4}{3} & \tfrac{1}{3} & \tfrac{2}{3} & 1
\end{array}\right] 2 0 0 − 1 2 3 0 0 − 1 3 4 1 2 1 3 1 0 1 3 2 0 0 1
此时左块已变为上三角矩阵 U U U 。
向上消元(若尔当步骤,消去上方非零元):
用 R 2 ← R 2 + 3 4 R 3 R_2\leftarrow R_2+\tfrac{3}{4}R_3 R 2 ← R 2 + 4 3 R 3 (消去 R 2 R_2 R 2 的第3列)得
[ 2 − 1 0 1 0 0 0 3 2 0 3 4 3 2 3 4 0 0 4 3 1 3 2 3 1 ] \left[\begin{array}{ccc|ccc}
2 & -1 & 0 & 1 & 0 & 0\\[4pt]
0 & \tfrac{3}{2} & 0 & \tfrac{3}{4} & \tfrac{3}{2} & \tfrac{3}{4}\\[4pt]
0 & 0 & \tfrac{4}{3} & \tfrac{1}{3} & \tfrac{2}{3} & 1
\end{array}\right] 2 0 0 − 1 2 3 0 0 0 3 4 1 4 3 3 1 0 2 3 3 2 0 4 3 1
用 R 1 ← R 1 + 2 3 R 2 R_1\leftarrow R_1+\tfrac{2}{3}R_2 R 1 ← R 1 + 3 2 R 2 (消去 R 1 R_1 R 1 的第2列,使用更新后的 R 2 R_2 R 2 )得
[ 2 0 0 3 2 1 1 2 0 3 2 0 3 4 3 2 3 4 0 0 4 3 1 3 2 3 1 ] \left[\begin{array}{ccc|ccc}
2 & 0 & 0 & \tfrac{3}{2} & 1 & \tfrac{1}{2}\\[4pt]
0 & \tfrac{3}{2} & 0 & \tfrac{3}{4} & \tfrac{3}{2} & \tfrac{3}{4}\\[4pt]
0 & 0 & \tfrac{4}{3} & \tfrac{1}{3} & \tfrac{2}{3} & 1
\end{array}\right] 2 0 0 0 2 3 0 0 0 3 4 2 3 4 3 3 1 1 2 3 3 2 2 1 4 3 1
归一化,得到 [ I ∣ K − 1 ] [I\mid K^{-1}] [ I ∣ K − 1 ] :
R 1 ← 1 2 R 1 , R 2 ← 2 3 R 2 , R 3 ← 3 4 R 3 R_1\leftarrow \tfrac{1}{2}R_1,\; R_2\leftarrow \tfrac{2}{3}R_2,\; R_3\leftarrow \tfrac{3}{4}R_3 R 1 ← 2 1 R 1 , R 2 ← 3 2 R 2 , R 3 ← 4 3 R 3 ,结果为
[ 1 0 0 3 4 1 2 1 4 0 1 0 1 2 1 1 2 0 0 1 1 4 1 2 3 4 ] \left[\begin{array}{ccc|ccc}
1 & 0 & 0 & \tfrac{3}{4} & \tfrac{1}{2} & \tfrac{1}{4}\\[4pt]
0 & 1 & 0 & \tfrac{1}{2} & 1 & \tfrac{1}{2}\\[4pt]
0 & 0 & 1 & \tfrac{1}{4} & \tfrac{1}{2} & \tfrac{3}{4}
\end{array}\right] 1 0 0 0 1 0 0 0 1 4 3 2 1 4 1 2 1 1 2 1 4 1 2 1 4 3
因此
K − 1 = [ 3 4 1 2 1 4 1 2 1 1 2 1 4 1 2 3 4 ] . K^{-1}=\begin{bmatrix}
\tfrac{3}{4} & \tfrac{1}{2} & \tfrac{1}{4}\\[4pt]
\tfrac{1}{2} & 1 & \tfrac{1}{2}\\[4pt]
\tfrac{1}{4} & \tfrac{1}{2} & \tfrac{3}{4}
\end{bmatrix}. K − 1 = 4 3 2 1 4 1 2 1 1 2 1 4 1 2 1 4 3 .
e . e. e . 逆矩阵存在性判定
我们在前面提到了逆矩阵存在性的判定方法:一个矩阵 A A A 存在逆矩阵 A − 1 A^{-1} A − 1 ,当且仅当 A A A 有一整套的 n n n 个主元(对于 n x n n x n n x n 矩阵而言,允许在消元过程中进行行交换)。通过前面的消元法方法,很容易证明这个结论。
首先我们证明:有 n n n 个主元 ⇒ \Rightarrow ⇒ 方阵 A A A 可逆。
先证明右逆的存在:若 A A A 在高斯——若尔当消元中有 n n n 个主元,则对增广矩阵 [ A ∣ I ] [A\mid I] [ A ∣ I ] 进行行初等变换必能化为 [ I ∣ A − 1 ] [I\mid A^{-1}] [ I ∣ A − 1 ] 。因此由消元得到的矩阵 A − 1 A^{-1} A − 1 满足 A A − 1 = I A A^{-1}=I A A − 1 = I ,即 A − 1 A^{-1} A − 1 是 A A A 的一个右逆。
然后证明左逆的存在:消元过程等价于从左侧乘以一列行变换矩阵的乘积 C = E k ⋯ E 2 E 1 C=E_k\cdots E_2E_1 C = E k ⋯ E 2 E 1 ,而根据最终的变换结果,A A A 变成了 I I I ,因此 C A = I CA=I C A = I ,C C C 是 A A A 的一个左逆。
然后我们证明:方阵 A A A 可逆 ⇒ \Rightarrow ⇒ 有 n n n 个主元。
我们假设 A A A 可逆但没有 n n n 个主元(即在消元中出现至少一行全零)。消元等价于左乘一个可逆矩阵 M M M ,因此消元后得到的矩阵是 M A MA M A ,且由假设, M A MA M A 存在一行全零。由于 A A A 可逆,存在矩阵 C C C 使得:
A C = I . AC=I. A C = I .
两边同时左乘 M M M 得:
M ( A C ) = M I ⟹ ( M A ) C = M . M(AC)=MI\quad\Longrightarrow\quad (MA)C=M. M ( A C ) = M I ⟹ ( M A ) C = M .
考察等式两端:左侧 ( M A ) C (MA)C ( M A ) C 若 M A MA M A 存在一行全零,则 ( M A ) C (MA)C ( M A ) C 对任意 C C C 也必有对应的全零行。因此右侧 M M M 必有一行全零。但这与 M M M 可逆(M M M 是一系列可逆矩阵的乘积)相矛盾:可逆矩阵不可能有全零行。
这个是显然的。可以使用前面的 “矩阵 A A A 可逆,当且仅当方程 A x = 0 Ax = 0 A x = 0 只有唯一的解 x = 0 x = 0 x = 0 (零向量)” 这个结论。当有一行全部为 0 时,我们的方程组系统就少了一个方程,这会导致 A x = 0 Ax=0 A x = 0 存在非零解。
4. LU 分解
a . a. a . 基本概念
在前面,我们通过消元将 A A A 变为了上三角矩阵:
E k ⋯ E 2 E 1 A = U . E_k\cdots E_2 E_1\,A = U. E k ⋯ E 2 E 1 A = U .
也即:
A = ( E k ⋯ E 2 E 1 ) − 1 U = E 1 − 1 E 2 − 1 ⋯ E k − 1 U . A = (E_k\cdots E_2 E_1)^{-1} U = E_1^{-1} E_2^{-1}\cdots E_k^{-1}\,U. A = ( E k ⋯ E 2 E 1 ) − 1 U = E 1 − 1 E 2 − 1 ⋯ E k − 1 U .
记:
L = E 1 − 1 E 2 − 1 ⋯ E k − 1 , L \;=\; E_1^{-1} E_2^{-1}\cdots E_k^{-1}, L = E 1 − 1 E 2 − 1 ⋯ E k − 1 ,
就得到了 A A A 的 LU 分解:
A = L U A = L U A = LU
这个分解有一个很巧妙的地方:消元过程中的每个乘数 l i j l_{ij} l ij 会原封不动地、直接进入由逆矩阵乘积构成的 L L L 矩阵中,并恰好位于其 ( i , j ) (i, j) ( i , j ) 位置。例如下面的例子:
E 21 A = [ 1 0 − 3 1 ] [ 2 1 6 8 ] = [ 2 1 0 5 ] = U E_{21}A = \begin{bmatrix}1 & 0 \\ -3 & 1\end{bmatrix}\begin{bmatrix}2 & 1 \\ 6 & 8\end{bmatrix} = \begin{bmatrix}2 & 1 \\ 0 & 5\end{bmatrix} = U E 21 A = [ 1 − 3 0 1 ] [ 2 6 1 8 ] = [ 2 0 1 5 ] = U
E 21 − 1 U = [ 1 0 3 1 ] [ 2 1 0 5 ] = [ 2 1 6 8 ] = A E_{21}^{-1}U = \begin{bmatrix}1 & 0 \\ 3 & 1\end{bmatrix}\begin{bmatrix}2 & 1 \\ 0 & 5\end{bmatrix} = \begin{bmatrix}2 & 1 \\ 6 & 8\end{bmatrix} = A E 21 − 1 U = [ 1 3 0 1 ] [ 2 0 1 5 ] = [ 2 6 1 8 ] = A
因此,我们可以如下归纳 LU 分解形式:
U U U (上三角矩阵): 主对角线上是主元。
L L L (下三角矩阵): 主对角线上全是 1,对角线下方是消元乘数 l i j l_{ij} l ij 。
b . b. b . 对 L 结构的解释
L L L 结构的简单性在前面“消元”章节已经简单提过了,下面再系统整理一下:
我们考虑下面的消元步骤:先用第1行消去第2行,再用第2行消去第3行,也即 l 21 = 1 2 , l 32 = 2 3 l_{21}=\tfrac12,\;l_{32}=\tfrac23 l 21 = 2 1 , l 32 = 3 2 ,则
L = [ 1 0 0 1 2 1 0 0 2 3 1 ] , L=\begin{bmatrix}
1 & 0 & 0\\[4pt]
\frac12 & 1 & 0\\[4pt]
0 & \frac23 & 1
\end{bmatrix}, L = 1 2 1 0 0 1 3 2 0 0 1 ,
注意 L 31 = 0 L_{31}=0 L 31 = 0 ,因为原始矩阵 A A A 的第 ( 3 , 1 ) (3,1) ( 3 , 1 ) 元已经为 0 0 0 ,不需要对第3行再用第1行消元,所以 l 31 = 0 l_{31}=0 l 31 = 0 。
在消元过程中,我们减去的并不是原始的主元行,而是已经被更新、属于 U U U 的行。以第 3 行为例,向下消元得到的第 3 行满足:
U 3 , : = A 3 , : − l 31 U 1 , : − l 32 U 2 , : . (1) U_{3,:}=A_{3,:}-l_{31}\,U_{1,:}-l_{32}\,U_{2,:}. \tag{1} U 3 , : = A 3 , : − l 31 U 1 , : − l 32 U 2 , : . ( 1 )
将 (1) 重排,得到原始第3行关于 U U U 行的线性组合:
A 3 , : = l 31 U 1 , : + l 32 U 2 , : + 1 ⋅ U 3 , : = [ l 31 l 32 1 ] U \begin{aligned}
A_{3,:} &= l_{31}\,U_{1,:} + l_{32}\,U_{2,:} + 1\cdot U_{3,:} \\
&= \begin{bmatrix} l_{31} & l_{32} & 1 \end{bmatrix} U
\end{aligned} A 3 , : = l 31 U 1 , : + l 32 U 2 , : + 1 ⋅ U 3 , : = [ l 31 l 32 1 ] U
对任意行 i i i 都有类似关系,因此对整个矩阵有:
A = L U , A = L\,U, A = L U ,
其中第 i i i 行:
A i , : = ∑ k = 1 i l i k U k , : , l i i = 1. A_{i,:}=\sum_{k=1}^{i} l_{ik}\,U_{k,:},\qquad l_{ii}=1. A i , : = k = 1 ∑ i l ik U k , : , l ii = 1.
c . c. c . LDU 分解
A = L U A = LU A = LU 分解有一个“不对称”的地方:L L L 的对角线是1,而 U U U 的对角线是主元。我们可以很轻松地改变这一点,得到一个更“对称”的分解:我们把 U U U 矩阵对角线上的所有主元提取出来,形成一个对角矩阵 D D D :
D = diag ( u 11 , u 22 , … , u n n ) , U ^ = D − 1 U , D=\operatorname{diag}(u_{11},u_{22},\dots,u_{nn}),\qquad \widehat U=D^{-1}U, D = diag ( u 11 , u 22 , … , u nn ) , U = D − 1 U ,
则 U ^ \widehat U U 的对角线为 1 1 1 且:
U = D U ^ , A = L U = L D U ^ . U=D\widehat U,\qquad A=L\,U=L\,D\,\widehat U. U = D U , A = L U = L D U .
将 U ^ \widehat U U 记作新的 U U U ,于是得到对称的 LDU 分解:
A = L D U A = L\,D\,U A = L D U
其中 L L L 为单位下三角矩阵,D D D 为对角矩阵,U U U 为单位上三角矩阵(对角线全为 1 1 1 )。
以下面这个矩阵为例:
A = [ 2 1 6 8 ] , L = [ 1 0 3 1 ] , U = [ 2 1 0 5 ] . A=\begin{bmatrix}2&1\\[4pt]6&8\end{bmatrix},\quad
L=\begin{bmatrix}1&0\\[4pt]3&1\end{bmatrix},\quad
U=\begin{bmatrix}2&1\\[4pt]0&5\end{bmatrix}. A = [ 2 6 1 8 ] , L = [ 1 3 0 1 ] , U = [ 2 0 1 5 ] .
取:
D = [ 2 0 0 5 ] , U ^ = D − 1 U = [ 1 1 2 0 1 ] . D=\begin{bmatrix}2&0\\[4pt]0&5\end{bmatrix},\qquad
\widehat U=D^{-1}U=\begin{bmatrix}1&\tfrac12\\[4pt]0&1\end{bmatrix}. D = [ 2 0 0 5 ] , U = D − 1 U = [ 1 0 2 1 1 ] .
于是:
A = L D U ^ = [ 1 0 3 1 ] [ 2 0 0 5 ] [ 1 1 2 0 1 ] . A=L\,D\,\widehat U
=\begin{bmatrix}1&0\\[4pt]3&1\end{bmatrix}
\begin{bmatrix}2&0\\[4pt]0&5\end{bmatrix}
\begin{bmatrix}1&\tfrac12\\[4pt]0&1\end{bmatrix}. A = L D U = [ 1 3 0 1 ] [ 2 0 0 5 ] [ 1 0 2 1 1 ] .
5. 转置与置换
a . a. a . 转置
i . i. i . 基本概念与运算
转置的概念非常简单,就是把矩阵 A A A 的行变成 A T A^T A T 的列(反之亦然)。它的运算法则如下:
( A + B ) T = A T + B T (A + B)^T = A^T + B^T ( A + B ) T = A T + B T
( A B ) T = B T A T (AB)^T = B^TA^T ( A B ) T = B T A T
( A − 1 ) T = ( A T ) − 1 (A^{-1})^T = (A^T)^{-1} ( A − 1 ) T = ( A T ) − 1
下面简单证明一下法则2。对向量有:
( A x ) T = x T A T . (Ax)^T=x^TA^T. ( A x ) T = x T A T .
而 B = [ x 1 x 2 ⋯ ] B=[x_1\ x_2\ \cdots] B = [ x 1 x 2 ⋯ ] ,则
A B = [ A x 1 A x 2 ⋯ ] , AB=[Ax_1\ Ax_2\ \cdots], A B = [ A x 1 A x 2 ⋯ ] ,
所以 ( A B ) T (AB)^T ( A B ) T 的行就是 ( A x 1 ) T , ( A x 2 ) T , … (Ax_1)^T,(Ax_2)^T,\dots ( A x 1 ) T , ( A x 2 ) T , … 。而按上面的向量规则,
( A x j ) T = x j T A T , (Ax_j)^T=x_j^TA^T, ( A x j ) T = x j T A T ,
因此 ( A B ) T (AB)^T ( A B ) T 的行正好是 x j T A T x_j^TA^T x j T A T 。另一方面,B T B^T B T 的行就是 x j T x_j^T x j T ,于是
i i . ii. ii . 转置的深层含义
在对转置进行更深入的讨论前,我们先引入内积与外积的新的定义:
(Inner Product) = x T y \text{(Inner Product) }= x^T y (Inner Product) = x T y
(Outer Product) = x y T \text{(Outer Product) }= x y^T (Outer Product) = x y T
然后我们引入下面的转置定义:对于任意的向量 x x x 和 y y y ,A T A^T A T 是那个唯一能让下面这个等式成立的矩阵:
( A x ) T y = x T ( A T y ) (Ax)^Ty = x^T(A^Ty) ( A x ) T y = x T ( A T y )
这个式子揭示了转置的本质作用:A T A^T A T 可以在内积运算中,将矩阵 A A A 的作用对象从 x x x 转移到 y y y 上 。
下面我们看一个具体的例子,已知:
A = [ − 1 1 0 0 − 1 1 ] , A T = [ − 1 0 1 − 1 0 1 ] , A=\begin{bmatrix}-1 & 1 & 0\\[4pt]0 & -1 & 1\end{bmatrix},\qquad
A^T=\begin{bmatrix}-1 & 0\\[4pt]1 & -1\\[4pt]0 & 1\end{bmatrix}, A = [ − 1 0 1 − 1 0 1 ] , A T = − 1 1 0 0 − 1 1 ,
与向量 x = ( x 1 , x 2 , x 3 ) T , y = ( y 1 , y 2 ) T x=(x_1,x_2,x_3)^T,\;y=(y_1,y_2)^T x = ( x 1 , x 2 , x 3 ) T , y = ( y 1 , y 2 ) T 。
计算左边 ( A x ) T y (Ax)^Ty ( A x ) T y :
A x = [ − 1 1 0 0 − 1 1 ] [ x 1 x 2 x 3 ] = [ x 2 − x 1 x 3 − x 2 ] , ( A x ) T y = [ x 2 − x 1 x 3 − x 2 ] [ y 1 y 2 ] = ( x 2 − x 1 ) y 1 + ( x 3 − x 2 ) y 2 = − x 1 y 1 + x 2 ( y 1 − y 2 ) + x 3 y 2 . \begin{aligned}
Ax &= \begin{bmatrix}-1 & 1 & 0\\[4pt]0 & -1 & 1\end{bmatrix}
\begin{bmatrix}x_1\\[4pt]x_2\\[4pt]x_3\end{bmatrix}
=\begin{bmatrix}x_2-x_1\\[4pt]x_3-x_2\end{bmatrix},\\[6pt]
(Ax)^Ty &= \begin{bmatrix}x_2-x_1 & x_3-x_2\end{bmatrix}
\begin{bmatrix}y_1\\[4pt]y_2\end{bmatrix}
=(x_2-x_1)y_1+(x_3-x_2)y_2\\[4pt]
&=-x_1y_1+x_2(y_1-y_2)+x_3y_2.
\end{aligned} A x ( A x ) T y = [ − 1 0 1 − 1 0 1 ] x 1 x 2 x 3 = [ x 2 − x 1 x 3 − x 2 ] , = [ x 2 − x 1 x 3 − x 2 ] [ y 1 y 2 ] = ( x 2 − x 1 ) y 1 + ( x 3 − x 2 ) y 2 = − x 1 y 1 + x 2 ( y 1 − y 2 ) + x 3 y 2 .
计算右边 x T ( A T y ) x^T(A^Ty) x T ( A T y ) :
A T y = [ − 1 0 1 − 1 0 1 ] [ y 1 y 2 ] = [ − y 1 y 1 − y 2 y 2 ] , x T ( A T y ) = [ x 1 x 2 x 3 ] [ − y 1 y 1 − y 2 y 2 ] = − x 1 y 1 + x 2 ( y 1 − y 2 ) + x 3 y 2 . \begin{aligned}
A^Ty &= \begin{bmatrix}-1 & 0\\[4pt]1 & -1\\[4pt]0 & 1\end{bmatrix}
\begin{bmatrix}y_1\\[4pt]y_2\end{bmatrix}
=\begin{bmatrix}-y_1\\[4pt]y_1-y_2\\[4pt]y_2\end{bmatrix},\\[6pt]
x^T(A^Ty) &= \begin{bmatrix}x_1 & x_2 & x_3\end{bmatrix}
\begin{bmatrix}-y_1\\[4pt]y_1-y_2\\[4pt]y_2\end{bmatrix}
=-x_1y_1+x_2(y_1-y_2)+x_3y_2.
\end{aligned} A T y x T ( A T y ) = − 1 1 0 0 − 1 1 [ y 1 y 2 ] = − y 1 y 1 − y 2 y 2 , = [ x 1 x 2 x 3 ] − y 1 y 1 − y 2 y 2 = − x 1 y 1 + x 2 ( y 1 − y 2 ) + x 3 y 2 .
左右两边化简后相同。
b . b. b . 对称矩阵
i . i. i . 基本概念
如果一个矩阵的转置等于它自己,那么它就是对称矩阵。我们通常用 S S S 来表示对称矩阵:
S T = S S^T=S S T = S
i i . ii. ii . 对称矩阵的分解特性
对于前面的 LDU 分解:
S = L D U , S = L\,D\,U, S = L D U ,
当矩阵 S S S 为对称矩阵时,有:
U = L T , U = L^T, U = L T ,
从而我们可以得到更为对称的分解形式:
S = L D L T S = L\,D\,L^T S = L D L T
为证明这个结论,我们对两边同时取转置:
S T = U T D T L T . S^T = U^T D^T L^T. S T = U T D T L T .
而 S T = S S^T=S S T = S 且 D T = D D^T=D D T = D ,于是
L D U = U T D L T . L D U = U^T D L^T. L D U = U T D L T .
通过比较两边的三角结构可以得到 U = L T U=L^T U = L T ,于是 S = L D L T S=L D L^T S = L D L T 。
这一分解特性是数值计算领域一个非常基本和强大的工具,它利用了矩阵的对称性来极大地提高计算和存储效率。
c . c. c . 置换矩阵
i . i. i . 基本概念
一个置换矩阵 P P P 是将单位矩阵 I I I 的行进行任意重新排序后得到的矩阵。置换矩阵有如下特征与性质:
每一行、每一列都有且仅有一个 “1”,其余元素全为 “0”。
任意两个置换矩阵的乘积,结果仍然是一个置换矩阵。
P − 1 = P T P^{-1}=P^T P − 1 = P T 。
对性质 3 的简单证明:记 P P P 的第 i i i 行为 r i r_i r i ,第 j j j 行为 r j r_j r j 。由于 P P P 是置换矩阵,每一行恰有一个 1 其余为 0,且不同的行上的 1 位置互不重合,因此有:
r i ⋅ r j = { 1 , i = j , 0 , i ≠ j . r_i\cdot r_j=\begin{cases}1,&i=j,\\[4pt]0,&i\ne j.\end{cases} r i ⋅ r j = { 1 , 0 , i = j , i = j .
而矩阵乘积 ( P P T ) i j = r i ⋅ r j (PP^T)_{ij}=r_i\cdot r_j ( P P T ) ij = r i ⋅ r j ,由上式可得 P P T = I PP^T=I P P T = I 。同理 P T P = I P^TP=I P T P = I 。因此 P − 1 = P T P^{-1}=P^T P − 1 = P T 。
i i . ii. ii . PA = LU 分解
我们之前的 A = L U A = LU A = LU 分解有一个前提:在消元过程中不需要进行行交换。但如果主元位置上出现一个 0,消元就无法进行下去,必须和下方某一行进行交换,才能得到一个非零的主元。解决这个问题只需要引入置换矩阵:
P A = L U PA = LU P A = LU
下面是一个具体的例子:
A = [ 0 1 1 1 2 1 2 7 9 ] . A=\begin{bmatrix}0 & 1 & 1\\[4pt]1 & 2 & 1\\[4pt]2 & 7 & 9\end{bmatrix}. A = 0 1 2 1 2 7 1 1 9 .
a 11 = 0 a_{11}=0 a 11 = 0 ,无法作为主元,于是用置换矩阵交换第1、2行:
P = [ 0 1 0 1 0 0 0 0 1 ] , P A = [ 1 2 1 0 1 1 2 7 9 ] . P=\begin{bmatrix}0&1&0\\[4pt]1&0&0\\[4pt]0&0&1\end{bmatrix},
\qquad PA=\begin{bmatrix}1&2&1\\[4pt]0&1&1\\[4pt]2&7&9\end{bmatrix}. P = 0 1 0 1 0 0 0 0 1 , P A = 1 0 2 2 1 7 1 1 9 .
对 P A PA P A 做标准高斯消元,可得到 L U LU LU 分解(无额外行交换):
L = [ 1 0 0 0 1 0 2 3 1 ] , U = [ 1 2 1 0 1 1 0 0 4 ] , L=\begin{bmatrix}1&0&0\\[4pt]0&1&0\\[4pt]2&3&1\end{bmatrix},\qquad
U=\begin{bmatrix}1&2&1\\[4pt]0&1&1\\[4pt]0&0&4\end{bmatrix}, L = 1 0 2 0 1 3 0 0 1 , U = 1 0 0 2 1 0 1 1 4 ,
且
P A = L U . PA=LU. P A = LU .