Как вычислить матрицу определителя с помощью 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 ++ также есть какая-то определительная операция.

Другие вопросы по тегам