固有値と深刻なノイズ問題のプロット

Aug 18 2020

システムハミルトニアンの固有値をMathematicaでプロットしようとしています。これは非常にノイズの多いプロットを生成しています。これは私のコードです。

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

これも正しくありません。これは異なる固有値の解を混合しているためです。どんな助けでも大歓迎です。

回答

5 CATrevillian Aug 18 2020 at 13:58

したがって、私の最初のステップは、関数を次のように再定義することでした。

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

次に、次を使用してプロットできます。

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

それは与える:

同様に、

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

そして

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

を使用しているため、どちらも同じ出力を提供しますSort

しかしながら、

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

切断された非常にノイズの多いプロットを提供します

そして、これはの使用の欠如によるものですSort。これと同じ出力を次のように確認することもできます。

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

そして

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

どちらも、以前に見たのと同じノイズの多い混合固有値プロットを生成します。

これがあなたが探しているものではない場合は、私に知らせてください。これがお役に立てば幸いです。


OPの初期コードブロックの変換でエラーが発生した後、以下は適用されなくなりました。

また、の設定ε = 0によって対角線が0になることを確認することで、行列の組み立てを高速化できます。これにより、行列の実行を組み立てるときに、このような無関係な計算を行う必要がなくなります。


Tl; dr:使用Sortは、存在していたノイズを除去するための鍵です。