改進的格拉姆-施密特正交化(modified Gram-Schmidt Process)
最近在重新學習線性代數,學習的教材是MIT Gilbert Strang 教授的《INTRODUCTION TO LINEAR ALGEBRA》,在第4.4章節格拉姆-施密特正交化時,書中章節末尾介紹了一種改進的格拉姆-施密特正交化方法,但書中給出了公式,省略了很多細節,給學習理解造成了一定的難度,為自己今後或者遇到同樣問題的朋友記錄一下公式的來由。
首先,介紹一下格拉姆施密特正交化的思想和方法。介紹正交化還得說說投影矩陣,我們在用最小二乘法解方程組的最優解的時候,由於Ax=b,b一般情況下,b並不一定存在於A的列空間中,這種情況下Ax=b其實是無解的,因為找不到列空間內合適的線性組合使其結果為b。這是後最小二乘法就派上用場了,最小二乘法的思想是,既然Ax
在線上的投影矩陣,這是後a是線上的向量:
在子空間上的投影矩陣:。
知道投影矩陣之後,那麼為什麼要正交化呢,有什麼好處呢?投影矩陣中包含,使得普通的投影矩陣並不是那麼漂亮,這一向給求解帶來了很大的麻煩,那麼能不能消除它呢?答案就是找到A列空間的一組標準正交基Q,因為對於標準正交基有如下性質
格拉姆-施密特正交化是A的一個因子分解,叫QR分解,A=QR,Q就是格拉姆-施密特正交化的標準正交矩陣,R是一個上3角矩陣,假設M=( a b c),M的QR分解是如下形式:
為什麼R會是這樣的上3角矩陣呢,原因是格拉姆-施密特正交化的過程,a在和方向一致,所以在上投影為0,同樣b只在上有分量在上沒有分量,格拉姆-施密特正交化的過程保證了A前面的列不會在後面的正交向量方向有分量,因為後面的正交分量始終是垂直於前面的列構成的向量子空間,也就是說與前面的列向量都垂直。下面我們推導一下就是b在方向投影的模長,這對後面理解改進的格拉姆-施密特正交化至關重要。
b在上的投影由線上的投影矩陣知道:
,,可以推論R中其他項也是對於的向量在正交基向量上投影的模長。
前面的準備知識夠了,接下來,我們可以搬出改進的格拉姆-施密特正交化的公式了A是mxn階矩陣:
下面的公式從開始計算在上的模長(在上的模場由已經求得):
改進的格拉姆-施密特正交化就是上面的4個公式,下面我們就分析下這四個公式各自的含義:
就是QR分解中R對角線上的值,如果對應上面舉例的QR分解,那麼,前面已經證明了R中的項是對應向量在正交基向量上投影的模長,是在方向上的投影,的表示式對應的正是在方向上的投影的模長。
是的第j個元素值,來源於前面的格拉姆-施密特正交化,,。
是QR分解中對角線之外的元素表示式,像的向量內積展開,這裡有個小小的拐彎要知道,原來R矩陣第j列的元素對應的是,而這裡通過迭代計算的方式,第一步,與元表示式一致,但是從第二次迭代開始,由第四個公式知道,這時,這時候的,因為,從幾何上理解與正交,在上的分量不會對在上的分量的模長產生貢獻,或者說在上的分量在上的投影為0,在計算到的投影時,可以先將在上的分量減掉。
就是在迭代過程中從減去前面計算過的方向分量的剩餘補向量。
下面我們用改進的施密特正交化做一下上面介紹施密特正交化對M=(a b c)矩陣做的事情,直觀的看看它和標準的施密特正交化的不同之處:
摘抄一段書上改進的格萊姆-施密特正交化的matlab程式碼:
for j=1:n %modified Gram-Schmidt v=A(:,j); %v begins as column j of A for i=1:j-1 %columns up to j-1, already settled in Q R(i,j)=Q(:,i)'*v; %compute v=v-R(i,j)*Q(:,i); %subract the projection end %v is now perpendicular to all of R(j,j)=norm(v); %diagonal entries of R Q(:,j)=v/R(j,j); %normalize v to be the next unit vector q_{j} end