Как вычислить первое собственное значение и собственный вектор в Фортране

Я попытался использовать ARPACK на нескольких примерах (здесь) , но я даже не мог понять, как ввести свою матрицу. Из этого вопроса Кажется, что реализации на Python и Matlab — единственное решение, позволяющее избежать сложности ARPACK. Есть ли какой-нибудь (на основе Фортрана) способ сделать это, также избегая вычисления всех собственных значений/собственных векторов?


person Garini    schedule 07.08.2017    source источник
comment
Кажется, почему так кажется? В чем ваша настоящая проблема? Удалось ли вам вообще использовать ARPACK? В чем вопрос? Как правильно войти в матрицу? Как вы это сделали, когда это не сработало? Как проявилась проблема? Сообщения об ошибках? Неправильные результаты? Как выглядел ваш код?   -  person Vladimir F    schedule 07.08.2017
comment
Весь вопрос в заголовке. Я нашел ARPACK слишком сложным для моей проблемы, и я хотел бы знать, есть ли более простой способ сделать это в Fortran.   -  person Garini    schedule 08.08.2017
comment
Вы в курсе, что вопросы о рекомендациях библиотек не по теме? Вместо этого вы должны описать проблему и что уже сделано для ее решения.   -  person Vladimir F    schedule 08.08.2017
comment
Проблема проста, и решение должно быть строкой кода. Если это вызов библиотеки, или оболочки, или системного вызова, или чего-то еще, это не имеет отношения ко мне. Я попытался прочитать очень хорошо написанное руководство по ARPACK, но это действительно излишество для моей конкретной проблемы. Других способов в сети не нашел. Если бы этот вопрос больше подходил для других платформ вопросов и ответов, я прошу прощения.   -  person Garini    schedule 08.08.2017


Ответы (1)


Я написал оболочку, которой нужно только установить матрицу A и количество собственных значений (например, nev = 1, если вам нужно только первое собственное значение). Код адаптирован из конкретного приложения, которое можно найти здесь. В моей модульной версии нужно только установить матрицу A, количество признаков, количество собственных значений и какие strong> из них следует взять ('LM' - Largest Magnitude'.

Код доступен в виде Gist здесь.

NB: ARPACK отличается от LAPACK, поскольку он обычно оптимизируется для плотных матриц, а этот оптимизирован для больших разреженных матриц.

Пакет ARPACK предназначен для вычисления нескольких собственных значений и соответствующих собственных векторов больших разреженных или структурированных матриц с использованием метода неявного перезапуска Арнольди (IRAM) или, в случае симметричных матриц, соответствующего варианта алгоритма Ланцоша. Он используется многими популярными вычислительными средами, такими как SciPy, Mathematica, GNU Octave и MATLAB, для обеспечения этой функциональности. (источник: Википедия)

person Garini    schedule 17.08.2017