[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:
I would be very grateful for any help given. Thanks!
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.