Interval matrices classification
IntervalLinearAlgebra.is_H_matrix
IntervalLinearAlgebra.is_M_matrix
IntervalLinearAlgebra.is_Z_matrix
IntervalLinearAlgebra.is_strictly_diagonally_dominant
IntervalLinearAlgebra.is_strongly_regular
IntervalLinearAlgebra.is_H_matrix
— Methodis_H_matrix(A::AbstractMatrix{T}) where {T<:Interval}
Tests whether the square interval matrix A is an H-matrix, by testing that $⟨A⟩^{-1}e>0$, where $e=[1, 1, …, 1]ᵀ$. Note that in practice it tests that a floating point approximation of $⟨A⟩^{-1}e$ satisfies the condition. For more details see section 4.4 of [HOR19].
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> is_H_matrix(A)
true
julia> A = [2..4 -2..1; -1..2 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-2, 1]
[-1, 2] [2, 4]
julia> is_H_matrix(A)
false
IntervalLinearAlgebra.is_M_matrix
— Methodis_M_matrix(A::AbstractMatrix{T}) where {T<:Interval}
Checks whether the square interval matrix $A$ is an M-matrix, that is a Z-matrix with non-negative inverse. For more details see section 4.2 of [HOR19].
Examples
julia> A = [2..2 -1..0; -1..0 2..2]
2×2 Matrix{Interval{Float64}}:
[2, 2] [-1, 0]
[-1, 0] [2, 2]
julia> is_M_matrix(A)
true
julia> A = [2..4 -2..1; -1..2 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-2, 1]
[-1, 2] [2, 4]
julia> is_M_matrix(A)
false
IntervalLinearAlgebra.is_Z_matrix
— Methodis_Z_matrix(A::AbstractMatrix{T}) where {T<:Interval}
Checks whether the square interval matrix $A$ is a Z-matrix, that is whether $Aᵢⱼ≤0$ for all $i≠j$. For more details see section 4.2 of [HOR19].
Examples
julia> A = [2..4 -2.. -1; -2.. -1 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-2, -1]
[-2, -1] [2, 4]
julia> is_Z_matrix(A)
true
julia> A = [2..4 -2..1; -1..2 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-2, 1]
[-1, 2] [2, 4]
julia> is_Z_matrix(A)
false
IntervalLinearAlgebra.is_strictly_diagonally_dominant
— Methodis_strictly_diagonally_dominant(A::AbstractMatrix{T}) where {T<:Interval}
Checks whether the square interval matrix $A$ of order $n$ is stictly diagonally dominant, that is if $mig(Aᵢᵢ) > ∑_{k ≠ i} mag(Aᵢₖ)$ for $i=1,…,n$. For more details see section 4.5 of [HOR19].
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> is_strictly_diagonally_dominant(A)
true
julia> A = [2..4 -2..1; -1..2 2..4]
2×2 Matrix{Interval{Float64}}:
[2, 4] [-2, 1]
[-1, 2] [2, 4]
julia> is_strictly_diagonally_dominant(A)
false
IntervalLinearAlgebra.is_strongly_regular
— Methodis_strongly_regular(A::AbstractMatrix{T}) where {T<:Interval}
Tests whether the square interval matrix $A$ is strongly regular, i.e. if $A_c^{-1}A$ is an H-matrix, where $A_c$ is the midpoint matrix of $A$`. For more details see section 4.6 of [HOR19].
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> is_strongly_regular(A)
true
julia> A = [0..2 1..1;-1.. -1 0..2]
2×2 Matrix{Interval{Float64}}:
[0, 2] [1, 1]
[-1, -1] [0, 2]
julia> is_strongly_regular(A)
false