# Eigenvalues and Eigenvectors in MATLAB | MATLAB Tutorial

ADAiHTSpROs**by** Gunjan Gupta

**Eigenvalues and Eigenvectors in MATLAB**

Set of linear algebraic equations of the general form

[A]{x}={b}Such systems are called *nonhomogeneous *because of the presence of the vector {*b*} on the right-hand side of the equality. If the equations comprising such a system are linearly independent (i.e., have a nonzero determinant), they will have a unique solution.

In contrast, a *homogeneous *linear algebraic system has a right-hand side equal to zero:

At face value, this equation suggests that the only possible solution would be the trivial case for which all *x*’s = 0. Graphically this would correspond to two straight lines that intersected at zero.

Although this is certainly true, eigenvalue problems associated with engineering are typically of the general form

where the parameter λ is the *eigenvalue*. Thus, rather than setting the *x*’s to zero, we can determine the value of λ that drives the left-hand side to zero! One way to accomplish this is based on the fact that, for nontrivial solutions to be possible, the determinant of the matrix must equal zero:

Expanding the determinant yields a polynomial in λ, which is called the *characteristic polynomial*. The roots of this polynomial are the solutions for the eigenvalues. In order to better understand these concepts, it is useful to examine the two-equation case,

Expanding the determinant of the coefficient matrix gives

which is the *characteristic polynomial*.

The quadratic formula can then be used to solve for the two eigenvalues:

This approach is called the *polynomial method*.

** Problem 1: **Use the polynomial method to solve for the eigenvalues of the following homogeneous system:

Before determining the correct solution, let’s first investigate the case where we have an incorrect eigenvalue. For example, if λ = 3, the equations become

Plotting these equations yields two straight lines that intersect at the origin (Fig. 1*a*). Thus, the only solution is the trivial case where *x*1 = *x*2 = 0.

To determine the correct eigenvalues, we can expand the determinant to give the characteristic polynomial:

which can be solved for

Therefore, the eigenvalues for this system are 15 and 5.

We can now substitute either of these values back into the system and examine the result. For λ_{1}= 15, we obtain

Thus, a correct eigenvalue makes the two equations identical (Fig. 1*b*). In essence as we move towards a correct eigenvalue the two lines rotate until they lie on top of each other. Mathematically, this means that there are an infinite number of solutions. But solving either of the equations yields the interesting result that all the solutions have the property that *x*_{1} = –*x*_{2}. Although at first glance this might appear trivial, it’s actually quite interesting as it tells us that the ratio of the unknowns is a constant. This result can be expressed in vector form as

which is referred to as the *eigenvector *corresponding to the eigenvalue λ = 15.

In a similar fashion, substituting the second eigenvalue, λ_{2} = 5, gives

Again, the eigenvalue makes the two equations identical (Fig. 1*b*) and we can see that the solution for this case corresponds to *x*_{1} = *x*_{2}, and the eigenvector is

**Figure 1:** **Plots of a system of two homogeneous linear equations from Problem 1. ( a) An incorrect eigenvalue (λ = 3) means that the two equations, which are labeled as Eq. 1 and 2 in the figure, plot as separate lines and the only solution is the trivial case (x1 = x2 = 0). (b) In contrast, the cases with correct eigenvalues (λ = 5 and 15), the equations fall on top of each other.**

**Matlab m-file:**

function [eval,evec] = eigen(A) % input: % A = coefficient matrix % output: % eval = eigen value % evec = eigen vector format short [V,~] = eig(A); eval = eig(A); evec = V; evec = round(evec); for i = 1:length(evec) if evec(:,i) == -1 evec(:,i) = 1; end end for i = 1:length(eval) fprintf('For Eigenvalue = %.4f,\n ', eval(i)); fprintf('Eigenvector = \n'); disp(evec(:,i)); end

The M-file can be used to solve the problem 1.

>> A = [10 -5;-5 10];

>> eigen(A);

For Eigenvalue = 5.0000,

Eigenvector =

1

1

For Eigenvalue = 15.0000,

Eigenvector =

-1

1