[NumCS] Integrate numeric quadrature

This commit is contained in:
2025-10-18 09:09:17 +02:00
parent e71350b8f7
commit e37378d7c7
5 changed files with 60 additions and 33 deletions

Binary file not shown.

View File

@@ -130,6 +130,7 @@ Moral of the story: Use descriptive variable names and do NOT use $t$, $tt$, $tt
\input{parts/01_interpolation/02_piece-wise/02_splines.tex} \input{parts/01_interpolation/02_piece-wise/02_splines.tex}
\newsection \newsection
\section{Numerische Quadratur}
\input{parts/02_quadrature/00_introduction.tex} \input{parts/02_quadrature/00_introduction.tex}

View File

@@ -10,7 +10,7 @@
\begin{definition}[]{Lagrange Polynome} \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 für $n = \text{Anzahl Stützstellen}$, also haben wir $n - 1$ Brüche, da wir eine Iteration überspringen, weil bei dieser $j = i$ ist: Für Knoten (auch gennannt Stützstellen) $x_0, x_1, \ldots, x_n \in \R$ definieren wir die Lagrange-Polynome für $n = \text{Anzahl Stützstellen}$, also haben wir $n - 1$ Brüche, da wir eine Iteration überspringen, weil bei dieser $j = i$ ist:
\begin{align*} \begin{align*}
l_i(x) = \prod_{j = 0 \neq i}^n \frac{x - x_j}{x_i - x_j} l_i(x) = \prod_{j = 0 \atop j \neq i}^n \frac{x - x_j}{x_i - x_j}
\end{align*} \end{align*}
\end{definition} \end{definition}
Falls $j = i$ im Produkt, so überspringt $j$ diese Zahl. Falls $j = i$ im Produkt, so überspringt $j$ diese Zahl.

View File

@@ -1 +1,58 @@
\section{Quadratur} \setcounter{subsection}{2}
\subsection{Grundbegriffe und -Ideen}
Es ist oft nicht möglich oder sinnvoll einen Integral analytisch zu berechnen.
Mit Methoden der Quadratur können wir Integrale nummerisch berechnen.
\innumpy kann \texttt{scipy.integrate.quad} verwendet werden.
Falls man jedoch eine manuelle Implementation erstellen will, so nutzt man oft die Trapez- oder Simpson-Regel, da sie sowohl einfach zu implementieren, wie auch effizient sind.
In gewissen Anwendungen sind Gauss-Quadratur-Formeln nützlich, welche man durch Spektralmethoden ersetzen kann, welche die FFT verwenden und effizienter sind.
\begin{definition}[]{Quadratur}
Ein Integral kann durch eine gewichtete Summe von Funktionswerten der Funktion $f$ an verschiedenen Stellen $c_i^n$ approximiert werden:
\begin{align*}
\int_{a}^{b} f(x) \dx \approx Q_n(f; a, b) := \sum_{i = 1}^{n} \omega_i^n f(c_i^n)
\end{align*}
wobei $\omega_i^n$ die \textit{Gewichte} und $c_i^n \in [a, b]$ die \textit{Knoten} der Quadraturformel sind.
\end{definition}
Wir wollen natürlich wieder $c_i^n \in [a, b]$ und $w_i^n$ so wählen, dass der Fehler minimiert wird.
\begin{definition}[]{Fehler}
Der Fehler der Quadratur $Q_n(f)$ ist
\begin{align*}
E(n) = \left| \int_{a}^{b} f(x) \dx - Q_n(f; a, b) \right|
\end{align*}
Wir haben \bi{algebraische Konvergenz} wenn $E(n) = \tco{\frac{1}{n^p}}$ mit $p > 0$ und
\bi{exponentielle Konvergenz} wenn $E(n) = \tco{q^n}$ mit $0 \leq q < 1$
\end{definition}
% Der Polynom, das Ansatz, yep... excellent German there
Die Idee, den Integral einer schweren Funktion zu berechnen, ist diese mit einer einfachen Funktion, die analytisch integrierbar ist, zu approximieren.
Wenn wir diese Funktion geschickt wählen, dann ist es sogar möglich, dass wir nur eine solche Funktion für alle Funktionen $f$ benötigen.
% NOTE: Called the b_j from the script c_i here, as the clash with the limits of the integral looked a bit confusing
Wir ersetzen also $f$ durch $f_n \in \text{span} \{ c_0, c_1, \ldots, c_n \}$, wobei die $c_i$ eine Basis des Raums der Funktionen auf $[a, b]$ bilden:
\rmvspace
\begin{align*}
\int_{a}^{b} f(x) \dx x \approx \int_{a}^{b} f_n(x) \dx x = \int_{a}^{b} \left( \sum_{k = 0}^{n} \alpha_k b_k(x) \right) \dx x = \sum_{k = 0}^{n} \alpha_k \int_{a}^{b} c_k(x) \dx x
\end{align*}
Falls wir $c_k(x) = x^k$ haben (was oft der Fall ist, je nach Funktion aber könnte eine rationale Funktion oder andere Arten besser geeignet sein), dann erhalten wir:
\rmvspace
\begin{align*}
\int_{a}^{b} c_k(x) \dx x = \frac{b^{k + 1} - a^{k + 1}}{k + 1}
\end{align*}
% Mit äquidistanten Punkten $x_0, x_1, \ldots, x_n$ können wir die Koeffizienten $\alpha_0, \alpha_1, \ldots, \alpha_n$ mithilfe eines linearen Gleichunssystems berechnen,
% wessen Matrix eine $(n + 1) \times (n + 1)$-Vandermonde Matrix ist, so dass $p_n(x) = \alpha_0 + \alpha_1 x + \ldots + \alpha_n x^n$,
% also sind unsere Gleichungen $p_n(x_j) = f(x_j)$ für alle $j = 0, 1, \ldots, n$.
% Dieser Ansatz hat jedoch grosse Rundungsfehler.
\begin{definition}[]{Lagrange-Polynome}
Für die Knoten $x_0, x_1, \ldots, x_n \in \R$ definieren wir die Polynome
\rmvspace
\begin{align*}
l_i(x) = \prod_{j = 0 \atop j \neq i}^n \frac{x - x_j}{x_i - x_j}
\end{align*}
\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}

