Eigenvalue problems

Written by D Ködderitzsch

1 Symmetry adapted basis functions

Define matrix element

--> tmatele(j,k):= %e^(2*%pi*%i*(j-1)*(k-1)/3)$
t1 : [tmatele(1,1),tmatele(2,1),tmatele(3,1)];

--> t2 : [tmatele(1,2),tmatele(2,2),tmatele(3,2)];

Try to bring it into polar form

--> t3 : polarform([tmatele(1,3),tmatele(2,3),tmatele(3,3)]);

Now let's normalize the vector

--> t1n : t1/sqrt(conjugate(t1).t1);

--> t2n : t2/(sqrt(conjugate(t2).t2));

Pretty obfuscated - let's try to make it look more aesthetic.

--> t2n : t2/expand(sqrt(conjugate(t2).t2));

--> t3n : t3/expand((sqrt(conjugate(t3).t3)));

Define transformation matrix (also display it in polar form)

--> tmat : expand(transpose(matrix (t1n,t2n,t3n)));
polarform(%);

Invert it

--> expand(invert(tmat));

Check unitary property

--> expand(conjugate(transpose(tmat)).tmat);

2 Solving the eigenvalue problem

Define Hamiltion mattrix

--> h0mat : matrix(
     [%alpha,%beta,%beta],
     [%beta,%alpha,%beta],
     [%beta,%beta,%alpha]
             );

Work with the "eigen" package that contains predefined functions

--> load(eigen)$

Eigenvalues

--> eigenvalues(h0mat);

Eigenvectors

--> eigenvectors(h0mat);

Normalized eigenvectors

--> uniteigenvectors(h0mat);

Let's apply our similarity transformation from above

--> expand(conjugate(transpose(tmat)).h0mat.tmat);

Pretty neatly :-)

3 Let's have some fun with user defined functions

Simplify the normalisation of a vector

--> cnorm(v) := expand(v/sqrt(conjugate(v).v));

--> tmatele(j,k):= %e^(2*%pi*%i*(j-1)*(k-1)/3)$
t2 : [tmatele(1,2),tmatele(2,2),tmatele(3,2)];

--> cnorm(t2);


Created with wxMaxima.