[NumCS] DFT-Chebyshev done

This commit is contained in:
2025-10-14 09:48:30 +02:00
parent 0900461682
commit 1b36e0942d
3 changed files with 33 additions and 4 deletions

Binary file not shown.

View File

@@ -1,3 +1,4 @@
\newsection
\subsection{DFT und Chebyshev-Interpolation} \subsection{DFT und Chebyshev-Interpolation}
Mithilfe der DFT können günstig und einfach die Chebyshev-Koeffizienten berechnet werden. 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. 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) 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*} \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^*)$ 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. also kann man eine Chebyshev-Interpolation durch eine DFT durchführen.
Folglich überträgt sich auch die Fehlerabschätzung. Die Interpolationsbedingungen sind folgendermassen definiert: Folglich überträgt sich auch die Fehlerabschätzung. Die Interpolationsbedingungen sind folgendermassen definiert:
\begin{align*} \begin{align*}
@@ -23,4 +24,30 @@ Folglich überträgt sich auch die Fehlerabschätzung. Die Interpolationsbedingu
\end{cases} \end{cases}
\end{align*} \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

View File

@@ -24,10 +24,12 @@
\vspace{4cm} \vspace{4cm}
\begin{center} \begin{center}
\begin{Large} \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} \end{Large}
\hspace{3cm} - A professor in TI, 2025 \hspace{3cm} - Prof. Dr. Dennis Komm, 2025
\end{center} \end{center}
\vspace{3cm} \vspace{3cm}