mirror of
https://github.com/janishutz/eth-summaries.git
synced 2025-11-25 10:34:23 +00:00
[NumCS] DFT-Chebyshev done
This commit is contained in:
Binary file not shown.
@@ -1,3 +1,4 @@
|
||||
\newsection
|
||||
\subsection{DFT und Chebyshev-Interpolation}
|
||||
Mithilfe der DFT können günstig und einfach die Chebyshev-Koeffizienten berechnet werden.
|
||||
Die Idee basiert auf dem Satz 2.4.16, durch welchen schon schnell klar wird, dass es eine Verbindung zwischen den Fourier-Koeffizienten und Chebyshev-Koeffizienten gibt.
|
||||
@@ -12,7 +13,7 @@ können wir folgendes mit der Interpolationsbedingung $f(t_k) = p(t_k)$ tun:
|
||||
f(t_k) = p(t_k) \Longleftrightarrow g\left( \frac{2k + 1}{4(n + 1)} \right) = p\left( \frac{2k + 1}{4(n + 1)} \right)
|
||||
\end{align*}
|
||||
Wir wenden nun die Translation $s^* = s + \frac{1}{4n + 1}$ an, die Hilfsfunktionen sind dann $g*(s) = g(s^*)$ und $q^*(s) = q(s^*)$
|
||||
und man kann zeigen (Seite 101 im Skript), dass $q^*$ das trigonometrische Interpolationspolynom von $g^*$ ist,
|
||||
und man kann zeigen (Seite 100 im Skript), dass $q^*$ das trigonometrische Interpolationspolynom von $g^*$ ist,
|
||||
also kann man eine Chebyshev-Interpolation durch eine DFT durchführen.
|
||||
Folglich überträgt sich auch die Fehlerabschätzung. Die Interpolationsbedingungen sind folgendermassen definiert:
|
||||
\begin{align*}
|
||||
@@ -23,4 +24,30 @@ Folglich überträgt sich auch die Fehlerabschätzung. Die Interpolationsbedingu
|
||||
\end{cases}
|
||||
\end{align*}
|
||||
|
||||
Um das ganze zu implementieren ist eine andere Darstellung nützlich.
|
||||
Um das ganze zu implementieren ist eine andere Darstellung nützlich:
|
||||
\begin{align*}
|
||||
\cos(2\pi \xi_k) \text{ mit } \xi_k = \frac{2k + 1}{4(n + 1)}
|
||||
\end{align*}
|
||||
Durch Umformungen (Seite 101 im Skript) erhalten wir:
|
||||
\begin{align*}
|
||||
z_l = \sum_{-n}^{n} \zeta_j \exp\left( 2\pi ij \tilde{\xi}_l \right) \text{ mit } \tilde{\xi}_l = \frac{l}{2n + 2} \text{ für } 0, 1, \ldots, 2n + 1\\
|
||||
\zeta_j = c_j \exp\left( \frac{2 \pi ij}{4(n + 1)} \right) \text{ für } j = -n, \ldots, -1, 0, 1, \ldots, n
|
||||
\end{align*}
|
||||
Und mit weitern Umformungen erhalten wir
|
||||
\begin{align*}
|
||||
F^{-1}_{2n + 2} \left[ \exp\left( \frac{\pi inl}{n + 1} \right) z_l \right] = [\zeta_{k -n}]
|
||||
\end{align*}
|
||||
Auf Seite 102 im Skript findet sich auch eine effiziente Implementation dessen.
|
||||
|
||||
\stepcounter{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.
|
||||
|
||||
\fhlc{Cyan}{In NumPy} benutzen wir \texttt{scipy.fft.dct}. Dazu müssen die Mesungen in den Punkten $x_j = \cos\left( (j + 0.5) \cdot \frac{\pi}{N} \right)$
|
||||
|
||||
\inlineremark Die Chebyshev-Koeffizienten $c_j$ können folgendermassen berechnet werden:
|
||||
\rmvspace
|
||||
\begin{align*}
|
||||
c_j = \frac{1}{\pi} \int_{0}^{2\pi} f(\cos(\varphi)) \cos(j \varphi) \dx \varphi
|
||||
\end{align*}
|
||||
Eine weitere effiziente Interpolation findet sich auf Seiten 104 - 105 im Skript
|
||||
|
||||
@@ -24,10 +24,12 @@
|
||||
\vspace{4cm}
|
||||
\begin{center}
|
||||
\begin{Large}
|
||||
``\textit{A funny quote from the lecture still needed}``
|
||||
``\textit{Wenn Sie die Turing-Maschine als Touring-Maschine in der Prüfung schreiben, dann macht mich das sehr traurig. Ich seh das jeweils. Teilweise sind das sehr elaborierte Trolle, manchmal Leute die nie in die Vorlesungen kommen} (2025-10-14T08:51Z+02:00``)
|
||||
|
||||
``\textit{Sie können also alle C Programme in Kanonischer Ordnung aufzählen. Sollten Sie dies tun. Wahrscheinlich nicht. Was aber zählt ist, sie \textbf{können} es tun}''
|
||||
\end{Large}
|
||||
|
||||
\hspace{3cm} - A professor in TI, 2025
|
||||
\hspace{3cm} - Prof. Dr. Dennis Komm, 2025
|
||||
\end{center}
|
||||
|
||||
\vspace{3cm}
|
||||
|
||||
Reference in New Issue
Block a user