This commit is contained in:
DotNaos 2025-06-29 22:00:47 +02:00
parent 16d9089165
commit 3b51fc7c66
13 changed files with 1588 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

128
code/anim.py Normal file
View File

@ -0,0 +1,128 @@
import numpy as np
import plotly.graph_objects as go
"""
Interactive 3D Plotly animation of the scalar line integral
_C f(x, y) ds with f(x, y) = x · y
along the unit circle C, plotted on the surface z = f(x,y).
No files are written; the animation is displayed with interactive controls.
"""
# Parameters
t_frame = np.linspace(0.0, 2 * np.pi, 120)
# Scalar field definition
def scalar_field(x, y):
return x * y
# Surface mesh for scalar field
lin = np.linspace(-1.2, 1.2, 50)
X, Y = np.meshgrid(lin, lin)
Z = scalar_field(X, Y)
# Compute running integral along circle
# Midpoint rule
mid_ts = (t_frame[1:] + t_frame[:-1]) / 2
f_mid = scalar_field(np.cos(mid_ts), np.sin(mid_ts))
dt = t_frame[1:] - t_frame[:-1]
running = np.concatenate([[0], np.cumsum(f_mid * dt)])
# Prepare static surface trace
surface = go.Surface(
x=X, y=Y, z=Z, colorscale="RdBu", cmin=-1, cmax=1, opacity=0.6, showscale=False
)
# Full path on surface
curve_x = np.cos(t_frame)
curve_y = np.sin(t_frame)
curve_z = scalar_field(curve_x, curve_y)
path = go.Scatter3d(
x=curve_x, y=curve_y, z=curve_z, mode="lines", line=dict(color="black", width=2)
)
# Initial marker at t=0
t0 = t_frame[0]
marker = go.Scatter3d(
x=[np.cos(t0)],
y=[np.sin(t0)],
z=[scalar_field(np.cos(t0), np.sin(t0))],
mode="markers",
marker=dict(size=5, color="black"),
)
# Build frames for animation
frames = []
for i, t in enumerate(t_frame):
x0, y0 = np.cos(t), np.sin(t)
z0 = scalar_field(x0, y0)
frame = go.Frame(
data=[marker.update(x=[x0], y=[y0], z=[z0])],
layout=go.Layout(title_text=f"Running integral: {running[i]:.3f}"),
name=f"frame{i}",
)
frames.append(frame)
# Layout with sliders and buttons
graph = go.Figure(
data=[surface, path, marker],
layout=go.Layout(
title="Running integral: 0.000",
scene=dict(
xaxis=dict(range=[-1.3, 1.3]),
yaxis=dict(range=[-1.3, 1.3]),
zaxis=dict(range=[Z.min(), Z.max()]),
),
updatemenus=[
dict(
type="buttons",
showactive=False,
buttons=[
dict(
label="Play",
method="animate",
args=[
None,
dict(
frame=dict(duration=50, redraw=True),
fromcurrent=True,
transition=dict(duration=0),
),
],
)
],
)
],
),
frames=frames,
)
# Add slider
sliders = [
dict(
steps=[
dict(
method="animate",
args=[
[f.name],
dict(
mode="immediate",
frame=dict(duration=50, redraw=True),
transition=dict(duration=0),
),
],
label=str(i),
)
for i, f in enumerate(frames)
],
transition=dict(duration=0),
x=0,
y=0,
currentvalue=dict(prefix="Frame: "),
len=1.0,
)
]
graph.update_layout(sliders=sliders)
graph.show()

18
code/shadertoy.glsl Normal file
View File

@ -0,0 +1,18 @@
/* Pixel unit conversion function */
vec2 pos(in float x, in float y) { return st + vec2(x * rx, y * rx); }
vec2 pos(in float x) { return pos(x, x); }
vec2 pos(in vec2 p) { return pos(p.x, p.y); }
float size(in float x) { return x * rx; }
vec2 size(in float x, in float y) { return vec2(x * rx, y * rx); }
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = fragCoord/iResolution.xy;
// Time varying pixel color
vec3 col = 0.5 + 0.5*cos(iTime+uv.xyx+vec3(0,2,4));
// Output to screen
fragColor = vec4(col,1.0);
}

228
formulas/Formelsammlung.md Normal file
View File

