Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
use DocumenterCitations for bibliography
Browse files Browse the repository at this point in the history
schillic committed Jan 25, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 184f01b commit 121e3b3
Showing 11 changed files with 136 additions and 119 deletions.
2 changes: 2 additions & 0 deletions docs/Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
[deps]
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244"
IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253"

[compat]
Documenter = "1"
DocumenterCitations = "1.3"
IntervalArithmetic = "0.21, =0.21" # v0.22 changed the output format
6 changes: 4 additions & 2 deletions docs/make.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using Documenter, IntervalMatrices
using Documenter, IntervalMatrices, DocumenterCitations

DocMeta.setdocmeta!(IntervalMatrices, :DocTestSetup, :(using IntervalMatrices);
recursive=true)

bib = CitationBibliography(joinpath(@__DIR__, "src", "refs.bib"); style=:alpha)

makedocs(; sitename="IntervalMatrices.jl",
modules=[IntervalMatrices],
format=Documenter.HTML(; prettyurls=get(ENV, "CI", nothing) == "true",
@@ -12,7 +14,7 @@ makedocs(; sitename="IntervalMatrices.jl",
"Library" => Any["Types" => "lib/types.md",
"Methods" => "lib/methods.md"],
"About" => "about.md",
"References" => "references.md"])
"Bibliography" => "bibliography.md"])

deploydocs(; repo="github.com/JuliaReach/IntervalMatrices.jl.git",
push_preview=true)
4 changes: 4 additions & 0 deletions docs/src/bibliography.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Bibliography

