CDS104-Databases-and-Data-P.../code/online-part-1/Roboterfahrt Aufgabe 1.ipynb
2025-05-12 21:35:51 +02:00

147 lines
6.3 KiB
Plaintext

{
"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
}