การพล็อตค่าลักษณะเฉพาะและปัญหาเสียงรบกวนที่รุนแรง

Aug 18 2020

ฉันกำลังพยายามพล็อตค่า Eigen ของ System Hamiltonian ของฉันใน 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เป็นกุญแจสำคัญในการช่วยขจัดเสียงรบกวนที่มีอยู่