Linear transformations are operations that matrices perform
on vectors. An eigenvalue and eigenvector of a square matrix `A`

are,
respectively, a scalar *λ* and
a nonzero vector
such
that

.

Typically, if a matrix changes the length of a vector, but does not change its direction, the vector is called an eigenvector of the matrix. The scaling factor is the eigenvalue associated with this eigenvector.

MuPAD^{®} provides the functions for computing eigenvalues
and eigenvectors. For example, create the following square matrix:

A := matrix([[1, 2, 3], [4, 5, 6], [1, 2, 3]])

To compute the eigenvalues of the matrix `A`

,
use the `linalg::eigenvalues`

function:

linalg::eigenvalues(A)

The `linalg::eigenvalues`

function
returns a set of eigenvalues.
A set in MuPAD cannot contain duplicate elements. Therefore,
if a matrix has eigenvalues with multiplicities greater than 1, MuPAD automatically
removes duplicate eigenvalues. If you want the `linalg::eigenvalues`

function to return
eigenvalues along with their multiplicities, use the `Multiple`

option.
For example, zero is a double eigenvalue of the matrix `A`

:

linalg::eigenvalues(A, Multiple)

To compute the eigenvectors of a matrix, use the `linalg::eigenvectors`

function.
The function returns eigenvectors along with corresponding eigenvalues
and their multiplicities:

linalg::eigenvectors(A)

The `linalg::eigenvalues`

function
computes eigenvalues of a matrix by finding the roots of the characteristic
polynomial of that matrix. There is no general method for solving
polynomial equations of orders higher than 4. When trying to compute
eigenvalues of a large matrix, the solver can return complicated solutions
or solutions in the form of `RootOf`

. Also, the solver can fail to
find any solutions for some matrices. For example, create the 6
×6 Pascal matrix:

P := linalg::pascal(6)

For that matrix, MuPAD finds eigenvalues in the form of `RootOf`

:

eigenvalues := linalg::eigenvalues(P)

You can find floating-point approximation of the result by using
the `float`

command:

float(eigenvalues)

For more information about approximating eigenvalues and eigenvectors numerically, see Numeric Eigenvalues and Eigenvectors.

Was this topic helpful?