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

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, and $$3$$. write a useful function to fit into the script. I would be very grateful for any help given. Thanks!

• This may be better suited for stackoverflow.com/questions/tagged/matlab Dec 2, 2013 at 22:14
• I'll x-post it there. I appreciate it. Dec 2, 2013 at 22:17
• Yeah, they'll probably know the specific syntax. If there's not a syntax for getting eigenvectors, you can look at the nullspace of $A - \lambda I$, where $\lambda$ is an eigenvalue. That'll give you the eigenvectors. The other two steps are just MATLAB syntax somehow. Dec 2, 2013 at 22:21
• To reinforce(?) @HenrySwanson 's Comment, if the Question is about an approach (Matlab: full eigensolution followed by picking out the two largest eigenvalues) already decided upon, it would certainly be ripe for SO. A mathematical (but computational) question would be how to best approximate the two top eigenvalues without getting all of them (such questions are also handled at SciComp.SE). Dec 2, 2013 at 22:27
• It's the $\large\tt Power\ Method$ algorithm or $\large\tt Von\ Mises$ one which yields the eigenvalue of largest magnitude. Once you get this, you can "remove" that eigenvalue and repeat the algorithm for the next one. See ---> en.wikipedia.org/wiki/Power_iteration Dec 2, 2013 at 23:04

$\newcommand{\+}{^{\dagger}}% \newcommand{\angles}{\left\langle #1 \right\rangle}% \newcommand{\braces}{\left\lbrace #1 \right\rbrace}% \newcommand{\bracks}{\left\lbrack #1 \right\rbrack}% \newcommand{\ceil}{\,\left\lceil #1 \right\rceil\,}% \newcommand{\dd}{{\rm d}}% \newcommand{\ds}{\displaystyle{#1}}% \newcommand{\equalby}{{#1 \atop {= \atop \vphantom{\huge A}}}}% \newcommand{\expo}{\,{\rm e}^{#1}\,}% \newcommand{\fermi}{\,{\rm f}}% \newcommand{\floor}{\,\left\lfloor #1 \right\rfloor\,}% \newcommand{\half}{{1 \over 2}}% \newcommand{\ic}{{\rm i}}% \newcommand{\iff}{\Longleftrightarrow} \newcommand{\imp}{\Longrightarrow}% \newcommand{\isdiv}{\,\left.\right\vert\,}% \newcommand{\ket}{\left\vert #1\right\rangle}% \newcommand{\ol}{\overline{#1}}% \newcommand{\pars}{\left( #1 \right)}% \newcommand{\partiald}[]{\frac{\partial^{#1} #2}{\partial #3^{#1}}} \newcommand{\pp}{{\cal P}}% \newcommand{\root}[]{\,\sqrt[#1]{\,#2\,}\,}% \newcommand{\sech}{\,{\rm sech}}% \newcommand{\sgn}{\,{\rm sgn}}% \newcommand{\totald}[]{\frac{{\rm d}^{#1} #2}{{\rm d} #3^{#1}}} \newcommand{\ul}{\underline{#1}}% \newcommand{\verts}{\left\vert\, #1 \,\right\vert}$ Given the $n$-iterated vector $\Psi_{n}$, we get the net one $\Psi_{n + 1}$ with $$\Psi_{n + 1} = {\varphi_{n} \over \lambda_{n}}\,,\quad \mbox{where}\quad \varphi_{n} \equiv A\Psi_{n}$$ $\lambda_{n}$ is the component of $\varphi_{n}$ with the largest magnitude. After $N$ ( "many" ) iterations, we get the eigenvalue as $\lambda_{N}$. This is the eigenvalue with the largest magnitude. Next, we normalize the eigenvector: $\ds{\varphi_{N} \to {\varphi_{N} \over \varphi_{N}^{\sf T}\,\varphi_{N}}}$. "Reduce" the matrix as $$\tilde{A} \equiv A - \lambda_{N}\ \varphi_{N}\varphi_{N}^{\sf T}$$ Repeat the procedure with $\tilde{A}$ and so on.