diff --git a/semester3/numcs/numcs-summary.pdf b/semester3/numcs/numcs-summary.pdf index 0ba0ac8..c812771 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 77cfde1..555a9ad 100644 --- a/semester3/numcs/numcs-summary.tex +++ b/semester3/numcs/numcs-summary.tex @@ -167,6 +167,13 @@ Moral of the story: Use descriptive variable names and do NOT use $t$, $tt$, $tt \section{Ausgleichsrechnung} \input{parts/05_curve-fitting/00_intro.tex} \input{parts/05_curve-fitting/01_linear/00_intro.tex} +\input{parts/05_curve-fitting/01_linear/01_normal-equations.tex} +\input{parts/05_curve-fitting/01_linear/02_orthogonal-transforms.tex} +\input{parts/05_curve-fitting/01_linear/03_total-curve-fitting.tex} +\input{parts/05_curve-fitting/02_non-linear/00_intro.tex} +\input{parts/05_curve-fitting/02_non-linear/01_newton-method-in-rn.tex} +\input{parts/05_curve-fitting/02_non-linear/02_gauss-newton.tex} +\input{parts/05_curve-fitting/02_non-linear/03_further-methods.tex} \end{document} diff --git a/semester3/numcs/parts/05_curve-fitting/01_linear/00_intro.tex b/semester3/numcs/parts/05_curve-fitting/01_linear/00_intro.tex index 14c7a9a..3637a6b 100644 --- a/semester3/numcs/parts/05_curve-fitting/01_linear/00_intro.tex +++ b/semester3/numcs/parts/05_curve-fitting/01_linear/00_intro.tex @@ -1 +1,12 @@ \subsection{Lineare Ausgleichsrechnung} +Die Ansatz der Methode der kleinsten Quadrate ist (ausgedrückt mit Matrizen) ist $\displaystyle \min_{\hat{x} \in \R^n} ||A\hat{x} - b||^2$ und als Summe: +\drmvspace +\begin{align*} + (a, c) = \argmin{p \in \R^n, q \in \R} \sum_{i = 1}^{m} |y_i - p^{\top} x_i - q|^2 +\end{align*} + +\drmvspace +Wobei $y_i$ die $y$-Koordinaten der Messpunkte zugehörig zu $x_i$ sind. + +\innumpy haben wir die Funktionen \texttt{numpy.polyfit} (um ein Polynom zu fitten), oder die allgemeinere Methode \texttt{numpy.linalg.lstsq}. +Um eine eindeutige Lösung zu erhalten können wir die Moore-Penrose (eine Art der Pseudoinversen) verwenden, wofür \texttt{numpy.linalg.pinv} und \texttt{numpy.linalg.pinv2} zur Verfügung stehen diff --git a/semester3/numcs/parts/05_curve-fitting/01_linear/01_normal-equations.tex b/semester3/numcs/parts/05_curve-fitting/01_linear/01_normal-equations.tex new file mode 100644 index 0000000..1a56597 --- /dev/null +++ b/semester3/numcs/parts/05_curve-fitting/01_linear/01_normal-equations.tex @@ -0,0 +1,39 @@ +\subsubsection{Normalengleichung} +\setLabelNumber{all}{9} +\fancydef{Normalengleichung} $A^H Ax = A^H$ + +\inlineremark $A^H A$ ist Hermite-Symmetrisch, und falls $A$ vollen Rank hat, dannn ist $A^H A$ positiv-definit und die Normalengleichung hat eine eindeutige Lösung. +Jedoch ist die Normalengleichung schlecht konditioniert (es gilt: $\cond(A^H A) = \cond(A)^2$). +Für gut konditionierte Matrizen ist dies kein Problem, jedoch ist die Normalengleichung für schlecht konditionierte Matrizen ungeeignet. + + +\inlineremark Man kann die Normalengleichung auch ohne die Berechnung von $A^H A$ berechnen: +\rmvspace +\begin{align*} + A^H Ax = A^H b + \Longleftrightarrow B + \begin{bmatrix} + r \\ x + \end{bmatrix} + := + \begin{bmatrix} + -I & A \\ + A^H & 0 + \end{bmatrix} + \begin{bmatrix} + r \\ x + \end{bmatrix} + = + \begin{bmatrix} + b \\ 0 + \end{bmatrix} +\end{align*} + +\drmvspace +für $r := \frac{1}{a} (Ax - b)$ mit $a > 0$, dann können wir $B$ in obiger Gleichung durch +$B_a = + \begin{bmatrix} + -aI & A \\ + A^H & 0 + \end{bmatrix} +$ diff --git a/semester3/numcs/parts/linAlgRecap.tex b/semester3/numcs/parts/05_curve-fitting/01_linear/02_orthogonal-transforms.tex similarity index 100% rename from semester3/numcs/parts/linAlgRecap.tex rename to semester3/numcs/parts/05_curve-fitting/01_linear/02_orthogonal-transforms.tex diff --git a/semester3/numcs/parts/05_curve-fitting/01_linear/03_total-curve-fitting.tex b/semester3/numcs/parts/05_curve-fitting/01_linear/03_total-curve-fitting.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/numcs/parts/05_curve-fitting/02_non-linear/00_intro.tex b/semester3/numcs/parts/05_curve-fitting/02_non-linear/00_intro.tex index e69de29..a6825c2 100644 --- a/semester3/numcs/parts/05_curve-fitting/02_non-linear/00_intro.tex +++ b/semester3/numcs/parts/05_curve-fitting/02_non-linear/00_intro.tex @@ -0,0 +1 @@ +\subsection{Nichtlineare Ausgleichsrechnung} diff --git a/semester3/numcs/parts/05_curve-fitting/02_non-linear/01_newton-method-in-rn.tex b/semester3/numcs/parts/05_curve-fitting/02_non-linear/01_newton-method-in-rn.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/numcs/parts/05_curve-fitting/02_non-linear/02_gauss-newton.tex b/semester3/numcs/parts/05_curve-fitting/02_non-linear/02_gauss-newton.tex new file mode 100644 index 0000000..e69de29 diff --git a/semester3/numcs/parts/05_curve-fitting/02_non-linear/03_further-methods.tex b/semester3/numcs/parts/05_curve-fitting/02_non-linear/03_further-methods.tex new file mode 100644 index 0000000..e69de29