本文的閱讀等級:中級
給定 平面上的旋轉矩陣
,
向量 表示
在平面上逆時針旋轉
弧度。假設
,考慮這個問題:如何旋轉向量
至正X軸方向?
沒有必要明確計算出旋轉角 ,我們可以直接求旋轉矩陣
。令向量
的長度為
,即
。旋轉不改變向量長度,我們的問題是尋找
和
使得
。
乘開上式並改寫成
,
可解出
。
另一個方法從平面幾何著手,設向量 與正X軸方向夾角為
,由三角學可知
。
令 逆時針旋轉
弧度即可,因此旋轉矩陣為
。
旋轉矩陣 將向量
轉至正X軸方向的效果在於引入零元於向量中,美國數學家吉文斯 (Wallace Givens) 率先將這個看似不起眼的結果應用於計算 QR 分解,此後平面旋轉矩陣便以其名稱之。下面我們討論如何將
旋轉矩陣推廣至
,並介紹它的實際用途。
吉文斯的想法是在向量空間 中選取兩個座標軸,假設是第
軸與第
軸,
,Givens 旋轉就是在這兩個座標軸所展開平面上旋轉,以如下形式的
階方陣表示:
。
我們用 代表
的
元,Givens 旋轉矩陣的設計規則十分簡單:如果第
元為軸元,待消去者為第
元,
替換
階單位矩陣
的四個指定元
,
,
,
。下面是三階 Givens 旋轉的例子:
。
類似二階旋轉矩陣,你不須明確算出轉角 便可以得到符合要求的
矩陣。令
。
直接計算驗證 的效果就是以
的第
元為軸旋轉使消滅第
元:
。
藉由特殊設計的 Givens 旋轉,我們可以選擇消滅向量中的任何一個元──此例為第 元,除了
和
,其他每個元皆不受影響。一旦我們選定某個
當作軸元,只要施行一連串的 Givens 旋轉便可將
底下 (以及上面) 的所有元悉數消滅。
舉例來說,假設 為軸元,執行以下一序列乘法運算將第
至第
元消去:
類似 平面上旋轉,我們也有辦法將
向量旋轉至第一軸方向。事實上,此法不僅適用於第一軸,連續施行
次平面旋轉可將向量
旋轉至第
軸方向,如下:
,
其中 代表第
軸方向的標準單位向量 (第
元為
,其餘元為零)。
QR 分解是數值線性代數的一個重要矩陣分解式,目前已知有三種計算方法:Gram-Schmidt 正交化,Householder 變換,以及 Givens 旋轉 (見“QR 分解的數值計算方法比較”)。為方便說明,底下以一個例子展示利用 Givens 旋轉實現 QR 分解的過程。考慮這個 階方陣
。
Givens 旋轉的目標要消滅矩陣主對角線以下的所有元,選擇消滅的次序與高斯消去法相同。首先攻擊 的
元,對應的旋轉矩陣即為
,以
的第一行
來設定
的旋轉參數,
旋轉後得到
。
第二步要殲滅 的
元,稱該旋轉為
,由
的第一行
得到旋轉參數:
旋轉結果為
。
最後趕盡殺絕 的
元,
的第二行
給出
的旋轉參數:
經旋轉得到上三角矩陣:
。
令 代表上式等號右邊的上三角矩陣,連續三次 Givens 旋轉可表示為
,
故 可寫成分解式
。
旋轉矩陣是正交矩陣 (orthogonal matrix),,因此矩陣
的 QR 分解即為
,
其中 。正交矩陣的積仍為正交矩陣,不難驗證
。
必須一提的是,Givens 旋轉得到的 QR 分解形式不同於 Gram-Schmidt 正交化得到的 QR 分解。對於 階矩陣
,Gram-Schmidt 正交化給出的
為包含單範正交 (orthonormal) 行向量 (column vector) 的
階矩陣,而
為
階上三角矩陣。但在 Givens 旋轉產生的 QR 分解式中,
為
階正交矩陣,
則為
階矩陣。用前面的例子來說明,若
,
由矩陣乘法的行向量運算規則可知
。
為使記號一致,仍稱等號右邊的 階上三角子陣為
,亦即
,故
的 QR 分解為
。
最後我們討論如何應用 Givens 旋轉導出的 QR 分解於計算最小平方近似解。當 是滿行秩時,
且
,因為
是正交矩陣,也就有
,推知
階子陣
是可逆的。將 QR 分解代入正規方程式
,化簡係數矩陣
可得
,
並化簡常數向量 ,如下:
。
上式中, 代表由
的前
個元所構成的向量,
為
的後
個元組成的向量。原來的正規方程式變成
。
又因為 是可逆的,左乘
得到
,
最後再以反向迭代即可順利求出最小平方近似解。
这个旋转矩阵Q 是不是也可以是 [ c -s
s c] ?
文龙 指的应该是
。
两者都是旋转矩阵,区别在于一个是顺时针旋转,一个是逆时针旋转。
例子說明中有誤應為Q21*A=[Col1(4,0,3),Col2(32,15,-1),Col3(2,-14,4)}
謝謝指正。
Pingback: Solve the QR Decomposition with Givens Rotation | Mengjiao's Space
老師你好
假如有一個A矩陣
13
24
我要用GIVENS旋轉 讓4變0
所以要先算C和S
3/5 4/5
-4/5 3/5
相乘結果為
11/5 5
2/5 0
這樣算是一個GIVENS ROTATION的範例嗎
想再問一個就是 把一個元素變0的目的是甚麼 ?
謝謝
請重讀上文,Givens 旋轉的目的在使A變換為一個上三角矩陣。
老師我想請問一下
Givens旋轉是想讓哪個元素變0都可以嗎
還是一定是成為一個上三角矩陣
就以上面的題目來說
對應的旋轉矩陣Q11
要怎麼表示 ?
還有Givens旋轉除了讓元素變0
還有甚麼用途?
謝謝大師
請三讀上文。
Givens旋轉是想讓哪個元素變0都可以嗎?
的效果就是以
的第
元為軸旋轉使消滅第
元)
,所以不存在Q11)
(上文說明:
就以上面的題目來說,對應的旋轉矩陣Q11,要怎麼表示 ?
(上文說明:
還有Givens旋轉除了讓元素變0,還有甚麼用途?
(我不知道)
假如 i 不等於 j
對角線的元素要怎麼算 怎麼變0 ?
謝謝老師
老師你好
我自己去計算摸索了好久
好像有一點解題的感覺又好像不太懂
我自己所認知的GIVENS旋轉可以把消除任何一個位元
@ 第一個問題就是可以往下消成0(以最上面那行為軸), 那可以往上消成0嗎 ? 要怎麼做(老師可以給個方向嗎)?
就以上面的例子來說
0 -15 14
4 32 2
3 -1 4
我想要做的是(我只是單純的想消除為0)
假如我想把 -15 變成 0
@ 那我的旋轉矩陣是叫Q12嗎 ? ( 我自己感覺怪怪的,我有自己去算過,Xi是32,Xj是-15(這樣i,j好像顛倒了==),算出來-15的確變成0,但我不知道這樣做是不是正確的)
像例子中 0 32 4 要消除這三個變成0的旋轉矩陣=Q11 Q22 Q33( 但 i 不能等於 j )
那我要怎麼樣消除這幾個元素要怎麼去設他的旋轉矩陣,還是用其他方法(先將某個元素變0,再多轉幾次?)
我自己也有試過假如我要消除 14 2 4的4
是要先將2變0 在把4變0嗎? 還是可以直接把4變0 ?
就因為他是在33的位置 所以不知道旋轉矩陣怎麼去設
我可能不是描述的很清楚,希望老師給我指點一下
謝謝
上文已經回答了你提出的問題,就是這一段:
藉由特殊設計的 Givens 旋轉,我們可以選擇消滅向量中的任何一個元──此例為第
元,除了
和
,其他每個元皆不受影響。
I regarded the “Givens rotation” like this:
Q_{ji} act just like the 2–dimensional rotation operator on [v_i; v_j] \in R^2.
This rotation rotates the vector [v_i; v_j] to ahead e_i direction.
Other components along e_1, … , e_n except e_i, e_j are fixed as the same.
小註解:數值上用Givens方法用來算某些sparse matrix的qr分解還挺不賴的(比如tridiagonal matrix)