Praktikum zur Vorlesung Numerik partieller Differentialgleichungen I
Mario Ohlberger, Felix Schindler
~/NPDGL1/notebooks/blatt_05.ipynb
.numpy
und pymor.basic
und machen Sie matplotlib
für das Notebook nutzbar.%matplotlib notebook
import numpy as np
from pymor.basic import *
from matplotlib import pyplot as plt
Sei $\Omega \subset \mathcal{R}^d$ für $d = 1, 2, 3$ ein Gebiet mit Lipschitz-Rand und sei $u \in H^1_0(\Omega)$ die schwache Lösung von
$$\begin{align*} -\nabla\cdot(A \nabla u) &= f &\text{in } \Omega \end{align*}$$für eine gegebene Diffusion $A \in L^\infty(\Omega)$ und rechte Seite $f \in L^2(\Omega)$.
Sei $\mathcal{T}_h$ ein Simplexgitter von $\Omega$ und $S_h^1$ der zugehörige Lagrange-Raum erster Ordnung. Berechnen Sie $u_h \in S_h^1$ als Lösung von
$$\begin{align*} a_h(u_h, v_h) &= l_h(v_h) &&\text{für alle } v_h \in S_h^1, \end{align*}$$wobei $a_h: S_h^1 \times S_h^1 \to \mathbb{R}$ und $l_h: S_h^1 \to \mathbb{R}$ die diskreten Varianten von $a: H^1 \times H^1 \to \mathbb{R}$ und $l: H^1 \to \mathbb{R}$, gegeben durch
$$\begin{align*} a(u, v) &:= \int_\Omega A(x) \nabla u(x) \nabla v(x) \text{d}x &&\text{und}\\ l(v) &:= \int_\Omega f(x) v(x)\text{d}x, \end{align*}$$sind, wenn man alle Integrale durch geeignete Quadraturen ersetzt.
Testen Sie ihr Program für
auf einem Gitter mit 4 Elementen.
Bestimmen Sie den EOC von $\|u - u_h\|_{L^2(\Omega)}$ für eine gegebene Referenzlösung $u \in H^1_0(\Omega)$.
Testen Sie ihr Programm für das Beispiel aus Aufgabe 1 und Gitter mit $2^2, 2^3, 2^4, 2^5$ Elementen, indem Sie $u$ analytisch bestimmen, und senden Sie ihr Jupyter Notebook unter Angabe aller bearbeitenden an Felix Schindler.