mirror of
https://github.com/janishutz/eth-summaries.git
synced 2025-11-25 18:44:24 +00:00
[NumCS] Update to new helpers
This commit is contained in:
@@ -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) \\
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user