## `linalg::eigenvalues` -- eigenvalues of a matrix

#### Introduction

`linalg::eigenvalues``(A)` returns a list of the eigenvalues of the matrix A.

#### Call(s)

`linalg::eigenvalues(A <, Multiple>)`

#### Parameters

`A` | - | a square matrix of a domain of category `Cat::Matrix`

#### Options

`Multiple` | - | In addition, the algebraic multiplicity of each eigenvalue of `A` is returned.

#### Returns

a set of the eigenvalues of `A`, or a list of inner lists when the option Multiple is given (see below).

#### Related Functions

`numeric::eigenvalues`, `linalg::charpoly`, `linalg::eigenvectors`, `solve`

#### Details

- A floating-point approximation of the eigenvalues is computed with `numeric::eigenvalues`, if the matrix `A` is defined over the component ring `Dom::Float` (see example 1). In this case it is recommended to call `numeric::eigenvalues` directly for a better efficiency.
- The eigenvalues are obtained by computing the zeros of the characteristic polynomial of `A`. The solver `solve` must be able to compute the roots of the characteristic polynomial over the component ring of `A`.

#### Option: Multiple

- Returns a list of sublists, where each sublist contains an eigenvalue of `A` and its algebraic multiplicity. Note that due to rounding errors, this may lead to wrong results in cases where multiple eigenvalues exist and `numeric::eigenvalues` is used.

#### Example 1

We compute the eigenvalues of the matrix

        +-         -+
        |  1, 4, 2  |
        |           |
    A = |  1, 4, 2  |
        |           |
        |  2, 5, 3  |
        +-         -+

    >> A := matrix([[1, 4, 2], [1, 4, 2], [2, 5, 3]]):
       linalg::eigenvalues(A)

                                   1/2            1/2
                             {0, 15    + 4, 4 - 15   }

If we consider the matrix over the domain `Dom::Float`, then the call of `linalg::eigenvalues``(A)` results in a numerical computation of the eigenvalues of `A` via `numeric::eigenvalues`:

    >> B := Dom::Matrix(Dom::Float)(A): linalg::eigenvalues(B)

                   {9.622294281e-19, 0.1270166538, 7.872983346}

#### Example 2

With the option Multiple we get the information about the algebraic multiplicity of each eigenvalue:

    >> C := Dom::Matrix(Dom::Rational)(4, 4, [[-3], [0, 6]])

                                 +-             -+
                                 |  -3, 0, 0, 0  |
                                 |               |
                                 |   0, 6, 0, 0  |
                                 |               |
                                 |   0, 0, 0, 0  |
                                 |               |
                                 |   0, 0, 0, 0  |
                                 +-             -+

    >> linalg::eigenvalues(C, Multiple)

                             [[6, 1], [0, 2], [-3, 1]]

#### Changes

- used to be called `linalg::eigenValues`
- Uses `numeric::eigenvalues` for a floating-point approximation of the eigenvalues.

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000