1

Я работаю над проектом, который включает в себя вычисление собственных векторов очень большой разреженной матрицы. Чтобы быть более конкретным, у меня есть матрица, являющаяся лапласиан большого графа, и мне интересно найти собственный вектор, связанный со вторым наименьшим собственным значением. Конечно, Matlab занимает много времени, чтобы вычислить собственные векторы, даже потому, что он вычисляет все из них. Любые предложения? Большое спасибо AndreaБыстрое вычисление собственных векторов разреженной матрицы

+1

использовать 'eigs'? ... – bla

+0

eigs возвращает собственные значения, а не собственные векторы – MagoNick

+0

'[V, D] = eigs (A)' возвращает оба, просто прочитайте документацию http://www.mathworks.com/help/matlab/ref/eigs.html – bla

ответ

3

Вы пробовали это использование eigs:

[v,c]=eigs(A,2,'sm'); 

, например:

A = delsq(numgrid('C',256)); 
[v,c]=eigs(A,2,'sm'); 

генерирует ~ 50K х 50K разреженную матрицу и найти ее 2 smallerst собственные и собственных векторов примерно через 1 секунду в моем старом ноутбуке ...

+1

Отлично работает! Из документации я понял, что это невозможно – MagoNick

+0

да, иногда нужно прочитать документацию до конца :) – bla

+0

Сделано, спасибо вам большое – MagoNick