線性代數及其應用:第三章 正交


前言:這篇blog是《Linear Algebra and Its Applications》第三章的一些學習筆記

第三章 正交

  這一章引出新工具:內積,投影
  重點:施密特正交化法

1. 正交向量與子空間

1.1. 內積

  向量α,β\alpha,\beta的內積定義成<α,β>=αTβ<\alpha,\beta>=\alpha^{T}\beta,可以理解成Rn×RnRR^{n}\times R^{n}\rightarrow R的映射,向量模的平方就是自己與自己的內積x2=xTx||x||^{2}=x^{T}x。內積有如下性質:

  1. <α,α>0<\alpha,\alpha> \geq 0
  2. <α,β>=<β,α><\alpha,\beta>=<\beta,\alpha>
  3. <α+γ,β>=<α,β>+<γ,β><\alpha+\gamma,\beta>=<\alpha,\beta>+<\gamma,\beta>
  4. <cα,β>=c<α,β><c\alpha,\beta>=c<\alpha,\beta>

1.2. 矩陣四大子空間的正交關係

  在RnR^{n}空間,行空間與零空間正交互補,記爲C(AT)=(N(A))C(A^{T})=(N(A))^{\bot},即dim(N(A))+dim(C(AT))=ndim(N(A))+dim(C(A^{T}))=ndim()dim()表示向量空間的維度。
  在RmR^{m}空間,列空間與左零空間正交互補,記爲C(A)=(N(AT))C(A)=(N(A^{T}))^{\bot},即dim(N(AT))+dim(C(A))=mdim(N(A^{T}))+dim(C(A))=mdim()dim()表示向量空間的維度。

1.3. 矩陣的真正作用

  如上圖所以,左邊的兩個矩形空間是行空間(row space,維度爲r)與零空間(nullspace,維度爲n-r),它們共同構成RnR^{n}空間;右邊的兩個矩形空間是列空間(column space,維度爲r)與左零空間(left nullspace,維度爲m-r),它們共同構成RmR^{m}空間。同時矩形空間之間的"\llcorner"符號表示了兩個子空間之間是正交的。
  從RnR^{n}中找一點x,可表示爲x=xr+xnx=x_{r}+x_{n}xrx_{r}表示行空間中的某一向量,xnx_{n}表示零空間中的某一向量,而矩陣Am×nA_{m\times n}作用於xx,即Ax=A(xr+xn)=Axr+0=bAx=A(x_{r}+x_{n})=Ax_{r}+0=bbb是列空間中的向量。所以矩陣Am×nA_{m\times n}的作用就是把C(AT)C(A^{T})空間中的向量映射到C(A)C(A)空間。第六章會定義僞逆A+A^{+}A+Ax=xA^{+}Ax=x


2. 向量投影到向量

  向量bb向向量aa的投影,設x=pax=\frac{||p||}{||a||},即xxbbaa上的投影向量pp的模除以aa的模,所以p=xap=xa,不難看出,aTe=aT(bp)=aT(bxa)=0a^{T}e=a^{T}(b-p)=a^{T}(b-xa)=0所以x=aTbaTax=\frac{a^{T}b}{a^{T}a}p=xa=aTbaTaa=aaTbaTa=aaTaTab=Pbp=xa=\frac{a^{T}b}{a^{T}a}a=a\frac{a^{T}b}{a^{T}a}=\frac{aa^{T}}{a^{T}a}b=Pb這裏一定要意識到aTba^{T}b是一個數,所以向量aa可以提到前面,再用結合律即可。
  這樣我們就推出了向量bb投影到向量aa的投影矩陣P=aaTaTaP=\frac{aa^{T}}{a^{T}a}PP矩陣對稱且滿足P2=PP^{2}=P,可見該投影矩陣和向量bb沒有任何關係,如果向量a=(cosθ,sinθ)a=(cos\theta,sin\theta),則P=[c2cscss2]P=\left[ \begin{matrix} c^{2} & cs\\ cs & s^{2} \end{matrix} \right],和第二章的二維投影矩陣吻合。


