Точная диагонализация для устранения вырождений в основном состоянии

Я изучаю возмущенную модель торического кода , которая не разрешима аналитически. На торе вырождение основного состояния невозмущенной модели равно 4. Как только мы включаем возмущение, происходит изменение вырождения основного состояния. Я хотел бы обнаружить это изменение вырождения основного состояния численно, используя методы точной диагонализации.

На моем компьютере я сохранил действие гамильтониана на набор базисных состояний. Так что, если вы дадите мне какое-то состояние | ψ я могу дать тебе ЧАС ^ | ψ в терминах базисных состояний. Теперь я использовал эту информацию для вычисления спектра с помощью алгоритма Ланцоша и алгоритма Якоби-Дэвидсона . Хотя сам спектр воспроизводится правильно, ни один из этих алгоритмов не воспроизводит правильно вырождение основного состояния - даже в невозмущенном случае.

Отсюда следующий вопрос: каковы общие точные алгоритмы диагонализации для этого типа системы многих тел, которые правильно разрешают вырождение основного состояния?

Я с нетерпением жду ваших ответов!

Алгоритм Ланцоша может иметь проблемы с разрешением состояний, которые очень близки или вырождены по энергии. Вы повторно ортогонализируете состояния, которые вы получаете в процессе рекурсии Ланцоша?
Наш дочерний сайт Computational Science может быть хорошим местом, чтобы задать этот вопрос, если вам нужно больше деталей, чем мы можем предоставить.
Просто любопытно, почему важно делать это численно? Не проще ли было бы заняться теорией групп и выяснить, как возмущение влияет на вырождение таким образом?

Ответы (2)

Какие реализации двух алгоритмов вы используете? Насколько я понимаю, алгоритм Якоби-Дэвидсона должен хорошо справляться с вырождением.

По моему личному опыту, использование пакета ARPACK обычно достаточно хорошо даже для сильно вырожденных задач на собственные значения (примерно в 10 раз или даже больше), если предоставляется достаточно большое рабочее пространство. ARPACK использует так называемый метод неявного перезапуска Lanczos. Все, что для этого требуется, — это применить матрицу к любому заданному вектору, что у вас и есть.

Вы должны использовать процедуру повторной ортогонализации (Грама-Шмидта) на каждом шаге Ланцоша, чтобы правильно зафиксировать это вырождение. Я обнаружил, что вырождение не будет правильно зафиксировано, если вы не ортогонализуете свои векторы Ланцоша. Я использовал Ланцоша на двумерной антиферромагнитной модели Китаева, которая имеет 4-кратно вырожденное основное состояние, и Ланцош правильно уловил это только после реализации процедуры Грама-Шмидта.

Хотя это поможет найти правильное вырождение в собственных значениях гамильтониана, у Ланцоша все еще есть трудности с фактическим состоянием. В конечном итоге Ланцош вернет соответствующие 4-вырожденные состояния в виде произвольной линейной комбинации. Я не знаю, как решить эту проблему.