feat: changes to presentation

This commit is contained in:
Henri Saudubray 2025-05-21 16:44:49 +02:00
parent 54801d18f0
commit b27d39562d
Signed by: hms
GPG key ID: 7065F57ED8856128

View file

@ -51,14 +51,6 @@
#set raw(syntaxes: "zelus.sublime-syntax") #set raw(syntaxes: "zelus.sublime-syntax")
#show raw: set text(font: "CaskaydiaCove NF") #show raw: set text(font: "CaskaydiaCove NF")
#let rbrace(in-block, out-block, out-width: auto, ..args) = {
math.lr([
#in-block
$mid(})$
#block(width: out-width, out-block)
])
}
= Executing Hybrid Systems = Executing Hybrid Systems
Henri Saudubray Henri Saudubray
@ -152,7 +144,7 @@ Solution: simulate assertions with their own solver.
Nodes take an additional reset parameter `'p` for their reset function: Nodes take an additional reset parameter `'p` for their reset function:
#align(horizon)[ #align(top)[
#grid(columns: (3fr, 2fr), align: (left, left), #grid(columns: (3fr, 2fr), align: (left, left),
```ocaml ```ocaml
type ('p, 'a, 'b) dnode = type ('p, 'a, 'b) dnode =
@ -205,7 +197,7 @@ Hybrid nodes are a bit more complex:
== ODE solvers == ODE solvers
#slide(self => [ #slide(repeat: 3, self => [
#let (uncover, only) = utils.methods(self) #let (uncover, only) = utils.methods(self)
ODE solvers are discrete nodes producing streams of functions defined on ODE solvers are discrete nodes producing streams of functions defined on
@ -245,7 +237,7 @@ Hybrid nodes are a bit more complex:
size: (10, 4.5), axis-style: "school-book", legend: (9, 4.5), size: (10, 4.5), axis-style: "school-book", legend: (9, 4.5),
y-tick-step: none, y-label: none, y-min: 0, y-max: 6, y-tick-step: none, y-label: none, y-min: 0, y-max: 6,
x-tick-step: none, x-label: none, x-min: 0, x-max: 5, x-tick-step: none, x-label: none, x-min: 0, x-max: 5,
x-ticks: ((2, ""), (4, ""), (5, $h, h'$)), { x-ticks: ((2, ""), (4, ""), (5, $h', h$)), {
add(domain: (4, 5), t => calc.sin(t) + t, label: $u$) add(domain: (4, 5), t => calc.sin(t) + t, label: $u$)
add(domain: (0, 4), t => calc.sin(t) + t) add(domain: (0, 4), t => calc.sin(t) + t)
})) }))
@ -254,7 +246,7 @@ Hybrid nodes are a bit more complex:
== Zero-crossing solvers == Zero-crossing solvers
#slide(self => [ #slide(repeat: 3, self => [
#let (uncover, only) = utils.methods(self) #let (uncover, only) = utils.methods(self)
Zero-crossing solvers are discrete nodes too, looking for zero-crossings on Zero-crossing solvers are discrete nodes too, looking for zero-crossings on
@ -282,7 +274,7 @@ Hybrid nodes are a bit more complex:
size: (10, 4.5), axis-style: "school-book", legend: (9, 4.5), size: (10, 4.5), axis-style: "school-book", legend: (9, 4.5),
y-tick-step: none, y-label: none, y-min: -2, y-max: 5, y-tick-step: none, y-label: none, y-min: -2, y-max: 5,
x-tick-step: none, x-label: none, x-min: 0, x-max: 2, x-tick-step: none, x-label: none, x-min: 0, x-max: 2,
x-ticks: ((2/3, $h, h'$),), { x-ticks: ((2/3, $h', h$),), {
add(domain: (0, 2/3), t => t * t - 1, label: "u") add(domain: (0, 2/3), t => t * t - 1, label: "u")
})) }))
only(2, plot( only(2, plot(
@ -297,7 +289,7 @@ Hybrid nodes are a bit more complex:
size: (10, 4.5), axis-style: "school-book", legend: (9, 4.5), size: (10, 4.5), axis-style: "school-book", legend: (9, 4.5),
y-tick-step: none, y-label: none, y-min: -2, y-max: 5, y-tick-step: none, y-label: none, y-min: -2, y-max: 5,
x-tick-step: none, x-label: none, x-min: 0, x-max: 2, x-tick-step: none, x-label: none, x-min: 0, x-max: 2,
x-ticks: ((2, $h, h'$),), { x-ticks: ((2, $h', h$),), {
add(domain: (1, 2), t => t * t - 1, label: "u") add(domain: (1, 2), t => t * t - 1, label: "u")
add(domain: (0, 1), t => t * t - 1) add(domain: (0, 1), t => t * t - 1)
})) }))
@ -694,8 +686,8 @@ progressively.
) )
})) }))
Combined with in-place state modifications and resets, this could hinder Combined with in-place state modifications, resets and composition, this could
performance. hinder performance.
== State copies == State copies