3. 向量投影到列空間與最小二乘法

3.1. 向量投影到列空間

  向量bb投影到矩陣AA的列空間,設投影向量是Ax^A\widehat{x},其中x^\widehat{x}AA的行空間,則向量e=(bAx^)e=(b-A\widehat{x})垂直AA的列空間,所以向量ee在矩陣AA的左零空間,所以ATe=AT(bAx^)=0A^{T}e=A^{T}(b-A\widehat{x})=0所以我們得到ATb=ATAx^A^{T}b=A^{T}A\widehat{x}

  如果向量bb不在矩陣AA的列空間,即e0e\neq 0,此時Ax=bAx=b無解,那麼向量bb在矩陣AA的列空間的投影向量Ax^A\widehat{x}最接近bb,所以Ax=bAx=b的近似方程是Ax=Ax^Ax=A\widehat{x}Ax=bAx=b近似解即爲x^\widehat{x},其依據就是最小二乘法(最小平方和),此時e||e||最小,所以我們有了求x^\widehat{x}的一般方程ATb=ATAx^A^{T}b=A^{T}A\widehat{x}如果ATAA^{T}A可逆,那麼x^=(ATA)1ATb\widehat{x}=(A^{T}A)^{-1}A^{T}b我們進一步知道了求向量bbAA的列空間的投影向量p=Ax^=A(ATA)1ATb=Pbp=A\widehat{x}=A(A^{T}A)^{-1}A^{T}b=Pb其中P=A(ATA)1ATP=A(A^{T}A)^{-1}A^{T}爲投影矩陣,該投影矩陣是對稱矩陣同時滿足P2=PP^{2}=P

  所以向量不論是向空間投影,還是向另一個向量投影,投影矩陣均滿足對稱矩陣且P2=PP^{2}=P

