數值計算方法(二)·矩陣及其分解
這個系列是數值計算方法的筆記,目錄請見:
這一部分很長,主線是各種“使解線性方程組
輕鬆一點的辦法”,把基本的矩陣分解法講完了。下面是它的小目錄:
在介紹矩陣分解之前,首先要知道一些特殊的矩陣和性質:
一些特殊矩陣
條件數
奇異值
然後才能講矩陣的常見分解方法,我會在標題裡寫出這種分解方法適用的矩陣:
方陣的Doolittle分解(Gauss消去、LDU分解、Crout分解)
方陣的PLU分解(帶列主元的Gauss消去法)
三對角矩陣的三角分解
對稱正定矩陣的Cholesky分解
滿秩陣(不一定是方陣,特別適用於病態陣)的QR分解
方陣(特別是複數方陣)的Schur分解
方陣(特別是不可對角化矩陣)的Jordan分解
任意矩陣(特別是長方陣)的奇異值分解
一些特殊矩陣
酉陣(實數範圍內即為正交陣):
,具有F-範數不變性(實際上也具有奇異值不變性、2-範數不變性、2-條件數不變性)
正規矩陣:
Hermite矩陣(實數範圍內即為對稱陣):
反(斜)Hermite矩陣:
作為了解
條件數
是矩陣的條件數
(使用運算元範數)
。
1。條件數越大,
裡
的一點變動
對解的影響越大,越病態。
2。根據所選擇的範數有1-條件數、2-條件數和∞-條件數,其中
3。矩陣的條件數有如下性質:
4。第3條的3)說明矩陣乘法算出來的結果,條件數最大可能到兩者條件數的積,實際上放大了病態性,但是對酉矩陣
來說有:
說明乘酉矩陣不會增加病態性。
以上定理作為了解
奇異值
方陣有特徵值,外拓到長方陣,還有奇異值:
1。奇異值具有酉變換不變性
2。非零特徵值個數≥非零奇異值個數=秩
3。矩陣的2-範數是其最大奇異值,F-範數是奇異值平方和開根號(用F-範數酉不變性解釋)
4。矩陣的行列式=特徵值之積,矩陣的跡=特徵值之和
方陣的Doolittle分解(Gauss消去、LDU分解、Crout分解)
Doolittle分解裡的
是對角元為1的下三角陣(單位下三角陣),LDU分解裡
是對角元為1的下、上三角陣,Crout分解裡
是對角元為1的上三角陣。
手工計算一般是採用Gauss消去的方法:
1。用初等行變換,將
的第1列的
下面的元素消成0(此時左乘
),將第二列的
元素下面的元素消成0(此時再左乘
)……最後得到了
;
2。把剛才的行變換陣取逆再按出現的順序乘起來:
這一步有兩個技巧:
1。行變換陣取逆和單位下三角陣一樣,把1下面的元素全部取負號就行:
2。行變換陣的乘積就是把所有數字寫進來就行:
如果要寫演算法的話,把矩陣寫開,對應未知量設好,比如Doolittle分解:
對應就有:
Doolittle分解解出的兩個矩陣存在且唯一的充分條件是
階方陣
的前
個順序主子式均不為0。
如果順序主子式有為0的情況,分解可能還存在,但是即使存在也不唯一。比如下面這個矩陣,第二個順序主子式是0,但是仍然可以分解:
Doolittle分解的原理雖然是Gauss消去,但是計算量大大減小了:
1。Doolittle分解要使
,Gauss消去法要使
,以乘法次數計,這兩種計算量都是
(思考:為什麼生成
並不需要計算量?)
2。解上下三角陣×向量=常向量計算量是
3。Doolittle矩陣好在係數矩陣不變時,不用重新分解
方陣的PLU分解(帶列主元的Gauss消去法)
帶列主元的Gauss消去法和PLU分解在每一步多了個選主元的步驟:第
步左乘
實際上是讓
行分別除以
,這個數如果太小,誤差就會相當大,所以要把第
行下具有最大
的行交換上來
無論是手工計算還是程式設計,都可以採用先交換主元,再利用新的矩陣
進行LU分解的辦法,比如對矩陣
先將1與3兩行交換,然後新的2與3兩行再交換,這兩步的操作分別對應左乘矩陣
由此已經產生了
然後對
進行LU分解:
三對角矩陣的三角分解
三對角矩陣的三角分解是一種特殊的LU分解,它的展開形式是
它的計算首先要將
直接替換成
,然後按照上圖藍箭頭的順序,依次計算。
對角列佔優,側對角線上沒有零元素是三角分解存在且唯一的充分條件。
三對角矩陣特殊在它能用四個向量
儲存方程裡
裡需要的所有元素,由此計算出的
仍然一一存放在對應的位置。
對稱正定矩陣的Cholesky分解
Cholesky分解
僅適用於
對稱正定矩陣
,其中
是一個下三角陣
分解一定存在,如果規定
的對角元是正數,則分解也是唯一的
Cholesky法計算量是Gauss消去法的一半
滿秩陣(不一定是方陣,特別實用於病態陣)的QR分解
矩陣QR分解
適用於
滿秩陣
,其中
是一個正交陣(思考:最後一步由
求
可以怎麼求?),
是一個對角元都大於0的上三角陣
由於分解後是乘正交陣
,條件數不變,適合分解病態性比較大的矩陣
我們要計算QR分解,就要利用Householder矩陣,即當
時的以下矩陣:
Householder矩陣的特性是
對稱正交,左乘向量進行鏡面變換
:
(4)把x鏡面變換到座標軸的一個正方向上了
要計算QR分解,就要用Householder矩陣形成的正交陣不斷左乘
,利用Householder矩陣的性質(4)讓
的第一列投影到
的方向上,第二列從第二個元素開始再投影到
的方向上……從而達到這樣的效果:
比如分解下面這個矩陣:
它的完整解如下圖:
對滿秩陣,這種分解是存在的,但並不唯一,當限制
具有正對角元時才唯一
方陣(特別是複數方陣)的Schur分解
矩陣的Schur分解
對所有復空間方陣
成立
其中
為上三角陣(即使
是實的,
也可能是復的),
和#FormatImgID_125#具有相同特徵值
。
是酉陣
透過Schur分解可以得到以下結論:
這個主要是理論分析用的,計算方法略。
方陣(特別是不可對角化矩陣)的Jordan分解
Jordan分解
適用於任何方陣,其中
是Jordan陣,
是一個可逆陣
Jordan分解首先需要知道Jordan塊和Jordan陣,其中Jordan塊在階數為
,對角元始終為
的對角陣的基礎上,上對角線上填了1,通常寫作
,如:
Jordan陣
是對角分塊矩陣,對角位置填入Jordan塊。對角矩陣也是Jordan陣,因為它的階數為1。
求解Jordan分解需要先求
,然後求正交陣
。求
的時候需要求解每一個特徵值
的代數重數
和幾何重數
1。代數重數
=特徵方程
中根
的重數=Jordan標準型對角元中
的個數
2。幾何重數
=
對應的線性無關特徵向量的個數=
對應的Jordan塊的個數
3。具體階數為
的Jordan塊有
個,其中
4。矩陣可以進行對角化的充要條件是每一個特徵值
都有
求解
要將
寫成
,再按Jordan塊分解開:
Jordan鏈需要一個鏈首
,它要在特徵值
對應的線性無關特徵向量裡找,需要注意,直接求出來的線性無關特徵向量可能都不能做鏈首,要能根據以下式子,取
求出非零的向量:
然後再根據該式,逐步求解整個鏈中的向量,直至
達到該Jordan塊的階數
。這個過程需要懂解齊次方程組和非齊次方程,見
[1]
,剛才的例子繼續求解如下:
不計Jordan塊排列順序,這種分解存在且
是唯一的(即使
唯一,
仍有可能不同)
任意矩陣(特別是長方陣)的奇異值分解
,前者是滿的奇異值分解,後者是約化的奇異值分解
式中
都是酉陣(思考:為什麼求其分量的時候必須
標準化?
),
是含有
的所有非0奇異值的對角陣
求解奇異值分解要根據以下步驟:
計算
的奇異值,組成矩陣
已知
則
是
的特徵向量組成的酉陣,計算
,
記得標準化。
然後把
分塊成
計算
,可以證明它的列已經正交了,不用擔心
判斷是否需要計算
(
),需要算就取
個跟
正交的單位向量即可,組成
不考慮
的排列,奇異值分解必然存在且
唯一
參考
^
如何求解基礎解系
https://www。jianshu。com/p/9c4426fdf20c