diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json new file mode 100644 index 00000000..de629065 --- /dev/null +++ b/dev/.documenter-siteinfo.json @@ -0,0 +1 @@ +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-09T19:50:11","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/dev/about/index.html b/dev/about/index.html new file mode 100644 index 00000000..997d8ec0 --- /dev/null +++ b/dev/about/index.html @@ -0,0 +1,2 @@ + +
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
+ ${display_result} +
+Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("beam", "beam.mat"))
+
+# system matrix
+A = read(file, "A")
+
+# input matrix
+B = read(file, "B")
+
+# state domain
+X = Universe(348)
+
+# input domain
+U = BallInf([0.9], 0.1)
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+@taylorize function biomodel7d!(dx, x, p, t)
+ dx[1] = -0.4 * x[1] + 5.0 * x[3] * x[4]
+ dx[2] = 0.4 * x[1] - x[2]
+ dx[3] = x[2] - 5.0 * x[3] * x[4]
+ dx[4] = 5.0 * x[5] * x[6] - 5.0 * x[3] * x[4]
+ dx[5] = -5.0 * x[5] * x[6] + 5.0 * x[3] * x[4]
+ dx[6] = 0.5 * x[7] - 5.0 * x[5] * x[6]
+ dx[7] = -0.5 * x[7] + 5.0 * x[5] * x[6]
+ return dx
+end
+
+function model(X0)
+ S = @system(x' = biomodel7d!(x), dim:7)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+@taylorize function biomodel9d!(dx, x, p, t)
+ dx[1] = 3.0 * x[3] - x[1] * x[6]
+ dx[2] = x[4] - x[2] * x[6]
+ dx[3] = x[1] * x[6] - 3.0 * x[3]
+ dx[4] = x[2] * x[6] - x[4]
+ dx[5] = 3.0 * x[3] + 5.0 * x[1] - x[5]
+ dx[6] = 5.0 * x[5] + 3.0 * x[3] + x[4] - x[6] * (x[1] + x[2] + 2.0 * x[8] + 1.0)
+ dx[7] = 5.0 * x[4] + x[2] - 0.5 * x[7]
+ dx[8] = 5.0 * x[7] - 2.0 * x[6] * x[8] + x[9] - 0.2 * x[8]
+ dx[9] = 2.0 * x[6] * x[8] - x[9]
+ return dx
+end
+
+function model(X0)
+ S = @system(x' = biomodel9d!(x), dim:9)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
We model the bouncing ball as a hybrid automaton with one location and a self-loop. See for example [LG09] pp. 79-83.
using ReachabilityAnalysis, ModelingToolkit
+
+function _bouncing_ball()
+ var = @variables x v
+
+ # "falling" mode with invariant x >= 0
+ invariant = HalfSpace(x ≥ 0, var)
+ flow = @system(z' = [0.0 1.0; 0.0 0.0] * z + [0.0, -9.81], z ∈ invariant)
+
+ # guard x == 0 && v ≤ 0
+ guard = HPolyhedron([0 ≤ x, x ≤ 0, v ≤ 0], var)
+
+ # reset map v⁺ := -cv
+ assignment = ConstrainedLinearMap([1.0 0.0; 0.0 -0.75], guard)
+
+ # initial-value problem
+ return HybridSystem(flow, assignment)
+end
+
+function model(X0)
+ H = _bouncing_ball()
+ return @ivp(H, z(0) ∈ X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis, ModelingToolkit
+
+@taylorize function flow_down!(du, u, params, t)
+ du[1] = u[2]
+ du[2] = -9.8 + 0.1 * (u[2])^2
+ return du
+end
+
+@taylorize function flow_up!(du, u, params, t)
+ du[1] = u[2]
+ du[2] = -9.8 - 0.1 * (u[2])^2
+ return du
+end
+
+function bouncingBallNonlinear_model()
+ var = @variables x, v
+
+ # hybrid automaton with state variables x, v
+ HA = GraphAutomaton(2)
+
+ # mode 1 ("down")
+ X = HPolyhedron([x ≥ 0, v ≤ 0], vars)
+ m1 = @system(x' = flow_down!(x), dim:2, x ∈ X)
+
+ # mode 2 ("up")
+ X = HPolyhedron([x ≥ 0, v ≥ 0], vars)
+ m2 = @system(x' = flow_up!(x), dim:2, x ∈ X)
+
+ # α transition down → up
+ add_transition!(HA, 1, 2, 1)
+ G = HalfSpace(x ≤ 0, vars)
+ A = [1.0 0.0; 0.0 -0.8]
+ Rα = ConstrainedLinearMap(A, G) # v := -0.8v
+
+ # β transition up → down
+ add_transition!(HA, 2, 1, 2)
+ G = HalfSpace(v ≤ 0, vars)
+ Rβ = ConstrainedIdentityMap(2, G)
+
+ # hybrid system
+ S = HybridSystems.HybridSystem(HA, [m1, m2], [Rα, Rβ], fill(AutonomousSwitching(), 2))
+
+ return S
+end
+
+function model(X0)
+ H = bouncingBallNonlinear_model()
+ return IVP(H, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
The Brusselator is a two ODEs theoretical model for autocatalytic reactions, where $x$ and $y$ are chemical concentrations:
using ReachabilityAnalysis
+
+const A = 1.0
+const B = 1.5
+const B1 = B + 1
+
+@taylorize function brusselator!(du, u, p, t)
+ x, y = u
+ x² = x * x
+ aux = x² * y
+ du[1] = A + aux - B1 * x
+ du[2] = B * x - aux
+ return du
+end
+
+function model(X0)
+ S = @system(x' = brusselator!(x), dim:2)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+@taylorize function buckling_column!(dx, x, params, t)
+ dx[1] = x[2]
+ dx[2] = 2 * x[1] - x[1]^3 - 0.2 * x[2] + 0.1
+ return dx
+end
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("building", "building.mat"))
+
+# system matrix
+A = read(file, "A")
+
+# input matrix
+B = read(file, "B")
+
+# state domain
+X = Universe(48)
+
+# input domain
+U = BallInf([0.5], 0.3)
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis, ModelingToolkit
+
+vars = @variables u, v, t
+
+@taylorize function cardiac_cell_on!(dx, x, params, t)
+ dx[1] = -0.9 * x[1]^2 - x[1]^3 - 0.9 * x[1] - x[2] + 1
+ dx[2] = x[1] - 2 * x[2]
+ dx[3] = one(x[3])
+ return dx
+end
+
+@taylorize function cardiac_cell_off!(dx, x, params, t)
+ dx[1] = -0.9 * x[1]^2 - x[1]^3 - 0.9 * x[1] - x[2]
+ dx[2] = x[1] - 2 * x[2]
+ dx[3] = one(x[3])
+ return dx
+end
+
+function cardiac_cell_hybrid()
+ n = 2 + 1 # variables + time
+
+ automaton = GraphAutomaton(2)
+ add_transition!(automaton, 1, 2, 1)
+ add_transition!(automaton, 2, 1, 2)
+
+ # mode 1 "approaching"
+ invariant = HalfSpace(t <= 5, vars)
+ mode1 = @system(x' = cardiac_cell_on!(x), dim:3, x ∈ invariant)
+ # mode 1 "approaching"
+ invariant = HalfSpace(t <= 20, vars)
+ mode2 = @system(x' = cardiac_cell_off!(x), dim:3, x ∈ invariant)
+ modes = [mode1, mode2]
+
+ reset = Dict(n => 0.0)
+
+ # transition on -> off
+ guard = HalfSpace(t >= 5)
+ trans1 = ConstrainedResetMap(n, guard, reset)
+ # transition off -> on
+ guard = HalfSpace(t >= 20)
+ trans2 = ConstrainedResetMap(n, guard, reset)
+ resetmaps = [trans1, trans2]
+
+ return HybridSystems.HybridSystem(automaton, modes, resetmaps, [AutonomousSwitching()])
+end
+
+function model(X0)
+ H = cardiac_cell_hybrid()
+ return IVP(H, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("cdplayer", "cdplayer.mat"))
+
+# system matrix
+A = read(file, "A")
+
+# input matrix
+B = read(file, "B")
+
+# state domain
+X = Universe(120)
+
+# input domain
+U = BallInf([0.0, 0.0], 1.0)
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis, ModelingToolkit
+
+const A1 = 40.0
+const A2 = 30.0
+const B = 0.5
+const t1 = 75
+const t2 = 65
+
+const var′ = @variables t t′
+
+function thermostat_on′()
+ invariant = HalfSpace(t <= t1, var′)
+ @system(x' = [-B 0; 0 0] * x + [A1, 1], x ∈ invariant)
+end
+
+function thermostat_off′()
+ invariant = HalfSpace(t >= t2, var′)
+ @system(x' = [-B 0; 0 0] * x + [A2, 1], x ∈ invariant)
+end
+
+function thermostat_hybrid′()
+ automaton = GraphAutomaton(2)
+ add_transition!(automaton, 1, 2, 1)
+ add_transition!(automaton, 2, 1, 2)
+
+ mode1 = thermostat_on′()
+ mode2 = thermostat_off′()
+ modes = [mode1, mode2]
+
+ # transition on -> off
+ guard = HalfSpace(t >= t1, var′)
+ trans1 = ConstrainedIdentityMap(1, guard)
+ # transition off -> on
+ guard = HalfSpace(t <= t2, var′)
+ trans2 = ConstrainedIdentityMap(1, guard)
+ resetmaps = [trans1, trans2]
+
+ return HybridSystems.HybridSystem(automaton, modes, resetmaps, [AutonomousSwitching()])
+end
+
+function model(X0)
+ H = thermostat_hybrid′()
+ return IVP(H, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+@taylorize function coupled_vanderpol!(du, u, p, t)
+ du[1] = u[2]
+ du[2] = (1.0 - u[1]^2) * u[2] - u[1] + (u[3] - u[1])
+ du[3] = u[4]
+ du[4] = (1.0 - u[3]^2) * u[4] - u[3] + (u[1] - u[3])
+ return du
+end
+
+function model(X0)
+ S = @system(x' = coupled_vanderpol!(x), dim:4)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+A = [0.0 1.0 0.0 0.0 0.0 0.0;
+ -0.417533 -3.1931759963 39.24 0.0 -14.825331 11.123344;
+ 0.0 0.0 0.0 1.0 0.0 0.0;
+ 0.0417533 0.31931759963 -4.905 0.0 1.4825331 -1.1123344;
+ 0.0638407957 -0.32473339016573 0.0 0.0 -3.7332068901 -0.7007592976;
+ 0.0853437452 -0.72366802635628 0.0 0.0 -5.9714023436 -2.2736115136]
+
+function model(X0)
+ S = @system(x' = Ax)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+@taylorize function doublegyre!(dx, x, params, t)
+ local A = 0.1
+ dx[1] = -π * A * sin(π * x[1]) * cos(π * x[2])
+ dx[2] = π * A * cos(π * x[1]) * sin(π * x[2])
+ return dx
+end
+
+function model(X0)
+ S = @system(x' = doublegyre!(x), dim:2)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+A = [3.0 -9.0;
+ 4.0 -3.0]
+
+function model(X0)
+ S = @system(x' = Ax)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityAnalysis
+
+# system matrix
+D = [-1.0 -4.0 0.0 0.0 0.0;
+ 4.0 -1.0 0.0 0.0 0.0;
+ 0.0 0.0 -3.0 1.0 0.0;
+ 0.0 0.0 -1.0 -3.0 0.0;
+ 0.0 0.0 0.0 0.0 -2.0]
+P = [0.6 -0.1 0.1 0.7 -0.2;
+ -0.5 0.7 -0.1 -0.8 0.0;
+ 0.9 -0.5 0.3 -0.6 0.1;
+ 0.5 -0.7 0.5 0.6 0.3;
+ 0.8 0.7 0.6 -0.3 0.2]
+A = P * D * inv(P)
+
+# state domain
+X = Universe(5)
+
+# input domain
+U = Ball2(zeros(5), 0.01)
+
+function model(X0)
+ S = @system(x' = Ax + u, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("fom", "fom.mat"))
MAT.MAT_v5.Matlabv5File(IOStream(<file /home/runner/work/ReachabilityModels.jl/ReachabilityModels.jl/docs/../src/models/fom/fom.mat>), false, #undef)
system matrix
A = float(read(file, "A")) # the matrix has Int entries
1006×1006 SparseArrays.SparseMatrixCSC{Float64, Int64} with 1012 stored entries:
+⎡⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤
+⎢⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⎥
+⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⎦
input matrix
B = read(file, "B")
1006×1 Matrix{Float64}:
+ 10.0
+ 10.0
+ 10.0
+ 10.0
+ 10.0
+ 10.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ ⋮
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
state domain
X = Universe(1006)
Universe{Float64}(1006)
input domain
U = BallInf([0.0], 1.0)
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, SparseArrays, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("heat", "heat.mat"))
+
+# system matrix
+A = read(file, "A")
+
+# input matrix
+B = sparse([67], [1], [1.0], size(A, 1), 1)
+
+# state domain
+X = Universe(200)
+
+# input domain
+U = BallInf([0.0], 0.5)
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
System type: linear continuous system
State dimension: 28
Application domain:
This is a 28-dimensional controlled helicopter model.
using ReachabilityModels, MAT, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("helicopter", "sx/heli.mat"))
MAT.MAT_HDF5.MatlabHDF5File(HDF5.File: (read-only) /home/runner/work/ReachabilityModels.jl/ReachabilityModels.jl/docs/../src/models/helicopter/sx/heli.mat, true, false, 0, false)
system matrix
A = read(file, "A")
28×28 Matrix{Float64}:
+ 0.0 0.0 … 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 -0.160139 -6.11536 -0.0389724
+ 0.0 0.0 0.979163 0.0404014 0.010697
+ 0.0 0.0 -0.0230167 -1.06985 -0.596675
+ -32.1036 0.0 … -1.11578 -0.0263051 -0.0337389
+ 0.102161 32.0578 -0.0310234 -1.22553 0.657926
+ -1.91097 1.71383 -0.126841 -0.391839 0.420788
+ 0.126296 -0.00289825 0.0 0.0 0.0
+ -0.0181141 0.077615 0.0 0.0 0.0
+ ⋮ ⋱ ⋮
+ 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 … 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0426396 0.132541 -0.142338
+ 0.0 0.0 … -6.64198 0.0396022 0.0261817
+ 0.0 0.0 0.197714 -6.3694 -0.0119768
+ 0.0 0.0 0.012459 -0.083125 -5.47283
input matrix
B = read(file, "B")
28×6 Matrix{Float64}:
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ -9.82138e-5 -0.126296 0.00289825 -0.00177237 0.319316 -0.785296
+ -0.000680851 0.0181141 -0.077615 0.012793 -0.710897 -2.45359
+ ⋮ ⋮
+ 0.0 0.0 0.0 3.26127 0.0 0.0
+ 0.0 0.0 0.0 0.0 3.26127 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 8.15316
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
+ 0.0 0.0 0.0 0.0 0.0 0.0
state domain
X = Universe(28)
Universe{Float64}(28)
input domain
U = Hyperrectangle(zeros(6), [0, 0, 0, 0.001, 0.001, 0.001])
+
+function model(X0)
+ S = @system(x' = A * x + B * u, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module henon_heiles
+using ReachabilityAnalysis
+@taylorize function henon_heiles!(du, u, p, t)
+ p₁, p₂, q₁, q₂ = u[1], u[2], u[3], u[4]
+ du[1] = -q₁ * (1 + 2q₂)
+ du[2] = -q₂ - (q₁^2 - q₂^2)
+ du[3] = p₁
+ return du[4] = p₂
+end
+
+function model(X0)
+ S = @system(x' = henon_heiles!(x), dim:4)
+ return IVP(S, X0)
+end
+end # module
Main.henon_heiles
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("iss", "iss.mat"))
MAT.MAT_v5.Matlabv5File(IOStream(<file /home/runner/work/ReachabilityModels.jl/ReachabilityModels.jl/docs/../src/models/iss/iss.mat>), false, #undef)
system matrix
A = read(file, "A")
270×270 SparseArrays.SparseMatrixCSC{Float64, Int64} with 405 stored entries:
+⎡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⎥
+⎢⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⎥
+⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⎦
input matrix
B = read(file, "B")
270×3 SparseArrays.SparseMatrixCSC{Float64, Int64} with 405 stored entries:
+⎡⠀⠀⎤
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⠀⠀⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎢⣿⢸⎥
+⎣⣿⢸⎦
state domain
X = Universe(270)
Universe{Float64}(270)
input domain
U = Hyperrectangle([0.05, 0.9, 0.95], [0.05, 0.1, 0.05])
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module jet_engine
+using ReachabilityAnalysis
+@taylorize function jet_engine!(dx, x, params, t)
+ dx[1] = -x[2] - 1.5 * x[1]^2 - 0.5 * x[1]^3 - 0.5
+ dx[2] = 3 * x[1] - x[2]
+ return dx
+end
+
+function model(X0)
+ S = @system(x' = jet_engine!(x), dim:2)
+ return IVP(S, X0)
+end
+end # module
Main.jet_engine
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module lorenz
+using ReachabilityAnalysis
+@taylorize function lorenz!(dx, x, params, t)
+ σ, β, ρ = 10.0, 8.0 / 3.0, 28.0
+ dx[1] = σ * (x[2] - x[1])
+ dx[2] = x[1] * (ρ - x[3]) - x[2]
+ dx[3] = x[1] * x[2] - β * x[3]
+ return dx
+end
+
+function model(X0)
+ S = @system(x' = lorenz!(x), dim:3)
+ return IVP(S, X0)
+end
+end # module
Main.lorenz
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module lotka_volterra
+using ReachabilityAnalysis
+@taylorize function lotka_volterra!(du, u, p, t)
+ local α, β, γ, δ = 1.5, 1.0, 3.0, 1.0
+ du[1] = u[1] * (α - β * u[2])
+ du[2] = -u[2] * (γ - δ * u[1])
+ return du
+end
+
+function model(X0)
+ S = @system(x' = lotka_volterra!(x), dim:2)
+ return IVP(S, X0)
+end
+end # module
Main.lotka_volterra
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, SparseArrays, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("mna1", "mna1.mat"))
MAT.MAT_v5.Matlabv5File(IOStream(<file /home/runner/work/ReachabilityModels.jl/ReachabilityModels.jl/docs/../src/models/mna1/mna1.mat>), false, #undef)
system matrix
A = sparse(read(file, "A"))
578×578 SparseArrays.SparseMatrixCSC{Float64, Int64} with 1694 stored entries:
+⎡⠱⣦⡀⠱⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡔⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤
+⎢⢄⡈⠻⣦⡘⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠘⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⎥
+⎢⠀⠈⠲⣌⠻⢆⡙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⎥
+⎢⠀⠀⠀⠈⠳⣌⠱⣦⡙⢆⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠈⠳⢌⠛⣤⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠛⣤⡙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣌⠱⢆⡙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⡀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣌⠱⣦⡙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣌⠛⣤⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⡀⠀⠀⠀⠄⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠻⣦⡙⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⣌⠱⢆⡙⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣆⠀⠀⎥
+⎢⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⠌⠱⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢧⠀⎥
+⎢⠴⢭⣓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠈⠙⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠙⠲⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠱⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⢦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⢆⡀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⣤⡀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠲⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠱⢆⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⢄⡀⠀⎥
+⎣⠀⠀⠠⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠄⠀⠀⠀⠀⠉⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢱⠖⎦
affine term
b = sparsevec(570:578, [fill(-0.1, 5); fill(-0.2, 4)], 578)
+
+function model(X0)
+ S = @system(x' = Ax + b)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, MAT, SparseArrays, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("mna5", "mna5.mat"))
MAT.MAT_v5.Matlabv5File(IOStream(<file /home/runner/work/ReachabilityModels.jl/ReachabilityModels.jl/docs/../src/models/mna5/mna5.mat>), false, #undef)
system matrix
A = sparse(read(file, "A"))
10913×10913 SparseArrays.SparseMatrixCSC{Float64, Int64} with 54159 stored entries:
+⎡⡿⣯⡉⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠁⎤
+⎢⡇⠈⢵⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⡇⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠇⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⎥
+⎢⡀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⎥
+⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⠀⠀⎥
+⎢⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⡀⠀⎥
+⎣⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⎦
affine term
b = sparsevec(19:27, [fill(-0.1, 5); fill(-0.2, 4)], 10913)
+
+function model(X0)
+ S = @system(x' = Ax + b)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
using ReachabilityModels, SparseArrays
system matrix
I = [1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 6, 7, 7, 7, 7, 8]
+J = [2, 3, 2, 1, 2, 3, 4, 1, 6, 7, 6, 5, 6, 7, 8, 5]
+V = [1, 8487.2, -1.0865, -2592.1, -21.119, -698.91, -141399.0, 1.0, 1.0,
+ 8487.2, -1.0865, -2592.1, -21.119, -698.91, -141399.0, 1.0]
+A = sparse(I, J, V)
8×8 SparseArrays.SparseMatrixCSC{Float64, Int64} with 16 stored entries:
+ ⋅ 1.0 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅
+ ⋅ -1.0865 8487.2 ⋅ ⋅ ⋅ ⋅ ⋅
+ -2592.1 -21.119 -698.91 -141399.0 ⋅ ⋅ ⋅ ⋅
+ 1.0 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅
+ ⋅ ⋅ ⋅ ⋅ ⋅ 1.0 ⋅ ⋅
+ ⋅ ⋅ ⋅ ⋅ ⋅ -1.0865 8487.2 ⋅
+ ⋅ ⋅ ⋅ ⋅ -2592.1 -21.119 -698.91 -141399.0
+ ⋅ ⋅ ⋅ ⋅ 1.0 ⋅ ⋅ ⋅
input matrix
B = sparse([4, 8], [1, 2], [-1.0, -1.0])
8×2 SparseArrays.SparseMatrixCSC{Float64, Int64} with 2 stored entries:
+ ⋅ ⋅
+ ⋅ ⋅
+ ⋅ ⋅
+ -1.0 ⋅
+ ⋅ ⋅
+ ⋅ ⋅
+ ⋅ ⋅
+ ⋅ -1.0
state domain
X = Universe(8)
Universe{Float64}(8)
input domain
U = Hyperrectangle([0.23, 0.3], [0.07, 0.1])
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module navigation_system
+
+using ReachabilityAnalysis, ModelingToolkit
+
+const var = @variables x, y, v_x, v_y
+
+function mode0()
+ A = [0 0 1 0;
+ 0 0 0 1;
+ 0 0 -1.2 0.1;
+ 0 0 0.1 -1.2]
+ B = [0, 0, -0.1, 1.2]
+ invariant = UnionSetArray([HalfSpace(x <= 1),
+ HalfSpace(v_x <= 0),
+ HalfSpace(y <= 1),
+ HalfSpace(v_y <= 0)])
+ return @system(x' = Ax + B, x ∈ invariant)
+end
+
+function mode1()
+ A = [0 0 1 0;
+ 0 0 0 1;
+ 0 0 -1.2 0.1;
+ 0 0 0.1 -1.2]
+ B = [0, 0, -4.8, 0.4]
+ invariant = UnionSetArray([HalfSpace(x >= 1),
+ HalfSpace(v_x <= 0),
+ HalfSpace(y <= 1),
+ HalfSpace(v_y <= 0)])
+ return @system(x' = Ax + B, x ∈ invariant)
+end
+
+function mode2()
+ A = [0 0 1 0;
+ 0 0 0 1;
+ 0 0 -1.2 0.1;
+ 0 0 0.1 -1.2]
+ B = [0, 0, 2.4, -0.2]
+ invariant = UnionSetArray([HalfSpace(x <= 1),
+ HalfSpace(v_x <= 0),
+ HalfSpace(y >= 1),
+ HalfSpace(v_y >= 0)])
+ @system(x' = Ax + B, x ∈ invariant)
+end
+
+function mode3()
+ A = [0 0 1 0;
+ 0 0 0 1;
+ 0 0 -1.2 0.1;
+ 0 0 0.1 -1.2]
+ B = [0, 0, 3.9, -3.9]
+ invariant = UnionSetArray([HalfSpace(x >= 1),
+ HalfSpace(v_x >= 0),
+ HalfSpace(y >= 1),
+ HalfSpace(v_y >= 0)])
+ @system(x' = Ax + B, x ∈ invariant)
+end
+
+function navigation_system_hybrid()
+ automaton = GraphAutomaton(4)
+ add_transition!(automaton, 1, 2, 1)
+ add_transition!(automaton, 2, 1, 2)
+ add_transition!(automaton, 2, 4, 3)
+ add_transition!(automaton, 4, 2, 4)
+ add_transition!(automaton, 1, 3, 5)
+ add_transition!(automaton, 3, 1, 6)
+ add_transition!(automaton, 3, 4, 7)
+ add_transition!(automaton, 4, 3, 8)
+
+ modes = [mode0(), mode1(), mode2(), mode3()]
+
+ # transition 1 -> 2
+ guard = HPolyhedron([HalfSpace(x >= 1), HalfSpace(v_x >= 0)])
+ trans1 = ConstrainedIdentityMap(4, guard)
+ # transition 2 -> 1
+ guard = HPolyhedron([HalfSpace(x <= 1), HalfSpace(v_x <= 0)])
+ trans2 = ConstrainedIdentityMap(4, guard)
+ # transition 2 -> 4
+ guard = HPolyhedron([HalfSpace(y >= 1), HalfSpace(v_y >= 0)])
+ trans3 = ConstrainedIdentityMap(4, guard)
+ # transition 4 -> 2
+ guard = HPolyhedron([HalfSpace(y <= 1), HalfSpace(v_y <= 0)])
+ trans4 = ConstrainedIdentityMap(4, guard)
+ # transition 1 -> 3
+ guard = HPolyhedron([HalfSpace(y >= 1), HalfSpace(v_y >= 0)])
+ trans5 = ConstrainedIdentityMap(4, guard)
+ # transition 3 -> 1
+ guard = HPolyhedron([HalfSpace(y <= 1), HalfSpace(v_y <= 0)])
+ trans6 = ConstrainedIdentityMap(4, guard)
+ # transition 3 -> 4
+ guard = HPolyhedron([HalfSpace(x >= 1), HalfSpace(v_x >= 0)])
+ trans7 = ConstrainedIdentityMap(4, guard)
+ # transition 4 -> 3
+ guard = HPolyhedron([HalfSpace(x <= 1), HalfSpace(v_x <= 0)])
+ trans8 = ConstrainedIdentityMap(4, guard)
+ resetmaps = [trans1, trans2, trans3, trans4, trans5, trans6, trans7, trans8]
+
+ return HybridSystems.HybridSystem(automaton, modes, resetmaps, [AutonomousSwitching()])
+end
+
+function model(X0)
+ H = navigation_system_hybrid()
+ return IVP(H, [(1, X0)])
+end
+
+end # module
Main.navigation_system
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
PDE
using ReachabilityModels, MAT, ReachabilityBase.CurrentPath
+
+file = matopen(@current_path("pde", "pde.mat"))
+
+# system matrix
+A = float(read(file, "A")) # the matrix has Int entries
+
+# input matrix
+B = read(file, "B")
+
+# state domain
+X = Universe(84)
+
+# input domain
+U = BallInf([0.75], 0.25)
+
+function model(X0)
+ S = @system(x' = Ax + Bu, x ∈ X, u ∈ U)
+ return IVP(S, X0)
+end
model (generic function with 1 method)
Reachability settings
Results
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module powertrain_control
+using ReachabilityAnalysis, ModelingToolkit
+#using Polyhedra, CDDLib # ??
+
+vars = @variables p, lam, pe, i, t
+
+@taylorize function startup!(dx, x, params, t)
+ p, lam, pe, i = x
+ dx[1] = 0.41328 * (2 * 247 * (-2.3421 * p * p + 2.7799 * p - 0.3273) -
+ 0.9 * (-3.66 + 0.08979 * 104.71975511 * p - 0.0337 * 104.71975511 * p * p +
+ 0.0001 * 104.71975511 * 104.71975511 * p))
+ dx[2] = 4 * (13.893 -
+ 35.2518 * 1 *
+ ((1 / 14.7) * (-3.66 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) +
+ 20.7364 * 1 * 1 *
+ ((1 / 14.7) * (-3.66 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) *
+ ((1 / 14.7) * (-3.66 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) +
+ 2.6287 * (0.9 * (-3.66 + 0.08979 * 104.71975511 * p - 0.0337 * 104.71975511 * p * p +
+ 0.0001 * p * 104.71975511 * 104.71975511)) -
+ 1.592 *
+ (0.9 * (-3.66 + 0.08979 * 104.71975511 * p - 0.0337 * 104.71975511 * p * p +
+ 0.0001 * p * 104.71975511 * 104.71975511)) * 1 *
+ ((1 / 14.7) * (-3.66 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) - lam)
+ dx[3] = 0.41328 * (2 * 1 * (247) * (-2.3421 * p * p + 2.7799 * p - 0.3273) -
+ (-3.66 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511))
+ dx[4] = zero(i)
+ return dx
+end
+
+@taylorize function normal!(dx, x, params, t)
+ p, lam, pe, i = x
+ dx[1] = 0.41328 * (2 * 1 * (247) * (-2.3421 * p * p + 2.7799 * p - 0.3273) -
+ (-3.66 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511))
+ dx[2] = 4 * (13.893 -
+ 35.2518 * 1 *
+ ((1 / 14.7) * (1 + ivalue + 0.04 * (1 * lam - 14.7)) *
+ (-0.366 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) +
+ 20.7364 * 1 * 1 *
+ ((1 / 14.7) * (1 + ivalue + 0.04 * (1 * lam - 14.7)) *
+ (-0.366 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) *
+ ((1 / 14.7) * (1 + ivalue + 0.04 * (1 * lam - 14.7)) *
+ (-0.366 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) +
+ 2.6287 * (0.9 * (-0.366 + 0.08979 * 104.71975511 * p - 0.0337 * 104.71975511 * p * p +
+ 0.0001 * p * 104.71975511 * 104.71975511)) -
+ 1.592 *
+ (0.9 * (-0.366 + 0.08979 * 104.71975511 * p - 0.0337 * 104.71975511 * p * p +
+ 0.0001 * p * 104.71975511 * 104.71975511)) * 1 *
+ ((1 / 14.7) * (1 + ivalue + 0.04 * (1 * lam - 14.7)) *
+ (-0.366 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511)) - lam)
+ dx[3] = 0.41328 * (2 * 1 * (247.0) * (-2.3421 * p * p + 2.7799 * p - 0.3273) -
+ (-0.366 + 0.08979 * 104.71975511 * pe - 0.0337 * 104.71975511 * pe * pe +
+ 0.0001 * pe * 104.71975511 * 104.71975511))
+ dx[4] = 0.14 * (1 * lam - 14.7)
+ return dx
+end
+
+function powertrain_control_hybrid()
+ n = 4 + 1 # variables
+
+ automaton = GraphAutomaton(2)
+ add_transition!(automaton, 1, 2, 1)
+
+ # mode 1 "startup"
+ invariant = HPolyhedron([HalfSpace(t >= 9.5, vars), HalfSpace(t <= 20, vars)])
+ mode1 = @system(x' = startup!(x), dim:5, x ∈ invariant)
+ # mode 1 "normal"
+ invariant = Universe(n)
+ mode2 = @system(x' = normal!(x), dim:5, x ∈ invariant)
+ modes = [mode1, mode2]
+
+ reset = Dict(n => 0.0)
+
+ # transition startup -> normal
+ guard = HalfSpace(t >= 9.5, vars)
+ trans1 = ConstrainedResetMap(n, guard, reset)
+ resetmaps = [trans1]
+
+ return HybridSystems.HybridSystem(automaton, modes, resetmaps, [AutonomousSwitching()])
+end
+
+function model(X0)
+ H = powertrain_control_hybrid()
+ return IVP(H, [(1, X0)])
+end
+end # module
Main.powertrain_control
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module projectile
+using ReachabilityAnalysis, SparseArrays
+
+# system matrix
+A = sparse([1, 3], [2, 4], [0.5, 0.7], 4, 4)
+
+# affine term
+b = sparsevec([4], [-9.81], 4)
+
+function model(X0)
+ S = @system(x' = Ax + b)
+ return IVP(S, X0)
+end
+end # module
Main.projectile
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module robot_arm
+using ReachabilityAnalysis
+@taylorize function robot_arm!(dx, x, params, t)
+ dx[1] = x[3]
+ dx[2] = x[4]
+ dx[3] = (-2x[2] * x[3] * x[4] - 2x[1] - 2x[3] + 4) / (x[2]^2 + 1)
+ dx[4] = x[2] * x[3]^2 - x[2] - x[4] + 1
+ return dx
+end
+
+function model(X0)
+ S = @system(x' = robot_arm!(x), dim:4)
+ return IVP(S, X0)
+end
+end # module
Main.robot_arm
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module roessler
+using ReachabilityAnalysis
+@taylorize function roessler!(du, u, p, t)
+ local a, b, c = 0.2, 0.2, 5.7
+
+ du[1] = -u[2] - u[3]
+ du[2] = u[1] + (a * u[2])
+ du[3] = b + (u[3] * (u[1] - c))
+
+ return du
+end
+
+function model(X0)
+ S = @system(x' = roessler!(x), dim:3)
+ return IVP(S, X0)
+end
+end # module
Main.roessler
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module spiking_neuron
+using ReachabilityAnalysis, ModelingToolkit
+
+@taylorize function flow!(dx, x, params, t)
+ local a = 0.02
+ local b = 0.2
+ local I = 40
+ dx[1] = (0.04 * (x[1] * x[1]) + 5 * x[1]) + ((140 + I) - x[2])
+ dx[2] = a * ((b * x[1]) - x[2])
+ return dx
+end
+
+function spikingNeuron_model()
+ # hybrid automaton
+ HA = GraphAutomaton(1)
+
+ # mode 1
+ X = HPolyhedron([HalfSpace([1.0, 0.0], 30.0)]) # x1 ≤ 30
+ m1 = @system(x' = flow!(x), dim:2, x ∈ X)
+
+ # transition mode 1 → mode 1 (self loop)
+ add_transition!(HA, 1, 1, 1)
+ G = HPolyhedron([HalfSpace([-1.0, 0.0], -30.0)]) # x1 ≥ 30
+ A = [0.0 0.0; 0.0 1.0]
+ b = [-65.0, 8.0]
+ R11 = ConstrainedAffineMap(A, b, G) # x1 := -65, x2 := x2 + 8
+
+ # hybrid system
+ S = HybridSystems.HybridSystem(HA, [m1], [R11], [AutonomousSwitching()])
+
+ return S
+end
+
+function model(X0)
+ H = spikingNeuron_model()
+ return IVP(H, X0)
+end
+end # module
Main.spiking_neuron
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module spring_pendulum
+using ReachabilityAnalysis
+@taylorize function spring_pendulum!(du, u, p, t)
+ local g, k, L = 9.8, 2.0, 1.0
+ du[1] = u[3]
+ du[2] = u[4]
+ du[3] = ((u[1] * (u[4] * u[4])) + g * cos(u[2])) - k * (u[1] - L)
+ du[4] = -((2 * u[3] * u[4]) + g * sin(u[2])) / (u[1])
+
+ # change of variables: r <- r - L
+ #du[3] = (((u[1]+L) * (u[4]*u[4])) + g*cos(u[2])) - k*(u[1])
+ #du[4] = -((2*u[3]*u[4]) + g*sin(u[2]))/(u[1]+L)
+
+ return du
+end
+
+function model(X0)
+ S = @system(x' = spring_pendulum!(x), dim:4)
+ return IVP(S, X0)
+end
+end # module
Main.spring_pendulum
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module steam_governor
+using ReachabilityAnalysis
+@taylorize function steam_governor!(du, u, p, t)
+ local ϵ = 3.0
+ local α = 1.0
+ local β = 1.0
+
+ du[1] = u[2]
+ du[2] = u[3]^2 * sin(u[1]) * cos(u[1]) - sin(u[1]) - ϵ * u[2]
+ du[3] = α * (cos(u[1]) - β)
+
+ return du
+end
+
+function model(X0)
+ S = @system(x' = steam_governor!(x), dim:3)
+ return IVP(S, X0)
+end
+end # module
Main.steam_governor
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module thermostat
+
+using ReachabilityAnalysis, ModelingToolkit
+
+const A1 = 40.0
+const A2 = 30.0
+const B = 0.5
+const t1 = 75
+const t2 = 65
+
+const var = @variables t
+
+function thermostat_on()
+ invariant = HalfSpace(t <= t1)
+ @system(x' = -Bx + A1, x ∈ invariant)
+end
+
+function thermostat_off()
+ invariant = HalfSpace(t >= t2)
+ @system(x' = -Bx + A2, x ∈ invariant)
+end
+
+function thermostat_hybrid()
+ automaton = GraphAutomaton(2)
+ add_transition!(automaton, 1, 2, 1)
+ add_transition!(automaton, 2, 1, 2)
+
+ mode1 = thermostat_on()
+ mode2 = thermostat_off()
+ modes = [mode1, mode2]
+
+ # transition on -> off
+ guard = HalfSpace(t >= t1)
+ trans1 = ConstrainedIdentityMap(1, guard)
+ # transition off -> on
+ guard = HalfSpace(t <= t2)
+ trans2 = ConstrainedIdentityMap(1, guard)
+ resetmaps = [trans1, trans2]
+
+ return HybridSystems.HybridSystem(automaton, modes, resetmaps, [AutonomousSwitching()])
+end
+
+function model(X0)
+ H = thermostat_hybrid()
+ return IVP(H, X0)
+end
+
+end # module
Main.thermostat
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
module vanderpol
+using ReachabilityAnalysis
+@taylorize function vanderpol!(dx, x, params, t)
+ local μ = 1.0
+ dx[1] = x[2]
+ dx[2] = (μ * x[2]) * (1 - x[1]^2) - x[1]
+ return dx
+end
+
+function model(X0)
+ S = @system(x' = vanderpol!(x), dim:2)
+ return IVP(S, X0)
+end
+end # module
Main.vanderpol
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
The following models have hybrid dynamics.
Name | State dimension |
---|---|
automatic_lane_change_system | 6 |
bouncing_ball | 2 |
bouncing_ball_nonlinear | 2 |
cardiac_cell | 3 |
clocked_thermostat | 2 |
filtered_oscillator | 3 |
linear_switching | 1 |
navigation_system | 4 |
powertrain_control | 5 |
spiking_neuron | 2 |
thermostat | 1 |
two_tanks | 2 |
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
The following models have linear dynamics.
Name | State dimension |
---|---|
beam | 348 |
bouncing_ball | 2 |
building | 48 |
cdplayer | 120 |
clocked_thermostat | 2 |
crane | 6 |
ellipse | 2 |
filtered_oscillator | 3 |
five_dim_sys | 5 |
fom | 1006 |
heat | 200 |
helicopter | 28 |
iss | 270 |
linear_switching | 1 |
mna1 | 578 |
mna5 | 10913 |
motor | 8 |
navigation_system | 4 |
pde | 84 |
projectile | 4 |
thermostat | 1 |
two_tanks | 2 |
vehicle_platoon_10 | 30 |
vehicle_platoon_5 | 15 |
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
The following models have nonlinear dynamics.
Name | State dimension |
---|---|
automatic_lane_change_system | 6 |
biomodel7d | 7 |
biomodel9d | 9 |
bouncing_ball_nonlinear | 2 |
brusselator | 2 |
buckling_column | 2 |
cardiac_cell | 3 |
coupled_vanderpol | 4 |
doublegyre | 2 |
henon_heiles | 4 |
jet_engine | 2 |
lorenz | 3 |
lotka_volterra | 2 |
powertrain_control | 5 |
robot_arm | 2 |
roessler | 3 |
spiking_neuron | 2 |
spring_pendulum | 4 |
steam_governor | 3 |
vanderpol | 2 |
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
The following table shows the number of models for each type of system.
Linear | Nonlinear | Hybrid | Total |
---|---|---|---|
24 | 20 | 12 | 56 |
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.
Settings
This document was generated with Documenter.jl version 1.7.0 on Monday 9 September 2024. Using Julia version 1.10.5.