2013-06-25 7 views
2

У меня есть разреженные квадратные матрицы размером порядка 10000 - 100000. Я использую язык программирования C++ с armadillo и eigen в качестве библиотек для линейной алгебры, с которыми я знаю, как работать с плотными матрицами.Как получить собственное разложение разреженных матриц с помощью armadillo или собственных библиотек?

Как я могу получить собственное разложение (собственные значения и собственные векторы) больших разреженных матриц с использованием этих библиотек? Можем ли мы получить собственное разложение из разреженных функций Холецкого из Eigen?

ответ

3

Ни одна из этих библиотек не обеспечивает разреженное разложение по собственным значениям. В Eigen unsupported/вы найдете оболочку в библиотеке ARPACK C. Обратите внимание, что вычисление всех собственных значений большой большой разреженной матрицы является чрезмерно дорогостоящим. Обычно люди вычисляют только самые большие, что может сделать ARPACK.

+3

Обновление: начиная с версии 4.000, [Armadillo] (http://arma.sourceforge.net) поддерживает [собственные разложения] (http://arma.sourceforge.net/docs.html#eigs_sym) разреженных матриц – mtall

0

Чтобы ответить на ваш второй вопрос: нет, знание факторизации Холецкого (LL^T или LDL^T) бесполезно для проблемы с собственным значением.