### A Pluto.jl notebook ###
# v0.20.25

using Markdown
using InteractiveUtils

# ╔═╡ e1d4c31e-026f-49ad-b93c-7e78a4674eb8
begin
	using PlutoTeachingTools
	using PlutoUI
	using CairoMakie
	ultramarine40 = RGBf(100/255.0, 143/255.0, 255/255.0)
	indigo50      = RGBf(120/255.0,  94/255.0, 240/255.0)
	magenta50     = RGBf(220/255.0,  38/255.0, 127/255.0)
	orange40      = RGBf(254/255.0,  97/255.0,   0/255.0)
	gold20        = RGBf(255/255.0, 176/255.0,   0/255.0)
	TableOfContents()
end

# ╔═╡ 7b72940a-ff86-4d40-91ef-f2cdff624185
html"""
<h1 style="text-align:center">
	Höhere Mathematik II
</h1>
<div style="text-align:center">
	<p style="font-size: 30px; font-variant: small-caps; margin: 0px">
		Michael Schlottke-Lakemper, Manuel Torrilhon
	</p>
	<p style="font-size: 20px;">
		Universität Augsburg
	</p>
</div>
<!--
<style>
	main {
		margin: 0 auto;
		max-width: 1000px;
    	padding-left: max(160px, 10%);
    	padding-right: max(160px, 10%);
	}
</style>
-->
"""

# ╔═╡ ca62b71f-6771-4899-8648-fbf79c131c44
md"""
# 6 Gewöhnliche Differentialgleichungen
"""

# ╔═╡ ba90da9d-465a-472d-a493-bbfef82158ed
md"""
Viele dynamische Prozesse sind charakterisiert durch die Rate der Änderung eines Zustandes, das heißt, die Ableitungen bestimmter Größen sind gegeben.
"""

# ╔═╡ a9ca5c02-d36b-4b6e-b44a-f56e3452c387
md"""
##### Definition:
Eine Differentialgleichung ist eine Gleichung für eine unbekannte Funktion ``y(x)``, in der die unabhängige Variable ``x \in \mathbb{R}``, der Funktionswert ``y(x)`` und Ableitungen ``y'(x), y''(x)`` vorkommen.

``\mathcal{F}(x,y(x), y'(x), y''(x), \dots) = 0``
"""

# ╔═╡ 8a690fb6-713e-4cc4-8c1e-5562160be3dc
md"""
##### Beispiele:
1. ``y'(x) = x^2 \leadsto y(x) = \frac13 x^3 + c \qquad c \in \mathbb R`` beliebig
2. ``y'(x) = y(x) \leadsto y(x) = ce^x \qquad c \in \mathbb R`` beliebig
3. ``y'(x) = -y(x)^2 \leadsto y(x) = \frac1{x + c} \qquad c \in \mathbb R`` beliebig
4. ``y''(x) = -y(x) \leadsto y(x) = c_1 \sin x + c_2 \cos x \qquad c_{1,2} \in \mathbb R`` beliebig
"""

# ╔═╡ d04e0712-043d-421b-8da7-d0d88c7667ad
md"""
### 6.1 Klassifikation
"""

# ╔═╡ f95fb5ed-826e-4fd1-ab54-333094ea4b3d
md"""
1. _Differentialgleichung_: Eine Gleichung für eine unbekannte reellwertige Funktion ``y : \mathbb R \to \mathbb R``.
``\qquad`` _Differentialgleichungssystem_: Mehrere Gleichungen für eine vektorwertige Funktion ``y: \mathbb R \to \mathbb R^n``
"""

# ╔═╡ 5a5509ca-0429-4bd3-9971-28d898f05b48
md"""
##### Beispiel:
1. ``y' + xy = 1``, ``y(x) =\; ?``
2. ``y_1' = y_2, y_2'=y_1 \qquad \underline y(t) = \begin{pmatrix} y_1(t)\\y_2(t)\end{pmatrix} = \; ?`` 
"""

# ╔═╡ 1cca3c1c-899d-4b9d-8d28-87c498075636
md"""
2. _gewöhnliche_ Differentialgleichung: Nur eine abhängige Variable ``x`` für ``y: \mathbb R \to \mathbb R^n, x \mapsto y(x)``

``\qquad`` _partielle_ Differentialgleichung: Mehrere abhängige Variablen ``x_1,x_2,\dots``

``\qquad y: \mathbb R^m \to \mathbb R^n, \underline x \mapsto \underline y(\underline x)``
"""

# ╔═╡ 10db7391-dd65-4f9e-9441-bf90dc2621b9
md"""
##### Beispiel:
1. ``y'(x) \cdot x = y(x), y(x) =\; ?``
2. ``\frac{\partial y}{\partial x_1} + \frac{\partial y}{\partial x_2} = 0, y(x_1,x_2) = \; ?``
"""

# ╔═╡ 2b1891d2-369e-4d5d-8b51-44fddc6e6428
md"""
3. _Ordnung_ ``p``: Eine Differentialgleichung enthält die Ableitungen ``y,y',\dots, y^{(p)}``.
4. _lineare_ Differentialgleichung: ``y, y', y'', \dots`` treten nur linear auf, das heißt, ``\sum_{k=0}^p a_k(x) y^{(k)}(x) = f(x)``. Ein Spezialfall sind _konstante_ Koeffizienten: ``\sum_{k=0}^p a_k y^{(k)}(x) = f(x)``
"""

# ╔═╡ 2e3dace1-dff5-4a99-9a66-9d665499099e
md"""
##### Beispiel:
_Linear_: ``y'' - 3xy' + e^{2x}y = \sin x``

_Linear mit konstanten Koeffizienten_: ``y'' + 3y' + 5y = \sin x``

_Nicht-Linear_: ``y \cdot y'' + \sin(y') = y``
"""

# ╔═╡ 80aa99c5-adb8-4309-9e4c-0888d4fb70c9
md"""
5. _autonome_ Differentialgleichung: Die unabhängige Variable ``x`` tritt nicht explizit auf.
"""

# ╔═╡ 429ccc0d-9037-4157-a418-f8e857c88008
md"""
##### Beispiel:
_Autonom:_ ``y'' + y^2 = \sin y``

_Nicht autonom_: ``y' + xy = 0``
"""

# ╔═╡ f6cd1979-7b43-4e2d-94de-edcfe63e3374
md"""
##### Bemerkung:
1. Wir betrachten jetzt ausschließlich _gewöhnliche_ Differentialgleichungen (englisch: Ordinary Differential Equations, ODE; Partial Differential Equations, PDE).

2. Die unabhängige Variable ist oft die Zeit $t\in\mathbb{R}$ und die unbekannte Funktion ``x:\mathbb{R}\to\mathbb{R}^n, t\mapsto x(t).`` Ableitungen nach der Zeit werden auch geschrieben als ``\dot{x}(t)\equiv x'(t).``

3. Eine unbekannte Funktion ``y(x)`` wird durch eine ODE nicht eindeutig festgelegt. In der Lösung für ``y(x)`` treten ``p`` "Integrationskonstanten" auf (für ODEs ``p``-ter Ordnung).
"""

# ╔═╡ 341adef4-0231-4f6c-827c-8fc48249965a
md"""
##### Definition:
Für ``y:\mathbb{R} \to \mathbb{R}^n, t \mapsto y(t)`` heißt die Differentialgleichung ``p``-ter Ordnung

``\mathcal F\left(t,y(t),y'(t),\dots,y^{(p)}(t)\right)=0``

mit den $p$ Bedingungen ``y(0)=y_0,\; y'(0)=y_1,\;\dots,\; y^{(p-1)}(0) = y_{p-1}`` (``y_{0,1,\dots, p-1}`` gegeben) _Anfangswertproblem_.
"""

# ╔═╡ 98cb2081-b5b4-4648-aaff-596324f9124b
md"""
##### Beispiel: gedämpftes Federpendel
"""

# ╔═╡ 87b1eb41-08e1-44ec-8afb-8c8f4c141e25
RobustLocalResource("https://github.com/hpsc-lab/lecture-notes-math1_dev/raw/1dbdf8076e38678cba0e432bc7a80ecb1496cbbf/notebooks/assets/federpendel.svg","./assets/federpendel.svg")

# ╔═╡ 5ed9e97a-185d-4f75-b62c-63c33dea4361
md"""
Kräftegleichgewicht (Newton)

``m \ddot x(t) = \underbrace{\text F_{\text{Feder}}}_{= -cx(t)} + \underbrace{\text F_{\text{Dämpfer}}}_{= - b \dot x(t)}``

``\Rightarrow m \ddot x(t) + b \dot x(t) + cx(t) = 0 \quad`` (lineare ODE mit konstanten Koeffizienten 2-ter Ordnung)

Anfangswertproblem ``x(0) = x_0,\; \dot x(t) = v_0``
"""

# ╔═╡ 4d63616f-3d34-4b73-af8f-34b7d41d0aa1
md"""
##### Beispiel: chemische Reaktion
``A \xrightarrow{\lambda} B \quad B \xrightarrow{\mu} C`` mit Reaktionsraten ``\lambda, \mu``:

``\begin{align*} x(t)\; &\text{Konzentration von}\; A \qquad x'(t) = - \lambda x(t) \\ y(t)\; &\text{Konzentration von}\; B \qquad y'(t) = \lambda x(t) - \mu y(t) \\ z(t)\; &\text{Konzentration von}\; C \qquad z'(t) = \mu y(t) \end{align*}``

Anfangsbedingungen ``x(0) = x_0,\; y(0) = 0,\; z(0) = 0``
"""

# ╔═╡ 311438e7-e151-4ecb-a414-224b531a8f4b
md"""
##### Beispiel: Lorenz-Model für instabile Konvektion ("Wetter")


``\begin{align*} x'(t)&=\sigma(y(t)-x(t)) \\ y'(t)&=\rho x(t)-x(t)z(t)-y(t) \\ z'(t)&=x(t)y(t)-\beta z(t) \end{align*}``

mit den Parametern ``\sigma, \rho, \beta``
"""

# ╔═╡ 74744f10-f476-48c1-a385-6b2a3b78941a
md"""
##### Satz:
Ein ODE-System $p$-ter Ordnung ``\mathcal F\left(t,y(t),y'(t),\dots,y^{(p)}(t)\right)=0 `` für $y:\mathbb{R}\to\mathbb{R}^n$ lässt sich durch Erweiterung der
unbekannten Funktion `` u:\mathbb{R}\to\mathbb{R}^{p \cdot n} `` in ein ODE-System 1-ter Ordnung umwandeln.
"""

# ╔═╡ d46c4ffc-b622-41db-81ef-4e74f6850ed8
md"""
##### Beweis:
Definiere ``y_1(x) = y(x),\; y_2(x) = y'(x), \dots, y_p(x) = y^{(p-1)}(x)``. Es gilt:

``\left.\begin{align*} y_1'(x)\; (=y'(x)) &= y_2(x) \\ y_2'(x)\; (=y''(x)) &= y_3(x) \\ \vdots \\ y_{p-1}'\hspace{2.1cm} &= y_p(x) \end{align*}\right\} \; p \cdot m \text{ Gleichungen}``

Gleichung für ``y_p'(x): \mathcal F(x,y_1,y_2,y_3,\dots, y_{p-1}, y_{p-1}') = 0``

Neue Unbekannte ``u: \mathbb R \to \mathbb R^{pn}, x \mapsto \begin{pmatrix} y_1(x)\\y_2(x)\\\vdots\\y_p(x) \end{pmatrix}``

Nun treten nur 1-te Ableitungen auf.
"""

# ╔═╡ 5c0813d3-7365-4f78-ae57-4eb3ebd8a268
md"""
##### Beispiel:
``y:\mathbb{R}\to\mathbb{R}, x\mapsto y(x) =\; ?`` mit `` y'''(x)+\sin\left(y''(x)\right) + y(x)y'(x)=0``

Definiere ``y_1=y,\quad y_2=y',\quad y_3=y''``

ODE-System:

``\begin{align*} y_1'&=y_2 \\ y_2'&=y_3 \\ y_3'&= y''' =-\sin\left(y''\right)-y y'=-\sin y_3-y_1 y_2. \end{align*}``
"""

# ╔═╡ ca265014-0b8a-4dcf-b120-e95716040889
md"""
##### Beispiel:
`` y:\mathbb{R} \to \mathbb{R}, y''+b y'+cy=0 ``

`` y_1=y,\quad y_2=y' ``

führt auf

``\begin{align*} y_1'&=y_2 \\ y_2'&=y'' = -by'-cy = -by_2-cy_1 \end{align*}``
"""

# ╔═╡ 22f17215-1475-422e-b2bf-3bb7dcc7caac
md"""
##### Bemerkung:
Es genügt also ODE-Systeme 1-ter Ordnung zu betrachten. Zunächst skalar.
"""

# ╔═╡ cd017a3e-f1dd-4fce-bef8-76ac37992174
md"""
### 6.2 Skalare GDGln 1-ter Ordnung
"""

# ╔═╡ 6ce7263b-8ec8-4c07-bb4a-0066c4a902dd
md"""
Wir nehmen an ``\mathcal F(x,y(x),y'(x))=0`` lässt sich nach ``y'(x)`` auflösen: ``y'(x)=f(x,y(x)) \qquad `` (``f`` heißt "rechte Seite")
"""

# ╔═╡ 8f9cf45f-32ed-4112-b62d-c96f4fd3f237
md"""
##### Interpretation:
Gesucht sind die Kurven ``y(x)``, deren Ableitung in jedem Punkt ``x = x_0`` durch den Wert ``f(x_0, y(x_0))`` gegeben sind.
"""

# ╔═╡ 7b21aabe-1ee7-4065-88c4-4482fad5cf29
RobustLocalResource("https://github.com/hpsc-lab/lecture-notes-math1_dev/raw/1dbdf8076e38678cba0e432bc7a80ecb1496cbbf/notebooks/assets/richtungsfeld.svg", "./assets/richtungsfeld.svg")

# ╔═╡ 1acd7400-ecee-41ee-a5e3-467a11af07a0
md"""
##### Beispiel:
``y' = - \frac xy``
"""

# ╔═╡ 3047981c-a20c-4e45-99d2-7493a77dc468
RobustLocalResource("https://github.com/hpsc-lab/lecture-notes-math1_dev/raw/1dbdf8076e38678cba0e432bc7a80ecb1496cbbf/notebooks/assets/richtungsfeld2.svg","./assets/richtungsfeld2.svg")

# ╔═╡ e5630a85-a00b-400d-b0dc-de1ce32bda0b
md"""
"Formale" Lösung durch Integration.

``y'(x) = f(x, y(x)) \Rightarrow \int y'(x) \;\text{d}x = \int f(x, y(x)) \;\text{d}x``

also ``y(x) + c = \int f(x, y(x)) \;\text{d}x``. Das ist nur im Allgemeinen nicht explizit möglich.
"""

# ╔═╡ 1eb5ec8d-21e5-4f3d-9eff-34fb858cdf10
md"""
##### Satz/Definition:
Die ODE
`` y'(x)=g(x) \cdot f(y(x))`` für ``y: \mathbb{R} \to \mathbb{R}`` heißt Differentialgleichung mit _getrennten Variablen_. Für die Lösung ``y(x)`` gilt die implizite Gleichung:

``\int \frac{1}{f(y)} \;\text{d}y =\int g(x) \;\text{d}x``
"""