View File

@@ -1,31 +0,0 @@
\setcounter{subsection}{2}
\subsection{Grundbegriffe und -Ideen}
Es ist oft nicht möglich oder sinnvoll einen Integral analytisch zu berechnen.
Mit Methoden der Quadratur können wir Integrale nummerisch berechnen.
\innumpy kann \texttt{scipy.integrate.quad} verwendet werden.
Falls man jedoch eine manuelle Implementation erstellen will, so nutzt man oft die Trapez- oder Simpson-Regel, da sie sowohl einfach zu implementieren, wie auch effizient sind.
In gewissen Anwendungen sind Gauss-Quadratur-Formeln nützlich, welche man durch Spektralmethoden ersetzen kann, welche die FFT verwenden und effizienter sind.
\begin{definition}[]{Quadratur}
Ein Integral kann durch eine gewichtete Summe von Funktionswerten der Funktion $f$ an verschiedenen Stellen $c_i^n$ approximiert werden:
\begin{align*}
\int_{a}^{b} f(x) \dx \approx Q_n(f; a, b) := \sum_{i = 1}^{n} \omega_i^n f(c_i^n)
\end{align*}
wobei $\omega_i^n$ die \textit{Gewichte} und $c_i^n \in [a, b]$ die \textit{Knoten} der Quadraturformel sind.
\end{definition}
Wir wollen natürlich wieder $c_i^n \in [a, b]$ und $w_i^n$ so wählen, dass der Fehler minimiert wird.
\begin{definition}[]{Fehler}
Der Fehler der Quadratur $Q_n(f)$ ist
\begin{align*}
E(n) = \left| \int_{a}^{b} f(x) \dx - Q_n(f; a, b) \right|
\end{align*}
Wir haben \bi{algebraische Konvergenz} wenn $E(n) = \tco{\frac{1}{n^p}}$ mit $p > 0$ und
\bi{exponentielle Konvergenz} wenn $E(n) = \tco{q^n}$ mit $0 \leq q < 1$
\end{definition}
Die Idee, den Integral einer schweren Funktion zu berechnen, ist diese mit einer einfachen Funktion, die analytisch integrierbar ist, zu approximieren.
Wenn wir diese Funktion geschickt wählen, dann ist es sogar möglich, dass wir nur eine solche Funktion für alle Funktionen $f$ benötigen.
% Der Polynom, das Ansatz, yep... excellent German there