本笔记为Gilbert Strang Introduction to Linear Algebra (Fifth edition)要点整理,力求用符合直觉的方式对线代体系中精彩的推理进行复现。笔记的目的是复习,因此求精不求全,适合对线性代数已有经验的读者。
线性代数基础 Gilbert Strang
矩阵基础
行图像和列图像
A x = b Ax = b Ax=b的解集可以看做 A A A的行和 b b b的行确定的Hyperplane的交集,这是行图像。也可以看做 A A A的列的线性组合的系数,这是列图像。
行图像里 A A A的行是每个hyperplane的normal vector。想象 a T x = 0 a^Tx = 0 aTx=0。解集过原点,空间里的每个 x x x都和 a a a垂直。 a T x = b a^Tx = b aTx=b不过是前者平移后的图像,所以normal vector不变。之所以 x x x不再和 a a a直接垂直,是因为“和平面垂直”的考察对象不是 x x x,而是平面上任意两个 x 1 , x 2 x_1, x_2 x1,x2的连线(也就是 a T ( x 1 − x 2 ) = 0 a^T(x_1 - x_2) = 0 aT(x1−x2)=0)。这在 x x x是一维的时候就是个乘积拆成乘数的问题,但在高维度里需要把标量拆成两个向量的内积,相对没那么明显了。
行图像里解集是个点,列图像里解集是一套系数,几何上暂时看不出什么联系。
矩阵乘法:B提供行,A提供行系数;A提供列,B提供列系数
维度对齐,想怎么乘怎么乘。但个人认为以下两个式子最本质:
( A B ) i , . = Σ i = 1 i = q a i , k r k (AB)_{i, . } = \Sigma_{i = 1}^{i = q} a_{i, k}r_k (AB)i,.=Σi=1i=qai,krk
( A B ) . , j = Σ k = 1 k = q c k b k , j (AB)_{.,j } = \Sigma_{k = 1}^{k = q} c_kb_{k, j} (AB).,j=Σk=1k=qckbk,j
用人话说: A B AB AB的第 i i i行看啥?看A的第 i i i行给 B B B的行提供了怎样的线性组合。 A B AB AB第 j j j列看啥?看 B B B的第 j j j列给 A A A的列提供了怎样的线性组合系数。行看行,列看列这在理解Elementary matrix的作用时十分方便。
LU decomposition来自于组成Row Reduction行变换的初等矩阵
初等矩阵来自于高斯消元。因为要对 A A A做行变换,初等矩阵必须乘在 A A A的左边( E A EA EA里面 E E E贡献列, A A A贡献行)。
从目的上来说 E i j E_{ij} Eij是消去的作用是消去 A A A在 i , j i, j i,j位置上的元。 E i j A E_{ij}A EijA这个乘积的第 i i i行是由 A A A的第 j j j行乘上某个倍数,再加到 A A A的第 i i i行构成的;其他行不变。所以 E i , j E_{i,j} Ei,j的结构必然是Identity在 i , j i, j i,j位置上改个数,倍数就记录这个位置里面。
记 P P P为permutation matrix。为什么 P A = L U PA = LU PA=LU? 拿三阶距离。我们知道高斯消元能得到 E 32 E 31 E 21 P A = U E_{32}E_{31}E_{21}PA = U E32E31E21PA=U, 所以 P A = E 21 − 1 E 31 − 1 E 32 − 1 U PA = E_{21}^{-1}E_{31}^{-1}E_{32}^{-1}U PA=E21−1E31−1E32−1U。所有的初等矩阵都是从上往下减行,逆就是从上往下加行,再怎么加都只能在下半部分有值,所以是个L.
P
A
=
L
U
PA = LU
PA=LU的本质是高斯消元能消到上三角形矩阵。 注意,只能有上三角形是有保证的,不一定是对角。比如
A
=
[
1
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
]
A =\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \end{bmatrix}
A=⎣⎢⎢⎡1000010000000010⎦⎥⎥⎤
上三角形,但没法继续化成对角了。(要不然Diagonalizability这词也不会轮到Eigenvectors)
干净的L: L包含且仅包含行操作的系数
P A = L U PA = LU PA=LU中, L L L不仅是个下三角矩阵,还能从 L L L中直接读取所有在 P A PA PA上行操作的信息。具体而言, l i j l_{ij} lij记录了对第 i i i行的行操作力,要将几倍的第 j j j行从第 i i i行减去。
例如:对于
B = [ 1 1 0 0 1 2 1 0 0 1 2 1 0 0 1 2 ] = [ 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 ] × [ 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 ] B=\begin{bmatrix} 1 & 1 & 0 & 0 \\ 1 & 2 & 1 & 0 \\ 0 & 1 & 2 & 1 \\ 0 & 0 & 1 & 2 \end{bmatrix} =\begin{bmatrix} 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 1 & 1 \end{bmatrix} \times\begin{bmatrix} 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{bmatrix} B=⎣⎢⎢⎡1100121001210012⎦⎥⎥⎤=⎣⎢⎢⎡1100011000110001⎦⎥⎥⎤×⎣⎢⎢⎡1000110001100011⎦⎥⎥⎤
我们可以直接读出,为了对第二行进行行操作,我们需要把1倍的第一行从第二行减去。为了对第三行进行行操作,需要把1倍的第二行从第三行减去。为了对第四行进行行操作,需要把1倍的第三行从第四行减去。 L L L这个矩阵 包含且仅包含 了行操作的系数信息,显得十分干净。
这和直接把基础矩阵相乘的得到的结果形成鲜明对比。 L − 1 = [ 1 0 0 0 − 1 1 0 0 1 − 1 1 0 − 1 1 − 1 1 ] L^{-1} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ -1 & 1 & 0 & 0 \\ 1 & -1 & 1 & 0 \\ -1 & 1 & -1 & 1 \end{bmatrix} L−1=⎣⎢⎢⎡1−11−101−11001−10001⎦⎥⎥⎤
L − 1 A = U L^{-1} A = U L−1A=U告诉我们,为了对第四行进行行操作,需要把-1倍的第一行,1倍的第二行,-1倍的第三行加到1倍的第四行上。这当然是对的,但十分的反直觉!因为我们在做行操作时只考虑怎么用 整理好的第三行 消去第四行的元,而不会把整理第三行的过程再重复一遍。所以说 L L L更干净。
为什么
L
L
L能做到包含且仅包含行操作的系数?因为构成
L
L
L的变换都是“从后往前”。上面的例子里,要把
B
B
B行变换,需要从第二行减去第一行,然后第三行减去整理后的第二行,再从第四行减去整理后的第三行。对应的把
L
L
L拆成基础矩阵,可以得到
L
−
1
=
[
1
0
0
0
0
1
0
0
0
0
1
0
0
0
−
1
1
]
×
[
1
0
0
0
0
1
0
0
0
−
1
1
0
0
0
0
1
]
×
[
1
0
0
0
−
1
1
0
0
0
0
1
0
0
0
0
1
]
L^{-1} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 &0 & -1 & 1 \end{bmatrix} \times \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ 0 &0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} 1 & 0 & 0 & 0 \\ -1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 &0 & 0 & 1 \end{bmatrix}
L−1=⎣⎢⎢⎡10000100001−10001⎦⎥⎥⎤×⎣⎢⎢⎡100001−1000100001⎦⎥⎥⎤×⎣⎢⎢⎡1−100010000100001⎦⎥⎥⎤,于是
L
=
[
1
0
0
0
1
1
0
0
0
0
1
0
0
0
0
1
]
×
[
1
0
0
0
0
1
0
0
0
1
1
0
0
0
0
1
]
×
[
1
0
0
0
0
1
0
0
0
0
1
0
0
0
1
1
]
L = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 &0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 0 &0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 &0 & 1 & 1 \end{bmatrix}
L=⎣⎢⎢⎡1100010000100001⎦⎥⎥⎤×⎣⎢⎢⎡1000011000100001⎦⎥⎥⎤×⎣⎢⎢⎡1000010000110001⎦⎥⎥⎤
每一个基础矩阵涉及的变换都是“这一行等于未经处理的前几行乘上某个倍数加到这一行”,即“已经被操作过得行不会再用于未来的操作”。这给人的启示是:有些从前往后做会很messy的操作,如果调转顺序,可能会很干净。
对称矩阵 S S S的对称性在 L D L − 1 LDL^{-1} LDL−1中得以保留
把 U U U的行首元都变成1,把系数提取到对角矩阵里,可以让 P A = L U PA = LU PA=LU变成 P A = L D U PA = LDU PA=LDU。
如果 S S S是对称的,那 S = L D U = U T D L T S = LDU = U^TDL^T S=LDU=UTDLT,容易猜想 L T = U L^T = U LT=U,即 S S S的对称性在 L D U LDU LDU分解中会得到保留。
Permuatation Matrix: P − 1 = P T P^{-1} = P^T P−1=PT
每行每列都只有一个1的叫Permutation Matrix,排序矩阵。排序矩阵的逆就是排序矩阵的转置,这个试两个就知道了。证明比较机械。
线性空间
一个矩阵的四个空间,各自的Basis和维度
记 A A A为 m × n m\times n m×n行,rank为 r r r。RREF后的结果为 R R R。
1. Row Space 行空间的基底就是 R R R里有1开头的行
行空间的Basis不会随着RREF改变,其基底可以直接读取。Row rank就是维度。
2. Null Space 的基底是 B a s i s M a t r i x BasisMatrix BasisMatrix的列,可以由Block Multiplicaiton猜出构造
Null Space的Basis可以从以下矩阵的列中直接读取 B a s i s M a t r i x = [ − F r × ( n − r ) I ( n − r ) × ( n − r ) ] Basis Matrix = \begin{bmatrix} -F_{r\times (n-r) } \\ I_{(n - r) \times (n - r)} \end{bmatrix} BasisMatrix=[−Fr×(n−r)I(n−r)×(n−r)]
构造思路如下:
R
R
R的形式一定为(
0
0
0矩阵和
F
F
F矩阵均不一定存在):
R
=
[
I
F
0
0
]
R = \begin{bmatrix} I & F \\ 0 & 0 \end{bmatrix}
R=[I0F0]
其中 F F F有 ( n − r ) + (n - r)^{+} (n−r)+列(如果 r ≥ n r \geq n r≥n那 F F F就不存在),于是有 ( n − r ) + (n - r)^{+} (n−r)+个自由元,即null space有这么多维度。如果把所有null space的basis做成列,排列成矩阵(称作 B a s i s M a t r i x BasisMatrix BasisMatrix),那一定有 R × B a s i s M a t r i x = 0 n × ( n − r ) R \times BasisMatrix = 0_{n \times (n-r)} R×BasisMatrix=0n×(n−r)
尝试构造 B a s i s M a t r i x BasisMatrix BasisMatrix即可。构造时注意用Block Multiplication匹配维度,就可以把成分猜出来。
验证:
- 矩阵乘法可以验证 A × B a s i s M a t r i x = Z e r o M a t r i x A \times BasisMatrix = ZeroMatrix A×BasisMatrix=ZeroMatrix,即列在Null space中.
- 下方的 I ( n − r ) × ( n − r ) I_{(n - r) \times (n - r)} I(n−r)×(n−r)确保了列一定是线性独立的。
所以Null Space的基底就是 B a s i s M a t r i x BasisMatrix BasisMatrix的列,维度为 m a x ( n − r , 0 ) max(n - r, 0) max(n−r,0)。
3. Column Space 的基底是 R R R中的pivot columns在 A A A中对应的列
这可能是线性代数里最能把行空间和列空间联系起来的定理。 A A A列空间的基底怎么找?把 A A A矩阵RREF,结果记为 R R R, R R R哪些列开头有1, A A A的哪些列就是 C o l ( A ) Col(A) Col(A)的基底。
证明的核心是RREF不改变Null Space,而Null Space里的向量又可以视为列线性组合的系数。具体如下:
记前 r r r列在RREF后有leading 1,形式如 [ I F 0 0 ] \begin{bmatrix} I & F \\ 0 & 0 \end{bmatrix} [I0F0]( 0 0 0和 F F F均可以不存在)
要证明两点:
-
A A A的前 r r r列线性独立。假如线性不独立,那存在 x x x(前 r r r项不都为0,后 n − r n - r n−r项全都为0)使得 A A A的前 r r r列的线性组合为0. 因为 A A A的null space和 R R R的null space相同,而 x x x在 A A A的null space中,那 x x x也一定在 R R R的null space中。可是 R R R的前 r r r列的前 r r r行是单位矩阵,怎么都不可能靠着非0的线性组合系数加成0,所以 x x x不可能在 R R R的null space中。这一部分得证。
-
A A A的前 r r r列加上任何一列之后,都不再线性独立。假设依然线性独立。抓出 R R R里的对应列来考察。 A A A的相关列经过RREF可以得到 R R R的相关列,于是 A A A的相关列组成的矩阵和 R R R的对应列组成的矩阵null space相同。 R R R的形式告诉我们这些相关列必然不线性独立,即Null Space 维度大于等于1,于是 A A A的相关列也不线性独立。
因此列空间的基底是 R R R中pivot columns对应的 A A A的列。
这一小节换句话说就是 行操作可能改变列空间本身,但不会改变列空间的线性关系(即行操作以后,该共线的向量还是共线,不共线的不会跑到一条直线上) 。几何上怎么理解呢? 想象一个2 x 5的矩阵,它记录了5条2维的向量。把第一行加到第二行的操作相当于是让y变成了y+x,即让每一个点的y值向上平移了其x坐标的距离。这种操作相当于把一条线加到另一条线上,当然会保留向量的线性关系!只是因为平时看到的线性操作大多是平移“固定距离”,而非平移“线性变化”的距离,所以才显得陌生。
4. Left Null Space的基底是 E A = R EA = R EA=R中 E E E的后 m − r m - r m−r行
Left null space = { x ∣ A T x = 0 } = { x ∣ x T A = 0 1 × n } \{x|A^Tx = 0\} = \{x|x^TA = 0_{1 \times n} \} {x∣ATx=0}={x∣xTA=01×n}。
由Dimension theorem(Dimension Theorem可以由RREF不改变行、列空间维度结合 R R R的形式证明,不会有循环逻辑)可知Left Null的维度一定是 m − r m - r m−r。哪里能找到 m − r m - r m−r个相互独立的0解呢?注意到
E A = R = [ I F 0 0 ] EA = R = \begin{bmatrix} I & F \\ 0 & 0 \end{bmatrix} EA=R=[I0F0]
E E E的最后 m − r m - r m−r行显然都是0解。 E E E又是个基础矩阵,各行各列都线性独立。所以基底就出来了。
Dimension Theorem: Destinations under A are either 0 or range(A).
For A m × n A_{m \times n} Am×n, D i m ( N u l l ( A ) ) + D i m ( R a n g e ( A ) ) = n Dim(Null(A)) + Dim(Range(A)) = n Dim(Null(A))+Dim(Range(A))=n
两种理解方法:
- A A A作为一个线性映射,输入是个 n n n维的空间,输出是个 r r r维的空间,剩下的几个维度都被映射到0上了,所以Null Space维度为 n − r n - r n−r。这是个直觉理解,不是证明。
-
A
A
A作为一个矩阵,RREF后可以表示成(以下的
0
0
0和
F
F
F均可以不存在)
[
I
F
0
0
]
\begin{bmatrix} I & F \\ 0 & 0 \end{bmatrix}
[I0F0]
Range(A)就是 A A A的Column Space, 前一小节刚说过行操作不改变列空间的维度(可能改变列空间本身,但不会改变维度)。所以 I I I的列数就是 C o l ( A ) Col(A) Col(A)的维度。 F F F的列数是自由元的数量,也就是Null Space的维度。所以 n = D i m ( R a n g e ( A ) ) + D i m ( N u l l ( A ) ) n = Dim(Range(A)) + Dim(Null(A)) n=Dim(Range(A))+Dim(Null(A)). 这是个证明。
解的个数:用 R R R的形式推断更方便
解的个数不太好记。按照 R R R的形式推断就可以。
一个线性系统行操作完毕可能有以下形式(适当的时候换列,本质是重命名未知数):
-
Underdetermined system:0 or infinitely many
即行数小于列数。可能形式为
[ I F 0 0 ] 、 [ I F ] \begin{bmatrix} I & F \\ 0 & 0 \end{bmatrix} 、\begin{bmatrix} I & F \\ \end{bmatrix} [I0F0]、[IF]
这两种形式里均有 n − r n - r n−r个free columns,于是null space dimension均为 n − r n - r n−r.
前一种形式里可能有0个(0的row在 b b b里不为0)或无穷个解。
后一种形式是full-row-rank, Columns space 包含了一个 I r × r I_{r \times r} Ir×r,覆盖了 R r \mathbb{R^r} Rr, 所以一定有特殊解,加上Null space任何一个 b b b都有无穷个解。 -
Exactly-determined system: 0 or 1
可能的情况有
[ I ] 、 [ I F 0 0 ] \begin{bmatrix} I \end{bmatrix} 、\begin{bmatrix} I & F \\ 0 & 0 \end{bmatrix} [I]、[I0F0]
前一种既是full-column-rank也是full-row-rank,invertible,情况简单。
后一种不是full-rank,null-space维度为 n − r n - r n−r, 0个或无穷多个解。 -
Overdetermined system: 0 or 1
可能的情况有
[ I 0 ] \begin{bmatrix} I \\ 0 \end{bmatrix} [I0]
Full-column rank,null-space dimension为0,一个解或者没有解。
子空间正交
子空间的正交关系、Normal Equation的正交理解、正交化的妙处
行空间和Null Space正交;列空间和Left Null正交。由于这两对维度相加分别等于总空间的维度,所以行空间是Null Space的Orthogonal Complement,列空间是Left Null Space的Orthogonal Complement. 这是Dimension Theorem的另一种理解方法。
投影到向量上的投影矩阵有个好记的方法:外积/内积,例如 b b b在 a a a上的投影就是 a a T a T a b \frac{aa^T}{a^Ta}b aTaaaTb. 矩阵类似,最常见于线性回归。
线性回归中的Normal equation除了通过最优化,也可以通过空间正交关系得到。线性回归即是把 y y y投影到 A A A的列空间上。记投影的“系数”为 x ^ \hat{x} x^,即投影的结果为 A x ^ A\hat{x} Ax^(如果 A A A是一列,系数就是倍数;如果 A A A是一个矩阵, x ^ \hat{x} x^就是其列的线性组合的系数)。投影的剩余 y − A x ^ y - A\hat{x} y−Ax^一定和 A A A的列空间垂直,所以 y − A x ^ y-A\hat{x} y−Ax^一定在 A A A的Left Null Space里,即 A T ( b − A x ^ ) = 0 A^T(b - A\hat{x}) = 0 AT(b−Ax^)=0,由此可得Normal Equation。
A T A A^TA ATA的形式一般来说比较复杂。但如果 A A A的列两两正交,那 A T A A^TA ATA就是个对角矩阵,结果会好处理很多。
Orthogonal Matrix和 Q T Q = I Q^TQ=I QTQ=I的几何意义:不改变长度,也不改变角度
如果一个矩阵的列能构成这个空间的Orthonormal Basis,这个矩阵就叫Orthogonal Matrix(其实应该叫Orthonormal Matrix,但约定俗成)。等价的定义是 Q T Q = I Q^TQ=I QTQ=I. 这个式子说明列的模长是1,且任意两列都垂直,和配合维度,即能说明列是Orthonormal Basis。
Q T Q = I Q^TQ=I QTQ=I还有一个向量层面的直观意义。考虑任意两个向量 u u u, v v v,对他们都施加 Q Q Q变换。变换前的内积是 u T v u^Tv uTv,变换后的内积是 u T Q T Q v u^TQ^TQv uTQTQv。 Q T Q = I Q^TQ=I QTQ=I的第一层几何意义是 Q Q Q不改变内积。取 u = v u = v u=v,可以发现 Q Q Q变换不改变模长,这是第二层意思。加在一起, Q T Q = I Q^TQ = I QTQ=I意味着 Q Q Q变换既不改变模长,也不改变夹角,也就我们说的rigid motions。
什么样的操作既不改变模长也不改变夹角?
- 旋转。
- 排序。也就是换轴。
- 过原点的对称。包括中心对称和对称轴过原点的轴堆成。
诸如平移、其他对称其实也有相同属性,本质上和以上三类是一样的。只是矩阵的定义方式要求变换一定是线性的,但平移、其他对称不保留原点,就没法用矩阵乘法表达。
Gram-Schmit 和 A = QR的直观理解: a k a_k ak只在 { q 1 , . . . , q k } \{q_1,...,q_k\} {q1,...,qk}上可能有非零投影
Gram-Schmit的目的是让一组向量正交化且标准化。第一个方向来自于第一个向量,其后每个方向都来自于从原向量中刨掉已搭建方向的投影。
Gram-Schmit还能很方便地推出 A = Q R A = QR A=QR分解(如果 A A A的列线性独立且 A A A满秩, Q Q Q为orthogonal;不然 Q Q Q会有0列,但其他依然orthonogal, R R R为上三角),且推导不依赖于算法运行的具体结果。只需要知道两点:把 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1,a2,...,an记作原始向量, q 1 , q 2 , . . . , q n q_1, q_2,...,q_n q1,q2,...,qn记作算法运行后的orthonormal向量(严格地讲可能包含0),那么
- 不管 { a k } \{a_k\} {ak}长什么样,投影总是行的,所以 { q k } \{q_k\} {qk}一定出得来。最多里面有些0.
- 在构造 q 1 , q 2 q_1, q_2 q1,q2的时候只用到了 a 1 , a 2 a_1, a_2 a1,a2,那反推 a 1 , a 2 a_1, a_2 a1,a2,应该也只需要用到 q 1 , q 2 q_1, q_2 q1,q2.这一点已经保证了 R R R是个上三角矩阵,因为它记录了每个 q k q_k qk的系数。
至于
R
R
R里面具体是什么,直接从定义考察就行。
q
k
q_k
qk非0的俩俩垂直且都是单位向量,且
{
q
k
}
\{q_k\}
{qk}的空间和
{
a
k
}
\{a_k\}
{ak}的空间完全一致,于是
{
q
k
}
\{q_k\}
{qk}相当于这个空间的一个笛卡尔坐标系。每一个原始的
a
k
a_k
ak都相当于在各个
q
k
q_k
qk方向上的投影之和。于是有
a
3
=
q
1
q
1
T
a
3
+
q
2
q
2
T
a
3
+
q
3
q
3
T
a
3
a_3 = q_1q_1^Ta_3 + q_2q_2^Ta_3 + q_3q_3^Ta_3
a3=q1q1Ta3+q2q2Ta3+q3q3Ta3
调整成
q
k
q_k
qk的系数的格式,就有
[
a
1
a
2
a
3
]
=
[
q
1
q
2
q
3
]
[
a
1
T
q
1
a
2
T
q
1
a
3
T
q
1
0
a
2
T
q
2
a
3
T
q
2
0
0
a
3
T
q
3
]
\begin{bmatrix}a_1 & a_2 & a_3 \end{bmatrix} = \begin{bmatrix}q_1 & q_2 & q_3 \end{bmatrix} \begin{bmatrix}a_1^Tq_1 & a_2^Tq_1 & a_3^Tq_1 \\ 0 & a_2^Tq_2 & a_3^Tq_2 \\ 0 & 0 & a_3^Tq_3 \end{bmatrix}
[a1a2a3]=[q1q2q3]⎣⎡a1Tq100a2Tq1a2Tq20a3Tq1a3Tq2a3Tq3⎦⎤
行列式
通过性质定义行列式:起点是按行线性、换行为负和Identity
行列式有若干种定义方法。可以直接用Permutation+符号定义,这种最方便计算但也最难懂;可以定义完1x1,2x2的再用按行/列展开的递归定义;Strang给的定义是直接用行列式性质,这种方法点出了行列式最重要的性质。
起点是三条:
- 规定Identity的行列式为1.
- 规定行列式在每行的变换里线性。即比如有矩阵 A A A和 A 0 A_0 A0, A 0 A_0 A0仅在某一行有值,其他行为0。 记 A ′ A' A′为 A A A的对应行用 A 0 A_0 A0替代掉,那 ∣ A + k A 0 ∣ = ∣ A ∣ + k ∣ A ′ ∣ |A + kA_{0}| = |A| + k|A'| ∣A+kA0∣=∣A∣+k∣A′∣。注意这要求 A 0 A_{0} A0仅在某一行有值,一般来讲这个式子不成立。
- 规定互换两行后,行列式变号。
由这三条能推出行列式其他性质。比如,
- 两行相同则行列式为0。 可以由换行,变号却依旧相等得到。
- 某一行乘上一个系数,行列式也会乘上那个系数。由线性可得。
- 行操作不改变行列式的值。把用线性把行变化拆成原行列式和新加上去的行列式并拆出来系数,新加上去的里面有两行一模一样,为0.
- 某一行如果都为0,则行列式为0。这其实用该行展开最直接。用当前的定义可以用行操作构造出一个为0的行列式。
- 三角矩阵的行列式等于对角线相乘。行操作把非对角的都化成0(如果对角线上有0,由于那一行的其他非0值能被化成0,行列式也为0.)
- 这还有个小推论。单看前 k k k行 k k k列,小矩阵的行列式只取决于这个小矩阵的主元,和其他行其他列无关。直觉理解同样出自行操作。
- 行列式不为0是矩阵可逆的充分必要条件。可逆就是说行操作以后主元都不为0,即对角线上没有0,即行列式不为0.
- ∣ A B ∣ = ∣ A ∣ ∣ B ∣ |AB| = |A||B| ∣AB∣=∣A∣∣B∣。这条相对复杂些。尝试证明 f ( A ) = ∣ A B ∣ ∣ B ∣ f(A) = \frac{|AB|}{|B|} f(A)=∣B∣∣AB∣这个操作即是行列式。Identity很好证。在单行线性和换行为负可以对分子运用行列式定义。三条性质成立说明 f f f就是行列式,而行列式唯一(用计算定义想最简单)。
- ∣ A ∣ = ∣ A T ∣ |A| = |A^T| ∣A∣=∣AT∣。由高斯消元可以得到 P A = L U PA = LU PA=LU,又由于 P P P是保型变换, P P T = I PP^T=I PPT=I。对转置取行列式可以得到这条结论。
从性质到其他定义:用单行线性推出Permutation的大公式;把大公式按行整理得到展开式
用单行线性先拆第一行,再拆第二行,一行一行拆下去就是Permutation大公式。拆到每行只有一个数时可以把数提出来,Permutation的符号就出来了。
这种拆解的精髓应该是在逆运算: 怎么把行列式加成一个?Q! 暂未领悟。
另外展开式的推导方式也只知其表。从使用角度上记熟就行。