# ╔═╡ df6e7a3f-31bb-4be3-aa1e-cec4f4971e2b
md"""
##### Beweis:
Es gilt `` \frac{1}{f(y(x))}\,y'(x)=g(x) `` nach Integration:

`` \int \frac{1}{f(y(x))}y'(x) \;\text{d}x =\int g(x)\;\text{d}x  \quad \Leftrightarrow \quad \int \frac{1}{f(y)}\;\text{d}y =\int g(x)\;\text{d}x  ``

Durch Substitution ``y=y(x), \; \text dy=y'(x)\; \text dx``.
"""

# ╔═╡ 1a86fd74-decd-428f-9364-76c5261f17e1
md"""
##### Beispiel 1:
`` y'=e^y\sin x ``, das heißt `` f(y)=e^y,\; g(x)=\sin x``

Lösung:
`` \int \frac{1}{e^y} \;\text{d}y =\int \sin x \;\text{d}x ``, also `` -e^{-y}+c_1=-\cos x+c_2 ``

Auflösen nach $y$: `` e^{-y}=\cos x\; \underbrace{-\; c_1 - c_2}_{+ c,\; c \in \mathbb{R}} ``

`` \Rightarrow y(x)=-\ln(\cos x+c). ``
"""

# ╔═╡ b618c146-8531-4192-86f9-d4c3174e9835
md"""
##### Beispiel 2:
`` y'=-y^2 `` , das heißt `` f(y)=-y^2,\; g(x)=1 ``

Lösung:
`` -\int \frac{1}{y^2} \;\text{d}y =\int 1 \;\text{d}x \qquad \frac{1}{y}+c_1=x+c_2 ``

Auflösen: `` \frac{1}{y}=x+\underbrace{c_2-c_1}_{c} ``

`` y(x)=\frac{1}{x+c}, \quad c\in\mathbb{R} ``

"""

# ╔═╡ 8aa9cf54-f4f0-491f-a407-033d10fa6d5b
md"""
##### Beispiel 3:
`` y'=2xy `` , das heißt `` f(y)=y,\; g(x)=2x ``

`` \int \frac{1}{y} \;\text{d}y =\int 2x \;\text{d}x ``

`` \ln y=x^2+c ``

`` y(x)=e^{x^2+c}=\tilde c e^{x^2} ``
"""

# ╔═╡ ab1d6a41-381f-432b-9d8a-bb6c362538d4
md"""
##### Beispiel 4:
``y'= y^2 + x^2``. Nicht getrennte Variablen!
"""

# ╔═╡ 8060a6b1-96e6-4d5b-87f5-d2e682c98a9f
md"""
##### Bemerkung:
1. Die Integrationskonstante ergibt sich zum Beispiel aus einer Anfangsbedingung ``y(x_0) = y_0``. Etwa zum ersten Beispiel: ``y(0) = 0 \Rightarrow \ln(\cos(0) + c) = \ln(1 + c) \overset != 0 \Rightarrow c = 0``. In zweiten Beispiel etwa ``y(0) = 1 \Rightarrow \frac1{0 + c} \overset!= 1 \Rightarrow c = 1``.
2. Achtung, falls ``f(y) = 0`` (Division durch 0!) für bestimmte y, muss man diese separat untersuchen.
3. Manche nicht-getrennten ODEs lassen sich per Transformation "trennen", zum Beispiel ``y' = f\left(\frac yx\right)`` ("Ähnlichkeits-Differentialgleichung"). Transformation ``u(x) = \frac{y(x)}{x} \Rightarrow u'(x) = \frac1x y'(x) - \frac{y(x)}{x^2} = \frac1x\left(f\left(\frac yx\right)- \frac yx \right)``. Das heißt, ``u'(x) = \frac1x \left(f(u(x)) - u(x) \right)``. Getrennte Variablen!
"""

# ╔═╡ 171a6d90-485d-4428-84d0-c2ca9794ea7d
md"""
### 6.3 Lineare Differentialgleichungen 1. Ordung
``y'(t) + a(t)y(t) = f(t)``
"""

# ╔═╡ 650bc057-71fc-4bc1-ae82-b57be6e8fac6
md"""
##### Definition:
Für ``f \equiv 0`` heißt die ODE _homogen_, ansonsten _inhomogen_.
"""

# ╔═╡ 0b02acee-b43b-4488-9f7b-74b8387709dc
md"""
##### Lösungscharakterisierung:
Die allgemeine Lösung hat die Form `` y(t)=y_{\text{hom}}(t)+y_{\text{inh}}(t), `` wobei $y_{\text{hom}}(t)$ die homogene Gleichung erfüllt und Integrationskonstanten enthält und $y_{\text{inh}}(t)$ irgendeine feste Lösung der inhomogenen Gleichung ist.

(Beweis durch Einsetzen: ``\underbrace{y_{\text{hom}}'+a(t)y_{\text{hom}}}_{=0} +y_{\text{inh}}'+a(t)y_{\text{inh}}=f(t). \;\checkmark``)
"""

# ╔═╡ fe071574-b49f-4948-97e1-ef4fb0f91174
md"""
##### Beispiel:
``y'(t) + y(t) = 1``.

Homogen ``y' + y = 0,\; y_{\text{hom}}(t) = ce^{-t}``.

Inhomogen ``y' + y = 1``, etwa ``y_{\text{inh}}(t) = 1``.

Allgemeine Lösung ``y(t) = ce^{-t} + 1``
"""

# ╔═╡ cb5715f8-73f1-4bad-b2de-d7e32b0927b1
md"""
##### Rezept:
1. ``y_{\text{hom}}:`` Sei ``A(t)=\int a(t)\;\text{d}t `` eine Stammfunktion

``\qquad \Rightarrow y_{\text{hom}}(t) = c e^{-A(t)},`` denn 
``y_{\text{hom}}'(t)=-A'(t)c e^{-A(t)}=-a(t)y_{\text{hom}}(t)``

2. ``y_{\text{inh}}:$ Ansatz $y(t)=\underbrace{c(t)}_{??} e^{-A(t)}`` ("Variation der Konstanten")

``\qquad`` Einsetzen: ``y'(t)=c'(t)e^{-A(t)}+c(t)\big(-\underbrace{A'(t)}_{=a(t)}\big)e^{-A(t)} ``

``\qquad c'(t)e^{-A(t)}\underbrace{-c(t)a(t)e^{-A(t)}+a(t)c(t)e^{-A(t)}}_{=0}=f(t) ``

``\qquad \Rightarrow c'(t)=f(t)e^{A(t)} ``

``\qquad \text{also }\; c(t)=\int f(t)e^{A(t)} \;\text{d}t  ``

``\qquad y_{\text{inh}}(t)=e^{-A(t)}\int f(t)e^{A(t)} \;\text{d}t  ``, wähle feste Integrationskonstante.
"""

# ╔═╡ 20c4df93-bd36-43c8-b5b3-219925d5725d
md"""
##### Beispiel:
Gegeben sei
``y'+ty=t``,  also  ``a(t)=t`` und ``f(t)=t``.

Es gilt: $y_{\text{hom}}$ erfüllt
`` y'+ty=0, \quad a(t)=t, \quad A(t)=\frac{1}{2}t^2 ``

`` \Rightarrow y_{\text{hom}}(t)=C e^{-\frac{1}{2}t^2} ``.

Ansatz für die inhomogene spezielle Lösung durch Variation der Konstanten:
`` y_{\text{inh}}(t)=c(t)e^{-\frac{1}{2}t^2} ``.

Wir wissen, dass
`` y_{\text{inh}}(t) =e^{-A(t)}\int f(t)e^{A(t)}\,dt =e^{-\frac{1}{2}t^2}\int t e^{\frac{1}{2}t^2}\,dt =e^{-\frac{1}{2}t^2}\left(e^{\frac{1}{2}t^2}+C\right). ``

Da wir "nur" eine spezielle Lösung suchen, können wir $C=0$ wählen und daher
`` y_{\text{inh}}(t)=1 ``.

Damit ergibt sich
`` y(t)=C e^{-\frac{1}{2}t^2}+1.``
"""

# ╔═╡ 1b87e7be-93be-4171-a6aa-73fa241d1462
md"""
##### Beispiel: chemische Reaktion
`` A \xrightarrow{\lambda} B,\qquad B \xrightarrow{\mu} C \quad `` mit Anfangsbedingungen `` x(0)=1,\qquad y(0)=0,\qquad z(0)=0. ``

Die Funktionen $x(t),y(t),z(t)$ stehen für die Konzentration der Substanzen
$A,B,C$ zum Zeitpunkt $t$. Es gilt

``\begin{align*} x'&=-\lambda x, \\ y'&=\lambda x-\mu y, \\ z'&=\mu y. \end{align*} `` 

Daher
`` x'=-\lambda x \Rightarrow x(t)=Ce^{-\lambda t}``, kombiniert mit dem Anfangswert $x(0)=1$ erhält man `` 1=x(0)=Ce^0=C`` und daher ``x(t)=e^{-\lambda t}. ``

Da nun $x(t)$ bestimmt ist, erhalten wir für $y(t)$

`` y'=\lambda e^{-\lambda t}-\mu y \Leftrightarrow y'+\mu y=\lambda e^{-\lambda t}, ``

also eine lineare Differentialgleichung mit $a(t)=\mu$ und
$f(t)=\lambda e^{-\lambda t}$. Die homogene Lösung $y_{\text{hom}}$
ist gegeben durch
`` y_{\text{hom}}(t)=Ce^{-\mu t} ``
und erfüllt $y'+\mu y=0$. Die inhomogene Lösung $y_{\text{inh}}$ ist
von der Form
`` y_{\text{inh}}(t)=c(t)e^{-\mu t} ``
mit
`` c'(t)=f(t)e^{A(t)}=\lambda e^{(\mu-\lambda)t}. ``

also `` c(t)=\frac{\lambda}{\mu-\lambda}e^{(\mu-\lambda)t}, `` für ``\mu\neq\lambda``, ansonsten gilt ``c(t)=\lambda t``. Das heißt, `` y_{\text{inh}}(t)=c(t)e^{-\mu t} =\frac{\lambda}{\mu-\lambda}e^{-\lambda t}, `` und daher `` y(t)=Ce^{-\mu t}+\frac{\lambda}{\mu-\lambda}e^{-\lambda t}.``

Die Anfangsbedingung ergibt:

`` y(0)=0 \quad\Rightarrow\quad C+\frac{\lambda}{\mu-\lambda}=0 \quad\Leftrightarrow\quad C=-\frac{\lambda}{\mu-\lambda}, `` und `` y(t)=\frac{\lambda}{\mu-\lambda}\bigl(-e^{-\mu t}+e^{-\lambda t}\bigr). ``

Betrachte jetzt noch $z(t)$. Es gilt `` z'=\mu y=\frac{\mu\lambda}{\mu-\lambda}\bigl(-e^{-\mu t}+e^{-\lambda t}\bigr). ``

Durch direkte Integration erhält man `` z(t)=\frac{\mu\lambda}{\mu-\lambda} \left(-\frac{1}{\lambda}e^{-\lambda t}+\frac{1}{\mu}e^{-\mu t}\right)+C.
``

Durch die Anfangsbedingung $z(0)=0$ ergibt sich (für $\mu\neq\lambda$): `` \frac{\mu\lambda}{\mu-\lambda} \left(-\frac{1}{\lambda}+\frac{1}{\mu}\right)+C=0 \quad\Leftrightarrow\quad C=1, `` und `` z(t)=1+\frac{\mu\lambda}{\mu-\lambda} \left(-\frac{1}{\lambda}e^{-\lambda t}+\frac{1}{\mu}e^{-\mu t}\right). `` 
"""

# ╔═╡ 1994c87d-0fdd-4cfc-b290-f892ef68c2bf
RobustLocalResource("https://github.com/hpsc-lab/lecture-notes-math1_dev/blob/1dbdf8076e38678cba0e432bc7a80ecb1496cbbf/notebooks/assets/AWP.svg", "./assets/AWP.svg")

# ╔═╡ 493f5c9c-9590-483a-9ec4-c941822b485e
md"""
##### Bemerkung:
Betrachte das AWP `` y'+\alpha y=f(t),\; y(0)=y_0. ``

Es gilt `` y_{\text{hom}}=Ce^{-\alpha t},\quad y_{\text{inh}}=c(t)e^{-\alpha t},\quad c'(t)=f(t)e^{\alpha t}. ``

Wir schreiben `` c(t)=\int_0^t f(s)e^{\alpha s}\; \text ds \;\Rightarrow\; y(t)=Ce^{-\alpha t}+e^{-\alpha t}\int_0^t f(s)e^{\alpha s}\; \text ds. ``

Aus $y(0)=y_0$ folgt $C=y_0$, also `` y(t)=y_0 e^{-\alpha t} +\int_0^t f(s)e^{-\alpha(t-s)}\; \text ds. ``

Substitution $s=t-\tau$, $\text ds=- \text d\tau$: `` y(t)=y_0 e^{-\alpha t} +\int_0^t f(t-\tau)e^{-\alpha \tau}\; \text d\tau. ``

"Gedächtnis-Integral":
$f$ wird in die Vergangenheit hinein abgetastet, aber mit $e^{-\alpha \tau}$ schwindet der Einfluss.
"""

# ╔═╡ 2dabf1a7-43f9-4b98-a0cb-28907f5cc7d2
md"""
##### Bemerkung:
Eine nicht-lineare ODE in der Form `` y'=a(t)y+b(t)y^p `` lässt sich per Transformation in eine lineare überführen (Bernoulli-DGL).

`` u(t)=y(t)^{1-p} \quad  \Rightarrow \quad \begin{align*} u'(t)&=(1-p)y^{-p}y'(t)\\ &=(1-p)y^{-p}\left(a(t)y+b(t)y^p\right)\\ &=(1-p)\left(a(t)y^{1-p}+b(t)\right)\end{align*}.``

`` \Rightarrow u'(t)=(1-p)\left(a(t)u(t)+b(t)\right)`` (linear!).
"""

# ╔═╡ d845f482-cfbc-45d1-a1b1-e97b5c305f62
md"""
### 6.4 Existenz und Eindeutigkeit eines AWP
Wir fragen grundsätzlich, ob die Gleichung ``y'(t) = f(t, y(t))`` mit ``y(t_0) = y_0`` und ``y: \mathbb R \to \mathbb R^n`` eine Lösung besitzt.

Für eine allgemeine rechte Seite ``f`` ist dies nicht klar. (Bsp.: Existenz von Nullstellen)

Wir nehmen mal an, ``y:I\subset\mathbb{R}\to\mathbb{R}^n`` ist die Lösung auf einem Intervall ``I\subset\mathbb{R}`` und `` f:I\times\mathbb{R}^n\to\mathbb{R}^n `` sei stetig. Dann gilt die Darstellung

``y(t)=y_0+\int_{t_0}^t f(s,y(s))\; \text ds`` für ``t\in I``

Wir definieren den Operator `` T: \text C_0[I]\to \text C_0[I] `` mit `` u\mapsto T(u),`` so, dass `` T(u)(t)=y_0+\int_{t_0}^t f(s,u(s)) \;\text{d}s  ``

Es gilt `` y\in C_0[I]`` ist Lösung von ``\begin{cases} y'=f(t,y),\\ y(t_0)=y_0 \end{cases} \Leftrightarrow y\in C_0[I]\text{ ist Fixpunkt, } y=T(y). ``

``\leadsto`` Fixpunktsatz von Banach: Hatten wir für ``\mathbb{R}^n``, jetzt für allgemeine "Banach-Räume".
"""

