mirror of
https://gitlab.gwdg.de/j.hahn02/university.git
synced 2026-01-01 06:44:25 -05:00
104 lines
3.4 KiB
Typst
104 lines
3.4 KiB
Typst
// Main VL template
|
|
#import "../preamble.typ": *
|
|
|
|
// Fix theorems to be shown the right way in this document
|
|
#import "@preview/ctheorems:1.1.3": *
|
|
#show: thmrules
|
|
|
|
// Main settings call
|
|
#show: conf.with(
|
|
// May add more flags here in the future
|
|
num: 4,
|
|
type: 0, // 0 normal, 1 exercise
|
|
date: datetime.today().display(),
|
|
//date: datetime(
|
|
// year: 2025,
|
|
// month: 5,
|
|
// day: 1,
|
|
//).display(),
|
|
)
|
|
|
|
= Stabilitaet des Euleralgorithmus im harmonischen Oszillator
|
|
|
|
Aussagen ueber die Langazeitstabilitaet.
|
|
|
|
Beispiel fuer Stabilitaet ist die gedaempfte harmonische Schwingung.
|
|
|
|
$
|
|
dot.double(y) + gamma dot(y) + omega_0^2 y = 0.
|
|
$
|
|
|
|
Auf dieses System kann wieder der Euler-Algorithmus angewendet werden.
|
|
|
|
Dabei propagiert der Fehler mit $arrow(e) (t + Delta t)$
|
|
|
|
$
|
|
(dif T) / (dif e) = mat(
|
|
1, Delta t;
|
|
- omega_0 ^2 Delta t, 1- gamma Delta t;
|
|
).
|
|
$
|
|
Wenn man die EW von dieser Matrix bestimmt, dann ist der Betrag von allen Eigenwerten kleiner als Eins,
|
|
wenn $omega_0 Delta t < gamma < 2 omega_0 $ fuer die unterdaempfte Schwingung.
|
|
|
|
= Fehlerkontrolle
|
|
|
|
$
|
|
y (t + Delta t ) = y ^((0)) (t + Delta t ) + c Delta t ^(m + 1) + O (Delta t ^(m + 2) ),
|
|
$
|
|
wobei $m$ die Ordnung des Algoritmus, $m + 1$ der lokale Fehler und $m$ der globale Fehler ist.
|
|
|
|
== Zweischritt-Verfahren
|
|
|
|
Neben dem Fehler durch bestimmen von einem Schritt kann der Fehler bei zwei Schritten gebildet werden.
|
|
Dann kann davon die Differenz gebildet werden und es koennen so Aussagen ueber das Verhalten des Systems gewonnen werden.
|
|
|
|
$
|
|
y (t) = y^(0) (t) \
|
|
y (t + (Delta t ) / (2) ) = y^(0) (t + (Delta t ) / (2) ) + c (t + (Delta t ) / (2) )^(m + 1) + ...\
|
|
y_2 (t + Delta t) = y^(0) (t + Delta t ) + 2 c ((Delta t ) / (2) )^(m + 1) + ...
|
|
$
|
|
|
|
Das Ziel ist hier $Delta t $ so zu waehlen, dass der Fehler kleiner als $s_0 $ wird.
|
|
|
|
|
|
// Random calculations need to understand this
|
|
$
|
|
abs(c) Delta t ^(m + 1) (1 - (1) / (2^(m) )) = abs(y_1 - y_2 ) \
|
|
abs(c) tilde(Delta t )^(m + 1) <= delta_0 \
|
|
((tilde(Delta t )) / (Delta t ) )^(m + 1) (1) / (1 - (1) / (2^(m) ) ) <= (delta_0 ) / (abs(y_1 - y_2 )) \
|
|
tilde(Delta t )^(m + 1) <= (delta_0 ) / (abs(y_1 - y_2 )) Delta t ^(m + 1) (2^(m) - 1) \
|
|
< (delta_0 ) / (abs(y_1 - y_2 )) Delta t ^(m + 1) \
|
|
tilde(Delta t )< Delta t ((delta_0 ) / (abs(y_1 - y_2 )))^((1) / (m + 1) )
|
|
$
|
|
|
|
== Der Algorithmus
|
|
|
|
- Zuerst wird ein $Delta t $ gewaehlt.
|
|
- Dann wird das Einschritt- und das Zweischritt-Verfahren durchgefuehrt
|
|
$
|
|
tilde(Delta t )_("opt") = Delta t ((delta_0 ) / (abs(y_1 - y_2 )) )^((1) / (m + 1) )
|
|
$
|
|
|
|
+ $tilde(Delta t ) < Delta t $: neue Integration von $t$ nach $t p_l Delta t $ mit dem verkleinerten Zeitschritt $tilde(Delta t )"opt"$
|
|
+ $tilde(Delta t ) > Delta t $: behalte Ergebnis $y_2 (t + Delta t )$ und erhoehe um naechsten Zeitschritt $Delta t$ auf $tilde(Delta t )_("opt") $
|
|
|
|
Dies ist wichtig fuer Probleme wo es notwendig ist die Zeitschritte an die Konfiguration des Systems anzupassen.
|
|
Zum Beispiel ist dies gut im Keplerproblem, denn dort kann sich das Objekt entweder sehr schnell oder sehr langsam bewegen.
|
|
Dies ist ein Prozess der mitlaufgen gelassen werden kann.
|
|
Molekulardynamik Simulationen brauchen dies nicht so wie Astrophysik Simulationen.
|
|
|
|
Beispiel des Fussballtors mit verschiedenen Kraeften
|
|
- Wind
|
|
- Gravitation
|
|
- Reibung
|
|
- Magnus
|
|
|
|
Fuer die Modellbildung werden dann verschiedene Prameter des Systems und die Wirkung auf die Umwelt aufgeschrieben.
|
|
- Wechselwirkungen
|
|
- Erhaltungssaetze
|
|
- Gleichungen
|
|
|
|
Entdimensionalisierung fuer den Computer.
|
|
|