{ "cells": [ { "cell_type": "code", "execution_count": 1, "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": 2, "id": "bec0fab0", "metadata": {}, "outputs": [], "source": [ "start = np.array([3,5])\n", "fahrt1 = ...\n", "fahrt2 = ...\n", "fahrt3 = ...\n", "fahrt4 = ..." ] }, { "cell_type": "code", "execution_count": 3, "id": "e55f20bc", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "all the input array dimensions except for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 2 and the array at index 1 has size 1", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mValueError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[3]\u001b[39m\u001b[32m, line 8\u001b[39m\n\u001b[32m 5\u001b[39m plt.xlim((\u001b[32m0\u001b[39m,\u001b[32m10\u001b[39m))\n\u001b[32m 6\u001b[39m plt.ylim((\u001b[32m0\u001b[39m,\u001b[32m10\u001b[39m))\n\u001b[32m----> \u001b[39m\u001b[32m8\u001b[39m \u001b[43mplot_path\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mfahrt1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfahrt2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfahrt3\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfahrt4\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[3]\u001b[39m\u001b[32m, line 3\u001b[39m, in \u001b[36mplot_path\u001b[39m\u001b[34m(start, moves)\u001b[39m\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mplot_path\u001b[39m(start, moves):\n\u001b[32m----> \u001b[39m\u001b[32m3\u001b[39m path = \u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mvstack\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[43m+\u001b[49m\u001b[43m \u001b[49m\u001b[43mmoves\u001b[49m\u001b[43m)\u001b[49m.cumsum(axis=\u001b[32m0\u001b[39m)\n\u001b[32m 4\u001b[39m plt.plot(path[:,\u001b[32m0\u001b[39m], path[:,\u001b[32m1\u001b[39m])\n\u001b[32m 5\u001b[39m plt.xlim((\u001b[32m0\u001b[39m,\u001b[32m10\u001b[39m))\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Computational_and_Data_Science/FS25/CDS104-Databases-and-Data-Processing/code/.venv/lib/python3.13/site-packages/numpy/_core/shape_base.py:292\u001b[39m, in \u001b[36mvstack\u001b[39m\u001b[34m(tup, dtype, casting)\u001b[39m\n\u001b[32m 290\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(arrs, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[32m 291\u001b[39m arrs = (arrs,)\n\u001b[32m--> \u001b[39m\u001b[32m292\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_nx\u001b[49m\u001b[43m.\u001b[49m\u001b[43mconcatenate\u001b[49m\u001b[43m(\u001b[49m\u001b[43marrs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcasting\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcasting\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[31mValueError\u001b[39m: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 2 and the array at index 1 has size 1" ] } ], "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": "code (3.13.2)", "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.13.2" } }, "nbformat": 4, "nbformat_minor": 5 }