# ╔═╡ 54d622f5-ebdf-49cb-b15e-5f018a853a60
md"""
##### Definition:
Ein Vektorraum ``V`` mit einer Norm ``\|\cdot\|`` heißt _Banach-Raum_,
falls ``V`` vollständig ist, das heißt, jede Cauchy-Folge ``(v_n)_{n \in \mathbb N}\subset V``
konvergiert bzgl.  ``\|\cdot\|`` gegen ein ``v\in V``.
"""

# ╔═╡ 37d741d4-3943-4314-b89e-53580da973bf
md"""
##### Satz:
Sei $V$ ein Banachraum und $T:V\to V$ eine kontrahierende Selbstabbildung. Dann hat $T$ einen Fixpunkt $v\in V$ mit `` T(v)=v``.
"""

# ╔═╡ 2ec8ffcb-0f15-4831-b834-bc60b73eb7e1
md"""
##### Beweis:
Genau wie für ``V = \mathbb R^n``. Wir brauchen lediglich die Vollständigkeit des Raumes, damit Cauchyfolgen konvergieren.
"""

# ╔═╡ 1747216b-9f65-45e1-b83f-618bc0ecdc12
md"""
Unser Fall:
`` y\in C_0[I]`` Lösung der ODE ``\Leftrightarrow \text{Fixpunkt von } T ``:

`` T(u)(t)=y_0+\int_{t_0}^t f(s,u(s))\; \text ds, \qquad ``hier ``V\; \widehat= \; \text C_0[I]. ``

Wir benötigen, um den Fixpunktsatz anwenden zu können:

1. ``T`` ist Kontraktion ``\quad  \|T(u)-T(v)\|\le c\|u-v\| \quad c<1``

2. ``T`` ist Selbstabbildung ``\quad u\in V \;\Rightarrow\; T(u)\in V``

3. ``V\; \widehat= \;\text C_0[I]`` ist vollständig (!!)
"""

# ╔═╡ ab88ce35-aadf-4406-b8a5-ab97f8789d04
md"""
##### Satz:
`` \text C_0[I]=\{\,v:I\subset\mathbb{R}\to\mathbb{R}^n \mid v \text{ stetig}\,\}`` ist vollständig bzgl. der Maximumsnorm `` \|v\|_{\infty} = \max_{t\in I}\|v(t)\|_\infty, `` wobei ``\|\cdot\|_\infty`` die ``\infty``-Norm in ``\mathbb{R}^n`` ist.
"""

# ╔═╡ d3955507-98d6-4169-8a1a-37a5d7e68d52
md"""
##### Beweis (für ``n=1``):
Sei ``(v_k)_{k\in\mathbb{N}}\subset \text C_0[I]`` eine Cauchy-Folge, d.h.

`` \forall \varepsilon>0\ \exists n_0\in\mathbb{N}:\ \|v_n-v_m\|_\infty\le \varepsilon \quad`` für ``n,m > n_0. ``

Zu zeigen: Die Grenzfunktion ``v`` existiert (i) und ist stetig (ii).

Zu (i): Für jedes ``t\in I`` ist ``(v_k(t))\subset\mathbb{R}`` eine Cauchy-Folge in ``\mathbb{R}`` und konvergiert daher gegen ein ``v(t)\in\mathbb{R}``. Also konvergiert ``v_k`` punktweise gegen eine Funktion ``v``.

Zu (ii): Stetigkeit von ``v``: ``\forall \varepsilon > 0 \exists \delta > 0 \Rightarrow |t-t_0|\leq \delta \Rightarrow |v_n(t)-v_n(t_0)| < \varepsilon``.

``\begin{align*} |v(t)-v(t_0)| &= |v(t)-v_n(t) + v_n(t)-v_n(t_0) + v_n(t_0)-v(t_0)| \\ &\leq |v(t)-v_n(t)|+|v_n(t)-v_n(t_0)|+|v_n(t_0)-v(t_0)| \\ &\leq 2\|v-v_n\|_\infty + |v_n(t)-v_n(t_0)| \end{align*}``

Wähle ``n`` groß genug, sodass ``\lvert v - v_n \rvert _{ \infty} \leq \frac{\varepsilon}3`` (``v_n`` konvergiert gegen ``v``). Außerdem ist ``v_n`` stetig: Wähle ``\lvert t - t_0 \rvert \leq \delta`` so, dass ``\lvert v_n(t) - v_n(t_0) \rvert \leq \frac{\varepsilon}3 \Rightarrow \lvert v(t) - v(t_0) \rvert \leq \varepsilon``.
"""

# ╔═╡ 97eaa0cb-59ba-45f3-8c55-7979b94993dd
md"""
##### Bemerkung:
`` C_0[I] `` ist _nicht_ vollständig bzgl. `` \|v\|_2:=\sqrt{\int_a^b v(t)^2\; \text dt} \quad (I=[a,b]), `` d.h. es existiert eine Cauchy-Folge `` (v_k)\subset \text C_0[I] `` bzgl. ``\|\cdot\|_2``, die gegen eine Fkt. `` v\notin \text C_0[I] `` konvergiert.
"""

# ╔═╡ 967c9a7f-3035-48a4-82a2-66ec4d86fecc
md"""
##### Satz von Picard-Lidelöf:
Die Funktion `` f:[a,b]\times\mathbb{R}^n\to\mathbb{R}^n `` sei (global) Lipschitz-stetig bzgl. ``y \in \mathbb R^n``, d.h.

``\|f(t,y)-f(t,z)\|\leq L\|y-z\|, \qquad L>0,\ \forall t\in[a,b], \forall y,z\in\mathbb{R}^n. ``

Dann hat das AWP `` y'=f(t,y)`` für ``t\in[a,b]`` mit  ``y(t_0)=y_0 ``
für jedes ``t_0\in[a,b]`` und ``y_0\in\mathbb{R}^n`` eine eindeutige Lösung
`` y\in \text C^0([a,b],\mathbb{R}^n). ``
"""

# ╔═╡ a9aeb234-1b7d-45dd-9709-7c4b79420efc
md"""
##### Beweis:
Setze ``V=\text C^0([a,b],\mathbb{R}^n)`` und definiere den Operator `` T:V\to V,
v\mapsto T(v)`` und `` T(v)(t)=y_0+\int_{t_0}^t f(s,v(s)) \;\text{d}s ,\quad t\in[a,b] ``

(i): ``T(v)`` ist stetig nach Hauptsatz der Differential- und Integralrechnung.

(ii): ``T`` Kontraktion?

``\begin{align*} \|T(u)(t)-T(v)(t)\|_\infty &\leq \max_{k} \int_{t_0}^t \|f_k(s,u(s))-f_k(s,v(s))\|\;\text{d}s \\ &\leq L\max_{k}\int_{t_0}^t \|u(s)-v(s)\|\;\text{d}s\\ &\leq L\|u-v\|_\infty |t-t_0| \end{align*}``

Wähle ``t=t^*`` so, dass ``L(t^*-t_0)=c<1``, dann `` \|T(u)-T(v)\|_\infty\leq c\|u-v\|_\infty. ``

(iii): ``V`` ist vollständig.

Mit Banach gibt es einen eindeutigen Fixpunkt ``y\in \text C^0([t_0,t^*],\mathbb{R}^n)`` mit ``y=T(y)``.

Jetzt starten wir bei ``t_0 = t^\ast`` und ``y_0 = y(t^\ast)`` und argumentieren analog, usw. bis ``t^\ast = b``. Genauso rückwärts für ``t<t_0``, damit ``y\in \text C^0([a,b],\mathbb{R}^n)``.
"""

# ╔═╡ 6cad8eea-977f-4c62-8c1d-87ea4889b810
md"""
##### Beispiel 1:
``y'=A(t)y+b(t)``, mit ``y:[a,b]\to\mathbb{R}^n`` (mit ``y(t_0)=y_0``), `` A(t)\in\mathbb{R}^{n\times n}, b(t)\in\mathbb{R}^n, ``

Dann hat das AWP eine eindeutige Lösung.

`` f(t,y)=A(t)y+b(t). ``

`` \|\underbrace{f(t,y)-f(t,z)}_{A(t)(y-z)}\|_\infty =\max_i\left|\sum_j A_{ij}(t)(y_j-z_j)\right| `` `` \leq \max_i \max_j |y_j-z_j| \max_{t \in [a,b]} \sum_j |A_{ij}(t)| \leq L\|y-z\|_\infty, ``

mit `` L=\max_i\max_{t\in[a,b]} \sum_j |A_{ij}(t)|. `` das heißt, ``f`` ist Lipschitz-stetig. Damit existiert eine eindeutige Lösung ``y(t)`` nach Picard-Lindelöf.
"""

# ╔═╡ 64afd1f8-8090-45af-8720-8a5262fb004b
md"""
##### Beispiel 2:
Betrachte für ``y:[0,\infty)\to\mathbb{R}`` die ODE `` y'=\sqrt{y} `` mit `` y(0)=0. ``

``f(y)=\sqrt{y}`` ist bei ``y=0`` nicht Lipschitz! Picard-Lindelöf nicht anwendbar. Tatsächlich ist Eindeutigkeit des AWP nicht gegeben: `` y(t)=0 \qquad \text{und} \qquad y(t)=\frac14 t^2 `` sind beides Lösungen!
"""

# ╔═╡ c63185a6-99c1-464d-86cf-427669ac37f4
md"""
##### Beispiel 3:
Wieder ``y:[0,\infty)\to\mathbb{R}`` und ``y'=y^2, y(0)=y_0.``

``f(y)=y^2`` ist nicht _global_ Lipschitz, denn

`` |y^2-z^2|=\underbrace{|y+z|}_{\leq L?}|y-z|`` für alle  ``y,z\in\mathbb{R}``. Das geht nicht.

Lösung des AWP ``y(t)=\frac{y_0}{1-y_0 t}, \quad y(t)\xrightarrow{t \to \frac{1}{y_0}} \infty \; (y_0>0). ``

Für beliebiges ``t\geq \frac{1}{y_0}`` existiert keine Lösung!
"""

# ╔═╡ 24c5b259-452a-4979-b76d-cdff3a37f00b
md"""
##### Bemerkung:
1. Falls ``f`` nur stetig, aber nicht Lipschitz ist, so existiert eine Lösung (Satz von Peano), aber nicht notwendigerweise eindeutig.

2. Falls ``f`` nur lokal Lipschitz ist (z.B. partiell differenzierbar in der Nähe von ``y_0``), dann existiert ein maximales Intervall ``I=[t,t^*] `` so, dass das AWP `` y'=f(t,y), y(t_0)=y_0 `` eine eindeutige Lösung hat.

3. Sei ``f`` lokal Lipschitz. Dann hängt die Lösung ``y(t)`` stetig von den Anfangsdaten ab. Es gilt `` \max_{t\in[a,b]}\|y-\hat y\|_\infty \to 0 \quad \text{falls } \|y_0-\hat y_0\|_\infty \to 0, `` wobei ``y(t)`` die Lösung mit ``y(t_0)=y_0``, und ``\hat y(t)`` die Lösung mit ``\hat y(t_0)=\hat y_0`` sind.
"""

# ╔═╡ b3b580bd-9a24-424f-98bb-2c35c738c07b
md"""
### 6.5 Lineare ODEs (``p``-ter Ordung, skalar/1-ter Ordung, System)
Zunächst ``p``-te Ordnung, skalar, konstante Koeffizienten, homogen, d.h.

`` \underbrace{\alpha_p y^{(p)}(t)+\dots+\alpha_2 y''(t)+\alpha_1 y'(t)+y(t)}_{\sum_{k=0}^p \alpha_k\left(\frac{d}{dt}\right)^k y(t) =Ly(t)}=0. ``

mit dem Differentialoperator ``L``.
"""

# ╔═╡ 8739306d-672a-4e2b-8023-689c60ffbfb3
md"""
##### Bemerkung:
``L`` ist linear, das heißt, falls ``y_{1,2}`` zwei Lösungen sind, so ist ``y(t) = a y_1(t) + b y_2(t)`` auch eine Lösung: ``Ly = L(ay_1 + by_2) = a\underbrace{Ly_1}_{=0} + b \underbrace{Ly_2}_{=0} = 0``
"""

# ╔═╡ 6d0d8666-fbfc-44fe-ac0b-05d51f46c92c
md"""
##### Satz:
Die ODE `` \sum_{k=0}^p \alpha_k y^{(k)}(t)=0 `` besitzt eine "Basis" von ``p`` linear unabhängigen Lösungen ``y_1,\dots,y_p:\mathbb{R}\to\mathbb{R}`` und die allgemeine Lösung hat die Form `` y(t)=c_1 y_1(t)+c_2 y_2(t)+\dots+c_p y_p(t) `` mit wählbaren Konstanten ``c_1,\dots,c_p``.
"""

# ╔═╡ 9628de69-add5-454a-9238-a45b39977ed5
md"""
##### Beweis:
Wir konstruieren die ``p`` Lösungen direkt: Ansatz ``y(t)=e^{\lambda t}`` mit ``\lambda\in\mathbb{C}``.

Einsetzen ``\leadsto \sum_{k=0}^p \alpha_k \lambda^k e^{\lambda t}=0 \Rightarrow g(\lambda)=0 `` mit einem Polynom `` g(x)=\alpha_p x^p+\alpha_{p-1}x^{p-1}+\dots+\alpha_1x+\alpha_0. ``

Damit bekommen wir durch die Nullstellen von ``g`` insgesamt ``p`` Lösungen `` \lambda_1,\lambda_2,\dots,\lambda_p\in\mathbb{C}. ``

_Spezialfall (i):_ ``\lambda_{1,2}\in\mathbb{C}`` komplex konjugiert, ``\lambda_{1,2}=a\pm bi``.

Formal sind `` y_{1,2}(t)=e^{(a\pm bi)t} `` die Lösungen. Betrachte die Linearkombination

``\begin{align*} c_1 e^{(a+bi)t}+c_2 e^{(a-bi)t} &= e^{at}\bigl(c_1(\cos bt+i\sin bt)+c_2(\cos bt-i\sin bt)\bigr) \\ &= e^{at}\bigl((c_1+c_2)\cos(bt)+i(c_1-c_2)\sin(bt)\bigr) \\ &= \tilde c_1 \cos(bt)e^{at}+\tilde c_2 \sin(bt)e^{at}. \end{align*}``

Statt ``y_{1,2}`` werden die reellen Basisfunktionen ``\cos(bt)e^{at}, \sin(bt)e^{at} `` benutzt.

_Spezialfall (ii):_ ``\lambda_1,\dots,\lambda_m`` mehrfache Nullstelle von ``g``, d.h. ``\lambda_1=\lambda_2=\dots=\lambda_m``.

Formal gibt dies nur eine Lösung ``y(t)=e^{\lambda_1 t}``.
"""

# ╔═╡ 01e711fe-d198-4777-8b96-36c982501240
md"""
##### Hilfssatz:
Falls ``\lambda_1 = \dots = \lambda_m =: \lambda`` mehrfache Nullstellen sind, so sind `` y_1(t)=e^{\lambda t},\; y_2(t)=t e^{\lambda t},\; \dots,\; y_m(t)=t^{m-1}e^{\lambda t} `` Lösungen von ``Ly(t)=0``.
"""

