From 580928bee153f1301e0d30f3731490593846b7f7 Mon Sep 17 00:00:00 2001 From: Janis Hutz Date: Sat, 18 Oct 2025 13:40:39 +0200 Subject: [PATCH] [NumCS] Update to new helpers --- semester3/numcs/numcs-summary.pdf | Bin 1271937 -> 1276004 bytes semester3/numcs/numcs-summary.tex | 4 ++-- .../00_introduction/00_rounding-errors.tex | 6 +++--- .../02_matrix-multiplication.tex | 8 ++++---- .../00_polynomial/00_intro.tex | 6 +++--- .../00_polynomial/02_newton-basis.tex | 8 ++++---- .../03_lagrange-and-barzycentric-formula.tex | 8 ++++---- .../04_chebyshev-interpolation.tex | 8 ++++---- .../01_trigonometric/00_fourier.tex | 6 +++--- .../01_dft/01_construction.tex | 4 ++-- .../01_trigonometric/01_dft/02_fftshift.tex | 2 +- .../01_trigonometric/01_dft/03_linalg.tex | 6 +++--- .../01_trigonometric/04_error-estimation.tex | 4 ++-- .../01_trigonometric/05_dft-chebyshev.tex | 2 +- .../01_hermite-interpolation.tex | 2 +- .../parts/02_quadrature/00_introduction.tex | 5 ++++- 16 files changed, 41 insertions(+), 38 deletions(-) diff --git a/semester3/numcs/numcs-summary.pdf b/semester3/numcs/numcs-summary.pdf index a2e378453319a83e74f1c87bacddd9196a045f4f..c2ad48d97ecc622401a19735357c9864ce09bbed 100644 GIT binary patch delta 47838 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 t4AEVukcE-o)`#V_+s?yN<|v+e*ly_8A|{F delta 44120 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

UDmC9I$Dl= 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 kb?$5-l_;M1& diff --git a/semester3/numcs/numcs-summary.tex b/semester3/numcs/numcs-summary.tex index ff95d4c..87de4f3 100644 --- a/semester3/numcs/numcs-summary.tex +++ b/semester3/numcs/numcs-summary.tex @@ -18,8 +18,8 @@ \begin{document} \startDocument \usetcolorboxes -\setcounter{numberingConfig}{3} -\setcounter{numberSubsections}{1} +\setNumberingStyle{3} +\setSubsectionNumbering{1} % ╭────────────────────────────────────────────────╮ % │ Title page │ diff --git a/semester3/numcs/parts/00_introduction/00_rounding-errors.tex b/semester3/numcs/parts/00_introduction/00_rounding-errors.tex index 0174534..cb1e7f8 100644 --- a/semester3/numcs/parts/00_introduction/00_rounding-errors.tex +++ b/semester3/numcs/parts/00_introduction/00_rounding-errors.tex @@ -20,13 +20,13 @@ Zusätzlich kommt hinzu, dass durch Unterläufe (in diesem Kurs ist dies eine Za Überläufe hingegen sind konventionell definiert, also eine Zahl, die zu gross ist und nicht mehr dargestellt werden kann. -\setcounter{all}{9} +\setLabelNumber{all}{9} \begin{remark}[]{Auslöschung} Bei der Subtraktion von zwei ähnlich grossen Zahlen kann es zu einer Addition der Fehler der beiden Zahlen kommen, was dann den relativen Fehler um einen sehr grossen Faktor vergrössert. Die Subtraktion selbst hat einen vernachlässigbaren Fehler \end{remark} -\setcounter{all}{18} +\setLabelNumber{all}{18} \fancyex{Ableitung mit imaginärem Schritt} Als Referenz in Graphen wird hier oftmals die Implementation des Differenzialquotienten verwendet. Der Trick hier ist, dass wir mit Komplexen Zahlen in der Taylor-Approximation einer glatten Funktion in $x_0$ einen rein imaginären Schritt durchführen können: @@ -41,7 +41,7 @@ Da $f(x_0)$ und $f''(x_0)h^2$ reell sind, verschwinden die Terme, wenn wir nur d Falls jedoch hier die Auswertung von $\text{Im}(f(x_0 + ih))$ nicht exakt ist, so kann der Fehler beträchtlich sein. -\setcounter{all}{20} +\setLabelNumber{all}{20} \fancyex{Konvergenzbeschleunigung nach Richardson} \begin{align*} y f'(x) & = y d\left(\frac{h}{2}\right) + \frac{1}{6} f'''(x) h^2 + \frac{1}{480}f^{(s)} h^4 + \ldots - f'(x) \\ diff --git a/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex b/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex index a614611..369823d 100644 --- a/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex +++ b/semester3/numcs/parts/00_introduction/02_matrix-multiplication.tex @@ -18,17 +18,17 @@ Wie in Lineare Algebra besprochen, ist das Resultat der Multiplikation einer Mat \end{itemize} -\setcounter{all}{4} +\setLabelNumber{all}{4} \fancyremark{Rang der Matrixmultiplikation} $\text{Rang}(AX) = \min(\text{Rang}(A), \text{Rang}(X))$ -\setcounter{all}{7} +\setLabelNumber{all}{7} \fancyremark{Multiplikation mit Diagonalmatrix $D$} $D \times A$ skaliert die Zeilen von $A$ während $A \times D$ die Spalten skaliert \stepcounter{all} \inlineex \verb|D @ A| braucht $\tco{n^3}$ Operationen, wenn wir jedoch \verb|D.diagonal()[:, np.newaxis] * A| verwenden, so haben wir nur noch $\tco{n^2}$ Operationen, da wir die vorige Bemerkung Nutzen und also nur noch eine Skalierung vornehmen. So können wir also eine ganze Menge an Speicherzugriffen sparen, was das Ganze bedeutend effizienter macht -\setcounter{all}{14} +\setLabelNumber{all}{14} \inlineremark Wir können bestimmte Zeilen oder Spalten einer Matrix skalieren, in dem wir einer Identitätsmatrix im unteren Dreieck ein Element hinzufügen. Wenn wir nun diese Matrix $E$ (wie die in der $LU$-Zerlegung) linksseitig mit der Matrix $A$ multiplizieren (bspw. $E^{(2, 1)}A$), dann wird die zugehörige Zeile skaliert. Falls wir aber $AE^{(2, 1)}$ berechnen, so skalieren wir die Spalte @@ -79,7 +79,7 @@ Die vollständige Implementation sieht so aus: \end{code} -\setcounter{all}{21} +\setLabelNumber{all}{21} \fancydef{Kronecker-Produkt} Das Kronecker-Produkt ist eine $(ml) \times (nk)$-Matrix, für $A \in \R^{m \times n}$ und $B \in \R^{l \times k}$. \innumpy können wir dieses einfach mit \verb|np.kron(A, B)| berechnen (ist jedoch nicht immer ideal): 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 75ac36e..da9edd4 100644 --- a/semester3/numcs/parts/01_interpolation/00_polynomial/00_intro.tex +++ b/semester3/numcs/parts/01_interpolation/00_polynomial/00_intro.tex @@ -26,16 +26,16 @@ Dann lässt sich der Bezug zwischen $f$ und $\tilde{f} = f_n(x)$ so ausdrücken: f(x) \approx f_n(x) = \sum_{j=1}^n \alpha_j b_j(x) \end{align*} -\setcounter{all}{2} +\setLabelNumber{all}{1} \inlineremark Unterräume $\mathcal{V}_n$ existieren nicht nur für Polynome, wir beschränken uns aber auf $b_j(x) = x^{i-1}$. Andere Möglichkeiten: $b_j = \cos((j-1)\cos^-1(x))$ \textit{(Chebyshev)} oder $b_j = e^{i2\pi j x}$ \textit{(Trigonometrisch)} % FIXME: This could go into a special "maths theory" section -> GOOD -\setcounter{all}{5} +\setLabelNumber{all}{4} \fancytheorem{Peano} $f$ stetig $\implies \exists p(x)$ welches $f$ in $||\cdot||_\infty$ beliebig gut approximiert. -\setcounter{all}{7} +\setLabelNumber{all}{5} \fancydef{Raum der Polynome} $\mathcal{P}_k := \{ x \mapsto \sum_{j = 0}^{k} \alpha_j x^j \}$ \fancydef{Monom} $f: x \mapsto x^k$ diff --git a/semester3/numcs/parts/01_interpolation/00_polynomial/02_newton-basis.tex b/semester3/numcs/parts/01_interpolation/00_polynomial/02_newton-basis.tex index b0689ea..2556a36 100644 --- a/semester3/numcs/parts/01_interpolation/00_polynomial/02_newton-basis.tex +++ b/semester3/numcs/parts/01_interpolation/00_polynomial/02_newton-basis.tex @@ -13,7 +13,7 @@ Die Konstruktion verläuft iterativ, und vorherige Datenpunkte müssen nicht neu p_3(x) &= p_2(x) + \ldots \end{align*} -\setcounter{all}{3} +\setLabelNumber{all}{2} \fancytheorem{Newton-Basis} $\{ N_0,\ \ldots\ ,N_n\}$ ist eine Basis von $\mathcal{P}_n$ \begin{align*} N_0(x) &:= 1 \quad @@ -49,7 +49,7 @@ Wegen Satz 2.2.3 lässt sich jedes $p_n \in \mathcal{P}_n$ als $p_n(x) =\display Die Matrixmultiplikation in $\mathcal{O}(n^3)$ ist aber nicht nötig: Es gibt ein effizienteres System. -\setcounter{all}{5} +\setLabelNumber{all}{4} \fancydef{Dividierte Differenzen} \begin{multicols}{2} \begin{align*} @@ -81,7 +81,7 @@ Falls $x_j = x_0 + \underbrace{j \cdot h}_{:= \Delta^j}$ gilt vereinfacht sich e y[x_0,\ \ldots\ , x_n] &= \frac{1}{n! h^n} \Delta^n y_0 \end{align*} -\setcounter{all}{8} +\setLabelNumber{all}{8} \fancytheorem{Newton} Falls $\beta_j = y[x_0,\ \ldots\ , x_j]$ geht das resultierende Polynom durch alle $(x_i,y_i)$.\\ \footnotesize (D.h. die dividierten Differenzen sind korrekt.) @@ -164,7 +164,7 @@ Auswertung eines Newton-Polynoms funktioniert in $\mathcal{O}(n)$ durch ein modi \subsubsection{Fehler} -\setcounter{all}{11} +\setLabelNumber{all}{10} \inlinetheorem $f$ $n$-mal diff.-bar, $y_i = f(x_i) \implies \exists \xi \in (\min_i x_i, \max_i x_i)$ s.d. $y[x_0,x_1,\ldots,x_n] = \frac{f^{(n)}(\xi)}{(n+1)!}$ \fancytheorem{Fehler} $f: [a,b] \to \R$ ist $(n+1)$-mal diff.-bar, $p$ ist das Polynom zu $f$ in $x_0,\ldots,x_n \in [a,b]$. 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 19a835e..a49edf0 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 @@ -84,14 +84,14 @@ Gleiche funktion, etwas kürzer: \end{code} Mit dem können wir dann ein Polynom mit der baryzentrischen Interpolationsformel interpolieren: -\setcounter{numberingConfig}{0} +\numberingOff \begin{formula}[]{Baryzentrische Interpolationsformel} \vspace{-1.5pc} \begin{align*} p(x) = \frac{\displaystyle \sum_{k = 0}^{n} \frac{\lambda_k}{x - x_k} y_k}{\displaystyle \sum_{k = 0}^{n} \frac{\lambda_k}{x - x_k}} \end{align*} \end{formula} -\setcounter{numberingConfig}{3} +\numberingOn Falls wir die Stützstellen als $(n + 1)$ Chebyshev-Abszissen $\displaystyle x_k = \cos\left( \frac{k\pi}{n} \right)$ wählen, so sind alle $\lambda_k$ gegeben durch $\lambda_k = (-1)^k \delta_k$ mit $\delta_0 = \delta_n = 0.5$ und $\delta_i = 1$. @@ -141,7 +141,7 @@ Verglichen in der Lagrange-Basis zum korrekten Interpolationspolynom $p(x)$ ergi \end{align*} -\stepcounter{all} +\stepLabelNumber{all} \fancytheorem{Auswirkung von Messfehlern} Es gilt (wenn $\Lambda_n$ die beste Lebesgue-Konstante für die Ungleichung ist): \rmvspace \begin{align*} @@ -156,7 +156,7 @@ Verglichen in der Lagrange-Basis zum korrekten Interpolationspolynom $p(x)$ ergi \end{align*} \end{theorem} -\stepcounter{all} +\stepLabelNumber{all} \inlineremark Für gleichmässig auf $I$ verteilte Stützstellen gilt $\displaystyle \Lambda_n \approx \frac{2^{n + 1}}{e n \log(n)}$ \shade{gray}{Wichtig:} \bi{Niemals gleichmässig verteilte Stützstellen verwenden für die Interpolation von Polynomen hohen Grades} 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 index 8b47fb1..133d13c 100644 --- a/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebyshev-interpolation.tex +++ b/semester3/numcs/parts/01_interpolation/00_polynomial/04_chebyshev-interpolation.tex @@ -30,7 +30,7 @@ \end{definition} $T_n(x)$ scheint erst nicht ein Polynom zu sein, aber wir haben einen $\arccos$ in einem $\cos$. Zudem: -\stepcounter{all} +\stepLabelNumber{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} @@ -81,7 +81,7 @@ Oder $k = 1, \ldots, n - 1$ bei ausgeschlossenen Endpunkten $a$ und $b$ % ──────────────────────────────────────────────────────────────────── -\stepcounter{all} +\stepLabelNumber{all} \newpage \subsubsection{Fehler} Was hat die neue Verteilung für einen Einfluss auf den Fehler? @@ -98,12 +98,12 @@ Folglich sind also die Nullstellen der Chebyshev-Polynome $T_n$ die bestmöglich 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} +\stepLabelNumber{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} +\stepLabelNumber{all} \begin{theorem}[]{Interpolationspolynom} Das Interpolationspolynom $p$ zu $f$ mit Chebyshev-Knoten gleich der Nullstellen von $T_{n + 1}$ ist gegeben durch \begin{align*} diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/00_fourier.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/00_fourier.tex index c835149..c5b6c22 100644 --- a/semester3/numcs/parts/01_interpolation/01_trigonometric/00_fourier.tex +++ b/semester3/numcs/parts/01_interpolation/01_trigonometric/00_fourier.tex @@ -60,7 +60,7 @@ $p_m$ kann folgendermassen dargestellt werden ($a_0 = 2\gamma_0, a_j = 2\Re(\gam 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} +\stepLabelNumber{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. @@ -89,7 +89,7 @@ Dann verwandeln sich die Integrale in die Form $\frac{1}{T} \int_{\frac{T}{2}}^{ % A (small) intuitive explanation of what the fourier series / coefficients are & what they are useful for would be great, script *briefly* touches on it. -\setcounter{all}{14} +\setLabelNumber{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). @@ -134,7 +134,7 @@ Mit $c = \pi(a + b)$ und $d = \pi(b - a)$ \label{fig:trigo-interp-overarcing} \end{figure} -\stepcounter{all} +\stepLabelNumber{all} \inlineremark Meist ist es nicht möglich (oder nicht sinnvoll) die Fourier-Koeffizienten analytisch zu berechnen, weshalb man wieder zur Numerik und der Trapezformel greift, die folgendermassen definiert ist für $t_l = \frac{l}{N}$, wobei $l = 0, 1 \ldots, N - 1$ und $N$ die Anzahl der Intervalle ist: diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/01_construction.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/01_construction.tex index 7d0ec22..4b4ea3b 100644 --- a/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/01_construction.tex +++ b/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/01_construction.tex @@ -58,14 +58,14 @@ Die diskreten Fourier-Koeffizienten $\gamma_k$ sind eine Umsortierung der Koeffi Die skalierte Fourier-Matrix $\frac{1}{\sqrt{N}}F_N$ hat einige besondere Eigenschaften. -\setcounter{all}{6} +\setLabelNumber{all}{6} \inlinetheorem Die skalierte Fourier-Matrix $\frac{1}{\sqrt{N}}F_N$ ist unitär: $F_N^{-1} = \frac{1}{N} F_N^H = \frac{1}{N} \overline{F_N}$ \fancyremark{Eigenwerte von $\frac{1}{\sqrt{N}}F_N$} Die $\lambda$ von $\frac{1}{\sqrt{N}}F_N$ liegen in $\{1,-1,i,-i\}$. Die diskrete Fourier-Transformation ist nun einfach die Anwendung der Basiswechsel-Matrix $F_N$. -\setcounter{all}{5} +\setLabelNumber{all}{5} \fancydef{Diskrete Fourier-Transformation} $\mathcal{F}_N: \mathbb{C} \to \mathbb{C}$ s.d. $\mathcal{F}_N(y) = F_Ny$ \begin{align*} \text{Für } c = \mathcal{F}_N(y) \text{ gilt: }\quad c_k = \sum_{j=0}^{N-1} y_j \omega_N^{kj} diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/02_fftshift.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/02_fftshift.tex index 1a927ef..41408d3 100644 --- a/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/02_fftshift.tex +++ b/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/02_fftshift.tex @@ -10,7 +10,7 @@ Seien $z = \frac{1}{N} F_N y$ und $\zeta = \verb|fft.fftshift|(z)$. \begin{align*} f(x) \approx \underbrace{\sum_{k=-N/2}^{N/2-1} \zeta_k \cdot e^{2 \pi ikx} }_{\text{Form des trig. Polynoms}} \end{align*} -\setcounter{all}{13} +\setLabelNumber{all}{13} \inlineremark Man kann mit dieser Approximation einfach die $L^2$-Norm und Ableitungen berechnen: \vspace{-1.5pc} \begin{multicols}{2} diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/03_linalg.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/03_linalg.tex index 7f4ce93..7f9d3a4 100644 --- a/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/03_linalg.tex +++ b/semester3/numcs/parts/01_interpolation/01_trigonometric/01_dft/03_linalg.tex @@ -1,7 +1,7 @@ \newpage \subsubsection{DFT \& Lineare Algebra} -\setcounter{all}{25} +\setLabelNumber{all}{25} \fancydef{Zirkulant} Für einen vektor $c \in \mathbb{R}^N$ hat der Zirkulant $C \in \mathbb{R}^{N \times N}$ die Form: \begin{align*} C = \begin{bmatrix} @@ -74,7 +74,7 @@ Die Faltung von $a = [a_0,\ldots,a_{N-1}]^\top, b = [b_0,\ldots,b_{N-1}]^\top$ i c = a \circledast b\quad\quad \text{s.d. } \sum_{n=0}^{N-1} a_nb_{k-n} \equiv_N \sum_{n=0}^{N-1}b_na_{n-k} \end{align*} -\setcounter{all}{32} +\setLabelNumber{all}{32} \inlineremark Zyklische Faltungen von Vektoren kann man mit Zirkulanten berechnen. \begin{align*} c = a \circledast b = Ab = \underbrace{\begin{bmatrix} @@ -87,7 +87,7 @@ Die Faltung von $a = [a_0,\ldots,a_{N-1}]^\top, b = [b_0,\ldots,b_{N-1}]^\top$ i % NOTE: I'm not sure if this below is correct. This is how I interpret what is written in the script -\setcounter{all}{30} +\setLabelNumber{all}{30} \inlineremark Eine Multiplikation von Polynomen $g,h$ entspricht einer Faltung im Frequenzbereich. \begin{align*} \mathcal{F}_N(\underbrace{g * h}_{\text{Standard Basis}}) = \underbrace{\mathcal{F}_N(g) \cdot \mathcal{F}_N(h)}_{\text{Trigonometrische Basis}} diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/04_error-estimation.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/04_error-estimation.tex index e0b25a1..b611a9a 100644 --- a/semester3/numcs/parts/01_interpolation/01_trigonometric/04_error-estimation.tex +++ b/semester3/numcs/parts/01_interpolation/01_trigonometric/04_error-estimation.tex @@ -36,7 +36,7 @@ Auch hier tritt das Gibbs-Phänomen wieder an den Sprungstellen von $f(t)$ auf. Dies verursacht die Verlangsamung der Konvergenz in den Stellen, in welchen die Funktion nicht glatt ist. \newpage -\stepcounter{all} +\stepLabelNumber{all} \inlineex Sei für $\alpha \in [0, 1)$ $\displaystyle f(t) = \frac{1}{\sqrt{1 - \alpha \sin(2\pi t)}}$. Die Konvergenz ist exponentiell in $n$ und je kleiner $\alpha$, desto schneller ist sie. In der untenstehenden Abbildung \ref{fig:interpolation-error-convergence} sind einige Beispiele aufgetragen: @@ -50,7 +50,7 @@ In der untenstehenden Abbildung \ref{fig:interpolation-error-convergence} sind e \end{figure} -\setcounter{all}{6} +\setLabelNumber{all}{6} \begin{theorem}[]{Aliasing} Der k-te Fourier-Koeffizient des $N$-ten trigonometrischen Interpolationspolynoms unterscheidet sich vom $k$-ten Fourier-Koeffizienten von $f$ gerade um die Summe aller Fourier-Koeffizienten, die um ganze Vielfache von $N$ vom $k$-ten Fourier-Koeffizienten verschoben sind: diff --git a/semester3/numcs/parts/01_interpolation/01_trigonometric/05_dft-chebyshev.tex b/semester3/numcs/parts/01_interpolation/01_trigonometric/05_dft-chebyshev.tex index 1974c3b..9ee80c8 100644 --- a/semester3/numcs/parts/01_interpolation/01_trigonometric/05_dft-chebyshev.tex +++ b/semester3/numcs/parts/01_interpolation/01_trigonometric/05_dft-chebyshev.tex @@ -39,7 +39,7 @@ Und mit weitern Umformungen erhalten wir \end{align*} Auf Seite 102 im Skript findet sich auch eine effiziente Implementation dessen. -\stepcounter{all} +\stepLabelNumber{all} \inlineremark Die Formel in Satz 2.4.16 (und in der eben erwähnten Implementierung) sind nichts anderes als eine Version der DCT (Discrete Cosine Transform). Dies ist eine günstigere, aber beschränktere Variante der DFT, mit der nur reellwertige, gerade Funktionen interpoliert werden können. diff --git a/semester3/numcs/parts/01_interpolation/02_piece-wise/01_hermite-interpolation.tex b/semester3/numcs/parts/01_interpolation/02_piece-wise/01_hermite-interpolation.tex index ab07b3a..970adc2 100644 --- a/semester3/numcs/parts/01_interpolation/02_piece-wise/01_hermite-interpolation.tex +++ b/semester3/numcs/parts/01_interpolation/02_piece-wise/01_hermite-interpolation.tex @@ -26,7 +26,7 @@ Bei anderen Interpolationsmethoden ist dies nicht garantiert (so auch nicht beim \textit{Wenn man den Parameter \texttt{method="makima"} bei \texttt{Akima1DInterpolator} mitgibt, wird eine neuere modifizierte Variante davon ausgeführt} \end{footnotesize} -\stepcounter{all} +\stepLabelNumber{all} \begin{theorem}[]{Fehler der CHIP} % FIXME: Explain what the C is or if it is \C, then replace Sei $f \in C^4[a, b]$ und $s$ der stückweise CHIP mit exakten Werten der Ableitungen $s'(x_j) = f'(x_j), s(x_j) = f(x_j)$ für $j = 0, \ldots, N$ diff --git a/semester3/numcs/parts/02_quadrature/00_introduction.tex b/semester3/numcs/parts/02_quadrature/00_introduction.tex index bcc9cd5..09eac69 100644 --- a/semester3/numcs/parts/02_quadrature/00_introduction.tex +++ b/semester3/numcs/parts/02_quadrature/00_introduction.tex @@ -55,4 +55,7 @@ Falls wir $c_k(x) = x^k$ haben (was oft der Fall ist, je nach Funktion aber kön \rmvspace als die Lagrange-Polynome zu den Stützstellen $x_0, x_1, \ldots, x_n$ \end{definition} -Für ein Beispiel verweisen wir auf Abschnitt \ref{sec:barycentric-interpolation} +Für ein Beispiel verweisen wir auf Beispiel \ref{all:2-3-2} + +\setLabelNumber{all}{6} +\fancyremark{Eigenschaften der Lagrange-Polynome} Zusätzlich zu den Eigenschaften in \ref{all:2-3-4} ist folgende Eigenschaft erwähnenswert