計算矩陣的行列式很簡單,用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是否接近奇異的好的判斷標準。