矩陣的三角分解是求解線性方程組常用的方法,包括lu分解,ldu分解,杜利特(doolittle)分解,克勞特(crout)分解,llt(喬累斯基cholesky)分解,ldlt(不帶平方根喬累斯基)分解等,以及為了滿足分解條件又加入行列變換的lpu分解,plu分解,lup分解,ldpu分解等。這裡矩陣的三角分解系列教程主要是針對在學習三角分解時候的涉及到的一些細節,包括很多方法的**和證明等,以及其中用到的一些矩陣操作的基礎知識,主要包括:
這個系列後面文章會用到前面文章的理論和技術,所以建議按照順序檢視。
上面介紹的都是三角分解的基礎知識,可以了解每種三角分解具體含義,推導的過程以及適用的範圍,有了前面的介紹其實自己去實現相應的三角分解方法也變得非常的簡單。但在實際使用過程中,很少自己去實現這種複雜的矩陣三角分解,大部分情況下都是呼叫現成的矩陣運算的演算法庫。這裡介紹比較常用的矩陣運算庫eigen的三角分解的一些使用方法。
eigen庫的安裝很簡單,只有標頭檔案,不包含lib檔案。以ubuntu系統apt-get方式安裝為例
sudo
apt-get
install libeigen3-dev
這裡安裝後會安裝在/usr/include/eigen3/
目錄下,但是在寫程式的時候進行#include
時候一般都不會加eigen3
這個子目錄路徑,導致經常會找不到頭頭檔案,所以通常安裝完還需要執行
sudo
ln -s /usr/include/eigen3/eigen /usr/include/eigen
eigen庫中主要包含下面這些三角分解函式
分解方法
eigen函式
適用矩陣
分解公式
partialpivlu
eigen::partialpivlu
可逆方陣
a =p
lu
a=plu
a=pl
ufullpivlu
eigen::fullpivlu
任意矩陣
a =p
−1lu
q−
1a=p^luq^
a=p−1l
uq−1
llteigen::llt
對稱正定方陣
a =l
lt
a=ll^t
a=ll
tldlt
eigen::ldlt
半正定或者半負定矩陣
a =p
tldl
tp
a=p^tldl^tp
a=ptld
ltp待續~~~
上三角矩陣下三角矩陣
要求給定矩陣,輸出其上三角矩陣或下三角矩陣 源 如下 include include include include const int m 5 void proc int array m m void main printf n proc a printf result array is n fo...
帶狀矩陣,對稱矩陣,三角矩陣
對稱矩陣 include 重要公式 p k k 1 2 p1 sizeof int p p1 p1 1 2 k sizeof int include int main printf 請輸入要詢問的數 n printf d n p for i 1 i m i else 在對角線以上可以通過對角線以下查...
判斷上三角矩陣
第5題 描述 輸入乙個正整數n 2 n 10 和n n矩陣a中的元素,如果a是上三角矩陣,輸出 yes 否則輸出 no 輸入 第一行為正整數n,表示矩陣大小。接著n行,每一行n個整數,整數以空格間隔。輸出 輸出 yes 或 no 輸入示例 33 4 5 1 2 3 1 3 4 輸出示例 no 提示 ...