линейная алгебра — Как быстро раскосить матрицу в C ++?

Я не знаю, какую библиотеку выбрать (для окон): LAPACK ++, Armadillo, IT ++, Eigen или, может быть, что-то еще?

Все, что мне нужно сделать, это проверить, является ли большая (около 10 000 * 10 000) матрица диагонализуемой, и, если это так, получить диагональ и обратимую матрицу, такую, что D = (P ^ (- 1)) * A * P. Это должно быть сделано как можно быстрее. Я понятия не имею, какую библиотеку использовать.

Кроме того, я буду рад узнать, каковы плюсы и минусы каждой из этих библиотек.

2

Решение

Это может быть довольно расплывчатый ответ, так как я не знаю, с какой именно проблемой вы столкнулись, но очень часто вам не нужна вся эта информация, т.е. вы заботитесь только о собственных значениях матрицы с наибольшим количеством энергии; а в остальном — действительно ли имеет значение, если у вас есть 0,001 в качестве собственного значения (диагонализируемая матрица) или 0,000 (недиагонализируемая)? Для многих реальных (и даже теоретических) приложений ответ «не совсем».

Итак, я предлагаю вам получить скорость отказавшись от точность или же зернистость информации, которую вы ищете.

4

Другие решения

Вы могли бы хотеть взять это с зерном соли, но Вот Вот некоторые тесты, опубликованные разработчиками Eigen. Я никогда не использовал никакую другую библиотеку линейной алгебры, кроме Eigen, но ваши потребности могут отличаться от моих.

1

Что касается поиска определителя, существует ряд различных реализаций, которые вы можете использовать. Одним из них является использование исключения Гаусса для создания верхней / нижней треугольной матрицы — это выгодно тем, что вам просто нужно умножить по диагонали, чтобы получить определитель. Если какая-либо строка или какой-либо столбец обнуляются в результате, у вас будет определитель 0, а у матрицы не будет обратного. Вы могли бы на самом деле использовать этот метод и дополнить матрицу единичной матрицей и выполнить полное исключение Гаусса-Джордана и превратить исходную матрицу в единичную матрицу, как видно на http://www.mathportal.org/linear-algebra/matrices/gauss-jordan.php .

-3
По вопросам рекламы [email protected]