Armadillo之計算矩陣的行列式(determinant)

計算矩陣的行列式很簡單,用det方法或是log_det方法函數

1 det(A)spa

  若是A不是方陣的(square),將拋出std::logic_error異常code

例:文檔

mat m = "3,2,4;1,-2,3;2,3,2;";
double d = det(m);
cout << d << endl;

運行結果是-3class

2 log_det(value, sign,A)方法

    文檔裏推薦當矩陣A比較大時,使用本函數來代替det函數(估計會加快計算速度)error

    det(A)=exp(value)*sign異常

    若是A不是方陣的(square),將拋出std::logic_error異常計算機

例:ant

mat m = "3,2,4;1,-2,3;2,3,2;";
double value, sign;
log_det(value, sign, m);
cout << exp(value)*sign << endl;

運行結果是-3

    咱們知道判斷一個方陣(square matrix)是不是奇異(singular)的能夠看此方陣的行列式(determinant)是否爲0,這對於精確的數值計算而言是沒有問題的,但咱們的計算機使用的是有限數字系統,老是存在偏差的,因此一個矩陣即便是奇異,它的行列式用計算機計算出來的結果也有可能不爲0,但老是比較接近0。但通常而言,det(A)的值並非判斷A是否接近奇異的好的判斷標準。

相關文章
相關標籤/搜索