Eigenvalues computations
IntervalLinearAlgebra.bound_perron_frobenius_eigenvalue
IntervalLinearAlgebra.eigenbox
IntervalLinearAlgebra.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]im
Floating 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.372281323275249
IntervalLinearAlgebra.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 ofA
X0
– (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