本文的閱讀等級:中級
目前已知三種主要的 QR 分解計算方法包括 Gram-Schmidt 正交化 (見“Gram-Schmidt 正交化與 QR 分解”)、Givens 旋轉 (見“Givens 旋轉於 QR 分解的應用”),和 Householder 變換。本文介紹最後一種方法:利用特殊設計的 Householder 變換於矩陣的正交化簡 (orthogonal reduction),從而得到 QR 分解。
令 為一
維實向量,
,Householder 變換矩陣具有以下形式 (見“特殊矩陣(4):Householder 矩陣”):
Householder 矩陣 的幾何意義為基本鏡射 (反射) 變換,單位向量
是鏡射超平面 (hyperplane) 的法向量。直接計算可確認
是對稱矩陣,
,並且是正交矩陣 (orthogonal matrix),
所以 ,也稱作對合 (involutory) 矩陣。
下面我們設計一特殊 Householder 矩陣。設 為一
維非零實向量,為簡化符號,以下我們令
代表
的向量長度,
。考慮法向量
其中 ,
經鏡射變換
的像為
因為 ,就有
合併以上結果即得
這個精心設計的特殊 Householder 矩陣 將向量
「鏡射」至
的第一軸上,亦即
除了第一元外,其他各元皆為零,此性質使得 Householder 矩陣得以應用於一般矩陣的正交化簡 (
為正交矩陣,故得此名)。讀者或許納悶上述 Householder 矩陣的法向量
究竟如何導出?過程其實很簡單,假設
滿足
,合併兩式,即有
整理得到
這指出 和
同向,故令
為
正規化後的單位向量。
設 是一個
階實矩陣,以行向量 (column vector) 表示為
,
。令
,且
由此建構 階 Householder 矩陣
,就有
故左乘 即可完全消滅
中
以下所有元:
其中 ,
為右下
階分塊。繼續對分塊
按同樣方式執行正交化簡,設計一
階 Householder 矩陣
以消滅
分塊
以下各元。令
設 ,代入上式可確認
是 Householder 矩陣。左乘
可消滅
中
以下各個元:
若 ,連續左乘
個
階 Householder 矩陣可使
階矩陣
化簡為
其中 是
階上三角矩陣。因為
,
的 QR 分解式就是
不難證明 是正交矩陣。若
,執行
次 Householder 矩陣乘法可將
化簡成梯形矩陣:
上式中 是
階上三角矩陣,QR 分解則為
下面我們用一個例子展示 Householder 正交化簡於 QR 分解的應用。考慮
為消滅矩陣 中
以下各元,令
,就有
令 。由前述討論可知
,再利用下式
即得
為消滅 中
以下各元,考慮
。令
,則
又令 ,其中
階矩陣
,依照前述計算方式,可得
也就有
這個結果與 Givens 旋轉導出的 QR 分解式相同。請讀者注意,對於 階矩陣
,Householder 變換和 Givens 旋轉得到的 QR 分解與 Gram-Schmidt 正交化得到的 QR 分解具有不同形式,詳細討論請參閱“Givens 旋轉於 QR 分解的應用”。
周老师,Gram/Schmitt方法,Givens旋转,Householder翻转 三种方法对一个矩阵做QR分解从计算量和数值稳定性上讲那种方法最值得推荐呢?
說來話長,下回就來討論這個問題。
对于矩阵
,针对非奇异(
)和column满秩(
)两种情况,Householder变换和Givens变换实现的QR分解都是唯一的吗?
如果限定
的主對角元為正值,則非奇異方陣與full col rank矩陣有唯一的QR分解,不過後者的形式為
,
和
是唯一的,但
則否。
周老師你好:
H1A 可以消滅 A中(1,1)以下所有元
要消滅H1A中(2,2)以下各元 要考慮A2(即A矩陣右下角的分塊)去做H2計算
我想請教的
當H2H1A 時,要怎麼去推導證明 H2乘上去 第一行不會改變 ?
每次要消滅(2,2)以下的元,都要取A矩陣右下角的分塊來計算
(可以以整個矩陣來看 不要做分塊的計算 來證明第一行不會變嗎 )
假如例題都不一樣,每次不是都要在證明一次
還是householder就是這樣子計算的
謝謝
根據分塊矩陣乘法,

所以上面例子是將 H1A 分塊成4塊
分別為 r11,0, r1^T,和(m-1)*(n-1) 四塊 嗎 ?
r1^T(這邊是指 r12 到 r1n 嗎) ?
老師你回應的b^T 是指 ?
謝謝
我將上例稍作補充,請再看一次。
我在看了一次
還是不太懂也不敢確定 我想的是不是正確的
所以麻煩老師解惑
上面的描述 r1^T(是指 r12 到 r1n 嗎) ?
還有H2 的0^T 所代表是甚麼意思 為什麼不寫0就好
謝謝
本文
是column vector,
是row vector。
老師好
雖然結果沒差,不過例子那段
v_2=…=\frac{1}{ \sqrt{2}} [1 1]^T
是不是要加個負號?