# Eigenvalues computations

## Interval matrices eigenvalues

IntervalLinearAlgebra.eigenboxMethod
eigenbox(A[, method=Rohn()])

Returns an enclosure of all the eigenvalues of A. If A is symmetric, then the output is a real interval, otherwise it is a complex interval.

Input

• A – square interval matrix

• method – method used to solve the symmetric interval eigenvalue problem (bounding eigenvalues of general matrices is also reduced to the symmetric case). Possible values are

- Rohn -- (default) fast method to compute an enclosure of the eigenvalues of
a symmetric interval matrix
- Hertz -- finds the exact hull of the eigenvalues of a symmetric interval
matrix, but has exponential complexity.

Algorithm

The algorithms used by the function are described in [HLA13].

Notes

The enclosure is not rigorous, meaning that the real eigenvalue problems solved internally utilize normal floating point computations.

Examples

julia> A = [0 -1 -1; 2 -1.399.. -0.001 0; 1 0.5 -1]
3×3 Matrix{Interval{Float64}}:
[0, 0]  [-1, -1]                       [-1, -1]
[2, 2]       [-1.39901, -0.000999999]    [0, 0]
[1, 1]        [0.5, 0.5]               [-1, -1]

julia> eigenbox(A)
[-1.90679, 0.970154] + [-2.51903, 2.51903]im

julia> eigenbox(A, Hertz())
[-1.64732, 0.520456] + [-2.1112, 2.1112]im
source

## Floating point eigenvalues verification

IntervalLinearAlgebra.bound_perron_frobenius_eigenvalueMethod
bound_perron_frobenius_eigenvalue(A, max_iter=10)

Finds an upper bound for the Perron-Frobenius eigenvalue of the non-negative matrix A.

Input

• A – square real non-negative matrix
• max_iter – maximum number of iterations of the power method used internally to compute an initial approximation of the Perron-Frobenius eigenvector

Example

julia> A = [1 2;3 4]
2×2 Matrix{Int64}:
1  2
3  4

julia> bound_perron_frobenius_eigenvalue(A)
5.372281323275249
source
IntervalLinearAlgebra.verify_eigenMethod
verify_eigen(A[, λ, X0]; w=0.1, ϵ=1e-16, maxiter=10)

Finds a rigorous bound for the eigenvalues and eigenvectors of A. Eigenvalues are treated as simple.

Input

• A – matrix
• λ – (optional) approximate value for an eigenvalue of A
• X0 – (optional) eigenvector associated to λ
• w – relative inflation parameter
• ϵ – absolute inflation parameter
• maxiter – maximum number of iterations

Output

• Interval bounds on eigenvalues and eigenvectors.
• A boolean certificate (or a vector of booleans if all eigenvalues are computed) cert. If cert[i]==true, then the bounds for the ith eigenvalue and eigenvectore are rigorous, otherwise not.

Algorithm

The algorithm for this function is described in [RUM01].

Example

julia> A = Symmetric([1 2;2 3])
2×2 Symmetric{Int64, Matrix{Int64}}:
1  2
2  3

julia> evals, evecs, cert = verify_eigen(A);

julia> evals
2-element Vector{Interval{Float64}}:
[-0.236068, -0.236067]
[4.23606, 4.23607]

julia> evecs
2×2 Matrix{Interval{Float64}}:
[-0.850651, -0.85065]  [0.525731, 0.525732]
[0.525731, 0.525732]  [0.85065, 0.850651]

julia> cert
2-element Vector{Bool}:
1
1
source