Woche 2 Start
This commit is contained in:
parent
8efc5b70c7
commit
a1d30b22ee
175
code/part-2/Linear Algebra Assignment 3.ipynb
Normal file
175
code/part-2/Linear Algebra Assignment 3.ipynb
Normal file
@ -0,0 +1,175 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Übung\n",
|
||||
"\n",
|
||||
"Gegeben ist das folgende Array:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"n = np.array([\n",
|
||||
" [0. , 0. , 0.5, 1. , 1. , 0. , 1. , 0. , 1. ],\n",
|
||||
" [0. , 1. , 1.5, 1. , 0. , 1. , 1. , 0. , 0. ]\n",
|
||||
"])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Die erste Zeile sind dabei x-Werte, die zweite Zeile y-Werte von Punkten. Plotten Sie die Punkte als Linienzug mit `plt.plot(...)`."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Linienzug plotten\n",
|
||||
"# plt.plot(...)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Als nächstes sollen die Punkte rotiert werden. Eine Matrix, die eine Rotation um einen Winkel $\\theta$ durchführt, lautet wie folgt:\n",
|
||||
"\n",
|
||||
"\\begin{equation}\n",
|
||||
"m_1 =\n",
|
||||
"\\begin{bmatrix}\n",
|
||||
"\\cos \\theta & -\\sin \\theta \\\\ \n",
|
||||
"\\sin \\theta & \\cos \\theta \\\\\n",
|
||||
"\\end{bmatrix}\n",
|
||||
"\\end{equation}\n",
|
||||
"\n",
|
||||
"Implementieren Sie eine Funktion, die für einen gegeben Winkel diese Matrix als `ndarray` erzeugt:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# angle soll in Grad angegeben werden\n",
|
||||
"def rotation_matrix(angle):\n",
|
||||
" pass\n",
|
||||
"\n",
|
||||
"# mögliche Tests\n",
|
||||
"# assert(np.allclose(rotation_matrix(90).dot(np.array([1,0])), np.array([0,1])))\n",
|
||||
"# assert(np.allclose(rotation_matrix(-90).dot(np.array([1,0])), np.array([0,-1])))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Zum Rotieren aller Punkte muss jeder Punkt mit der Matrix `m` multipliziert werden. Rotieren Sie alle Punkte um 60 Grad und plotten Sie das Ergebnis erneut (Bonus: Versuchen Sie ohne `for`-Schleife auszukommen):"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# n_rot soll die rotierten Punkte enthalten, n_rot.shape == n.shape\n",
|
||||
"n_rot = ...\n",
|
||||
"\n",
|
||||
"# und erneut plotten..."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Als nächstes sollen die Punkte bezüglich des Ursprungs skaliert werden werden. Eine Matrix, die eine Skalierung in x-Richtung mit Faktor $s_x$ und in y-Richtung mit Faktor $s_y$ durchführt, lautet:\n",
|
||||
"\n",
|
||||
"\\begin{equation}\n",
|
||||
"m_2 =\n",
|
||||
"\\begin{bmatrix}\n",
|
||||
"s_x & 0 \\\\ \n",
|
||||
"0 & s_y \\\\\n",
|
||||
"\\end{bmatrix}\n",
|
||||
"\\end{equation}\n",
|
||||
"\n",
|
||||
"Implementieren Sie eine Funktion, die für einen gegeben Winkel diese Matrix als `ndarray` erzeugt:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def scale_matrix(sx, sy):\n",
|
||||
" pass\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# todo test schreiben?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Skalieren Sie die gegebenen Punkte um beliebige Faktoren und plotten Sie die ursprünglichen und skalierten Punkte im selben Diagramm:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Punkte skalieren\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# und plotten\n",
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"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.11.0"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
0
code/part-2/Plots.ipynb
Normal file
0
code/part-2/Plots.ipynb
Normal file
132
code/part-2/Roboterfahrt Aufgabe 1.ipynb
Normal file
132
code/part-2/Roboterfahrt Aufgabe 1.ipynb
Normal file
@ -0,0 +1,132 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "00d20df1",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b986454c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Übung: Roboterbewegung\n",
|
||||
"\n",
|
||||
"Ein Roboter steht in einem Raum, seine Position auf dem Boden wird in ein Koordinatensystem eingetragen - die y-Achse ist dabei die Himmelsrichtung _Nord_, die x-Achse die Himmelsrichtung _Ost_. Zu Beginn steht der Roboter auf der Position $x=3$ und $y=5$. Danach führt der Roboter folgende Bewegungen durch.\n",
|
||||
"\n",
|
||||
"- Fahrt 1 Meter Ost, 2 Meter Nord\n",
|
||||
"- Fahrt 2 Meter Ost, 1 Meter Nord\n",
|
||||
"- Fahrt 2 Meter Ost, 1 Meter Süd\n",
|
||||
"- Fahrt 1 Meter West, 3 Meter Süd\n",
|
||||
"\n",
|
||||
"a) Drücken Sie die 4 Bewegungen als Arrays aus und speichern Sie diese in Python-Variablen."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "bec0fab0",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"start = np.array([3,5])\n",
|
||||
"fahrt1 = ...\n",
|
||||
"fahrt2 = ...\n",
|
||||
"fahrt3 = ...\n",
|
||||
"fahrt4 = ..."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "e55f20bc",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Mit dieser Zelle können Sie die Fahrt des Roboters plotten - einfach ausführen\n",
|
||||
"def plot_path(start, moves):\n",
|
||||
" path = np.vstack([start] + moves).cumsum(axis=0)\n",
|
||||
" plt.plot(path[:,0], path[:,1])\n",
|
||||
" plt.xlim((0,10))\n",
|
||||
" plt.ylim((0,10))\n",
|
||||
"\n",
|
||||
"plot_path(start, [fahrt1, fahrt2, fahrt3, fahrt4])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "9f47078c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"b) Berechnen Sie den Zielpunkt des Roboters nach seiner Fahrt."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "90852486",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3c8684d8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"c) Welche Strecke hat der Roboter zurückgelegt (nicht der direkte Weg)?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "6ee1ca50",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3474df24",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"d) Wie weit wäre der Roboter gefahren, wenn er die direkte Strecke von Start zu Ziel gefahren wäre?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "04a2e60a",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"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.11.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user