diff --git a/semester3/analysis-ii/parts/diffeq/00_intro.tex b/semester3/analysis-ii/parts/diffeq/00_intro.tex index fe40fc7..7dd78c4 100644 --- a/semester3/analysis-ii/parts/diffeq/00_intro.tex +++ b/semester3/analysis-ii/parts/diffeq/00_intro.tex @@ -1,6 +1,6 @@ \subsection{Introduction} \shortex $f'(x) = f(x)$ has only solution $f(x) = ae^x$ for any $a \in \R$; -$f' - a = 0$ has only solution $f(x) = \int_{x_0}^{x} a(t) \smallhspace \dx t$ +$f' - a = 0$ has only solution $f(x) = \int_{x_0}^{x} a(t) \dx t$ \setcounter{all}{6} \shorttheorem Let $F: \R^2 \rightarrow \R$ be a differential function of two variables. Let $x_0 \in \R$ and $y_0 \in \R^2$. diff --git a/semester3/numcs/numcs-summary.pdf b/semester3/numcs/numcs-summary.pdf index 207e7ef..da07e85 100644 Binary files a/semester3/numcs/numcs-summary.pdf and b/semester3/numcs/numcs-summary.pdf differ diff --git a/semester3/numcs/numcs-summary.tex b/semester3/numcs/numcs-summary.tex index e8fa73c..01d834e 100644 --- a/semester3/numcs/numcs-summary.tex +++ b/semester3/numcs/numcs-summary.tex @@ -58,13 +58,17 @@ % ──────────────────────────────────────────────────────────────────── + +% ╭────────────────────────────────────────────────╮ +% │ Introduction │ +% ╰────────────────────────────────────────────────╯ \newpage \setcounter{section}{-1} \section{Introduction} This summary is intended to give you a broad overview of the topics relevant for the exam and is not intended to serve as a full on replacement for the script. We have decided to write it in German, as is the new script and for some of the topics that are poorly explained in the script, we have added further explanations. -The numbering should match the script's numbering exactly, making it easier for you to look up the relevant definitions, theorems, etc in context in the script. +The numbering should match the script's numbering exactly (apart from the cases where two definitions were combined due to being closely related and short), making it easier for you to look up the relevant definitions, theorems, etc in context in the script. % ──────────────────────────────────────────────────────────────────── @@ -82,18 +86,17 @@ The numbering should match the script's numbering exactly, making it easier for % ── polynomial interpolation ──────────────────────────────────────── \newsection -\section{Polynomiale Interpolation} +\section{Polynominterpolation} \input{parts/01_interpolation/00_polynomial/00_intro.tex} \input{parts/01_interpolation/00_polynomial/01_monome.tex} \input{parts/01_interpolation/00_polynomial/02_newton-basis.tex} \input{parts/01_interpolation/00_polynomial/03_lagrange-and-barzycentric-formula.tex} -\input{parts/01_interpolation/00_polynomial/04_chebychev-interpolation.tex} - +\input{parts/01_interpolation/00_polynomial/04_chebyshev-interpolation.tex} % ── trigonometric interpolation ───────────────────────────────────── \newsection \section{Trigonometrische Interpolation} -\input{parts/01_interpolation/01_trigonometric/00_intro.tex} +\input{parts/01_interpolation/01_trigonometric/00_fourier.tex} \end{document} diff --git a/semester3/numcs/parts/00_introduction/00_rounding-errors.tex b/semester3/numcs/parts/00_introduction/00_rounding-errors.tex index 6a0c869..0174534 100644 --- a/semester3/numcs/parts/00_introduction/00_rounding-errors.tex +++ b/semester3/numcs/parts/00_introduction/00_rounding-errors.tex @@ -1,3 +1,7 @@ +% ┌ ┐ +% │ AUTHOR: Janis Hutz │ +% └ ┘ + \subsection{Rundungsfehler} \begin{definition}[]{Absoluter \& Relativer Fehler} diff --git a/semester3/numcs/parts/00_introduction/01_time-complexity.tex b/semester3/numcs/parts/00_introduction/01_time-complexity.tex index b7ee9b9..05427b6 100644 --- a/semester3/numcs/parts/00_introduction/01_time-complexity.tex +++ b/semester3/numcs/parts/00_introduction/01_time-complexity.tex @@ -1,3 +1,7 @@ +% ┌ ┐ +% │ AUTHOR: Janis Hutz │ +% └ ┘ + \newsection \subsection{Rechenaufwand} In NumCS wird die Anzahl elementarer Operationen wie Addition, Multiplikation, etc benutzt, um den Rechenaufwand zu beschreiben. diff --git a/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex b/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex index ce2c059..48eaa8d 100644 --- a/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex +++ b/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex @@ -1,3 +1,7 @@ +% ┌ ┐ +% │ AUTHOR: Janis Hutz │ +% └ ┘ + \newsection \subsection{Rechnen mit Matrizen} Wie in Lineare Algebra besprochen, ist das Resultat der Multiplikation einer Matrix $A \in \C^{m \times n}$ und einer Matrix $B \in \C^{n \times p}$ ist eine Matrix $AB = \in \C^{m \times p}$ diff --git a/semester3/numcs/parts/01_interpolation/00_polynomial/00_intro.tex b/semester3/numcs/parts/01_interpolation/00_polynomial/00_intro.tex index bad5dd7..a94f6bc 100644 --- a/semester3/numcs/parts/01_interpolation/00_polynomial/00_intro.tex +++ b/semester3/numcs/parts/01_interpolation/00_polynomial/00_intro.tex @@ -1,3 +1,9 @@ +% ┌ ┐ +% │ Author: Robin Bacher │ +% └ ┘ +% TODO: If you want your email to be in there, note it down here. +% I also did not touch the unedited files to avoid conflicts +% FIXME: Add subsection here and use \newsection on all further subsections to reset the counters and add a page break Bei der Interpolation versuchen wir eine Funktion $\tilde{f}$ durch eine Menge an Datenpunkten einer Funktion $f$ zu finden.\\ Die $x_i$ heissen Stützstellen/Knoten, für welche $\tilde{f}(x_i) = y_i$ gelten soll. (Interpolationsbedingung) \begin{align*} diff --git a/semester3/numcs/parts/01_interpolation/00_polynomial/03_lagrange-and-barzycentric-formula.tex b/semester3/numcs/parts/01_interpolation/00_polynomial/03_lagrange-and-barzycentric-formula.tex index 0ee43bf..648d393 100644 --- a/semester3/numcs/parts/01_interpolation/00_polynomial/03_lagrange-and-barzycentric-formula.tex +++ b/semester3/numcs/parts/01_interpolation/00_polynomial/03_lagrange-and-barzycentric-formula.tex @@ -1,6 +1,10 @@ +% ┌ ┐ +% │ AUTHOR: Janis Hutz │ +% └ ┘ + \newsection \subsection{Lagrange- und Baryzentrische Interpolationsformeln} -Session: Gemäss TA sehr gut beschrieben im alten Script +% Session: Gemäss TA sehr gut beschrieben im alten Script \begin{definition}[]{Lagrange Polynome} Für Knoten (auch gennannt Stützstellen) $x_0, x_1, \ldots, x_n \in \R$ definieren wir die Lagrange-Polynome: diff --git a/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebychev-interpolation.tex b/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebychev-interpolation.tex deleted file mode 100644 index 04c6e57..0000000 --- a/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebychev-interpolation.tex +++ /dev/null @@ -1,9 +0,0 @@ -\newsection -\subsection{Chebychev Interpolation} - -Session: Chebyshev Pol. : Abzisse = Extrema, Knoten = Nullstellen - -Lecture: Orthogonalität ist eine wichtige Eigenschaft: Siehe Lecture notes (handgeschr.) für Veranschaulichung. \\ -$\rightarrow$ Orth. liefert die Koeff. ohne Rechenaufwand. - -Lecture: Clenshaw-Alg. relativ zentral (Taschenrechner nutzen diesen intern) diff --git a/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebyshev-interpolation.tex b/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebyshev-interpolation.tex new file mode 100644 index 0000000..c6f7aa2 --- /dev/null +++ b/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebyshev-interpolation.tex @@ -0,0 +1,141 @@ +% ┌ ┐ +% │ AUTHOR: Janis Hutz │ +% └ ┘ + +\newsection +\subsection{Chebyshev Interpolation} + +% Session: Chebyshev Pol. : Abszisse = Extrema, Knoten = Nullstellen +% +% Lecture: Orthogonalität ist eine wichtige Eigenschaft: Siehe Lecture notes (handgeschr.) für Veranschaulichung. \\ +% $\rightarrow$ Orth. liefert die Koeff. ohne Rechenaufwand. +% +% Lecture: Clenshaw-Alg. relativ zentral (Taschenrechner nutzen diesen intern) + + +\begin{definition}[]{Chebyshev-Polynome} + \begin{multicols}{2} + \fhl{Erster Art} + \rmvspace + \begin{align*} + T_n(x) = \cos(n \arccos(x)), \smallhspace x \in [-1, 1] + \end{align*} + + \fhl{Zweiter Art} + \rmvspace + \begin{align*} + U_n(x) = \frac{\sin((n + 1) \arccos(x))}{\sin(\arccos(x))}, \smallhspace x \in [-1, 1] + \end{align*} + \end{multicols} +\end{definition} +$T_n(x)$ scheint erst nicht ein Polynom zu sein, aber wir haben einen $\arccos$ in einem $\cos$. Zudem: + +\stepcounter{all} +\fancytheorem{Eigenschaften} +Das $n$-te Chebyshev-Polynom ist ein Polynom von Grad $n$ und für $x \in [-1, 1]$ gilt: +\begin{multicols}{2} + \begin{enumerate} + \item $T_0(x) = 1, T_1(x) = x$,\\ $T_{n + 1}(x) = 2x T_n(x) - T_{n - 1}(x)$ + \item $|T_n(x)| \leq 1$ + \item $T_n\left(\cos\left( \frac{k\pi}{n} \right)\right) = (-1)^k \text{ für } k = 0, \ldots, n$ + \item $T_n\left( \cos\left( \frac{(2k + 1) \pi}{2n} \right) \right) = 0 \text{ für } k = 0, \ldots, n - 1$ + \end{enumerate} +\end{multicols} + +\fancydef{Chebyshev-Knoten} Die $(n + 1)$ Chebyshev-Knoten $x_0, \ldots, x_n$ im Intervall $[-1, 1]$ sind die Nullstellen von $T_{n + 1}(x)$ + +\fancyremark{Chebyshev-Knoten für beliebiges Intervall} Für $I = [a, b]$ sind die Chebyshev-Knoten: +\rmvspace +\begin{align*} + x_k = a + \frac{1}{2} (b - a) \left( \cos \left( \frac{2k + 1}{2(n + 1)} \pi \right) + 1 \right) \smallhspace k = 0, \ldots, n +\end{align*} + +\fancydef{Chebyshev-Abszissen} Die $(n - 1)$ Chebyshev-Abszissen $x_0, \ldots, x_{n - 2}$ im Intervall $[-1, 1]$ sind die Extrema des Chebyshev-Polynoms $T_n(x)$ und zeitgleich die Nullstellen von $U_{n - 1}(x)$. +Je nach Kontext nimmt man noch die Grenzen des Intervalls ($1$ und $-1$) hinzu und hat dann $(n + 1)$ Abszissen. + +\fancyremark{Chebyshev-Abszissen für beliebiges Intervall} Für $I = [a, b]$ sind die Chebyshev-Abszissen: +\rmvspace +\begin{align*} + x_k = a + \frac{1}{2} (b - a) \left( \cos \left( \frac{k}{n} \pi \right) + 1 \right) \smallhspace k = 0, \ldots, n +\end{align*} +Oder $k = 1, \ldots, n - 1$ bei ausgeschlossenen Endpunkten $a$ und $b$ + +\inlineremark Gegen die Ränder des Intervalls werden die Chebyshev-Knoten dichter. + +\begin{theorem}[]{Orthogonalität} + Die Chebyshev-Polynome sind orthogonal bezüglich des Skalarprodukts + \rmvspace + \begin{align*} + \langle f, g \rangle = \int_{-1}^{1} f(x) g(x) \frac{1}{\sqrt{1 - x^2}} \dx x + \end{align*} + + Sie ($T_0, \ldots, T_n$) sind zudem orthogonal bezüglich des diskreten Skalarprodukts im Raum der Polynome von Grad $\leq n$ + \rmvspace + \begin{align*} + (f, g) = \sum_{l = 0}^{n} f(x_l)g(x_l) + \end{align*} + wobei $(x_0, \ldots, x_n)$ die Nullstellen von $T_{n + 1}$ sind. +\end{theorem} + + +% ──────────────────────────────────────────────────────────────────── +\stepcounter{all} +\newpage +\subsubsection{Fehler} +Was hat die neue Verteilung für einen Einfluss auf den Fehler? + +\begin{theorem}[]{Fehlerabschätzung} + Unter allen $(x_0, \ldots, x_n)$ mit $x_i \in \R$ wird (wobei $x_k$ die Nullstellen von $T_{n + 1}$ sind) + \rmvspace + \begin{align*} + \max_{x \in [-1, 1]} |(x - x_0) \cdot \ldots \cdot (x - x_n)| & & \text{minimal für } x_k = \cos \left( \frac{2k + 1}{2(n + 1)}\pi \right) + \end{align*} +\end{theorem} + +Folglich sind also die Nullstellen der Chebyshev-Polynome $T_n$ die bestmögliche Wahl für die Stützstellen. +Da die Abszissen mit FFT einfacher zu berechnen sind, werden diese oft bevorzugt berechnet. +Dies, da die Nullstellen von $T_n$ in den Extrema von $T_{2n}$ enthalten sind, während zudem zwischen zwei nebeneinanderliegenden Chebyshev-Abszissen jeweils eine Nullstelle von $T_{2n}$ liegt + +\stepcounter{all} +\fancytheorem{Lebesgue-Konstante} Für die Chebyshev-Interpolation: $\displaystyle \Lambda_n \approx \frac{2}{\pi} \log(n) \text{ für } n \rightarrow \infty$ + + +% ──────────────────────────────────────────────────────────────────── +\stepcounter{all} +\begin{theorem}[]{Interpolationspolynom} + Das Interpolationspolynom $p$ zu $f$ mit Chebyshev-Knoten gleich der Nullstellen von $T_{n + 1}$ ist gegeben durch + \begin{align*} + p(x) = c_0 + c_1 T_1(x) + \ldots + c_n T_n(x) + \end{align*} + wobei für die $c_k$ gilt: + \begin{align*} + c_k & = \frac{2}{n + 1} \sum_{l = 0}^{n} f\left( \underbrace{\cos \left( \frac{2l + 1}{n + 1} \frac{\pi}{2} \right)}_{= x_i (\text{Knoten})} \right) + \cos \left( k \frac{2l + 1}{n + 1} \frac{\pi}{2} \right) & & \text{für } k = 1, \ldots, n \\ + c_k & = \frac{1}{n + 1} \sum_{l = 0}^{n} f\left( \underbrace{\cos \left( \frac{2l + 1}{n + 1} \frac{\pi}{2} \right)}_{= x_i (\text{Knoten})} \right) + \cos \left( k \frac{2l + 1}{n + 1} \frac{\pi}{2} \right) & & \text{für } k = 0 + \end{align*} +\end{theorem} + +Für $n \geq 15$ berechnet man $c_k$ mit der Schnellen Fourier Transformation (FFT). + +\fancyremark{Laufzeit} Für die Interpolation ergibt sich folgender Aufwand: +\begin{center} + \begin{tabular}{ll} + Direkte Berechnung der $c_k$ & $\tco{(n + 1)^2}$ Operationen \\ + Dividierte Differenzen & $\tco{\frac{n (n + 1)}{2}}$ Operationen (zum Vergleich) \\ + $c_k$ mittels FFT & $\tco{n \log(n)}$ Operationen + \end{tabular} +\end{center} + + +\fancytheorem{Clenshaw-Algorithmus} Seien $d_{n + 2} = d_{n + 1} = 0$. Sei $d_k = c_k + (2x)d_{k + 1} - d_{k + 2} \text{ für } k = n, \ldots, 0$\\ +Dann gilt: $p(x) = \frac{1}{2}(d_0 - d_2)$ und man kann $p(x)$ mit Hilfe einer Rückwärtsrekursion berechnen + +Der Clenshaw-Algorithmus ist sehr stabil, auch wenn er mit (oft) unstabilen Rekursionen implementiert ist. + + + +% ──────────────────────────────────────────────────────────────────── +\subsection{DFT und Chebyshev-Interpolation} +Der folgende Abschnitt wurde ausgelassen, da dieser (noch) nicht während den Vorlesungen behandelt wurde. +Er behandelt primär die Implementation der Chebyshev-Interpolation. diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/00_fourier.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/00_fourier.tex new file mode 100644 index 0000000..174b58a --- /dev/null +++ b/semester3/numcs/parts/01_interpolation/01_trigonometric/00_fourier.tex @@ -0,0 +1,97 @@ +% ┌ ┐ +% │ AUTHOR: Janis Hutz │ +% └ ┘ + +% Lecture: Wir besitzen nicht das komplette Vorwissen in der Analysis für dieses Kapitel, d.h. wird totales Verständnis nicht +% +% Lecture: Intuitiv wird Fourier-Trans. zur Kompression genutzt, z.b. jpg format. +\subsection{Fourier-Reihen} +Eine Anwendung der Schnellen Fourier-Transformation (FFT) ist die Komprimierung eines Bildes und sie wird im JPEG-Format verwendet. + +\fancydef{Trigonometrisches Polynom von Grad $\leq m$} Die Funktion: +\rmvspace +\begin{align*} + p_m(t) := t \mapsto \sum_{j = -m}^{m} \gamma_j e^{2 \pi ijt} \text{ wobei } \gamma_j \in \C \text{ und } t \in \R +\end{align*} +% +% +\inlineremark $p_m : \R \rightarrow \C$ ist periodisch mit Periode $1$. +Falls $\gamma_{-j} = \overline{\gamma_j}$ für alle $j$, dann ist $p_m$ reellwertig und +% NOTE: Uhh... do we want to use the fancy symbols for real and imaginary part or just use $\text{Re}$? +$p_m$ kann folgendermassen dargestellt werden ($a_0 = 2\gamma_0, a_j = 2\Re(\gamma_j)$ und $b_j = -2\Im(\gamma_j)$): +\rmvspace +\begin{align*} + p_m(t) = \frac{a_0}{2} + \sum_{j = 1}^{m} (a_j \cos(2\pi jt) + b_j \sin(2\pi jt)) +\end{align*} + +\begin{definition}[]{$L^2$-Funktionen} + Wir definieren die $L^2$-Funktionen auf dem Intervall $(0, 1)$ als + \rmvspace + \begin{align*} + L^2(0, 1) := \{ f: (0, 1) \rightarrow \C \divides ||f||_{L^2(0, 1)} < \infty \} + \end{align*} + während die $L^2$-Norm auf $(0, 1)$ durch das Skalarprodukt + \rmvspace + \begin{align*} + \langle g, f \rangle_{L^2(0, 1)} := \int_{0}^{1} \overline{g(x)} f(x) \dx x + \end{align*} + über $||f||_{L^2(0, 1)} = \sqrt{\langle f, f \rangle_{L^2(0, 1)}}$ induziert wird +\end{definition} + +\inlineremark $L^2(a, b)$ lässt sich analog definieren mit +\rmvspace +\begin{align*} + \langle g, f \rangle_{L^2(a, b)} & := \int_{a}^{b} \overline{g(x)} f(x) \dx x \\ + & = (b - a) \int_{0}^{1} \overline{g(a + (b - a)t)} f(a + (b - a)t) \dx t +\end{align*} +In Anwendungen findet sich oft das Intervall $\left[ -\frac{T}{2}, \frac{T}{2} \right]$. +Dann verwandeln sich die Integrale in die Form $\frac{1}{T} \int_{\frac{T}{2}}^{-\frac{T}{2}} (\ldots) \dx t$ und $\exp(2\pi ijt)$ durch $\exp(i \frac{2\pi j}{T} t)$ ersetzt wird. + +\stepcounter{all} +\inlineremark Die Funktionen $\varphi_k(x) = \exp(2\pi ikx)$ sind orthogonal bezüglich des $L^2(0, 1)$-Skalarprodukts, bilden also eine Basis für den Unterraum der trigonometrischen polynome. + + +\inlinedef Eine Funktion $f$ ist der $L^2$-Grenzwert von Funktionenfolgen $f_n \in L^2(0, 1)$, wenn für $n \rightarrow \infty$ gilt, dass $||f - f_n||_{L^2(0, 1)} \rightarrow 0$ + + +\begin{theorem}[]{Fourier-Reihe} + Jede Funktion $f \in L^2(0, 1)$ ist der Grenzwert ihrer Fourier-Reihe: + \rmvspace + \begin{align*} + f(t) = \sum_{k = -\infty}^{\infty} \hat{f}(k) e^{2\pi ikt} + \end{align*} + wobei die Fourier-Koeffizienten + \rmvspace + \begin{align*} + \hat{f}(k) = \int_{0}^{1} f(t)e^{-2\pi ikt} \dx t \smallhspace k \in \Z + \end{align*} + definiert sind. Es gilt die Parseval'sche Gleichung: + \rmvspace + \begin{align*} + \sum_{k = -\infty}^{\infty} |\hat{f}(k)|^2 = ||f||_{L^2(0, 1)}^2 + \end{align*} +\end{theorem} +\inlineremark Oder viel einfacher und kürzer: Die Funktionen $\varphi_k(x)$ bilden eine vollständige Orthonormalbasis in $L^2(0, 1)$. + +\setcounter{all}{14} +\inlineremark Die Parseval'sche Gleichung beschreibt einfach gesagt einen ``schnellen'' Abfall der $\hat{f}(k)$. +Genauer gesagt, klingen die Koeffizienten schneller als $\frac{1}{\sqrt{k}}$ ab. +Sie sagt zudem aus, dass die $L^2$-Norm der Funktion aus einer Summe berechnet werden kann (nicht nur als Integral). +Wenn wir die Fourier-Reihe nach $t$ ableiten, erhalten wir +\rmvspace +\begin{align*} + f'(t) = \sum_{k = -\infty}^{\infty} 2\pi ik\hat{f}(k)e^{2\pi ikt} +\end{align*} + +\begin{theorem}[]{Fourier-Reihe} + Seien $f$ und $f'$ integrierbar auf $(0, 1)$, dann gilt $\hat{f'}(k) = 2\pi ik\hat{f}(k)$ für $k \in \Z$. + + Falls die Operationen erlaubt sind, dann gilt zudem: + \rmvspace + \begin{align*} + \hat{f^{(n)}} = (2\pi ik)^n \hat{f}(k) \text{ und } ||f^{(n)}||_{L^2}^2 = (2\pi)^{2n} \sum_{k = -\infty}^{\infty} k^{2n} |\hat{f}(k)|^2 + \end{align*} +\end{theorem} + + +\inlinetheorem Wenn $\displaystyle \int_{0}^{1} |f^{(n)}(t)|\dx t < \infty$, dann ist $\hat{f}(k) = \tco{k^{-n}}$ diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/00_intro.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/00_intro.tex deleted file mode 100644 index b0e4157..0000000 --- a/semester3/numcs/parts/01_interpolation/01_trigonometric/00_intro.tex +++ /dev/null @@ -1,3 +0,0 @@ -Lecture: Wir besitzen nicht das komplette Vorwissen in der Analysis für dieses Kapitel, d.h. wird totales Verständnis nicht - -Lecture: Intuitiv wird Fourier-Trans. zur Kompression genutzt, z.b. jpg format.