Writing a script for finding the largest and second largest eigenvectors of a symmetric matrix

1.6k views Asked by At

[I posted this in math.stackexchange and was told it would be better suited here.]

For a final project in my linear algebra intro, I have been tasked with writing a script that finds the largest and the second largest eigenvectors of a symmetric matrix in MATLAB. For the best possible grade, it must include a function as well. So far, I have been able to get my script to verify that a matrix is symmetric, and am feeling a little bit stuck. I need some guidance for finishing this assignment, as my MATLAB experience is extremely limited.


Here is what I have so far:

prompt = 'Please input a symmetric matrix A.'

A = input(prompt);

if (A == A'),

     eig(A)

else

     disp('A is not a symmetric matrix.  Please input a symmetric matrix.')

end

Note that the script hopefully verifies that A is symmetric, and I have the eigenvalues for A, but I am not sure where to go from here to:

  1. find the eigenvectors
  2. get the two largest eigenvectors
  3. write a useful function to fit into the script.

I would be very grateful for any help given. Thanks!

1

There are 1 answers

2
chappjc On BEST ANSWER

You have a solution for checking for a symmetric matrix.

For the eigenvectors, see the documentation for eig as suggested by Luis Mendo, but also the documentation for eigs, which allows you to request k eigenvectors according to sigma:

eigs(A,k,sigma)

where sigma can be:

'lm' Largest magnitude (default).

'sm' Smallest magnitude. Same as sigma = 0.

For real symmetric problems, the following are also options:

'la' Largest algebraic ('lr' )

'sa' Smallest algebraic ('sr' ) 'be' Both ends (one more from high end if k is odd)

Using eigs with the k syntax should be marginally easier than eig, but either will work.

See this page for how to define a function.