I am messing up Eigenvalues in a loop...Help me please.

clear
g=0.1; E0=9.8; A=1; B=0;
E = 5:0.01:15;
for i=1:length(E);
H=[E(i),g/sqrt(2),g/sqrt(2);g/sqrt(2),E0,A;g/sqrt(2),B,E0];
[EIGVEC,EIGVAL]=eig(H);
EIGVAL1(i)=EIGVAL(1); EIGVAL2(i)=EIGVAL(5); EIGVAL3(i)=EIGVAL(9);
end
figure
plot(E,real(EIGVAL1),'g',E,real(EIGVAL2),'r',E,real(EIGVAL3),'b')
Matlab is calculating the eigenvalues for every i. The calculated valus are allright the problem is that i am not able to give them any order. If you watch the plot you can see that Matlab is switching between eigenvalue number 1,2,3.
If you want to see the final plot without mistakes i have made it allready with other methods, but i need the working code for following physics problems (and for learning how to Matlab of course).

 Respuesta aceptada

Philipp Marx
Philipp Marx el 30 de Ag. de 2016
Just replacing eig() with eigs() solves the problem.

1 comentario

John D'Errico
John D'Errico el 30 de Ag. de 2016
Editada: John D'Errico el 30 de Ag. de 2016
NO. IT DOES NOT SOLVE THE PROBLEM. Eigs is not designed to solve that problem. You got lucky, and the different order that eigs might return happens to work for you.

Iniciar sesión para comentar.

Más respuestas (1)

John D'Errico
John D'Errico el 28 de Ag. de 2016
Download eigenshuffle . It is designed to solve exactly this problem.

1 comentario

Philipp Marx
Philipp Marx el 28 de Ag. de 2016
Editada: Philipp Marx el 28 de Ag. de 2016
How can i make this working with my code? I am a totally Matlab beginner. I dont get it running.

Iniciar sesión para comentar.

Categorías

Más información sobre Eigenvalues & Eigenvectors en Centro de ayuda y File Exchange.

Preguntada:

el 28 de Ag. de 2016

Editada:

el 30 de Ag. de 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by