Я пытаюсь получить два наименьших собственных вектора матрицы:
[v,c]=eigs(lap,2,'sm');
Результат v
является «правильным» ~ 66% времени. Когда я говорю «правильно», я имею в виду «выглядит правильно» с точки зрения проблемы, которую я пытаюсь решить, конечно.
В остальное время я получаю разные векторы.
Я знаю, что Eigs использует числовой решатель, и его первоначальное предположение является случайным, что объясняет это. Что меня беспокоит, так это в соответствии с документацией Matlab. Я вижу, что допуск, используемый в качестве критерия остановки, изначально установлен на eps
, и я попытался увеличить opts.maxit=10000000;
, но, похоже, это не влияет на результаты и время выполнения, поэтому Я предполагаю, что допуск будет достигнут до достижения максимального числа итераций.
Что я могу сделать, чтобы получить последовательные результаты? Там нет проблем с точки зрения времени вычислений.
Обратите внимание, что матрица очень большая и разреженная, поэтому я не могу работать с eig
, только с eigs