From 140d4e45ac20ceaf9aa4fde806cb9eaf1e35c09d Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Sat, 7 Jan 2023 16:33:32 +0100 Subject: [PATCH] Add chapter 3 --- .../Zusammenfassung.md | 271 +++++++++++++++++- 1 file changed, 265 insertions(+), 6 deletions(-) diff --git a/Notes/Semester 3/HM1 - Höhere Mathematik/Zusammenfassung.md b/Notes/Semester 3/HM1 - Höhere Mathematik/Zusammenfassung.md index bf815b4..5e12ddc 100644 --- a/Notes/Semester 3/HM1 - Höhere Mathematik/Zusammenfassung.md +++ b/Notes/Semester 3/HM1 - Höhere Mathematik/Zusammenfassung.md @@ -26,12 +26,21 @@ - [Verbindung zur Informatik](#verbindung-zur-informatik) - [Typische Fragestellungen](#typische-fragestellungen) - [Rechnerarithmetik](#rechnerarithmetik) - - [Lernziele](#lernziele) - [Maschinenzahl](#maschinenzahl) - [Grenzen von Maschinenzahlen](#grenzen-von-maschinenzahlen) - [Datentypen gem. IEEE](#datentypen-gem-ieee) - [Rundungsfehler und Maschinengenauigkeit](#rundungsfehler-und-maschinengenauigkeit) - [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) - [Glossar](#glossar) @@ -58,11 +67,6 @@ - Numerische Integration ## 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 Maschinenzahlen werden als Zahlen $x$ in folgender Form dargestellt: @@ -164,15 +168,270 @@ $$K = \frac{|f'(x)| \cdot |x|}{|f(x)|}$$ +## 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}") +``` + +
+ +**Konvergenz** + +Eine Fixpunktiteration is konvergent (also berechenbar), wenn folgendes zutrifft: + +$$|F'(\tilde{x})| < 1$$ + +
+
+ +**Divergenz** + +Eine Fixpunktiteration is divergent (also unberechenbar), wenn folgendes zutrifft: + +$$|F'(\tilde{x})| \ge 1$$ + +
+
+ + - $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$ + +
+ +#### Banachscher Fixpunktsatz +Der Fixpunktsatz dient dazu, abzuschätzen, wie gross der Fehler des Ergebnisses einer Fixpunktiteration in etwa ist. + +
+ +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$$ + +
+ +
+ +**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}|$$ + +
+ +
+ +Konstante $\alpha$: + +$$\alpha = \max_{x_0 \in [a, b]}| F'(x_0)|$$ + +$$\alpha \approx |F'(\tilde{x})|$$ + +
+ +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$). + +
+ +Newton-Verfahren: + +$$x_{n + 1} = x_n - \frac{f(x_n)}{f'(x_n)}$$ + +
+
+ +Vereinfachtes Newton-Verfahren: + +$$x_{n + 1} = x_n - \frac{f(x_n)}{f'(x_0)}$$ + +
+
+ +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. + +
+ + 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 + +
+ +$$x_{n + 1} = x_n - \frac{x_n - x_{n - 1}}{f(x_n) - f(x_{n - 1})} \cdot f(x_n)$$ + +
+ +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 + +
+ +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$$ + +
+
+ + - $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$ + +
+ +### Fehlerabschätzung + +
+ +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$. + +
+ +Vorgang: + + - $\varepsilon$ suchen, für die oben genannte Bedingung zutrifft + - Der maximale Fehler ist $\varepsilon$ + +
+ + - $x_n$: Der approximierte $x$-Wert nach der $n$-ten Iteration + - $\varepsilon$: Der maximale Fehler + - $\xi$: Der Schnittpunkt der Nullstelle + +
+ +### Formelbuchstaben zu Nullstellenproblem + +
+ + - $\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$ + +
+ ## Formelbuchstaben
+ - $\alpha$: Lipschitz-Konstante (siehe Fixpunktsatz) + - $[a,b]$: Das Untersuchungs-Interval für den Banachschen Fixpunktsatz - $B$: Basis der Maschinenzahl - $e$: Exponent der Maschinenzahl - $K$: Konditionszahl - $m$: Mantisse (Darstellbarer Bereich der Maschinenzahl) - $n$: Anzahl möglicher Stellen der Mantisse $m$ + - $q$: Konvergenz-Ordnung - $x$: Darzustellender Wert + - $x_n$: Die $n$-te Approximation von $x$ - $\tilde{x}$: Approximation/Annäherung an $x$