Praktikum zu Vorlesung Modellreduktion parametrisierter Systeme
Mario Ohlberger, Felix Schindler, Tim Keil
Aktivieren Sie wie gewohnt ihre Arbeitsumgebung und starten Sie den Jupyter Notebook server, siehe zB Blatt 1, Aufgabe 0.
Erstellen Sie ein neues Python 3
Notebook oder laden Sie dieses von der Homepage herunter.
Importieren Sie numpy
und pymor.basic
und machen Sie matplotlib
für das Notebook nutzbar.
d
. Vergessen Sie nicht den ParameterSpace
.VectorArray
$U$, das aus 30 zufälligen Lösungen besteht. Wir wollen nun den Begriff der Orthogonalen Projektionen behandeln.
Sei dafür $U$ ein beliebiges VectorArray
und $V$ ein VectorArray
gleicher Dimension der Länge 1. Sei außerdem $v_{proj}$ die orthogonale Projektion von $v$ auf den von den Vektoren in $U$ aufgespannten Vektorraum. Dann ist $v - v_{proj}$ orthogonal zu diesem Raum und insbesondere zu jedem Vektor aus $U$. Sind $u_i$, $i = 1, \ldots, N$ die Vektoren in $U$, so gilt also:
Sind nun $\lambda_j$, $j = 1, \ldots, N$ die Koeffizienten von $v_{proj}$ bezüglich der $u_j$ basis, d.h. $\sum_{j=1}^N \lambda_j u_j = v_{proj}$, so folgt:
$$ \sum_{j=1}^N \lambda_j (v_i, v_j) = (v, u_i), \qquad i = 1, \ldots, N.$$Setzten wir $M_{i,j} := (v_i, v_j)$, $R := [(v, u_1), \ldots, (v, u_N)]^T$ und $\Lambda := [\lambda_1, \ldots, \lambda_N]^T$, so erhalten wir das lineare Gleichungssystem
$$ M \cdot \Lambda = R,$$mit dem wir die Koeffizienten $\lambda_i$ und somit $v_{proj}$ bestimmen können.
Vectorarray
$U$ von Blatt 4 Aufabe 2 und ein Vectorarray
$V$, welches eine weitere Lösung von d
enthält. Hinweis: Benutzen Sie die gramian
-Methode für die Matrix $M$.d
.VectorArray
V mit 100 zufällig gewählten Lösungen von d
. VectorArrays
slicing
verwenden. Dabei erhalten wir ebenfalls einen View in das Original-Array. Es wird kein Kopie der Daten erzeugt.Der folgende Pseudocode definiert den Greedy-Algorithmus in der ursprünglichen Form.
Input: Menge von Vektoren $\mathcal{M} \subset V$, Ziel-Basisgröße $N$. Output: Basis $b_1, \dots, b_N$
$\texttt{for } n:=1 \texttt{ to } N:$ $$ \hspace{-10em} b_n := \text{argmax}_{m \in \mathcal{M}} \Vert m - P_{\text{span}(b_1,\dots,b_n)}(m) \Vert$$ $\texttt{endfor}$
VectorArray
$\mathcal{M}$ welches eine Menge von Vektoren enthält. Hinweis: Wollen wir mit Hilfe eines Skalarprodukt-Operators Normen berechnen, können wir statt apply2
die pairwise_apply2
-Methode verwenden, die gerade die Diagonale der von apply2
berechneten Matrix zurückliefert
VectorArray
$U$ von oben mit $N=30$ und einem geeigneten Produkt an.