Armadillo之LU分解(LU factorisation/LU decomposition)

在armadillo庫中,矩陣的LU分解(LU factorisation or LU decomposition)使用lu函數,lu函數有兩個版本算法

1 lu(L,U,P,X)函數

    其中X是欲進行分解的矩陣,分解生成L,U,P知足spa

    1)P是一個置換矩陣(permutation matrix),因此P的逆(inverse)等於它的轉置(transpose)code

    2)L是一個單位下三角形矩陣(unit lower triangular matrix)it

    3)U是一個嚴格上三角形矩陣(strict upper triangular matrix)io

    4)PX=LU 也即 PTLU=Xclass

    例:angular

mat m = "2,4,2;1,5,2;4,-1,9;";
mat l, u, p;
lu(l, u, p, m);
cout << "L:" << endl;
l.print();
cout << "U:" << endl;
u.print();
cout << "P:" << endl;
p.print();

    運行結果:im

    

2 lu(L,U,X)img

    其中X是欲進行分解的矩陣,分解生成L,U知足

    1)U是一個嚴格上三角形矩陣(strict upper triangular matrix)

    2)X=LU

    因爲算法的緣由,使用本函數分解生成的L通常不是下三角形的。

    例:

mat m = "2,4,2;1,5,2;4,-1,9;";
mat l, u;
lu(l, u, m);
cout << "L:" << endl;
l.print();
cout << "U:" << endl;
u.print();

    運行結果:

    

    注意:若是矩陣X不能被分解,lu函數返回false並清空L,U,P矩陣。分解成功lu函數返回true.

相關文章
相關標籤/搜索