# ╔═╡ 96bae59b-56d1-4530-b64c-a7a66f74b4ec
md"""
##### Beweis:
Zu zeigen: `` L\bigl(t^n e^{\lambda t}\bigr)=0, \quad n=0,1,\dots,m-1. ``

Der Operator `` L=\sum_{k=0}^p \alpha_k\left(\frac{d}{dt}\right)^k `` kann geschrieben werden als `` L=\prod_{k=1}^p\left(\frac{d}{dt}-\lambda_k\right) `` mit den ``p`` Nullstellen ``\lambda_k`` (``k=1, \dots, p``) von ``g(x)``.

Bzw. `` L=\prod_{k=m+1}^p\left(\frac{d}{dt}-\lambda_k\right) \underbrace{\left(\frac{d}{dt}-\lambda\right)^m}_{m\text{-fache NST}}. ``

Wir zeigen `` \left(\frac{d}{dt}-\lambda\right)^n\bigl(t^n e^{\lambda t}\bigr)=0, \qquad n=0,1,\dots,m. ``

Induktion über ``m``:

``m=0``:
``
\left(\frac{d}{dt}-\lambda\right)e^{\lambda t}
=\lambda e^{\lambda t}-\lambda e^{\lambda t}=0.
``

Schritt ``m\to m+1``:

``\begin{align*} \left(\frac{d}{dt}-\lambda\right)^{m+1}\bigl(t^{n}e^{\lambda t}\bigr) &=\left(\frac{d}{dt}-\lambda\right)^m \left[\left(\frac{d}{dt}-\lambda\right)\bigl(t^{n}e^{\lambda t}\bigr)\right] \\ &=\left(\frac{d}{dt}-\lambda\right)^m \left[ nt^{n-1}e^{\lambda t} + t^n \lambda e^{\lambda t} - \lambda t^n e^{\lambda t} \right] \\ &=\left(\frac{d}{dt}-\lambda\right)^m t^{n-1} e^{\lambda t}\\ &=0. \end{align*}``

Damit haben wir ``p`` reelle Lösungen von ``Ly(t)=0``.
"""

# ╔═╡ 17dc2c60-7524-4edd-8d81-d6ab67c86bba
md"""
##### Beispiel:
``y''+b y'+c y=0, \quad b,c\geq 0. ``

Ansatz ``y=e^{\lambda t}`` liefert `` \lambda^2+b\lambda+c=0, \quad \lambda_{1,2}=-\frac{b}{2}\pm\sqrt{\frac{b^2}{4}-c}. ``

_Fall (i):_ ``\frac{b^2}{4}<c``

`` \lambda_{1,2}=-\frac{b}{2}\pm i\sqrt{c-\frac{b^2}{4}}\in\mathbb{C}, ``

`` y(t)=c_1 e^{-\frac{b}{2}t}\cos \Bigl(\sqrt{c-\frac{b^2}{4}}\,t\Bigr) +c_2 e^{-\frac{b}{2}t}\sin \Bigl(\sqrt{c-\frac{b^2}{4}}\,t\Bigr). ``

_Fall (ii):_  ``\frac{b^2}{4}>c``

`` \lambda_{1,2}=-\frac{b}{2}\pm\sqrt{\frac{b^2}{4}-c}\in\mathbb{R}, \qquad \lambda_{1,2}\le 0, ``

`` y(t)=c_1 e^{\left(-\frac{b}{2}+\sqrt{\frac{b^2}{4}-c}\right)t} +c_2 e^{\left(-\frac{b}{2}-\sqrt{\frac{b^2}{4}-c}\right)t}. ``

_Fall (iii):_  ``\frac{b^2}{4}=c``

`` \lambda_{1,2}=-\frac{b}{2}, ``

`` y(t)=c_1 e^{-\frac{b}{2}t}+c_2 t e^{-\frac{b}{2}t}. ``
"""

# ╔═╡ 1eb7ab75-e1fd-457b-8ab6-0a5e5abda631
md"""
##### Inhomogener Fall:
`` \sum_{k=0}^p \alpha_k y^{(k)}(t)=f(t) ``

Die Lösung hat die Form `` y(t)=y_{\mathrm{hom}}(t)+y_{\mathrm{inh}}(t) =\sum_{i=1}^p c_i y_i(t)+y_{\mathrm{inh}}(t) ``

(wie bei ``p=1``). ``y_{\mathrm{inh}}(t)`` lässt sich oft durch einen Ansatz "vom Typ der rechten Seite" finden:

1. ``f(t)`` Polynom Grad ``m`` `` \leadsto y_{\mathrm{inh}}(t)=\sum_{k=0}^m \alpha_k x^k. ``

2. ``f(t)`` ist Linearkombination von ``\sin(\omega t)`` und ``\cos(\omega t) \leadsto y_{\mathrm{inh}}(t)=a\sin(\omega t)+b\cos(\omega t).``
"""

# ╔═╡ afbf8215-8b18-4315-8b36-33a9cba36731
md"""
### 6.6 Systeme 1-ter Ordnung
"""

# ╔═╡ e4cd1b0c-c790-4a6b-8b30-28aebd693ca8
md"""
Zunächst linear, konstante Koeffizienten, homogen. ``y: I \to \mathbb R^n`` mit ``I \subset \mathbb R``

``y'(t) = Ay(t)``  mit ``A \in \mathbb R^{n \times n} \quad (\ast)``
"""

# ╔═╡ fb9c951d-b2ac-4530-ba2a-35cf361f56bc
md"""
##### Satz und Definition:
Die ODE ``(*)`` sei gegeben.

1.  Es existieren ``n`` Lösungen ``y_1(t),\dots,y_n(t)`` linear unabhängig für alle ``t\in I`` linear unabhängig sind (sog. _Fundamentalsystem_).

2. Die _Fundamentalmatrix_ `` Y(t)=\bigl(y_1(t)\; y_2(t)\; \dots\; y_n(t)\bigr)\in\mathbb{R}^{n\times n} `` ist für alle ``t\in I`` invertierbar.

3. Die Menge der allgemeinen Lösungen `` M=\Bigl\{ c_1y_1(t) + \cdots + c_ny_n(t) \;\Big|\; c_1,\dots,c_n\in\mathbb{R}\Bigr\}``

``\qquad \phantom{aaa} =\Bigl\{Y(t)c\;\Big|\; c=\begin{pmatrix}c_1\\ \vdots\\ c_n\end{pmatrix}\in\mathbb{R}^n\Bigr\} ``

``\qquad``bildet einen linearen Unterraum von ``\text C^0(I,\mathbb{R}^n)``.
"""

# ╔═╡ fbb23094-64ab-44e3-a3a7-67ea1fd88d5e
md"""
##### Beweis:
Seien ``y_1(t),\dots,y_n(t)`` die Lösungen des AWP `` y'=Ay, y(0)=e_k, k=1,\dots,n``, ``e_k`` der ``k``-te Einheitsvektor.

Nach Picard-Lindelöf existieren die Lösungen und sind eindeutig.

Zu zeigen: ``y_1(t),\dots,y_n(t)`` sind linear unabhängig, bzw. `` Y(t)=\bigl(y_1(t)\; \dots\; y_n(t)\bigr) `` invertierbar, bzw. ``\det Y(t)\neq 0``.

Offenbar gilt für die Fundamentalmatrix `` Y'(t)= AY(t). `` (spaltenweise Ableitung)

Es lässt sich zeigen, dass ``\varphi(t)=\det Y(t)`` die ODE `` \varphi'(t)=\operatorname{sp}(A)\,\varphi(t) `` erfüllt, mit der _Spur_ `` \operatorname{sp}(A)=\sum_{i=1}^n a_{ii}. ``

Das heißt `` \varphi(t)=\det Y(t)= \varphi(0) e^{\operatorname{sp}(A)t}``.

`` \varphi(0)=\det Y(0)=\det(e_1,\dots,e_n)\neq 0 \Rightarrow \varphi(t)\neq 0. ``

Zu (iii): `` y(t)=c_1 y_1(t)+\dots+c_n y_n(t) `` ist Lösung von ``y'=Ay`` (lineare ODE). ``M\subset \text C^0(I,\mathbb{R}^n)`` und ``M`` Vektorraum per Konstruktion.
"""

# ╔═╡ f6918e6c-b703-42e5-ad9a-d5e0b7f38ded
md"""
Wir wollen das Fundamentalsystem von `` y'=Ay `` explizit berechnen.

Ansatz `` y(t)=v e^{\lambda t}`` mit ``\lambda\in\mathbb{R},\ v\in\mathbb{R}^n. ``

Einsetzen: `` v\lambda e^{\lambda t}=Av e^{\lambda t} \Rightarrow (A-\lambda I)v=0. ``

Das heißt ``\lambda`` EW, ``v`` EV von ``A\in\mathbb{R}^{n\times n}``.
"""

# ╔═╡ 30ff82fc-5c50-4cd8-8faa-4a55039a8601
md"""
##### Satz:
Sei ``A`` diagonalisierbar, das heißt, es existieren ``n`` linear unabhängige Eigenvektoren ``v_1,\dots,v_n`` zu EW ``\lambda_1,\dots,\lambda_n``. Dann hat die ODE `` y'=Ay `` das Fundamentalsystem `` y_1(t)=v_1 e^{\lambda_1 t}, y_2(t)=v_2 e^{\lambda_2 t}, \dots, y_n(t)=v_n e^{\lambda_n t}``.
"""

# ╔═╡ 9322d837-621e-4b46-bc30-a2045420b237
md"""
##### Beweis:
Siehe oben
"""

# ╔═╡ ef94af42-06da-4d3b-9d58-c59a9d5316e8
md"""
##### Beispiel:
`` \begin{cases} x'=-\lambda x,\\ y'=\lambda x-\mu y,\\ z'=\mu y \end{cases} \qquad\Longleftrightarrow\qquad \begin{pmatrix} x\\y\\z \end{pmatrix}' = \underbrace{\begin{pmatrix} -\lambda & 0 & 0\\ \lambda & -\mu & 0\\ 0 & \mu & 0 \end{pmatrix}}_{A} \begin{pmatrix} x\\y\\z \end{pmatrix}``

EW: ``-\lambda,-\mu,0 \qquad `` EV: `` \begin{pmatrix} \frac{\mu - \lambda}{\mu}\\ \frac{\lambda}{\mu}\\ -1 \end{pmatrix},\quad \begin{pmatrix} 0\\ -1\\ 1 \end{pmatrix},\quad \begin{pmatrix} 0\\ 0\\ 1 \end{pmatrix}. ``

Fundamentalsystem:

`` y_1(t)= \begin{pmatrix} \frac{\mu - \lambda}{\mu} \\ \frac{\lambda}{\mu}\\ -1 \end{pmatrix} e^{-\lambda t},\quad y_2(t)= \begin{pmatrix} 0\\ -1\\ 1 \end{pmatrix} e^{-\mu t},\quad y_3(t)= \begin{pmatrix} 0\\ 0\\ 1 \end{pmatrix}. ``

Allgemeine Lösung: `` y(t)=c_1 y_1(t)+c_2 y_2(t)+c_3 y_3(t). ``

Anfangsbedingung `` y(0)= \begin{pmatrix} 1\\0\\0 \end{pmatrix} =c_1 y_1(0)+c_2 y_2(0)+c_3 y_3(0)``. Drei Gleichungen für ``c_{1,2,3}``
"""

# ╔═╡ e173811f-b12d-4bac-a486-7c1cef311d55
md"""
##### Bemerkung:
1. Falls ``\lambda_{1,2}\in\mathbb{C}`` komplex konjugiert, ``\lambda_{1,2}=a\pm ib`` mit ``v_{1,2}=u\pm iw``, so betrachten wir `` \frac12 v_1 e^{\lambda_1 t}+\frac12 v_2 e^{\lambda_2 t} =\operatorname{Re}\left(v_1 e^{\lambda_1 t}\right) `` `` =e^{at}\left(\frac12(u+iw)e^{ibt}+\frac12(u-iw)e^{-ibt}\right) =e^{at}\left(u\cos(bt)-w\sin(bt)\right), `` und `` \operatorname{Im}\left(v_1 e^{\lambda_1 t}\right) =\frac{1}{2i}v_1 e^{\lambda_1 t}-\frac{1}{2i}v_2 e^{\lambda_2 t} =e^{at}\left(w\cos(bt)+u\sin(bt)\right). ``

2. Bei mehrfachen EW sorgen die verschiedenen EV für unterschiedliche Lösungen.

3. Falls ``A`` nicht diagonalisierbar ist (algebraische Vielfachheit ``\neq`` geometrische Vielfachheit), haben dies ein Problem.
"""

# ╔═╡ 8198cf3a-ea5a-4787-8a9f-f61b9c1ea8c1
md"""
Idee für allgemeines ``A``:
Fixpunktiteration ``y^{(k+1)}=T(y^{(k)})`` mit Picard-Lindelöf, das heißt `` y^{(k+1)}(t)=y_0+\int_0^t A\,y^{(k)}(s) \;\text{d}s . ``

Start ``y^{(0)}=y_0=\text{const} \Rightarrow y^{(1)}(t)=y_0+A y_0\int_0^t \;\text{d}s =y_0+A y_0\,t. ``

`` y^{(2)}(t)=y_0+A\int_0^t (y_0+A y_0 s) \;\text{d}s =y_0+A y_0 t+\frac{1}{2}A^2 y_0 t^2. ``

`` y^{(3)}(t)=y_0+A y_0 t+\frac{1}{2}A^2 y_0 t^2+\frac{1}{6}A^3 y_0 t^3. ``

`` = \left(I+At+\frac{1}{2}(At)^2+\frac{1}{6}(At)^3\right)y_0. ``

`` \Rightarrow y^{(k)}(t)=\left(\sum_{j=0}^k \frac{1}{j!}(At)^j\right)y_0. ``

Die Exponentialreihe konvergiert nach Picard-Lindelöf.

"""

# ╔═╡ 95023d14-88d9-4238-95bb-26e37df4e870
md"""
##### Definition:
Die Exponentialfunktion einer Matrix ``A\in\mathbb{R}^{n\times n}`` ist definiert durch `` e^A=\exp(A) \coloneqq \sum_{k=0}^{\infty}\frac{1}{k!}A^k\in\mathbb{R}^{n\times n}``.
"""

# ╔═╡ 4ad6b443-ef33-4f04-8996-977b53467af4
md"""
##### Satz:
Für ``\exp:\mathbb{R}^{n\times n}\to\mathbb{R}^{n\times n}`` gilt:

1. ``\exp(0)=I``,

2. ``\exp(T^{-1}AT)=T^{-1}\exp(A)T \quad`` für ``T\in\mathbb{R}^{n\times n}`` invertierbar,

3. Für ``D=\operatorname{diag}(\lambda_1,\dots,\lambda_n): \exp(D)=\operatorname{diag}\left(e^{\lambda_1},\dots,e^{\lambda_n}\right), ``

4. ``\exp(A)^{-1}=\exp(-A)\quad`` (also ``\exp(A)`` invertierbar für alle ``A\in\mathbb{R}^{n\times n}``).
"""