@ -0,0 +1,228 @@
## Woche 1
- Ich kenne die Begriffe Integral, Stammfunktion, lineare Substitution und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe komplexe Zahl, Realteil, Imaginärteil, Betrag und komplex konjugiert und deren wichtigste Eigenschaften.
- Ich kenne die elementaren Rechenregeln für die komplexe Konjugation.
- Ich kann die Methode der linearen Substitution anwenden, um bestimmte und unbestimmte Integrale von linear substituierten Elementarfunktionen zu berechnen.
- Ich kann den Flächeninhalt zwischen einer Funktion und den Koordinatenachsen bestimmen.
- Ich kann den Flächeninhalt zwischen zwei sich schneidenden Funktionen bestimmen.
- Ich kann das Volumen von Rotationskörpern bestimmen.
- Ich kann für jede komplexe Zahl ihren Realteil, Imaginärteil, Betrag und ihre komplex Konjugierte bestimmen.
- Ich kann Summe, Differenz, Produkt und Quotient von komplexen Zahlen berechnen.
- Ich kann einfache Brüche und Potenzen von komplexen Zahlen durch Anwenden der Rechenregeln vereinfachen.
## Woche 2
- Ich kenne die Begriffe Integral, Stammfunktion, Substitution, Trapezformel und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe Gaußsche Zahlenebene, arithmetische und trigonometrische Form einer komplexen Zahl und Arg-Funktion und deren Eigenschaften.
- Ich kann die Methode der Substitution anwenden, um bestimmte und unbestimmte Integrale zu berechnen.
- Ich kann bestimmte Integrale näherungsweise auf eine vorgegebene Anzahl Dezimalstellen mit Python/Numpy berechnen.
- Ich kann komplexe Zahlen in der Gaußschen Zahlenebene darstellen.
- Ich kann komplexe Zahlen von der arithmetischen in die trigonometrische Form und umgekehrt umwandeln.
- Ich kann einfache Brüche und Potenzen von komplexen Zahlen durch Anwenden der Rechenregeln vereinfachen.
- Ich kann quadratische Gleichungen mit reellen Koeffizienten lösen.
## Woche 3
- Ich kenne die Begriffe Integral, Stammfunktion, partielle Integration und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe Exponentialform einer komplexen Zahl, Eulersche Formel, Potenzgleichungen und deren Eigenschaften.
- Ich kann die partielle Integration anwenden, um bestimmte und unbestimmte Integrale zu berechnen.
- Ich kann unbestimmte Integrale mit Python/Sympy berechnen.
- Ich kann komplexe Zahlen in der arithmetischen, trigonometrischen und Exponentialform darstellen und von einer in die andere Form umwandeln.
- Ich kann die Grundrechenarten für die komplexen Zahlen anwenden.
- Ich kann komplexe Zahlen sowohl potenzieren als auch aus ihnen die Wurzel ziehen.
## Woche 4
- Ich kenne den Begriff uneigentliches Integral und dessen wichtigste Eigenschaften.
- Ich kenne die Begriffe Matrix, symmetrische/schiefsymmetrische Matrix, Einheitsmatrix, inverse Matrix, Transposition und deren wichtigste Eigenschaften.
- Ich kann die Existenz eines uneigentlichen Integrals beurteilen und gegebenenfalls seinen Wert berechnen.
- Ich kann Matrizen addieren, subtrahieren und mit einem Skalar bzw. mit einer anderen Matrix multiplizieren und bestimmen, ob diese Operationen für gegebene Matrizen durchführbar sind oder nicht.
## Woche 5
- Ich kenne die Begriffe Bogenlänge, Mantelfläche von Rotationskörpern, Massenmittelpunkt, Schwerpunkt, Flächenschwerpunkt und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe Matrix, inverse Matrix, Drehmatrix, lineare Abbildung und deren wichtigste Eigenschaften.
- Ich kenne die 2x2 Standardmatrizen und die dadurch beschriebenen linearen Abbildungen in 2D.
- Ich kann mit Hilfe der Integration die Bogenlänge einer ebenen Kurve, die Mantelfläche, den Flächenschwerpunkt und das Volumen von Rotationskörpern berechnen.
- Ich kann lineare Gleichungssysteme mit Hilfe von Matrizen darstellen.
- Ich kann bestimmen, ob eine Matrix invertierbar ist oder nicht und gegebenenfalls die inverse Matrix bestimmen.
- Ich kann Verknüpfungen von linearen Abbildungen durch Matrix-Produkte ausdrücken.
## Woche 6
- Ich kenne die Begriffe Polarkoordinaten, Zylinderkoordinaten, Schwerpunkt, Flächenschwerpunkt und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe orthogonale Matrix, Drehmatrix, Spiegelmatrix und deren wichtigste Eigenschaften.
- Ich kenne diejenigen der 2x2 Standardmatrizen, die orthogonal sind.
- Ich kenne das Spaltenvektor Konstruktionsverfahren zur Bestimmung von Matrizen und kann dieses anwenden.
- Ich kann mit Hilfe der Integration den Schwerpunkt homogener Flächen und von Rotationskörpern berechnen.
- Ich kann kartesische Koordinaten in Polar- bzw. Zylinderkoordinaten umwandeln und umgekehrt.
- Ich kann Dreh- und Spiegelmatrizen zur Lösung konkreter Fragestellungen anwenden.
## Woche 7
- Ich kenne die Begriffe Mehrfachintegral, Integrationsgebiet und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe Spur, Determinante, Regel von Sarrus und deren wichtigste Eigenschaften.
- Ich kann - z. B. für die Vereinfachung von Zweifach- und Dreifachintegralen - kartesische Koordinaten in Polar- bzw. Zylinderkoordinaten umwandeln.
- Ich kann Mehrfachintegrale auf einfachen Gebieten in 2D und 3D berechnen und die Integrationsreihenfolge vertauschen.
- Ich kann Masse, Volumen und Schwerpunkt mittels Mehrfachintegralen bestimmen.
- Ich kann die Eigenschaften einer Matrix anhand ihrer Spur und Determinante beurteilen.
- Ich kann die Determinante quadratischer Matrizen in 2D und 3D berechnen.
- Ich kann die Determinante einer quadratischen Matrix mit Hilfe des Gaußschen Verfahrens berechnen
## Woche 8
- Ich kenne die Begriffe Skalarfeld, Vektorfeld, Kurve, eindimensionale Schnittkurve, Höhenlinie, Niveaufläche, Niveaumenge und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe charakteristisches Polynom, Eigenwert, Eigenvektor, Eigenraum, Spektrum sowie deren wichtigste Eigenschaften.
- Ich kann die natürliche Definitionsmenge und Wertemenge einer Funktion mehrerer Variabler bestimmen.
- Ich kann Höhenlinien und Niveauflächen von Funktionen von zwei bzw. drei Variablen bestimmen und skizzieren.
- Ich kann das charakteristische Polynom, die Eigenwerte und Eigenvektoren einer quadratischen Matrix berechnen.
- Ich kann die Eigenschaften einer Matrix bzw. linearen Abbildung anhand ihrer Eigenwerte und Eigenvektoren beurteilen und umgekehrt.
## Woche 9
- Ich kenne die Begriffe partielle Ableitung, Tangentialebene, Gradient, totales Differential und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe Axiom, Skalarkörper, Vektorraum, Linearkombination, lineare Hülle, linear abhängig, linear unabhängig, erzeugend, Basis, Dimension und deren wichtigste Eigenschaften.
- Ich kann die partiellen Ableitungen von Funktionen in mehreren Variablen berechnen.
- Ich kann die Tangentialebene in einem Punkt an ein Skalarfeld bestimmen.
- Ich kann den Gradienten und das totale Differential von Skalarfeldern bestimmen.
- Ich kann  beurteilen, ob gegebene Mengen eine Vektorraumstruktur bilden.
- Ich kann beurteilen, ob die Vektoren einer Teilmenge von 𝑛Rn  linear abhängig, linear unabhängig oder erzeugend sind und ob sie eine Basis bilden.
## Woche 10
- Ich kenne die Begriffe Satz von Schwarz, Hesse-Matrix, Richtungsableitung, lokale/globale Extrema, Sattelpunkt, Extrema unter Nebenbedingungen, Lagrange´scher Multiplikator und deren wichtigste Eigenschaften.
- Ich kenne die Begriffe Bild, Kern, algebraische und geometrische Vielfachheit, ähnliche Matrix, Diagonalisierbarkeit einer Matrix und deren wichtigste Eigenschaften.
- Ich kann die Hesse-Matrix von Skalarfeldern bestimmen.
- Ich kann die Richtungsableitung berechnen.
- Ich kann lokale Extrema und Sattelpunkte bestimmen.
- Ich kann Extrema einer Funktion unter Nebenbedingungen bestimmen.
- Ich kann Bild und Kern einer linearen Abbildung berechnen.
- Ich kann bestimmen, ob eine Matrix diagonalisierbar ist oder nicht und die Diagonalmatrix angeben.
## Woche 11
- Ich kenne die Begriffe Kurve, Spur, Geschwindigkeits-/Tangentenvektor, Beschleunigungsvektor, Tangenteneinheitsvektor, Hauptnormalenvektor, Binormalenvektor, Parametrisierung, Bogenlänge, Kurven-/Linienintegral, Vektorfeld und deren wichtigste Eigenschaften.
- Ich kann die Spur einer parametrisierten Kurve in 2D skizzieren.
- Ich kann ein Vektorfeld in 2D skizzieren.
- Ich kann die Bogenlänge einer Kurve berechnen.
- Ich kann Linienintegrale berechnen.
## Woche 12
- Ich kenne die Begriffe Laplace Operator, Divergenz und Rotation eines Vektorfeldes, quellenfrei, wirbelfrei, konservativ, Potential-/Gradientenfeld und deren wichtigste Eigenschaften.
- Ich kann die Rotation und Divergenz von Vektorfeldern bestimmen.
- Ich kann bestimmen, ob ein Vektorfeld quellen- bzw. wirbelfrei ist.
## Probeprüfung Themen
---
#### **Aufgabe 1 Aussagen zu Integralen**
- Begriff und Eigenschaften von Integral, Stammfunktion, (linearer) Substitution (1 | 2)
- Anwendung der linearen Substitution auf bestimmte/unbestimmte Integrale (1 | 2)
- Beurteilung & Berechnung eines uneigentlichen Integrals (4)
- Zusammenhang zwischen Flächeninhalt in 2 D und (Doppel-)Integral (7)
---
#### **Aufgabe 2 Aussagen über eine Funktion**
- Begriff Skalarfeld, Niveau-/Höhen­linien, Niveau­mengen (8)
- Bestimmung des Funktionswertes in einem Punkt (grundlegend, 8)
- Interpretation des Graphen einer Funktion zweier Variablen im 3 D-Raum (8)
---
#### **Aufgabe 3 Aussagen über ein Vektorfeld**
- Rotation, Divergenz, konservative (= wirbel- & quellenfreie) Vektorfelder, Potentialfeld (12)
- Prüfen, ob ∇ × **v** = 0 bzw. ∇·**v** = 0 und Existenz eines Potentials (12)
---
#### **Aufgabe 4 Aussagen über zwei Matrizen**
- Begriffe Matrix, symmetrisch, orthogonal, regulär (invertierbar), Bild (img) und Kern (ker) (4 | 5 | 6 | 7)
- Bestimmen von Invertierbarkeit und Rang über Determinante oder Gauß-Verfahren (5 | 7)
- Eigenschaften orthogonaler bzw. symmetrischer Matrizen (4 | 6)
---
#### **Aufgabe 5 Weitere Aussagen zu Matrizen**
- Produkte invertierbarer Matrizen und deren Invertierbarkeit (5)
- Zusammenhang Matrixpotenz A³ Eigenwerte λ³ (8)
- Existenz unabhängiger Eigenvektoren zu verschiedenen Eigenwerten (8 | 10)
---
#### **Aufgabe 6 Diverse Einzelaussagen**
- Komplexe Zahlen: Konjugation, Potenzgleichungen, trigono­metrische Form (1 | 2 | 3)
- Gradient und seine Orthogonalität zu Höhenlinien (9 | 10 | 12)
- Lineare Unabhängigkeit & Basisbegriffe in Vektorräumen (9)
- Definition einer linearen Abbildung (Homogenität & Additivität) (9)
---
#### **Aufgabe 7 Gemischte Rechenaufgaben**
a) **z⁴ = 16 e^{iπ}** lösen
- Potenz- & Wurzelziehen komplexer Zahlen in Exponential-/Trig- & arithmetischer Form (3)
b) **A¹⁵** berechnen
- Dreh- bzw. orthogonale 2×2-Matrizen erkennen, Potenzen mittels Diagonalisierung/Rotor-Eigenschaften bilden (6 | 8 | 10)
c) Integrationsreihenfolge vertauschen
- Mehrfachintegrale, Gebietsskizze, Reihenfolgenwechsel (7)
d) Richtungsableitung an P(1, 2) in Richtung **v**
- Gradient, Richtungsableitung, Normierung des Richtungsvektors (10)
e) Skalares Kurvenintegral längs **γ(t)**
- Bogenlänge-Parameter t, Kurvenintegral eines Skalarfeldes (11)
---
#### **Aufgabe 8 Lokale Extrema & Sattelpunkte**
- Partielle Ableitungen, Gradient = 0 setzen (9)
- Hesse-Matrix, Eigenwerte-Kriterium für Extrema/Sattel (10)
---
#### **Aufgabe 9 Flächenschwerpunkt eines Trapezes**
- Flächenschwerpunkt mittels Doppelintegration berechnen (5)
- Anwendung von Mehrfachintegralen auf Masse/Schwerpunkt (7)
---
#### **Aufgabe 10 Diagonalisierung einer 3×3-Matrix**
- Charakteristisches Polynom, Eigenwerte, Eigenvektoren (8)
- Bild, Kern, algebraische / geometrische Vielfachheit, Diagonalisierbarkeit & Transformationsmatrix (10)

BIN
formulas/Formulas.pur Normal file

Binary file not shown.

565
formulas/Schemas.md Normal file
View File

