Finding the Eigenvalues of a Symmetric Matrix​
​Authors: Housam Binous and Ahmed Bellagi

A symmetric real matrix admits only real eigenvalues . We show how one can find these eigenvalues as well as their corresponding eigenvectors without using Mathematica' s built - in commands (Eigenvalues and Eigenvectors) . This iterative technique is described in great details in the book by Kenneth J . Beers, Numerical Methods for Chemical Engineering, Applications in Matlab, Cambridge University Press, 2007. It allows the determination of the largest and the smallest eigenvalues as well as any eigenvalue nearest to some target value .
Reference :
​Kenneth J. Beers, Numerical Methods for Chemical Engineering, Applications in Matlab, Cambridge University Press, 2007.
Finding the eigenvalues using the Mathematica built-in function Eigenvalues.
In[]:=
A={{1,-1,2},{-1,5,3},{2,3,5}}
Out[]=
{{1,-1,2},{-1,5,3},{2,3,5}}
In[]:=
A//MatrixForm
Out[]//MatrixForm=
1
-1
2
-1
5
3
2
3
5
In[]:=
Eigenvalues[A]//N
Out[]=
{8.07888,3.63601,-0.714895}
In[]:=
Eigenvectors[A]//N
Out[]=
{{0.151852,0.925059,1.},{1.24643,-1.28562,1.},{-1.63967,-0.811855,1.}}
In[]:=
ev1={0.15185176161944278`,0.9250593587995715`,1.`};ev2={1.246434398652954`,-1.28561832045223`,1.`};ev3={-1.6396654706172242`,-0.8118548314507898`,1.`};
Finding the largest eigenvalue (λ=8.07888). The corresponding eigenvector is u=(0.110785,0.674885,0.729559).
In[]:=
v[0]={1.,1,1};
Evaluate the following for the full output
In[]:=
For[i=1,i<100,{v[i]=A.v[i-1]/Norm[A.v[i-1]],l[i]=v[i].A.v[i],Print[i," ",l[i]],i++}]
1 7.98039
2 8.06141
3 8.07535
4 8.07817
5 8.07874
In[]:=
v[99]
Out[]=
{0.110785,0.674885,0.729559}
In[]:=
A.v[99]/l[99]
Out[]=
{0.110785,0.674885,0.729559}
In[]:=
ev10.7295590409188228`
Out[]=
{0.110785,0.674885,0.729559}
Finding the smallest eigenvalue (λ=-0.714895). The corresponding eigenvector is u=(-0.786375,-0.389362,0.479595).
Evaluate the following for the full output
In[]:=
For[i=1,i<100,{v[i]=Inverse[A].v[i-1]/Norm[Inverse[A].v[i-1]],l[i]=v[i].Inverse[A].v[i],Print[i," ",1/l[i]],i++}]
1 -0.759036
2 -0.715701
3 -0.71492
4 -0.714896
5 -0.714895
In[]:=
v[99]
Out[]=
{-0.786375,-0.389362,0.479595}
In[]:=
A.v[99]l[99]
Out[]=
{-0.786375,-0.389362,0.479595}
In[]:=
ev3(0.47959500848286024`)
Out[]=
{-0.786375,-0.389362,0.479595}
Finding the eigenvalue near 4 (λ=3.63601). The corresponding eigenvector is u=(-0.607734,0.626839,-0.487578).
Evaluate the following for the full output
In[]:=
For[i=1,i<100,{v[i]=Inverse[(A-4IdentityMatrix[3])].v[i-1]/Norm[Inverse[(A-4IdentityMatrix[3])].v[i-1]],l[i]=1/v[i].Inverse[(A-4IdentityMatrix[3])].v[i]+4,Print[i," ",l[i]],i++}]
1 3.59832
2 3.63572
3 3.63601
4 3.63601
In[]:=
v[99]
Out[]=
{-0.607734,0.626839,-0.487578}
In[]:=
A.v[99]1/l[99]
Out[]=
{-0.607734,0.626839,-0.487578}
In[]:=
ev2(-0.4875779257225787`)
Out[]=
{-0.607734,0.626839,-0.487578}