Skip to content

Commit

Permalink
use DocumenterCitations for bibliography
Browse files Browse the repository at this point in the history
  • Loading branch information
schillic committed Jan 25, 2025
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.