Add chapter 3

This commit is contained in:
Manuel Thalmann 2023-01-07 16:33:32 +01:00
parent 45e09ae055
commit 140d4e45ac

View file

@ -26,12 +26,21 @@
- [Verbindung zur Informatik](#verbindung-zur-informatik) - [Verbindung zur Informatik](#verbindung-zur-informatik)
- [Typische Fragestellungen](#typische-fragestellungen) - [Typische Fragestellungen](#typische-fragestellungen)
- [Rechnerarithmetik](#rechnerarithmetik) - [Rechnerarithmetik](#rechnerarithmetik)
- [Lernziele](#lernziele)
- [Maschinenzahl](#maschinenzahl) - [Maschinenzahl](#maschinenzahl)
- [Grenzen von Maschinenzahlen](#grenzen-von-maschinenzahlen) - [Grenzen von Maschinenzahlen](#grenzen-von-maschinenzahlen)
- [Datentypen gem. IEEE](#datentypen-gem-ieee) - [Datentypen gem. IEEE](#datentypen-gem-ieee)
- [Rundungsfehler und Maschinengenauigkeit](#rundungsfehler-und-maschinengenauigkeit) - [Rundungsfehler und Maschinengenauigkeit](#rundungsfehler-und-maschinengenauigkeit)
- [Konditionszahl](#konditionszahl) - [Konditionszahl](#konditionszahl)
- [Nullstellenprobleme](#nullstellenprobleme)
- [Lernziele](#lernziele)
- [Problemstellung und Ansatz](#problemstellung-und-ansatz)
- [Fixpunktiteration](#fixpunktiteration)
- [Banachscher Fixpunktsatz](#banachscher-fixpunktsatz)
- [Newton-Verfahren](#newton-verfahren)
- [Sekantenverfahren](#sekantenverfahren)
- [Konvergenz-Ordnung](#konvergenz-ordnung)
- [Fehlerabschätzung](#fehlerabschätzung)
- [Formelbuchstaben zu Nullstellenproblem](#formelbuchstaben-zu-nullstellenproblem)
- [Formelbuchstaben](#formelbuchstaben) - [Formelbuchstaben](#formelbuchstaben)
- [Glossar](#glossar) - [Glossar](#glossar)
@ -58,11 +67,6 @@
- Numerische Integration - Numerische Integration
## Rechnerarithmetik ## Rechnerarithmetik
### Lernziele
- [ ] Verstehen der Definition von maschinendarstellbaren Zahlen
- [ ] Fehler von Maschinenzahlen sowie Maschinengenauigkeit berechnen
- [ ] Fortpflanzung von Fehlern bei Funktionsanwendung abschätzen und Konditionszahl berechnen
### Maschinenzahl ### Maschinenzahl
Maschinenzahlen werden als Zahlen $x$ in folgender Form dargestellt: Maschinenzahlen werden als Zahlen $x$ in folgender Form dargestellt:
@ -164,15 +168,270 @@ $$K = \frac{|f'(x)| \cdot |x|}{|f(x)|}$$
</div> </div>
## Nullstellenprobleme
### Lernziele
- [ ] Sie kennen die Begriffe "Fixpunktgleichung", "Fixpunktiteration" sowie anziehender/abstossender Fixpunkt
- [ ] Sie können eine Fixpunktgleichung zu einer Aufgabenstellung aufstellen
- [ ] Mögliche Fehler mit Hilfe des Banachschen Fixpunktsatz quantifizieren
- [ ] Newtonverfahren sowie das Sekantenverfahren anwenden
- [ ] Den Begriff Konvergenzordnung verstehen
### Problemstellung und Ansatz
Es wird der korrekte Wert $x$ für eine Aufgabe gesucht.
1. Aufgabe ausformulieren:
$x = \sqrt{A}$
2. Aufgabe zu Nullstellenproblem umformulieren (Funktion, die bei gesuchtem $x$ immer $0$ ergibt):
$f(x) = x^2 - A$
3. (Algorithmisch) richtiges $x$ finden, bei dem die Funktion $0$ ergibt
4. Das gefundene $x$ ist die Lösung
> ***Note:***
> Als Ausgangsbedingung für eine numerische Lösung eines Nullstellenproblems können diverse Bedingungen verwendet werden wie etwa:
> - Eine bestimmte Anzahl Iterationen
> - Abstand zwischen $x_n$ und $x_{n + 1}$ unterschreitet Threshold (approximiertes Resultat)
> - Ein niedriger Threshold ergibt ein genaueres Resultat
> - Ein Threshold von $0$ ergibt das genaue Resultat
### Fixpunktiteration
Ein möglicher Ansatz für ein solches Problem ist eine Fixpunktiteration.
Der Vorgang für eine solche ist folgende:
1. Die Funktion in die Form $F(x) = x$.
Beispiel für $f(x) = x^2 - A$:
$F(x) = \sqrt{A}$
2. Beliebigen Wert für $x_0$ wählen (vorzugsweise Wert in Nähe von erwarteter Lösung)
3. Fixpunktiteration $x_{n + 1}$ berechnen:
$x_{n+1} = F(x_n)$
Dies wird durchgeführt bis die Ausgangsbedingung erfüllt ist.
***Code-Beispiel:***
```py
import math
threshold = 10 ** -6
def f(x): # Funktion f in Nullstellenform
return math.cos(x) - x
def F(x): # Funktion f in Fixpunktform
return math.cos(x)
def F_(x): # Die Ableitung F'(x)
return return -math.sin(x)
x = 0.75 # Startwert - angenommene, etwaige Lösung
if F_(x) >= 1:
print("Fehler: Fixpunktiteration divergiert!")
else:
while math.abs(x - F(x)) >= threshold:
x = F(x)
print(f"Approximierte Lösung: {x}")
```
<div class="formula">
**Konvergenz**
Eine Fixpunktiteration is konvergent (also berechenbar), wenn folgendes zutrifft:
$$|F'(\tilde{x})| < 1$$
</div>
<div class="formula">
**Divergenz**
Eine Fixpunktiteration is divergent (also unberechenbar), wenn folgendes zutrifft:
$$|F'(\tilde{x})| \ge 1$$
</div>
<div class="letters">
- $F(x)$: Die Fixpunktgleichung
- $F'(x)$: Die Ableitung der Fixpunktgleichung
- $x$: Das genaue Resultat für $x$
- $\tilde{x}$: Das approximierte Resultat für $x$ (Fixpunkt)
- $x_n$: Die $n$-te Approximation für $x$
</div>
#### Banachscher Fixpunktsatz
Der Fixpunktsatz dient dazu, abzuschätzen, wie gross der Fehler des Ergebnisses einer Fixpunktiteration in etwa ist.
<div class="formula">
Fixpunktsatz:
$$|F(x) - F(y)| \le \alpha \cdot |x - y| \text{für alle }x,y \in [a, b]$$
Alternative Umformung:
$$\frac{|F(x) - F(y)|}{|x - y|} \le \alpha$$
</div>
<div class="formula">
**Fehlerabschätzung:**
a-priori Abschätzung:
$$|x_n - \tilde{x}| \le \frac{\alpha^n}{1 - \alpha} \cdot |x_1 - x_0|$$
a-posteriori Abschätzung:
$$|x_n - \tilde{x}| \le \frac{\alpha}{1 - \alpha} \cdot |x_n - x_{n - 1}|$$
</div>
<div class="formula">
Konstante $\alpha$:
$$\alpha = \max_{x_0 \in [a, b]}| F'(x_0)|$$
$$\alpha \approx |F'(\tilde{x})|$$
</div>
Folgendermassen kann dieser aufgestellt werden:
> ***Note:***
> In dieser Passage wird sowohl $a$ (der Buchstabe "a") als auch $\alpha$ (Alpha) verwendet. Diese haben hier eine unterschiedliche Bedeutung.
1. Start- und Endpunkt $a$ und $b$ auswählen, welche genau einen Fixpunkt $\tilde{x}$ beinhalten
2. Prüfen, ob folgendes Zutrifft: Alle Ergebnisse von $F([a, b])$ befinden sich im Intervall $[a, b]$
3. Konstante $\alpha$ berechnen (gem. Formel)
4. Die a-priori und die a-posteriori Abschätzung kann nun beliebig angewendet werden. Hierbei wird für $x_0$ der Wert $a$ verwendet.
### Newton-Verfahren
Das Newton-Verfahren erreicht die Konvergenz (d.h. das (approximierte) Resultat) um einiges schneller.
Hierfür wird die Funktion $f$ in der Nullstellenform benötigt ($f(x) = \text{[...]} = 0$).
<div class="formula">
Newton-Verfahren:
$$x_{n + 1} = x_n - \frac{f(x_n)}{f'(x_n)}$$
</div>
<div class="formula">
Vereinfachtes Newton-Verfahren:
$$x_{n + 1} = x_n - \frac{f(x_n)}{f'(x_0)}$$
</div>
<div class="formula">
Konvergenz-Kontrolle:
$$\left|\frac{f(x) \cdot f''(x)}{(f'(x))^2}\right| < 1$$
Das Ergebnis ist wahr, wenn mit dem gewählten $x$ eine Konvergenz erreicht werden kann.
</div>
1. Startpunkt $x_0$ in der Nähe einer Nullstelle wählen
2. (Wahlweise vereinfachtes) Newton-Verfahren anwenden bis $x_n$ und $x_{n + 1}$ bis Ausgangsbedingung erreicht wird
### Sekantenverfahren
<div class="formula">
$$x_{n + 1} = x_n - \frac{x_n - x_{n - 1}}{f(x_n) - f(x_{n - 1})} \cdot f(x_n)$$
</div>
Vorgang:
1. Startpunkte $x_0$ und $x_1$ wählen (Punkte, die eine Nullstelle umschliessen)
2. Iteration durchführen, bis Ausgangsbedingung erfüllt wird
### Konvergenz-Ordnung
<div class="formula">
Ein Verfahren hat eine Konvergenz-Ordnung $q \ge 1$, wenn es eine Konstante $c > 0$ für die für alle $n$ Iterations-Schritte gilt:
$$|x_{n + 1} - \tilde{x}| \le c \cdot |x_n - \tilde{x}|^q$$
</div>
<div class="letters">
- $c$: Beliebige Konstante
- $q$: Konvergenz-Ordnung
- Für Newton-Verfahren: $q = 2$
- Für vereinfachtes Newton-Verfahren: $q = 1$
- Für Sekanten-Verfahren: $1 = (1 + \sqrt{5}) : 2 \approx 1.618$
</div>
### Fehlerabschätzung
<div class="formula">
Wenn folgendes zutrifft:
$$f(x_n - \varepsilon) \cdot f(x_n + \varepsilon) < 0$$
Schneidet $f$ zwischen $x_n - \varepsilon$ und $x_n + \varepsilon$ die Nullstelle.
Deswegen gilt folgendes:
$$|x_n - \xi| < \varepsilon$$
Sprich: Der Fehler ist kleiner als $\varepsilon$.
</div>
Vorgang:
- $\varepsilon$ suchen, für die oben genannte Bedingung zutrifft
- Der maximale Fehler ist $\varepsilon$
<div class="letters">
- $x_n$: Der approximierte $x$-Wert nach der $n$-ten Iteration
- $\varepsilon$: Der maximale Fehler
- $\xi$: Der Schnittpunkt der Nullstelle
</div>
### Formelbuchstaben zu Nullstellenproblem
<div class="letters">
- $\alpha$: Lipschitz-Konstante
- $[a, b]$: Der
- $F(x)$: Die Fixpunktgleichung
- $F'(x)$: Die Ableitung der Fixpunktgleichung
- $x$ und $y$: Beliebig gewählte Punkte im Interval $[a,b]$
- $\tilde{x}$: Das approximierte Resultat für $x$ (Fixpunkt)
- $x_n$ Die $n$-te Approximation von $x$
</div>
## Formelbuchstaben ## Formelbuchstaben
<div class="letters"> <div class="letters">
- $\alpha$: Lipschitz-Konstante (siehe Fixpunktsatz)
- $[a,b]$: Das Untersuchungs-Interval für den Banachschen Fixpunktsatz
- $B$: Basis der Maschinenzahl - $B$: Basis der Maschinenzahl
- $e$: Exponent der Maschinenzahl - $e$: Exponent der Maschinenzahl
- $K$: Konditionszahl - $K$: Konditionszahl
- $m$: Mantisse (Darstellbarer Bereich der Maschinenzahl) - $m$: Mantisse (Darstellbarer Bereich der Maschinenzahl)
- $n$: Anzahl möglicher Stellen der Mantisse $m$ - $n$: Anzahl möglicher Stellen der Mantisse $m$
- $q$: Konvergenz-Ordnung
- $x$: Darzustellender Wert - $x$: Darzustellender Wert
- $x_n$: Die $n$-te Approximation von $x$
- $\tilde{x}$: Approximation/Annäherung an $x$ - $\tilde{x}$: Approximation/Annäherung an $x$
</div> </div>