Matlab: EIGS выдаёт противоречивые результаты - PullRequest
0 голосов
/ 04 июня 2011

Я пытаюсь получить два наименьших собственных вектора матрицы:

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

Результат v является «правильным» ~ 66% времени. Когда я говорю «правильно», я имею в виду «выглядит правильно» с точки зрения проблемы, которую я пытаюсь решить, конечно. В остальное время я получаю разные векторы.

Я знаю, что Eigs использует числовой решатель, и его первоначальное предположение является случайным, что объясняет это. Что меня беспокоит, так это в соответствии с документацией Matlab. Я вижу, что допуск, используемый в качестве критерия остановки, изначально установлен на eps, и я попытался увеличить opts.maxit=10000000;, но, похоже, это не влияет на результаты и время выполнения, поэтому Я предполагаю, что допуск будет достигнут до достижения максимального числа итераций.

Что я могу сделать, чтобы получить последовательные результаты? Там нет проблем с точки зрения времени вычислений.

Обратите внимание, что матрица очень большая и разреженная, поэтому я не могу работать с eig, только с eigs

...