矩陣的三角分解系列六 Eigen中的三角分解

2021-10-10 23:11:52 字數 1369 閱讀 8399

矩陣的三角分解是求解線性方程組常用的方法,包括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 提示 ...