MatrixZonotope

LazySets.MatrixZonotopeModule.MatrixZonotopeType
MatrixZonotope{N, MN<:AbstractMatrix{N}}(A0::MN, Ai::Vector{MN},
                                          idx::Vector{Int}=collect(1:length(Aᵢ)))

Type that represents a matrix zonotope.

Fields

  • A0 – center of the matrix zonotope
  • Ai – vector of matrices; each matrix is a generator of the matrix zonotope
  • idx – identifier vector of positive integers for each factor

Notes

Mathematically a matrix zonotope is defined as the set of matrices

\[\mathcal{A} = \left\{A ∈ ℝ^{n×m} : A^{(0)} + ∑_{i=1}^p ξ_i A^{(i)},~~ ξ_i ∈ [-1, 1]~~ ∀ i = 1,…, p \right\},\]

Matrix zonotopes were introduced in Huang et al. [HLBS25].

Examples

julia> A0 = [2.0 1.0; -1.0 0.0];

julia> Ai = [[1.0 -1.0; 0.0 -1.0], [0.0 2.0; -1.0 1.0]];

julia> idx = [1, 3];

julia> MZ = MatrixZonotope(A0, Ai, idx)
MatrixZonotope{Float64, Matrix{Float64}}([2.0 1.0; -1.0 0.0], [[1.0 -1.0; 0.0 -1.0], [0.0 2.0; -1.0 1.0]], [1, 3])
source

Operations

LazySets.API.centerMethod
center(MZ::MatrixZonotope)

Return the center matrix of a matrix zonotope.

Input

  • MZ – matrix zonotope

Output

The center matrix of MZ.

source
LazySets.generatorsMethod
generators(MZ::MatrixZonotope)

Return the generators of a matrix zonotope.

Input

  • MZ – matrix zonotope

Output

The generators of MZ.

source
LazySets.ngensMethod
ngens(MZ::MatrixZonotope)

Return the number of generators of a matrix zonotope.

Input

  • MZ – matrix zonotope

Output

An integer representing the number of generators.

source
Base.randMethod

Extended help

rand(::Type{MatrixZonotope}; [N]::Type{<:Real}=Float64, [dim]::Tuple{Int,Int}=(2, 2),
     [rng]::AbstractRNG=GLOBAL_RNG, [seed]::Union{Int, Nothing}=nothing,
     [num_generators]::Int=-1)

Algorithm

All numbers are normally distributed with mean 0 and standard deviation 1.

The number of generators can be controlled with the argument num_generators. For a negative value we choose a random number in the range 1:maximum(dim).

source

Undocumented implementations: