Last updated on November 20, 2023 10:38 PM
定义及运算法则
按照某种特征,将矩阵的行和列分成若干组,分割为若干子阵。可以理解为,分块矩阵的元素是小矩阵。
加法(需要分块完全一致)和数乘的规则是显然的。
转置需要把每个子矩阵也转置,例如
[ACBD]T=[ATBTCTDT]
做乘法的唯一前提:左阵列分组与右阵行分组一致,例如
[ADBECF]⎣⎢⎡XYZ⎦⎥⎤=[AX+BY+CZDX+EY+FZ]
左乘和右乘不能搞反。
小应用:考虑 rref(A)=[ImB],则 AX=0 的解空间为 [−BIn−m] 的列空间。为何?
[ImB][−BIn−m]=−ImB+BIn−m=0
举个例子:对于
rref(A)=⎣⎢⎢⎢⎡10000100−1200001034−50⎦⎥⎥⎥⎤
则
N(A)=C⎝⎜⎜⎜⎜⎜⎛⎣⎢⎢⎢⎢⎢⎡1−2100−3−4051⎦⎥⎥⎥⎥⎥⎤⎠⎟⎟⎟⎟⎟⎞
分组不必连续但必须一致。
自由变量对应的行的部分写单位矩阵
和之前提到过的写解空间基底的感觉很像。所以之后解方程的时候就可以直接写解空间了。
再看一个例子(满秩分解)
⎣⎢⎢⎢⎢⎢⎡24313−1−1−2115981523−248−14146⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡24313−1−1−21123−248⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡112−1135−1⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡24313⎦⎥⎥⎥⎥⎥⎤[10203]+⎣⎢⎢⎢⎢⎢⎡−1−1−211⎦⎥⎥⎥⎥⎥⎤[01−105]+⎣⎢⎢⎢⎢⎢⎡23−248⎦⎥⎥⎥⎥⎥⎤[0001−1]
应用:JPEG 图像压缩
为了方便,这里只考虑 8-bits 的灰度图像。
首先,将整个图像拆分为若干 8×8 的子阵考虑(选择这个大小是出于某种对压缩速度和图像质量的平衡)。
第一步是余弦变换。将值域变换到频域上,即用另一个基底来表示原来的矩阵。余弦变换矩阵为
C=21⎣⎢⎢⎢⎢⎢⎢⎢⎡212121⋮21cos16πcos163πcos165π⋮cos1615πcos162πcos166πcos1610π⋮cos1630π⋯⋯⋯⋯cos167πcos167×3πcos167×5π⋮cos167×15π⎦⎥⎥⎥⎥⎥⎥⎥⎤
列向量由低频向高频排列,{αiαjT} 构成线性空间 M8×8(R) 的基底。左上角低频、右下角高频。这个矩阵是正交的。
现在我们面临的问题就是,设 X=0<≤i,j≤7∑bijαiαjT,求表出系数 bij。而若使用分块乘法,上面可以拆成:
X=[α0α1⋯α7]⎣⎢⎢⎢⎢⎡b00b10⋮b70b01b11⋮b71⋯⋯⋯b07b17⋮b77⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡α0Tα1T⋮α7T⎦⎥⎥⎥⎥⎤=CBCT
注意到 C 为正交矩阵,C−1=CT。两边左乘 CT,右乘 C,即得到 B=CTXC。
(一开始不要忘记平移定义域至 [−128,127],以方便余弦函数的操作)余弦变换完了之后,信息此时还没有丢失,只是换了个基底而已(当然硬说浮点运算确实也是带来了损失的),但是很重要的一点就是此时矩阵的左上角储存低频信息,右下角高频信息。
基于人眼对高频信息不那么敏感的事实,我们可以通过舍弃高频信息来实现对图像的压缩。具体地,我们有量化矩阵 Q,这个矩阵的左上角元值较小,右下角元较大,将矩阵的每个 (i,j) 元除以量化矩阵中对应的 (i,j) 元再四舍五入,得到的就是高度压缩化后的矩阵。此时右下角应该会有很多 0。
再之后用 zig-zag 的方式将二维的矩阵变换成一维序列,再用特定的压缩方式(如 Huffman 编码)压缩即可。
分块矩阵的初等变换
- 把一个块行的左 P 倍(P 是矩阵)加到另一个块行上。形如 ⎣⎢⎡I1AI2I⎦⎥⎤。
- 两个块行互换。⎣⎢⎡I1I2I⎦⎥⎤
- 用一个可逆矩阵左乘某一块行:⎣⎢⎡I1CI⎦⎥⎤
做初等行变换,就是用初等分块矩阵左乘;相应地做列变换就是右乘。
例:A,B 分别是 m 阶,n 阶方阵,C 为 m×n 矩阵,则 [A0BC] 可逆当且仅当 A 和 C 均可逆(考虑行列式)。
求其逆的过程和求数值矩阵的逆可以说是完全一样:
[A0BCImIn]→[Im0A−1BInA−1C−1]→[Im00InA−1−A−1BC−1C−1]
故
[A0BC]−1=[A−10−A−1BC−1C−1]
同时利用分块初等变换还可以处理之前的一个经典结论:
求证:设 A∈Mm×n(K),B∈Mn×k(K),则 rank(A)+rank(B)≤rank(AB)+n。
考虑 rank([AIn0B])≥rank(A)+rank(B),且 rank([AB00In])=rank(AB)+n。
而 [AIn0B] 第一行减去第二行左乘 A 倍,得到 [0In−ABB],再然后第二列减去第一列左乘上 B 得到 [0In−AB0],第二列乘上 −1 倍,再和第一列交换位置即得到 [AB00In]。
初等变换不改变秩,证毕。
接下来再看一个应用:
设 A∈Mm×n(K),B∈Mn×m,求证 ∣Im−AB∣=∣In−BA∣。
仍旧是考虑初等变换。
[In−AIm][InABIm][In−BIm][InABIm]=[InBIm−AB]=[In−BAAIm]
同时取行列式,即证。
这就引申出了一个结论:如果 Im−AB 可逆,则 In−BA 也可逆,如何构造?
考虑下面这个式子:
1−ba1=1+ba+baba+bababa+⋯=1+b(1+ab+abab+⋯)a=1+b(1−ab)−1a
所以
(In−BA)−1=In+B(Im−AB)−1A
通过展开不难验证其正确性。口诀:改号拉开填逆。
Cauchy-Binet 公式
定理内容:设 A∈Mm×n(K),B∈Mn×m(K),则
-
若 m>n,则 ∣AB∣=0;
-
否则,则
∣AB∣=1≤ν1<⋯<νm≤n∑A(1,⋯,mν1,⋯,νm)B(ν1,⋯,νm1,⋯,m)
即,∣AB∣ 等于所有 A 的 m 阶子式与对应的 B 的 n 阶子式乘积之和。
证明:考虑若 m>n,则显然乘出来的 m 级方阵不满秩,行列式为 0。
否则考虑下列 n+m 级分块矩阵,然后将第一行左乘上 −A 加到第二行上:
[In−A0Im][In0BAB]=[In−AB0]
两边同时取行列式得到 ∣AB∣=∣∣∣∣∣In−AB0∣∣∣∣∣。
接下来做两次 Laplace 展开立得。具体地先按后 m 行展开:
∣∣∣∣∣In−AB0∣∣∣∣∣=1≤ν1<⋯<νm≤n∑(−A)(1,⋯,mν1,⋯,νm)(−1)∑k=1m(n+k)+∑k=1mνk∣∣∣εμ1⋯εμn−mB∣∣∣
其中 {μ1,⋯,μn−m}={1,⋯,n}\{ν1,⋯,νm}。再接下来把 ∣∣∣εμ1⋯εμn−mB∣∣∣ 按前 n−m 行展开。有 1 的堪称很少:
∣∣∣εμ1⋯εμn−mB∣∣∣=∣In−m∣(−1)∑k=1n−mμk+∑k=1n−mkB(ν1,⋯,νm1,⋯,m)
综上,
∣∣∣∣∣In−AB0∣∣∣∣∣=1≤ν1<⋯<νm≤n∑(−A)(1,⋯,mν1,⋯,νm)(−1)∑k=1m(n+k)+∑k=1mνk(−1)∑k=1n−mμk+∑k=1n−mkB(ν1,⋯,νm1,⋯,m)=1≤ν1<⋯<νm≤n∑(−1)n+n2+m+m2A(1,⋯,mν1,⋯,νm)B(ν1,⋯,νm1,⋯,m)=1≤ν1<⋯<νm≤n∑A(1,⋯,mν1,⋯,νm)B(ν1,⋯,νm1,⋯,m)
证毕。
下面看一个小应用:
用 Cauchy-Binet 公式证明 Lagrange 恒等式;
(i=1∑nai2)(i=1∑nbi2)−(i=1∑naibi)2=1≤i<j≤n∑∣∣∣∣∣aibiajbj∣∣∣∣∣2
注意到其实际就是 Cauchy 不等式的形式,只不过把不等号变成了等号且给出了很具体的值。
证明:L.H.S.=∣∣∣∣∣∣∣∣∣∣i=1∑nai2i=1∑nbiaii=1∑naibii=1∑nbi2∣∣∣∣∣∣∣∣∣∣=∣∣∣∣∣∣∣∣∣∣[a1b1a2b2⋯⋯anbn]⎣⎢⎢⎢⎢⎡a1a2⋮anb1b2⋮bn⎦⎥⎥⎥⎥⎤∣∣∣∣∣∣∣∣∣∣,然后用 Cauchy-Binet 公式即可。
这个公式在 n=2 的形式可能大家会更为熟悉:(a12+a22)(b12+b22)=(a1b1+a2b2)2+(a1b2−a2b1)2