Я численно рассчитал плотность состояний (DoS) для трехмерной дисперсии сильной связи. и получил следующий график [ был выбран].
То, что я сделал, это суммирование -точки решеточной функции Грина,
Легко заметить, что при низких энергиях появляются шумы. Есть ли альтернативный способ получить лучший результат? Как показано на рисунке из статьи [Ссылка: arXiv:1207.4014]:
Может ли быть какое-то математическое стандартное выражение, которое можно рассчитать с помощью Mathematica или Matlab?
Связанный бонусный вопрос: можно ли применить тот же метод к асимметричной треугольной решетке, имеющей дисперсию ?
Извините за поздний ответ, но, надеюсь, это может быть полезно для кого-то еще!
Вы можете уменьшить шум, используя эллиптический интеграл.
Где K — полный эллиптический интеграл первого рода: http://mathworld.wolfram.com/CompleteEllipticIntegraloftheFirstKind.html .
Добраться сюда не так уж и просто. И даже из этого выражения интеграл нужно делать численно с осторожностью (он имеет особенности при многих значениях ), но это должно дать лучшие результаты. Запуск в течение шести секунд в Mathematica дает мне (с ):
TL;DR
С Matlab
или Mathematika
помочь не могу, но Python
есть реализация: sc_dos Здесь
это половина пропускной способности
.
import numpy as np
import gftool as gt
eps = np.linspace(-1.2, 1.2, num=6001)
dos = gt.sc_dos(eps, half_bandwidth=1)
У меня оценка DOS занимает ~100 мс.
Вы уже привели правильные выражения. У нас есть функция Грина
Наивная сумма по очкам чрезвычайно требовательна, так как огромное количество точки необходимы в 3 измерениях.
Чтобы сгладить функцию, мы можем вычислить функцию Грина на контуре, параллельном действительной оси, сдвинутой на конечную величину. в верхнюю комплексную полуплоскость:
Чем больше мы выбираем тем плавнее становится функция, но, с другой стороны, мы теряем функции.
Поскольку нас интересует только термодинамический предел , более разумный подход, чем просто выборка , состоит в замене суммы интегралом. Для интегралов у нас есть более или менее эффективные алгоритмы.
Итак, давайте посчитаем
И, наконец, мы можем использовать аналитические результаты для интегралов. Отметим, что мы можем выразить трехмерную функцию Грина в терминах известных результатов одномерной и двумерной функции Грина, поскольку мы имеем
Одномерная функция Грина может быть легко вычислена, двумерная функция Грина можно выразить через полный эллиптический интеграл первого рода (который можно найти в стандартных учебниках). С использованием в основном результат, данный bRost03 .
Очень умный парень по имени Джойс даже нашел выражение для
в 1973 году. Уравнения немного длинны и сложны, поэтому я не буду их здесь копировать. Но мы реализовали их в Python
модуле gftool>=0.8.0
, см. sc_dos . Там же вы найдете соответствующие ссылки.
У меня была такая же беда. я использовал формулу для численного расчета плотности состояний. я подвел итог значения для каждого компонента и использовали распределение Гаусса с для дельта-функции, чтобы получить следующую диаграмму. Использование большего заканчивается сглаживанием сингулярности в производной около .
Код был написан на C++ и работал около
секунды.
ось
,
ось
и
.
PS: Я провел суммирование по половине зоны Бриллюэна, что мне и было нужно для моего приложения.
леонгз
Эверетт Ю