Tracciare autovalori e gravi problemi di rumore

Aug 18 2020

Sto cercando di tracciare i valori Eigen della mia hamiltoniana di sistema in Mathematica. Questo sta generando una trama molto rumorosa. Questo è il mio codice.

ϵ = 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, -π, π}]

Questo non è nemmeno corretto. Dal momento che si tratta di mescolare soluzioni di valori autovetture diverse. Qualsiasi aiuto sarà molto apprezzato.

Risposte

5 CATrevillian Aug 18 2020 at 13:58

Quindi il mio primo passo è stato ridefinire le tue funzioni in quanto tali:

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}];

Quindi potrei tracciare usando quanto segue:

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

Che dà:

Allo stesso modo,

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]

Entrambi danno lo stesso output a causa del loro utilizzo di Sort.

Però,

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

Fornisce la trama scollegata e gravemente rumorosa

E questo è dovuto al mancato utilizzo di Sort. Possiamo anche vedere questo stesso output con:

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]

Entrambi producono lo stesso grafico degli autovalori rumoroso e misto visto in precedenza.

Se questo non è quello che stai cercando, per favore, fammelo sapere. Spero che possa aiutare!


Dopo aver realizzato un errore nella traduzione del blocco di codice iniziale di OP, quanto segue non si applica più:

Potresti anche accelerare l'assemblaggio di matrici osservando che l'impostazione di ε = 0fa andare la diagonale a 0, il che potrebbe impedire la necessità di eseguire calcoli estranei durante l'assemblaggio di sequenze delle matrici.


Tl; dr: L'uso Sortè la chiave per aiutare a eliminare il rumore che era presente.