Eigenvalues computations
IntervalLinearAlgebra.bound_perron_frobenius_eigenvalueIntervalLinearAlgebra.eigenboxIntervalLinearAlgebra.verify_eigen
Interval matrices eigenvalues
IntervalLinearAlgebra.eigenbox — Methodeigenbox(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 matrixmethod– 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]imFloating point eigenvalues verification
IntervalLinearAlgebra.bound_perron_frobenius_eigenvalue — Methodbound_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 matrixmax_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.372281323275249IntervalLinearAlgebra.verify_eigen — Methodverify_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 ofAX0– (optional) eigenvector associated toλw– relative inflation parameterϵ– absolute inflation parametermaxiter– 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. Ifcert[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