# ╔═╡ debc08fe-04da-4482-bad7-e0198a4bcc9a
md"""
##### Beweis:
1. Durch Einsetzen in die Reihe.

2. ``(T^{-1}AT)^k=T^{-1}A^k T. ``

3. ``D^k=\operatorname{diag}(\lambda_1^k,\dots,\lambda_n^k)`` impliziert

``\qquad \begin{align*} \exp(D) &= \operatorname{diag}\left(\sum_{k=0}^\infty \frac{\lambda_1^k}{k!},\dots,\sum_{k=0}^\infty \frac{\lambda_n^k}{k!}\right) \\ &=\operatorname{diag}(e^{\lambda_1},\dots,e^{\lambda_n}). \end{align*}``

4. `` \exp(A+B)=\exp(A)\exp(B)`` impliziert ``I=\exp(0)=\exp(A-A)=\exp(A)\exp(-A). ``
"""

# ╔═╡ e03fdcfb-62c5-4f31-96f9-4c212dcabada
md"""
##### Satz:
Eine Fundamentalmatrix für `` y'=Ay `` ist durch `` Y(t)=e^{At} `` gegeben.

Für ``B\in\mathbb{R}^{n\times n}`` regulär ist `` \widetilde Y(t)=e^{At}B `` ebenfalls eine Fundamentalmatrix, das heißt, die Spalten von ``\widetilde Y(t)`` bilden ein Fundamentalsystem.
"""

# ╔═╡ 69c1d1e7-53f2-4124-8951-7a920b98df58
md"""
##### Beweis:
Wir hatten gesehen: `` y(t)=e^{At}y_0 `` ist Lösung von ``y'=Ay`` mit ``y(0)=y_0``.

Wähle ``y_0=e_k`` ``(k=1,\dots,n)``, dann sind `` y_k(t)=e^{At}e_k `` die Spalten der Matrix `` Y(t)=\exp(At). ``

Seien ``b_1,\dots,b_n`` die Spalten von `` B=(b_1,\dots,b_n) `` (linear unabhängig), dann sind ``\widetilde y_k(t)=\exp(At)b_k \quad (k=1,\dots,n) `` ``n`` andere Fundamentallösungen, also ``\widetilde Y(t)=\exp(At)B``.
"""

# ╔═╡ d6ad2a2a-399d-4bed-b7db-3b40eb6bec33
md"""
##### Bemerkung:
1. Für ``A`` diagonalisierbar, das heißt ``T^{-1}AT = \operatorname{diag}(\lambda_1, \dots, \lambda_n) = D``, ist ein Fundamentalsystem gegeben durch `` y_1(t)=v_1 e^{\lambda_1 t},\quad \dots,\quad y_n(t)=v_n e^{\lambda_n t}. `` Also `` \begin{align*} Y(t) &= \left(v_1 e^{\lambda_1 t},\dots,v_n e^{\lambda_n t}\right) \\ &= \underbrace{\left(v_1,\dots, v_n\right)}_{T \in \mathbb{R}^{n \times n}} \begin{pmatrix} e^{\lambda_1 t} & & 0\\ & \ddots & \\ 0 & & e^{\lambda_n t} \end{pmatrix} \cdot T^{-1}T \\ &= T\exp(Dt)T^{-1}T\\ &=\exp(At)T \end{align*}``

2. Für allgemeines ``A`` müsste eigentlich die Reihe `` \exp(At)=\sum_{k=0}^\infty \frac{1}{k!}(At)^k `` ausgewertet werden. Das geht nicht elementar.
"""

# ╔═╡ 2da34f14-38fe-4f7a-9d70-61325cb11b55
md"""
##### Idee:
Finde Vektoren ``v\in\mathbb{R}^n`` so, dass bei `` y(t)=\exp(At)v `` die meisten Summanden der Reihe verschwinden.

Wir schreiben mit ``\lambda`` Eigenwert von ``A``:

``\begin{align*} \exp(At)&=\exp(\lambda It)\exp(-\lambda It)\exp(At)\\ &=\exp(\lambda t)\exp\left((A-\lambda I)t\right)\\ &=\exp(\lambda t)\sum_{k=0}^{\infty}\frac{1}{k!}(A-\lambda I)^k t^k \\ &=\exp(\lambda t)\left[I+(A-\lambda I)t+\frac12(A-\lambda I)^2t^2+\frac16(A-\lambda I)^3t^3+\cdots\right] \end{align*}``

Offenbar gilt `` \exp(At)v=\exp(\lambda t)v `` für ``v`` EV von ``A``.
"""

# ╔═╡ 26e8f370-8a64-4511-867f-756a04ff75ac
md"""
##### Definition:
Sei ``A\in\mathbb{R}^{n\times n}`` und ``\lambda`` ein Eigenwert von ``A``.

Ein Vektor ``v\in\mathbb{R}^n`` heißt _Hauptvektor_ der Stufe ``k`` (zu ``\lambda``), falls `` (A-\lambda I)^k v=0`` und ``(A-\lambda I)^j v\neq 0 \;\;\text{für } j=0,1,\dots,k-1. ``
"""

# ╔═╡ 61573f1d-f343-435d-8e34-78b3b2caada2
md"""
##### Bemerkung:
1. Eigenvektoren sind Hauptvektoren der Stufe ``1``, denn `` (A-\lambda I)v=0 `` und ``(A-\lambda I)^0 v = v \neq 0``.

2. Es lässt sich zeigen: Für einen mehrfachen Eigenwert ``\lambda`` mit algebraischer Vielfachheit ``m`` gibt es _immer_ genau ``m`` Hauptvektoren, maximal der Stufe ``m``.
"""

# ╔═╡ decb7e70-a891-4dc8-b34f-ba5940ea0954
md"""
##### Beispiel:
``A=\begin{pmatrix} 2&0&0\\ 0&2&1\\ 0&0&2 \end{pmatrix},\qquad \lambda_{1,2,3}=2,\;\text{alg. Vielfachheit } m=3. ``

Hauptvektoren 1. Stufe: `` (A-\lambda I)=\begin{pmatrix} 0&0&0\\ 0&0&1\\ 0&0&0 \end{pmatrix},\qquad (A-\lambda I)v=0. ``

zum Beispiel `` v_1=\begin{pmatrix}1\\0\\0\end{pmatrix},\quad v_2=\begin{pmatrix}0\\1\\0\end{pmatrix}`` (geom. Vielfachheit = 2).

Hauptvektoren 2. Stufe: `` (A-\lambda I)^2= \begin{pmatrix} 0&0&0\\ 0&0&0\\ 0&0&0 \end{pmatrix}, \quad (A-\lambda I)^2 v=0, `` aber zusätzlich ``(A-\lambda I)v\neq 0``, also linear unabhängig von ``v_1,v_2``.

zum Beispiel `` v_3=\begin{pmatrix}0\\0\\1\end{pmatrix}. `` Mehr Hauptvektoren gibt es hier nicht ``(m=3)``.
"""

# ╔═╡ a99cfb2f-f99a-4a48-9751-56dff9d1972c
md"""
##### Satz:
Sei ``y'=Ay`` gegeben und ``\lambda\in\mathbb{R}`` ein Eigenwert von ``A``, sowie ``v\in\mathbb{R}^n`` ein Hauptvektor der Stufe ``k`` zu ``\lambda``. Dann ist `` y(t)=\exp(At)v =``

``e^{\lambda t}\left[ I+(A-\lambda I)t+\frac{1}{2}(A-\lambda I)^2 t^2+\cdots +\frac{1}{(k-1)!}(A-\lambda I)^{k-1} t^{k-1} \right]v ``

eine Lösung der ODE.
"""

# ╔═╡ bf57d63f-6204-4f59-986a-f9a635da9c35
md"""
##### Beispiel:
``(A-\lambda I)^n v=0`` für alle ``n\geq k``.
"""

# ╔═╡ 72e7f278-dc4b-43e0-9cc6-1bf303e2e5f5
md"""
##### Rezept zur Lösung von ``y' = Ay``:
1. Eigenwerte ``\lambda`` und Eigenvektoren ``v`` von ``A`` bestimmen. Dann sind `` y_k(t)=v_k e^{\lambda_k t} `` Fundamentallösungen.

2. Falls ein Eigenwert ``\lambda`` mit algebraischer Vielfachheit ``m`` größer als die geometrische Vielfachheit ist, bestimme Hauptvektoren der Stufen ``2\le k\le m``. Die zugehörigen Lösungen `` y_j(t)=\exp(At)\,v_j `` (wie oben) liefern weitere Fundamentallösungen.
"""

# ╔═╡ a96eb4ea-c5c4-42cf-b2ae-b38b672822cb
md"""
### 6.7 Inhomogenitäten und nicht-konstante Koeffizienten
`` y'(t)=A(t)y(t)+b(t), \qquad A(t)\in\mathbb{R}^{n\times n},\; b(t)\in\mathbb{R}^n. ``
"""

# ╔═╡ 5e26962d-0898-46d7-9df7-1f98c8271368
md"""
##### Bemerkung:
1. Das homogene System `` y'(t)=A(t)y(t) `` besitzt wieder ein Fundamentalsystem mit Fundamentalmatrix ``Y(t)\in\mathbb{R}^{n\times n}`` regulär (Beweis wie oben). Eine konkrete Lösung ist `` y(t)=Y(t)c`` mit Koeffizienten ``c\in\mathbb{R}^n.`` gegeben. 

2. Eine Lösung des inhomogenen Systems lässt sich (formal) durch _Variation der Konstanten_ finden: `` y_{\text{inh}}(t)=Y(t)c(t)`` mit ``c(t) =\; ?``. Einsetzen liefert `` y_{\text{inh}}'(t)=\underbrace{Y'(t)c(t)}_{=0}+Y(t)c'(t) = \underbrace{A(t)Y(t)c(t)}_{=0} +b(t), `` also `` Y(t)c'(t)=b(t) \Rightarrow c'(t)=Y(t)^{-1}b(t). `` Dies lässt sich integrieren.

3. Die allgemeine Lösung lautet `` y(t)=Y(t)c+\int_{0}^t Y(s)^{-1}b(s)\; \text ds`` mit Integrationskonstante ``c \in \mathbb R^n``.

4. Im konkreten Fall ist das Integral oft sehr _schwer_ analytisch zu lösen ``\Rightarrow`` Numerik
"""

# ╔═╡ 00000000-0000-0000-0000-000000000001
PLUTO_PROJECT_TOML_CONTENTS = """
[deps]
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
PlutoTeachingTools = "661c6b06-c737-4d37-b85c-46df65de6f69"
PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8"

[compat]
CairoMakie = "~0.15.6"
PlutoTeachingTools = "~0.4.6"
PlutoUI = "~0.7.71"
"""