```@bibliography
```
26 changes: 5 additions & 21 deletions docs/src/index.md
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ See the section [Library Outline](@ref) below for details.
An application of interval matrices is to find the set of states reachable by
a dynamical system whose coefficients are uncertain. The library
[ReachabilityAnalysis.jl](http://github.com/JuliaReach/ReachabilityAnalysis.jl)
implements algorithms that use interval matrices [^3] [^4].
implements algorithms that use interval matrices [AlthoffKS11](@citet) [Liou66](@citet).

## Installing

@@ -100,9 +100,10 @@ relevant definitions and algebraic rules that apply.

However, the straightforward application of the rules of interval arithmetic does
not always give the exact result: in general it only gives an overapproximation
[^1] [^2]. To illustrate, suppose that we are interested in the quadratic term
``At + \frac{1}{2}A^2 t^2``, which corresponds to the Taylor-series expansion at order two of
``e^{At} - I``. Then, at ``t = 1.0``,
[AlthoffSB08](@citet) [KoshelevaKMN05](@citet). To illustrate, suppose that we
are interested in the quadratic term ``At + \frac{1}{2}A^2 t^2``, which
corresponds to the Taylor-series expansion at order two of ``e^{At} - I``.
Then, at ``t = 1.0``,

```jldoctest quickstart
julia> A + 1/2 * A^2
@@ -138,20 +139,3 @@ Pages = [
]
Depth = 2
```

## References

[^1]: Althoff, Matthias, Olaf Stursberg, and Martin Buss. *Reachability analysis
of nonlinear systems with uncertain parameters using conservative linearization.*
2008 47th IEEE Conference on Decision and Control. IEEE, 2008.

[^2]: Kosheleva, Olga, et al. *Computing the cube of an interval matrix is NP-hard.*
Proceedings of the 2005 ACM symposium on Applied computing. ACM, 2005.

[^3]: Althoff, Matthias, Bruce H. Krogh, and Olaf Stursberg. *Analyzing reachability
of linear dynamic systems with parametric uncertainties.*
Modeling, Design, and Simulation of Systems with Uncertainties.
Springer, Berlin, Heidelberg, 2011. 69-94.

[^4]: Liou, M. L. *A novel method of evaluating transient response.*
Proceedings of the IEEE 54.1 (1966): 20-23.
53 changes: 0 additions & 53 deletions docs/src/references.md

This file was deleted.

106 changes: 106 additions & 0 deletions docs/src/refs.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
@article{Liou66,
title={A novel method of evaluating transient response},
author={Liou, ML},
journal={Proceedings of the {IEEE}},
volume={54},
number={1},
pages={20--23},
year={1966},
publisher={IEEE}
}

@article{Rump99,
title={Fast and parallel interval arithmetic},
author={Rump, Siegfried M},
journal={{BIT} Numerical Mathematics},
volume={39},
number={3},
pages={534--554},
year={1999},
publisher={Springer},
url={https://www.tuhh.de/ti3/paper/rump/Ru99b.pdf}
}

@inproceedings{KoshelevaKMN05,
author = {Olga Kosheleva and
Vladik Kreinovich and
G{\"{u}}nter Mayer and
Hung T. Nguyen},
editor = {Hisham Haddad and
Lorie M. Liebrock and
Andrea Omicini and
Roger L. Wainwright},
title = {Computing the cube of an interval matrix is NP-Hard},
booktitle = {Symposium on Applied Computing ({SAC})},
pages = {1449--1453},
publisher = {{ACM}},
year = {2005},
url = {https://doi.org/10.1145/1066677.1067007},
doi = {10.1145/1066677.1067007}
}

@inproceedings{AlthoffSB07,
author = {Matthias Althoff and
Olaf Stursberg and
Martin Buss},
title = {Reachability analysis of linear systems with uncertain parameters
and inputs},
booktitle = {Conference on Decision and Control ({CDC})},
pages = {726--732},
publisher = {{IEEE}},
year = {2007},
url = {https://doi.org/10.1109/CDC.2007.4434084},
doi = {10.1109/CDC.2007.4434084}
}

@inproceedings{AlthoffSB08,
author = {Matthias Althoff and
Olaf Stursberg and
Martin Buss},
title = {Reachability analysis of nonlinear systems with uncertain parameters
using conservative linearization},
booktitle = {Conference on Decision and Control ({CDC})},
pages = {4042--4048},
publisher = {{IEEE}},
year = {2008},
url = {https://doi.org/10.1109/CDC.2008.4738704},
doi = {10.1109/CDC.2008.4738704}
}

@phdthesis{Althoff10,
title={Reachability analysis and its application to the safety assessment of autonomous cars},
author={Althoff, Matthias},
year={2010},
school={Technische Universit{\"a}t M{\"u}nchen}
}

@article{Rump10,
author = {Siegfried M. Rump},
title = {Verification methods: Rigorous results using floating-point arithmetic},
journal = {Acta Numerica},
volume = {19},
pages = {287--449},
year = {2010},
url = {https://www.tuhh.de/ti3/paper/rump/Ru10.pdf},
doi = {10.1017/S096249291000005X}
}

@article{AlthoffKS11,
title={Analyzing reachability of linear dynamic systems with parametric uncertainties},
author={Althoff, Matthias and Krogh, Bruce H and Stursberg, Olaf},
journal={Modeling, Design, and Simulation of Systems with Uncertainties},
pages={69--94},
year={2011},
publisher={Springer}
}

@article{GoldsztejnN14,
author = {Alexandre Goldsztejn and
Arnold Neumaier},
title = {On the Exponentiation of Interval Matrices},
journal = {Reliable Computing},
volume = {20},
pages = {53--72},
year = {2014},
url = {http://interval.louisiana.edu/reliable-computing-journal/volume-20/reliable-computing-20-pp-053-072.pdf}
}
10 changes: 2 additions & 8 deletions src/correction_matrices.jl
Original file line number Diff line number Diff line change
@@ -16,10 +16,7 @@ An interval matrix representing the correction term.
### Algorithm
See Theorem 3 in [1].
[1] M. Althoff, O. Stursberg, M. Buss. Reachability Analysis of Linear Systems
with Uncertain Parameters and Inputs. CDC 2007.
See [AlthoffSB07; Theorem 3](@citet).
"""
function correction_hull(A::IntervalMatrix{T}, t, p) where {T}
F = _exp_remainder(A, t, p)
@@ -51,10 +48,7 @@ An interval matrix representing the correction matrix.
### Algorithm
See Proposition 3.4 in [1].
[1] M. Althoff. Reachability analysis and its application to the safety
assessment of autonomous cars. 2010.
See [Althoff10; Proposition 3.4](@citet).
"""
function input_correction(A::IntervalMatrix{T}, t, p) where {T}
n = checksquare(A)
33 changes: 9 additions & 24 deletions src/exponential.jl
Original file line number Diff line number Diff line change
@@ -67,8 +67,7 @@ such that `[exp(A*t)]_{ij} ⊆ m_{ij}`.
### Algorithm
See Theorem 1 in *Reachability Analysis of Linear Systems with Uncertain
Parameters and Inputs* by M. Althoff, O. Stursberg, M. Buss.
See [AlthoffSB07; Theorem 1](@citet).
"""
function exp_overapproximation(A::IntervalMatrix{T}, t, p) where {T}
n = checksquare(A)
@@ -77,9 +76,7 @@ function exp_overapproximation(A::IntervalMatrix{T}, t, p) where {T}
return S + E
end

# Implementation of Prop. 1 in Althoff, Matthias, Bruce H. Krogh, and Olaf Stursberg.
# "Analyzing reachability of linear dynamic systems with parametric uncertainties."
# Modeling, Design, and Simulation of Systems with Uncertainties. Springer, Berlin, Heidelberg, 2011. 69-94.
# Implementation of [AlthoffKS11; Prop. 1](@citet).
function _exp_remainder(A::IntervalMatrix{T}, t, p; n=checksquare(A)) where {T}
C = max.(abs.(inf(A)), abs.(sup(A)))
# compute Q = I + Ct + (Ct)^2/2! + ... + (Ct)^p/p!
@@ -101,10 +98,8 @@ function _exp_remainder(A::IntervalMatrix{T}, t, p; n=checksquare(A)) where {T}
return E
end

# Estimates the sum of the series in the matrix exponential. See Theorem 1
# in [1] Althoff, Matthias, Olaf Stursberg, and Martin Buss.
# Reachability analysis of nonlinear systems with uncertain parameters using conservative linearization.
# 2008 47th IEEE Conference on Decision and Control. IEEE, 2008.
# Estimates the sum of the series in the matrix exponential. See
# [AlthoffSB08; Theorem 1](@citet).
function _exp_remainder_series(A::IntervalMatrix{T}, t, p; n=checksquare(A)) where {T}
nA = opnorm(A, Inf)
c = nA * t / (p + 2)
@@ -134,8 +129,7 @@ such that `m_{ij} ⊆ [exp(A*t)]_{ij}`.
### Algorithm
See Theorem 2 in *Reachability Analysis of Linear Systems with Uncertain
Parameters and Inputs* by M. Althoff, O. Stursberg, M. Buss.
See [AlthoffSB07; Theorem 2](@citet).
"""
function exp_underapproximation(A::IntervalMatrix{T}, t, p) where {T}
@assert p > 1 "the order $p < 2 is not supported"
@@ -196,7 +190,7 @@ An interval matrix that encloses ``B := αA + βA^2``.
### Algorithm
This a variation of the algorithm in [1, Section 6]. If ``A = (aᵢⱼ)`` and
This a variation of the algorithm in [KoshelevaKMN05, Section 6](@citet). If ``A = (aᵢⱼ)`` and
``B := αA + βA^2 = (bᵢⱼ)``, the idea is to compute each ``bᵢⱼ`` by factoring
out repeated expressions (thus the term *single-use expressions*).
@@ -211,9 +205,6 @@ Now consider ``i ≠ j``. Then,
```math
bᵢⱼ = β\\sum_\\{k, k ≠ i, k ≠ j} a_{ik} a_{kj} + (α + βa_{ii} + βa_{jj}) a_{ij}.
```
[1] Kosheleva, Kreinovich, Mayer, Nguyen. Computing the cube of an interval
matrix is NP-hard. SAC 2005.
"""
function quadratic_expansion(A::IntervalMatrix, α::Real, β::Real)
B = similar(A)
@@ -323,16 +314,13 @@ Compute the matrix exponential using scaling and squaring.
### Algorithm
We use the algorithm in [1, Section 4.3], which first scales `A` by factor
We use the algorithm in [GoldsztejnN14; Section 4.3](@citet), which first scales `A` by factor
``2^{-l}``, computes the matrix exponential for the scaled matrix, and then
squares the result ``l`` times.
```math
\\exp(A * 2^{-l})^{2^l}
```
[1] Goldsztejn, Alexandre, Arnold Neumaier. "On the exponentiation of interval
matrices". Reliable Computing. 2014.
"""
function scale_and_square(A::IntervalMatrix{T}, l::Integer, t, p;
validate::Bool=true) where {T}
@@ -390,10 +378,7 @@ Compute the matrix exponential using the Horner scheme.
### Algorithm
We use the algorithm in [1, Section 4.2].
[1] Goldsztejn, Alexandre, Arnold Neumaier. "On the exponentiation of interval
matrices". Reliable Computing. 2014.
We use the algorithm in [GoldsztejnN14; Section 4.2](@citet).
"""
function horner(A::IntervalMatrix{T}, K::Integer;
validate::Bool=true) where {T}
@@ -418,7 +403,7 @@ function horner(A::IntervalMatrix{T}, K::Integer;
H = Iₙ + A / i * H
end

# remainder; ref [1] uses a less precise computation here
# remainder; ref [GoldsztejnN14] uses a less precise computation here
R = _exp_remainder(A, one(T), K)

return H + R
5 changes: 1 addition & 4 deletions src/operations/arithmetic.jl
Original file line number Diff line number Diff line change
@@ -59,10 +59,7 @@ An interval matrix equivalent to `A * A`.
### Algorithm
We follow [1, Section 6].
[1] Kosheleva, Kreinovich, Mayer, Nguyen. Computing the cube of an interval
matrix is NP-hard. SAC 2005.
We follow [KoshelevaKMN05; Section 6](@citet).
"""
function square(A::IntervalMatrix)
B = similar(A)
4 changes: 2 additions & 2 deletions src/operations/mult.jl
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ Sets the algorithm used to perform matrix multiplication with interval matrices.
- `multype` -- symbol describing the algorithm used
- `:slow` -- uses traditional matrix multiplication algorithm.
- `:fast` -- computes an enclosure of the matrix product using the midpoint-radius
notation of the matrix [[RUM10]](@ref).
notation of the matrix [Rump10](@citet).
!!! note ":fast option no longer supported"
`:fast` support was removed in `IntervalArithmetic` v0.22.
@@ -24,7 +24,7 @@ Sets the algorithm used to perform matrix multiplication with interval matrices.
- By default, `:slow` is used.
- Using `fast` is generally significantly faster, but it may return larger intervals,
especially if midpoint and radius have the same order of magnitude
(50% overestimate at most) [[RUM99]](@ref).
(50% overestimate at most) [Rump99](@citet).
"""
function set_multiplication_mode(multype)
multype in (:fast, :slow) || throw(ArgumentError("$multype is not a valid input"))
Loading

0 comments on commit 121e3b3

Please sign in to comment.