线代笔记Part 2 (Lecture 3 & 4 & 5上半)
来自MIT OpenCourseWare由Gilbert Strang主讲的Linear Algebra讲座。视频地址在此。
该笔记主要用于帮助对线代知识体系的复习。其中添加了我个人的一些感悟。
Lecture 3
这一讲详细阐述了求矩阵乘法的各种方法,以及计算逆矩阵(若存在)的方法。
设矩阵
A
A
A的形状为
m
×
n
m\times n
m×n,矩阵
B
B
B的形状为
n
×
p
n\times p
n×p,那么我们可以计算
A
B
=
C
AB=C
AB=C
其中
C
C
C的形状为
m
×
p
m\times p
m×p。
计算这个矩阵 C C C有4种方法:
- 对矩阵
C
C
C中任意一个元素,记第
i
i
i行第
j
j
j列的元素为
c
i
j
c_{ij}
cij,则
c i j = ∑ k = 1 n a i k b k j c_{ij}=\sum_{k=1}^{n}a_{ik}b_{kj} cij=k=1∑naikbkj - 记矩阵
C
C
C中各列向量为
c
⋅
j
,
j
∈
{
1
,
…
,
p
}
c_{\cdot j}, j\in\{1,\dots,p\}
c⋅j,j∈{1,…,p},矩阵
B
B
B中的各列向量则为
b
⋅
j
b_{\cdot j}
b⋅j,那么
C = [ c ⋅ 1 ⋯ c ⋅ p ] = [ A b ⋅ 1 ⋯ A b ⋅ p ] C=\begin{bmatrix} c_{\cdot 1}&\cdots&c_{\cdot p} \end{bmatrix} =\begin{bmatrix} Ab_{\cdot 1}&\cdots&Ab_{\cdot p} \end{bmatrix} C=[c⋅1⋯c⋅p]=[Ab⋅1⋯Ab⋅p] - 记矩阵
C
C
C中各行向量为
c
i
⋅
,
i
∈
{
1
,
…
,
m
}
c_{i\cdot }, i\in\{1,\dots,m\}
ci⋅,i∈{1,…,m},矩阵
A
A
A中的各行向量为
a
i
⋅
a_{i\cdot}
ai⋅,那么
C = [ c 1 ⋅ ⋮ c m ⋅ ] = [ a 1 ⋅ B ⋮ a m ⋅ B ] C=\begin{bmatrix} c_{1\cdot } \\ \vdots \\ c_{m\cdot } \end{bmatrix} =\begin{bmatrix} a_{1\cdot}B \\ \vdots \\ a_{m\cdot}B \end{bmatrix} C=⎣ ⎡c1⋅⋮cm⋅⎦ ⎤=⎣ ⎡a1⋅B⋮am⋅B⎦ ⎤ - 记矩阵
A
A
A的各列向量为
a
⋅
k
a_{\cdot k}
a⋅k,矩阵
B
B
B的各行向量为
b
k
⋅
b_{k\cdot}
bk⋅,则
C = ∑ k = 1 n a ⋅ k b k ⋅ C=\sum_{k=1}^{n}a_{\cdot k}b_{k\cdot} C=k=1∑na⋅kbk⋅
在我看来,我们可以用一种更直观的方式来理解以上运算过程。假设矩阵
A
A
A是
3
×
2
3\times 2
3×2,矩阵
B
B
B是
2
×
2
2\times 2
2×2,那么我们可以把
A
A
A的行与列依次放在x轴和y轴上,
B
B
B的行与列依次在y轴和z轴上,于是我们很容易发现
C
C
C的行与列上的向量长度正好各自符合x轴和z轴上的向量长度:
放到三维直角坐标系来看就是:
我们可以理解为,矩阵乘法就是在三维直角坐标系下把来自xOy平面和yOz平面的两个矩阵先是各自在同一y坐标下做笛卡尔积(Cartesian product),获得
3
×
2
×
2
=
12
3\times 2\times 2=12
3×2×2=12个值;然后依y轴进行求和,最后把求和的结果投射到xOz平面上。将这个过程以不同次序来实现,就能得到以上所讲授的4种计算方法。
类似地,我们也可以凭此来理解block matrices的计算。
一个 m × m m\times m m×m的方阵 A A A可能有逆矩阵,也可能没有。如果存在一个不是零向量的向量 x x x,使得 A x = 0 Ax=0 Ax=0,那么 A A A必然没有逆矩阵——如果并非如此,那么两边同乘 A A A的“逆矩阵”之后,会得出 x = 0 x=0 x=0这样一个与前提矛盾的结论。
给定方阵
A
A
A,且我们确定
A
A
A存在逆矩阵,即存在
A
−
1
A^{-1}
A−1使得
A
−
1
A
=
I
=
A
A
−
1
A^{-1}A=I=AA^{-1}
A−1A=I=AA−1
那么如何计算
A
−
1
A^{-1}
A−1呢?通用的方法就是建立增广矩阵
[
A
∣
I
]
\begin{bmatrix} A \mid I \end{bmatrix}
[A∣I],通过Gauss-Jordan法,我们通过一系列行变换使得
E
[
A
∣
I
]
=
[
I
∣
E
]
E\begin{bmatrix} A \mid I \end{bmatrix}= \begin{bmatrix} I \mid E \end{bmatrix}
E[A∣I]=[I∣E]
其中矩阵
E
E
E就代表了我们对上述增广矩阵进行的行变换操作,而且正好
E
=
A
−
1
E=A^{-1}
E=A−1。如果放到三维直角坐标系下来观测的话那么正好就是以下图示:
这也就是说,通过构建增广矩阵,我们把代表行变换操作的矩阵从xOy平面投射到了xOz平面,这一投射是通过在yOz平面上沿z轴叠加单位矩阵来实现的。
Lecture 4
假如我们知道矩阵
A
A
A和
B
B
B都是方阵,而且都是可逆的,分别记为
A
−
1
A^{-1}
A−1和
B
−
1
B^{-1}
B−1,那么我们就有
A
B
B
−
1
A
−
1
=
I
B
−
1
A
−
1
A
B
=
I
\begin{align} ABB^{-1}A^{-1}&=I \\ B^{-1}A^{-1}AB&=I \end{align}
ABB−1A−1B−1A−1AB=I=I
那么
A
B
AB
AB的转置,即
(
A
B
)
T
(AB)^{T}
(AB)T,该如何表示呢?在STRANG G. Linear Algebra and Its Applications[M]. Edition 4. Brooks Cole, 2006.一书的第56页中我们可以知道,
(
A
B
)
T
(AB)^{T}
(AB)T的第一行正好对应
A
B
AB
AB的第一列,即以
B
B
B的第一列为系数对
A
A
A按列求和;这也就意味着
(
A
B
)
T
(AB)^{T}
(AB)T的第一行是以
B
T
B^{T}
BT的第一行为系数对
A
T
A^{T}
AT按行求和。以此类推我们就能知道
(
A
B
)
T
=
B
T
A
T
(AB)^{T}=B^{T}A^{T}
(AB)T=BTAT
所以我们就有
A
A
−
1
=
I
=
(
A
−
1
)
T
A
T
AA^{-1}=I=(A^{-1})^{T}A^{T}
AA−1=I=(A−1)TAT
因此我们能进一步得知
(
A
T
)
−
1
=
(
A
−
1
)
T
(A^{T})^{-1}=(A^{-1})^{T}
(AT)−1=(A−1)T
接下来介绍矩阵的三角分解(triangular factorization)。这一分解和消去法有很强的关联。比如,我们可以写出这样的等式:
E
21
A
=
[
1
0
−
4
1
]
[
2
1
8
7
]
=
[
2
1
0
3
]
=
U
E_{21}A= \begin{bmatrix} 1 & 0 \\ -4& 1 \end{bmatrix} \begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix}= \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix} =U
E21A=[1−401][2817]=[2013]=U
若我们把上式改写成
A
=
L
U
A=LU
A=LU的形式,那么我们有
[
2
1
8
7
]
=
[
1
0
4
1
]
[
2
1
0
3
]
\begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix}= \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix}
[2817]=[1401][2013]
进一步地,改写为
A
=
L
D
U
A=LDU
A=LDU形式的话就有
[
2
1
8
7
]
=
[
1
0
4
1
]
[
2
0
0
3
]
[
1
1
2
0
1
]
\begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix}= \begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix} \begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix} \begin{bmatrix} 1 & \frac{1}{2} \\ 0 & 1 \end{bmatrix}
[2817]=[1401][2003][10211]
相比较
E
A
=
U
EA=U
EA=U中的
E
E
E,
A
=
L
U
A=LU
A=LU中的
L
L
L有更好的性质:在没有行交换的情况下,
L
L
L下三角部分的每一个元素都精确表示了从
A
A
A变换到
U
U
U的乘数。
设 A A A是 n × n n\times n n×n的一个矩阵,那么 A = L U A=LU A=LU这一分解的时间复杂度就为 O ( n 3 ) O(n^3) O(n3)。
假如从
A
A
A到
U
U
U的变换过程包含了行交换呢?那么这里就需要置换矩阵(permutation matrix)。比如对于
3
×
3
3\times 3
3×3的矩阵,其所施加的全部可能置换为
[
1
0
0
0
1
0
0
0
1
]
[
0
1
0
1
0
0
0
0
1
]
[
0
0
1
0
1
0
1
0
0
]
[
1
0
0
0
0
1
0
1
0
]
[
0
1
0
0
0
1
1
0
0
]
[
0
0
1
1
0
0
0
1
0
]
\begin{align} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix} \\ \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix} \end{align}
⎣
⎡100010001⎦
⎤⎣
⎡010100001⎦
⎤⎣
⎡001010100⎦
⎤⎣
⎡100001010⎦
⎤⎣
⎡001100010⎦
⎤⎣
⎡010001100⎦
⎤
对于置换矩阵
P
P
P,我们显然有
P
−
1
=
P
T
P^{-1}=P^{T}
P−1=PT
道理是很简单的。设
e
∈
R
n
,
∥
e
∥
0
=
∥
e
∥
1
=
1
e\in\mathbf{R}^{n},\|e\|_{0}=\|e\|_{1}=1
e∈Rn,∥e∥0=∥e∥1=1,且对于
∀
i
∈
{
1
,
…
,
n
}
\forall i\in\{1,\dots,n\}
∀i∈{1,…,n},记
e
i
e_{i}
ei为第
i
i
i个元素为
1
1
1、其余元素皆为
0
0
0的向量。那么我们可以把
P
P
P的每一列都看成是一个
e
i
e_{i}
ei向量。显然,如果
P
P
P的大小为
n
×
n
n\times n
n×n,那么
P
P
P的全部可能数量为
n
!
n!
n!,正好是
n
n
n个
e
i
e_{i}
ei的排列数。假如我们把
e
i
e_{i}
ei的排列打乱,由此形成的新排列以
e
q
1
,
e
q
2
,
…
,
e
q
n
e_{q1},e_{q2},\dots,e_{qn}
eq1,eq2,…,eqn编号,那么对由此组成的新的置换矩阵
P
=
[
e
q
1
⋯
e
q
n
]
P=\begin{bmatrix} e_{q1} &\cdots & e_{qn} \end{bmatrix}
P=[eq1⋯eqn]
考虑到
e
q
i
e
q
i
T
=
Λ
q
i
e_{qi}e_{qi}^{T}=\Lambda_{qi}
eqieqiT=Λqi
其中
Λ
q
i
\Lambda_{qi}
Λqi是一个对角矩阵,其对角线上的第
q
i
qi
qi个元素为1,而其余元素皆为0。
于是,我们必然有
P
P
T
=
[
e
q
1
⋯
e
q
n
]
[
e
q
1
T
⋮
e
q
n
T
]
=
I
PP^{T}= \begin{bmatrix} e_{q1} &\cdots & e_{qn} \end{bmatrix} \begin{bmatrix} e_{q1}^{T} \\ \vdots \\ e_{qn}^{T} \end{bmatrix} =I
PPT=[eq1⋯eqn]⎣
⎡eq1T⋮eqnT⎦
⎤=I
回忆一下计算矩阵乘法的第4种方法。
因为上式的 P P P是任意的,所以 P T = P − 1 P^{T}=P^{-1} PT=P−1得证。
Lecture 5(上半)
考虑到我们需要行变换操作以确保pivot不为零,那么三角分解的公式就应该写为
P
A
=
L
U
PA=LU
PA=LU
其中
A
A
A是待分解的矩阵,
P
P
P为置换矩阵,
L
L
L为下三角矩阵,
U
U
U为上三角矩阵。
对于置换矩阵 P P P,我们已经知道 P P T = I PP^T=I PPT=I。那么对于一个任意的矩阵和它的置换,两者之间有何关系呢?
给定矩阵
A
∈
R
m
×
n
A\in\mathbf{R}^{m\times n}
A∈Rm×n,我们显然有
A
T
∈
R
n
×
m
A^{T}\in\mathbf{R}^{n\times m}
AT∈Rn×m。假如我们记
(
A
)
i
,
j
(A)_{i,j}
(A)i,j为矩阵
A
A
A中第
i
i
i行第
j
j
j列的元素,那么我们必然有:
(
A
T
)
i
,
j
=
(
A
)
j
,
i
(A^T)_{i,j}=(A)_{j,i}
(AT)i,j=(A)j,i
进一步地,我们还能发现
(
A
T
A
)
T
=
A
T
(
A
T
)
T
=
A
T
A
(A^TA)^T=A^T(A^T)^T=A^TA
(ATA)T=AT(AT)T=ATA,即
A
T
A
A^TA
ATA是一个对称矩阵。(如果矩阵
M
M
M是一个对称矩阵,那么我们必然有
M
T
=
M
M^T=M
MT=M)
接下来要讲解的是关于向量空间(Vector Space)的内容。