Разложение собственного вектора (спектральное)

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

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


person Spencer    schedule 20.07.2010    source источник
comment
Для очень большой разреженной матрицы. Это для анализа сети.   -  person Spencer    schedule 20.07.2010
comment
Опишите матрицу, пожалуйста. симметричный, настоящий? отшельник? никто из всех   -  person FFox    schedule 20.07.2010
comment
Вещественные, квадратные, симметричные и несимметричные матрицы. Разреженный означает, что большинство значений будут равны 0, а остальные значения не превышают единицы.   -  person Spencer    schedule 20.07.2010


Ответы (3)


В любом случае я бы порекомендовал использовать специальный пакет линейной алгебры, такой как Lapack (Fortran, но может быть вызван из C) или CLapack. Оба бесплатны и предлагают подпрограммы практически для любой задачи на собственные значения. Если матрица большая, может быть предпочтительнее использовать ее разреженность, например. с помощью Arpack. Все эти библиотеки имеют тенденцию сортировать собственные векторы в соответствии с собственными значениями, если они могут (действительными или чисто мнимыми собственными значениями).

person FFox    schedule 20.07.2010

См. книгу "Численные рецепты в C"

person Mitch Wheat    schedule 20.07.2010

И хит №1 в Google (поиск: код декомпозиции собственных значений C#)

http://crsouza.blogspot.com/2010/06/generalized-eigenvalue-decomposition-in.html

не помогает?

person Tobiasopdenbrouw    schedule 20.07.2010
comment
Я специально пытаюсь найти код, в котором самое высокое собственное значение (и, следовательно, связанное с ним собственное значение) находится в первом столбце. Будет ли это верно для этой программы? - person Spencer; 20.07.2010