视频链接:MITB站视频
笔记部分:总结参考子实
典型的状况是,特征值不重复,特征向量相互正交。
A = Q Λ Q − 1 A=Q\varLambda Q^{-1} A=QΛQ−1
而对于标准正交矩阵,有 Q = Q T Q=Q^T Q=QT,所以对称矩阵可以写为
A = Q Λ Q T A=Q\varLambda Q^T A=QΛQT
这个分解本身就代表着对称, ( Q Λ Q T ) T = ( Q T ) T Λ T Q T = Q Λ Q T \left(Q\varLambda Q^T\right)^T=\left(Q^T\right)^T\varLambda^TQ^T=Q\varLambda Q^T (QΛQT)T=(QT)TΛTQT=QΛQT。
在数学上叫做谱定理(spectral theorem),谱就是指矩阵特征值的集合。
该名称来自光谱,指一些纯事物的集合,就像将特征值分解成为特征值与特征向量。
在力学上称之为主轴定理(principle axis theorem)
从几何上看,它意味着如果给定某种材料,在合适的轴上来看,它就变成对角化的,方向就不会重复。
现在我们来证明性质1。对于矩阵 A x = λ x ‾ \underline{Ax=\lambda x} Ax=λx,对于其共轭部分总有 A ˉ x ˉ = λ ˉ x ˉ \bar A\bar x=\bar\lambda \bar x Aˉxˉ=λˉxˉ,根据前提条件我们只讨论实矩阵,则有 A x ˉ = λ ˉ x ˉ A\bar x=\bar\lambda \bar x Axˉ=λˉxˉ,将等式两边取转置有 x ˉ T A = x ˉ T λ ˉ ‾ \overline{\bar{x}^TA=\bar{x}^T\bar\lambda} xˉTA=xˉTλˉ。将“下划线”式两边左乘 x ˉ T \bar{x}^T xˉT有 x ˉ T A x = x ˉ T λ x \bar{x}^TAx=\bar{x}^T\lambda x xˉTAx=xˉTλx,“上划线”式两边右乘 x x x有 x ˉ T A x = x ˉ T λ ˉ x \bar{x}^TAx=\bar{x}^T\bar\lambda x xˉTAx=xˉTλˉx,观察发现这两个式子左边是一样的,所以 x ˉ T λ x = x ˉ T λ ˉ x \bar{x}^T\lambda x=\bar{x}^T\bar\lambda x xˉTλx=xˉTλˉx,则有 λ = λ ˉ \lambda=\bar{\lambda} λ=λˉ(这里有个条件, x ˉ T x ≠ 0 \bar{x}^Tx\neq 0 xˉTx=0),证毕。
观察这个前提条件, x ˉ T x = [ x ˉ 1 x ˉ 2 ⋯ x ˉ n ] [ x 1 x 2 ⋮ x n ] = x ˉ 1 x 1 + x ˉ 2 x 2 + ⋯ + x ˉ n x n \bar{x}^Tx=\begin{bmatrix}\bar x_1&\bar x_2&\cdots&\bar x_n\end{bmatrix}\begin{bmatrix}x_1\\x_2\\\vdots\\x_n\end{bmatrix}=\bar x_1x_1+\bar x_2x_2+\cdots+\bar x_nx_n xˉTx=[xˉ1xˉ2⋯xˉn]⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤=xˉ1x1+xˉ2x2+⋯+xˉnxn,设 x 1 = a + i b , x ˉ 1 = a − i b x_1=a+ib, \bar x_1=a-ib x1=a+ib,xˉ1=a−ib则 x ˉ 1 x 1 = a 2 + b 2 \bar x_1x_1=a^2+b^2 xˉ1x1=a2+b2,所以有 x ˉ T x > 0 \bar{x}^Tx>0 xˉTx>0。而 x ˉ T x \bar{x}^Tx xˉTx就是 x x x长度的平方。
拓展这个性质,当 A A A为复矩阵,根据上面的推导,则矩阵必须满足 A = A ˉ T A=\bar{A}^T A=AˉT时,才有性质1、性质2成立
(教授称具有这种特征值为实数、特征向量相互正交的矩阵为“好矩阵”)。
每一个对称矩阵都可以分解为一系列相互正交的投影矩阵。
A = Q Λ Q T = [ q 1 q 2 ⋯ q n ] [ λ 1 ⋯ λ 2 ⋯ ⋮ ⋮ ⋱ ⋮ ⋯ λ n ] [ q 1 T q 1 T ⋮ q 1 T ] = λ 1 q 1 q 1 T + λ 2 q 2 q 2 T + ⋯ + λ n q n q n T A=Q\varLambda Q^T=\Bigg[q_1\ q_2\ \cdots\ q_n\Bigg]\begin{bmatrix}\lambda_1& &\cdots& \\&\lambda_2&\cdots&\\\vdots&\vdots&\ddots&\vdots\\& &\cdots&\lambda_n\end{bmatrix}\begin{bmatrix}\quad q_1^T\quad\\\quad q_1^T\quad\\\quad \vdots \quad\\\quad q_1^T\quad\end{bmatrix}=\lambda_1q_1q_1^T+\lambda_2q_2q_2^T+\cdots+\lambda_nq_nq_n^T A=QΛQT=[q1 q2 ⋯ qn]⎣⎢⎢⎢⎡λ1⋮λ2⋮⋯⋯⋱⋯⋮λn⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡q1Tq1T⋮q1T⎦⎥⎥⎥⎤=λ1q1q1T+λ2q2q2T+⋯+λnqnqnT
注意这个展开式中的 q q T qq^T qqT, q q q是单位列向量所以 q T q = 1 q^Tq=1 qTq=1,结合我们在第十五讲所学的投影矩阵的知识有 q q T q T q = q q T \frac{qq^T}{q^Tq}=qq^T qTqqqT=qqT是一个投影矩阵,很容易验证其性质,比如平方它会得到 q q T q q T = q q T qq^Tqq^T=qq^T qqTqqT=qqT于是多次投影不变等。
在知道对称矩阵的特征值皆为实数后,我们再来讨论这些实数的符号,因为特征值的正负号会影响微分方程的收敛情况(需要实部为负的特征值保证收敛)。
用消元法取得矩阵的主元,观察主元的符号,主元符号的正负数量与特征向量的正负数量相同(有用性质!)。
如果对称矩阵是“好矩阵”,则正定矩阵(positive definite)是其一个更好的子类。
正定矩阵指特征值均为正数的矩阵(根据上面的性质有矩阵的主元均为正)。
举例, [ 5 2 2 3 ] \begin{bmatrix}5&2\\2&3\end{bmatrix} [5223],由行列式消元知其主元为 5 , 11 5 5,\frac{11}{5} 5,511,按一般的方法求特征值有 ∣ 5 − λ 2 2 3 − l a m b d a ∣ = λ 2 − 8 λ + 11 = 0 , λ = 4 ± 5 \begin{vmatrix}5-\lambda&2\\2&3-lambda\end{vmatrix}=\lambda^2-8\lambda+11=0, \lambda=4\pm\sqrt 5 ∣∣∣∣5−λ223−lambda∣∣∣∣=λ2−8λ+11=0,λ=4±5。
所有子行列式为正。对上面的例子有 ∣ 5 ∣ = 5 , ∣ 5 2 2 3 ∣ = 11 \begin{vmatrix}5\end{vmatrix}=5, \begin{vmatrix}5&2\\2&3\end{vmatrix}=11 ∣∣5∣∣=5,∣∣∣∣5223∣∣∣∣=11。
正定矩阵将早期学习的的消元主元、中期学习的的行列式、后期学习的特征值结合在了一起。
先介绍复数向量,我们不妨换一个字母符号来表示: z = [ z 1 z 2 ⋮ z n ] z=\begin{bmatrix}z_1\\z_2\\\vdots\\z_n\end{bmatrix} z=⎣⎢⎢⎢⎡z1z2⋮zn⎦⎥⎥⎥⎤,向量的每一个分量都是复数。此时 z z z不再属于 R n \mathbb{R}^n Rn实向量空间,它现在处于 C n \mathbb{C}^n Cn复向量空间。
对比模的计算
实向量,我们计算模只需要计算 ∣ v ∣ = v T v \left|v\right|=\sqrt{v^Tv} ∣v∣=vTv即可,而如果对复向量使用 z T z z^Tz zTz则有 z T z = [ z 1 z 2 ⋯ z n ] [ z 1 z 2 ⋮ z n ] = z 1 2 + z 2 2 + ⋯ + z n 2 z^Tz=\begin{bmatrix}z_1&z_2&\cdots&z_n\end{bmatrix}\begin{bmatrix}z_1\\z_2\\\vdots\\z_n\end{bmatrix}=z_1^2+z_2^2+\cdots+z_n^2 zTz=[z1z2⋯zn]⎣⎢⎢⎢⎡z1z2⋮zn⎦⎥⎥⎥⎤=z12+z22+⋯+zn2,这里 z i z_i zi是复数,平方后虚部为负,求模时本应相加的运算变成了减法。(如向量 [ 1 i ] \begin{bmatrix}1&i\end{bmatrix} [1i],右乘其转置后结果为 0 0 0,但此向量的长度显然不是零。)
复向量,使用 ∣ z ∣ = z ˉ T z \left|z\right|=\sqrt{\bar{z}^Tz} ∣z∣=zˉTz,即 [ z ˉ 1 z ˉ 2 ⋯ z ˉ n ] [ z 1 z 2 ⋮ z n ] \begin{bmatrix}\bar z_1&\bar z_2&\cdots&\bar z_n\end{bmatrix}\begin{bmatrix}z_1\\z_2\\\vdots\\z_n\end{bmatrix} [zˉ1zˉ2⋯zˉn]⎣⎢⎢⎢⎡z1z2⋮zn⎦⎥⎥⎥⎤,即使用向量共轭的转置乘以原向量即可。(如向量 [ 1 i ] \begin{bmatrix}1&i\end{bmatrix} [1i],右乘其共轭转置后结果为 [ 1 − i ] [ 1 i ] = 2 \begin{bmatrix}1&-i\end{bmatrix}\begin{bmatrix}1\\i\end{bmatrix}=2 [1−i][1i]=2。)
我们把共轭转置乘以原向量记为 z H z z^Hz zHz, H H H读作埃尔米特(人名为Hermite,形容词为Hermitian)
对于实矩阵, A T = A A^T=A AT=A即可表达矩阵的对称性。而对于复矩阵,我们同样需要求一次共轭 A ˉ T = A \bar{A}^T=A AˉT=A。
举个例子 [ 2 3 + i 3 − i 5 ] \begin{bmatrix}2&3+i\\3-i&5\end{bmatrix} [23−i3+i5]是一个复数情况下的对称矩阵。这叫做埃尔米特矩阵,有性质 A H = A A^H=A AH=A。
在第十七讲中,我们这样定义标准正交向量: q i T q j = { 0 i ≠ j 1 i = j q_i^Tq_j=\begin{cases}0\quad i\neq j\\1\quad i=j\end{cases} qiTqj={0i=j1i=j。
第十七讲中的标准正交矩阵: Q = [ q 1 q 2 ⋯ q n ] Q=\Bigg[q_1\ q_2\ \cdots\ q_n\Bigg] Q=[q1 q2 ⋯ qn]有 Q T Q = I Q^TQ=I QTQ=I。
就像人们给共轭转置起了个“埃尔米特”这个名字一样,正交性(orthogonal)在复数情况下也有了新名字,酉(unitary);
酉矩阵(unitary matrix)与正交矩阵类似,满足 Q H Q = I Q^HQ=I QHQ=I的性质。而前面提到的傅里叶矩阵就是一个酉矩阵。
F n = [ 1 1 1 ⋯ 1 1 w w 2 ⋯ w n − 1 1 w 2 w 4 ⋯ w 2 ( n − 1 ) ⋮ ⋮ ⋮ ⋱ ⋮ 1 w n − 1 w 2 ( n − 1 ) ⋯ w ( n − 1 ) 2 ] F_n=\begin{bmatrix}1&1&1&\cdots&1\\1&w&w^2&\cdots&w^{n-1}\\1&w^2&w^4&\cdots&w^{2(n-1)}\\\vdots&\vdots&\vdots&\ddots&\vdots\\1&w^{n-1}&w^{2(n-1)}&\cdots&w^{(n-1)^2}\end{bmatrix} Fn=⎣⎢⎢⎢⎢⎢⎡111⋮11ww2⋮wn−11w2w4⋮w2(n−1)⋯⋯⋯⋱⋯1wn−1w2(n−1)⋮w(n−1)2⎦⎥⎥⎥⎥⎥⎤
对于每一个元素有 ( F n ) i j = w i j i , j = 0 , 1 , 2 , ⋯ , n − 1 (F_n)_{ij}=w^{ij}\quad i,j=0,1,2,\cdots,n-1 (Fn)ij=wiji,j=0,1,2,⋯,n−1。
矩阵中的 w w w是一个非常特殊的值,满足 w n = 1 w^n=1 wn=1,其公式为 w = e i 2 π / n w=e^{i2\pi/n} w=ei2π/n。易知 w w w在复平面的单位圆上, w = cos 2 π n + i sin 2 π n w=\cos\frac{2\pi}{n}+i\sin\frac{2\pi}{n} w=cosn2π+isinn2π。
在傅里叶矩阵中,当我们计算 w w w的幂时, w w w在单位圆上的角度翻倍。比如在 6 6 6阶情形下, w = e 2 π / 6 w=e^{2\pi/6} w=e2π/6,即位于单位圆上 6 0 ∘ 60^\circ 60∘角处,其平方位于单位圆上 12 0 ∘ 120^\circ 120∘角处,而 w 6 w^6 w6位于 1 1 1处。从开方的角度看,它们是 1 1 1的 6 6 6个六次方根,而一次的 w w w称为原根。
我们现在来看 4 4 4阶傅里叶矩阵,先计算 w w w有 w = i , w 2 = − 1 , w 3 = − i , w 4 = 1 w=i,\ w^2=-1,\ w^3=-i,\ w^4=1 w=i, w2=−1, w3=−i, w4=1, F 4 = [ 1 1 1 1 1 i i 2 i 3 1 i 2 i 4 i 6 1 i 3 i 6 i 9 ] = [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] F_4=\begin{bmatrix}1&1&1&1\\1&i&i^2&i^3\\1&i^2&i^4&i^6\\1&i^3&i^6&i^9\end{bmatrix}=\begin{bmatrix}1&1&1&1\\1&i&-1&-i\\1&-1&1&-1\\1&-i&-1&i\end{bmatrix} F4=⎣⎢⎢⎡11111ii2i31i2i4i61i3i6i9⎦⎥⎥⎤=⎣⎢⎢⎡11111i−1−i1−11−11−i−1i⎦⎥⎥⎤。
矩阵的四个列向量正交,我们验证一下第二列和第四列, c 2 ˉ T c 4 = 1 − 0 + 1 − 0 = 0 \bar{c_2}^Tc_4=1-0+1-0=0 c2ˉTc4=1−0+1−0=0,正交。
给矩阵乘上系数 1 2 \frac{1}{2} 21(除以列向量的长度)得到标准正交矩阵 F 4 = 1 2 [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] F_4=\frac{1}{2}\begin{bmatrix}1&1&1&1\\1&i&-1&-i\\1&-1&1&-1\\1&-i&-1&i\end{bmatrix} F4=21⎣⎢⎢⎡11111i−1−i1−11−11−i−1i⎦⎥⎥⎤。
此时有 F 4 H F 4 = I F_4^HF_4=I F4HF4=I,于是该矩阵的逆矩阵也就是其共轭转置 F 4 H F_4^H F4H。
对于傅里叶矩阵, F 6 , F 3 F_6,\ F_3 F6, F3、 F 8 , F 4 F_8,\ F_4 F8, F4、 F 64 , F 32 F_{64},\ F_{32} F64, F32之间有着特殊的关系。
举例,有傅里叶矩阵 F 6 4 F_64 F64,一般情况下,用一个列向量右乘 F 64 F_{64} F64需要约 6 4 2 64^2 642次计算,显然这个计算量是比较大的。我们想要减少计算量,于是想要分解 F 64 F_{64} F64,联系到 F 32 F_{32} F32,有
[ F 64 ] = [ I D I − D ] [ F 32 0 0 F 32 ] [ 1 ⋯ 0 ⋯ 0 ⋯ 1 ⋯ 1 ⋯ 0 ⋯ 0 ⋯ 1 ⋯ ⋱ ⋱ ⋱ ⋱ ⋯ 1 ⋯ 0 ⋯ 0 ⋯ 1 ] \Bigg[F_{64}\Bigg]=\begin{bmatrix}I&D\\I&-D\end{bmatrix}\begin{bmatrix}F_{32}&0\\0&F_{32}\end{bmatrix}\begin{bmatrix}1&&\cdots&&&0&&\cdots&&\\0&&\cdots&&&1&&\cdots&&\\&1&\cdots&&&&0&\cdots&&\\&0&\cdots&&&&1&\cdots&&\\&&&\ddots&&&&&\ddots&&\\&&&\ddots&&&&&\ddots&&\\&&&\cdots&1&&&&\cdots&0\\&&&\cdots&0&&&&\cdots&1\end{bmatrix} [F64]=[IID−D][F3200F32]⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡1010⋯⋯⋯⋯⋱⋱⋯⋯100101⋯⋯⋯⋯⋱⋱⋯⋯01⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
我们分开来看等式右侧的这三个矩阵:
第一个矩阵由单位矩阵 I I I和对角矩阵 D = [ 1 w w 2 ⋱ w 31 ] D=\begin{bmatrix}1&&&&\\&w&&&\\&&w^2&&\\&&&\ddots&\\&&&&w^{31}\end{bmatrix} D=⎣⎢⎢⎢⎢⎡1ww2⋱w31⎦⎥⎥⎥⎥⎤组成,我们称这个矩阵为修正矩阵,显然其计算量来自 D D D矩阵,对角矩阵的计算量约为 32 32 32即这个修正矩阵的计算量约为 32 32 32,单位矩阵的计算量忽略不计。
第二个矩阵是两个 F 32 F_{32} F32与零矩阵组成的,计算量约为 2 × 3 2 2 2\times 32^2 2×322。
第三个矩阵通常记为 P P P矩阵,这是一个置换矩阵,其作用是讲前一个矩阵中的奇数列提到偶数列之前。
将前一个矩阵从 [ x 0 x 1 ⋯ ] \Bigg[x_0\ x_1\ \cdots\Bigg] [x0 x1 ⋯]变为 [ x 0 x 2 ⋯ x 1 x 3 ⋯ ] \Bigg[x_0\ x_2\ \cdots\ x_1\ x_3\ \cdots\Bigg] [x0 x2 ⋯ x1 x3 ⋯]
这个置换矩阵的计算量也可以忽略不计。
参考FFT、How the FFT is computed做进一步讨论。
所以我们把 6 4 2 64^2 642复杂度的计算化简为 2 × 3 2 2 + 32 2\times 32^2+32 2×322+32复杂度的计算,我们可以进一步化简 F 32 F_{32} F32得到与 F 16 F_{16} F16有关的式子
[ I 32 D 32 I 32 − D 32 ] [ I 16 D 16 I 16 − D 16 I 16 D 16 I 16 − D 16 ] [ F 16 F 16 F 16 F 16 ] [ P 16 P 16 ] [ P 32 ] \begin{bmatrix}I_{32}&D_{32}\\I_{32}&-D_{32}\end{bmatrix}\begin{bmatrix}I_{16}&D_{16}&&\\I_{16}&-D_{16}&&\\&&I_{16}&D_{16}\\&&I_{16}&-D_{16}\end{bmatrix}\begin{bmatrix}F_{16}&&&\\&F_{16}&&\\&&F_{16}&\\&&&F_{16}\end{bmatrix}\begin{bmatrix}P_{16}&\\&P_{16}\end{bmatrix}\Bigg[\ P_{32}\ \Bigg] [I32I32D32−D32]⎣⎢⎢⎡I16I16D16−D16I16I16D16−D16⎦⎥⎥⎤⎣⎢⎢⎡F16F16F16F16⎦⎥⎥⎤[P16P16][ P32 ]
而 3 2 2 32^2 322的计算量进一步分解为 2 × 1 6 2 + 16 2\times 16^2+16 2×162+16的计算量,如此递归下去我们最终得到含有一阶傅里叶矩阵的式子。
来看化简后计算量, 2 ( 2 ( 2 ( 2 ( 2 ( 2 ( 1 ) 2 + 1 ) + 2 ) + 4 ) + 8 ) + 16 ) + 32 2\left(2\left(2\left(2\left(2\left(2\left(1\right)^2+1\right)+2\right)+4\right)+8\right)+16\right)+32 2(2(2(2(2(2(1)2+1)+2)+4)+8)+16)+32,约为 6 × 32 = log 2 64 × 64 2 6\times 32=\log_264\times \frac{64}{2} 6×32=log264×264,
算法复杂度为 n 2 log 2 n \frac{n}{2}\log_2n 2nlog2n。于是原来需要 n 2 n^2 n2的运算现在只需要 n 2 log 2 n \frac{n}{2}\log_2n 2nlog2n就可以实现。