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