Я могу использовать Lapack для вычисления собственных значений и собственных векторов больших разреженных матриц?

Если у меня была квадратная матрица, которая составляет 1,000 на 1,000, Lapack мог вычислить собственные векторы и собственные значения для этой матрицы? И если бы это может, сколько времени это взяло бы? Также что относительно для матрицы 10,000 на 10,000 или даже матрицы 1,000,000 на 1,000,000?

Обратите внимание, что они будут разреженными матрицами, прежде всего, заполненными 0s (матрицы будут графиками, представляющими социальные сети). Есть ли какие-либо специальные процедуры в Lapack для контакта с разреженными матрицами? Я вижу рекомендацию Arpack. Но это допускало бы вычисление очень больших матриц?

11
задан Spencer 20 July 2010 в 18:50
поделиться

3 ответа

LAPACK не имеет специальной встроенной поддержки для разреженных матриц, но ARPACK имеет. В зависимости от машины, на которой вы планируете работать, это может исключить использование LAPACK, так как для очень больших матриц может не хватить памяти. См. http://www.netlib.org/utk/people/JackDongarra/la-sw.html для обзора различных библиотек линейной алгебры.

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

Исходя из других ваших вопросов, я бы рекомендовал остановиться на MATLAB. Он поддерживает разреженные матрицы и вообще хорошо подходит для линейной алгебры.

9
ответ дан 3 December 2019 в 08:53
поделиться

Lapack поддерживает только плотные и ленточные матрицы (не поддерживает общие разреженные матрицы). Поэтому, если ваша разреженная матрица не имеет полос (из вашего описания это звучит так, как будто это будет общая разреженная матрица, обычно хранящаяся в схеме хранения сжатых строк), то Lapack - это не то, что вы хотите использовать.

Для больших разреженных матриц хорошим местом для начала будет Arpack.

1
ответ дан 3 December 2019 в 08:53
поделиться

Если ваши матрицы разреженные, вам, вероятно, лучше использовать пакет разреженных матриц . См. Эту статью на StackOverflow для получения дополнительной информации.

Используя Lapack, вы можете сделать 1000 x 1000 за пару секунд (в зависимости от вашей машины). 10000 x 10000 займет в 1000 раз больше времени, поскольку все алгоритмы имеют тенденцию быть O (n ^ 3).

3
ответ дан 3 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: