矩陣的QR分解-Householder分解
格拉姆-斯密特迭代在
矩陣
的右邊逐次應用
初等三角矩陣
,所得矩陣
有正交的列。乘積
也是上三角的,因此
是
的一個約化的
因子分解
。
與之對照,豪斯霍爾德方法在
的左邊逐步應用
初等酉矩陣
,所得矩陣
是上三角的,乘積
也是酉矩陣。因此
是
的一個完全
分解。
這兩個方法可以總結為:
Gram-Schmit:
三角形
正交化
HouseHolder: 正交三角形化
HouseHolder方法的核心思想是選擇矩陣
,使得在第
列對角以下引入零元素,而保持先前引入的零元素不變。例如,在
情形,
次用到的運算:
首先,
在第1至5行計算,在位置
引入零。
然後,
在第2行至5行上運算,在位置
引入零而不破壞由
引入的零。最後,
在第3至5行上計算,在位置
引入零而不破快早先引入的任何零元素。
一般而言,
在
的第
行上運算。在第
步的開始,這些行的前
列有一個零元素的塊,
的應用組成了這些行的線性組合,而零元素的線性組合仍為零。
步之後,所有對角線下的元素已經消去,
為上三角矩陣。
那麼,怎樣構造這樣的酉矩陣呢?標準的方法如下,每個
選擇為一個形如
的酉矩陣,其中
為
單位矩陣,
為一個
酉矩陣,乘以
一定要將零引入第
列。
豪斯霍爾德演算法
(HouseHolder)選擇
為一個特殊的矩陣,它稱為豪斯霍爾德鏡射運算元(Householder reflector)。
假設在第
步開始,第
列的第
個元素由向量
給出。為了把修改的零引入第
列,豪斯霍爾德鏡射運算元
應該具有以下對映的效果:
映象運算元將橫跨正交與
的
超平面
來鏡射空間
。我們先以
為例:豪斯霍爾德鏡射運算元
豪斯霍爾德鏡射運算元示意圖
如圖所示豪斯霍爾德鏡射運算元將
對映到
,回憶投影運算元的概念,對於任意的向量
投影到平面H的投影為:
但是豪斯霍爾德鏡射運算元不僅僅是將
投影到平面
,而是走到點
距離平面
兩倍遠處,因此,映象運算元
為:
矩陣
是
如果
需要投影到
上,則
。兩種不通的投影方式的如下圖所示:
兩種鏡射方法的比較
從數學上看,符號的每種選擇都令人滿意。然而,為了數值穩定性的目的——對舍入誤差的不靈敏——要求限定一種選擇而不考慮其他。為了數值穩定性,希望鏡射到不太接近
自身的向量
。為了做到這一點,可以選擇
。這樣,鏡射向量就成為:
或者乾脆去掉因子-1,得到
下面給出全部的豪斯霍爾德演算法,此演算法計算一個
矩陣
的
因子分解的因子
,佔用以前
的儲存空間。在這個過程中,儲存了
個鏡射向量
,以備後用。
HouseHolder演算法
在演算法結束的時候,
已經化為上三角形式,這就是
因子分解
中的矩陣
。然而酉矩陣
尚未被製造出來,也沒有它對那個約化
因子分解的
列子矩陣 。究其原因是因為構造
或者
需要有額外的工作,而且在很多應用中,也可以避免這樣做,這隻要透過直接地處理公式:
或者其
共軛
即可。(這裡的每個
都是
埃米爾特矩陣
,因此轉置就是本身)。
正如前面章節所講到的。正方的
方程組
可以藉助
的
因子分解求解,在此過程中,唯一要用到
的是乘積
的計算,因此,可以將
依次運用到
上即可。
演算法:乘積Q*b的隱式計算
類似地,乘積
的計算可以用同樣的過程以相反的次序來完成
演算法:乘積Q*x的隱式計算
當然,有時候希望顯示地構造矩陣
,這可以用各種方法來完成,可以計算
的列
來構造
。
但是,如果
是秩虧損的,則豪斯霍爾德演算法不一定能夠順利執行下去,因為在執行過程中會遭遇
的情況。這個問題可以透過列置換後的
的
分解來解決,即
,其中,
是置換矩陣。
例:如果
是它的
分解,則
。在計算時肯定會遭遇
的情況,導致演算法不能繼續下去。
幸運地是,可以做簡單的修改來解決這個問題。修改的演算法計算分解
其中,
,
是
正交
的,
是上三角形矩陣且是非奇異的,
是置換矩陣。再豪斯霍爾德演算法中,每次得到
之前,都要計算一下
列的向量
,取得
中的
,然後交換
兩列,即右乘
。實際演算法實現中,可以使用一個向量
記錄
,即
表示第列進行了互換。
如果利用對於任何正交矩陣
均成立的性質:
那麼不必每一步重新計算列範數。因為我們可以透過修正舊的列範數來得到新的列範數。
這使用列選住院的工作量由
下降到
個
。
下面是列選主元的HouseHolder演算法:
列選主元的HouseHolder演算法
上一篇:電大沒有拿到證,可以報自考本嗎?
下一篇:光纖通訊技術的發展現狀