# ╔═╡ 00000000-0000-0000-0000-000000000002
PLUTO_MANIFEST_TOML_CONTENTS = """
# This file is machine-generated - editing it directly is not advised

julia_version = "1.12.4"
manifest_format = "2.0"
project_hash = "09215837b02035d3afebf220fe5ca5174b3dec4d"

[[deps.AbstractFFTs]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef"
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
version = "1.5.0"
weakdeps = ["ChainRulesCore", "Test"]

    [deps.AbstractFFTs.extensions]
    AbstractFFTsChainRulesCoreExt = "ChainRulesCore"
    AbstractFFTsTestExt = "Test"

[[deps.AbstractPlutoDingetjes]]
deps = ["Pkg"]
git-tree-sha1 = "6e1d2a35f2f90a4bc7c2ed98079b2ba09c35b83a"
uuid = "6e696c72-6542-2067-7265-42206c756150"
version = "1.3.2"

[[deps.AbstractTrees]]
git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177"
uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
version = "0.4.5"

[[deps.Adapt]]
deps = ["LinearAlgebra", "Requires"]
git-tree-sha1 = "7e35fca2bdfba44d797c53dfe63a51fabf39bfc0"
uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
version = "4.4.0"
weakdeps = ["SparseArrays", "StaticArrays"]

    [deps.Adapt.extensions]
    AdaptSparseArraysExt = "SparseArrays"
    AdaptStaticArraysExt = "StaticArrays"

[[deps.AdaptivePredicates]]
git-tree-sha1 = "7e651ea8d262d2d74ce75fdf47c4d63c07dba7a6"
uuid = "35492f91-a3bd-45ad-95db-fcad7dcfedb7"
version = "1.2.0"

[[deps.AliasTables]]
deps = ["PtrArrays", "Random"]
git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff"
uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8"
version = "1.1.3"

[[deps.Animations]]
deps = ["Colors"]
git-tree-sha1 = "e092fa223bf66a3c41f9c022bd074d916dc303e7"
uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340"
version = "0.4.2"

[[deps.ArgTools]]
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
version = "1.1.2"

[[deps.Artifacts]]
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
version = "1.11.0"

[[deps.Automa]]
deps = ["PrecompileTools", "SIMD", "TranscodingStreams"]
git-tree-sha1 = "a8f503e8e1a5f583fbef15a8440c8c7e32185df2"
uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b"
version = "1.1.0"

[[deps.AxisAlgorithms]]
deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"]
git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712"
uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950"
version = "1.1.0"

[[deps.AxisArrays]]
deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"]
git-tree-sha1 = "4126b08903b777c88edf1754288144a0492c05ad"
uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9"
version = "0.4.8"

[[deps.Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
version = "1.11.0"

[[deps.BaseDirs]]
git-tree-sha1 = "bca794632b8a9bbe159d56bf9e31c422671b35e0"
uuid = "18cc8868-cbac-4acf-b575-c8ff214dc66f"
version = "1.3.2"

[[deps.Bzip2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e"
uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0"
version = "1.0.9+0"

[[deps.CEnum]]
git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc"
uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
version = "0.5.0"

[[deps.CRC32c]]
uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc"
version = "1.11.0"

[[deps.CRlibm]]
deps = ["CRlibm_jll"]
git-tree-sha1 = "66188d9d103b92b6cd705214242e27f5737a1e5e"
uuid = "96374032-68de-5a5b-8d9e-752f78720389"
version = "1.0.2"

[[deps.CRlibm_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc"
uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0"
version = "1.0.1+0"

[[deps.Cairo]]
deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"]
git-tree-sha1 = "71aa551c5c33f1a4415867fe06b7844faadb0ae9"
uuid = "159f3aea-2a34-519c-b102-8c37f9878175"
version = "1.1.1"

[[deps.CairoMakie]]
deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"]
git-tree-sha1 = "f8caabc5a1c1fb88bcbf9bc4078e5656a477afd0"
uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
version = "0.15.6"

[[deps.Cairo_jll]]
deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
git-tree-sha1 = "fde3bf89aead2e723284a8ff9cdf5b551ed700e8"
uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a"
version = "1.18.5+0"

[[deps.ChainRulesCore]]
deps = ["Compat", "LinearAlgebra"]
git-tree-sha1 = "e4c6a16e77171a5f5e25e9646617ab1c276c5607"
uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
version = "1.26.0"
weakdeps = ["SparseArrays"]

    [deps.ChainRulesCore.extensions]
    ChainRulesCoreSparseArraysExt = "SparseArrays"

[[deps.ColorBrewer]]
deps = ["Colors", "JSON"]
git-tree-sha1 = "e771a63cc8b539eca78c85b0cabd9233d6c8f06f"
uuid = "a2cac450-b92f-5266-8821-25eda20663c8"
version = "0.4.1"

[[deps.ColorSchemes]]
deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"]
git-tree-sha1 = "b0fd3f56fa442f81e0a47815c92245acfaaa4e34"
uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
version = "3.31.0"

[[deps.ColorTypes]]
deps = ["FixedPointNumbers", "Random"]
git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe"
uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
version = "0.12.1"
weakdeps = ["StyledStrings"]

    [deps.ColorTypes.extensions]
    StyledStringsExt = "StyledStrings"

[[deps.ColorVectorSpace]]
deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"]
git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1"
uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4"
version = "0.11.0"
weakdeps = ["SpecialFunctions"]

    [deps.ColorVectorSpace.extensions]
    SpecialFunctionsExt = "SpecialFunctions"

[[deps.Colors]]
deps = ["ColorTypes", "FixedPointNumbers", "Reexport"]
git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74"
uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
version = "0.13.1"

[[deps.Compat]]
deps = ["TOML", "UUIDs"]
git-tree-sha1 = "9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad"
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
version = "4.18.1"
weakdeps = ["Dates", "LinearAlgebra"]

    [deps.Compat.extensions]
    CompatLinearAlgebraExt = "LinearAlgebra"

[[deps.CompilerSupportLibraries_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "1.3.0+1"

[[deps.ComputePipeline]]
deps = ["Observables", "Preferences"]
git-tree-sha1 = "cb1299fee09da21e65ec88c1ff3a259f8d0b5802"
uuid = "95dc2771-c249-4cd0-9c9f-1f3b4330693c"
version = "0.1.4"

[[deps.ConstructionBase]]
git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb"
uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
version = "1.6.0"
weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"]

    [deps.ConstructionBase.extensions]
    ConstructionBaseIntervalSetsExt = "IntervalSets"
    ConstructionBaseLinearAlgebraExt = "LinearAlgebra"
    ConstructionBaseStaticArraysExt = "StaticArrays"

[[deps.Contour]]
git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8"
uuid = "d38c429a-6771-53c6-b99e-75d170b6e991"
version = "0.6.3"

[[deps.DataAPI]]
git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.16.0"

[[deps.DataStructures]]
deps = ["OrderedCollections"]
git-tree-sha1 = "6c72198e6a101cccdd4c9731d3985e904ba26037"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.19.1"

[[deps.DataValueInterfaces]]
git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
version = "1.0.0"

[[deps.Dates]]
deps = ["Printf"]
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
version = "1.11.0"

[[deps.DelaunayTriangulation]]
deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"]
git-tree-sha1 = "5620ff4ee0084a6ab7097a27ba0c19290200b037"
uuid = "927a84f5-c5f4-47a5-9785-b46e178433df"
version = "1.6.4"

[[deps.Distributed]]
deps = ["Random", "Serialization", "Sockets"]
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
version = "1.11.0"

[[deps.Distributions]]
deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"]
git-tree-sha1 = "3bc002af51045ca3b47d2e1787d6ce02e68b943a"
uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
version = "0.25.122"

    [deps.Distributions.extensions]
    DistributionsChainRulesCoreExt = "ChainRulesCore"
    DistributionsDensityInterfaceExt = "DensityInterface"
    DistributionsTestExt = "Test"

    [deps.Distributions.weakdeps]
    ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
    DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
    Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[[deps.DocStringExtensions]]
git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.9.5"

[[deps.Downloads]]
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
version = "1.7.0"

[[deps.EarCut_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053"
uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5"
version = "2.2.4+0"

[[deps.EnumX]]
git-tree-sha1 = "bddad79635af6aec424f53ed8aad5d7555dc6f00"
uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
version = "1.0.5"

[[deps.ExactPredicates]]
deps = ["IntervalArithmetic", "Random", "StaticArrays"]
git-tree-sha1 = "83231673ea4d3d6008ac74dc5079e77ab2209d8f"
uuid = "429591f6-91af-11e9-00e2-59fbe8cec110"
version = "2.2.9"

[[deps.Expat_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "7bb1361afdb33c7f2b085aa49ea8fe1b0fb14e58"
uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
version = "2.7.1+0"

[[deps.Extents]]
git-tree-sha1 = "b309b36a9e02fe7be71270dd8c0fd873625332b4"
uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910"
version = "0.1.6"

[[deps.FFMPEG_jll]]
deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"]
git-tree-sha1 = "eaa040768ea663ca695d442be1bc97edfe6824f2"
uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
version = "6.1.3+0"

[[deps.FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "Libdl", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
git-tree-sha1 = "97f08406df914023af55ade2f843c39e99c5d969"
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
version = "1.10.0"

[[deps.FFTW_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6d6219a004b8cf1e0b4dbe27a2860b8e04eba0be"
uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a"
version = "3.3.11+0"

[[deps.FileIO]]
deps = ["Pkg", "Requires", "UUIDs"]
git-tree-sha1 = "d60eb76f37d7e5a40cc2e7c36974d864b82dc802"
uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
version = "1.17.1"

    [deps.FileIO.extensions]
    HTTPExt = "HTTP"

    [deps.FileIO.weakdeps]
    HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"

[[deps.FilePaths]]
deps = ["FilePathsBase", "MacroTools", "Reexport", "Requires"]
git-tree-sha1 = "919d9412dbf53a2e6fe74af62a73ceed0bce0629"
uuid = "8fc22ac5-c921-52a6-82fd-178b2807b824"
version = "0.8.3"

[[deps.FilePathsBase]]
deps = ["Compat", "Dates"]
git-tree-sha1 = "3bab2c5aa25e7840a4b065805c0cdfc01f3068d2"
uuid = "48062228-2e41-5def-b9a4-89aafe57970f"
version = "0.9.24"
weakdeps = ["Mmap", "Test"]

    [deps.FilePathsBase.extensions]
    FilePathsBaseMmapExt = "Mmap"
    FilePathsBaseTestExt = "Test"

[[deps.FileWatching]]
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
version = "1.11.0"

[[deps.FillArrays]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "173e4d8f14230a7523ae11b9a3fa9edb3e0efd78"
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
version = "1.14.0"
weakdeps = ["PDMats", "SparseArrays", "Statistics"]

    [deps.FillArrays.extensions]
    FillArraysPDMatsExt = "PDMats"
    FillArraysSparseArraysExt = "SparseArrays"
    FillArraysStatisticsExt = "Statistics"

[[deps.FixedPointNumbers]]
deps = ["Statistics"]
git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172"
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
version = "0.8.5"

[[deps.Fontconfig_jll]]
deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"]
git-tree-sha1 = "f85dac9a96a01087df6e3a749840015a0ca3817d"
uuid = "a3f928ae-7b40-5064-980b-68af3947d34b"
version = "2.17.1+0"

[[deps.Format]]
git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc"
uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8"
version = "1.3.7"

[[deps.FreeType]]
deps = ["CEnum", "FreeType2_jll"]
git-tree-sha1 = "907369da0f8e80728ab49c1c7e09327bf0d6d999"
uuid = "b38be410-82b0-50bf-ab77-7b57e271db43"
version = "4.1.1"

[[deps.FreeType2_jll]]
deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "2c5512e11c791d1baed2049c5652441b28fc6a31"
uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
version = "2.13.4+0"

[[deps.FreeTypeAbstraction]]
deps = ["BaseDirs", "ColorVectorSpace", "Colors", "FreeType", "GeometryBasics", "Mmap"]
git-tree-sha1 = "4ebb930ef4a43817991ba35db6317a05e59abd11"
uuid = "663a7486-cb36-511b-a19d-713bb74d65c9"
version = "0.10.8"

[[deps.FriBidi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "7a214fdac5ed5f59a22c2d9a885a16da1c74bbc7"
uuid = "559328eb-81f9-559d-9380-de523a88c83c"
version = "1.0.17+0"

[[deps.GeometryBasics]]
deps = ["EarCut_jll", "Extents", "IterTools", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"]
git-tree-sha1 = "1f5a80f4ed9f5a4aada88fc2db456e637676414b"
uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326"
version = "0.5.10"

    [deps.GeometryBasics.extensions]
    GeometryBasicsGeoInterfaceExt = "GeoInterface"

    [deps.GeometryBasics.weakdeps]
    GeoInterface = "cf35fbd7-0cd7-5166-be24-54bfbe79505f"

[[deps.GettextRuntime_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll"]
git-tree-sha1 = "45288942190db7c5f760f59c04495064eedf9340"
uuid = "b0724c58-0f36-5564-988d-3bb0596ebc4a"
version = "0.22.4+0"

[[deps.Ghostscript_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Zlib_jll"]
git-tree-sha1 = "38044a04637976140074d0b0621c1edf0eb531fd"
uuid = "61579ee1-b43e-5ca0-a5da-69d92c66a64b"
version = "9.55.1+0"

[[deps.Giflib_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6570366d757b50fabae9f4315ad74d2e40c0560a"
uuid = "59f7168a-df46-5410-90c8-f2779963d0ec"
version = "5.2.3+0"

[[deps.Glib_jll]]
deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"]
git-tree-sha1 = "50c11ffab2a3d50192a228c313f05b5b5dc5acb2"
uuid = "7746bdde-850d-59dc-9ae8-88ece973131d"
version = "2.86.0+0"

[[deps.Graphics]]
deps = ["Colors", "LinearAlgebra", "NaNMath"]
git-tree-sha1 = "a641238db938fff9b2f60d08ed9030387daf428c"
uuid = "a2bd30eb-e257-5431-a919-1863eab51364"
version = "1.1.3"

[[deps.Graphite2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8"
uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
version = "1.3.15+0"

[[deps.GridLayoutBase]]
deps = ["GeometryBasics", "InteractiveUtils", "Observables"]
git-tree-sha1 = "93d5c27c8de51687a2c70ec0716e6e76f298416f"
uuid = "3955a311-db13-416c-9275-1d80ed98e5e9"
version = "0.11.2"

[[deps.Grisu]]
git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2"
uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe"
version = "1.0.2"

[[deps.HarfBuzz_jll]]
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"]
git-tree-sha1 = "f923f9a774fcf3f5cb761bfa43aeadd689714813"
uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
version = "8.5.1+0"

[[deps.HypergeometricFunctions]]
deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"]
git-tree-sha1 = "68c173f4f449de5b438ee67ed0c9c748dc31a2ec"
uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
version = "0.3.28"

[[deps.Hyperscript]]
deps = ["Test"]
git-tree-sha1 = "179267cfa5e712760cd43dcae385d7ea90cc25a4"
uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91"
version = "0.0.5"

[[deps.HypertextLiteral]]
deps = ["Tricks"]
git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653"
uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
version = "0.9.5"

[[deps.IOCapture]]
deps = ["Logging", "Random"]
git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770"
uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
version = "0.2.5"

[[deps.ImageAxes]]
deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"]
git-tree-sha1 = "e12629406c6c4442539436581041d372d69c55ba"
uuid = "2803e5a7-5153-5ecf-9a86-9b4c37f5f5ac"
version = "0.6.12"

[[deps.ImageBase]]
deps = ["ImageCore", "Reexport"]
git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909"
uuid = "c817782e-172a-44cc-b673-b171935fbb9e"
version = "0.1.7"

[[deps.ImageCore]]
deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"]
git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3"
uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534"
version = "0.10.5"

[[deps.ImageIO]]
deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs", "WebP"]
git-tree-sha1 = "696144904b76e1ca433b886b4e7edd067d76cbf7"
uuid = "82e4d734-157c-48bb-816b-45c225c6df19"
version = "0.6.9"

[[deps.ImageMetadata]]
deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"]
git-tree-sha1 = "2a81c3897be6fbcde0802a0ebe6796d0562f63ec"
uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49"
version = "0.9.10"

[[deps.Imath_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "0936ba688c6d201805a83da835b55c61a180db52"
uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1"
version = "3.1.11+0"

[[deps.IndirectArrays]]
git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f"
uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959"
version = "1.0.0"

[[deps.Inflate]]
git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d"
uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9"
version = "0.1.5"

[[deps.IntelOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"]
git-tree-sha1 = "ec1debd61c300961f98064cfb21287613ad7f303"
uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
version = "2025.2.0+0"

[[deps.InteractiveUtils]]
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
version = "1.11.0"

[[deps.Interpolations]]
deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"]
git-tree-sha1 = "65d505fa4c0d7072990d659ef3fc086eb6da8208"
uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
version = "0.16.2"

    [deps.Interpolations.extensions]
    InterpolationsForwardDiffExt = "ForwardDiff"
    InterpolationsUnitfulExt = "Unitful"

    [deps.Interpolations.weakdeps]
    ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
    Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"

[[deps.IntervalArithmetic]]
deps = ["CRlibm", "MacroTools", "OpenBLASConsistentFPCSR_jll", "Printf", "Random", "RoundingEmulator"]
git-tree-sha1 = "815e74f416953c348c9da1d1bc977bbc97c84e18"
uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253"
version = "1.0.0"

    [deps.IntervalArithmetic.extensions]
    IntervalArithmeticArblibExt = "Arblib"
    IntervalArithmeticDiffRulesExt = "DiffRules"
    IntervalArithmeticForwardDiffExt = "ForwardDiff"
    IntervalArithmeticIntervalSetsExt = "IntervalSets"
    IntervalArithmeticLinearAlgebraExt = "LinearAlgebra"
    IntervalArithmeticRecipesBaseExt = "RecipesBase"
    IntervalArithmeticSparseArraysExt = "SparseArrays"

    [deps.IntervalArithmetic.weakdeps]
    Arblib = "fb37089c-8514-4489-9461-98f9c8763369"
    DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b"
    ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
    IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953"
    LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
    RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
    SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"

[[deps.IntervalSets]]
git-tree-sha1 = "5fbb102dcb8b1a858111ae81d56682376130517d"
uuid = "8197267c-284f-5f27-9208-e0e47529a953"
version = "0.7.11"

    [deps.IntervalSets.extensions]
    IntervalSetsRandomExt = "Random"
    IntervalSetsRecipesBaseExt = "RecipesBase"
    IntervalSetsStatisticsExt = "Statistics"

    [deps.IntervalSets.weakdeps]
    Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
    RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
    Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"

[[deps.InverseFunctions]]
git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb"
uuid = "3587e190-3f89-42d0-90ee-14403ec27112"
version = "0.1.17"
weakdeps = ["Dates", "Test"]

    [deps.InverseFunctions.extensions]
    InverseFunctionsDatesExt = "Dates"
    InverseFunctionsTestExt = "Test"

[[deps.IrrationalConstants]]
git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c"
uuid = "92d709cd-6900-40b7-9082-c6be49f344b6"
version = "0.2.4"

[[deps.Isoband]]
deps = ["isoband_jll"]
git-tree-sha1 = "f9b6d97355599074dc867318950adaa6f9946137"
uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4"
version = "0.1.1"

[[deps.IterTools]]
git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023"
uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
version = "1.10.0"

[[deps.IteratorInterfaceExtensions]]
git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
uuid = "82899510-4779-5014-852e-03e436cf321d"
version = "1.0.0"

[[deps.JLLWrappers]]
deps = ["Artifacts", "Preferences"]
git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.7.1"

[[deps.JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.4"

[[deps.JpegTurbo]]
deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"]
git-tree-sha1 = "9496de8fb52c224a2e3f9ff403947674517317d9"
uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0"
version = "0.1.6"

[[deps.JpegTurbo_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "4255f0032eafd6451d707a51d5f0248b8a165e4d"
uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
version = "3.1.3+0"

[[deps.JuliaSyntaxHighlighting]]
deps = ["StyledStrings"]
uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011"
version = "1.12.0"

[[deps.KernelDensity]]
deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"]
git-tree-sha1 = "ba51324b894edaf1df3ab16e2cc6bc3280a2f1a7"
uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b"
version = "0.6.10"

[[deps.LAME_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "059aabebaa7c82ccb853dd4a0ee9d17796f7e1bc"
uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d"
version = "3.100.3+0"

[[deps.LERC_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "aaafe88dccbd957a8d82f7d05be9b69172e0cee3"
uuid = "88015f11-f218-50d7-93a8-a6af411a945d"
version = "4.0.1+0"

[[deps.LLVMOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "eb62a3deb62fc6d8822c0c4bef73e4412419c5d8"
uuid = "1d63c593-3942-5779-bab2-d838dc0a180e"
version = "18.1.8+0"

[[deps.LZO_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1c602b1127f4751facb671441ca72715cc95938a"
uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac"
version = "2.10.3+0"

[[deps.LaTeXStrings]]
git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c"
uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
version = "1.4.0"

[[deps.Latexify]]
deps = ["Format", "Ghostscript_jll", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"]
git-tree-sha1 = "44f93c47f9cd6c7e431f2f2091fcba8f01cd7e8f"
uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316"
version = "0.16.10"

    [deps.Latexify.extensions]
    DataFramesExt = "DataFrames"
    SparseArraysExt = "SparseArrays"
    SymEngineExt = "SymEngine"
    TectonicExt = "tectonic_jll"

    [deps.Latexify.weakdeps]
    DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
    SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
    SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8"
    tectonic_jll = "d7dd28d6-a5e6-559c-9131-7eb760cdacc5"

[[deps.LazyArtifacts]]
deps = ["Artifacts", "Pkg"]
uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
version = "1.11.0"

[[deps.LazyModules]]
git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e"
uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e"
version = "0.3.1"

[[deps.LibCURL]]
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
version = "0.6.4"

[[deps.LibCURL_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "Zlib_jll", "nghttp2_jll"]
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
version = "8.15.0+0"

[[deps.LibGit2]]
deps = ["LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
version = "1.11.0"

[[deps.LibGit2_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll"]
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
version = "1.9.0+0"

[[deps.LibSSH2_jll]]
deps = ["Artifacts", "Libdl", "OpenSSL_jll"]
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
version = "1.11.3+1"

[[deps.Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
version = "1.11.0"

[[deps.Libffi_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "c8da7e6a91781c41a863611c7e966098d783c57a"
uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490"
version = "3.4.7+0"

[[deps.Libglvnd_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"]
git-tree-sha1 = "d36c21b9e7c172a44a10484125024495e2625ac0"
uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29"
version = "1.7.1+1"

[[deps.Libiconv_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809"
uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
version = "1.18.0+0"

[[deps.Libmount_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "3acf07f130a76f87c041cfb2ff7d7284ca67b072"
uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9"
version = "2.41.2+0"

[[deps.Libtiff_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"]
git-tree-sha1 = "f04133fe05eff1667d2054c53d59f9122383fe05"
uuid = "89763e89-9b03-5906-acba-b20f662cd828"
version = "4.7.2+0"

[[deps.Libuuid_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "2a7a12fc0a4e7fb773450d17975322aa77142106"
uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700"
version = "2.41.2+0"

[[deps.LinearAlgebra]]
deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
version = "1.12.0"

[[deps.LogExpFunctions]]
deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"]
git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f"
uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
version = "0.3.29"

    [deps.LogExpFunctions.extensions]
    LogExpFunctionsChainRulesCoreExt = "ChainRulesCore"
    LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables"
    LogExpFunctionsInverseFunctionsExt = "InverseFunctions"

    [deps.LogExpFunctions.weakdeps]
    ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
    ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0"
    InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"

[[deps.Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
version = "1.11.0"

[[deps.MIMEs]]
git-tree-sha1 = "c64d943587f7187e751162b3b84445bbbd79f691"
uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65"
version = "1.1.0"

[[deps.MKL_jll]]
deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"]
git-tree-sha1 = "282cadc186e7b2ae0eeadbd7a4dffed4196ae2aa"
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
version = "2025.2.0+0"

[[deps.MacroTools]]
git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522"
uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
version = "0.5.16"

[[deps.Makie]]
deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "ComputePipeline", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "Pkg", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"]
git-tree-sha1 = "368542cde25d381e44d84c3c4209764f05f4ef19"
uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
version = "0.24.6"

[[deps.MappedArrays]]
git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e"
uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900"
version = "0.4.2"

[[deps.Markdown]]
deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
version = "1.11.0"

[[deps.MathTeXEngine]]
deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"]
git-tree-sha1 = "a370fef694c109e1950836176ed0d5eabbb65479"
uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53"
version = "0.6.6"

[[deps.Missings]]
deps = ["DataAPI"]
git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d"
uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
version = "1.2.0"

[[deps.Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
version = "1.11.0"

[[deps.MosaicViews]]
deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"]
git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe"
uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389"
version = "0.3.4"

[[deps.MozillaCACerts_jll]]
uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
version = "2025.11.4"

[[deps.NaNMath]]
deps = ["OpenLibm_jll"]
git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae"
uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
version = "1.1.3"

[[deps.Netpbm]]
deps = ["FileIO", "ImageCore", "ImageMetadata"]
git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd"
uuid = "f09324ee-3d7c-5217-9330-fc30815ba969"
version = "1.1.1"

[[deps.NetworkOptions]]
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
version = "1.3.0"

[[deps.Observables]]
git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225"
uuid = "510215fc-4207-5dde-b226-833fc4488ee2"
version = "0.5.5"

[[deps.OffsetArrays]]
git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151"
uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
version = "1.17.0"
weakdeps = ["Adapt"]

    [deps.OffsetArrays.extensions]
    OffsetArraysAdaptExt = "Adapt"

[[deps.Ogg_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "b6aa4566bb7ae78498a5e68943863fa8b5231b59"
uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051"
version = "1.3.6+0"

[[deps.OpenBLASConsistentFPCSR_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"]
git-tree-sha1 = "567515ca155d0020a45b05175449b499c63e7015"
uuid = "6cdc7f73-28fd-5e50-80fb-958a8875b1af"
version = "0.3.29+0"

[[deps.OpenBLAS_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
version = "0.3.29+0"

[[deps.OpenEXR]]
deps = ["Colors", "FileIO", "OpenEXR_jll"]
git-tree-sha1 = "97db9e07fe2091882c765380ef58ec553074e9c7"
uuid = "52e1d378-f018-4a11-a4be-720524705ac7"
version = "0.3.3"

[[deps.OpenEXR_jll]]
deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "8292dd5c8a38257111ada2174000a33745b06d4e"
uuid = "18a262bb-aa17-5467-a713-aee519bc75cb"
version = "3.2.4+0"

[[deps.OpenLibm_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
version = "0.8.7+0"

[[deps.OpenSSL_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
version = "3.5.4+0"

[[deps.OpenSpecFun_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335"
uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
version = "0.5.6+0"

[[deps.Opus_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "c392fc5dd032381919e3b22dd32d6443760ce7ea"
uuid = "91d4177d-7536-5919-b921-800302f37372"
version = "1.5.2+0"

[[deps.OrderedCollections]]
git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee"
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
version = "1.8.1"

[[deps.PCRE2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
version = "10.44.0+1"

[[deps.PDMats]]
deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"]
git-tree-sha1 = "f07c06228a1c670ae4c87d1276b92c7c597fdda0"
uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
version = "0.11.35"

[[deps.PNGFiles]]
deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"]
git-tree-sha1 = "cf181f0b1e6a18dfeb0ee8acc4a9d1672499626c"
uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883"
version = "0.4.4"

[[deps.Packing]]
deps = ["GeometryBasics"]
git-tree-sha1 = "bc5bf2ea3d5351edf285a06b0016788a121ce92c"
uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566"
version = "0.5.1"

[[deps.PaddedViews]]
deps = ["OffsetArrays"]
git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f"
uuid = "5432bcbf-9aad-5242-b902-cca2824c8663"
version = "0.5.12"

[[deps.Pango_jll]]
deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"]
git-tree-sha1 = "1f7f9bbd5f7a2e5a9f7d96e51c9754454ea7f60b"
uuid = "36c8627f-9965-5494-a995-c6b170f724f3"
version = "1.56.4+0"

[[deps.Parsers]]
deps = ["Dates", "PrecompileTools", "UUIDs"]
git-tree-sha1 = "7d2f8f21da5db6a806faf7b9b292296da42b2810"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "2.8.3"

[[deps.Pixman_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"]
git-tree-sha1 = "db76b1ecd5e9715f3d043cec13b2ec93ce015d53"
uuid = "30392449-352a-5448-841d-b1acce4e97dc"
version = "0.44.2+0"

[[deps.Pkg]]
deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
version = "1.12.1"
weakdeps = ["REPL"]

    [deps.Pkg.extensions]
    REPLExt = "REPL"

[[deps.PkgVersion]]
deps = ["Pkg"]
git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da"
uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688"
version = "0.3.3"

[[deps.PlotUtils]]
deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"]
git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18"
uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043"
version = "1.4.3"

[[deps.PlutoTeachingTools]]
deps = ["Downloads", "HypertextLiteral", "Latexify", "Markdown", "PlutoUI"]
git-tree-sha1 = "dacc8be63916b078b592806acd13bb5e5137d7e9"
uuid = "661c6b06-c737-4d37-b85c-46df65de6f69"
version = "0.4.6"

[[deps.PlutoUI]]
deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "Downloads", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"]
git-tree-sha1 = "8329a3a4f75e178c11c1ce2342778bcbbbfa7e3c"
uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
version = "0.7.71"

[[deps.PolygonOps]]
git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6"
uuid = "647866c9-e3ac-4575-94e7-e3d426903924"
version = "0.1.2"

[[deps.PrecompileTools]]
deps = ["Preferences"]
git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f"
uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
version = "1.2.1"

[[deps.Preferences]]
deps = ["TOML"]
git-tree-sha1 = "8b770b60760d4451834fe79dd483e318eee709c4"
uuid = "21216c6a-2e73-6563-6e65-726566657250"
version = "1.5.2"

[[deps.Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
version = "1.11.0"

[[deps.ProgressMeter]]
deps = ["Distributed", "Printf"]
git-tree-sha1 = "fbb92c6c56b34e1a2c4c36058f68f332bec840e7"
uuid = "92933f4c-e287-5a05-a399-4b506db050ca"
version = "1.11.0"

[[deps.PtrArrays]]
git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d"
uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d"
version = "1.3.0"

[[deps.QOI]]
deps = ["ColorTypes", "FileIO", "FixedPointNumbers"]
git-tree-sha1 = "8b3fc30bc0390abdce15f8822c889f669baed73d"
uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65"
version = "1.0.1"

[[deps.QuadGK]]
deps = ["DataStructures", "LinearAlgebra"]
git-tree-sha1 = "9da16da70037ba9d701192e27befedefb91ec284"
uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
version = "2.11.2"

    [deps.QuadGK.extensions]
    QuadGKEnzymeExt = "Enzyme"

    [deps.QuadGK.weakdeps]
    Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"

[[deps.REPL]]
deps = ["InteractiveUtils", "JuliaSyntaxHighlighting", "Markdown", "Sockets", "StyledStrings", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
version = "1.11.0"

[[deps.Random]]
deps = ["SHA"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
version = "1.11.0"

[[deps.RangeArrays]]
git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5"
uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d"
version = "0.3.2"

[[deps.Ratios]]
deps = ["Requires"]
git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b"
uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439"
version = "0.4.5"
weakdeps = ["FixedPointNumbers"]

    [deps.Ratios.extensions]
    RatiosFixedPointNumbersExt = "FixedPointNumbers"

[[deps.Reexport]]
git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
uuid = "189a3867-3050-52da-a836-e630ba90ab69"
version = "1.2.2"

[[deps.RelocatableFolders]]
deps = ["SHA", "Scratch"]
git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864"
uuid = "05181044-ff0b-4ac5-8273-598c1e38db00"
version = "1.0.1"

[[deps.Requires]]
deps = ["UUIDs"]
git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64"
uuid = "ae029012-a4dd-5104-9daa-d747884805df"
version = "1.3.1"

[[deps.Rmath]]
deps = ["Random", "Rmath_jll"]
git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4"
uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
version = "0.8.0"

[[deps.Rmath_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8"
uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
version = "0.5.1+0"

[[deps.RoundingEmulator]]
git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b"
uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705"
version = "0.2.1"

[[deps.SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
version = "0.7.0"

[[deps.SIMD]]
deps = ["PrecompileTools"]
git-tree-sha1 = "e24dc23107d426a096d3eae6c165b921e74c18e4"
uuid = "fdea26ae-647d-5447-a871-4b548cad5224"
version = "3.7.2"

[[deps.Scratch]]
deps = ["Dates"]
git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109"
uuid = "6c6a2e73-6563-6170-7368-637461726353"
version = "1.3.0"

[[deps.Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
version = "1.11.0"

[[deps.ShaderAbstractions]]
deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays"]
git-tree-sha1 = "818554664a2e01fc3784becb2eb3a82326a604b6"
uuid = "65257c39-d410-5151-9873-9b3e5be5013e"
version = "0.5.0"

[[deps.SharedArrays]]
deps = ["Distributed", "Mmap", "Random", "Serialization"]
uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
version = "1.11.0"

[[deps.Showoff]]
deps = ["Dates", "Grisu"]
git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de"
uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f"
version = "1.0.3"

[[deps.SignedDistanceFields]]
deps = ["Random", "Statistics", "Test"]
git-tree-sha1 = "d263a08ec505853a5ff1c1ebde2070419e3f28e9"
uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96"
version = "0.4.0"

[[deps.SimpleTraits]]
deps = ["InteractiveUtils", "MacroTools"]
git-tree-sha1 = "be8eeac05ec97d379347584fa9fe2f5f76795bcb"
uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d"
version = "0.9.5"

[[deps.Sixel]]
deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"]
git-tree-sha1 = "0494aed9501e7fb65daba895fb7fd57cc38bc743"
uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47"
version = "0.1.5"

[[deps.Sockets]]
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
version = "1.11.0"

[[deps.SortingAlgorithms]]
deps = ["DataStructures"]
git-tree-sha1 = "64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9"
uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
version = "1.2.2"

[[deps.SparseArrays]]
deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
version = "1.12.0"

[[deps.SpecialFunctions]]
deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"]
git-tree-sha1 = "f2685b435df2613e25fc10ad8c26dddb8640f547"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
version = "2.6.1"
weakdeps = ["ChainRulesCore"]

    [deps.SpecialFunctions.extensions]
    SpecialFunctionsChainRulesCoreExt = "ChainRulesCore"

[[deps.StableRNGs]]
deps = ["Random"]
git-tree-sha1 = "95af145932c2ed859b63329952ce8d633719f091"
uuid = "860ef19b-820b-49d6-a774-d7a799459cd3"
version = "1.0.3"

[[deps.StackViews]]
deps = ["OffsetArrays"]
git-tree-sha1 = "be1cf4eb0ac528d96f5115b4ed80c26a8d8ae621"
uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15"
version = "0.1.2"

[[deps.StaticArrays]]
deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"]
git-tree-sha1 = "b8693004b385c842357406e3af647701fe783f98"
uuid = "90137ffa-7385-5640-81b9-e52037218182"
version = "1.9.15"
weakdeps = ["ChainRulesCore", "Statistics"]

    [deps.StaticArrays.extensions]
    StaticArraysChainRulesCoreExt = "ChainRulesCore"
    StaticArraysStatisticsExt = "Statistics"

[[deps.StaticArraysCore]]
git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682"
uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
version = "1.4.3"

[[deps.Statistics]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0"
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
version = "1.11.1"
weakdeps = ["SparseArrays"]

    [deps.Statistics.extensions]
    SparseArraysExt = ["SparseArrays"]

[[deps.StatsAPI]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ff"
uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
version = "1.7.1"

[[deps.StatsBase]]
deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"]
git-tree-sha1 = "2c962245732371acd51700dbb268af311bddd719"
uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
version = "0.34.6"

[[deps.StatsFuns]]
deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"]
git-tree-sha1 = "8e45cecc66f3b42633b8ce14d431e8e57a3e242e"
uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
version = "1.5.0"
weakdeps = ["ChainRulesCore", "InverseFunctions"]

    [deps.StatsFuns.extensions]
    StatsFunsChainRulesCoreExt = "ChainRulesCore"
    StatsFunsInverseFunctionsExt = "InverseFunctions"

[[deps.StructArrays]]
deps = ["ConstructionBase", "DataAPI", "Tables"]
git-tree-sha1 = "8ad2e38cbb812e29348719cc63580ec1dfeb9de4"
uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
version = "0.7.1"

    [deps.StructArrays.extensions]
    StructArraysAdaptExt = "Adapt"
    StructArraysGPUArraysCoreExt = ["GPUArraysCore", "KernelAbstractions"]
    StructArraysLinearAlgebraExt = "LinearAlgebra"
    StructArraysSparseArraysExt = "SparseArrays"
    StructArraysStaticArraysExt = "StaticArrays"

    [deps.StructArrays.weakdeps]
    Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
    GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527"
    KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c"
    LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
    SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
    StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

[[deps.StyledStrings]]
uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b"
version = "1.11.0"

[[deps.SuiteSparse]]
deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"]
uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"

[[deps.SuiteSparse_jll]]
deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c"
version = "7.8.3+2"

[[deps.TOML]]
deps = ["Dates"]
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
version = "1.0.3"

[[deps.TableTraits]]
deps = ["IteratorInterfaceExtensions"]
git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
version = "1.0.1"

[[deps.Tables]]
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"]
git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344"
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
version = "1.12.1"

[[deps.Tar]]
deps = ["ArgTools", "SHA"]
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
version = "1.10.0"

[[deps.TensorCore]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6"
uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50"
version = "0.1.1"

[[deps.Test]]
deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
version = "1.11.0"

[[deps.TiffImages]]
deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "PrecompileTools", "ProgressMeter", "SIMD", "UUIDs"]
git-tree-sha1 = "98b9352a24cb6a2066f9ababcc6802de9aed8ad8"
uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69"
version = "0.11.6"

[[deps.TranscodingStreams]]
git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742"
uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
version = "0.11.3"

[[deps.Tricks]]
git-tree-sha1 = "311349fd1c93a31f783f977a71e8b062a57d4101"
uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775"
version = "0.1.13"

[[deps.TriplotBase]]
git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b"
uuid = "981d1d27-644d-49a2-9326-4793e63143c3"
version = "0.1.0"

[[deps.URIs]]
git-tree-sha1 = "bef26fb046d031353ef97a82e3fdb6afe7f21b1a"
uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
version = "1.6.1"

[[deps.UUIDs]]
deps = ["Random", "SHA"]
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
version = "1.11.0"

[[deps.Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
version = "1.11.0"

[[deps.UnicodeFun]]
deps = ["REPL"]
git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf"
uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1"
version = "0.4.1"

[[deps.Unitful]]
deps = ["Dates", "LinearAlgebra", "Random"]
git-tree-sha1 = "cec2df8cf14e0844a8c4d770d12347fda5931d72"
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
version = "1.25.0"

    [deps.Unitful.extensions]
    ConstructionBaseUnitfulExt = "ConstructionBase"
    ForwardDiffExt = "ForwardDiff"
    InverseFunctionsUnitfulExt = "InverseFunctions"
    LatexifyExt = ["Latexify", "LaTeXStrings"]
    PrintfExt = "Printf"

    [deps.Unitful.weakdeps]
    ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
    ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
    InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
    LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
    Latexify = "23fbe1c1-3f47-55db-b15f-69d7ec21a316"
    Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"

[[deps.WebP]]
deps = ["CEnum", "ColorTypes", "FileIO", "FixedPointNumbers", "ImageCore", "libwebp_jll"]
git-tree-sha1 = "aa1ca3c47f119fbdae8770c29820e5e6119b83f2"
uuid = "e3aaa7dc-3e4b-44e0-be63-ffb868ccd7c1"
version = "0.1.3"

[[deps.WoodburyMatrices]]
deps = ["LinearAlgebra", "SparseArrays"]
git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511"
uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6"
version = "1.0.0"

[[deps.XZ_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4"
uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800"
version = "5.8.1+0"

[[deps.Xorg_libX11_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"]
git-tree-sha1 = "b5899b25d17bf1889d25906fb9deed5da0c15b3b"
uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc"
version = "1.8.12+0"

[[deps.Xorg_libXau_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b"
uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec"
version = "1.0.13+0"

[[deps.Xorg_libXdmcp_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309"
uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05"
version = "1.1.6+0"

[[deps.Xorg_libXext_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
git-tree-sha1 = "a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb"
uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3"
version = "1.3.7+0"

[[deps.Xorg_libXrender_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"]
git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d"
uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa"
version = "0.9.12+0"

[[deps.Xorg_libxcb_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"]
git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422"
uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b"
version = "1.17.1+0"

[[deps.Xorg_xtrans_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb"
uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10"
version = "1.6.0+0"

[[deps.Zlib_jll]]
deps = ["Libdl"]
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
version = "1.3.1+2"

[[deps.Zstd_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308"
uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
version = "1.5.7+1"

[[deps.isoband_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c"
uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4"
version = "0.2.3+0"

[[deps.libaom_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "371cc681c00a3ccc3fbc5c0fb91f58ba9bec1ecf"
uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b"
version = "3.13.1+0"

[[deps.libass_jll]]
deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "125eedcb0a4a0bba65b657251ce1d27c8714e9d6"
uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0"
version = "0.17.4+0"

[[deps.libblastrampoline_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
version = "5.15.0+0"

[[deps.libfdk_aac_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "646634dd19587a56ee2f1199563ec056c5f228df"
uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
version = "2.0.4+0"

[[deps.libpng_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "07b6a107d926093898e82b3b1db657ebe33134ec"
uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f"
version = "1.6.50+0"

[[deps.libsixel_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "libpng_jll"]
git-tree-sha1 = "c1733e347283df07689d71d61e14be986e49e47a"
uuid = "075b6546-f08a-558a-be8f-8157d0f608a5"
version = "1.10.5+0"

[[deps.libvorbis_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll"]
git-tree-sha1 = "11e1772e7f3cc987e9d3de991dd4f6b2602663a5"
uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a"
version = "1.3.8+0"

[[deps.libwebp_jll]]
deps = ["Artifacts", "Giflib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libglvnd_jll", "Libtiff_jll", "libpng_jll"]
git-tree-sha1 = "4e4282c4d846e11dce56d74fa8040130b7a95cb3"
uuid = "c5f90fcd-3b7e-5836-afba-fc50a0988cb2"
version = "1.6.0+0"

[[deps.nghttp2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
version = "1.64.0+1"

[[deps.oneTBB_jll]]
deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"]
git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3"
uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e"
version = "2022.0.0+0"

[[deps.p7zip_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
version = "17.7.0+0"

[[deps.x264_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "14cc7083fc6dff3cc44f2bc435ee96d06ed79aa7"
uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a"
version = "10164.0.1+0"

[[deps.x265_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "e7b67590c14d487e734dcb925924c5dc43ec85f3"
uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76"
version = "4.1.0+0"
"""

