diff --git a/01_GKZ/tutorial_1_numbers.ipynb b/01_GKZ/tutorial_1_numbers.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..570f80fb7016450d95f3d50a0a3dc70ae7641597
--- /dev/null
+++ b/01_GKZ/tutorial_1_numbers.ipynb
@@ -0,0 +1,244 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Archimedean Circumference\n",
+    "\n",
+    "Das wohl älteste bekannte Verfahren zur Bestimmung des Kreisumfanges geht auf Archimedes zurück (ca. 250 v.Chr) und approximiert den Kreisumfang mittels einbeschriebener regelmäßiger Polygone. Durch Verdopplung der Kanten wird die Approximation sukzessiv verbessert. In dieser Aufgabe wollen wir untersuchen, ob sich das Verfahren geeignet auf auf einem Computer implementieren lässt.\n",
+    "\n",
+    "![](imgs/pi_approx.png)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**1)** Wie lautet die Formel für den Umfang eines Kreises mit Radius $r$? Welchen Umfang hat der Einheitskreis?\n",
+    "___\n",
+    "\n",
+    "**2)** Gegeben sei der Einheitskreis und ein einbeschriebenes Quadrat (siehe Abbildung (a)). Berechnen Sie die Seitenlänge und den Umfang des einbeschriebenen Quadrates.\n",
+    "___\n",
+    "\n",
+    "**3)** Durch Verdopplung der Kanten erhält man aus dem Viereck ein Achteck dann ein Sechzehneck, usw (siehe Abbildung (b)). Leiten Sie eine Formel her, welche aus der Seitenlänge $s_n$ des $2^n$-Eck die Seitenlänge $s_{n+1}$ des $2^{n+1}$-Eck berechnet. \n",
+    "Hinweis: Ãœberlegen Sie, wo sich in der Abbildung (c) rechte Winkel befinden und nutzen Sie den Satz des Pythagoras.\n",
+    "___\n",
+    "\n",
+    "**4)** Schreiben Sie ein Python Programm, welches unter Verwendung der hergeleiteten Formel den Kreisumfang möglichst genau approximiert. Geben Sie die jeweilige Approximation und den Fehler auf der Konsole für aufsteigende $n$ aus. Erzeugen Sie außerdem unter Verwendung von *matplotlib* einen Graph des Fehlers in Abhängigkeit von $n$. Welche Genauigkeit lässt sich maximal erreichen?\n",
+    "___\n",
+    "\n",
+    "**5)** Lässt sich Genauigkeit der Approximation noch verbessern?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Lösungen\n",
+    "\n",
+    "**1)** $U = 2\\pi r$. Der Umfang des Einheitskreises ist also: $2\\pi$\n",
+    "___\n",
+    "\n",
+    "**2)** Nach dem Satz von Pythagoras gilt: $s_2^2 = r^2 + r^2 = 1 + 1 = 2 \\quad \\Longrightarrow \\quad s_2 = \\sqrt{2}$\n",
+    "\n",
+    "Für den Umfang des Quadrates erhalten wir: $U = 2^2 \\sqrt{2} = 4\\sqrt{2} \\approx 5.656854$\n",
+    "___\n",
+    "\n",
+    "**3)** Da wir den Einheitskreis betrachten gilt: $\\overline{BA}=\\overline{BC}=\\overline{BD}=r=1$. Um $s_{n+1}$ aus $s_n$ zu erhalten, schauen wir uns Abbildung (c) an. Mit Hilfe des Satzes von Pythagoras folgt:\n",
+    "$\\left( \\frac{s_n}{2} \\right)^{\\!\\!2} + \\overline{BE}^{\\,2} = \\overline{BA}^{\\,2} = 1$\n",
+    "\n",
+    "Außerdem gilt: $\\overline{ED} = \\overline{BD} - \\overline{BE} = 1 - \\overline{BE}$\n",
+    "\n",
+    "Erneute Anwendung des Satzes von Pythagoras ergibt dann:\n",
+    "$$s_{n+1}^2 = \\overline{ED}^{\\,2} + \\bigg( \\frac{s_n}{2} \\bigg)^{\\!\\!2}\n",
+    "    = \\Big( 1 - \\overline{BE} \\Big)^{\\,2} + \\bigg( \\frac{s_n}{2} \\bigg)^{\\!\\!2}\\\\\n",
+    "    = \\left( 1 - \\sqrt{1-\\bigg( \\frac{s_n}{2} \\bigg)^{\\!\\!2}} \\;\\right)^{\\!\\!2} + \\bigg( \\frac{s_n}{2} \\bigg)^{\\!\\!2}\\\\\n",
+    "    = 1 - 2\\sqrt{1-\\bigg( \\frac{s_n}{2} \\bigg)^{\\!\\!2}} + 1 - \\bigg(\\frac{s_n}{2} \\bigg)^{\\!\\!2} + \\bigg( \\frac{s_n}{2} \\bigg)^{\\!\\!2}\\\\\n",
+    "    = 2 - 2\\sqrt{1-\\bigg( \\frac{s_n}{2} \\bigg)^{\\!\\!2}}\n",
+    "    = 2 - \\sqrt{4 - s_n^2}$$\n",
+    "    \n",
+    "Für $s_{n+1}$ erhalten wir also: $s_{n+1} =\\sqrt{2-\\sqrt{4-s_n^2}}$\n",
+    "___\n",
+    "\n",
+    "**4)** Das folgende Python Programm approximiert den Kreisumfang. Dabei kommt es zu Auslöschung."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from math import sqrt, fabs, pi\n",
+    "import matplotlib.pyplot as plt\n",
+    "N = 30\n",
+    "err = []\n",
+    "sn = sqrt(2)\n",
+    "for n in range(2, N):\n",
+    "    pn = (2 ** n) * sn\n",
+    "    en = fabs(pn - 2.0 * pi)\n",
+    "    err.append(en)\n",
+    "    #print(\"{0:2d}\\t{1:1.20f}\\t{2:1.20e}\".format(n, pn, en))\n",
+    "    sn = sqrt(2.0 - sqrt(4.0 - sn ** 2))\n",
+    "plt.figure(figsize=(6.0, 4.0))\n",
+    "plt.semilogy(range(2, N), err, \"rx\")\n",
+    "plt.xlim(2, N - 1)\n",
+    "plt.ylim(1e-16, 10)\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Für $n \\le 15$ verbessert sich die Approximation sukzessive. Für $n > 15$ vergrößert sich der Fehler wieder. Gemessen an der Maschinengenauigkeit von $2^{-53}$ ist dies aus numerischer Sicht ein unzureichendes Ergebnis. Problematisch in der Gleichung für $s_{n+1}$ ist die Subtraktion unter der ersten Wurzel. Für kleine $s_n$ wird hier die Differenz von zwei fast gleich großen Zahlen gebildet. Um zu verstehen warum dies zu Problemen führt untersuchen wir im folgenden den relativen Fehler bei der Subtraktion. \n",
+    "\n",
+    "Es bezeichne $\\mathrm{rd} \\colon \\mathbb{R} \\to \\mathbb{M}$ die Rundungsfunktion welche einer reellen Zahl eine Gleitkommazahl in der gewählten Darstellung zuordnet. Der relative Fehler, welcher bei der Rundung entsteht, lässt sich dann angeben als:\n",
+    "$\\bar{\\varepsilon}_x = \\vert \\varepsilon_x \\vert = \\left\\vert \\frac{\\mathrm{rd}(x) - x}{x} \\right\\vert\n",
+    "    \\quad\\text{bzw.}\\quad\n",
+    "    \\mathrm{rd}(x) = x(1+\\varepsilon_x)$\n",
+    "\n",
+    "Für den relativen Fehler der Subtraktion zweier Gleitkommazahlen $x$ und $y$ ergibt sich dann:\n",
+    "$$\\varepsilon_{x-y}\n",
+    "    =\\frac{\\mathrm{rd}\\big(\\mathrm{rd}(x) - \\mathrm{rd}(y)\\big) - (x - y)}{x - y} \\\\\n",
+    "    =\\frac{\\big(x(1+\\varepsilon_x) - y(1+\\varepsilon_y)\\big)(1+\\varepsilon_-) - (x - y)}{x - y}\\\\\n",
+    "    \\approx \\frac{x}{x - y}\\varepsilon_x - \\frac{y}{x - y} \\varepsilon_y + \\varepsilon_-\n",
+    "$$\n",
+    "\n",
+    "Ist also $x \\approx y$, dann sind $|\\tfrac{x}{x - y}|,|\\tfrac{y}{x - y}| > 1$ und es tritt eine Verstärkung des relativen Fehlers auf, welche als Auslöschung bezeichnet wird.\n",
+    "\n",
+    "___\n",
+    "**5)** Um die Auslöschung zu vermeiden erweitern wir die Gleichung für $s_{n+1}$ wie folgt:\n",
+    "$$  s_{n+1} \n",
+    "    = \\sqrt{2-\\sqrt{4-s_n^2}}\n",
+    "    \\\\\n",
+    "    = \\sqrt{2-\\sqrt{4-s_n^2}} \\cdot \\frac{\\sqrt{2+\\sqrt{4-s_n^2}}}{\\sqrt{2+\\sqrt{4-s_n^2}}}\n",
+    "    \\\\\n",
+    "    = \\frac{\\sqrt{2^2 - \\sqrt{4-s_n^2}^2}}{\\sqrt{2+\\sqrt{4-s_n^2}}}\n",
+    "    \\\\\n",
+    "    = \\frac{|s_n|}{\\sqrt{2+\\sqrt{4-s_n^2}}}\n",
+    "$$\n",
+    "Das folgende Programm zeigt den Effekt der Erweiterung."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from math import sqrt, fabs, pi\n",
+    "import matplotlib.pyplot as plt\n",
+    "N = 40\n",
+    "err = []\n",
+    "sn = sqrt(2)\n",
+    "for n in range(2, N):\n",
+    "    pn = 2 ** n * sn\n",
+    "    en = fabs(pn - 2.0 * pi)\n",
+    "    err.append(en)\n",
+    "    #print(\"{0:2d}\\t{1:1.20f}\\t{2:1.20e}\".format(n, pn, en))\n",
+    "    sn = sn / sqrt(2 + sqrt(4 - sn ** 2))\n",
+    "plt.figure(figsize=(6.0, 4.0))\n",
+    "plt.semilogy(range(2, N), err, \"bx\")\n",
+    "plt.xlim(2, N - 1)\n",
+    "plt.ylim(1e-16, 10)\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Machine precision"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "\n",
+    "# Machine precision epsilon\n",
+    "print(np.finfo(np.float32).eps)\n",
+    "print(np.finfo(np.float64).eps)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Smallest and largest fp number\n",
+    "print(np.finfo(np.float32).min, np.finfo(np.float32).max)\n",
+    "print(np.finfo(np.float64).min, np.finfo(np.float64).max)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Absolute smallest fp number\n",
+    "print(np.finfo(np.float32).tiny)\n",
+    "print(np.finfo(np.float64).tiny)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Catastrophic Cancellation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import decimal\n",
+    "from decimal import Decimal\n",
+    "decimal.getcontext().prec = 3\n",
+    "\n",
+    "A = 1.22\n",
+    "B = 3.34\n",
+    "C = 2.28\n",
+    "X = B * B - 4.0 * A * C\n",
+    "\n",
+    "a = Decimal(A)\n",
+    "b = Decimal(B)\n",
+    "c = Decimal(C)\n",
+    "x = b * b - 4 * a *c\n",
+    "\n",
+    "print(type(X), X)\n",
+    "print(type(x), x)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/01_GKZ/tutorial_1_numbers2.ipynb b/01_GKZ/tutorial_1_numbers2.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..e56b62e53d942ecce091239d98559941b4562e44
--- /dev/null
+++ b/01_GKZ/tutorial_1_numbers2.ipynb
@@ -0,0 +1,576 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "## Darstellung von Zahlen"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "### Summe von Potenzen einer Basis\n",
+    "\n",
+    "$x = c_0 \\cdot b^0 + c_1 \\cdot b^1 + \\dots + c_n \\cdot b^n$\n",
+    "\n",
+    "-----\n",
+    "\n",
+    "Beispiele: $128$ und $11,57$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "$128_{10} = 1 \\cdot 10^2 + 2 \\cdot 10^1 + 8 \\cdot 10^0$ \n",
+    "\n",
+    ">$= 1 \\cdot 2^7 + 0 \\cdot 2^6 + \\ldots + 0 \\cdot 2^0$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "$11,57_{10} = 1 \\cdot 10^1 + 1 \\cdot 10^0 + 5 \\cdot 10^{-1} + 7 \\cdot 10^{-2}$\n",
+    "\n",
+    ">$= 1 \\cdot 2^3 + 0 \\cdot 2^2 + 1 \\cdot 2^1 + 1 \\cdot 2^0 + 1 \\cdot 2^{-1} +...$\n",
+    "\n",
+    ">$=8 + 0 + 2 + 1 + 0.5 + \\ldots$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "### Zahlen in Python\n",
+    "\n",
+    "Python numeric built-in types: \n",
+    "* int\n",
+    "* float\n",
+    "* complex\n",
+    "\n",
+    "https://docs.python.org/3.4/library/stdtypes.html#numeric-types-int-float-complex\n",
+    "\n",
+    "NumPy: \n",
+    "* int \\<x>\n",
+    "* uint \\<x>\n",
+    "* float \\<x>\n",
+    "* complex \\<x>\n",
+    "\n",
+    "https://numpy.org/devdocs/user/basics.types.html\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "        14:\t<class 'int'>\n",
+      "    2.3792:\t<class 'float'>\n",
+      "    (3+7j):\t<class 'complex'>\n",
+      "       -11:\t<class 'numpy.int32'>\n",
+      "         5:\t<class 'numpy.uint32'>\n",
+      "      8.23:\t<class 'numpy.float64'>\n"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "numbers = [14, 2.3792, 3+7j, \n",
+    "           np.int32(-11), np.uint32(5), np.float64(8.23)]\n",
+    "for num in numbers:\n",
+    "    print(\"{:10}:\\t{}\".format(num, type(num)))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "source": [
+    "### Beispiele \n",
+    "\n",
+    "* $\\sqrt{2} \\cdot \\sqrt{2} \\stackrel{?}{=} 2$\n",
+    "\n",
+    "* $\\sin(\\pi) \\stackrel{?}{=} 0$\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "False\n"
+     ]
+    }
+   ],
+   "source": [
+    "x = np.sqrt(2)\n",
+    "print(x*x == 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "x = 1.4142135623730951\n",
+      "x*x = 2.0000000000000004\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(\"x = {}\".format(x))\n",
+    "print(\"x*x = {}\".format(x*x))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "False\n"
+     ]
+    }
+   ],
+   "source": [
+    "y = np.sin(np.pi)\n",
+    "print(y == 0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "y = 1.2246467991473532e-16\n",
+      "True\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(\"y = {}\".format(y))\n",
+    "print(np.isclose(y,0))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "## Gleitkommazahlen\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "### Motivation\n",
+    "\n",
+    "Festkommazahl: $x = \\pm m_1 m_2 \\dots m_n \\cdot 10^e$ für feste $n$ und $e$\n",
+    "\n",
+    "z.B. mit $n = 3$ und $e = -2$\n",
+    "\n",
+    "* $0,01 = 1 \\cdot 10^{-2}$\n",
+    "* $3,47 = 347 \\cdot 10^{-2}$\n",
+    "* $9,99 = 999 \\cdot 10^{-2}$\n",
+    "\n",
+    "Darstellbare Zahlen haben gleichen Abstand aber Zahlenbereich eingeschränkt auf [0,00 - 9,99]."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "Gleitkommazahl: $x = \\pm m_1, m_2 \\dots m_n \\cdot 10^e$ für feste $n$ und \"beliebige\" $e$\n",
+    "\n",
+    "* $0,001 = 1 \\cdot 10^{-3}$\n",
+    "* $0,105 = 105 \\cdot 10^{-3}$\n",
+    "* $3,47 = 347 \\cdot 10^{-2}$\n",
+    "* $105.000 = 105 \\cdot 10^{3}$\n",
+    "\n",
+    "Praktisch uneingeschränkter Zahlenbereich... Abstand zwischen darstellbaren Zahlen aber __nicht__ gleich. \n",
+    "\n",
+    "z.B. $106.000 - 105.000 = 1.000 \\neq 0,001 = 0,106 - 0,105$\n",
+    "\n",
+    "Kompromiss zwischen Umfang und Genauigkeit. \n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/GKZ_Strahl.png\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "### Definition\n",
+    "\n",
+    "$\\hat{x} = \\pm m_1, m_2 \\dots m_n \\times b^{e_1\\dots e_k} \\in \\mathbb{G}(b, n)$\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "IEEE 754 bestimmt $b$, $n$ und $k$:\n",
+    "\n",
+    "* 32bit float: 1bit Vorzeichen, 8bit Exponent (k), 23bit Mantisse (n).\n",
+    "* 64bit float: 1bit Vorzeichen, 11bit Exponent (k), 52bit Mantisse (n).\n",
+    "* Basis ist typischerweise 2. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "-3.4028235e+38 3.4028235e+38\n",
+      "-1.7976931348623157e+308 1.7976931348623157e+308\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Smallest and largest fp number\n",
+    "print(np.finfo(np.float32).min, np.finfo(np.float32).max)\n",
+    "print(np.finfo(np.float64).min, np.finfo(np.float64).max)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1.1754944e-38\n",
+      "2.2250738585072014e-308\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Absolute smallest fp number\n",
+    "print(np.finfo(np.float32).tiny)\n",
+    "print(np.finfo(np.float64).tiny)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "8388611\n",
+      "8388611.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "x = 2**23\n",
+    "y = np.float32(x+3)\n",
+    "print(x+3)\n",
+    "print(y)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "$G: \\mathbb{R} \\rightarrow \\mathbb{G}: rd(x) = \\hat{x}$\n",
+    "\n",
+    "$E_{rd}(x) = \\left|x - \\hat{x}\\right| = \\left|x-rd(x)\\right|$}\n",
+    "\n",
+    "Im Allgemeinen wird zum nächsten Wert gerundet. Der Fehler ist also maximal, wenn $x$ in der Mitte zweier benachbarten Gleitkommazahlen liegt. "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/G_fkt.jpg\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "### Abstand zwischen zwei Gleitkommazahlen\n",
+    "\n",
+    "$m_1, m_2 \\dots m_n + 1 \\times b^e - m_1, m_2 \\dots m_n \\times b^e = 0, 0 \\dots 1 \\times b^e$\n",
+    "\n",
+    "> $\\Delta\\mathbb{G} = 1,0 \\dots 0 \\times b^{e - (n-1)}$\n",
+    "\n",
+    "Der Abstand ist nicht konstant, sondern abhängig von der Größe der Zahlen. Dies ist beabsichtigt, damit der relative Fehler konstant bleibt."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/Exakt_darstellbare_Gleitkommazahlen.png\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "### Absoluter vs. relativer Fehler\n",
+    "\n",
+    "Absoluter Fehler: $E_a = |x_a - x|$ \n",
+    "\n",
+    "z.B. \n",
+    "\n",
+    "* $1 + 1 = 3,\\quad E_a = \\left| 3 - 2 \\right| = 1$\n",
+    "\n",
+    "\n",
+    "* $10000 + 10000 = 200001,\\quad E_a = \\left|20001 - 20000\\right| = 1$\n",
+    "           "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "\n",
+    "Relativer Fehler: $E_r = \\frac{E_a}{|x|} = \\frac{|x_a - x|}{|x|}$\n",
+    "\n",
+    "$E_r = \\frac{| 3 - 2 |}{2} = 0,5, \\quad E_r = \\frac{|20001 - 20000|}{20000} = 0,000005$\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "Relativer Fehler zwischen zwei benachbarten Gleitkommazahlen.\n",
+    "\n",
+    "z. B. \n",
+    "\n",
+    "$E_r = \\frac{|106.000-105.500|}{105.500} = \\frac{500}{105.000} =~ 0,0048$\n",
+    "\n",
+    "$E_r = \\frac{|0,106 - 0,1055|}{0,1055} = \\frac{0,0005}{0,1055} =~ 0,0047$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Maschinengenauigkeit\n",
+    "\n",
+    "* maximaler relativer Approximationsfehler bei Verwendung der Gleitkommazahlen $\\mathbb{G}(b,n_m)$ \n",
+    "\n",
+    " $$\\epsilon = \\underset{x \\in \\mathbb{Q}^+}{\\text{max}} \\frac{x-G(x)}{x} \\leq \\frac{b^{e-n_m+1}}{b^e} = b^{-n_m+1}$$\n",
+    " \n",
+    "* alternative Definition \n",
+    "\n",
+    "$$\\epsilon = \\underset{x \\in \\mathbb{Q}}{\\text{arg min}} \\ G(1+x) > 1$$\n",
+    "\n",
+    "* Maschinengenauigkeit: $\\epsilon = b^{-n_m+1}$ \n",
+    "    - Basis\n",
+    "    - Mantissenlänge "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Genauigkeit bei Elementaroperationen\n",
+    "\n",
+    "* Gleitkommazahlen $\\mathbb{G}$ gegenüber    $ \\ +, \\ $  $ -, \\ $  $\\cdot, \\ $  $ / \\ $   **nicht abgeschlossen**\n",
+    "\n",
+    "![](figures/zahlenstrahl2.png)\n",
+    "\n",
+    "$$ x \\ast y \\neq G(x \\ast y) \\neq G(x) \\ast G(y) \\neq G(G(x) \\ast G(y))$$\n",
+    "\n",
+    "\n",
+    "* $G(G(x) \\ast G(y))$ entspricht dem, was Computer berechnet\n",
+    "\n",
+    "\n",
+    "* Relativer Fehler für $ \\ +, \\ $  $\\cdot, \\ $  $/, \\ $ in Größenordnung von Maschinengenauigkeit $\\epsilon$\n",
+    "\n",
+    "* Relativer Fehler für $ \\ - \\ $ unbegrenzt"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Auslöschung...\n",
+    "* ... führender Stellen, Darstellung des Ergebnisses nur mit kleinem Teil der Mantisse\n",
+    "\n",
+    "\n",
+    "* Bei Subtraktion kann **relativer Fehler beliebig groß** werden\n",
+    "\n",
+    "\n",
+    "* Tritt auf bei Bildung der **Differenz zweier ähnlich großer Zahlen** \n",
+    "\n",
+    "**Achtung:** auch Addition einer positiven und einer negativen Zahl"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.1"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/02_LGS/imgs/anz1.png b/02_LGS/imgs/anz1.png
new file mode 100644
index 0000000000000000000000000000000000000000..de9829d049ea91a3ee279efcfa00e3369e56d383
Binary files /dev/null and b/02_LGS/imgs/anz1.png differ
diff --git a/02_LGS/imgs/anz2.png b/02_LGS/imgs/anz2.png
new file mode 100644
index 0000000000000000000000000000000000000000..2f347f2f90641829faa731ad47d2b1fcd84c688f
Binary files /dev/null and b/02_LGS/imgs/anz2.png differ
diff --git a/02_LGS/imgs/anz3.png b/02_LGS/imgs/anz3.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a0d39d71c6bb33a9dfd67bfd5694cfb6130d0b1
Binary files /dev/null and b/02_LGS/imgs/anz3.png differ
diff --git a/02_LGS/imgs/int.png b/02_LGS/imgs/int.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd82c3e4f6ef5bd07c8f8d9608f4fdf2f66c484b
Binary files /dev/null and b/02_LGS/imgs/int.png differ
diff --git a/02_LGS/imgs/int1.png b/02_LGS/imgs/int1.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed2362b993119900b71a6f0c7101c36b64546e63
Binary files /dev/null and b/02_LGS/imgs/int1.png differ
diff --git a/02_LGS/imgs/int2.png b/02_LGS/imgs/int2.png
new file mode 100644
index 0000000000000000000000000000000000000000..7571c3c43b7f915d3ec54605d785bf8819bbad9d
Binary files /dev/null and b/02_LGS/imgs/int2.png differ
diff --git a/02_LGS/imgs/lr.png b/02_LGS/imgs/lr.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d64b9f2d3c6a28e7df4f056cbfe97e8a0dd0d3b
Binary files /dev/null and b/02_LGS/imgs/lr.png differ
diff --git a/02_LGS/imgs/lr_solution.png b/02_LGS/imgs/lr_solution.png
new file mode 100644
index 0000000000000000000000000000000000000000..28b6e5ecd790cdd04bbb113d125723ad86d08804
Binary files /dev/null and b/02_LGS/imgs/lr_solution.png differ
diff --git a/02_LGS/imgs/ols.png b/02_LGS/imgs/ols.png
new file mode 100644
index 0000000000000000000000000000000000000000..1509b791ffae9babf71585cc9de25690bfe5bd18
Binary files /dev/null and b/02_LGS/imgs/ols.png differ
diff --git a/02_LGS/imgs/sq_vs_abs.png b/02_LGS/imgs/sq_vs_abs.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b04fe09cdf3a64ce09037f1a278e830e61b46fe
Binary files /dev/null and b/02_LGS/imgs/sq_vs_abs.png differ
diff --git a/02_LGS/imgs/sq_vs_abs2.png b/02_LGS/imgs/sq_vs_abs2.png
new file mode 100644
index 0000000000000000000000000000000000000000..861da4e7041e03899f8f19c5fd3bebb5270576fc
Binary files /dev/null and b/02_LGS/imgs/sq_vs_abs2.png differ
diff --git a/02_LGS/imgs/sq_vs_abs3.png b/02_LGS/imgs/sq_vs_abs3.png
new file mode 100644
index 0000000000000000000000000000000000000000..5eecaa2d55261d046f1c06e3acdcc96c0e87a3ca
Binary files /dev/null and b/02_LGS/imgs/sq_vs_abs3.png differ
diff --git a/02_LGS/imgs/tls.png b/02_LGS/imgs/tls.png
new file mode 100644
index 0000000000000000000000000000000000000000..96855efbbcc5ea312b8a74f078ce4b173465bad2
Binary files /dev/null and b/02_LGS/imgs/tls.png differ
diff --git a/02_LGS/imgs/tomograph1.png b/02_LGS/imgs/tomograph1.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a416c3f6de8109d28eaf5717b3def1b1d29e025
Binary files /dev/null and b/02_LGS/imgs/tomograph1.png differ
diff --git a/02_LGS/imgs/tomograph2.png b/02_LGS/imgs/tomograph2.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e4637e8c59f432e3f68ac09ec404472eb9c0811
Binary files /dev/null and b/02_LGS/imgs/tomograph2.png differ
diff --git a/02_LGS/tutorial_2_ausgleichsrechnung.ipynb b/02_LGS/tutorial_2_ausgleichsrechnung.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..a313fd0ca566e2a04b0bc02688503a2dd1b3e09e
--- /dev/null
+++ b/02_LGS/tutorial_2_ausgleichsrechnung.ipynb
@@ -0,0 +1,1493 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css\" integrity=\"sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm\" crossorigin=\"anonymous\">\n",
+    "<div class=\"text-center\">\n",
+    "    <h1>Wissenschaftliches Rechnen WiSe 2020/21</h1>\n",
+    "    <h2>Tutorium: Lineare Ausgleichsrechnung</h2>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<h2>Lineare Ausgleichsrechnung</h2>\n",
+    "\n",
+    "Gegeben:\n",
+    "<ul>\n",
+    "    <li>Matrix $A \\in \\mathbb{R}^{n \\times m}$ mit $n > m$</li>\n",
+    "    <li>$b \\in \\mathbb{R}^n$</li>\n",
+    "</ul>\n",
+    "\n",
+    "Was tun, wenn das LGS $Ax = b$ keine Lösung hat?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Einen Vektor $x$ wählen, sodass Residuum $r = Ax - b$ bezüglich einer Norm $||\\cdot||$ minimiert wird."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "notes"
+    }
+   },
+   "source": [
+    "Vektor $b$ liegt nicht im Bild von $A$. Wir suchen stattdessen einen Vektor $\\hat{b}$ im Bild von $A$, welcher möglichst nah an $b$ liegt."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Herleitung der Normalengleichung</h3>\n",
+    "<img src=\"imgs/norm.png\" width=\"100%\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<b>Frage: Wie kann man Orthogonalität ausdrücken?</b>\n",
+    "\n",
+    "Durch das Skalarprodukt!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Vektoren $u$ und $v$ sind orthogonal, falls $u^\\mathsf{T} v = 0$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Residuum muss orthogonal zu allen Spaltenvektoren von A sein:\n",
+    "\n",
+    "$$\n",
+    "    A^\\mathsf{T} r  = 0\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "        a_1^\\mathsf{T}\\\\\n",
+    "       a_2^\\mathsf{T}\\\\\n",
+    "        \\vdots\\\\\n",
+    "        a_m^\\mathsf{T}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    r = \n",
+    "    \\begin{bmatrix}\n",
+    "        a_1^\\mathsf{T} r\\\\\n",
+    "        a_2^\\mathsf{T} r\\\\\n",
+    "        \\vdots\\\\\n",
+    "        a_m^\\mathsf{T} r\n",
+    "    \\end{bmatrix}\n",
+    "    = \n",
+    "    \\begin{bmatrix}\n",
+    "    0\\\\\n",
+    "    0\\\\\n",
+    "    \\vdots\\\\\n",
+    "    0\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\Leftrightarrow A^\\mathsf{T} (Ax - b) = 0\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\Leftrightarrow A^\\mathsf{T}Ax - A^\\mathsf{T}b = 0\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Normalengleichung:\n",
+    "\n",
+    "$$\n",
+    "    \\Leftrightarrow A^\\mathsf{T}Ax = A^\\mathsf{T}b\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Falls $A^\\mathsf{T}A$ regulär ist:\n",
+    "\n",
+    "$$\n",
+    "    x = (A^\\mathsf{T} A)^{-1} A^\\mathsf{T} b\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Der zu $b$ nächste Punkt im Bild von $A$ ist:\n",
+    "\n",
+    "$$ Ax = A (A^\\mathsf{T} A)^{-1} A^\\mathsf{T} b $$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Abstand windschiefer Geraden</h2>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    g(s) = \\begin{bmatrix} -7\\\\2\\\\-3 \\end{bmatrix} + s \\begin{bmatrix} 0\\\\1\\\\2 \\end{bmatrix}\\\\\n",
+    "    h(t) = \\begin{bmatrix} -3\\\\-3\\\\3 \\end{bmatrix} + t \\begin{bmatrix} 1\\\\2\\\\1 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Ansatz:\n",
+    "\n",
+    "Finde $s, t \\in \\mathbb{R}$, sodass\n",
+    "\n",
+    "$$\n",
+    "    g(s) = h(t)\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\begin{bmatrix} -7\\\\2\\\\-3 \\end{bmatrix} + s \\begin{bmatrix} 0\\\\1\\\\2 \\end{bmatrix} = \\begin{bmatrix} -3\\\\-3\\\\3 \\end{bmatrix} + t \\begin{bmatrix} 1\\\\2\\\\1 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "s \\begin{bmatrix} 0\\\\1\\\\2 \\end{bmatrix} - t \\begin{bmatrix} 1\\\\2\\\\1 \\end{bmatrix} = \\begin{bmatrix} -3\\\\-3\\\\3 \\end{bmatrix} - \\begin{bmatrix} -7\\\\2\\\\-3 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "s \\begin{bmatrix} 0\\\\1\\\\2 \\end{bmatrix} + t \\begin{bmatrix} -1\\\\-2\\\\-1 \\end{bmatrix} \n",
+    "= \\begin{bmatrix} 4\\\\-5\\\\6 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\begin{bmatrix} 0 & -1\\\\1 & -2 \\\\2& -1 \\end{bmatrix} \\begin{bmatrix} s\\\\t\\end{bmatrix}\n",
+    "= \\begin{bmatrix} 4\\\\-5\\\\6 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Normalengleichung:\n",
+    "    \n",
+    "$$\n",
+    "\\begin{bmatrix} 0 & 1 & 2\\\\ -1 & -2 & -1 \\end{bmatrix} \\begin{bmatrix} 0 & -1\\\\1 & -2 \\\\2& -1 \\end{bmatrix} \\begin{bmatrix} s\\\\t\\end{bmatrix} = \\begin{bmatrix} 0 & 1 & 2\\\\ -1 & -2 & -1 \\end{bmatrix} \\begin{bmatrix} 4\\\\-5\\\\6 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\begin{bmatrix} 5 & -4\\\\ -4 & 6 \\end{bmatrix} \\begin{bmatrix} s\\\\t\\end{bmatrix} = \\begin{bmatrix} 7\\\\ 0\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\begin{bmatrix} s\\\\t\\end{bmatrix} = \\begin{bmatrix} 3\\\\2\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Punkte, zwischen denen Abstand minimal ist:\n",
+    "\n",
+    "$$\n",
+    "    g(3) = \\begin{bmatrix} -7\\\\2\\\\-3 \\end{bmatrix} + 3 \\begin{bmatrix} 0\\\\1\\\\2 \\end{bmatrix} = \\begin{bmatrix} -7\\\\5\\\\3\\end{bmatrix}\\\\\n",
+    "    h(2) = \\begin{bmatrix} -3\\\\-3\\\\3 \\end{bmatrix} + 2 \\begin{bmatrix} 1\\\\2\\\\1 \\end{bmatrix} = \\begin{bmatrix} -1\\\\1\\\\5 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Abstand:\n",
+    "\n",
+    "$$\n",
+    "    \\left|\\left| \\; \\begin{bmatrix} -7\\\\5\\\\3\\end{bmatrix} - \\begin{bmatrix} -1\\\\1\\\\5 \\end{bmatrix} \\; \\right|\\right| = \\left|\\left| \\; \\begin{bmatrix} 6\\\\-4\\\\2 \\end{bmatrix} \\; \\right|\\right| \\approx 7.48\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<div class=\"text-center\">\n",
+    "    <h1>Lineare Regression</h1>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Lineare Regression</h2>\n",
+    "\n",
+    "Gegeben:\n",
+    "\n",
+    "<ul>\n",
+    "    <li>$x_1, ..., x_n \\in \\mathbb{R}^d$</li>\n",
+    "    <li>$y_1, ..., y_n \\in \\mathbb{R}$</li>\n",
+    "</ul>\n",
+    "\n",
+    "Gesucht: Funktion $f: \\mathbb{R}^d \\rightarrow \\mathbb{R}$, welche den quadratischen Fehler minimiert."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/lr1.png\" style=\"margin-left:auto;margin-right:auto;width:40%\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/lr2.png\" style=\"margin-left:auto;margin-right:auto;width:40%\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Quadratischer Fehler (Sum of squares)</h4>\n",
+    "$$\n",
+    "    \\mathcal{E} = \\underset{i = 1}{\\overset{n}{\\sum}} (y_i - f(x_i))^2\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h3>Quadratischer Fehler</h3>\n",
+    "\n",
+    "Warum nicht die Summe der Beträge minimieren?\n",
+    "\n",
+    "$$\n",
+    "    \\mathcal{E} = \\underset{i = 1}{\\overset{n}{\\sum}} |y_i - f(x_i)|\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<div style=\"display:flex\">\n",
+    "    <div class=\"text-center\">\n",
+    "        <img src=\"imgs/sq_vs_abs2.png\" width=\"100%\">\n",
+    "        Betragsfehler: 8<br>\n",
+    "        Quadratischer Fehler: 32\n",
+    "    </div>\n",
+    "    <div class=\"text-center\">\n",
+    "        <img src=\"imgs/sq_vs_abs.png\" width=\"100%\">\n",
+    "        Betragsfehler: 8<br>\n",
+    "        Quadratischer Fehler: 16\n",
+    "    </div>\n",
+    "    <div class=\"text-center\">\n",
+    "        <img src=\"imgs/sq_vs_abs3.png\" width=\"100%\">\n",
+    "        Betragsfehler: 8<br>\n",
+    "        Quadratischer Fehler: 32\n",
+    "    </div>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<ul>\n",
+    "    <li>Die Lösung ist eindeutig und einfach zu berechnen</li>\n",
+    "    <li>Der Fehler wird möglichst gleichmäßig auf die Punkte verteilt</li>\n",
+    "    <li>Der Betragsfehler wird auch minimiert</li>\n",
+    "    <li>Nachteil: Ausreißer haben starken Effekt auf das Ergebnis</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Die Normalengleichung minimiert den quadratischen Fehler!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Lineare Regression mit Polynomen</h2>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Gegeben:</h4>\n",
+    "<ul>\n",
+    "    <li><b>n</b> Punktpaare $(x_1, y_1), (x_2, y_2), ..., (x_n,y_n)$</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Gesucht:</h4>\n",
+    "<ul>\n",
+    "    <li>Polynom $f: \\mathbb{R} \\rightarrow \\mathbb{R}$ mit $f(x)= \\beta_0 + \\beta_1 x + ... + \\beta_d x^d$ vom Grad $d$</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Ansatz:\n",
+    "\n",
+    "$$\n",
+    "    f(x_1) = y_1\\\\\n",
+    "    f(x_2) = y_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    f(x_n) = y_n\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\beta_0 + \\beta_1 x_1 + ... + \\beta_d x_1^d = y_1\\\\\n",
+    "    \\beta_0 + \\beta_1 x_2 + ... + \\beta_d x_2^d = y_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    \\beta_0 + \\beta_1 x_n + ... + \\beta_d x_n^d = y_n\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Gesucht:\n",
+    "\n",
+    "$$\n",
+    "    \\color{red}{\\beta_0} + \\color{red}{\\beta_1} x_1 + ... + \\color{red}{\\beta_d} x_1^d = y_1\\\\\n",
+    "    \\color{red}{\\beta_0} + \\color{red}{\\beta_1} x_2 + ... + \\color{red}{\\beta_d} x_2^d = y_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    \\color{red}{\\beta_0} + \\color{red}{\\beta_1} x_n + ... + \\color{red}{\\beta_d} x_n^d = y_n\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Dieses LGS hat selten eine Lösung:\n",
+    "\n",
+    "$$\n",
+    "    \\beta_0 + \\beta_1 x_1 + ... + \\beta_d x_1^d \\approx y_1\\\\\n",
+    "    \\beta_0 + \\beta_1 x_2 + ... + \\beta_d x_2^d \\approx y_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    \\beta_0 + \\beta_1 x_n + ... + \\beta_d x_n^d \\approx y_n\\\\\n",
+    "$$\n",
+    "\n",
+    "Wir wollen auch keine exakte Lösung!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<div style=\"display:flex\">\n",
+    "    <div style=\"width:100%\" class=\"text-center\">\n",
+    "        <h3>Approximation</h3>\n",
+    "        <img src=\"imgs/lr.png\" />\n",
+    "    </div>\n",
+    "    <div style=\"width:100%\" class=\"text-center\">\n",
+    "        <h3>Interpolation</h3>\n",
+    "        <img src=\"imgs/int.png\" />\n",
+    "    </div>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "LGS in Matrixform:\n",
+    "    \n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "        1 & x_1 &  ... & x_1^d\\\\\n",
+    "        1 & x_2 &  ... & x_2^d\\\\\n",
+    "        \\vdots  & \\vdots & \\ddots & \\vdots\\\\\n",
+    "        1 & x_n & ... & x_n^d\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\;\n",
+    "    \\begin{bmatrix}\n",
+    "        \\beta_0 \\\\ \\beta_1 \\\\ \\vdots \\\\ \\beta_d\n",
+    "    \\end{bmatrix}\n",
+    "    = \\begin{bmatrix}\n",
+    "        y_1 \\\\ y_2 \\\\ \\vdots \\\\ y_n\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    X \\beta = Y\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Und dann: LGS näherungsweise mit Normalengleichung lösen"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h4>Beispiel</h4>\n",
+    "\n",
+    "Gegeben: Messpunkte $(x_i,y_i)$ mit den Werten (1,1), (2,2), (3,2), (4,3)<br>\n",
+    "\n",
+    "Gesucht: Gerade $f(x)$, die die Punkte approximiert"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Das heißt:\n",
+    "$$\n",
+    "    f(x) = \\beta_0 + \\beta_1x\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    X = \\begin{bmatrix} 1 & 1\\\\ 1 & 2\\\\ 1 & 3\\\\ 1 & 4\\end{bmatrix},\\;\\;\\;\\;\n",
+    "    Y = \\begin{bmatrix} 1 \\\\ 2 \\\\ 2 \\\\ 3\\end{bmatrix}\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Lösungsvektor: \n",
+    "    \n",
+    "$$\n",
+    "    \\begin{bmatrix} \\beta_0 \\\\ \\beta_1 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Normalengleichung:\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix} 1 & 1 & 1 & 1\\\\ 1 & 2 & 3 &4\\end{bmatrix} \\; \\begin{bmatrix} 1 & 1\\\\ 1 & 2\\\\ 1 & 3\\\\ 1 & 4\\end{bmatrix} \\cdot \\beta = \\begin{bmatrix} 1 & 1 & 1 & 1\\\\ 1 & 2 & 3 &4\\end{bmatrix} \\; \\begin{bmatrix} 1 \\\\ 2 \\\\ 2 \\\\ 3\\end{bmatrix}\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\begin{bmatrix} 4 & 10\\\\ 10 & 30\\end{bmatrix} \\cdot \\beta = \\begin{bmatrix} 8 \\\\ 23 \\end{bmatrix}\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\Longrightarrow \\beta = \\begin{bmatrix} 0.5\\\\ 0.6 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    f(x) = 0.6x + 0.5\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/lr_solution.png\" width=\"40%\" style=\"margin-left:auto;margin-right:auto\">"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Ordinary Least Squares vs. Total Least Squares</h2>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Welcher Fehler wird minimiert?</h3>\n",
+    "\n",
+    "<div style=\"display:flex;margin-top:25px\">\n",
+    "    <img src=\"imgs/ols.png\" width=\"50%\"/>\n",
+    "    <img src=\"imgs/tls.png\" width=\"50%\"/>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<div class=\"text-center\">\n",
+    "    <h1>Lösen der Normalengleichung</h1>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Definitheit von Matrizen</h2>\n",
+    "\n",
+    "Sei $A \\in \\mathbb{R}^{n \\times n}$ eine <b>symmetrische Matrix</b>. Wir nennen A\n",
+    "\n",
+    "$$\n",
+    "\\left.\n",
+    "\\begin{aligned}\n",
+    "      &\\text{positiv definit}, &  \\text{falls } x^\\mathsf{T}Ax > 0\\\\\n",
+    "         &\\text{positiv semidefinit}, & \\text{falls } x^\\mathsf{T}Ax \\geq 0\\\\\n",
+    "         &\\text{negativ definit}, & \\text{falls } x^\\mathsf{T}Ax < 0\\\\\n",
+    "         &\\text{negativ semidefinit}, & \\text{falls } x^\\mathsf{T}Ax \\leq 0\\\\\n",
+    "\\end{aligned}\n",
+    "\\;\n",
+    "\\right\\} \\text { für alle } x \\in \\mathbb{R}^n \\setminus \\{0\\}.\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix} x_1 & x_2 \\end{bmatrix}\n",
+    "    \\begin{bmatrix}1 & 0\\\\ 0 & 3 \\end{bmatrix} \n",
+    "    \\begin{bmatrix} x_1 \\\\ x_2 \\end{bmatrix} = x_1^2 + 3x_2^2\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "        1 & 1 & 2\\\\\n",
+    "        1 & 3 & 4\\\\\n",
+    "        2 & 4 & 7\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Sei $A \\in \\mathbb{R}^{n \\times n}$ eine <b>symmetrische</b> Matrix. A ist\n",
+    "\n",
+    "$$\n",
+    "\\begin{array}{l l}\n",
+    "             \\text{positiv definit}, & \\text{falls alle Eigenwerte größer als 0 sind.} \\\\\n",
+    "             \\text{positiv semidefinit},  &\\text{falls alle Eigenwerte größer gleich 0 sind.} \\\\\n",
+    "             \\text{negativ definit},  &\\text{falls alle Eigenwerte kleiner als 0 sind.} \\\\\n",
+    "             \\text{negativ semidefinit},  &\\text{falls alle Eigenwerte kleiner gleich 0 sind.}\\\\\n",
+    "\\end{array}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Hauptminorenkriterium</h3>\n",
+    "\n",
+    "\\begin{bmatrix}\n",
+    "        1 & 1 & 2\\\\\n",
+    "        1 & 3 & 4\\\\\n",
+    "        2 & 4 & 7\\\\\n",
+    "    \\end{bmatrix}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\det 1 = 1\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\det \\begin{bmatrix} 1 & 1 \\\\ 1 & 3 \\end{bmatrix} = 1 \\cdot 3 - 1 \\cdot 1 = 2\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\det \\begin{bmatrix}\n",
+    "        1 & 1 & 2\\\\\n",
+    "        1 & 3 & 4\\\\\n",
+    "        2 & 4 & 7\\\\\n",
+    "    \\end{bmatrix} = 1 \\cdot 3 \\cdot 7 + 1 \\cdot 4 \\cdot 2 + 2 \\cdot 1 \\cdot 4 - 2 \\cdot 3 \\cdot 2 - 4 \\cdot 4 \\cdot 1 - 7 \\cdot 1 \\cdot 1 = 2\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Falls alle Hauptminoren positiv, dann ist $A$ positiv definit.<br>\n",
+    "Falls alle Hauptminoren abwechselnd negativ und positiv sind, ist $A$ negativ definit."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "notes"
+    }
+   },
+   "source": [
+    "Für <b>symmetrische</b> Matrizen!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Cholesky-Zerlegung</h2>\n",
+    "\n",
+    "<h4>Definition (Cholesky-Zerlegung)</h4>\n",
+    "\n",
+    "Sei $A \\in \\mathbb{R}^{n \\times n}$ <b>symmetrisch</b> und <b>positiv definit</b>. Eine Cholesky-Zerlegung für $A$ ist eine Faktorisierung der Matrix in\n",
+    "\n",
+    "$$\n",
+    "    A = L L^\\mathsf{T},\n",
+    "$$ \n",
+    "wobei $L$ eine untere Dreiecksmatrix ist."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Cholesky-Zerlegung berechnen</h3>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "        a_{1,1} & a_{1,2} & a_{1,3} & ...\\\\\n",
+    "        a_{2,1} & a_{2,2} & a_{2,3} & ...\\\\\n",
+    "        a_{3,1} & a_{3,2} & a_{3,3} & ...\\\\\n",
+    "        \\vdots & \\vdots & \\vdots & \\ddots\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\\n",
+    "    = \n",
+    "    \\\n",
+    "    \\begin{bmatrix}\n",
+    "        l_{1,1} & 0 & 0 & ...\\\\\n",
+    "        l_{2,1} & l_{2,2} & 0 & ...\\\\\n",
+    "        l_{3,1} & l_{3,2} & l_{3,3} & ...\\\\\n",
+    "        \\vdots & \\vdots & \\vdots & \\ddots\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\\n",
+    "    \\begin{bmatrix}\n",
+    "        l_{1,1} & l_{2,1} & l_{3,1} & ...\\\\\n",
+    "        0 & l_{2,2} & l_{3,2} & ...\\\\\n",
+    "        0 & 0 & l_{3,3} & ...\\\\\n",
+    "        \\vdots & \\vdots & \\vdots & \\ddots\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "        a_{1,1} & a_{1,2} & a_{1,3} & ...\\\\\n",
+    "        a_{2,1} & a_{2,2} & a_{2,3} & ...\\\\\n",
+    "        a_{3,1} & a_{3,2} & a_{3,3} & ...\\\\\n",
+    "        \\vdots & \\vdots & \\vdots & \\ddots\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\\n",
+    "    = \n",
+    "    \\\n",
+    "    \\begin{bmatrix}\n",
+    "        l_{1,1}^2 & l_{2,1} l_{1,1} & l_{3,1} l_{1,1} & ...\\\\\n",
+    "        l_{2,1} l_{1,1} & l_{2,2}^2 + l_{2,1}^2 & l_{2,1} l_{3,1} + l_{2,2} l_{3,2} & ...\\\\\n",
+    "        l_{3,1} l_{1,1} & l_{3,1} l_{2,1} + l_{3,2} l_{2,2} & l_{3,1}^2 + l_{3,2}^2 + l_{3,3}^2 & ...\\\\\n",
+    "        \\vdots & \\vdots & \\vdots & \\ddots\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Reihenfolge:\n",
+    "    \n",
+    "$$\n",
+    "\\begin{bmatrix}\n",
+    "        l_{1,1} \\color{blue}{(1)} & 0 & 0 & ...\\\\\n",
+    "        l_{2,1} \\color{blue}{(2)} & l_{2,2} \\color{blue}{(3)} & 0 & ...\\\\\n",
+    "        l_{3,1} \\color{blue}{(4)} & l_{3,2} \\color{blue}{(5)} & l_{3,3} \\color{blue}{(6)} & ...\\\\\n",
+    "        \\vdots & \\vdots & \\vdots & \\ddots\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Formel:\n",
+    "    \n",
+    "$$\n",
+    "    l_{i,i} = \\sqrt{a_{i,i} - \\underset{k=1}{\\overset{i - 1}{\\sum}} l_{i,k}^2}\\\\\n",
+    "    \\\\\n",
+    "    l_{i,j} = \\frac{1}{l_{j,j}} \\left( a_{i,j} - \\underset{k=1}{\\overset{j - 1}{\\sum}} l_{i,k} l_{j,k} \\right)\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Beispiel:\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "    4 & 6 & 2\\\\\n",
+    "    6 & 10 & 5\\\\\n",
+    "    2 & 5 & 21\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{1,1} = \\sqrt{\\color{red}4} = \\color{blue}2 \\\\\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "    \\color{red}4 & 6 & 2\\\\\n",
+    "    6 & 10 & 5\\\\\n",
+    "    2 & 5 & 21\n",
+    "\\end{bmatrix} \\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "    \\color{blue}{2} & 0 & 0\\\\\n",
+    "    ? & ? & 0\\\\\n",
+    "    ? & ? & ?\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    l_{2,1} = \\frac{1}{\\color{green}2} \\color{red}6 = \\color{blue}3\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "    4 & 6 & 2\\\\\n",
+    "    \\color{red}6 & 10 & 5\\\\\n",
+    "    2 & 5 & 21\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "    \\color{green}2 & 0 & 0\\\\\n",
+    "    \\color{blue}{3} & ? & 0\\\\\n",
+    "    ? & ? & ?\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    l_{2,2} = \\sqrt{\\color{red}{10} - \\color{green}3^2} = \\color{blue}1\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "    4 & 6 & 2\\\\\n",
+    "    6 & \\color{red}{10} & 5\\\\\n",
+    "    2 & 5 & 21\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "    2 & 0 & 0\\\\\n",
+    "    \\color{green}3 & \\color{blue}{1} & 0\\\\\n",
+    "    ? & ? & ?\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    l_{3,1} = \\frac{1}{\\color{green}2} \\color{red}2 = \\color{blue}1\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "    4 & 6 & 2\\\\\n",
+    "    6 & 10 & 5\\\\\n",
+    "    \\color{red}2 & 5 & 21\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "    \\color{green}2 & 0 & 0\\\\\n",
+    "    3 & 1 & 0\\\\\n",
+    "    \\color{blue}{1} & ? & ?\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    l_{3,2} = \\frac{1}{\\color{green}1} (\\color{red}5 - \\color{orange}1 \\cdot \\color{orange}3) = \\color{blue}2\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "    4 & 6 & 2\\\\\n",
+    "    6 & 10 & 5\\\\\n",
+    "    2 & \\color{red}5 & 21\n",
+    "\\end{bmatrix}\n",
+    "L = \\begin{bmatrix}\n",
+    "    2 & 0 & 0\\\\\n",
+    "    \\color{orange}3 & \\color{green}1 & 0\\\\\n",
+    "    \\color{orange}1 & \\color{blue}{2} & ?\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    l_{3,3} = \\sqrt{\\color{red}{21} - \\color{green}1^2 - \\color{green}2^2} = \\color{blue}4\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "    4 & 6 & 2\\\\\n",
+    "    6 & 10 & 5\\\\\n",
+    "    2 & 5 & \\color{red}{21}\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "    2 & 0 & 0\\\\\n",
+    "    3 & 1 & 0\\\\\n",
+    "    \\color{green}1 & \\color{green}2 & \\color{blue}{4}\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Mit numpy:\n",
+    "\n",
+    "<code>L = np.linalg.cholesky(A)</code>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Laufzeit: $O(n^3)$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Asymptotisch! In der Praxis nur halber Aufwand im Vergleich zu Gauß."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Numerisch stabiler als Gauß!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>LGS lösen mit Cholesky</h2>\n",
+    "\n",
+    "Wir haben $A \\in \\mathbb{R}^{n \\times n}$ mit Cholesky-Zerlegung $A = L L^\\mathsf{T}$.\n",
+    "\n",
+    "Wie kann man mithilfe von $L$ das LGS $A x = b$ lösen?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<ol>\n",
+    "    <li>Löse das LGS $Ly = b$ für $y$ (Vorwärtseinsetzen)</li>\n",
+    "    <li>Löse das LGS $L^\\mathsf{T} x = y$ für $x$ (Rückwärtseinsetzen)</li>\n",
+    "</ol>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Schaffen wir es, dass $A^\\mathsf{T} A$ positiv definit wird?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Günstige Eigenschaften von $A^\\mathsf{T}A$</h2>\n",
+    "\n",
+    "Symmetrisch:\n",
+    "$$\n",
+    "(A^\\mathsf{T} A)^\\mathsf{T} = A^\\mathsf{T} A^{\\mathsf{T}^\\mathsf{T}} = A^\\mathsf{T} A\n",
+    "$$\n",
+    "\n",
+    "Positiv semidefinit:\n",
+    "$$\n",
+    "x^\\mathsf{T} A^\\mathsf{T} A x = (A x)^\\mathsf{T} (A x) = y^\\mathsf{T} y \\geq 0\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Ja, durch viele Gleichungen!\n",
+    "\n",
+    "Ist $A$ überbestimmt und hat vollen Rang, so hat $A^\\mathsf{T}A$ vollen Rang!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Computertomographie mit linearer Ausgleichsrechnung</h3>\n",
+    "\n",
+    "<ol>\n",
+    "    <li>Stell das LGS $A x = b$ auf</li>\n",
+    "    <li>Berechne $A^\\mathsf{T} A$ und $A^\\mathsf{T} b$</li>\n",
+    "    <li>Berechne die Cholesky Zerlegung ($L$) für $A^\\mathsf{T} A$</li>\n",
+    "    <li>Löse das LGS $L y = A^\\mathsf{T}b$ für $y$ durch Vorwärtseinsetzen</li>\n",
+    "    <li>Löse das LGS $L^\\mathsf{T} x = y$ für $x$ durch Rückwärtseinsetzen</li>\n",
+    "</ol>"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.1"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/02_LGS/tutorial_2_beispiel_aufgaben.ipynb b/02_LGS/tutorial_2_beispiel_aufgaben.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..93b053f1db71c27e52dfecb081cfc97ad4ef841d
--- /dev/null
+++ b/02_LGS/tutorial_2_beispiel_aufgaben.ipynb
@@ -0,0 +1,719 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<h2>Aufgabe 1: Lineare Regression</h2>\n",
+    "\n",
+    "Gegeben sind drei Messpunkte $(x_i, y_i)$ mit den konkreten Messwerten:\n",
+    "\n",
+    "<ul>\n",
+    "    <li>(1,1)</li>\n",
+    "    <li>(2,2)</li>\n",
+    "    <li>(3,2)</li>\n",
+    "</ul>\n",
+    "\n",
+    "Gesucht sind zwei Funktionen $f$ und $g$, welche die drei Messpunkte approximieren. Dabei soll $f$ eine Gerade und $g$ ein quadratische Funktion sein."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Das heißt:\n",
+    "    \n",
+    "$$\n",
+    "    f(x) = ax + b\\\\\n",
+    "    g(x) = ax^2 + bx + c\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Aufgaben: </h3>\n",
+    "<ol>\n",
+    "    <li>Stell für beide Funktionen das zu lösende LGS auf!</li>\n",
+    "    <li>Löse die LGS und gib die Funktionen $f$ und $g$ konkret an!</li>\n",
+    "</ol>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für eine Gerade sieht eine mögliche allgemeine Systemmatrix wie folgt aus:\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "        1 & x_1\\\\\n",
+    "        1 & x_2\\\\\n",
+    "        \\vdots & \\vdots\\\\\n",
+    "        1 & x_n\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für eine quadratische Funktion sieht eine mögliche allgemeine Systemmatrix wie folgt aus:\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "        1 & x_1 & x_1^2\\\\\n",
+    "        1 & x_2 & x_2^2\\\\\n",
+    "        \\vdots & \\vdots & \\vdots\\\\\n",
+    "        1 & x_n & x_n^2\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für die Gerade sieht ein mögliches LGS so aus:\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    1 & 1\\\\\n",
+    "    1 & 2\\\\\n",
+    "    1 & 3\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} b \\\\ a \\end{bmatrix} = \\begin{bmatrix} 1 \\\\ 2 \\\\ 2\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Lösen mit der Normalengleichung:\n",
+    "    \n",
+    "$$\n",
+    "\\begin{bmatrix}\n",
+    "    1 & 1 & 1\\\\\n",
+    "    1 & 2 & 3\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    1 & 1\\\\\n",
+    "    1 & 2\\\\\n",
+    "    1 & 3\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} b \\\\ a \\end{bmatrix} = \n",
+    "    \\begin{bmatrix}\n",
+    "    1 & 1 & 1\\\\\n",
+    "    1 & 2 & 3\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} 1 \\\\ 2 \\\\ 2\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    3 & 6\\\\\n",
+    "    6 & 14\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} b \\\\ a \\end{bmatrix} = \n",
+    "    \\begin{bmatrix} 5 \\\\ 11\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\begin{bmatrix} b \\\\ a \\end{bmatrix} = \\begin{bmatrix} \\frac{2}{3} \\\\ \\frac{1}{2} \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    f(x) = \\frac{1}{2}x + \\frac{2}{3}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/aufg1.png\" style=\"margin:auto;\" width=\"40%\" />"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für die quadratische Funktion sieht ein möglich LGS so aus:\n",
+    "    \n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    1 & 1 & 1\\\\\n",
+    "    1 & 2 & 4\\\\\n",
+    "    1 & 3 & 9\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} c \\\\ b \\\\ a \\end{bmatrix} = \\begin{bmatrix} 1 \\\\ 2 \\\\ 2\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Dieses LGS hat eine Lösung!\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix} c \\\\ b \\\\ a \\end{bmatrix} = \\begin{bmatrix} -1 \\\\ 2.5 \\\\ -0.5 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Und mit der Normalengleichung?\n",
+    "    \n",
+    "$$\n",
+    "\\begin{bmatrix}\n",
+    "    1 & 1 & 1\\\\\n",
+    "    1 & 2 & 3\\\\\n",
+    "    1 & 4 & 9\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    1 & 1 & 1\\\\\n",
+    "    1 & 2 & 4\\\\\n",
+    "    1 & 3 & 9\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} c \\\\ b \\\\ a \\end{bmatrix} = \\begin{bmatrix}\n",
+    "    1 & 1 & 1\\\\\n",
+    "    1 & 2 & 3\\\\\n",
+    "    1 & 4 & 9\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} 1 \\\\ 2 \\\\ 2\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    3 & 6 & 14\\\\\n",
+    "    6 & 14 & 36\\\\\n",
+    "    14 & 36 & 98\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix} c \\\\ b \\\\ a \\end{bmatrix} = \n",
+    "    \\begin{bmatrix} 5 \\\\ 11 \\\\ 27 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Gleiche Lösung!\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix} c \\\\ b \\\\ a \\end{bmatrix} = \\begin{bmatrix} -1 \\\\ 2.5 \\\\ -0.5 \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    g(x) = -0.5x^2 + 2.5x - 1\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<div class=\"text-center\">\n",
+    "<b>Das ist eine Interpolation!</b>\n",
+    "    \n",
+    "<img src=\"imgs/aufg2.png\" style=\"margin:auto;\" width=\"40%\" />\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<h2>Aufgabe 2: Cholesky-Zerlegung</h2>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Berechne die Cholesky-Zerlegung folgender Matrizen:\n",
+    "    \n",
+    "$$ A =\n",
+    "    \\begin{bmatrix}\n",
+    "    4 & 0 & 0 & 0\\\\\n",
+    "    0 & 9 & 0 & 0\\\\\n",
+    "    0 & 0 & 36 & 0\\\\\n",
+    "    0 & 0 & 0 & 16\\\\\n",
+    "    \\end{bmatrix} \\quad\n",
+    "    B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für A:\n",
+    "    \n",
+    "$$\n",
+    "    L = \n",
+    "    \\begin{bmatrix}\n",
+    "    2 & 0 & 0 & 0\\\\\n",
+    "    0 & 3 & 0 & 0\\\\\n",
+    "    0 & 0 & 6 & 0\\\\\n",
+    "    0 & 0 & 0 & 4\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "notes"
+    }
+   },
+   "source": [
+    "Für Diagonalmatrizen einfach die Wurzeln der Diagonalterme bilden"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für B:"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{1,1} = \\sqrt{\\color{red}4} = \\color{blue}2\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    \\color{red}4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "\\color{blue}2 & 0 & 0 & 0\\\\\n",
+    "? & ? & 0 & 0\\\\\n",
+    "? & ? & ? & 0\\\\\n",
+    "? & ? & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{2,1} = \\frac{1}{\\color{green}2} \\color{red}2 = \\color{blue}1\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    \\color{red}2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "\\color{green}2 & 0 & 0 & 0\\\\\n",
+    "\\color{blue}1 & ? & 0 & 0\\\\\n",
+    "? & ? & ? & 0\\\\\n",
+    "? & ? & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{2,2} = \\sqrt{\\color{red}{10} - \\color{green}1^2} = \\color{blue}3\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & \\color{red}{10} & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "2 & 0 & 0 & 0\\\\\n",
+    "\\color{green}1 & \\color{blue}3 & 0 & 0\\\\\n",
+    "? & ? & ? & 0\\\\\n",
+    "? & ? & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{3,1} = \\frac{1}{\\color{green}2}  \\color{red}2 = \\color{blue} 1\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    \\color{red}2 & 10 & 11 & 9 \\\\\n",
+    "    8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "\\color{green}2 & 0 & 0 & 0\\\\\n",
+    "1 & 3 & 0 & 0\\\\\n",
+    "\\color{blue}1 & ? & ? & 0\\\\\n",
+    "? & ? & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{3,2} = \\frac{1}{\\color{green}3} (\\color{red}{10} - \\color{orange}1 \\cdot \\color{orange}1) = \\color{blue} 3\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & \\color{red}{10} & 11 & 9 \\\\\n",
+    "    8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "2 & 0 & 0 & 0\\\\\n",
+    "\\color{orange}1 & \\color{green}3 & 0 & 0\\\\\n",
+    "\\color{orange}1 & \\color{blue}3 & ? & 0\\\\\n",
+    "? & ? & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{3,3} = \\sqrt{\\color{red} {11} - \\color{green} 3^2 - \\color{green} 1^2} = \\color{blue}1\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & \\color{red}{11} & 9 \\\\\n",
+    "    8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "2 & 0 & 0 & 0\\\\\n",
+    "1 & 3 & 0 & 0\\\\\n",
+    "\\color{green}1 & \\color{green}3 & \\color{blue}1 & 0\\\\\n",
+    "? & ? & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{4,1} = \\frac{1}{\\color{green}2} \\color{red} 8 = \\color{blue}4\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    \\color{red}8 & 7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "\\color{green}2 & 0 & 0 & 0\\\\\n",
+    "1 & 3 & 0 & 0\\\\\n",
+    "1 & 3 & 1 & 0\\\\\n",
+    "\\color{blue}4 & ? & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{4,2} = \\frac{1}{\\color{green}3} \\color{red} (\\color{red}7 - \\color{orange}4 \\cdot \\color{orange}1) = \\color{blue}1\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    8 & \\color{red}7 & 9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "2 & 0 & 0 & 0\\\\\n",
+    "\\color{orange}1 & \\color{green}3 & 0 & 0\\\\\n",
+    "1 & 3 & 1 & 0\\\\\n",
+    "\\color{orange}4 & \\color{blue}1 & ? & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{4,3} = \\frac{1}{\\color{green}1} \\color{red} (\\color{red}9 - \\color{orange}4 \\cdot \\color{orange}1 - \\color{purple} 1 \\cdot \\color{purple} 3) = \\color{blue}2\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    8 & 7 & \\color{red}9 & 22\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "2 & 0 & 0 & 0\\\\\n",
+    "1 & 3 & 0 & 0\\\\\n",
+    "\\color{orange}1 & \\color{purple}3 & \\color{green}1 & 0\\\\\n",
+    "\\color{orange}4 & \\color{purple}1 & \\color{blue}2 & ?\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "l_{4,4} = \\sqrt{\\color{red}{22} - \\color{green}4^2 - \\color{green}1^2 - \\color{green}2^2} = \\color{blue}1\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "B = \\begin{bmatrix}\n",
+    "    4 & 2 & 2 & 8 \\\\\n",
+    "    2 & 10 & 10 & 7 \\\\\n",
+    "    2 & 10 & 11 & 9 \\\\\n",
+    "    8 & 7 & 9 & \\color{red}{22}\n",
+    "\\end{bmatrix}\n",
+    "\\quad\n",
+    "L = \\begin{bmatrix}\n",
+    "2 & 0 & 0 & 0\\\\\n",
+    "1 & 3 & 0 & 0\\\\\n",
+    "1 & 3 & 1 & 0\\\\\n",
+    "\\color{green}4 & \\color{green}1 & \\color{green}2 & \\color{blue}1\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  }
+ ],
+ "metadata": {
+  "celltoolbar": "Slideshow",
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.1"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/02_LGS/tutorial_2_lgs.ipynb b/02_LGS/tutorial_2_lgs.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..ff52d43c3b4cbd38c73c90a7b5ce93c83b49bb7b
--- /dev/null
+++ b/02_LGS/tutorial_2_lgs.ipynb
@@ -0,0 +1,1888 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    " <div class=\"text-center\">\n",
+    "    <h1>Wissenschaftliches Rechnen WiSe 2020/21</h1>\n",
+    "    <h2>Tutorium: Lineare Gleichungssysteme</h2>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<h2>Gliederung</h2>\n",
+    "<ul>\n",
+    "    <li>Lineare Gleichungssysteme</li>\n",
+    "    <li>Motivation: Computertomographie</li>\n",
+    "    <li>Lösen von linearen Gleichungssystemen</li>\n",
+    "    <li>Laufzeit, Numerische Stabilität</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<h2> Lineare Gleichungssysteme (in Normalform)</h2>\n",
+    "<h3>Gegeben sind:</h3>\n",
+    "<ul>\n",
+    "    <li>Eine Menge von m <b>unbekannten</b> Variablen $x_1, ..., x_m$</li>\n",
+    "    <li>Eine Menge von n Konstanten (oder Skalaren) $b_1, ..., b_n$</li>\n",
+    "    <li>Eine Menge von $n \\cdot m$ Konstanten $a_{1,1}, ..., a_{n,m}$</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Ein <b>lineares Gleichungssystem in Normalform</b> sieht so aus:\n",
+    "\n",
+    "$$\n",
+    "    a_{1,1} x_1 + ... + a_{1,m} x_m = b_1\\\\\n",
+    "    \\vdots\\\\\n",
+    "    \\underset{\\text{Lineare Funktionen}\\\\\\text{/ Linearkombinationen}}{\\underbrace{a_{n,1} x_1 + ... + a_{n,m} x_m}} = b_n\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>LGS nicht in Normalform:</h3>\n",
+    "\n",
+    "$$\n",
+    "\\begin{aligned}\n",
+    "    x_1 + 3 x_2 + x_3 &= 2 x_3\\\\\n",
+    "    4 x_1 + x_3 - 1 &= 3 - 2x_2\\\\\n",
+    "    x_3 &= 2 x_2 -1\n",
+    "\\end{aligned}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Das gleiche LGS in Normalform:</h3>\n",
+    "$$\n",
+    "\\begin{aligned}\n",
+    "   1 x_1 + 3 x_2 + (-1) x_3 &= 0\\\\\n",
+    "    4 x_1 + 2x_2 + 1 x_3 &= 4\\\\\n",
+    "    0x_1 + 2 x_2 + 1 x_3 &= -1\n",
+    "\\end{aligned}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2> Lineare Gleichungssysteme in Matrixform </h2>\n",
+    "<h3>Gegeben sind:</h3>\n",
+    "<ul>\n",
+    "    <li>Eine Menge von m <b>unbekannten</b> Variablen $x_1, ..., x_m$</li>\n",
+    "    <li>Eine Menge von n Konstanten (oder Skalaren) $b_1, ..., b_n$</li>\n",
+    "    <li>Eine Menge von $n \\cdot m$ Konstanten $a_{1,1}, ..., a_{n,m}$</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<p>\n",
+    "Ein lineares Gleichungssystem, geschrieben als <b>Matrix-Vektor-Produkt</b> $(A x = b)$, sieht so aus:\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & ... & a_{1,m}\\\\\n",
+    "    \\vdots & \\ddots & \\vdots\\\\\n",
+    "    a_{n,1} & ... & a_{n,m}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    x_1\\\\\n",
+    "    \\vdots\\\\\n",
+    "    x_m\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    =\n",
+    "    \\begin{bmatrix}\n",
+    "    b_1\\\\\n",
+    "    \\vdots\\\\\n",
+    "    b_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Erweiterte Koeffizientenmatrix:</h3>\n",
+    "\n",
+    "$$\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "  a_{1,1} & ... & a_{1,m}\\\\\n",
+    "    \\vdots & \\ddots & \\vdots\\\\\n",
+    "    a_{n,1} & ... & a_{n,m}\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      b_1  \\\\\n",
+    "      \\vdots  \\\\\n",
+    "      b_n  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>LGS in Normalform als Matrix-Vektor-Produkt schreiben</h3>\n",
+    "\n",
+    "<h4>In Normalform:</h4>\n",
+    "$$\n",
+    "\\begin{aligned}\n",
+    "   1 x_1 + 3 x_2 + (-1) x_3 &= 0\\\\\n",
+    "    4 x_1 + 2x_2 + 1 x_3 &= 4\\\\\n",
+    "    0x_1 + 2 x_2 + 1 x_3 &= -1\n",
+    "\\end{aligned}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Als Matrix-Vektor-Produkt:</h3>\n",
+    "$$\n",
+    "\\begin{bmatrix}\n",
+    "1 & 3 & -1\\\\\n",
+    "4 & 2 & 1\\\\\n",
+    "0 & 2 & 1\n",
+    "\\end{bmatrix}\n",
+    "\\begin{bmatrix}\n",
+    "x_1\\\\\n",
+    "x_2\\\\\n",
+    "x_3\n",
+    "\\end{bmatrix}\n",
+    "=\n",
+    "\\begin{bmatrix}\n",
+    "0\\\\\n",
+    "4\\\\\n",
+    "-1\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Als erweiterte Koeffizientenmatrix:</h3>\n",
+    "    \n",
+    "$$\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "1 & 3 & -1\\\\\n",
+    "4 & 2 & 1\\\\\n",
+    "0 & 2 & 1\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "0\\\\\n",
+    "4\\\\\n",
+    "-1\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2> Geometrische Interpretation eines LGS </h2>\n",
+    "\n",
+    "$$\n",
+    "\\begin{align*}\n",
+    "2x - y = 1\\\\\n",
+    "x + y = 5\\\\\n",
+    "\\end{align*}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Zeilen:</h3>\n",
+    "<p> Schnittmenge der Hyperebenen \n",
+    "    \n",
+    "$$y = 2x - 1\\\\y = -x + 5$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/int1.png\" style=\"max-width:50%;margin-left:auto;margin-right:auto;\"/>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Spalten:</h3>\n",
+    "<p> Linearkombination der Spaltenvektoren\n",
+    "\n",
+    "$$\n",
+    "x\n",
+    "\\begin{bmatrix}\n",
+    "2\\\\1\n",
+    "\\end{bmatrix}\n",
+    "+\n",
+    "y\n",
+    "\\begin{bmatrix}\n",
+    "-1\\\\1\n",
+    "\\end{bmatrix}\n",
+    "=\n",
+    "\\begin{bmatrix}\n",
+    "1\\\\5\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<img src=\"imgs/int2.png\" style=\"max-width:50%;margin-left:auto;margin-right:auto;\"/>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Mögliche Anzahl an Lösungen</h2>\n",
+    "\n",
+    "Frage: Wie viele Lösungen kann ein LGS haben?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Möglich ist: Keine, genau eine oder unendlich viele<br><br>\n",
+    "\n",
+    "\n",
+    "<div style=\"display:flex\">\n",
+    "    <div><img src=\"imgs/anz1.png\" width=\"100%\" /></div>\n",
+    "    <div><img src=\"imgs/anz2.png\" width=\"100%\" /></div>\n",
+    "    <div><img src=\"imgs/anz3.png\" width=\"100%\" /></div>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Was nicht möglich ist: 2, 50, 100.000, ..."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h2>Wovon hängt die Anzahl der Lösungen ab?</h2>\n",
+    "\n",
+    "<ul>\n",
+    "    <li>Form der Matrix</li>\n",
+    "    <li>Rang der Matrix</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\text{Rang}(A) = \\text{Anzahl linear unabhängiger Zeilen/Spalten von }A\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\\text{Rang}(A) \\leq \\min{ \\{m,n\\}}$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Wir sagen, dass $A$ <b>vollen Rang</b> hat, falls gilt:\n",
+    "    \n",
+    "$$\n",
+    "    \\text{Rang}(A) = \\min \\{m,n\\}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Anzahl der Lösungen:</h3>\n",
+    "\n",
+    "<ul>\n",
+    "    <li>$\\text{Rang}(A) = n = m$: 1 Lösung (quadratisches System)</li>\n",
+    "    <li>$\\text{Rang}(A) = m < n$: Keine oder genau eine Lösung (überbestimmtes System)</li>\n",
+    "    <li>$\\text{Rang}(A) = n < m$: Unendlich viele Lösungen (unterbestimmtes System)</li>\n",
+    "    <li>$\\text{Rang}(A) < n, \\ \\text{Rang}(A) < m$: Keine oder unendlich viele Lösungen</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Interpretation:</h3>\n",
+    "\n",
+    "<div>\n",
+    "  <table class=\"table\" style=\"width:80%\">\n",
+    "    <thead>\n",
+    "      <tr style=\"text-align:left\">\n",
+    "        <th style=\"width:20%;text-align:left\"></th>\n",
+    "        <th style=\"width:40%;text-align:left\">In Zeilen</th>\n",
+    "        <th style=\"width:40%;text-align:left\">In Spalten</th>\n",
+    "      </tr>\n",
+    "    </thead>\n",
+    "    <tbody>\n",
+    "      <tr style=\"text-align:left\">\n",
+    "        <td style=\"width:20%;text-align:left\">Keine Lösung</td>\n",
+    "        <td style=\"width:40%;text-align:left\">Hyperebenen haben keine Schnittpunkte</td>\n",
+    "        <td style=\"width:40%;text-align:left\">Vektor $b$ liegt nicht im Spaltenraum von $A$</td>\n",
+    "      </tr>\n",
+    "      <tr style=\"text-align:left\">\n",
+    "        <td style=\"width:20%;text-align:left\">Genau eine Lösung</td>\n",
+    "        <td style=\"width:40%;text-align:left\">Hyperebenen haben genau einen Schnittpunkt</td>\n",
+    "        <td style=\"width:40%;text-align:left\">Genau eine Möglichkeit den Vektor $b$ mit Spaltenvektoren von $A$ linear zu kombinieren</td>\n",
+    "      </tr>\n",
+    "      <tr style=\"text-align:left\">\n",
+    "        <td style=\"width:20%;text-align:left\">Unendlich viele Lösungen</td>\n",
+    "        <td style=\"width:40%;text-align:left\">Hyperebenen haben Schnittgerade, Schnittebene, ...</td>\n",
+    "        <td style=\"width:40%;text-align:left\">Unendlich viele Möglichkeiten den Vektor $b$ mit Spaltenvektoren von $A$ linear zu kombinieren</td>\n",
+    "      </tr>\n",
+    "    </tbody>\n",
+    "  </table>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<div class=\"text-center\">\n",
+    "    <h1>Computertomographie</h1>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<ul>\n",
+    "    <li>Ziel: Ins Gewebe hineinschauen</li>\n",
+    "    <li>Materie schwächt Strahlung ab</li>\n",
+    "    <li>Strahlung durch das Gewebe geschossen und Intensität gemssen</li>\n",
+    "    <li>Rekonstruktion am Computer</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Problem:</h4>\n",
+    "<ul> \n",
+    "    <li>Es gibt unendlich viele mögliche Punkte im Gewebe</li>\n",
+    "    <li>Das Gewebe ist kontinuierlich</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Lösung: Diskretisierung</h4>\n",
+    "<img src=\"imgs/tomograph1.png\" width=\"100%\" style=\"margin-left:auto;margin-right:auto\">\n",
+    "<p>Wir legen ein Gitter über das Gewebe und bestimmen die Dichte der Gitterelemente</p>\n",
+    "Annahme: Die Dichte des Gewebes im Gitterelement ist konstant"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Wir schießen Strahlen aus verschiedenen Richtungen\n",
+    "\n",
+    "<img src=\"imgs/tomograph2.png\" width=\"100%\" style=\"margin-left:auto;margin-right:auto\">\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Wir wissen bzw. messen:</h3>\n",
+    "<ul>\n",
+    "    <li>$m$ ist die Anzahl der Gitterelemente</li>\n",
+    "    <li>$c_1, ..., c_m$ unbekannten Dichten in den Gitterelementen $1, ..., m$</li>\n",
+    "    <li>$n = m$ Strahlen (eher $n >> m$)</li>\n",
+    "    <li>Ausgangsintensität $a$</li>\n",
+    "    <li>Gemessene Intensitäten $g_1, ..., g_n$</li>\n",
+    "    <li>Flugdistanz der Strahlen durch Gitterelemente $l_{i,j}$ für $i \\in \\{1,..,n\\}, \\ j \\in \\{1,..,m\\}$</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Beobachtung: Intensität hängt von Dichte und Länge des Gitterelements ab</h3>\n",
+    "\n",
+    "Für einen Strahl und ein Element:\n",
+    "\n",
+    "$$\n",
+    "    g = c^l \\cdot a\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für mehrere Strahlen und Elemente:\n",
+    "\n",
+    "$$\n",
+    "    g_i = \\underset{j = 1}{\\overset{m}{\\prod}} c_j^{l_{i,j}} \\cdot a = c_1^{l_{i, 1}} \\cdot ... \\cdot c_n^{l_{i,n}} \\cdot a\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h3>Wir erhalten dann ein Gleichungssystem:</h3>\n",
+    "\n",
+    "$$\n",
+    "c_1^{l_{1,1}} \\cdot \\ ... \\ \\cdot c_m^{l_{1,m}} \\cdot a = g_1\\\\\n",
+    "\\vdots\\\\\n",
+    "c_n^{l_{n,1}} \\cdot \\ ... \\ \\cdot c_m^{l_{n,m}} \\cdot a = g_n\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Das ist aber kein <b>lineares</b> Gleichungssystem!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\Big\\downarrow\\\\\n",
+    "c_1^{l_{1,1}} \\cdot \\ ... \\ \\cdot c_m^{l_{1,m}} = \\frac{g_1}{a}\\\\\n",
+    "\\vdots\\\\\n",
+    "c_n^{l_{n,1}} \\cdot \\ ... \\ \\cdot c_m^{l_{n,m}} = \\frac{g_n}{a}\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\log(a \\cdot b) = \\log(a) + \\log(b)\\\\\n",
+    "    \\log(a^{c}) = c \\cdot \\log(a)\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\Big\\downarrow\\\\\n",
+    "l_{1,1}  \\log(c_1) + \\ ... \\ +  l_{1,m} \\log(c_m) = \\log\\left(\\frac{g_1}{a}\\right)\\\\\n",
+    "\\vdots\\\\\n",
+    "l_{n,1}  \\log(c_n) + \\ ... \\ + l_{n,m} \\log(c_m) = \\log\\left(\\frac{g_n}{a}\\right)\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\Big\\downarrow\\\\\n",
+    "    \\begin{bmatrix}\n",
+    "    l_{1,1} & ... & l_{1,m}\\\\\n",
+    "    \\vdots & \\ddots & \\vdots\\\\\n",
+    "    l_{n,1} & ... & l_{n,m}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    x_1 = \\log(c_1)\\\\\n",
+    "    \\vdots\\\\\n",
+    "    x_m = \\log(c_m)\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    =\n",
+    "    \\begin{bmatrix}\n",
+    "    b_1 = \\log\\left(\\frac{g_1}{a}\\right)\\\\\n",
+    "    \\vdots\\\\\n",
+    "    b_n = \\log\\left(\\frac{g_n}{a}\\right)\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<div class=\"text-center\">\n",
+    "    <h1>Lösen von LGS Teil 1: Gauß-Algorithmus</h1>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h3>Gegeben:</h3>\n",
+    "<ul>\n",
+    "    <li>Matrix $A \\in \\mathbb{R}^{n \\times n}$</li>\n",
+    "    <li>Vektor $b \\in \\mathbb{R}^n$</li>\n",
+    "</ul>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Gesucht:</h3>\n",
+    "<ul>\n",
+    "    <li>Lösungsvektor $x \\in \\mathbb{R}^n$ mit</li>\n",
+    "</ul>\n",
+    "\n",
+    "$$\n",
+    "    A x = b\n",
+    "$$\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Zeilenstufenform / Dreiecksform</h2>\n",
+    "<ol>\n",
+    "    <li>Alle Nichtnullzeilen stehen oberhalb aller Nullzeilen</li>\n",
+    "    <li>Ein Zeilenkopf steht stets in einer Spalte rechts vom Kopf der Zeile darüber</li>\n",
+    "        (Kopf = Erstes Element einer Zeile ungleich 0)\n",
+    "    <li>Alle Einträge unterhalb eines Kopfes sind Null.</li>\n",
+    "</ol>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Für quadratische Matrizen: <b>Obere Dreiecksmatrix</b>\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & a_{1,2} &... & a_{1,n}\\\\\n",
+    "    0 & a_{2,2} & ... & a_{2,n}\\\\\n",
+    "    \\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "    0 & 0 &... & a_{n,n}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Matrizen in Zeilenstufenform bringen</h3>\n",
+    "\n",
+    "<b>Nur drei elementare Operationen:</b>\n",
+    "<ol>\n",
+    "    <li>Zeilen vertauschen</li>\n",
+    "    <li>Zeilen mit Skalar ungleich Null multiplizieren</li>\n",
+    "    <li>Ein Vielfaches einer Zeile zu einer anderen Zeile addieren</li>\n",
+    "</ol>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Gauß-Algorithmus</h2>\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & a_{1,2} & ... & a_{1,n}\\\\\n",
+    "    a_{2,1} & a_{2,2} & ... & a_{2,n}\\\\\n",
+    "    \\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "    a_{n,1} & a_{n,2} & ... & a_{n,n}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Alle Elemente unter der Diagonalen eliminieren:\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & a_{1,2} & ... & a_{1,n}\\\\\n",
+    "    \\color{red}{a_{2,1}} & a_{2,2} & ... & a_{2,n}\\\\\n",
+    "     \\color{red}{\\vdots} &  \\color{red}{\\vdots} & \\ddots & \\vdots\\\\\n",
+    "     \\color{red}{a_{n,1}} &  \\color{red}{a_{n,2}} &  \\color{red}{...} & a_{n,n}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Beispiel ($4 \\times 4$ Matrix):\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & a_{1,2} & a_{1,3} & a_{1,4}\\\\\n",
+    "    \\color{red}{a_{2,1}} & a_{2,2} & a_{2,3} & a_{2,4}\\\\\n",
+    "     \\color{red}{a_{3,1}} &  \\color{red}{a_{3,2}} & a_{3,3} & a_{3,4}\\\\\n",
+    "     \\color{red}{a_{4,1}} &  \\color{red}{a_{4,2}} &  \\color{red}{a_{4,3}} & a_{4,4}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Reihenfolge:\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & a_{1,2} & a_{1,3} & a_{1,4}\\\\\n",
+    "    \\color{blue}{(1)} \\ \\color{red}{a_{2,1}}& a_{2,2} & a_{2,3} & a_{2,4}\\\\\n",
+    "     \\color{blue}{(2)} \\ \\color{red}{a_{3,1}} & \\color{blue}{(4)} \\ \\color{red}{a_{3,2}} & a_{3,3} & a_{3,4}\\\\\n",
+    "    \\color{blue}{(3)} \\ \\color{red}{a_{4,1}} & \\color{blue}{(5)} \\ \\color{red}{a_{4,2}} & \\color{blue}{(6)} \\ \\color{red}{a_{4,3}} & a_{4,4}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Und wie eliminieren?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    \\color{blue}{a_{1,1}} & a_{1,2} & a_{1,3} & a_{1,4}\\\\\n",
+    "    \\color{red}{a_{2,1}} & a_{2,2} & a_{2,3} & a_{2,4}\\\\\n",
+    "     \\color{red}{a_{3,1}} &  a_{3,2} & a_{3,3} & a_{3,4}\\\\\n",
+    "     \\color{red}{a_{4,1}} &  a_{4,2} &  a_{4,3} & a_{4,4}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    \\color{blue}{a_{1,1}} & a_{1,2} & a_{1,3} & a_{1,4}\\\\\n",
+    "    \\color{red}{0} & a_{2,2} - \\frac{\\color{red}{a_{2,1}}}{\\color{blue}{a_{1,1}}} a_{1,2} & a_{2,3}- \\frac{\\color{red}{a_{2,1}}}{\\color{blue}{a_{1,1}}} a_{1,3} & a_{2,4} - \\frac{\\color{red}{a_{2,1}}}{\\color{blue}{a_{1,1}}} a_{1,4}\\\\\n",
+    "    \\color{red}{0} &  a_{3,2} - \\frac{\\color{red}{a_{3,1}}}{\\color{blue}{a_{1,1}}} a_{1,2} & a_{3,3} - \\frac{\\color{red}{a_{3,1}}}{\\color{blue}{a_{1,1}}} a_{1,3} & a_{3,4} - \\frac{\\color{red}{a_{3,1}}}{\\color{blue}{a_{1,1}}} a_{1,4} \\\\\n",
+    "    \\color{red}{0} &  a_{4,2} - \\frac{\\color{red}{a_{4,1}}}{\\color{blue}{a_{1,1}}} a_{1,2} &  a_{4,3} - \\frac{\\color{red}{a_{4,1}}}{\\color{blue}{a_{1,1}}} a_{1,3} & a_{4,4} - \\frac{\\color{red}{a_{4,1}}}{\\color{blue}{a_{1,1}}} a_{1,4}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\quad\n",
+    "    \\begin{bmatrix}\n",
+    "    b_1\\\\\n",
+    "    b_2 - \\frac{\\color{red}{a_{2,1}}}{\\color{blue}{a_{1,1}}} b_1\\\\\n",
+    "    b_3 - \\frac{\\color{red}{a_{3,1}}}{\\color{blue}{a_{1,1}}} b_1\\\\\n",
+    "    b_4 - \\frac{\\color{red}{a_{4,1}}}{\\color{blue}{a_{1,1}}} b_1\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$ \\vdots $$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Beispiel:\n",
+    "$$\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "-1 & 1 & 1\\\\\n",
+    "1 & -3 & -2\\\\\n",
+    "5 & 1 & 4\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      0 \\\\\n",
+    "      5  \\\\\n",
+    "      3  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\xrightarrow{II \\ - \\ \\color{blue}{(-1)}  I}\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "-1 & 1 & 1\\\\\n",
+    "\\color{red}0 & -2 & -1\\\\\n",
+    "5 & 1 & 4\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      0 \\\\\n",
+    "      5  \\\\\n",
+    "      3  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\xrightarrow{III \\ - \\ \\color{blue}{(-5)}  I}\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "-1 & 1 & 1\\\\\n",
+    "0 & -2 & -1\\\\\n",
+    "\\color{red}0 & 6 & 9\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      0 \\\\\n",
+    "      5  \\\\\n",
+    "      3  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\xrightarrow{III \\ - \\ \\color{blue}{(-3)}  II}\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "-1 & 1 & 1\\\\\n",
+    "0 & -2 & -1\\\\\n",
+    "0 & \\color{red}0 & 6\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      0 \\\\\n",
+    "      5  \\\\\n",
+    "      18  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h3>Problem:</h3>\n",
+    "\n",
+    "$$\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "\\color{red}0 & 2 & 1\\\\\n",
+    "1 & 3 & 2\\\\\n",
+    "3 & 3 & 3\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      1  \\\\\n",
+    "      2  \\\\\n",
+    "      3  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "\\xrightarrow{II - \\frac{1}{0}I} \\; ?\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Lösung: Mit einer anderen Zeile vertauschen</h3>\n",
+    "\n",
+    "Aber mit welcher Zeile?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Pivoting</h2>\n",
+    "<br>\n",
+    "Wir befinden uns im $k$-ten Eliminationsschritt, d.h. wir möchten alle Einträge unter $a_{k,k}$ eliminieren.\n",
+    "<br>\n",
+    "\n",
+    "$\\Rightarrow$ Vertausche die Zeile $k$ mit der Zeile, in der sich das betragsmäßig größte Element der gleichen Spalte befindet\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Zurück zu unserem Beispiel:</h4>\n",
+    "\n",
+    "$$\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "0 & 2 & 1\\\\\n",
+    "1 & 3 & 2\\\\\n",
+    "\\color{blue}3 & 3 & 3\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      1  \\\\\n",
+    "      2  \\\\\n",
+    "      3  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\xrightarrow{III \\rightleftarrows I} \\; \n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "3 & 3 & 3\\\\\n",
+    "1 & 3 & 2\\\\\n",
+    "0 & 2 & 1\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      3  \\\\\n",
+    "      2  \\\\\n",
+    "      1  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\xrightarrow{II \\ - \\  \\color{blue}{\\frac{1}{3}}  I} \\; \n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "3 & 3 & 3\\\\\n",
+    "\\color{red}0 & 2 & 1\\\\\n",
+    "0 & 2 & 1\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      3  \\\\\n",
+    "      1  \\\\\n",
+    "      1  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\\\\\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\xrightarrow{III \\ - \\ \\color{blue}0  I} \\; \n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "3 & 3 & 3\\\\\n",
+    "0 & 2 & 1\\\\\n",
+    "\\color{red}0 & 2 & 1\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      3  \\\\\n",
+    "      1  \\\\\n",
+    "      1  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\xrightarrow{III \\ - \\ \\color{blue}1  II} \\; \n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "3 & 3 & 3\\\\\n",
+    "0 & 2 & 1\\\\\n",
+    "0 & \\color{red}0 & 0\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      3  \\\\\n",
+    "      1  \\\\\n",
+    "      0  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h3>Frage: Warum mit der Zeile mit dem betragsmäßig größten Element in der gleichen Spalte tauschen?</h3>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Antwort: <b>Gleitkommazahlen!</b>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$\\Rightarrow$ In jedem Eliminationsschritt entfernen wir uns immer mehr von der eigentlichen Lösung"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Pivoting minimiert den numerischen Fehler und sollte <b>immer</b> verwendet werden!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Und wenn Pivoting fehlschlägt?\n",
+    "\n",
+    "<ul>\n",
+    "    <li>Wenn man keine Zeile nach oben tauschen kann, sodass das Pivotelement $\\neq$ 0 ist</li>\n",
+    "</ul>\n",
+    "\n",
+    "$\\Rightarrow$ Matrix ist singulär & LGS hat keine oder unendlich viele Lösungen"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<div class=\"text-center\">\n",
+    "    <h1>Lösen von LGS Teil 2: Lösungsmenge bestimmen</h1>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h3>Rückwärtseinsetzen</h3>\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & a_{1,2} & ... & a_{1,n}\\\\\n",
+    "    0 & a_{2,2} & ... & a_{2,n}\\\\\n",
+    "    \\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "    0 & 0 & ... & a_{n,n}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    x_1\\\\\n",
+    "    x_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    x_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    =\n",
+    "    \\begin{bmatrix}\n",
+    "    b_1\\\\\n",
+    "    b_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    b_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "\\begin{aligned}\n",
+    "    b_n &= a_{n,n} x_n  &\\Rightarrow x_n &= \\frac{b_n}{a_{n,n}}\\\\\n",
+    "    b_{n-1} &= a_{n-1,n-1} x_{n-1} + a_{n-1,n} x_{n} &\\Rightarrow x_{n-1} &= \\frac{b_{n-1} - a_{n-1,n} x_{n}}{a_{n-1,n-1}}\\\\\n",
+    "    \\vdots\\\\\n",
+    "    b_{1} &= a_{1,1} x_1 + ... + a_{1,n} x_n &\\Rightarrow x_1 &= \\frac{b_1 - a_{1,2} x_2 - \\ ... \\ - a_{1,n}x_n }{a_{1,1}}\\\\\n",
+    "\\end{aligned}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Allgemeine Formel:</h4>\n",
+    "\n",
+    "$$\n",
+    "    x_i = \\frac{b_i - \\sum_{j = i + 1}^{n} a_{i,j} x_j}{a_{i,i}}\n",
+    "$$\n",
+    "für $i$ von n bis 1."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h4>Rückwärtseinsetzen: Beispiel</h4>\n",
+    "$$\n",
+    "[A|b] = \\left[\n",
+    "\\begin{matrix}\n",
+    "-1 & 1 & 1\\\\\n",
+    "1 & -3 & -2\\\\\n",
+    "5 & 1 & 4\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      0  \\\\\n",
+    "      5  \\\\\n",
+    "      3  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\n",
+    "\\xrightarrow{\\text{ZSF}}\n",
+    "\\left[\n",
+    "\\begin{matrix}\n",
+    "-1 & 1 & 1\\\\\n",
+    "0 & -2 & -1\\\\\n",
+    "0 & 0 & 6\\\\\n",
+    "\\end{matrix}\n",
+    "\\left|\n",
+    "    \\,\n",
+    "    \\begin{matrix}\n",
+    "      0  \\\\\n",
+    "      5  \\\\\n",
+    "      18  \\\\\n",
+    "    \\end{matrix}\n",
+    "  \\right.\n",
+    "\\right]\\\\\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "\\begin{bmatrix}\n",
+    "-1 & 1 & 1\\\\\n",
+    "0 & -2 & -1\\\\\n",
+    "0 & 0 & 6\\\\\n",
+    "\\end{bmatrix} \\;\n",
+    "\\begin{bmatrix}\n",
+    "x_1\\\\\n",
+    "x_2\\\\\n",
+    "x_3\\\\\n",
+    "\\end{bmatrix} =\n",
+    "\\begin{bmatrix}\n",
+    "0\\\\\n",
+    "5\\\\\n",
+    "18\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$ x_3 = \\frac{18}{6} = 3 $$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$ x_2 = \\frac{5 - (-1) \\cdot x_3}{-2} = \\frac{5 - (-1) \\cdot 3}{-2} = -4 $$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$ x_1 = \\frac{0 - 1 \\cdot x_2 - 1 \\cdot x_3}{-1} = \\frac{0 - 1 \\cdot (-4) - 1 \\cdot 3}{-1} = -1 $$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "$$\n",
+    "x = \\begin{bmatrix}\n",
+    "-1\\\\\n",
+    "-4\\\\\n",
+    "3\\\\\n",
+    "\\end{bmatrix}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<div class=\"text-center\">\n",
+    "    <h1>Laufzeit, Numerische Stabilität</h1>\n",
+    "</div>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Matrixmultiplikation</h2>\n",
+    "\n",
+    "Gegeben:\n",
+    "<ul>\n",
+    "    <li>$A \\in \\mathbb{R}^{n \\times m}$</li>\n",
+    "    <li>$B \\in \\mathbb{R}^{m \\times p}$</li>\n",
+    "</ul>\n",
+    "\n",
+    "Es gilt: $AB \\in \\mathbb{R}^{n \\times p}$ mit\n",
+    "\n",
+    "$$\n",
+    "    (AB)_{i, j} = \\underset{k = 1}{\\overset{m}{\\sum}} A_{i, k} B_{k, j}\n",
+    "$$\n",
+    "\n",
+    "Wir berechnen $n \\cdot p$ Elemente mit einer Laufzeit von $O(m)$ pro Element. Die Gesamtlaufzeit ist $O(nmp)$."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Sind $A$ und $B$ quadratisch, beträgt die Laufzeit $O(n^3)$, wobei n die Anzahl an Zeilen/Spalten ist."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Bessere Algorithmen kommen auf $O(n^{2.807})$.<br><br>\n",
+    "Siehe: <a href=\"https://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations\">https://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations</a>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Transponieren</h2>\n",
+    "\n",
+    "$$\n",
+    "A = \\begin{bmatrix}\n",
+    "a_{1,1} & a_{1,2} & ... & a_{1,m}\\\\\n",
+    "a_{2,1} & a_{2,2} & ... & a_{2,m}\\\\\n",
+    "\\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "a_{n,1} & a_{n,2} & ... & a_{n,m}\\\\\n",
+    "\\end{bmatrix} \\in \\mathbb{R}^{n \\times m} \\Longrightarrow\n",
+    "A^\\mathsf{T} = \\begin{bmatrix}\n",
+    "a_{1,1} & a_{2,1} & ... & a_{n,1}\\\\\n",
+    "a_{1,2} & a_{2,2} & ... & a_{n,2}\\\\\n",
+    "\\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "a_{1,m} & a_{2,m} & ... & a_{n,m}\\\\\n",
+    "\\end{bmatrix} \\in \\mathbb{R}^{m \\times n}\n",
+    "$$\n",
+    "\n",
+    "$$\n",
+    "    (A^\\mathsf{T})_{i,j} = A_{j,i}\n",
+    "$$\n",
+    "\n",
+    "Laufzeit (naiv): $O(nm)$<br>\n",
+    "Quadratische Matrix (naiv): $O(n^2)$\n",
+    "\n",
+    "Mit numpy:<br><code>B = A.T</code><br><code>B = A.transpose()</code>\n",
+    "\n",
+    "Laufzeit in der Praxis: $O(1)$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Lineare Gleichungssysteme</h2>\n",
+    "\n",
+    "Für reguläre Matrizen $A \\in \\mathbb{R}^{n \\times n}$:\n",
+    "<ol>\n",
+    "    <li>Gauß-Elimination: $O(n^3)$</li>\n",
+    "    <li>Rückwärtseinsetzen: $O(n^2)$</li>\n",
+    "</ol>\n",
+    "\n",
+    "Mit numpy:<br>\n",
+    "<code>x = np.linalg.solve(A,b)</code>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Diagonalmatrix</h3>\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & 0 &... & 0\\\\\n",
+    "    0 & a_{2,2} & ... & 0\\\\\n",
+    "    \\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "    0 & 0 &... & a_{n,n}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    x_1\\\\\n",
+    "    x_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    x_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    =\n",
+    "    \\begin{bmatrix}\n",
+    "    b_1\\\\\n",
+    "    b_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    b_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$\n",
+    "\n",
+    "Lösung bestimmen durch:\n",
+    "$\n",
+    "    x_i = \\frac{b_i}{a_{i,i}}\n",
+    "$\n",
+    "\n",
+    "Laufzeit: $O(n)$<br>\n",
+    "\n",
+    "Mit numpy:<br>\n",
+    "<code>x = b / np.diag(A)</code>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Obere Dreiecksmatrix</h3>\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & a_{1,2} &... & a_{1,n}\\\\\n",
+    "    0 & a_{2,2} & ... & a_{2,n}\\\\\n",
+    "    \\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "    0 & 0 &... & a_{n,n}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    x_1\\\\\n",
+    "    x_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    x_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    =\n",
+    "    \\begin{bmatrix}\n",
+    "    b_1\\\\\n",
+    "    b_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    b_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$\n",
+    "\n",
+    "Lösung bestimmen durch: <b>Rückwärtseinsetzen</b><br>\n",
+    "\n",
+    "Laufzeit: $O(n^2)$<br>\n",
+    "\n",
+    "Mit scipy:<br>\n",
+    "<code>x = sp.linalg.solve_triangular(A,b)</code>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "<h3>Untere Dreiecksmatrix</h3>\n",
+    "\n",
+    "$$\n",
+    "    \\begin{bmatrix}\n",
+    "    a_{1,1} & 0 &... & 0\\\\\n",
+    "    a_{2,1} & a_{2,2} & ... & 0\\\\\n",
+    "    \\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
+    "    a_{n,1} & a_{n,2} &... & a_{n,n}\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    \\begin{bmatrix}\n",
+    "    x_1\\\\\n",
+    "    x_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    x_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "    =\n",
+    "    \\begin{bmatrix}\n",
+    "    b_1\\\\\n",
+    "    b_2\\\\\n",
+    "    \\vdots\\\\\n",
+    "    b_n\\\\\n",
+    "    \\end{bmatrix}\n",
+    "$$\n",
+    "\n",
+    "Lösung bestimmen durch: <b>Vorwärtseinsetzen</b><br>\n",
+    "\n",
+    "Laufzeit: $O(n^2)$<br>\n",
+    "\n",
+    "Mit scipy:<br>\n",
+    "<code>x = sp.linalg.solve_triangular(A,b,lower=True)</code>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "<h2>Inverse</h2>\n",
+    "\n",
+    "Sei $A \\in \\mathbb{R}^{n \\times n}$. Die Inverse von $A$ ist eine Matrix $A^{-1} \\in \\mathbb{R}^{n \\times n}$, sodass\n",
+    "\n",
+    "$$\n",
+    "    A^{-1}A = AA^{-1} = I.\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Ist $A$ invertierbar, kann man das LGS $Ax = b$ durch\n",
+    "\n",
+    "$$\n",
+    "    x = A^{-1}b\n",
+    "$$ \n",
+    "\n",
+    "lösen."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Laufzeit: $O(n^3)$<br>\n",
+    "Numerisch sehr instabil<br>\n",
+    "\n",
+    "Mit numpy:<br>\n",
+    "<code>B = np.linalg.inv(A)</code><br>\n",
+    "<code>#B = np.linalg.solve(A, np.identity(n))</code>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "fragment"
+    }
+   },
+   "source": [
+    "Falls A orthogonal ist, gilt:\n",
+    "    \n",
+    "$$\n",
+    "A^{-1} = A^\\mathsf{T}\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "<h2>Ausblick</h2>\n",
+    "\n",
+    "Die meisten LGS in der Praxis sind nicht lösbar<br>\n",
+    "<h4>Gründe:</h4>\n",
+    "<ol>\n",
+    "    <li>Diskretisierung</li>\n",
+    "    <li>Messfehler bzw. -genauigkeit</li>\n",
+    "    <li>Gleitkommazahlen</li>\n",
+    "    <li>Größe</li>\n",
+    "</ol>\n",
+    "\n",
+    "<h3>Lösung: Ausgleichsrechnung</h3>\n",
+    "\n",
+    "$\\Rightarrow$ Nächstes Tutorium"
+   ]
+  }
+ ],
+ "metadata": {
+  "celltoolbar": "Slideshow",
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.1"
+  },
+  "rise": {
+   "scroll": true
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}