Traçando valores próprios e problemas graves de ruído

Aug 18 2020

Estou tentando representar graficamente os valores Eigen do meu sistema hamiltoniano no Mathematica. Isso está gerando um gráfico muito barulhento. Este é o meu código.

ϵ = 0;
A[α_, c_, b_, q_] := ϵ + 
2*Cos[k2*b + 2*π*α]*Exp[-π 1/(2*q)]*
LaguerreL[c, 0, (π*1/q)]
B[a_, q_] := Exp[I*k1*q*a]
B1[a_, q_] := Exp[-I*k1*q*a]
b[α_, q_] := 
SparseArray[{Band[{1, 1}] -> A[α, 0, 1, q], 
Band[{1, 2}] -> B[1, q], Band[{2, 1}] -> B1[1, q], 
Band[{1, q}] -> B1[1, q], Band[{q, 1}] -> B[1, q]}, {q, q}];
Plot3D[Eigenvalues[b[1, 3]][[2]], {k1, -3, 3}, {k2, -π, π}]

Isso nem mesmo é correto. Uma vez que isso é a mistura de diferentes soluções de valores próprios. Qualquer ajuda será muito apreciada.

Respostas

5 CATrevillian Aug 18 2020 at 13:58

Portanto, minha primeira etapa foi redefinir suas funções como tais:

ClearAll[A,ε,B,B1,b];

A[α_, c_, b_, q_, ε_][k2_]:=ε + Cos[k2*b + 2*Pi*α]*Exp[-Pi 1/(2*q)]*LaguerreL[c, 0, (Pi*1/q)];

B[a_, q_][k1_]:=Exp[I*k1*q*a];

B1[a_, q_][k1_]:=Exp[-I*k1*q*a];

b[α_, q_][k1_,k2_] :=
SparseArray[{Band[{1, 1}] -> A[α, 0, 1, q, 0][k2],
Band[{1, 2}] -> B[1, q][k1], Band[{2, 1}] -> B1[1, q][k1],
Band[{1, q}] -> B1[1, q][k1], Band[{q, 1}] -> B[1, q][k1]}, {q, q}];

Então eu poderia traçar usando o seguinte:

Plot3D[Sort[Eigensystem[N[b[1,3][k1,k2]]][[1]]][[2]],{k1,-3,3},{k2,-Pi,Pi},PlotPoints->50]

Que dá:

Similarmente,

Plot3D[Sort[Eigenvalues[N[b[1,3][k1,k2]]]][[2]],{k1,-3,3},{k2,-Pi,Pi},PlotPoints->50]  

E

Plot3D[Sort[Eigenvalues[b[1,3][k1,k2]]][[2]],{k1,-3,3},{k2,-Pi,Pi},PlotPoints->50]

Ambos fornecem a mesma saída devido ao uso de Sort.

Contudo,

Plot3D[Eigensystem[N[b[1,3][k1,k2]]][[1]][[2]],{k1,-3,3},{k2,-Pi,Pi},PlotPoints->50]

Dá o enredo desconectado e severamente ruidoso

E isso se deve à falta de uso de Sort. Também podemos ver essa mesma saída com:

Plot3D[Eigenvalues[N[b[1,3][k1,k2]]][[2]],{k1,-3,3},{k2,-Pi,Pi},PlotPoints->50]

E

Plot3D[Eigenvalues[b[1,3][k1,k2]][[2]],{k1,-3,3},{k2,-Pi,Pi},PlotPoints->50]

Ambos produzem o mesmo gráfico de autovalores com ruído e misto visto anteriormente.

Se não é isso que você está procurando, por favor, me avise. Eu espero que isso ajude!


Depois de perceber um erro na tradução do bloco de código inicial do OP, o seguinte não se aplica mais:

Você também pode acelerar sua montagem de matriz observando que sua configuração de ε = 0faz com que a diagonal vá para 0, o que pode evitar a necessidade de fazer tais cálculos estranhos ao montar execuções de suas matrizes.


Tl; dr: Usar Sorté a chave para ajudar a eliminar o ruído que estava presente.