Как вычислить матрицу определителя с помощью lapack++ (2.5+)
Каков наилучший (самый быстрый) способ вычисления определителя (несимметричной квадратной) матрицы LaMatGenDouble с библиотекой lapack++?
2 ответа
Решение
Один из способов вычислить определитель - использовать разложение LU:
LaVectorLongInt pivots(A.cols());
LUFactorizeIP(A, pivots);
double detA = 1;
for (int i = 0; i < A.cols(); ++i)
detA *= A(i, i);
Внимание, A изменится, поэтому рекомендуется сделать копию.
Я не знаю о lapack ++, но я уверен, что нет стандартного lapack, проверьте. Насколько я знаю, lapack ++ не реализует саму матричную операцию, а использует другие, на самом деле вы можете переключаться между несколькими из них (atlas, mkl (библиотека ядра Intel Math) и т. Д.). Поэтому я предполагаю, что в lapack ++ также есть какая-то определительная операция.