# ╔═╡ Cell order:
# ╟─7b72940a-ff86-4d40-91ef-f2cdff624185
# ╟─e1d4c31e-026f-49ad-b93c-7e78a4674eb8
# ╟─ca62b71f-6771-4899-8648-fbf79c131c44
# ╟─ba90da9d-465a-472d-a493-bbfef82158ed
# ╟─a9ca5c02-d36b-4b6e-b44a-f56e3452c387
# ╟─8a690fb6-713e-4cc4-8c1e-5562160be3dc
# ╟─d04e0712-043d-421b-8da7-d0d88c7667ad
# ╟─f95fb5ed-826e-4fd1-ab54-333094ea4b3d
# ╟─5a5509ca-0429-4bd3-9971-28d898f05b48
# ╟─1cca3c1c-899d-4b9d-8d28-87c498075636
# ╟─10db7391-dd65-4f9e-9441-bf90dc2621b9
# ╟─2b1891d2-369e-4d5d-8b51-44fddc6e6428
# ╟─2e3dace1-dff5-4a99-9a66-9d665499099e
# ╟─80aa99c5-adb8-4309-9e4c-0888d4fb70c9
# ╟─429ccc0d-9037-4157-a418-f8e857c88008
# ╟─f6cd1979-7b43-4e2d-94de-edcfe63e3374
# ╟─341adef4-0231-4f6c-827c-8fc48249965a
# ╟─98cb2081-b5b4-4648-aaff-596324f9124b
# ╟─87b1eb41-08e1-44ec-8afb-8c8f4c141e25
# ╟─5ed9e97a-185d-4f75-b62c-63c33dea4361
# ╟─4d63616f-3d34-4b73-af8f-34b7d41d0aa1
# ╟─311438e7-e151-4ecb-a414-224b531a8f4b
# ╟─74744f10-f476-48c1-a385-6b2a3b78941a
# ╟─d46c4ffc-b622-41db-81ef-4e74f6850ed8
# ╟─5c0813d3-7365-4f78-ae57-4eb3ebd8a268
# ╟─ca265014-0b8a-4dcf-b120-e95716040889
# ╟─22f17215-1475-422e-b2bf-3bb7dcc7caac
# ╟─cd017a3e-f1dd-4fce-bef8-76ac37992174
# ╟─6ce7263b-8ec8-4c07-bb4a-0066c4a902dd
# ╟─8f9cf45f-32ed-4112-b62d-c96f4fd3f237
# ╟─7b21aabe-1ee7-4065-88c4-4482fad5cf29
# ╟─1acd7400-ecee-41ee-a5e3-467a11af07a0
# ╟─3047981c-a20c-4e45-99d2-7493a77dc468
# ╟─e5630a85-a00b-400d-b0dc-de1ce32bda0b
# ╟─1eb5ec8d-21e5-4f3d-9eff-34fb858cdf10
# ╟─df6e7a3f-31bb-4be3-aa1e-cec4f4971e2b
# ╟─1a86fd74-decd-428f-9364-76c5261f17e1
# ╟─b618c146-8531-4192-86f9-d4c3174e9835
# ╟─8aa9cf54-f4f0-491f-a407-033d10fa6d5b
# ╟─ab1d6a41-381f-432b-9d8a-bb6c362538d4
# ╟─8060a6b1-96e6-4d5b-87f5-d2e682c98a9f
# ╟─171a6d90-485d-4428-84d0-c2ca9794ea7d
# ╟─650bc057-71fc-4bc1-ae82-b57be6e8fac6
# ╟─0b02acee-b43b-4488-9f7b-74b8387709dc
# ╟─fe071574-b49f-4948-97e1-ef4fb0f91174
# ╟─cb5715f8-73f1-4bad-b2de-d7e32b0927b1
# ╟─20c4df93-bd36-43c8-b5b3-219925d5725d
# ╟─1b87e7be-93be-4171-a6aa-73fa241d1462
# ╟─1994c87d-0fdd-4cfc-b290-f892ef68c2bf
# ╟─493f5c9c-9590-483a-9ec4-c941822b485e
# ╟─2dabf1a7-43f9-4b98-a0cb-28907f5cc7d2
# ╟─d845f482-cfbc-45d1-a1b1-e97b5c305f62
# ╟─54d622f5-ebdf-49cb-b15e-5f018a853a60
# ╟─37d741d4-3943-4314-b89e-53580da973bf
# ╟─2ec8ffcb-0f15-4831-b834-bc60b73eb7e1
# ╟─1747216b-9f65-45e1-b83f-618bc0ecdc12
# ╟─ab88ce35-aadf-4406-b8a5-ab97f8789d04
# ╟─d3955507-98d6-4169-8a1a-37a5d7e68d52
# ╟─97eaa0cb-59ba-45f3-8c55-7979b94993dd
# ╟─967c9a7f-3035-48a4-82a2-66ec4d86fecc
# ╟─a9aeb234-1b7d-45dd-9709-7c4b79420efc
# ╟─6cad8eea-977f-4c62-8c1d-87ea4889b810
# ╟─64afd1f8-8090-45af-8720-8a5262fb004b
# ╟─c63185a6-99c1-464d-86cf-427669ac37f4
# ╟─24c5b259-452a-4979-b76d-cdff3a37f00b
# ╟─b3b580bd-9a24-424f-98bb-2c35c738c07b
# ╟─8739306d-672a-4e2b-8023-689c60ffbfb3
# ╟─6d0d8666-fbfc-44fe-ac0b-05d51f46c92c
# ╟─9628de69-add5-454a-9238-a45b39977ed5
# ╟─01e711fe-d198-4777-8b96-36c982501240
# ╟─96bae59b-56d1-4530-b64c-a7a66f74b4ec
# ╟─17dc2c60-7524-4edd-8d81-d6ab67c86bba
# ╟─1eb7ab75-e1fd-457b-8ab6-0a5e5abda631
# ╟─afbf8215-8b18-4315-8b36-33a9cba36731
# ╟─e4cd1b0c-c790-4a6b-8b30-28aebd693ca8
# ╟─fb9c951d-b2ac-4530-ba2a-35cf361f56bc
# ╟─fbb23094-64ab-44e3-a3a7-67ea1fd88d5e
# ╟─f6918e6c-b703-42e5-ad9a-d5e0b7f38ded
# ╟─30ff82fc-5c50-4cd8-8faa-4a55039a8601
# ╟─9322d837-621e-4b46-bc30-a2045420b237
# ╟─ef94af42-06da-4d3b-9d58-c59a9d5316e8
# ╟─e173811f-b12d-4bac-a486-7c1cef311d55
# ╟─8198cf3a-ea5a-4787-8a9f-f61b9c1ea8c1
# ╟─95023d14-88d9-4238-95bb-26e37df4e870
# ╟─4ad6b443-ef33-4f04-8996-977b53467af4
# ╟─debc08fe-04da-4482-bad7-e0198a4bcc9a
# ╟─e03fdcfb-62c5-4f31-96f9-4c212dcabada
# ╟─69c1d1e7-53f2-4124-8951-7a920b98df58
# ╟─d6ad2a2a-399d-4bed-b7db-3b40eb6bec33
# ╟─2da34f14-38fe-4f7a-9d70-61325cb11b55
# ╟─26e8f370-8a64-4511-867f-756a04ff75ac
# ╟─61573f1d-f343-435d-8e34-78b3b2caada2
# ╟─decb7e70-a891-4dc8-b34f-ba5940ea0954
# ╟─a99cfb2f-f99a-4a48-9751-56dff9d1972c
# ╟─bf57d63f-6204-4f59-986a-f9a635da9c35
# ╟─72e7f278-dc4b-43e0-9cc6-1bf303e2e5f5
# ╟─a96eb4ea-c5c4-42cf-b2ae-b38b672822cb
# ╟─5e26962d-0898-46d7-9df7-1f98c8271368
# ╟─00000000-0000-0000-0000-000000000001
# ╟─00000000-0000-0000-0000-000000000002