3.2. 最小二乘法問題

  假設求解下面的方程組,
{2x=b13x=b24x=b3\begin{cases} 2x=b_{1}\\ 3x=b_{2} \\ 4x=b_{3} \end{cases}

  該方程無解,但是想求其近似解。

3.2.1. 代數法

  我們用代數法,利用最小平方和求解,其誤差是E2=(2xb1)2+(3xb2)2+(4xb3)2E^{2}=(2x-b_{1})^{2}+(3x-b_{2})^{2}+(4x-b_{3})^{2}對其求導取極值點x^=2b1+3b2+4b322+32+42\widehat{x}=\frac{2b_{1}+3b_{2}+4b_{3}}{2^2+3^2+4^2}

3.2.2. 矩陣法

  我們用代數法,利用最小平方和求解,ax=[234]x=[b1b2b3]=bax=\left[ \begin{matrix} 2\\ 3\\ 4 \end{matrix} \right]x=\left[ \begin{matrix} b_{1}\\ b_{2}\\ b_{3} \end{matrix} \right]=b

  其解就是向量bbaa列空間上的投影,在映射回aa的行空間,其一般方程爲aTb=aTax^a^{T}b=a^{T}a\widehat{x}所以近似解爲x^=aTbaTa\widehat{x}=\frac{a^{T}b}{a^{T}a},直接就可以求出來。


4. 正交基,Gram-Schmidt正交化法

4.1. 正交基

4.1.1. 正交矩陣

  正交矩陣是列向量相互正交且列向量模爲1的矩陣;正交方陣是限定爲方陣的正交矩陣,記爲QQ,一般提及正交矩陣默認就是正交方陣,這篇blog後面提及的正交矩陣也是正交方陣。
  正交矩陣有如下性質

  1. QTQ=1Q^{T}Q=1
  2. QT=Q1Q^{T}=Q^{-1}

4.1.2. 正交變換

  正交矩陣QQ作爲變換矩陣,乘以向量x,稱爲正交變換。正交變換不改變向量xx的角度和長度。

4.1.3. 正交矩陣列空間的正交基

  考慮正交變換Qx=[q1,q2qn]x=bQx=\left[ \begin{matrix} q_{1},q_{2}\dots q_{n} \end{matrix} \right]x=b

其中qiq_{i}均是相互正交的單位列向量,則x=Q1b=QTb=[q1Tq2T˙˙qnT]b=[q1Tbq2Tb˙˙qnTb]x=Q^{-1}b=Q^{T}b=\left[ \begin{matrix} q_{1}^{T}\\ q_{2}^{T}\\ \dot{\dot{·}}\\ q_{n}^{T} \end{matrix} \right]b=\left[ \begin{matrix} q_{1}^{T}b\\ q_{2}^{T}b\\ \dot{\dot{·}}\\ q_{n}^{T}b \end{matrix} \right]

所以b=Qx=[q1,q2qn][q1Tbq2Tb˙˙qnTb]=[(q1Tb)q1(q2Tb)q2˙˙(qnTb)qn]b=Qx=\left[ \begin{matrix} q_{1},q_{2}\dots q_{n} \end{matrix} \right]\left[ \begin{matrix} q_{1}^{T}b\\ q_{2}^{T}b\\ \dot{\dot{·}}\\ q_{n}^{T}b \end{matrix} \right]=\left[ \begin{matrix} (q_{1}^{T}b)q_{1}\\ (q_{2}^{T}b)q_{2}\\ \dot{\dot{·}}\\ (q_{n}^{T}b)q_{n} \end{matrix} \right]

  由於qiq_{i}是單位列向量,所以(qiTb)qi(q_{i}^{T}b)q_{i}是向量bb在向量qiq_{i}上的投影向量(qiTbqiTqiqi=qiTbqi\frac{q_{i}^{T}b}{q_{i}^{T}q_{i}}q_{i}=q_{i}^{T}bq_{i}),所以向量bbq1,q2qnq_{1},q_{2}\dots q_{n}的各自的投影向量形成的向量 ((q1Tb)q1,(q2Tb)q2(qnTb)qn)T((q_{1}^{T}b)q_{1},(q_{2}^{T}b)q_{2}\dots(q_{n}^{T}b)q_{n})^{T}就是bb自己,所以q1,q2qnq_{1},q_{2}\dots q_{n}就是QQ的列空間的標準正交基。

4.2. Schmidt正交化法(施密特正交化法)

  由一組相互獨立的向量產生標準正交向量的方法。具體來看,給定獨立的一組向量a,b,c,da,b,c,d\dots標準正交的第一個向量就是單純的標準化即可q1=aaq_{1}=\frac{a}{||a||}第二個標準正交向量的產生是在q1q_{1}基礎上的A2=b(q1Tb)q1q2=A2A2A_{2}=b-(q_{1}^{T}b)q_{1}\\q_{2}=\frac{A_{2}}{||A_{2}||}第三個標準正交向量的產生是在q1q_{1}q2q_{2}基礎上的A3=c(q1Tc)q1(q2Tc)q2q3=A3A3A_{3}=c-(q_{1}^{T}c)q_{1}-(q_{2}^{T}c)q_{2}\\q_{3}=\frac{A_{3}}{||A_{3}||}

\dots

Aj=aj(q1Taj)q1(q2Taj)q2(qj1Taj)qj1qj=AjAjA_{j}=a_{j}-(q_{1}^{T}a_{j})q_{1}-(q_{2}^{T}a_{j})q_{2}-\dots-(q_{j-1}^{T}a_{j})q_{j-1} \\q_{j}=\frac{A_{j}}{||A_{j}||}

  後面產生的標準正交向量是踩在前面的已經產生的標準正交向量上面產生的。

4.3. 矩陣的正交分解

  對矩陣AA其列向量要求線性無關,有正交分解
A=QRA=QR

  其中QQ是正交矩陣,RR是上三角矩陣。其基本思路就是對A的列向量進行Schmidt正交化法,以三階爲例A=[a,b,c]=[q1,q2,q3][q1Taq1Tbq1Tc0q2Tbq2Tc00q3Tc]=QRA=[a,b,c]=[q_{1},q_{2},q_{3}]\left[ \begin{matrix} q_{1}^{T}a & q_{1}^{T}b & q_{1}^{T}c\\ 0 & q_{2}^{T}b & q_{2}^{T}c\\ 0 & 0 & q_{3}^{T}c \end{matrix} \right]=QR

  RR的對角線元素的乘積是AA的列向量構成的多面體的體積。我們可以通過推廣平行四邊形的面積求法來理解,平行四邊形的面積是底乘以高,平行六面體的體積是底乘以高在乘以垂直這條底和高的第三條高,\dotsq1Taq_{1}^{T}a可以理解成底,q2Tbq_{2}^{T}b是垂直於q1Taq_{1}^{T}a的高,q3Tcq_{3}^{T}c是垂直於q1Taq_{1}^{T}aq2Tbq_{2}^{T}b的第三條高 \dots,相乘就是體積。

4.4. Hilbert空間

  把RnRR^{n}\rightarrow R^{\infty},即Hilbert空間中的向量是無窮維的,Hilbert空間包含所有的無窮維向量。


5. 應用:快速傅里葉變換(FFT)

  FFT可以說是20世紀發現的算法中,重要程度排名前三的算法。這裏從傅里葉級數開始,引出FFT。

5.1. 傅里葉級數

  我們先看向量空間V,向量bb在V中,V中有基q1,q2qnq_{1},q_{2}\dots q_{n},則b=x1q1+x2q2++xnqnb=x_{1}q_{1}+x_{2}q_{2}+\dots +x_{n}q_{n}
  類比上面的向量空間,設函數空間F,函數ff在函數空間F中,F中有基1,cosx,sinx,cos2x,sin2x,cos3x1,cosx,sinx,cos2x,sin2x,cos3x \dots,F的維度是\infty,則f=a0+a1cosx+b1sinx+a2cos2x+b2sin2x+f=a_{0}+a_{1}cosx+b_{1}sinx+a_{2}cos2x+b_{2}sin2x+\dotsff用F中的基表示的等式的係數,就是傅里葉級數。
  同時,類比的還有向量內積\longrightarrow函數內積,向量正交\longrightarrow函數正交。vTw=v1w1+v2w2vnwn向量內積:v^{T}w=v_{1}w_{1}+v_{2}w_{2}\dots v_{n}w_{n}\downarrow02πf(x)g(x)dx函數內積:\int_{0}^{2\pi}f(x)g(x)dx
vTw=0向量正交:v^{T}w=0\downarrow02πf(x)g(x)dx=0函數正交:\int_{0}^{2\pi}f(x)g(x)dx=0

  傅里葉級數求解有對應的公式,這裏不是重點就不列出,百度就行。

  傅里葉變換利用傅里葉級數,把信號進行傅里葉分解,就知道了信號在各個頻率分量上的佔比(傅里葉級數)。

5.2. 離散傅里葉變換

  利用傅里葉級數的的傅里葉變換維度是無限維的,這一點在工程應用中十分不便,因此提出了維度是有限長的快速傅里葉變換。
  輸入:Y=[y0,y1,y2yn1]Y=[y_{0},y_{1},y_{2}\dots y_{n-1}]YY是對原連續信號採樣,採樣越密,越能表示原信號。
  輸出:C=[c0,c1,c2cn1]C=[c_{0},c_{1},c_{2}\dots c_{n-1}]
  線性關係:FC=YFC=YFF爲傅里葉矩陣,是對稱復矩陣,也是復矩陣最有名的應用。
  傅里葉矩陣FnF_{n}如下Fn=[11111wnwn2wnn1˙˙˙˙1wnn1wn2(n1)wn(n1)(n1)]F_{n}=\left[ \begin{matrix} 1 & 1 & 1 & \dots & 1\\ 1 & w_{n} & w^{2}_{n} & \dots & w^{n-1}_{n}\\ \dot{\dot{·}}&&&&\dot{\dot{·}}\\ 1 & w^{n-1}_{n} & w^{2(n-1)}_{n} & \dots &w_{n}^{(n-1)(n-1)} \end{matrix} \right]其中(Fn)ij=wiji,j=0,1n1(F_{n})_{ij}=w^{ij},i,j=0,1 \dots n-1,且wnn=1w^{n}_{n}=1,即wn=ei2πnw_{n}=e^{i\frac{2\pi}{n}}。下面是n=4時的傅里葉矩陣F4F_{4}w4=eiπ2=iw_{4}=e^{i\frac{\pi}{2}}=iF4=[11111i1i11111i1i]F_{4}=\left[ \begin{matrix} 1 & 1 & 1 & 1\\ 1 & i & -1 & -i\\ 1 & -1 & 1 &-1\\ 1 & -i & -1 & i \end{matrix} \right]

  同時,傅里葉矩陣FnF_{n}的逆的求解也很方便:Fn1=1nFnF_{n}^{-1}=\frac{1}{n}\overline{F_{n}}其中Fn\overline{F_{n}}FnF_{n}的共軛。

5.3. 快速傅里葉變換

  離散傅里葉變換需要n2n^{2}個乘法,下面給出一種利用矩陣分解化簡乘法運算次數的方法。以n=64爲例,且w642=w32w_{64}^{2}=w_{32},傅里葉矩陣F64F_{64}分解如下:

[F64]=[ID32ID32][F3200F32][P64]=[ID32ID32][ID1600ID160000ID1600ID16][F160000F160000F160000F16][P3200P32][P64]\begin{aligned} \left[ \begin{matrix} F_{64} \end{matrix} \right]&=\left[ \begin{matrix} I & D_{32}\\ I & -D_{32} \end{matrix} \right]\left[ \begin{matrix} F_{32} & 0\\ 0 & F_{32} \end{matrix} \right]\left[ \begin{matrix} P_{64} \end{matrix} \right] \\ &=\left[ \begin{matrix} I & D_{32}\\ I & -D_{32} \end{matrix} \right]\left[ \begin{matrix} I & D_{16} & 0 & 0\\ I & -D_{16} & 0 & 0\\ 0 & 0 & I & D_{16}\\ 0 & 0 & I & -D_{16} \end{matrix} \right]\left[ \begin{matrix} F_{16} & 0 & 0 & 0\\ 0 & F_{16} & 0 & 0\\ 0 & 0 & F_{16} & 0\\ 0 & 0 & 0 & F_{16} \\ \end{matrix} \right]\left[ \begin{matrix} P_{32} & 0\\ 0 & P_{32} \end{matrix} \right]\left[ \begin{matrix} P_{64} \end{matrix} \right] \\ & \dots \end{aligned}

其中PP是置換矩陣,把偶數行提到奇數行前的置換矩陣,DD是對角矩陣,Dn=[1ww2wn1]D_{n}=\left[ \begin{matrix} 1\\ &w\\ &&w^{2}\\ &&&·\\ &&&&w^{n-1} \end{matrix} \right]

考慮乘法運算,64232+322+032+(16+162×2)×2=32+32+162×432+32+(8+82×2)×4=32+32+32+82×86×32+64\begin{aligned} 64^{2}次乘法&\longrightarrow32+32^{2}+0 \\ &\longrightarrow 32+(16+16^{2}\times 2)\times 2=32+32+16^{2}\times 4 \\ &\longrightarrow32+32+(8+8^{2}\times 2)\times 4 = 32+32+32+8^{2}\times 8\\ &\dots \\ &\longrightarrow 6\times 32+64 \end{aligned}注意這裏乘以IIPP開銷不大,因此在考慮乘法運算開銷時沒有考慮(乘法開銷記爲0)。故FFT使得乘法運算次數變爲n2n2log2n+n=O(nlogn)n^{2}\longrightarrow \frac{n}{2}log_{2}^{n}+n=O(nlogn)
以n=1024爲例,這在計算機實際應用中根本不算大的數字,但FFT使得其乘法運算次數減少近200倍。


參考書籍
《Linear Algebra and Its Applications》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章