@ -0,0 +1,565 @@
# WIP Konzept - Uneigentliches Integral
# WIP Konzept - Komplexe Zahlen
# 10. Diagonalisierung und Transformationsmatrix
# 9. Schwerpunkt
1. **Gebiet $\mathcal A$ festlegen**
Wähle Integrationsgrenzen, z. B.
$$
x\in[a,b],\quad y\in\bigl[y_{\mathrm{unten}}(x),\,y_{\mathrm{oben}}(x)\bigr]
$$
oder umgekehrt
$$
y\in[c,d],\quad x\in\bigl[x_{\mathrm{links}}(y),\,x_{\mathrm{rechts}}(y)\bigr].
$$
2. **Dichtefunktion $\rho(x,y)$ angeben**
- Allgemein beliebig.
- Regelfall homogen: $\rho(x,y)\equiv 1$.
3. **Gesamtmasse \(M\) berechnen**
$$
M \;=\;\iint_{\mathcal A}\rho(x,y)\,dA
\;=\;\int_{x=a}^{b}\!\int_{y=y_{\mathrm{unten}}(x)}^{y_{\mathrm{oben}}(x)}
\rho(x,y)\,dy\,dx.
$$
4. **Erstes Moment zur \(y\)-Achse (\(x_S\))**
$$
M_y
\;=\;\iint_{\mathcal A} x\,\rho(x,y)\,dA
\;=\;\int_{x=a}^{b}\!\int_{y=y_{\mathrm{unten}}(x)}^{y_{\mathrm{oben}}(x)}
x\,\rho(x,y)\,dy\,dx.
$$
5. **Erstes Moment zur \(x\)-Achse ($y_S$)**
$$
M_x
\;=\;\iint_{\mathcal A} y\,\rho(x,y)\,dA
\;=\;\int_{x=a}^{b}\!\int_{y=y_{\mathrm{unten}}(x)}^{y_{\mathrm{oben}}(x)}
y\,\rho(x,y)\,dy\,dx.
$$
6. **Schwerpunktkoordinaten**
$$
x_S \;=\;\frac{M_y}{M},
\qquad
y_S \;=\;\frac{M_x}{M}.
$$
---
### Beispiel für $\rho(x,y)\equiv1$ und $0\le x\le2a,\;0\le y\le a+x$
- Gebiet:
$$
x\in[0,2a],\quad y\in[0,\;a+x].
$$
- Gesamtmasse:
$$
M = \int_{0}^{2a}\!\int_{0}^{a+x}1\,dy\,dx = 4a^2.
$$
- Erste Momente:
$$
M_y = \int_{0}^{2a}\!\int_{0}^{a+x} x\,dy\,dx,
\quad
M_x = \int_{0}^{2a}\!\int_{0}^{a+x} y\,dy\,dx.
$$
- Schwerpunkt:
$$
x_S = \frac{M_y}{M} = \frac{7}{6}a,
\quad
y_S = \frac{M_x}{M} = \frac{13}{12}a.
$$
# 8. Extrema - Mehrdimensional
| **Baustein** | **Was es ist / tut** | **Warum es wichtig ist** |
|--------------|----------------------|--------------------------|
| **1. Funktion** $f(x,y)$ | Die „Höhenlandschaft“, die untersucht wird. | Ohne Funktion keine Analyse. |
| **2. Gradient** $\nabla f=(f_x,f_y)$ | Erste partielle Ableitungen → zeigt stärksten Anstieg. | Setze $\nabla f = \mathbf 0$, um **kritische Punkte** zu finden. |
| **3. Gleichungssystem** $\;f_x=0,\;f_y=0\;$ | Zwei Gleichungen. | Liefert die Koordinaten aller kritischen Punkte. |
| **4. Hesse-Matrix** $$H=\begin{pmatrix}f_{xx}&f_{xy}\\f_{yx}&f_{yy}\end{pmatrix}$$ | Matrix der zweiten Ableitungen. | Enthält Krümmungs-Info der Fläche. |
| **5. Determinante** $$D=\det H=f_{xx}f_{yy}-f_{xy}^{2}$$ | Eine Zahl pro Punkt. | Entscheidet schnell über Punktart:<br>• $D>0$ ⇒ Extremum<br>• $D<0$ Sattel<br>• $D=0$ ⇒ Test unentschieden |
| **6. Vorzeichen von** $f_{xx}$ | Nur wenn $D>0$. | Unterscheidet Minimum ($f_{xx}>0$) vs. Maximum ($f_{xx}<0$). |
| **7. Funktionswert** $f(x_0,y_0)$ *(optional)* | Höhe des Punktes. | Rein informativ, z. B. tiefstes Minimum. |
| **8. Sonderfälle**<br>• Eigenwerte von $H$<br>• Lagrange-Multiplikatoren | Alternativen/Erweiterungen. | Eigenwerte geben gleiche Entscheidung; Lagrange bei Nebenbedingungen. |
---
## Ablauf in Kurzform
1. **Aufschreiben:** $f(x,y)$
2. **Gradient bilden:** $f_x,\;f_y$
3. **Kritische Punkte:** Löse $f_x=0,\;f_y=0$ → $\{P_i\}$
4. **Hesse-Matrix:** $f_{xx},f_{xy},f_{yy}$ in jedem $P_i$
5. **Klassifikation:**
* $D<0$ Sattel
* $D>0$ & $f_{xx}>0$ ⇒ Minimum
* $D>0$ & $f_{xx}<0$ Maximum
* $D=0$ ⇒ weiterer Test nötig
1. **(Optional) Funktionswerte** $f(P_i)$ einsetzen, um Höhen/Tiefen zu vergleichen.
# 7. e) Skalares Kurvenintegral
**Allgemeines Schema zur Berechnung eines skalaren Kurvenintegrals**
1. **Parameterdarstellung**
$$\gamma(t) = \bigl(x(t),\,y(t)\bigr),\quad t\in[a,b]$$
2. **Einsetzen in die skalare Feldfunktion**
$$f\bigl(\gamma(t)\bigr) = f\bigl(x(t),\,y(t)\bigr)$$
3. **Berechnung des Bogenelements**
- Ableitung:
$$\gamma'(t) = \bigl(x'(t),\,y'(t)\bigr)$$
- Norm (Geschwindigkeit):
$$\|\gamma'(t)\| = \sqrt{x'(t)^2 + y'(t)^2}$$
4. **Formulierung des Kurvenintegrals**
$$
\int_{K} f\,\mathrm{d}s
= \int_{a}^{b} f\bigl(\gamma(t)\bigr)\,\|\gamma'(t)\|\,\mathrm{d}t
$$
5. **Auswertung des Integrals**
- Ggf. Substitution wählen, z. B. $u = g(t)$
- $\mathrm{d}u$ bestimmen und $t\,\mathrm{d}t$ umschreiben
- Grenzen anpassen:
$$t=a\mapsto u=u(a),\quad t=b\mapsto u=u(b)$$
- Stammfunktion finden und einsetzen
- Ergebnis vereinfachen
6. **Interpretation**
- Physikalisch: Gesamtmasse, Arbeit, Energie, …
- Mathematisch: Konvergenz prüfen (bei offenen Endpunkten)
## Richtungsableitung
1. **Gradient berechnen**
$$
\nabla f(x)
=
\begin{pmatrix}
\displaystyle \frac{\partial f}{\partial x_{1}}(x) \\[6pt]
\vdots \\[4pt]
\displaystyle \frac{\partial f}{\partial x_{n}}(x)
\end{pmatrix}.
$$
2. **Einheitsvektor bilden**
Sei $\vec v = (v_{1},\dots,v_{n})^\top\in\mathbb{R}^{n}$. Dann
$$
\|\vec v\| = \sqrt{v_{1}^{2} + \dots + v_{n}^{2}},
\qquad
\vec u = \frac{\vec v}{\|\vec v\|}.
$$
3. **Richtungsableitung**
$$
D_{\vec v}f(P)
= \lim_{h\to 0}\frac{f\bigl(P + h\,\vec u\bigr) - f(P)}{h}
= \nabla f(P)\,\bullet\,\vec u
= \nabla f(P)\,\bullet\,\frac{\vec v}{\|\vec v\|}.
$$
**Kurzgefasst:**
$$
D_{\vec v}f(P)
= \nabla f(P)\,\bullet\,\frac{\vec v}{\|\vec v\|}.
$$
# 7. d) Integrationsreihenfolge ändern
| **Vorher** Typ I | **Nachher** Typ II | **Was wohin ?** |
|--------------------|----------------------|-----------------|
| $$\int_{x=a}^{b}\;\int_{y=l(x)}^{u(x)} f(x,y)\,dy\,dx$$ | $$\int_{y=l(a)}^{u(b)}\;\int_{x=l^{-1}(y)}^{u^{-1}(y)} f(x,y)\,dx\,dy$$ | 1. äußere Variable wechselt $x\to y$ <br> 2. **äußere Grenzen** = tiefster / höchster $y$-Wert des Gebiets (hier $l(a),u(b)$) <br> 3. **innere Grenzen** = Umkehrfunktionen der alten Kurven $l,u$ (links / rechts) |
| *(Spezialfall $l(x)=0$)* | | |
#### Idiotensicheres Beispiel
Gegeben
$$
\int_{x=a}^{b}\;\int_{y=0}^{x^{2}} f(x,y)\,dy\,dx
$$
➜ Tauschen
$$
\int_{y=0}^{b^{2}}\;\int_{x=\sqrt{y}}^{b} f(x,y)\,dx\,dy
$$
* drag-and-drop-Mapping:
* $0$ bleibt $0$ (äußere unten)
* $x^{2}$ → Umkehr $\sqrt{y}$ (innere links)
* $a,b$ bleiben Konstanten, landen als innere/rechte Grenze ($x=b$) und sorgen für $y$-Max $=b^{2}$
### Matrixpotenz $A^{15}$ idiotensicher
1. **Faktor ausrechnen**
$$A=\tfrac12\begin{pmatrix}\sqrt3&-1\\[2pt]1&\sqrt3\end{pmatrix}
=\begin{pmatrix}\tfrac{\sqrt3}{2}&-\tfrac12\\[4pt]\tfrac12&\tfrac{\sqrt3}{2}\end{pmatrix}$$
2. **Erkennen: Rotationsmatrix**
Form $\bigl(\!\begin{smallmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{smallmatrix}\!\bigr)$
⇒ $\cos\theta=\sqrt3/2,\ \sin\theta=1/2 \;\Longrightarrow\; \theta=\pi/6$ (30°).
3. **Potenzregel für Rotationsmatrizen**
$$A^n=\begin{pmatrix}\cos(n\theta)&-\sin(n\theta)\\\sin(n\theta)&\cos(n\theta)\end{pmatrix}$$
4. **Hier $n=15$**
$$n\theta=15\cdot\frac{\pi}{6}= \frac{5\pi}{2}=2\pi+\frac{\pi}{2}$$
(Rotation um $450^\circ$ ≙ $90^\circ$).
5. **Kosinus/Sinus auslesen**
$$\cos\!\bigl(\tfrac{\pi}{2}\bigr)=0,\qquad
\sin\!\bigl(\tfrac{\pi}{2}\bigr)=1.$$
6. **Ergebnis**
$$\boxed{A^{15}= \begin{pmatrix}0&-1\\[4pt]1&0\end{pmatrix}}$$
# WIP 7. c Vertauschen Integrationsreihenfolge
# WIP 7. b) Matrix Potenz
Diagonalmatrix oder Drehmatrix.
# 7. a) Komplexe Zahl Polarform gleichung
$$
z^{\,n}=R\,e^{i\Phi},\qquad R>0,\;n\in\mathbb N
$$
| Schritt | Was tun? | Formel / Erläuterung |
|---------|-----------|----------------------|
| **1. Polar-/Exponentialform herstellen** | Schreibe die rechte Seite als $R\,e^{i\Phi}$ mit Betrag $R$ und (Haupt-)Argument $\Phi$.<br>Falls sie in kartesischer Form $a+ib$ vorliegt: $$R=\sqrt{a^{2}+b^{2}},\qquad \Phi=\operatorname{atan2}(b,a).$$ |
| **2. n-te-Wurzel-Formel anwenden** | Für $$z^{n}=R\,e^{i\Phi}$$ lauten alle Lösungen $$z_k=\sqrt[n]{R}\,e^{\,i(\Phi+2k\pi)/n},\qquad k=0,1,\dots,n-1.$$ |
| **3. Winkel berechnen** | Definiere $$\theta_k=\frac{\Phi+2k\pi}{n}.$$ Diese $n$ Winkel liegen äquidistant auf dem Kreis (Abstand $2\pi/n$). |
| **4. Arithmetische (kartesische) Form** | Nutze Euler $e^{i\theta_k}=\cos\theta_k+i\sin\theta_k$:<br> $$z_k=\sqrt[n]{R}\,(\cos\theta_k+i\sin\theta_k).$$ |
| **5. (Optional) Prüfen** | Einsetzen zeigt $$z_k^{\,n}=R\,e^{i\Phi}.$$ |
#### Kurzform der Lösungsmengen-Formel
$$
\boxed{\,z_k=\sqrt[n]{R}\,e^{\,i(\Phi+2k\pi)/n},\;k=0,\dots,n-1\,}
$$
**Merke**
1. Betrag der Wurzeln: $\sqrt[n]{R}$.
2. Winkel: $\theta_k=\dfrac{\Phi+2k\pi}{n}$.
3. $n$ Lösungen liegen gleichmäßig verteilt auf einem Kreis mit Radius $\sqrt[n]{R}$.
# Vektorfelder
# Matrizen Eigenschaften
---
## Singular vs. Regulär
>Check: Deteminante berechnen
- **Singular** ⇔ $\det A=0$ → nicht invertierbar.
- **Regulär** ⇔ $\det A\neq0$ → Inverse $A^{-1}$ existiert.
---
## Diagonalmatrix
Matrix
$$
D=\begin{pmatrix}4&0&0\\0&-2&0\\0&0&7\end{pmatrix}
$$
Eigenschaften
- **Besteht typischerweise aus den Eigenwerten** einer Matrix entlang der Hauptdiagonalen, wenn man $A=PDP^{-1}$ diagonalisiert.
- Kommutiert mit jeder anderen Diagonalmatrix
- **Leicht zu potenzieren/invertieren**:
$D^k=\operatorname{diag}(4^k,-2^k,7^k)$,
$D^{-1}=\operatorname{diag}\!\bigl(\tfrac14,-\tfrac12,\tfrac17\bigr)$
- **Orthogonal** genau dann, wenn $|d_i|=1$ (dann $DD^\top=I$)
---
## Orthogonale Matrix
Matrix
$$
Q=\frac1{\sqrt2}\begin{pmatrix}1&-1\\1&1\end{pmatrix}
$$
Eigenschaften
- **$Q^\top Q=I$**, also $Q^{-1}=Q^\top$
- **Determinante = ±1**, erhält Länge & Winkel
---
## Rotationsmatrix (Ebene)
Matrix
$$
R(\theta)=\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}
$$
Eigenschaften
- Orthogonal mit **$\det=1$**
- **Potenzregel**: $R(\theta)^n=R(n\theta)$
---
## Nullmatrix
Matrix
$$
O_2=\begin{pmatrix}0&0\\0&0\end{pmatrix}
$$
Eigenschaften
- **Additives Neutrum**: $A+O=A$
- **Rang = 0**, **Spur = 0**
---
## Einheits-/Identitätsmatrix
Matrix
$$
I_2=\begin{pmatrix}1&0\\0&1\end{pmatrix}
$$
Eigenschaften
- **Multiplikatives Neutrum**: $AI_2=I_2A=A$
- **Eigenwerte alle 1**, $I_2^\top=I_2^{-1}=I_2$
---
## Skalarmatrix
Matrix
$$
2I_2=\begin{pmatrix}2&0\\0&2\end{pmatrix}
$$
Eigenschaften
- Spezialfall Diagonalmatrix, **alle Eigenwerte = 2**
- Orthogonal/unitär ⇔ $|2|=1$ (hier also **nicht** orthogonal)
---
## Symmetrische Matrix ( +Transformationsmatrix)
Matrix
$$
S=\begin{pmatrix}2&3&-1\\3&5&0\\-1&0&4\end{pmatrix}
$$
Eigenschaften
- $S^\top=S$
- **Reelle Eigenwerte**, **orthogonal diagonal­isierbar**:
$$S = Q\,D\,Q^\top$$
- **Transformationsmatrix** $Q$:
$$Q=\begin{pmatrix}v_1 & v_2 & v_3\end{pmatrix},$$
wobei $v_i$ die normierten Eigenvektoren von $S$ sind (Spalten von $Q$).
---
## Schiefsymmetrische Matrix
Matrix
$$
K=\begin{pmatrix}0&-2&1\\2&0&4\\-1&-4&0\end{pmatrix}
$$
Eigenschaften
- $K^\top=-K$, **Diagonale = 0**
- **Spur = 0**, Eigenwerte rein imaginär oder 0
---
## Projektionsmatrix (idempotent)
Matrix
$$
P=\begin{pmatrix}1&0\\0&0\end{pmatrix}
$$
Eigenschaften
- **$P^2=P$**, projiziert auf $x$-Achse
- Eigenwerte **0 oder 1**
---
## Involutorische Matrix
Matrix
$$
J=\begin{pmatrix}0&1\\1&0\end{pmatrix}
$$
Eigenschaften
- **$J^2=I$**, also $J^{-1}=J$
- Eigenwerte **±1** (tauscht Koordinaten­achsen)
---
## Nilpotente Matrix
Matrix
$$
N=\begin{pmatrix}0&1\\0&0\end{pmatrix}
\quad\text{mit}\quad N^2=O_2
$$
Eigenschaften
- **Alle Eigenwerte = 0**, Spur = 0
- $N^k=O$ für $k\ge2$
---
## Reflexionsmatrix (Householder-Typ)
Matrix (Spiegelung an $x$-Achse)
$$
H=\begin{pmatrix}1&0\\0&-1\end{pmatrix}
$$
Eigenschaften
- Orthogonal, **$H^2=I$**, $\det=-1$
- Spiegelt $y\to -y$
---
## Obere Dreiecksmatrix
Matrix
$$
U=\begin{pmatrix}3&-2&1\\0&5&4\\0&0&-1\end{pmatrix}
$$
Eigenschaften
- **$\det=\prod$ Diagonal = $3\cdot5\cdot(-1)=-15$**
- **Eigenwerte = Diagonalelemente** (hier 3, 5, 1)
---
## Positiv definite Matrix
Matrix
$$
A=\begin{pmatrix}2&1\\1&2\end{pmatrix}
$$
Eigenschaften
- **$x^\top A x>0$ für alle $x\neq0$**
- Alle Eigenwerte positiv (hier 1 und 3)
- **Cholesky-Zerlegung** existiert: $A=LL^\top$
# Formeln - Ableitung - Integration
### Potenz- und Wurzelfunktionen
| Funktion $f(x)$ | Stammfunktion $F(x)$ | | | |
| :--------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | --- | --- | --- |
| $0$ | $0$ | | | |
| $k \quad (k \in \mathbb{R})$ | $kx$ | | | |
| $$x^n$$ | $$F(x)=\begin{cases} \frac{1}{n+1}x^{n+1} & , \text{if}\quad \,n \neq -1,\\ \ln\lvert x\rvert, & ,\text{if}\quad n = -1. \end{cases}$$ | | | |
| $nx^{n-1}$ | $x^n$ | | | |
| $x$ | $\tfrac12 x^2$ | | | |
| $2x$ | $x^2$ | | | |
| $x^2$ | $\tfrac13 x^3$ | | | |
| $3x^2$ | $x^3$ | | | |
| $\sqrt{x}$ | $\tfrac23 x^{\tfrac32}$ | | | |
| $\sqrt[n]{x}$ | $\displaystyle \frac{n}{n+1},\bigl(\sqrt[n]{x}\bigr)^{n+1}\quad(n\neq -1)$ | | | |
| $\frac1{\sqrt{x}}$ | $2\sqrt{x}$ | | | |
| $\frac{1}{n,(\sqrt[n]{x^{,n-1}})}$ | $\sqrt[n]{x}$ | | | |
| $-\frac{2}{x^3}$ | $\frac{1}{x^2}$ | | | |
| $-\frac{1}{x^2}$ | $\frac{1}{x}$ | | | |
---
### Exponential- und Logarithmusfunktionen
| Funktion $f(x)$ | Stammfunktion $F(x)$ |
| :-----------------------------------------------------: | :----------------------------------------------------------------: |
| $\mathrm e^x$ | $\mathrm e^x$ |
| $\mathrm e^{kx}$ | $\displaystyle \frac{1}{k},\mathrm e^{kx}$ |
| $a^x\ln a \quad (a>0)$ | $a^x$ |
| $a^x$ | $\displaystyle \frac{a^x}{\ln a}$ |
| $x^x,(1+\ln x)$ | $x^x \quad (x>0)$ |
| $\mathrm e^{x\ln\lvert x\rvert},(\ln\lvert x\rvert +1)$ | $\lvert x\rvert^x = \mathrm e^{x\ln\lvert x\rvert}\quad (x\neq0)$ |
| $\frac{1}{x}$ | $\ln\lvert x\rvert$ Sonderfall von $x^n$ für $n=-1$, siehe oben |
| $\ln x$ | $x\ln x - x$ |
| $x^n\ln x$ | $\frac{x^{n+1}}{n+1}\Bigl(\ln x - \frac{1}{n+1}\Bigr)\quad(n\ge0)$ |
| $u'(x),\ln u(x)$ | $u(x)\ln u(x) - u(x)$ |
| $\displaystyle \frac{1}{x},\ln^{n}x\quad(n\neq -1)$ | $\displaystyle \frac{1}{n+1},\ln^{n+1}x$ |
| $\displaystyle \frac{1}{x},\ln x^n\quad(n\neq 0)$ | $\displaystyle \frac{1}{2n},\ln^2 x^n = \frac{n}{2}\ln^2 x$ |
| $\frac{1}{x}\,\frac{1}{\ln a}$ | $\log_a x$ |
| $\frac{1}{x\ln x}$ | $\displaystyle \ln\lvert\ln x\rvert\quad(x>0, \,x\neq1)$ |
| $\log_a x$ | $\displaystyle \frac{1}{\ln a}\,(x\ln x - x)$ |
---
## Trigonometrische Funktionen und Hyperbelfunktionen
### Trigonometrische Funktionen
| Funktion $f(x)$ | Stammfunktion $F(x)$ | | |
| :-------------------------------------: | :---------------------------------------------------------------------------------------: | --- | --- |
| $\sin x$ | $-\cos x$ | | |
| $\cos x$ | $\sin x$ | | |
| $\tan x = \frac{\sin x}{\cos x}$ | $\ln\bigl[\sec x\bigr]$ | | |
| $\cot x = \frac{\cos x}{\sin x}$ | $-\ln\bigl[\csc x\bigr]$ | | |
| $\sec x = \frac1{\cos x}$ | $\operatorname{artanh}[\sin x]$ | | |
| $\csc x = \frac1{\sin x}$ | $-\operatorname{artanh}[\cos x]$ | | |
| $\sec^2 x = 1+\tan^2 x$ | $\tan x$ | | |
| $-\csc^2 x = -\bigl(1+\cot^2 x\bigr)$ | $\cot x$ | | |
| $\sin^2 x$ | $\frac{1}{2}[xsinx\,cosx]=\frac{1}{2}x \frac{1}{4} sin(2x)$ | | |
| $\cos^2 x$ | $\frac{1}{2}[x+sinx\,cosx]=\frac{1}{2}x+ \frac{1}{4} sin(2x)$ | | |
| $\sin(kx)\cos(kx)$ | $-\displaystyle \frac{1}{4k}\cos(2kx)$ | | |
| $\sin(kx)\cos(kx)$ | $\displaystyle \frac{1}{2k}\sin^2(kx)$ | | |
| $\displaystyle \frac{\sin(ax)}{e^{bx}}$ | $\displaystyle \frac{a\,e^{bx} - a\cos(ax) - b\sin(ax)}{(a^2+b^2)\,e^{bx}}$ | | |
| $\displaystyle \frac{\cos(ax)}{e^{bx}}$ | $\displaystyle \frac{a\sin(ax) - b\cos(ax) + b\,e^{bx}}{(a^2+b^2)\,e^{bx}}$ | | |
| $\arcsin x$ | $x\arcsin x + \sqrt{1-x^2}$ | | |
| $\arccos x$ | $x\arccos x - \sqrt{1-x^2}$ | | |
| $\arctan x$ | $x\arctan x - \tfrac12\ln\bigl(1+x^2\bigr)$ | | |
| $\arccot x$ | $x\arccot x + \tfrac12\ln\bigl(1+x^2\bigr)$ | | |
| $\displaystyle \frac{1}{\sqrt{1-x^2}}$ | $\arcsin x$ | | |
| $\displaystyle \frac{-1}{\sqrt{1-x^2}}$ | $\arccos x$ | | |
| $\displaystyle \frac{1}{x^2+1}$ | $\arctan x$ | | |
| $\displaystyle -\frac{1}{x^2+1}$ | $\arccot x$ | | |
| $\displaystyle \frac{x^2}{x^2+1}$ | $x - \arctan x$ | | |
| $\displaystyle \frac{1}{(x^2+1)^2}$ | $\displaystyle \tfrac12\Bigl(\frac{x}{x^2+1} + \arctan x\Bigr)$ | | |
| $\sqrt{a^2 - x^2}$ | $\displaystyle \frac{a^2}{2}\arcsin\Bigl(\frac{x}{a}\Bigr) + \frac{x}{2}\sqrt{a^2 - x^2}$ | | |
| $\displaystyle \frac{1}{ax^2+bx+c}$ | $\frac{2}{\sqrt{4ac - b^2}}\;\arctan\!\Bigl(\frac{2ax + b}{\sqrt{4ac - b^2}}\Bigr)$ | | |
### Hyperbelfunktionen
| Funktion $f(x)$ | Stammfunktion $F(x)$ |
| :----------------------------------------------------: | :-------------------------------------------------------------------------------------------------------: |
| $\sinh x$ | $\cosh x$ |
| $\cosh x$ | $\sinh x$ |
| $\tanh x$ | $\ln\bigl[\cosh x\bigr]$ |
| $\coth x$ | $\ln\lvert\sinh x\rvert$ |
| $\operatorname{sech} x$ | $\operatorname{gd} x = \arctan[\sinh x]$ |
| $\operatorname{csch} x$ | $-\operatorname{arcoth}[\cosh x]$ |
| $\displaystyle \frac{1}{\cosh^2 x} = 1-\tanh^2 x$ | $\tanh x$ |
| $\displaystyle \frac{-1}{\sinh^2 x} = 1-\coth^2 x$ | $\coth x$ |
| $\operatorname{arsinh} x$ | $x\,\operatorname{arsinh} x - \sqrt{x^2+1}$ |
| $\operatorname{arcosh} x$ | $x\,\operatorname{arcosh} x - \sqrt{x^2-1}$ |
| $\operatorname{artanh} x$ | $x\,\operatorname{artanh} x + \tfrac12\ln\bigl(1-x^2\bigr)$ |
| $\operatorname{arcoth} x$ | $x\,\operatorname{arcoth} x + \tfrac12\ln\bigl(x^2-1\bigr)$ |
| $\displaystyle \frac{1}{\sqrt{x^2+1}}$ | $\operatorname{arsinh} x$ |
| $\displaystyle \frac{1}{\sqrt{x^2-1}}\quad(x>1)$ | $\operatorname{arcosh} x$ |
| $\sqrt{a^2 + x^2}$ | $\displaystyle \frac{a^2}{2}\,\operatorname{arsinh}\Bigl(\frac{x}{a}\Bigr) + \frac{x}{2}\sqrt{a^2 + x^2}$ |
| $\displaystyle \frac{1}{\sqrt{ax^2+bx+c}}$ | $\displaystyle \frac{1}{\sqrt{a}}\operatorname{arsinh}\Bigl(\frac{2ax + b}{\sqrt{4ac - b^2}}\Bigr)$ |
| $\displaystyle \frac{1}{1-x^2}\quad(\lvert x\rvert<1)$ | $\operatorname{artanh} x$ |
| $\displaystyle \frac{1}{1-x^2}\quad(\lvert x\rvert>1)$ | $\operatorname{arcoth} x$ |
# Regeln - Ableiten
### Produktregel
$$u(x) \cdot v(x) \Longrightarrow u'v + u\,v'$$
### Quotientenregel
$$\frac{u(x)}{v(x)} \Longrightarrow \frac{u'v + u\,v'}{v^2}$$
### Kettenregel
Äußere Funktion abgeleitet, mal innere Funktion abgeleitet.
$$u[v(x)] \Longrightarrow u'[v(x)] \cdot v'(x)$$
# Regeln - Integrieren
### Partielle Integration
>**Idee**:
>Ein Teil herausziehen, dass später etwas Integrierbares herauskommt. $u$ wird abgeleitet. $v$ wird integriert.
$$
\int{u \, v} \Longrightarrow u\, V - \int{V\, u' \,dx}
$$
### U-Substitution
Substituieren:
$$\int{\frac{1}{u'}u}\, du$$
> **Wichtig:**
> 1/Ableitung von u, muss sich mit dem Variablen Faktor vorne kürzen. Also es darf bei $du$ kein $x$ mehr übrig bleiben.
> Beispiel:
> $$\int{\frac{1}{x}}2x\cdot u \, \, du \longrightarrow \int{2u} \,\,du$$

54
notes/Komplexe Zahlen.md Normal file
View File

@ -0,0 +1,54 @@
# Komplexe Zahlen
## Eulersche Gleichung & Formel
Die Eulersche Gleichung lautet:
$$e^{i\varphi} = \cos(\varphi) + i\sin(\varphi)$$
Daraus folgt die Darstellung einer komplexen Zahl in Exponentialform:
$$z = r \Bigl(\cos(\varphi) + i\sin(\varphi)\Bigr) = r \cdot e^{i\varphi}$$
> **Exponentialform:**
$$z = r \cdot e^{i(\varphi + 2\pi k)}$$
### Beispiel: Arithmetische in Exponentialform
Für die arithmetische Darstellung:
$$z = -2 + 2i$$
Berechnung des Betrags:
$$r = |z| = \sqrt{(-2)^2 + 2^2} = \sqrt{8}$$
Berechnung des Winkels:
$$\varphi = \arctan\left(\frac{2}{-2}\right) + \pi = \frac{3\pi}{4}$$
Somit ergibt sich:
$$z = \sqrt{8} \cdot e^{i\frac{3\pi}{4}}$$
## Multiplikation
Gegeben sind:
$$z_1 = 2 \cdot e^{i\frac{\pi}{6}}$$
$$z_2 = 3 \cdot e^{i\frac{4\pi}{3}}$$
Multiplikation:
$$z_1 \cdot z_2 = 2 \cdot 3 \cdot e^{i\left(\frac{\pi}{6} + \frac{4\pi}{3}\right)} = 6 \cdot e^{i\frac{3\pi}{2}}$$
### Division
Gegeben:
$$z_1 = 2 \cdot e^{i\frac{\pi}{6}}$$
$$z_2 = 3 \cdot e^{i\frac{4\pi}{3}}$$
Division:
$$\frac{z_1}{z_2} = \frac{2}{3} \cdot e^{i\left(\frac{\pi}{6} - \frac{4\pi}{3}\right)} = \frac{2}{3} \cdot e^{-i\frac{7\pi}{6}} = \frac{2}{3} \cdot e^{i\frac{5\pi}{6}}$$
#### Umwandeln in Arithmetische Form
$$\frac{2}{3} \cdot e^{i\frac{5\pi}{6}} = \frac{2}{3} \cdot \Bigl(\cos\left(\frac{5\pi}{6}\right) + i \sin\left(\frac{5\pi}{6}\right)\Bigr)$$
**Bemerkungen:**
- $|e^{i\varphi}| =\sqrt{\cos^2(\varphi) + \sin^2(\varphi)} = 1$
- $e^{i \ 0} = 1 = e^{i 2k\pi}$
- $e^{i\pi} = -1$
- $\sinh(i x) = \sin x$
- $\cosh(i x) = \cos x$
### Potenzieren

52
notes/Matrizen.md Normal file
View File

@ -0,0 +1,52 @@
**Menge der Matrizen**:
- $\mathbb{M}(m, n, \mathbb{R}) = \mathbb{R}^{m\times n}$
> **Anwendungen**:
> - Beschreibung linearer Gleichungssysteme
> - Lineare Abbildungen zwischen Vektorräumen
> - Transformationen in der Geometrie (z.B. Drehungen, Spiegelungen, Skalierungen)
> - Darstellung von Netzwerken oder Graphen
> - Datenrepräsentation in maschinellem Lernen und Statistik
---
## Zeilen, Spaltenvektoren
- Eine Matrix $A \in \mathbb{R}^{m \times n}$ besteht aus $m$ Zeilen und $n$ Spalten.
- Zeilenvektoren: $A_{i*} \in \mathbb{R}^{1 \times n}$
- Spaltenvektoren: $A_{*j} \in \mathbb{R}^{m \times 1}$
- Jeder Eintrag $a_{ij}$ steht an der Kreuzung von Zeile $i$ und Spalte $j$.
---
## Transponieren
- Zeilen- und Spaltenindex vertauschen:
$$ A \longrightarrow A^T $$
$$(A^T)^T = A$$
- Eigenschaften:
- $(A + B)^T = A^T + B^T$
- $(\lambda A)^T = \lambda A^T$ für $\lambda \in \mathbb{R}$
- $(AB)^T = B^T A^T$
---
## Matrizenmultiplikation
- Definition: $(AB)_{ij} = \sum_{k=1}^{n} a_{ik} b_{kj}$
- Voraussetzung: Spaltenanzahl von $A$ muss gleich der Zeilenanzahl von $B$ sein
$$(A \in \mathbb{R}^{m \times n},\ B \in \mathbb{R}^{n \times p}) \Rightarrow AB \in \mathbb{R}^{m \times p}$$
- **Shape des Outputs**: $m_A \times n_B$
- **Eigenschaften**:
- Assoziativ: $A(BC) = (AB)C$
- Distributiv: $A(B + C) = AB + AC$
- Im Allgemeinen **nicht kommutativ**: $AB \neq BA$

6
notes/Prompts.md Normal file
View File

@ -0,0 +1,6 @@
## Für Aufgaben
1. Wie berechnet man das? Schritt für schritt
2. Bitte einmal das Schema allgemein Formuliert. Also für aufgaben in dem Format.
3. Kannst du mir den Hintergrund erklären, was wir hier berechnen und wie man sich das ganze Vorstellen kann?
4. Ok, das Allgemeine Schema jetzt bitte als Markdown code, mit dollar als inline latex delimiter anstatt \( \) und zwei dollar für multiline/block anstatt \[ \] (Katex)

107
notes/Vektorfelder.md Normal file
View File

@ -0,0 +1,107 @@
**Menge der Vektorfelder**
Für eine offene Teilmenge $U\subseteq \mathbb{R}^n$ bezeichnet
$$
\mathfrak{X}(U) = \{\,F : U \to \mathbb{R}^n \mid F \text{ ist (stetig) differenzierbar}\}.
$$
> **Anwendungen**
> - Beschreibung von Strömungsfeldern in Fluiddynamik
> - Elektromagnetische Felder (Maxwell-Gleichungen)
> - Kraftfelder in der Mechanik
> - Computergrafik: Beleuchtung und Verformung
> - Kontinuumsmechanik und Materialwissenschaften
---
## Definition und Notation
Ein Vektorfeld $F\in\mathfrak{X}(U)$ schreibt man komponentenweise:
$$
F(x) = \bigl(F_1(x),\,F_2(x),\,\dots,\,F_n(x)\bigr),\quad x\in U.
$$
Jeder $F_i$ ist eine skalare Funktion $F_i:U\to\mathbb{R}$.
Für $n=3$ oft:
$$
F = F_x\,\mathbf{i} + F_y\,\mathbf{j} + F_z\,\mathbf{k}.
$$
---
## Lineare Operationen
- **Addition**:
$$
(F + G)(x) = F(x) + G(x).
$$
- **Skalarmultiplikation** ($\lambda\in\mathbb{R}$):
$$
(\lambda F)(x) = \lambda\,F(x).
$$
$\mathfrak{X}(U)$ ist damit ein Vektorraum.
---
## Differentialoperatoren
- **Gradient** (für Skalarfeld $\phi:U\to\mathbb{R}$):
$$
\nabla\phi = \bigl(\tfrac{\partial\phi}{\partial x_1},\dots,\tfrac{\partial\phi}{\partial x_n}\bigr).
$$
- **Divergenz** (für $F\in\mathfrak{X}(U)$):
$$
\mathrm{div}\,F = \nabla\cdot F
= \sum_{i=1}^n \frac{\partial F_i}{\partial x_i}.
$$
- **Rotation** / **Wirbel** ($\mathbb{R}^3$):
$$
\nabla\times F
= \bigl(\tfrac{\partial F_z}{\partial y}-\tfrac{\partial F_y}{\partial z},\;
\tfrac{\partial F_x}{\partial z}-\tfrac{\partial F_z}{\partial x},\;
\tfrac{\partial F_y}{\partial x}-\tfrac{\partial F_x}{\partial y}\bigr).
$$
- **Laplacian** (auf Skalarfeld $\phi$):
$$
\Delta \phi = \nabla\cdot(\nabla\phi)
= \sum_{i=1}^n \frac{\partial^2 \phi}{\partial x_i^2}.
$$
---
## Integrale und klassische Sätze
- **Linien­integral** entlang einer Kurve $C$ mit Parametrisierung $\gamma(t)$:
$$
\int_C F\cdot \mathrm{d}r
= \int_a^b F\bigl(\gamma(t)\bigr)\cdot \gamma'(t)\,\mathrm{d}t.
$$
- **Fluss** durch eine Fläche $S$:
$$
\Phi = \iint_S F\cdot \mathrm{d}S
= \iint_D F\bigl(\mathbf{r}(u,v)\bigr)\cdot\bigl(\mathbf{r}_u\times\mathbf{r}_v\bigr)\,\mathrm{d}u\,\mathrm{d}v.
$$
- **Greenscher Satz** ($\mathbb{R}^2$):
$$
\oint_{\partial D} P\,\mathrm{d}x + Q\,\mathrm{d}y
= \iint_D \bigl(\tfrac{\partial Q}{\partial x} - \tfrac{\partial P}{\partial y}\bigr)\,\mathrm{d}A.
$$
- **Divergenzsatz** (Gauß):
$$
\iint_{\partial V} F\cdot \mathrm{d}S
= \iiint_V \mathrm{div}\,F\,\mathrm{d}V.
$$
- **Stokes Theorem** ($\mathbb{R}^3$):
$$
\oint_{\partial S} F\cdot \mathrm{d}r
= \iint_S (\nabla\times F)\cdot \mathrm{d}S.
$$
---
## Spezielle Feldtypen
- **Konservatives Feld**: $\exists\,\phi$ mit $F=\nabla\phi$
$\Longrightarrow$ curl $F=0$ und Linienintegral nur von Endpunkten abhängig.
- **Solenoidales Feld**: $\mathrm{div}\,F=0$
$\Longrightarrow$ kein Netto-Fluss durch geschlossene Oberfläche.
- **Potentialfeld**: Synonym zu konservativem Feld in Mechanik/Elektrostatik.
- **Wirbelfreies Feld**: curl $F=0$.

27
notes/Zusammenfassung.md Normal file
View File

@ -0,0 +1,27 @@
# 1.1 Gleitkommaarithmetik
- Reele Zahlen in der Informatik
- Hauptproblem: **Auslöschung**
**Symbolik**:
- Simpy
- Wolfram Alpha
- Brüche
# 1.2 Fixpunkt Iteration
**Fixpunkt**:
Funktionen:
>Ein Fixpunkt ist ein punkt an dem x = y
**Stabilisator (i.e. Fixpunkt einer rekursiven Folge)**:
> In einer Folge würde dieser *einrasten*, das heisst das nächste Folgeglied ist gleich dem aktuellen. Sie steckt fest.
$$f(x) = x$$
**Aussagen**:
- Grenzwert $\implies$ Fixpunkt.
- Fixpunkt $\centernot\implies$ Grenzwert.
- Kein Stabilisator? $\implies$ Divergiert
- Stabilisator $\centernot\implies$ Konvergent

11
pyproject.toml Normal file
View File

@ -0,0 +1,11 @@
[project]
name = "cds402-mathematics-ii"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
"imageio>=2.37.0",
"matplotlib>=3.10.3",
"numpy>=2.2.5",
"pandas>=2.2.3",
"plotly>=6.1.0",
]

392
uv.lock generated Normal file
View File

@ -0,0 +1,392 @@
version = 1
revision = 1
requires-python = ">=3.12"
[[package]]
name = "cds402-mathematics-ii"
version = "0.1.0"
source = { virtual = "." }
dependencies = [
{ name = "imageio" },
{ name = "matplotlib" },
{ name = "numpy" },
{ name = "pandas" },
{ name = "plotly" },
]
[package.metadata]
requires-dist = [
{ name = "imageio", specifier = ">=2.37.0" },
{ name = "matplotlib", specifier = ">=3.10.3" },
{ name = "numpy", specifier = ">=2.2.5" },
{ name = "pandas", specifier = ">=2.2.3" },
{ name = "plotly", specifier = ">=6.1.0" },
]
[[package]]
name = "contourpy"
version = "1.3.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
]
sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 },
{ url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 },
{ url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 },
{ url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 },
{ url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 },
{ url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 },
{ url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 },
{ url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 },
{ url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 },
{ url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 },
{ url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630 },
{ url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670 },
{ url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694 },
{ url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986 },
{ url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060 },
{ url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747 },
{ url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895 },
{ url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098 },
{ url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535 },
{ url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096 },
{ url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090 },
{ url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643 },
{ url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443 },
{ url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865 },
{ url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162 },
{ url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355 },
{ url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935 },
{ url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168 },
{ url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550 },
{ url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214 },
]
[[package]]
name = "cycler"
version = "0.12.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 },
]
[[package]]
name = "fonttools"
version = "4.58.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502 },
{ url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214 },
{ url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136 },
{ url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598 },
{ url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256 },
{ url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710 },
{ url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593 },
{ url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230 },
{ url = "https://files.pythonhosted.org/packages/0c/d7/d77cae11c445916d767cace93ba8283b3f360197d95d7470b90a9e984e10/fonttools-4.58.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:4809790f2371d8a08e59e1ce2b734c954cf09742e75642d7f4c46cfdac488fdd", size = 2728320 },
{ url = "https://files.pythonhosted.org/packages/77/48/7d8b3c519ef4b48081d40310262224a38785e39a8610ccb92a229a6f085d/fonttools-4.58.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b00f240280f204ce4546b05ff3515bf8ff47a9cae914c718490025ea2bb9b324", size = 2302570 },
{ url = "https://files.pythonhosted.org/packages/2c/48/156b83eb8fb7261056e448bfda1b495b90e761b28ec23cee10e3e19f1967/fonttools-4.58.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a62015ad463e1925544e9159dd6eefe33ebfb80938d5ab15d8b1c4b354ff47b", size = 4790066 },
{ url = "https://files.pythonhosted.org/packages/60/49/aaecb1b3cea2b9b9c7cea6240d6bc8090feb5489a6fbf93cb68003be979b/fonttools-4.58.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ceef6f6ab58061a811967e3e32e630747fcb823dcc33a9a2c80e2d0d17cb292", size = 4861076 },
{ url = "https://files.pythonhosted.org/packages/dc/c8/97cbb41bee81ea9daf6109e0f3f70a274a3c69418e5ac6b0193f5dacf506/fonttools-4.58.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c7be21ac52370b515cdbdd0f400803fd29432a4fa4ddb4244ac8b322e54f36c0", size = 4858394 },
{ url = "https://files.pythonhosted.org/packages/4d/23/c2c231457361f869a7d7374a557208e303b469d48a4a697c0fb249733ea1/fonttools-4.58.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:85836be4c3c4aacf6fcb7a6f263896d0e9ce431da9fa6fe9213d70f221f131c9", size = 5002160 },
{ url = "https://files.pythonhosted.org/packages/a9/e0/c2262f941a43b810c5c192db94b5d1ce8eda91bec2757f7e2416398f4072/fonttools-4.58.0-cp313-cp313-win32.whl", hash = "sha256:2b32b7130277bd742cb8c4379a6a303963597d22adea77a940343f3eadbcaa4c", size = 2171919 },
{ url = "https://files.pythonhosted.org/packages/8f/ee/e4aa7bb4ce510ad57a808d321df1bbed1eeb6e1dfb20aaee1a5d9c076849/fonttools-4.58.0-cp313-cp313-win_amd64.whl", hash = "sha256:75e68ee2ec9aaa173cf5e33f243da1d51d653d5e25090f2722bc644a78db0f1a", size = 2222972 },
{ url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440 },
]
[[package]]
name = "imageio"
version = "2.37.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
{ name = "pillow" },
]
sdist = { url = "https://files.pythonhosted.org/packages/0c/47/57e897fb7094afb2d26e8b2e4af9a45c7cf1a405acdeeca001fdf2c98501/imageio-2.37.0.tar.gz", hash = "sha256:71b57b3669666272c818497aebba2b4c5f20d5b37c81720e5e1a56d59c492996", size = 389963 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/cb/bd/b394387b598ed84d8d0fa90611a90bee0adc2021820ad5729f7ced74a8e2/imageio-2.37.0-py3-none-any.whl", hash = "sha256:11efa15b87bc7871b61590326b2d635439acc321cf7f8ce996f812543ce10eed", size = 315796 },
]
[[package]]
name = "kiwisolver"
version = "1.4.8"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 },
{ url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 },
{ url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 },
{ url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 },
{ url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 },
{ url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 },
{ url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 },
{ url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 },
{ url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 },
{ url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 },
{ url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 },
{ url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 },
{ url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 },
{ url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 },
{ url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 },
{ url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156 },
{ url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555 },
{ url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071 },
{ url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053 },
{ url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278 },
{ url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139 },
{ url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517 },
{ url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952 },
{ url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132 },
{ url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997 },
{ url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060 },
{ url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471 },
{ url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793 },
{ url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855 },
{ url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430 },
{ url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294 },
{ url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736 },
{ url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194 },
{ url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942 },
{ url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341 },
{ url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455 },
{ url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138 },
{ url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857 },
{ url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129 },
{ url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538 },
{ url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 },
{ url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 },
{ url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 },
]
[[package]]
name = "matplotlib"
version = "3.10.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "contourpy" },
{ name = "cycler" },
{ name = "fonttools" },
{ name = "kiwisolver" },
{ name = "numpy" },
{ name = "packaging" },
{ name = "pillow" },
{ name = "pyparsing" },
{ name = "python-dateutil" },
]
sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 },
{ url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 },
{ url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 },
{ url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 },
{ url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 },
{ url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 },
{ url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318 },
{ url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132 },
{ url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633 },
{ url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031 },
{ url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988 },
{ url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034 },
{ url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223 },
{ url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985 },
{ url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109 },
{ url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082 },
{ url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699 },
{ url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044 },
]
[[package]]
name = "narwhals"
version = "1.39.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/56/e6/66682dd5ffe656358e07194fa9551b1d41e33952831a40553e791dd98dfc/narwhals-1.39.1.tar.gz", hash = "sha256:cf15389e6f8c5321e8cd0ca8b5bace3b1aea5f5622fa59dfd64821998741d836", size = 484444 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/70/c4/b83520ecc27840a4d58bd585ae0ec0f8a4f2b0c5a965b66749254a54de0e/narwhals-1.39.1-py3-none-any.whl", hash = "sha256:68d0f29c760f1a9419ada537f35f21ff202b0be1419e6d22135a0352c6d96deb", size = 355009 },
]
[[package]]
name = "numpy"
version = "2.2.5"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/dc/b2/ce4b867d8cd9c0ee84938ae1e6a6f7926ebf928c9090d036fc3c6a04f946/numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291", size = 20273920 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e2/f7/1fd4ff108cd9d7ef929b8882692e23665dc9c23feecafbb9c6b80f4ec583/numpy-2.2.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ee461a4eaab4f165b68780a6a1af95fb23a29932be7569b9fab666c407969051", size = 20948633 },
{ url = "https://files.pythonhosted.org/packages/12/03/d443c278348371b20d830af155ff2079acad6a9e60279fac2b41dbbb73d8/numpy-2.2.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ec31367fd6a255dc8de4772bd1658c3e926d8e860a0b6e922b615e532d320ddc", size = 14176123 },
{ url = "https://files.pythonhosted.org/packages/2b/0b/5ca264641d0e7b14393313304da48b225d15d471250376f3fbdb1a2be603/numpy-2.2.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:47834cde750d3c9f4e52c6ca28a7361859fcaf52695c7dc3cc1a720b8922683e", size = 5163817 },
{ url = "https://files.pythonhosted.org/packages/04/b3/d522672b9e3d28e26e1613de7675b441bbd1eaca75db95680635dd158c67/numpy-2.2.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:2c1a1c6ccce4022383583a6ded7bbcda22fc635eb4eb1e0a053336425ed36dfa", size = 6698066 },
{ url = "https://files.pythonhosted.org/packages/a0/93/0f7a75c1ff02d4b76df35079676b3b2719fcdfb39abdf44c8b33f43ef37d/numpy-2.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d75f338f5f79ee23548b03d801d28a505198297534f62416391857ea0479571", size = 14087277 },
{ url = "https://files.pythonhosted.org/packages/b0/d9/7c338b923c53d431bc837b5b787052fef9ae68a56fe91e325aac0d48226e/numpy-2.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a801fef99668f309b88640e28d261991bfad9617c27beda4a3aec4f217ea073", size = 16135742 },
{ url = "https://files.pythonhosted.org/packages/2d/10/4dec9184a5d74ba9867c6f7d1e9f2e0fb5fe96ff2bf50bb6f342d64f2003/numpy-2.2.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:abe38cd8381245a7f49967a6010e77dbf3680bd3627c0fe4362dd693b404c7f8", size = 15581825 },
{ url = "https://files.pythonhosted.org/packages/80/1f/2b6fcd636e848053f5b57712a7d1880b1565eec35a637fdfd0a30d5e738d/numpy-2.2.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a0ac90e46fdb5649ab6369d1ab6104bfe5854ab19b645bf5cda0127a13034ae", size = 17899600 },
{ url = "https://files.pythonhosted.org/packages/ec/87/36801f4dc2623d76a0a3835975524a84bd2b18fe0f8835d45c8eae2f9ff2/numpy-2.2.5-cp312-cp312-win32.whl", hash = "sha256:0cd48122a6b7eab8f06404805b1bd5856200e3ed6f8a1b9a194f9d9054631beb", size = 6312626 },
{ url = "https://files.pythonhosted.org/packages/8b/09/4ffb4d6cfe7ca6707336187951992bd8a8b9142cf345d87ab858d2d7636a/numpy-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:ced69262a8278547e63409b2653b372bf4baff0870c57efa76c5703fd6543282", size = 12645715 },
{ url = "https://files.pythonhosted.org/packages/e2/a0/0aa7f0f4509a2e07bd7a509042967c2fab635690d4f48c6c7b3afd4f448c/numpy-2.2.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4", size = 20935102 },
{ url = "https://files.pythonhosted.org/packages/7e/e4/a6a9f4537542912ec513185396fce52cdd45bdcf3e9d921ab02a93ca5aa9/numpy-2.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f", size = 14191709 },
{ url = "https://files.pythonhosted.org/packages/be/65/72f3186b6050bbfe9c43cb81f9df59ae63603491d36179cf7a7c8d216758/numpy-2.2.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9", size = 5149173 },
{ url = "https://files.pythonhosted.org/packages/e5/e9/83e7a9432378dde5802651307ae5e9ea07bb72b416728202218cd4da2801/numpy-2.2.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191", size = 6684502 },
{ url = "https://files.pythonhosted.org/packages/ea/27/b80da6c762394c8ee516b74c1f686fcd16c8f23b14de57ba0cad7349d1d2/numpy-2.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372", size = 14084417 },
{ url = "https://files.pythonhosted.org/packages/aa/fc/ebfd32c3e124e6a1043e19c0ab0769818aa69050ce5589b63d05ff185526/numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d", size = 16133807 },
{ url = "https://files.pythonhosted.org/packages/bf/9b/4cc171a0acbe4666f7775cfd21d4eb6bb1d36d3a0431f48a73e9212d2278/numpy-2.2.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7", size = 15575611 },
{ url = "https://files.pythonhosted.org/packages/a3/45/40f4135341850df48f8edcf949cf47b523c404b712774f8855a64c96ef29/numpy-2.2.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73", size = 17895747 },
{ url = "https://files.pythonhosted.org/packages/f8/4c/b32a17a46f0ffbde8cc82df6d3daeaf4f552e346df143e1b188a701a8f09/numpy-2.2.5-cp313-cp313-win32.whl", hash = "sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b", size = 6309594 },
{ url = "https://files.pythonhosted.org/packages/13/ae/72e6276feb9ef06787365b05915bfdb057d01fceb4a43cb80978e518d79b/numpy-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471", size = 12638356 },
{ url = "https://files.pythonhosted.org/packages/79/56/be8b85a9f2adb688e7ded6324e20149a03541d2b3297c3ffc1a73f46dedb/numpy-2.2.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6", size = 20963778 },
{ url = "https://files.pythonhosted.org/packages/ff/77/19c5e62d55bff507a18c3cdff82e94fe174957bad25860a991cac719d3ab/numpy-2.2.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba", size = 14207279 },
{ url = "https://files.pythonhosted.org/packages/75/22/aa11f22dc11ff4ffe4e849d9b63bbe8d4ac6d5fae85ddaa67dfe43be3e76/numpy-2.2.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133", size = 5199247 },
{ url = "https://files.pythonhosted.org/packages/4f/6c/12d5e760fc62c08eded0394f62039f5a9857f758312bf01632a81d841459/numpy-2.2.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376", size = 6711087 },
{ url = "https://files.pythonhosted.org/packages/ef/94/ece8280cf4218b2bee5cec9567629e61e51b4be501e5c6840ceb593db945/numpy-2.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19", size = 14059964 },
{ url = "https://files.pythonhosted.org/packages/39/41/c5377dac0514aaeec69115830a39d905b1882819c8e65d97fc60e177e19e/numpy-2.2.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0", size = 16121214 },
{ url = "https://files.pythonhosted.org/packages/db/54/3b9f89a943257bc8e187145c6bc0eb8e3d615655f7b14e9b490b053e8149/numpy-2.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a", size = 15575788 },
{ url = "https://files.pythonhosted.org/packages/b1/c4/2e407e85df35b29f79945751b8f8e671057a13a376497d7fb2151ba0d290/numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066", size = 17893672 },
{ url = "https://files.pythonhosted.org/packages/29/7e/d0b44e129d038dba453f00d0e29ebd6eaf2f06055d72b95b9947998aca14/numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e", size = 6377102 },
{ url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 },
]
[[package]]
name = "packaging"
version = "25.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 },
]
[[package]]
name = "pandas"
version = "2.2.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
{ name = "python-dateutil" },
{ name = "pytz" },
{ name = "tzdata" },
]
sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 },
{ url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 },
{ url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 },
{ url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 },
{ url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 },
{ url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 },
{ url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 },
{ url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 },
{ url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 },
{ url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 },
{ url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 },
{ url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 },
{ url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 },
{ url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 },
{ url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 },
{ url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 },
{ url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 },
{ url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 },
{ url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 },
{ url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 },
]
[[package]]
name = "pillow"
version = "11.2.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 },
{ url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 },
{ url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 },
{ url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 },
{ url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 },
{ url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 },
{ url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 },
{ url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 },
{ url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 },
{ url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 },
{ url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 },
{ url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098 },
{ url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166 },
{ url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674 },
{ url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005 },
{ url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707 },
{ url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008 },
{ url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420 },
{ url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655 },
{ url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329 },
{ url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388 },
{ url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950 },
{ url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759 },
{ url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284 },
{ url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826 },
{ url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329 },
{ url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049 },
{ url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408 },
{ url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863 },
{ url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938 },
{ url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774 },
{ url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895 },
{ url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234 },
]
[[package]]
name = "plotly"
version = "6.1.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "narwhals" },
{ name = "packaging" },
]
sdist = { url = "https://files.pythonhosted.org/packages/a9/e3/66eabba0b35095027e1ae5cb2e091cd168d44362242b5496baac9a460697/plotly-6.1.0.tar.gz", hash = "sha256:f13f497ccc2d97f06f771a30b27fab0cbd220f2975865f4ecbc75057135521de", size = 7545417 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/ee/11/83ae52318353f9da4a88cc23e7f9dbc3d449b3f0fd6158fba15eb3c3b816/plotly-6.1.0-py3-none-any.whl", hash = "sha256:a29d3ed523c9d7960095693af1ee52689830df0f9c6bae3e5e92c20c4f5684c3", size = 16118476 },
]
[[package]]
name = "pyparsing"
version = "3.2.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 },
]
[[package]]
name = "python-dateutil"
version = "2.9.0.post0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "six" },
]
sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
]
[[package]]
name = "pytz"
version = "2025.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 },
]
[[package]]
name = "six"
version = "1.17.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
]
[[package]]
name = "tzdata"
version = "2025.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 },
]