前言:這篇blog是《
Linear Algebra and Its Applications》第三章的一些學習筆記
第三章 正交
這一章引出新工具:內積,投影
重點:施密特正交化法
1. 正交向量與子空間
1.1. 內積
向量α,β的內積定義成<α,β>=αTβ,可以理解成Rn×Rn→R的映射,向量模的平方就是自己與自己的內積∣∣x∣∣2=xTx。內積有如下性質:
- <α,α>≥0
- <α,β>=<β,α>
- <α+γ,β>=<α,β>+<γ,β>
- <cα,β>=c<α,β>
1.2. 矩陣四大子空間的正交關係
在Rn空間,行空間與零空間正交互補,記爲C(AT)=(N(A))⊥,即dim(N(A))+dim(C(AT))=n,dim()表示向量空間的維度。
在Rm空間,列空間與左零空間正交互補,記爲C(A)=(N(AT))⊥,即dim(N(AT))+dim(C(A))=m,dim()表示向量空間的維度。
1.3. 矩陣的真正作用
如上圖所以,左邊的兩個矩形空間是行空間(row space,維度爲r)與零空間(nullspace,維度爲n-r),它們共同構成Rn空間;右邊的兩個矩形空間是列空間(column space,維度爲r)與左零空間(left nullspace,維度爲m-r),它們共同構成Rm空間。同時矩形空間之間的"└"符號表示了兩個子空間之間是正交的。
從Rn中找一點x,可表示爲x=xr+xn,xr表示行空間中的某一向量,xn表示零空間中的某一向量,而矩陣Am×n作用於x,即Ax=A(xr+xn)=Axr+0=b,b是列空間中的向量。所以矩陣Am×n的作用就是把C(AT)空間中的向量映射到C(A)空間。第六章會定義僞逆A+,A+Ax=x。
2. 向量投影到向量
向量b向向量a的投影,設x=∣∣a∣∣∣∣p∣∣,即x爲b在a上的投影向量p的模除以a的模,所以p=xa,不難看出,aTe=aT(b−p)=aT(b−xa)=0所以x=aTaaTb故p=xa=aTaaTba=aaTaaTb=aTaaaTb=Pb這裏一定要意識到aTb是一個數,所以向量a可以提到前面,再用結合律即可。
這樣我們就推出了向量b投影到向量a的投影矩陣P=aTaaaTP矩陣對稱且滿足P2=P,可見該投影矩陣和向量b沒有任何關係,如果向量a=(cosθ,sinθ),則P=[c2cscss2],和第二章的二維投影矩陣吻合。
3. 向量投影到列空間與最小二乘法
3.1. 向量投影到列空間
向量b投影到矩陣A的列空間,設投影向量是Ax,其中x在A的行空間,則向量e=(b−Ax)垂直A的列空間,所以向量e在矩陣A的左零空間,所以ATe=AT(b−Ax)=0所以我們得到ATb=ATAx
如果向量b不在矩陣A的列空間,即e̸=0,此時Ax=b無解,那麼向量b在矩陣A的列空間的投影向量Ax最接近b,所以Ax=b的近似方程是Ax=Ax,Ax=b近似解即爲x,其依據就是最小二乘法(最小平方和),此時∣∣e∣∣最小,所以我們有了求x的一般方程ATb=ATAx如果ATA可逆,那麼x=(ATA)−1ATb我們進一步知道了求向量b到A的列空間的投影向量p=Ax=A(ATA)−1ATb=Pb其中P=A(ATA)−1AT爲投影矩陣,該投影矩陣是對稱矩陣同時滿足P2=P。
所以向量不論是向空間投影,還是向另一個向量投影,投影矩陣均滿足對稱矩陣且P2=P。
3.2. 最小二乘法問題
假設求解下面的方程組,
⎩⎪⎨⎪⎧2x=b13x=b24x=b3
該方程無解,但是想求其近似解。
3.2.1. 代數法
我們用代數法,利用最小平方和求解,其誤差是E2=(2x−b1)2+(3x−b2)2+(4x−b3)2對其求導取極值點x=22+32+422b1+3b2+4b3
3.2.2. 矩陣法
我們用代數法,利用最小平方和求解,ax=⎣⎡234⎦⎤x=⎣⎡b1b2b3⎦⎤=b
其解就是向量b在a列空間上的投影,在映射回a的行空間,其一般方程爲aTb=aTax所以近似解爲x=aTaaTb,直接就可以求出來。
4. 正交基,Gram-Schmidt正交化法
4.1. 正交基
4.1.1. 正交矩陣
正交矩陣是列向量相互正交且列向量模爲1的矩陣;正交方陣是限定爲方陣的正交矩陣,記爲Q,一般提及正交矩陣默認就是正交方陣,這篇blog後面提及的正交矩陣也是正交方陣。
正交矩陣有如下性質
- QTQ=1
- QT=Q−1
4.1.2. 正交變換
正交矩陣Q作爲變換矩陣,乘以向量x,稱爲正交變換。正交變換不改變向量x的角度和長度。
4.1.3. 正交矩陣列空間的正交基
考慮正交變換Qx=[q1,q2…qn]x=b
其中qi均是相互正交的單位列向量,則x=Q−1b=QTb=⎣⎢⎢⎡q1Tq2T⋅˙˙qnT⎦⎥⎥⎤b=⎣⎢⎢⎡q1Tbq2Tb⋅˙˙qnTb⎦⎥⎥⎤
所以b=Qx=[q1,q2…qn]⎣⎢⎢⎡q1Tbq2Tb⋅˙˙qnTb⎦⎥⎥⎤=⎣⎢⎢⎡(q1Tb)q1(q2Tb)q2⋅˙˙(qnTb)qn⎦⎥⎥⎤
由於qi是單位列向量,所以(qiTb)qi是向量b在向量qi上的投影向量(qiTqiqiTbqi=qiTbqi),所以向量b向q1,q2…qn的各自的投影向量形成的向量 ((q1Tb)q1,(q2Tb)q2…(qnTb)qn)T就是b自己,所以q1,q2…qn就是Q的列空間的標準正交基。
4.2. Schmidt正交化法(施密特正交化法)
由一組相互獨立的向量產生標準正交向量的方法。具體來看,給定獨立的一組向量a,b,c,d…標準正交的第一個向量就是單純的標準化即可q1=∣∣a∣∣a第二個標準正交向量的產生是在q1基礎上的A2=b−(q1Tb)q1q2=∣∣A2∣∣A2第三個標準正交向量的產生是在q1與q2基礎上的A3=c−(q1Tc)q1−(q2Tc)q2q3=∣∣A3∣∣A3
…
Aj=aj−(q1Taj)q1−(q2Taj)q2−⋯−(qj−1Taj)qj−1qj=∣∣Aj∣∣Aj
後面產生的標準正交向量是踩在前面的已經產生的標準正交向量上面產生的。
4.3. 矩陣的正交分解
對矩陣A,其列向量要求線性無關,有正交分解
A=QR
其中Q是正交矩陣,R是上三角矩陣。其基本思路就是對A的列向量進行Schmidt正交化法,以三階爲例A=[a,b,c]=[q1,q2,q3]⎣⎡q1Ta00q1Tbq2Tb0q1Tcq2Tcq3Tc⎦⎤=QR
R的對角線元素的乘積是A的列向量構成的多面體的體積。我們可以通過推廣平行四邊形的面積求法來理解,平行四邊形的面積是底乘以高,平行六面體的體積是底乘以高在乘以垂直這條底和高的第三條高,…,q1Ta可以理解成底,q2Tb是垂直於q1Ta的高,q3Tc是垂直於q1Ta和q2Tb的第三條高 …,相乘就是體積。
4.4. Hilbert空間
把Rn→R∞,即Hilbert空間中的向量是無窮維的,Hilbert空間包含所有的無窮維向量。
5. 應用:快速傅里葉變換(FFT)
FFT可以說是20世紀發現的算法中,重要程度排名前三的算法。這裏從傅里葉級數開始,引出FFT。
5.1. 傅里葉級數
我們先看向量空間V,向量b在V中,V中有基q1,q2…qn,則b=x1q1+x2q2+⋯+xnqn。
類比上面的向量空間,設函數空間F,函數f在函數空間F中,F中有基1,cosx,sinx,cos2x,sin2x,cos3x…,F的維度是∞,則f=a0+a1cosx+b1sinx+a2cos2x+b2sin2x+…,f用F中的基表示的等式的係數,就是傅里葉級數。
同時,類比的還有向量內積⟶函數內積,向量正交⟶函數正交。向量內積:vTw=v1w1+v2w2…vnwn↓函數內積:∫02πf(x)g(x)dx
向量正交:vTw=0↓函數正交:∫02πf(x)g(x)dx=0
傅里葉級數求解有對應的公式,這裏不是重點就不列出,百度就行。
傅里葉變換利用傅里葉級數,把信號進行傅里葉分解,就知道了信號在各個頻率分量上的佔比(傅里葉級數)。
5.2. 離散傅里葉變換
利用傅里葉級數的的傅里葉變換維度是無限維的,這一點在工程應用中十分不便,因此提出了維度是有限長的快速傅里葉變換。
輸入:Y=[y0,y1,y2…yn−1],Y是對原連續信號採樣,採樣越密,越能表示原信號。
輸出:C=[c0,c1,c2…cn−1]
線性關係:FC=Y,F爲傅里葉矩陣,是對稱復矩陣,也是復矩陣最有名的應用。
傅里葉矩陣Fn如下Fn=⎣⎢⎢⎡11⋅˙˙11wnwnn−11wn2wn2(n−1)………1wnn−1⋅˙˙wn(n−1)(n−1)⎦⎥⎥⎤其中(Fn)ij=wij,i,j=0,1…n−1,且wnn=1,即wn=ein2π。下面是n=4時的傅里葉矩陣F4,w4=ei2π=i,F4=⎣⎢⎢⎡11111i−1−i1−11−11−i−1i⎦⎥⎥⎤
同時,傅里葉矩陣Fn的逆的求解也很方便:Fn−1=n1Fn其中Fn爲Fn的共軛。
5.3. 快速傅里葉變換
離散傅里葉變換需要n2個乘法,下面給出一種利用矩陣分解化簡乘法運算次數的方法。以n=64爲例,且w642=w32,傅里葉矩陣F64分解如下:
[F64]=[IID32−D32][F3200F32][P64]=[IID32−D32]⎣⎢⎢⎡II00D16−D160000II00D16−D16⎦⎥⎥⎤⎣⎢⎢⎡F160000F160000F160000F16⎦⎥⎥⎤[P3200P32][P64]…
其中P是置換矩陣,把偶數行提到奇數行前的置換矩陣,D是對角矩陣,Dn=⎣⎢⎢⎢⎢⎡1ww2⋅wn−1⎦⎥⎥⎥⎥⎤
考慮乘法運算,642次乘法⟶32+322+0⟶32+(16+162×2)×2=32+32+162×4⟶32+32+(8+82×2)×4=32+32+32+82×8…⟶6×32+64注意這裏乘以I和P開銷不大,因此在考慮乘法運算開銷時沒有考慮(乘法開銷記爲0)。故FFT使得乘法運算次數變爲n2⟶2nlog2n+n=O(nlogn)
以n=1024爲例,這在計算機實際應用中根本不算大的數字,但FFT使得其乘法運算次數減少近200倍。
參考書籍
《Linear Algebra and Its Applications》