Tracé des valeurs propres et des problèmes de bruit graves

Aug 18 2020

J'essaie de tracer les valeurs propres de mon hamiltonien système dans Mathematica. Cela génère un tracé très bruyant. Ceci est mon code.

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

Ce n'est même pas correct. Puisqu'il s'agit de mélanger différentes solutions de valeurs propres. Toute aide sera grandement appréciée.

Réponses

5 CATrevillian Aug 18 2020 at 13:58

Ma première étape a donc été de redéfinir vos fonctions en tant que telles:

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

Ensuite, je pourrais tracer en utilisant ce qui suit:

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

Qui donne:

De même,

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

Et

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

Les deux donnent le même résultat en raison de leur utilisation de Sort.

cependant,

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

Donne l'intrigue déconnectée et très bruyante

Et cela est dû au manque d'utilisation de Sort. On peut également voir cette même sortie avec:

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

Et

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

Les deux produisent le même tracé de valeurs propres bruyant et mixte vu précédemment.

Si ce n'est pas ce que vous recherchez, faites-le moi savoir? J'espère que ça aide!


Après avoir réalisé une erreur lors de la traduction du bloc de code initial d'OP, ce qui suit ne s'applique plus:

Vous pouvez également accélérer votre assemblage de matrices en observant que votre paramètre de ε = 0fait passer la diagonale à 0, ce qui pourrait éviter d'avoir à faire de tels calculs superflus lors de l'assemblage des exécutions de vos matrices.


Tl; dr: L'utilisation Sortest la clé pour aider à éliminer le bruit qui était présent.