Calculé numéricamente la densidad de estados (DoS) para la dispersión de unión estrecha 3-D y obtuve la siguiente gráfica [ ha sido elegida].
Lo que hice es resumir -puntos de la función de Green de red,
Uno puede notar fácilmente que hay ruidos a bajas energías. ¿Hay alguna forma alternativa de obtener un mejor resultado? Como el que se muestra en una figura de un papel [Ref: arXiv:1207.4014] :
¿Puede haber alguna expresión estándar matemática que se pueda calcular a través de Mathematica o Matlab?
Pregunta de bonificación relacionada: ¿Se puede aplicar el mismo método a una red triangular asimétrica que tiene dispersión? ?
Lo siento por la respuesta tardía, pero espero que esto pueda ser útil para alguien más.
Puede reducir el ruido utilizando una integral elíptica.
Donde K es la integral elíptica completa de primer tipo: http://mathworld.wolfram.com/CompleteEllipticIntegraloftheFirstKind.html .
No es baladí llegar hasta aquí. E incluso a partir de esta expresión, la integral debe hacerse numéricamente con cuidado (tiene singularidades para muchos valores de
) pero debería dar mejores resultados. Correr durante seis segundos en Mathematica me da (con
):
TL;DR
Con Matlab
o Mathematika
no puedo ayudar, pero Python
hay una implementación disponible: sc_dos Aquí
es la mitad del ancho de banda
.
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)
La evaluación del DOS me toma ~100 ms.
Ya diste las expresiones correctas. Tenemos la función de Green
Una suma ingenua sobre los puntos es extremadamente exigente, ya que una gran cantidad de puntos es necesario en 3 Dimensiones.
Para suavizar la función, podemos evaluar la función de Green en un contorno paralelo al eje real desplazado por un finito en semiplano complejo superior:
Cuanto más grande elegimos más suave se vuelve la función, pero por otro lado perdemos características.
Como solo nos interesa el límite termodinámico , un enfoque más inteligente que el simple muestreo , es reemplazar la suma por la integral. Para integrales, tenemos algoritmos más o menos eficientes.
Así que calculemos
Y finalmente podemos usar resultados analíticos para las integrales. Notamos que podemos expresar la función de Green 3D en términos de resultados conocidos de la función de Green 1D y 2D como tenemos
La función de Green unidimensional se puede evaluar fácilmente, la función de Green bidimensional se puede expresar en términos de la integral elíptica completa de primer tipo (que se puede encontrar en los libros de texto estándar). Usando es básicamente el resultado dado por bRost03 .
Un tipo muy inteligente llamado Joyce incluso encontró una expresión para
en 1973. Las ecuaciones son un poco largas y complicadas, así que evitaré copiarlas aquí. Pero los implementamos en un Python
módulo gftool>=0.8.0
, vea sc_dos . También encontrará las referencias relevantes allí.
Tuve el mismo problema. usé la fórmula para calcular numéricamente la densidad de estados. hice un resumen valores para cada componente, y usó una distribución gaussiana con para que la función delta obtenga el siguiente diagrama. Usando más grande termina suavizando la singularidad en la derivada alrededor de .
El código se escribió en C++ y se ejecutó durante aproximadamente
segundos.
el eje es
,
el eje es
y
.
PD: Hice la suma de la mitad de la zona de Brillouin, que era lo que necesitaba para mi aplicación.
Leongz
Everett usted