Algorithms
Algorithms used to solve interval linear systems.
IntervalLinearAlgebra.GaussSeidelIntervalLinearAlgebra.GaussianEliminationIntervalLinearAlgebra.HansenBliekRohnIntervalLinearAlgebra.JacobiIntervalLinearAlgebra.LinearKrawczykIntervalLinearAlgebra.LinearOettliPragerIntervalLinearAlgebra.NonLinearOettliPragerIntervalLinearAlgebra.Skalna06
Enclosure computation
Direct methods
IntervalLinearAlgebra.GaussianElimination — TypeGaussianElimination <: AbstractDirectSolverType for the Gaussian elimination solver of the square interval linear system $Ax=b$. For more details see section 5.6.1 of [HOR19]
Notes
An object of type
GaussianEliminationis a callable function with method(ge::GaussianElimination)(A::AbstractMatrix{T}, b::AbstractVector{T}) where {T<:Interval}
Examples
julia> A = [2..4 -1..1;-1..1 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-1, 1]
[-1, 1] [2, 4]
julia> b = [-2..2, -1..1]
2-element Vector{Interval{Float64}}:
[-2, 2]
[-1, 1]
julia> ge = GaussianElimination()
GaussianElimination linear solver
julia> ge(A, b)
2-element Vector{Interval{Float64}}:
[-1.66667, 1.66667]
[-1.33334, 1.33334]IntervalLinearAlgebra.HansenBliekRohn — TypeHansenBliekRohn <: AbstractDirectSolverType for the HansenBliekRohn solver of the square interval linear system $Ax=b$. For more details see section 5.6.2 of [HOR19]
Notes
Hansen-Bliek-Rohn works with H-matrices without precondition and with strongly regular matrices using
InverseMidpointpreconditionIf the midpoint of $A$ is a diagonal matrix, then the algorithm returns the exact hull.
An object of type Hansen-Bliek-Rohn is a callable function with method
(hbr::HansenBliekRohn)(A::AbstractMatrix{T}, b::AbstractVector{T}) where {T<:Interval}
Examples
julia> A = [2..4 -1..1;-1..1 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-1, 1]
[-1, 1] [2, 4]
julia> b = [-2..2, -1..1]
2-element Vector{Interval{Float64}}:
[-2, 2]
[-1, 1]
julia> hbr = HansenBliekRohn()
HansenBliekRohn linear solver
julia> hbr(A, b)
2-element Vector{Interval{Float64}}:
[-1.66667, 1.66667]
[-1.33334, 1.33334]Iterative methods
IntervalLinearAlgebra.GaussSeidel — TypeGaussSeidel <: AbstractIterativeSolverType for the Gauss-Seidel solver of the interval linear system $Ax=b$. For details see Section 5.7.4 of [HOR19]
Fields
max_iterations– maximum number of iterations (default 20)atol– absolute tolerance (default 0), if at some point $|xₖ - xₖ₊₁| < atol$ (elementwise), then stop and return $xₖ₊₁$. Ifatol=0, thenmin(diam(A))*1e-5is used.
Notes
An object of type
GaussSeidelis a function with method(gs::GaussSeidel)(A::AbstractMatrix{T}, b::AbstractVector{T}, [x]::AbstractVector{T}=enclose(A, b)) where {T<:Interval}Input
A– N×N interval matrixb– interval vector of length Nx– (optional) initial enclosure for the solution of $Ax = b$. If not given, it is automatically computed usingenclose
Examples
julia> A = [2..4 -1..1;-1..1 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-1, 1]
[-1, 1] [2, 4]
julia> b = [-2..2, -1..1]
2-element Vector{Interval{Float64}}:
[-2, 2]
[-1, 1]
julia> gs = GaussSeidel()
GaussSeidel linear solver
max_iterations = 20
atol = 0.0
julia> gs(A, b)
2-element Vector{Interval{Float64}}:
[-1.66668, 1.66668]
[-1.33334, 1.33334]IntervalLinearAlgebra.Jacobi — TypeJacobi <: AbstractIterativeSolverType for the Jacobi solver of the interval linear system $Ax=b$. For details see Section 5.7.4 of [HOR19]
Fields
max_iterations– maximum number of iterations (default 20)atol– absolute tolerance (default 0), if at some point $|xₖ - xₖ₊₁| < atol$ (elementwise), then stop and return $xₖ₊₁$. Ifatol=0, thenmin(diam(A))*1e-5is used.
Notes
An object of type
Jacobiis a function with method(jac::Jacobi)(A::AbstractMatrix{T}, b::AbstractVector{T}, [x]::AbstractVector{T}=enclose(A, b)) where {T<:Interval}Input
A– N×N interval matrixb– interval vector of length Nx– (optional) initial enclosure for the solution of $Ax = b$. If not given, it is automatically computed usingenclose
Examples
julia> A = [2..4 -1..1;-1..1 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-1, 1]
[-1, 1] [2, 4]
julia> b = [-2..2, -1..1]
2-element Vector{Interval{Float64}}:
[-2, 2]
[-1, 1]
julia> jac = Jacobi()
Jacobi linear solver
max_iterations = 20
atol = 0.0
julia> jac(A, b)
2-element Vector{Interval{Float64}}:
[-1.66668, 1.66668]
[-1.33335, 1.33335]IntervalLinearAlgebra.LinearKrawczyk — TypeLinearKrawczyk <: AbstractIterativeSolverType for the Krawczyk solver of the interval linear system $Ax=b$. For details see Section 5.7.3 of [HOR19]
Fields
max_iterations– maximum number of iterations (default 20)atol– absolute tolerance (default 0), if at some point $|xₖ - xₖ₊₁| < atol$ (elementwise), then stop and return $xₖ₊₁$. Ifatol=0, thenmin(diam(A))*1e-5is used.
Notes
An object of type
LinearKrawczykis a function with method(kra::LinearKrawczyk)(A::AbstractMatrix{T}, b::AbstractVector{T}, [x]::AbstractVector{T}=enclose(A, b)) where {T<:Interval}Input
A– N×N interval matrixb– interval vector of length Nx– (optional) initial enclosure for the solution of $Ax = b$. If not given, it is automatically computed usingenclose
Examples
julia> A = [2..4 -1..1;-1..1 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-1, 1]
[-1, 1] [2, 4]
julia> b = [-2..2, -1..1]
2-element Vector{Interval{Float64}}:
[-2, 2]
[-1, 1]
julia> kra = LinearKrawczyk()
LinearKrawczyk linear solver
max_iterations = 20
atol = 0.0
julia> kra(A, b)
2-element Vector{Interval{Float64}}:
[-2, 2]
[-2, 2]Exact characterization
IntervalLinearAlgebra.LinearOettliPrager — TypeLinearOettliPrager <: AbstractDirectSolverType for the OettliPrager solver of the interval linear system $Ax=b$. The solver first converts the system of interval equalities into a system of real inequalities using Oettli-Präger theorem [OET64] and then finds the feasible set by solving a LP problem in each orthant using LazySets.jl.
Notes
You need to import
LazySets.jlto use this functionality.An object of type
LinearOettliPrageris a function with methods(op::LinearOettliPrager)(A::AbstractMatrix{T}, b::AbstractVector{T}) where {T<:Interval}Input
A– N×N interval matrixb– interval vector of length N
Examples
julia> A = [2..4 -2..1;-1..2 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-2, 1]
[-1, 2] [2, 4]
julia> b = [-2..2, -2..2]
2-element Vector{Interval{Float64}}:
[-2, 2]
[-2, 2]
julia> polytopes = solve(A, b, LinearOettliPrager());
julia> typeof(polytopes)
Vector{HPolytope{Float64, SparseArrays.SparseVector{Float64, Int64}}}IntervalLinearAlgebra.NonLinearOettliPrager — TypeNonLinearOettliPrager <: AbstractIterativeSolverType for the OettliPrager solver of the interval linear system $Ax=b$. The solver first converts the system of interval equalities into a system of real inequalities using Oettli-Präger theorem [OET64] and then finds the feasible set using the forward-backward contractor method [JAU14] implemented in IntervalConstraintProgramming.jl.
Fields
tol– tolerance for the paving, default 0.01.
Notes
You need to import
IntervalConstraintProgramming.jlto use this functionality.An object of type
NonLinearOettliPrageris a function with methods(op::NonLinearOettliPrager)(A::AbstractMatrix{T}, b::AbstractVector{T}, [X]::AbstractVector{T}=enclose(A, b)) where {T<:Interval} (op::NonLinearOettliPrager)(A::AbstractMatrix{T}, b::AbstractVector{T}, X::IntervalBox) where {T<:Interval}Input
A– N×N interval matrixb– interval vector of length NX– (optional) initial enclosure for the solution of $Ax = b$. If not given, it is automatically computed usingenclose
Examples
julia> A = [2..4 -2..1;-1..2 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-2, 1]
[-1, 2] [2, 4]
julia> b = [-2..2, -2..2]
2-element Vector{Interval{Float64}}:
[-2, 2]
[-2, 2]
julia> solve(A, b, NonLinearOettliPrager(0.1))
Paving:
- tolerance ϵ = 0.1
- inner approx. of length 1195
- boundary approx. of length 823Parametric Solvers
Direct Methods
IntervalLinearAlgebra.Skalna06 — TypeSkalna06Direct solver for interval linear systems with affine-parametric dependency. For more information see [SKA06].