# Höhere Mathematik ## Inhalt - [Höhere Mathematik](#höhere-mathematik) - [Inhalt](#inhalt) - [Einführung](#einführung) - [Einsatzgebiet](#einsatzgebiet) - [Arten von Lösungen](#arten-von-lösungen) - [Verbindung zur Informatik](#verbindung-zur-informatik) - [Typische Fragestellungen](#typische-fragestellungen) - [Rechnerarithmetik](#rechnerarithmetik) - [Maschinenzahl](#maschinenzahl) - [Grenzen von Maschinenzahlen](#grenzen-von-maschinenzahlen) - [Datentypen gem. IEEE](#datentypen-gem-ieee) - [Rundungsfehler und Maschinengenauigkeit](#rundungsfehler-und-maschinengenauigkeit) - [Konditionszahl](#konditionszahl) - [Nullstellenprobleme](#nullstellenprobleme) - [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) ## Einführung ### Einsatzgebiet - Annähern komplexer Formeln in endlicher Zeit - Berechnung von Algorithmen durch Computer - Algorithmen ohne expliziter Lösungsdarstellung - Alternative Lösungsvorgänge für höhere Performance ### Arten von Lösungen - Direkte Verfahren - Exakte Lösung nach endlicher Zeit - Näherungsverfahren - Approximation nach begrenzter Anzahl Rechenschritte ### Verbindung zur Informatik - Effiziente Berechnung numerischer Algorithmen - Speicherung und Darstellung von Zahlen - Computergrafik & Bildverarbeitung - Neuronale Netze ### Typische Fragestellungen - Wie wirkt sich die Beschränkung der Anzahl Bits für Zahlenformate auf Rechenergebnisse und Rechengenauigkeit aus? - Numerische Lösung von Nullstellenproblemen - Numerische Integration ## Rechnerarithmetik ### Maschinenzahl Maschinenzahlen werden als Zahlen $x$ in folgender Form dargestellt: $x = m \cdot B^e$ - $x$: Die zu repräsentierende Zahl - $m$: Die Mantisse (der darstellbare Zahlenwert) - $B$: Die Basis der zu repräsentierenden Zahl - $e$: Der Exponent (der Stellenwert der Mantisse $m$) Beispiel: $1337 = 0.1337 * 10^4$ Maschinenzahlen sind normalisiert, wenn - für die Mantisse $m$ $0.1 <= |m| < 1.0$ zutrifft Maschinenzahlen werden normalisiert, damit es zu jedem Wert eine eindeutige Darstellung als Maschinenzahl gibt. ### Grenzen von Maschinenzahlen
$x_{max} = B^{e_{max}} - B^{e_{max}-n} = (1 - B^{-n}) \cdot B^{e_{max}}$ $x_min = B^{e_{min} - 1}$
### Datentypen gem. IEEE `float` oder `single`: 32 Bit - 1 Bit für Vorzeichen, 23 Bit für Mantisse $m$, 8 Bit für Exponent $e$ `double`: 64 Bit - 1 Bit für Vorzeichen, 52 für Mantisse $m$, 11 Bit für Exponent $e$ ### Rundungsfehler und Maschinengenauigkeit
Absoluter Fehler: $$|\tilde{x} - x|$$
Relativer Fehler: $$\frac{|\tilde{x} - x|}{|x|}$$
Maximaler **absoluter** Rundungsfehler: $$\frac{B}{2} \cdot B^{e - n - 1}$$
**Maschinengenauigkeit** oder maximaler **relativer** Rundungsfehler: $$\frac{1}{2} \cdot B^{1 - n}$$
Fehlerfortpflanzung bei Funktionsauswertung: Relativ: $$\frac{f'(x) \cdot x}{f(x)} \cdot \frac{\tilde{x} - x}{x}$$ Absolut: $$|f'(x)| \cdot |\tilde{x} - x|$$
- $B$: Die Basis der Maschinenzahl - $e$: Der Exponent der Maschinenzahl (Standard-Wert: $0$) - $n$: Die Anzahl Stellen der Mantisse $m$ - $x$: Der darzustellende Wert - $\tilde{x}$: Die Annäherung/Approximation an $x$ - $f$: Auszuwertende Funktion
### Konditionszahl Die Konditionszahl gibt an, wie gross der potenzielle relative Fehler einer numerischen Lösung ist. Eine niedrige Konditionszahl ($K \le 1$) bedeutet einen niedrigen Fehler, eine hohe Konditionszahl ein grosses Fehlerrisiko. Formel:
Konditionszahl: $$K = \frac{|f'(x)| \cdot |x|}{|f(x)|}$$
## Nullstellenprobleme ### 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$
## Glossar