764 lines
108 KiB
Plaintext
764 lines
108 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "902e4b59-77b9-4db6-9ec2-3cff55766dd5",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-03-14T20:28:45.280232Z",
|
|
"start_time": "2026-03-14T20:28:45.240030Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"5j\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from sympy.codegen.ast import none\n",
|
|
"\n",
|
|
"\n",
|
|
"def abs(c):\n",
|
|
" return (c.real**2 + c.imag**2)**0.5\n",
|
|
"\n",
|
|
"def add(c1, c2):\n",
|
|
" return complex(c1.real + c2.real, c1.imag + c2.imag)\n",
|
|
"\n",
|
|
"def sub(c1, c2):\n",
|
|
" # (a+bi) - (c+di) = (a-c) + (b-d)i\n",
|
|
" return complex(c1.real - c2.real, c1.imag - c2.imag)\n",
|
|
"\n",
|
|
"def mul(c1, c2):\n",
|
|
" # (a+bi)(c+di) = (ac-bd) + (ad+bc)i\n",
|
|
" return complex(c1.real * c2.real - c1.imag * c2.imag, c1.real * c2.imag + c1.imag * c2.real)\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"print(mul(1+2j, 2+1j))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "3fb82de2-875a-4dac-935a-e64bad48c895",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-03-14T20:28:45.320152Z",
|
|
"start_time": "2026-03-14T20:28:45.281685Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(5, 5)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def add(v1, v2):\n",
|
|
" return (v1[0] + v2[0], v1[1] + v2[1])\n",
|
|
"\n",
|
|
"def sub(v1, v2):\n",
|
|
" return (v1[0] - v2[0], v1[1] - v2[1])\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"print(add((2, 1), (3, 4)))\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "3a562f0e-162b-4760-ac6b-22587bf0bd60",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-03-14T20:28:45.659050Z",
|
|
"start_time": "2026-03-14T20:28:45.349987Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Intervall: Interval.Ropen(2, 5)\n",
|
|
"Mengenangabe: (2 <= x) & (x < 5)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from sympy import Interval, Symbol\n",
|
|
"\n",
|
|
"# 1. Variable definieren\n",
|
|
"x = Symbol('x')\n",
|
|
"\n",
|
|
"# 2. Intervall erstellen (z.B. [2, 5) - links abgeschlossen, rechts offen)\n",
|
|
"# left_open=False (Standard) bedeutet inklusive 2, right_open=True bedeutet exklusive 5\n",
|
|
"mein_intervall = Interval(2, 5, left_open=False, right_open=True)\n",
|
|
"\n",
|
|
"# 3. In Mengenangabe / Ungleichung umwandeln\n",
|
|
"mengen_angabe = mein_intervall.as_relational(x)\n",
|
|
"\n",
|
|
"print(f\"Intervall: {mein_intervall}\")\n",
|
|
"print(f\"Mengenangabe: {mengen_angabe}\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "5f024814-9f83-4d5f-a81f-4283e47e22b9",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-03-14T20:28:45.760535Z",
|
|
"start_time": "2026-03-14T20:28:45.660677Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Interval.Ropen(2, 5)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from sympy import Symbol, And\n",
|
|
"\n",
|
|
"x = Symbol('x')\n",
|
|
"\n",
|
|
"# Eine Mengenangabe als logische Verknüpfung (2 <= x < 5)\n",
|
|
"mengen_angabe = And(x >= 2, x < 5)\n",
|
|
"\n",
|
|
"# Umwandlung in ein Intervall-Objekt\n",
|
|
"intervall = mengen_angabe.as_set()\n",
|
|
"\n",
|
|
"print(intervall) \n",
|
|
"# Ausgabe: [2, 5)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "b58b7c16-2c79-46a4-bde0-1d8fcc16cfa9",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-03-14T20:28:45.791872Z",
|
|
"start_time": "2026-03-14T20:28:45.765958Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Interval(-2, 2)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from sympy import Symbol, solve_univariate_inequality\n",
|
|
"\n",
|
|
"x = Symbol('x')\n",
|
|
"\n",
|
|
"# Eine Ungleichung definieren\n",
|
|
"ungleichung = x**2 <= 4\n",
|
|
"\n",
|
|
"# Lösen und als Intervall ausgeben lassen (relational=False)\n",
|
|
"intervall = solve_univariate_inequality(ungleichung, x, relational=False)\n",
|
|
"\n",
|
|
"print(intervall)\n",
|
|
"# Ausgabe: [-2, 2]\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "dd0522d3-0612-44f1-9504-1ba48542e37e",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-03-14T20:28:45.850425Z",
|
|
"start_time": "2026-03-14T20:28:45.792950Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Interval.open(-8, 8)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from sympy import Symbol, solve_univariate_inequality, Abs\n",
|
|
"\n",
|
|
"# 1. Symbol als reell definieren\n",
|
|
"x = Symbol('x', real=True)\n",
|
|
"\n",
|
|
"# 2. Die SymPy-eigene Funktion Abs() verwenden\n",
|
|
"# Das verhindert, dass Python-Interne Funktionen dazwischenfunken\n",
|
|
"ungleichung = Abs(x) < 8\n",
|
|
"\n",
|
|
"# 3. Lösen\n",
|
|
"intervall = solve_univariate_inequality(ungleichung, x, relational=False)\n",
|
|
"\n",
|
|
"print(intervall)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"id": "99ed5f78-8032-40eb-99ce-988de647549b",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-04-11T08:47:20.948655Z",
|
|
"start_time": "2026-04-11T08:47:20.602288Z"
|
|
}
|
|
},
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from sympy import Interval\n",
|
|
"\n",
|
|
"def plot_interval(intervall, x_range=(0, 10)):\n",
|
|
" fig, ax = plt.subplots(figsize=(8, 2))\n",
|
|
"\n",
|
|
" # Zahlenstrahl-Optik\n",
|
|
" ax.set_xlim(x_range)\n",
|
|
" ax.set_ylim(-1, 1)\n",
|
|
" ax.set_yticks([])\n",
|
|
" ax.spines['top'].set_visible(False)\n",
|
|
" ax.spines['right'].set_visible(False)\n",
|
|
" ax.spines['left'].set_visible(False)\n",
|
|
" ax.spines['bottom'].set_position('center')\n",
|
|
"\n",
|
|
" # Start- und Endpunkte extrahieren\n",
|
|
" start, end = float(intervall.start), float(intervall.end)\n",
|
|
"\n",
|
|
" # Die Linie für das Intervall zeichnen\n",
|
|
" ax.plot([start, end], [0, 0], color='blue', lw=4)\n",
|
|
"\n",
|
|
" # Punkte zeichnen: gefüllt = inklusive, weiß/leer = exklusive\n",
|
|
" ax.plot(start, 0, 'o', color='blue', mfc='blue' if not intervall.left_open else 'white', markersize=10)\n",
|
|
" ax.plot(end, 0, 'o', color='blue', mfc='blue' if not intervall.right_open else 'white', markersize=10)\n",
|
|
"\n",
|
|
" plt.title(f\"Intervall: {intervall}\")\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"# Beispiel: [2, 5)\n",
|
|
"mein_intervall = Interval(2, 5, left_open=False, right_open=True)\n",
|
|
"plot_interval(mein_intervall, x_range=(0, 7))\n"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 800x200 with 1 Axes>"
|
|
],
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAogAAADECAYAAAAcTNCEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGr5JREFUeJzt3Ql4VNX9xvFfQlAUEJGwyCKyuWJFQIUWRGVtrSBQQdCyPbQuVLGiRdQWbatWqaIiipUCipQiD6BYKjuWTRTRgogFVLBsAdlBwpLk/p/3lJv/nEmALBMGJt/P89wnmZuZuXfO3My88zvnnkkys8AAAACAo5LDXwAAAAACIgAAAHKggggAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEkEPPnj0tCAKrWbNm9rp58+a5BcenNlPbqQ2Lo+rVq1t6err98Ic/tFNBSkqK/fe//7W777473rsCnFYIiEA+Q1OjRo3y3WZnnXWWDR482Fq0aFGsQ9OAAQMKdHu9uSda4NKxoDYJl4yMDNu6datNnDjRLrnkEjtd/e53v7OPPvrIFi9enL2uY8eO9ve//92+/vpr+/777+0///mP/fnPf7Zy5crFrP0il2uvvTb7emrX559/3h599FE788wzC/34gOIiJd47ABQHZ599tj3++ONu+de//hXv3Tnt3HPPPbZ9+3Z74403LNG8+OKLtnTpUitZsqT94Ac/sLvuusuuv/56q1+/vguMp5PU1FQX5KPD/F/+8hfbvHmzvfXWW66ad8UVV9ivfvUr+8lPfmINGza0gwcPFrr9In311Vfe5dGjR9uf/vQn6969u/sdwIkREIHTPHgeOHAg3rtxWipRooQlJyfbkSNH4rofCxYssEmTJmVfXr16tY0YMcJ69OhhQ4YMsdPJHXfc4Sp27733nrf+Zz/7WY4PRsuWLbM333zTbr/9dvvrX/8as/bLzZ49e2zmzJnWq1cvAiKQR3QxA4WgasS+ffusatWqNmXKFPf7tm3b3Bu7wkfYvarql6iCGHaDqcs5dPHFF7uuxR07drjxW6qI3Hzzzbl2cV933XU2fPhwV13auHGjde7cOXt9tF/+8pfub5dffrm7rMqN9lldfdrOli1b3JvzeeedV6DHX6NGDbfvBRE+Ho1Ve+6551y77d+/3yZPnuwqUaF169a5apqqamHbRY6FVDfl0KFDXWVKlai1a9fab37zG0tKSsq1i7t///6uwnTo0CG76qqrXEBUt2i0iy66yN2mX79+7nL58uXd87pixQr3PCt0/POf/3RVv1hS4JE6dep46xs0aOC2p+1q+7Nnz/a6UiPbtHnz5i5k6rjT9VV5Pffcc3Nsq127djZ//nzX7nv37rV//OMfdtlll+X7GA/dcsstrntZ3ciRcqua677k0ksvtcIqU6aMC/zHM2vWLGvWrJl7HgGcGBVEoJD0xjRjxgz3xvjggw9aq1at3E+FML1Jf/fdd67bUL8r/GgRBQ3RG/KiRYts06ZNrhtMb65dunSxd955x4U//Yz0yiuvuPv8/e9/b6VLl7Zp06a5N23dRm/2kbp27WorV660L774wl1u3bq11a5d273pp6WlueCoEKmfTZo0yfdjVwVIwS0yjOXXsGHDbNeuXfbEE0/YhRdeaPfff7+9/PLLdtttt7m/67KuoxDz5JNPunVh16vGdip8VKtWzV577TUXEhU4n376aTv//PPt17/+tbet3r17W6lSpVyXpwKiArJur7ZTe0a3naphCu6idlMA0mWF1sqVK9udd97pbq/nUPcVC2oDUZuEdP8Kjgpxzz77rAu12vYHH3zgxuJ9/PHH3n2o/Xbv3u0+kCjAawynQrKeq8hqn4Kjjt2BAwe6arSut3DhQhecv/322zwf4+HJIFdffbW9+uqreXqcVapUcT/DD08FpWO5bNmy7rlSGz300EOuOhlN6xRodXzofwbAiQUstAHHwImPgZ49ewbSqFGj7HWjR4926x577DHvusuWLQuWLl2afblChQrueoMHD85xv7NmzQqWL18enHHGGd76hQsXBqtXr86x/fnz5wfJycnedceNGxekpaV56ytXrhxkZGR4+1aqVKkc2+/atau732bNmuXYVs2aNbPXzZs3zy2Rt9VlOVHb6X5kwIABObYxc+ZM77rPPfdccOTIkeCcc87JXvf555/n2LaWRx99NNi3b19Qt25db/1TTz3l7qN69ere9nfv3h2kpqZ61/3FL37h/nb55Zd761euXBnMnj07+7Ken6SkpByPKz093WvjcFt6fMdrkxYtWrjr9erVyx0fVapUCdq0aROsWbMmyMzMDBo3bpx93cmTJwcHDx4MatWqlb1O19+zZ0/wwQcf5GhTHXsp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SpUq2UuzZs1o4hg599xzbdGiRXbkyBH78Y9/7F4bBgwYYLt0ujhiQoW7yOO3VatWbv3EiRPzdT/5mll7yZIlwbBhw7IvJyUlBRs3bgwGDhwY9xnDE22RDh06xH0/EnlJTU117dy8efO470siLzt27Aj69OkT9/1IpKV06dLB6tWrg5YtWwbz5s0Lhg4dGvd9SpRl8ODBwWeffRb3/UjU5emnnw7mz58f9/0oTsvQoUODtWvX5us2+aogqtqiqsDs2bP/P10GgbvctGnTfKVS4FRQrpymtDDbuZOzmItCcnKyde3a1VXGP/zwwyLZRnGlSvi0adNszpw58d6VhFSvXj031Ofrr7+2t956y2rUqBHvXUoY7du3t08++cTefvttN9Tn008/tb59+8Z7txJWyZIl7Y477rBRo0bl63b5CoipqamWkpLintBIuqwSJnA6SUpKshdeeMEWLlxoX3zxRbx3J6HUr1/f9u3b52bvHzFihHXs2JExXDGk0K0hPoMGDYrl3eKojz76yHr16uXGzt59991Wq1YtW7BggZUpU4Y2ioHatWu7dl27dq21bdvWXn31VXvppZesRw/NUYtYu+WWW1y3/pgxY/J92zyXG88//3zXHdekSRNv/TPPPOO6nuNdQk20hS7mom3fV155JVi3bl1QrVq1uD/XibaULFkyqFOnTtCwYcPgqaeeCrZt2xZceumlcd+vRFiqV68epKWlBVdccUX2OrqYi7bNy5UrF+zevZthEjFqz0OHDgWLFi3y1r344ovB4sWL4/7/lYjL9OnTg6lTp+b7dvmqIOpso4yMDKtcubK3XpfT0tLynUyBeBk2bJj99Kc/tRtuuMF1IyG2NPhcXXPqOnrkkUfcSRT9+/enmWNAw3z0mqu2VTtruf766+2+++5zv6tbH7Gls/HXrFljdetGfvsSCmrLli22atUqb53OEr/gggto1BhTm+oElZEjR+b7tvl6JdGLz7Jly6xly5ZeN50uM74Ip1M4VJfnjTfeaOvXr4/37hQLCi1nnnlmvHcjIWjMobrwGzRokL0sXbrUxo0b537Pygq/VxyxojG0derUccEGhaczmC+++GJvnaYb+/bbb2neGOvdu7dt27bNjVcuiHyVHLt06RKkp6cHPXr0CC655JJgxIgRwc6dO4NKlSrFvYyaKGcmXnnllW6R+++/3/1eo0aNuO9bIizDhw8Pdu3aFVx33XVB5cqVs5dSpUrFfd8SZVGXss4Kr1mzZlC/fn13OTMzM2jVqlXc9y1RF7qYY9ueQ4YMca8ROoabNm0azJw50w2T0KwH8X6uE2Fp3LhxcPjw4WDQoEFuKEq3bt2C/fv3B927d4/7viXSkpSUFKxfv96dNV7A+8j/jfr16+c2evDgQTf28Jprrol7QyTK0qJFiyA3o0ePjvu+JcJyLD179oz7viXKMnLkSDe2U68PW7duDWbNmkU4LOI2JyDGtj3Hjx8fbNq0yR3DGzZscJdr164d9/+tRFpuuummYMWKFa7gtGrVqqBv375x36dEW1q3bu3e3+rVq1eg2/NdzAAAAPAwmhkAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAAAiIAAACOjQoiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAAB4CIgAAADwERAAAAHgIiAAAAPAQEAEAAOAhIAIAAMBDQAQAAICHgAgAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAADwERAAAAHgIiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAAB4CIgAAADwERAAAAHgIiAAAAPAQEAEAAOAhIAIAAMBDQAQAAICHgAgAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAADwERAAAAHgIiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAABbp/wDyB18FbGrM/QAAAABJRU5ErkJggg=="
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
}
|
|
],
|
|
"execution_count": 1
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"id": "cdb0080c9d06840a",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-04-11T09:11:05.583539Z",
|
|
"start_time": "2026-04-11T09:11:05.524895Z"
|
|
}
|
|
},
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from sympy import Interval\n",
|
|
"\n",
|
|
"def plot_interval(intervall, x_range=(0, 10)):\n",
|
|
" fig, ax = plt.subplots(figsize=(8, 2))\n",
|
|
"\n",
|
|
" # Zahlenstrahl-Optik\n",
|
|
" ax.set_xlim(x_range)\n",
|
|
" ax.set_ylim(-1, 1)\n",
|
|
" ax.set_yticks([])\n",
|
|
" ax.spines['top'].set_visible(False)\n",
|
|
" ax.spines['right'].set_visible(False)\n",
|
|
" ax.spines['left'].set_visible(False)\n",
|
|
" ax.spines['bottom'].set_position('center')\n",
|
|
"\n",
|
|
" # Start- und Endpunkte extrahieren\n",
|
|
" start, end = float(intervall.start), float(intervall.end)\n",
|
|
"\n",
|
|
" # Die Linie für das Intervall zeichnen\n",
|
|
" ax.plot([start, end], [0, 0], color='blue', lw=4)\n",
|
|
"\n",
|
|
" # Punkte zeichnen: gefüllt = inklusive, weiß/leer = exklusive\n",
|
|
" ax.plot(start, 0, 'o', color='blue', mfc='blue' if not intervall.left_open else 'white', markersize=10)\n",
|
|
" ax.plot(end, 0, 'o', color='blue', mfc='blue' if not intervall.right_open else 'white', markersize=10)\n",
|
|
"\n",
|
|
" plt.title(f\"Intervall: {intervall}\")\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"# Beispiel: [2, 5)\n",
|
|
"mein_intervall = Interval(2, 5, left_open=False, right_open=True)\n",
|
|
"plot_interval(mein_intervall, x_range=(0, 7))"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 800x200 with 1 Axes>"
|
|
],
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAogAAADECAYAAAAcTNCEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGr5JREFUeJzt3Ql4VNX9xvFfQlAUEJGwyCKyuWJFQIUWRGVtrSBQQdCyPbQuVLGiRdQWbatWqaIiipUCipQiD6BYKjuWTRTRgogFVLBsAdlBwpLk/p/3lJv/nEmALBMGJt/P89wnmZuZuXfO3My88zvnnkkys8AAAACAo5LDXwAAAAACIgAAAHKggggAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEkEPPnj0tCAKrWbNm9rp58+a5BcenNlPbqQ2Lo+rVq1t6err98Ic/tFNBSkqK/fe//7W777473rsCnFYIiEA+Q1OjRo3y3WZnnXWWDR482Fq0aFGsQ9OAAQMKdHu9uSda4NKxoDYJl4yMDNu6datNnDjRLrnkEjtd/e53v7OPPvrIFi9enL2uY8eO9ve//92+/vpr+/777+0///mP/fnPf7Zy5crFrP0il2uvvTb7emrX559/3h599FE788wzC/34gOIiJd47ABQHZ599tj3++ONu+de//hXv3Tnt3HPPPbZ9+3Z74403LNG8+OKLtnTpUitZsqT94Ac/sLvuusuuv/56q1+/vguMp5PU1FQX5KPD/F/+8hfbvHmzvfXWW66ad8UVV9ivfvUr+8lPfmINGza0gwcPFrr9In311Vfe5dGjR9uf/vQn6969u/sdwIkREIHTPHgeOHAg3rtxWipRooQlJyfbkSNH4rofCxYssEmTJmVfXr16tY0YMcJ69OhhQ4YMsdPJHXfc4Sp27733nrf+Zz/7WY4PRsuWLbM333zTbr/9dvvrX/8as/bLzZ49e2zmzJnWq1cvAiKQR3QxA4WgasS+ffusatWqNmXKFPf7tm3b3Bu7wkfYvarql6iCGHaDqcs5dPHFF7uuxR07drjxW6qI3Hzzzbl2cV933XU2fPhwV13auHGjde7cOXt9tF/+8pfub5dffrm7rMqN9lldfdrOli1b3JvzeeedV6DHX6NGDbfvBRE+Ho1Ve+6551y77d+/3yZPnuwqUaF169a5apqqamHbRY6FVDfl0KFDXWVKlai1a9fab37zG0tKSsq1i7t///6uwnTo0CG76qqrXEBUt2i0iy66yN2mX79+7nL58uXd87pixQr3PCt0/POf/3RVv1hS4JE6dep46xs0aOC2p+1q+7Nnz/a6UiPbtHnz5i5k6rjT9VV5Pffcc3Nsq127djZ//nzX7nv37rV//OMfdtlll+X7GA/dcsstrntZ3ciRcqua677k0ksvtcIqU6aMC/zHM2vWLGvWrJl7HgGcGBVEoJD0xjRjxgz3xvjggw9aq1at3E+FML1Jf/fdd67bUL8r/GgRBQ3RG/KiRYts06ZNrhtMb65dunSxd955x4U//Yz0yiuvuPv8/e9/b6VLl7Zp06a5N23dRm/2kbp27WorV660L774wl1u3bq11a5d273pp6WlueCoEKmfTZo0yfdjVwVIwS0yjOXXsGHDbNeuXfbEE0/YhRdeaPfff7+9/PLLdtttt7m/67KuoxDz5JNPunVh16vGdip8VKtWzV577TUXEhU4n376aTv//PPt17/+tbet3r17W6lSpVyXpwKiArJur7ZTe0a3naphCu6idlMA0mWF1sqVK9udd97pbq/nUPcVC2oDUZuEdP8Kjgpxzz77rAu12vYHH3zgxuJ9/PHH3n2o/Xbv3u0+kCjAawynQrKeq8hqn4Kjjt2BAwe6arSut3DhQhecv/322zwf4+HJIFdffbW9+uqreXqcVapUcT/DD08FpWO5bNmy7rlSGz300EOuOhlN6xRodXzofwbAiQUstAHHwImPgZ49ewbSqFGj7HWjR4926x577DHvusuWLQuWLl2afblChQrueoMHD85xv7NmzQqWL18enHHGGd76hQsXBqtXr86x/fnz5wfJycnedceNGxekpaV56ytXrhxkZGR4+1aqVKkc2+/atau732bNmuXYVs2aNbPXzZs3zy2Rt9VlOVHb6X5kwIABObYxc+ZM77rPPfdccOTIkeCcc87JXvf555/n2LaWRx99NNi3b19Qt25db/1TTz3l7qN69ere9nfv3h2kpqZ61/3FL37h/nb55Zd761euXBnMnj07+7Ken6SkpByPKz093WvjcFt6fMdrkxYtWrjr9erVyx0fVapUCdq0aROsWbMmyMzMDBo3bpx93cmTJwcHDx4MatWqlb1O19+zZ0/wwQcf5GhTHXspKSnZ6x988EG3/uabb3aXS5cuHezcuTN47bXXvH2qVKlSsGvXLm99Xo/x2rVru+v169cvT68nr7/+unuOop+7vC5NmzYNJk6cGPTu3ds9roEDBwbfffddcODAgaBBgwY5rq/2koceeqhA22OhDayYtQFdzEAMhFWUkCoZqjidiLq7brzxRnv77bddFaRChQrZiyo26uZU116k119/3bKysrx1EyZMcBWtyAqRxn2p8qO/hSJPBtAZndrOkiVL3GWdLJBfN9xwQ6Gqh6JqXnTbqRoVOcXOsdx6663u+qq2Rbadul91H9Hd7hqrFl2xUkVXFTlVDEOqqGqJbLvDhw+77ltRJUrd8qpqasxgQdousgKmfVIFUs+5usx//vOf2yeffJK9rTZt2rhKsiqXIVWA//a3v7luUx070W2qilpIVT09Rp0UElaSdeyNHz/ea7fMzExXJdTzmt9jXLePrnweS7du3axv375uaEH0CSV59eGHH7rnX+2nMY/PPPOMq4LrOVIFOVq4X5HDFwAcG13MQCFpLF906NCbUV7G9dWtW9cFgD/+8Y9uyU2lSpXcGaChyJAQmj59uutSVMiZO3euW6ffP/vsMzcmL6RQoLGP6r5VoIxUmClHCkPdwrm9kedlrFi9evXsyiuvPGY3pdouUm5tp3Gfc+bMcd3M4VhEtZ0CVTgcQBSENX5RZ1TXqlXLBdDI+ygoda0rbGkcnaaD0XMT+QGgYsWKbiiBgmi0L7/80n0I0FjQVatWZa+PfM5FwxYUQMPua7WbHGteS41bLOgxfqIPDAq0GveqY1ZTz8SSurzfffdd69Spk/u/imzHcL/CkA/g+AiIQCGp6lJQ4SB/DfhX9Sg30RUWvVlHU3VLFSYFDAUYhb8f/ehH9sgjj3jXU6VSY7C0vX//+9+uAqZ90LajTziId/vlpTKpfdbZqRqXl5s1a9acsO1Ec/SNGTPGhc3ly5e7sKjQGBn81JYK8Qo3v/3tb23nzp0ugLzwwguFarvPP//cbUsUbjQWUFVijQXUSUhFIdxfjUNUJTJaZPUxr8d42FbHC/Y6oWfq1KluXKwq3IX53zmWDRs2uOq4QrXG5obC/SrsmEeguCAgAifBsaoW33zzjfupalUYEgpK3aGaxqNly5buzFCFgMguUp3FqpMLVCX7wx/+4FUxT9f2U8VIlbfCtp3CtU5aCbuZdWJHdDelAo2qs+oajaR2jWXoePjhh13QV3VNJ43ohCRVAHM7W1wTaitkKRRFUoVQJ7CEFJZ00o7Ogg7bTXQ2cmHbLrISrCmXVF3NjbqjVTXUNtXVHX2mc6xoO/ogoA8/kcL9UtUVwIkxBhE4CcK5CqOnGtGbv7r5dEZqeFZnpPyMl9K4O1VxFHK0aCzZ+vXrs/8eVmuiK3M6S7igCjPNTX4oTOQ2TUtYEdUYvWjqMj/R1CeRXaqqoqpyqC5ehcXos8fVftFtp9Cor5Y7kXPOOce1k36eiD40aKykwr4qwapSqkraoUMHb1ymus818bMqjZGVMtGZ6ZFd4Aqamoj7/fffd5f1WPWYVRWNvF6oIOP0VHXUuMnGjRvn+Jsehx6DHkvbtm1jEqhz20dVKNu3b++2Ff2hQt+ApO1r7CKAE6OCCJwEOjlEU80ouKnbU92T4fQzmmdPb/LqalTXogKC3lCbNm3qwofmv8vrG7TGzCngqGKkaUgiKURoShbNEaiwoGl1FKyOVfE5WdPc5IWmKFHIUVVNXe6qQilYq6tcgUDz96mLWNfTY9d8jwpvGnOX1/GBqraOGzfOddGHASqStqHxm6NGjXJfI6dtaJLnsBp3PKoIav8U+vLybTB6XDpWFN4HDRpkjz32mDuxRMeJpjnSc60PFepK1fMZ7YwzznCVQQVoBVM9Jo1zVPdueCyoPceOHWuffvqp62LXh5ULLrjAbrrpJjft0r333mv5pS5yTUWkk2YiQ6sqh5rXUSeSaAyilpCmLNKHm5BOOlE76bmLnGont+dLlUI9FzoeNBWQgrE+jKkKG03tp8el/z0AeRP3U6lZaIPTeZobTbMSfV1NZxM9/UuTJk3ctCCariR6yhtNXzJmzJhg8+bNwaFDh4INGzYEU6dODTp16nTc7UcvLVu2dNfRNCnVqlXL8feqVasGkyZNclOcaDqTCRMmZE//Ebk/J3Oam+jHE07/op+R06+89957bloXidwPTdny5JNPuulh1Lbbtm1zUwQ98MAD2VO95Lb96KVMmTLB999/767XvXv3HH/XNDdDhgwJNm3a5K63YMGC4Nprr83RLrlNcxM+1sh14ePs3Llzrvszd+5cNy1PON2Ppm55//33g7179wb79+8P5syZ446p3I7R5s2bByNGjAh27Njhrj927NigfPnyObahfdB96ljQ9DBr164NRo0aFTRs2LBAx3jFihWDw4cPB7fffru3/niijylNXaP2LVeu3HGPqXvvvTdYsmRJsH37drdNPS9vvvlmUKdOnRzXVRvq2OjTp89Jea1goQ0sMdog7jvAQhtwDHAMcAzE4BjIy4eIol5Gjhzp5uos6O01n+ezzz4b033q37+/C5C5zQPKQhtwDFiubcAYRABAzGjaHn2jisaG5pe6ifXtOOqKjhWNsXzggQfcGeiR84ACOD7GIAIAYkZnVCvkFYTmcoz1fJwar5mXSdcB+KggAgAAwJMUDkQEAAAAhAoiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAAB4CIgAAADwERAAAAHgIiAAAAPAQEAEAAOAhIAIAAMBDQAQAAICHgAgAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAADwERAAAAHgIiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAAB4CIgAAADwERAAAAHgIiAAAAPAQEAEAAOAhIAIAAMBDQAQAAICHgAgAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAADwERAAAAHgIiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAAB4CIgAAADwERAAAAHgIiAAAAPAQEAEAAOAhIAIAAMBDQAQAAICHgAgAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAADwERAAAAnhT/IlCcVDCzMma238x2xHtnAJxyeI1A8UUFEcVMOTO7z8zWmtl2M1t/9Ofao+v1dwDF/TUiJcV/jfjfZV4jUHwkmVkQ750ATo42ZjbJzM7O5fNR1tGfB8yss5nN5EkBip02lpw8yZKSzrZOncxuvTXZypc327XLbOLELJs82SwIDlhWFq8RSHwERBSjcDjt6CFf4jjXyzz6mekmQiJQrLSxpKRp1q5dko0aVcKqVMl5jbQ0sz59Mm369MCCgNcIJDYCIopJl9FGMzvrBOEwMiSmm1l1M9tzEvYPQHyVs+Tkjda27Vk2dWoJSznO6PyMDLP27TNtxox0y8riNQKJi4CIYkDjhobmc8htcHTsUVoR7heAU0MVK1HiQtu4MSnXymG0LVvMatTIsszM+81s2MnYQeCkIyCiGNDg8tqckwUgV6oYaszhhAl5b6Bbb82yd975xjIy6tGqSEgFnuambNmysd0ToEicZ2Z1aVsAx3XbbflroG7dkm3GDL221DSznbQuTmn79u07ORXEChUq2PbtOv0fAAAAp7LU1FTbsWNH0VcQDx8+7H5Wq1atQKkUeavQbtq0iTaOSQVRYwkB4NjeeMOsY8e8t5CmvOnVS79dSAWxEHivOzntG+a2k/ZNKgqHBMSiRRsXugXN7KsCjEFUYf2QmX1W6D0orpKTS9g111xjH3/8sWVl6cxw0ManppSUq2z8+DOtY0d1quXN+PFZlp6uMYjfFum+FRe8152agvwuZcuWDUQ/C3J7Ftr45B4D9wVmmYGmuM37ouvfy7FaiHbndaLoj23aOHavESVKZAZbtgR5snlz4K7PawTHsCXwawRftYdi4I2j35CS1ypW5tHrv1nE+wXg1PCG+4YUTYKteQ6PR3/X9XR9XiOQyAoUEA8dOmSPP/64+4miQRvHkia77nz0Q9GJQmL4TSqdmCS7kDiGix5tHCt73Nfn6RtSNAm25jnMjdb/b5LswLKyeI2IBY7hU7d9mQcRxUhev4tZL/yz4rB/AE6V72LWCSvR38U8ZUr4Xcy8RiDxERBRDL92r8fRb1eJnB9RJ7K8dLQ7em8c9w/AqfAakZJyn2Vk/P9rRErKV5aRwWsEig8CIor5FDhlj57pzES3AHiNAEIERAAAAHg4ixkAAACFD4j33HOPrVu3ztLT023JkiV29dVXF+RukIvmzZvb1KlT3cznQRBYhw4daKcYevjhh93EzXv37rWtW7falClT7KKLLqKNY+iuu+6y5cuX2549e9yyePFia9euHW1cRAYOHOheK4YOHUobx8jgwYNdm0YuX375Je0bQ1WrVrWxY8e6r+09cOCArVixwho1akQbx4gyWvQxrOXll18uuoDYpUsXe/755+2JJ56whg0bujeCGTNmWMWKFfN7V8hF6dKlXZv269eP9ikCLVq0sOHDh1uTJk2sdevWVrJkSZs5c6adfXZ4ZjMKa+PGjS6I68W+cePGNnfuXHv33Xftsssuo3FjTO175513utcMxNbKlSutSpUq2UuzZs1o4hg599xzbdGiRXbkyBH78Y9/7F4bBgwYYLt0ujhiQoW7yOO3VatWbv3EiRPzdT/5mll7yZIlwbBhw7IvJyUlBRs3bgwGDhwY9xnDE22RDh06xH0/EnlJTU117dy8efO470siLzt27Aj69OkT9/1IpKV06dLB6tWrg5YtWwbz5s0Lhg4dGvd9SpRl8ODBwWeffRb3/UjU5emnnw7mz58f9/0oTsvQoUODtWvX5us2+aogqtqiqsDs2bP/P10GgbvctGnTfKVS4FRQrpymtDDbuZOzmItCcnKyde3a1VXGP/zwwyLZRnGlSvi0adNszpw58d6VhFSvXj031Ofrr7+2t956y2rUqBHvXUoY7du3t08++cTefvttN9Tn008/tb59+8Z7txJWyZIl7Y477rBRo0bl63b5CoipqamWkpLintBIuqwSJnA6SUpKshdeeMEWLlxoX3zxRbx3J6HUr1/f9u3b52bvHzFihHXs2JExXDGk0K0hPoMGDYrl3eKojz76yHr16uXGzt59991Wq1YtW7BggZUpU4Y2ioHatWu7dl27dq21bdvWXn31VXvppZesRw/NUYtYu+WWW1y3/pgxY/J92zyXG88//3zXHdekSRNv/TPPPOO6nuNdQk20hS7mom3fV155JVi3bl1QrVq1uD/XibaULFkyqFOnTtCwYcPgqaeeCrZt2xZceumlcd+vRFiqV68epKWlBVdccUX2OrqYi7bNy5UrF+zevZthEjFqz0OHDgWLFi3y1r344ovB4sWL4/7/lYjL9OnTg6lTp+b7dvmqIOpso4yMDKtcubK3XpfT0tLynUyBeBk2bJj99Kc/tRtuuMF1IyG2NPhcXXPqOnrkkUfcSRT9+/enmWNAw3z0mqu2VTtruf766+2+++5zv6tbH7Gls/HXrFljdetGfvsSCmrLli22atUqb53OEr/gggto1BhTm+oElZEjR+b7tvl6JdGLz7Jly6xly5ZeN50uM74Ip1M4VJfnjTfeaOvXr4/37hQLCi1nnnlmvHcjIWjMobrwGzRokL0sXbrUxo0b537Pygq/VxyxojG0derUccEGhaczmC+++GJvnaYb+/bbb2neGOvdu7dt27bNjVcuiHyVHLt06RKkp6cHPXr0CC655JJgxIgRwc6dO4NKlSrFvYyaKGcmXnnllW6R+++/3/1eo0aNuO9bIizDhw8Pdu3aFVx33XVB5cqVs5dSpUrFfd8SZVGXss4Kr1mzZlC/fn13OTMzM2jVqlXc9y1RF7qYY9ueQ4YMca8ROoabNm0azJw50w2T0KwH8X6uE2Fp3LhxcPjw4WDQoEFuKEq3bt2C/fv3B927d4/7viXSkpSUFKxfv96dNV7A+8j/jfr16+c2evDgQTf28Jprrol7QyTK0qJFiyA3o0ePjvu+JcJyLD179oz7viXKMnLkSDe2U68PW7duDWbNmkU4LOI2JyDGtj3Hjx8fbNq0yR3DGzZscJdr164d9/+tRFpuuummYMWKFa7gtGrVqqBv375x36dEW1q3bu3e3+rVq1eg2/NdzAAAAPAwmhkAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAAAiIAAACOjQoiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAAB4CIgAAADwERAAAAHgIiAAAAPAQEAEAAOAhIAIAAMBDQAQAAICHgAgAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAADwERAAAAHgIiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAAB4CIgAAADwERAAAAHgIiAAAAPAQEAEAAOAhIAIAAMBDQAQAAICHgAgAAAAPAREAAAAeAiIAAAA8BEQAAAB4CIgAAADwEBABAADgISACAADAQ0AEAACAh4AIAAAADwERAAAAHgIiAAAAPAREAAAAeAiIAAAA8BAQAQAA4CEgAgAAwENABAAAgIeACAAAAA8BEQAAABbp/wDyB18FbGrM/QAAAABJRU5ErkJggg=="
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
}
|
|
],
|
|
"execution_count": 5
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-04-11T09:11:50.029289Z",
|
|
"start_time": "2026-04-11T09:11:49.836426Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"from sympy import solveset, S, Abs, Ge, Gt, solve_univariate_inequality, oo, Symbol, latex, pprint\n",
|
|
"from sympy.abc import x\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"def plot_interval(intervall, x_range=(-10, 10)):\n",
|
|
" fig, ax = plt.subplots(figsize=(8, 2))\n",
|
|
"\n",
|
|
" # Zahlenstrahl-Optik\n",
|
|
" ax.set_xlim(x_range)\n",
|
|
" ax.set_ylim(-1, 1)\n",
|
|
" ax.set_yticks([])\n",
|
|
" ax.spines['top'].set_visible(False)\n",
|
|
" ax.spines['right'].set_visible(False)\n",
|
|
" ax.spines['left'].set_visible(False)\n",
|
|
" ax.spines['bottom'].set_position('center')\n",
|
|
"\n",
|
|
" # Start- und Endpunkte extrahieren\n",
|
|
" start, end = float(intervall.start), float(intervall.end)\n",
|
|
" # Die Linie für das Intervall zeichnen\n",
|
|
" ax.plot([start, end], [0, 0], color='blue', lw=4)\n",
|
|
"\n",
|
|
" # Punkte zeichnen: gefüllt = inklusive, weiß/leer = exklusive\n",
|
|
" ax.plot(start, 0, 'o', color='blue', mfc='blue' if not intervall.left_open else 'white', markersize=10)\n",
|
|
" ax.plot(end, 0, 'o', color='blue', mfc='blue' if not intervall.right_open else 'white', markersize=10)\n",
|
|
"\n",
|
|
" plt.title(f\"Intervall: {intervall}\")\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"\n",
|
|
"x = Symbol('x', real=True)\n",
|
|
"#solveset(abs(x)<=8, x) # domain=S.Complexes is default\n",
|
|
"a = solveset(Abs(x)<8, x, domain=S.Reals)\n",
|
|
"b = solveset(Ge(x,2), x, domain=S.Reals)\n",
|
|
"print( 2 in b )\n",
|
|
"#b = solve_univariate_inequality(x >= 2, x, relational=False)\n",
|
|
"print(Ge(x,2)) # x>=2\n",
|
|
"print(Ge(2,x)) # x>=2\n",
|
|
"print(Gt(x,2)) # x>2\n",
|
|
"print(\"A= \",latex(a))\n",
|
|
"print(\"B= \",latex(b))\n",
|
|
"pprint(a)\n",
|
|
"pprint(b)\n",
|
|
"pprint(a.union(b)) # # Vereinigung\n",
|
|
"pprint(a.intersect(b)) # Durchschnitt\n",
|
|
"print(a-b)\n",
|
|
"print(b-a)\n",
|
|
"plot_interval(a)\n",
|
|
"plot_interval(b)"
|
|
],
|
|
"id": "d9cdef9bf7d1bf2e",
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"True\n",
|
|
"x >= 2\n",
|
|
"2 >= x\n",
|
|
"x > 2\n",
|
|
"A= \\left(-8, 8\\right)\n",
|
|
"B= \\left[2, \\infty\\right)\n",
|
|
"(-8, 8)\n",
|
|
"[2, ∞)\n",
|
|
"(-8, ∞)\n",
|
|
"[2, 8)\n",
|
|
"Interval.open(-8, 2)\n",
|
|
"Interval(8, oo)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 800x200 with 1 Axes>"
|
|
],
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqQAAADECAYAAABJLTPaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAH1lJREFUeJzt3QeUVNUdx/H/sgsoRUUIHRGkKCAWFBRErBg8SkcUPYIaJdGgBozYAY0aC2LAXiiJgKgIwUKNGEXFGERFgiBVaSJFusAuL+d3zUzelF1mF3Yv7Hw/57yzuzNvZt67c+e939x3790MMwsMAAAA8KSErxcGAAAAhEAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACqBQ9ezZ04IgsNq1a0dvmzlzpluQN5WZyk5lWFyULVvWfvjhB+vRo4cdzI4++mjbtm2btWvXzvemAGmBQAp4DGnNmjXL92MPP/xwGzBggLVp08bSOaT169evQI//3e9+V6wC3qHmlltusa1bt9qrr76a0vrnn3++vffee/bjjz/apk2b7NNPP7Wrrrpqv7bh1FNPtbfeesvWrFnjtuXLL7+0Pn36WIkS/z8lbty40V566SV74IEH9uu1AKSGQAocYsqUKWMDBw60c845x/emHJJuvPFG69Wrl+/NSEtZWVkukCro7d27d5/rX3rppTZt2jQrVaqUq/N333237dy50/72t7/ZrbfeWuAw+vHHH9uxxx5rjzzyiPtis3TpUhs6dKg98cQTMes+99xz7kvjueeeW6DXApC6rHysC6CYB90dO3b43oxDUmZmpmtd27Nnj+9NOahdcsklVrlyZXvttddSWv/3v/+9a8U877zzbPfu3e62559/3r755hv3peLJJ5/M9zb07t3b/Tz77LNdi6u88MIL9v7777vnDAddvc68efPc7XQxAQoXLaTAQWLEiBHu8mH16tVtwoQJ7vd169bZY489Fr2UqMvV69evd7+rxUiXrrXoEn5Ew4YN7fXXX7cNGza41qTPPvvMtTQl6zKgk/LTTz/t+vStXLnSunTpEr093g033ODua9y4sfv7xBNPdNu8ZMkS9zoKDi+//LLre1cQtWrVctteEJH9admypQ0ePNiVm/r/vfnmm1apUqXoesuWLbMmTZq41uVI2YWD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sJ0nnXRS8MYbb7jpmzQl1bJly9w0TOeee25C/dR0ZMnqePh9L1mypCtTTbGV6mfliiuucPui/dK2fvLJJzF1ObLo86A6n8pztm3b1pWztkXvs6ZKu+GGGxLWa9iwoduH8847r9COBSyUAXXAImVAZaAMqAPUAepAOtSBSCDt0qWLt23QPKuayzR+/tv9WfQFYPfu3cGNN954QLd1yJAhbh5g3+8bC2VgaVAG9CEFABQZjWRX/9XIf886EDQvqroURLocHAjqY6puC/fcc88Be04AuaMPKQCgyGhQWfy8tftLg7r2p/9yMupnG5nUH0Dho4UUAAAAXmX879o9AAAA4AUtpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK8IpAAAAPCKQAoAAACvCKQAAADwikAKAAAArwikAAAA8IpACgAAAK+y/L58OqpoZuXMbJuZbfC9MQAAICWcvwsTLaRF4kgzu9mysr41s/Vmttz9/OXvm/93PwAAOLhw/i4qGWYWFNmrpaW2VqLEeMvIKGOdO5t161bCKlQw27TJ7PXX99qbb5oFwQ7bu7eLmU3zvbEAAMDh/F3UFEhZCqUM2gYZGXuCdu2ygzVrgqR0u+7Xelqf94K6SB2gDlAHqAPUAd91gPO3FXGZ00JaaI60EiVW2kUXHW6TJmVaVh69dbOzzdq3z7GpU3fa3r01zWxz4W0WAADIA+dvHwikheZmy8wcYitXlrCqVfe99po1ZrVqBZaTo/6lawtvswAAQB6qWmbmsbZyZUY+zt97LSfnVjMbRskWEIG0kGjAUufOdW3cuNTHjXXrZjZx4i8tpgAAoOjpiqbGfIwbl/pjunXbaxMnLrXs7PqFuWnFmtdpn8qXL2/F09FmVs8uvzx/j7riCrOpUwtrmwAAQCryf/4uYVOn1jOz2ma2sVgW8tatW4tnC2nFihVt/XpNgQQAAICDWaVKlWzDhg3Fr4V09+7d7meNGjUKPXX7aSFdbqNGmXXqlPqjNAVUr16FuV0AAGBfCn7+PrbYtZCWL1/eVq1aFc1txfY/NSmMFr9AutWyshbb2LF1rVOn1PuQjh0b2M6duyw7e26u65QokWnNmze3f/3rX7Z3b84B2t7ijTKj3KhrBzc+o5TZwVTXsrJOsbFjS1unTrqInJqxY/fazp3qQ7riAG5t+vEyx1f58uXdPJz6WTznW7s5yMzMyXX+0XirVwdufbM+aV5uB36hzCg36pr/zyGfUcrs0DkfFM75+1BdyhdR7uBfhxaaUe4/MF17bc4+R83rfq2n9c3+WnibBAAA9oHzty9eEnepUqWCAQMGuJ++039R/KcHfYPK7ZvV//9T04WUG3XtIKi36fQZpcx8lxl1jTI7OOvagT9/H6pLqSI6FzAPaRH+L1x1kI7/X/YTJkT+l31nM5te+JsDAABSwPm7KBFIi8SRZna1ZWXdbNnZmqfsFxr4lJ091F0eMNtSNJsCAABSxPm7qBBIvUwJpX8IsLXYTQ0BAEDxxfm7MBFIAQAA4BWj7AEAAFA8A+ldd91lH330kW3fvt02aQRPErVq1bK3337brfPDDz/Yo48+apmZmXk+b4UKFeyVV16xzZs3u+d96aWXrGzZslYctWnTxoIgSLqcdtppuT5u5syZCes/++yzlk6WLVuWUAb9+/fP8zGlS5e2p556yv1LW/2zhjfeeMMqV65s6aB27drus7R06VLbsWOHLV682AYOHGglS5bM83HpWNduvPFGV7927txps2fPttNPPz3P9bt27WoLFixw63/11VfWrl07Syd33HGHm4R8y5Yt7jg/YcIEa9CgQZ6P6dmzZ0K9UvmliwEDBiTsv+pQXtK9nuV23Nei43oy6VjPWrdubZMmTXL/eUn726FDh4R1Bg0aZKtXr3bngunTp1u9ev8f+3Kgjou5KZTh+wMHDgxuvfXW4PHHHw82bdqUcH+JEiWCr776Kpg2bVpw0kknBb/+9a+DdevWBQ8++GCez/vuu+8Gc+fODZo3bx60atUqWLRoUTB69Gjv0yIUxlKyZMmgSpUqMcsLL7wQLFmyJM/HzZw5M3j++edjHpduE+kvW7YsuOeee2LKoEyZMnk+5plnnglWrFgRnHvuucGpp54afPzxx8GsWbO870tRLBdddFEwfPjw4MILLwzq1KkTXHrppcHatWuDxx57LM/HpVtdu+yyy4Kff/456NWrV3DCCSe4fd+4cWPwq1/9Kun6Z555ZrBnz57gtttuC44//vjg/vvvD3bt2hU0btzY+74U1TJ58uSgZ8+eQaNGjYKmTZsGb7/9drB8+fI8P49a/6effoqpV5UrV/a+L0W1aIqdefPmxex/xYoVc12fevZLOVSqVCmmzM4//3w3PVObNm2oZ/ZLGSlrPfDAA0HHjh1d2XTo0CGmbG6//XaX2dq3bx+ceOKJwcSJE13mKF269AE7LuaxFO4HSweWZIFUhZKdnR1zkOndu7c7CCmIJXsuHdClWbNmMSfSnJycoFq1at4PIoW9ZGVlBT/88IMLWvsKCUOGDPG+vb4D6S233JLy+kcccYQLCl26dIne1rBhQ1ffWrRo4X1/fCwKUal8+UmnujZ79uxg2LBh0b8zMjKClStXBv3790+6/quvvhq89dZbMbd98sknwbPPPut9X3yGBmndunW+zxvpFEjV8JLq+tSz5OWiY9O3335LPbPk5ZMskK5evTro169fzLlx586dQffu3Q/YcTG3xVsf0jPPPNPmzZtn69ati942depUO/LII61x48a5PkaX6efMmRO9bcaMGbZ3715r0aKFFXft27e3ihUr2ogRI/a57pVXXmk//vijK+OHHnrIDj/8cEs3ulSoy++ff/653XbbbXl2B2nWrJmVKlXK1aeIhQsX2ooVK1y9S0f6LG7cuO+ZINKlrqn7gupJuI7okpf+zq2O6Pbw+pHjXLrWqUi9kn3VrXLlytny5cvtu+++s4kTJ1qjRo0sndSvX99dVl2yZInrpqYubrmhniX/vF511VU2fPjwPMs53etZWJ06daxatWoxxyx1tfn0009zPWYV5LiY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"
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 800x200 with 1 Axes>"
|
|
],
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqQAAADECAYAAABJLTPaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAG4hJREFUeJzt3QmQlMX5x/FnYblvduW+5VBAUAmnCAiKISoQIJDSlKBGiVgqASJEQUAFAgShOERQuUpEYwgUgiIQMXKqISiH3Jdy3/e99r+edmf/75w7u7DbuzvfT9Vbs/POO8fb2/POb/rt7okTESMAAACAI7lcPTEAAACgCKQAAABwikAKAAAApwikAAAAcIpACgAAAKcIpAAAAHCKQAoAAACnCKQAAABwikAKAAAApwikALKl7t27izFGKleunLJu+fLldkFkWmZadlqGgSZNmiRLlizJdkU4Z84c+eijj1y/DADpRCAFcmBIa9CgQZrvW6BAARk8eLC0bNlSYjmk9e3bN133f/bZZ0MGvOykSpUq8sc//lGGDx+esq5ChQry6quvytdffy0nT56UY8eO2dDfpk0byUpGjhwpnTt3lnr16rl+KQDSgUAKwCpYsKAMGTJEWrVqRYmkQ69evaRHjx7ZuuxefPFF2bNnj3z55Zcp6zp06CD9+/eXnTt3ysCBA+X111+XIkWKyLJly7LU/n733Xfy3//+N91fKAC4RSAFkOFBF+mTO3duyZMnT6YUX3x8vDz22GPyj3/8w2+9toZWqlTJ3vbWW2/J+PHjpVmzZrJlyxZ57bXXJCvR196pUycpVKiQ65cCII0IpEAON336dDl37pyUK1dO5s2bZ/8+evSojB49WnLlypVyuvr48eP2b20l1VPXuugpfJ9atWrJxx9/LCdOnJBLly7Jt99+K4888kjILgMtWrSwfRGPHDki+/fvt6dSfesDPfPMM/a2OnXq2Ot33HGHfc27du2yz3Po0CF57733pGTJkuna/4oVK9rXnh6+/dEANmbMGFtu58+fl3/961+SmJiYsp22KtatW9e2LvvKztuXtVixYjJ27Fj58ccf5fLly7Jjxw556aWXJC4uLmSXAW2p1BbJK1euyF133SXXrl2zp80D1axZ097nueees9dLlChh/68bNmyw/+czZ87Ip59+GtVp7ObNm8stt9xiWz69fvjhB/s/97p69ap9XC3bwoULS3rDtra46n5qmWgZDhs2TPLmzRuyO8SmTZvsdgcOHJCJEyfaMg20dOlS+3oeeOCBdL0mAO7EO3xuAJlEP/w///xz2w+wX79+cv/999tLDX1vv/227Rf4pz/9yf6tYUsXpcFG1a5dW1atWmXDwN/+9je5cOGCdO3aVebPn2/Dpl56aUuaPqa2oGlr1aJFi2xA0vt89dVXftt269bNho3Nmzfb6xomqlWrZkPp4cOHbVDV0KqXTZo0SfO+z5o1ywZFb/hLqwkTJsipU6dk6NChtp9l7969bSj6/e9/b2/X67qNhlUNVUrDuK9v7n/+8x8pX768TJkyxYZSDbgjRoyQsmXLyp///Ge/53riiSckf/78MnXqVBtINZDr/bXsAlskteyuX79uvygoLbeOHTva6xrwSpcuLT179rT31/+hPlY4+pp+/vlnWb9+fVRlUqZMGVsPLl68KOnx7rvv2lP++lo17Ddu3Fhefvlluf32220rp49+KdIvSRo2J0+ebL9caEBt2LCh3HPPPXb/veFZX4+uD6yTALI+w0IZUAdyRh3o3r27UQ0aNEhZN336dLtu4MCBftuuW7fOfPvttynXExIS7HaDBw8OetylS5ea77//3uTNm9dv/cqVK822bduCnv+rr74yuXLl8tt29uzZ5vDhw37rS5cuba5fv+732vLnzx/0/N26dbOP27x586Dnqly5csq65cuX28V7X72uUis7fRzVt2/foOdYsmSJ37Zjxowx165dM0WLFk1Zt3HjxqDn1uWVV14x586dM9WrV/dbP3z4cPsYFSpU8Hv+06dPm8TERL9tn376aXtbnTp1/NZv2rTJLFu2LOW6/n/i4uKC9uvSpUt+Zex7Lt0/37pZs2aZY8eORVXPbr31VnPx4kUzc+bMdNXTevXq2eefOnWq3/pRo0bZ9a1atbLXtRwuX75sFi9e7LdfvXr1stv16NEj6LG3bt1qFi1alOHvNRbKgDogN7UMOGUPxAht/fRasWKFbVFLjZ4Gbt26te2fp4NZEhISUhZtddXTxtodwOudd96xrW1eOiWPtth5B0116dLFtt56p+vR07I++fLls8+zdu1ae/3uu+9O837fd999N9Q6qrS1MrDstM+ld8qpcH73u9/Z7bWF1Vt2empcHyOwG8PcuXNTuk/4aIu1nrbXFlEfbTHW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rly5zIYNG8ySJUtM/fr1za9//Wtz9OhRM2zYsIiP++mnn5r169ebRo0amXvuucds377dzJ49O0P2wfWSJ08eU7p0ab9l6tSpZteuXRHvt3z5cjNlyhS/+xUpUsT5/mTmsmfPHjNw4EC/MihYsGDE+7z11ltm37595r777jN33323Wb16tVm5cqXzfcmM5cEHHzTTpk0zDzzwgKlatap55JFHzOHDh83o0aMj3i/W6lrXrl3N5cuXTY8ePcztt99u9/3kyZPmlltuCbl906ZNzbVr10y/fv3MbbfdZl577TVz5coVU6dOHef7klnLZ599Zrp3725q165t6tWrZxYuXGj27t0b8f2o258+fdqvXpUqVcr5vmTWMnjwYLNx40a//U9ISAi7PfXsl3JITEz0K7M2bdoY1bJlS+qZ/FJGmrVef/1107FjR1s2HTp08Cubl156yWa29u3bmzvuuMPMnz/fZo58+fLdtONihCVj31h6YAkVSLVQrl+/7neQ6dmzpz0IaRAL9Vh6QFcNGjTw+yBNSkoyZcuWdX4QyeglPj7eHDlyxAat1ELC2LFjnb9e14H0xRdfjHr7okWL2qDQuXPnlHW1atWy9a1x48bO98fFoiEqmi8/sVTX1q5dayZMmJByPS4uzuzfv9/0798/5PYffvih+eSTT/zWrVmzxkyePNn5vrgMDeree+9N8+dGLAVSbXiJdnvqWehy0WPTjh07qGcSunxCBdKDBw+avn37+n02Xrp0yXTr1u2mHRfDLc76kDZt2lQ2btwoR48eTVn3+eefS7FixaROnTph76On6detW5eybtmyZfLzzz9L48aNJadr3769JCQkyPTp01Pd9rHHHpNjx47ZMh4+fLgUKFBAYo2eKtTT7//73/+kX79+EbuDNGjQQPLmzWvrk8+2bdtk3759tt7FIn0vnjyZ+ojpWKlr2n1B64m3jugpL70ero7oeu/2vuNcrNYpX71SqdWtwoULy969e+XHH3+U+fPnS+3atSWW1KhRw55W3bVrl+2mpl3cwqGehX6//uEPf5Bp06ZFLOdYr2deVatWlbJly/ods7Srzddffx32mJWe42I48eJImTJlbH8iL991vS3cfbwBViUlJdkDW7j75CRPPfWU/TDTg1QkH3zwgQ1S2gekXr16MnLkSKlVq5Z07qy/sBIbxo8fb4Oo1o1mzZrJ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"
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
}
|
|
],
|
|
"execution_count": 6
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-04-11T09:12:20.315906Z",
|
|
"start_time": "2026-04-11T09:12:20.229463Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from sympy import Symbol, solveset, S, Abs, Interval\n",
|
|
"\n",
|
|
"def plot_intervals(intervals, titles, colors):\n",
|
|
" fig, ax = plt.subplots(figsize=(10, 3))\n",
|
|
"\n",
|
|
" for i, (inter, title, color) in enumerate(zip(intervals, titles, colors)):\n",
|
|
" # Y-Position für jedes Intervall versetzt\n",
|
|
" y = i + 1\n",
|
|
"\n",
|
|
" # Grenzen extrahieren\n",
|
|
" start = float(inter.start) if inter.start != -S.Infinity else -10\n",
|
|
" end = float(inter.end) if inter.end != S.Infinity else 10\n",
|
|
"\n",
|
|
" # Linie zeichnen\n",
|
|
" ax.plot([start, end], [y, y], color=color, lw=4, label=title)\n",
|
|
"\n",
|
|
" # Endpunkte (Kreise) zeichnen\n",
|
|
" # Links\n",
|
|
" if inter.start != -S.Infinity:\n",
|
|
" m_style = 'o' if not inter.left_open else 'o'\n",
|
|
" m_color = color if not inter.left_open else 'white'\n",
|
|
" ax.plot(start, y, marker=m_style, markeredgecolor=color,\n",
|
|
" markerfacecolor=m_color, markersize=10)\n",
|
|
"\n",
|
|
" # Rechts\n",
|
|
" if inter.end != S.Infinity:\n",
|
|
" m_style = 'o' if not inter.right_open else 'o'\n",
|
|
" m_color = color if not inter.right_open else 'white'\n",
|
|
" ax.plot(end, y, marker=m_style, markeredgecolor=color,\n",
|
|
" markerfacecolor=m_color, markersize=10)\n",
|
|
"\n",
|
|
" ax.set_ylim(0, len(intervals) + 1)\n",
|
|
" ax.set_xlim(-11, 11)\n",
|
|
" ax.set_yticks(range(1, len(intervals) + 1))\n",
|
|
" ax.set_yticklabels(titles)\n",
|
|
" ax.grid(True, axis='x', linestyle='--', alpha=0.7)\n",
|
|
" plt.legend()\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"# --- Beispiel-Rechnung ---\n",
|
|
"x = Symbol('x', real=True)\n",
|
|
"i1 = Interval(2, 8) # [2, 8] - beide zu\n",
|
|
"i2 = Interval.open(-5, 3) # (-5, 3) - beide offen\n",
|
|
"ergebnis = i1.intersect(i2) # Schnittmenge [2, 3)\n",
|
|
"\n",
|
|
"plot_intervals([i1, i2, ergebnis],\n",
|
|
" [\"Intervall A [2, 8]\", \"Intervall B (-5, 3)\", \"Ergebnis [2, 3)\"],\n",
|
|
" [\"blue\", \"green\", \"red\"])\n",
|
|
"\n"
|
|
],
|
|
"id": "a8b386f6c4590666",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 1000x300 with 1 Axes>"
|
|
],
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5oAAAESCAYAAACciaoXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAT3dJREFUeJzt3Qd4VGXWwPGTAkmA0D9AqiAKiwUREQuIikFYESxIEZYmK6gbxcUVFaXYABtrwYbSVFw6RJS64q6AoCArgihFelN6QFrI/Z7zbmZ2JqRNZpI77+T/e5773GTmzsydkzM398xbbpSIOAIAAAAAQIhEh+qJAAAAAACg0AQAAAAAhBwtmgAAAACAkKLQBAAAAACEFIUmAAAAACCkKDQBAAAAACFFoQkAAAAACKnY0D4dIlHVqlUlNTXV7d0AAAAA4LLExETZvXt3rttRaCLXInPXrl1ECQAAAIBRrVq1XItNCk3kyNOSqcnkdqtmXFycvPDCC/Lkk0/KqVOnXN2XSEWMia/NyF/iazPyl/jajPwtOvFNTEw0jVB5qQuiRMQplL2ClTSZjh49KqVLl3a90AQAAABgR23AZECwRkxMjCQlJZk1iLGNyGHiazPyl/jajPwlvjaLsfQcmEIT1ihevLgkJyebNYixjchh4msz8pf42oz8Jb42K27pOTCFJgAAAAAgpJgMCAAAAHBRiRIlpGLFihIVpdOn2Cc+Pl5iY2OlZs2acvLkSbd3J+LEF2J809PTZc+ePZKWlhb0c1Fowhqa+KtXrzZrEGMbkcPE12bkL/G1WbjmrxaWvXr1khtuuEFspu9DC5OnnnpKHId5Rm2P78mTJ2XQoEHy22+/BfU8zDqLHDHrLAAAQMHo3bu3tGjRQqZMmSI//fRTSFqRgGAvpdKvXz/Zv3+/DB8+/JzCNtDaQB/NQgyyzIHExERH6drtGMXGxjpdunQxa7f3JVIXYkx83c5B8tf9OHJ8IL5u51pRyd+SJUs6EydOdG699VbX9yUUS/ny5V3fh0heyhdifK+++mqTm2XLlg2qNmAyIFijWLFi0qVLF7MGMbYROUx8bUb+El+bhWP+VqhQway1JTMSunaWL1/e2jGm4S6qkOP766+/mrW2WgaDQhMAAAAoZJ6ige6yCDdnz54162ALWwpNAAAAAEBIUWjCGvqN38KFC/nmjxhbixwmvjYjf4mvzcjfgqcTxID4Zub64FaW8I1BOE0GxEIMyAFygBwgB8gBciBScqBWrVpmwhVdu70vRW3p0aOHc+jQIe/vQ4YMcVavXl0gr+MxatQoV95nfl4/p9xkMiBEJB3An5ycHFYD+SMNMSa+NiN/ia/NyF/ia4tx48bJzJkz/W7TsXyVKlXKdkyfXiKjffv2EgnmzZtnWsivvPLKPG1/5MgRqVKlijz99NPm99jYWBkxYoSsWbNGjh07Jrt27ZIJEybIeeedl+1zZBffVq1ayddff21ak3UCn2nTpkmtWrW890+ePNm89rJly8QNdJ2FNfSDmZSUZNYgxjYih4mvzchf4muz8M/f90RkmcuL7kP+BTtDaV64/ferUaOGXHvttfLmm2+aa6DmheM4sm/fPlNUqhIlSsgVV1whzz77rFnfeeedUq9ePUlJSQkovueff77Mnj1bvvjiC7n88svllltukYoVK8qMGTO825w8edK89unTp8UN4fppAwAAAIqIS0TkGrHR4sWL5YcffpD4+Hi56667TFHzzjvvyLBhw8z9W7ZsMetZs2aZ9datW6V27drm53bt2smQIUOkQYMGsnv3btOy9/zzz3tnPdUi7f7775c2bdpIy5Yt5ZVXXjEFnm6jr+GhhdaqVavM827fvl0eeeQR6dWrl9SpU0cOHjwon376qTz22GNy/PjxoN6rPuecOXPk7bffluXLl8tf//pXU8wF4ujRo6Yl0tdf/vIX+fbbb00hu2PHjjw9T+PGjSUmJkaeeuopEyf18ssvm+JTC/JwmM2YFk0AAAAA+da9e3f5/fff5eqrrzYF3eDBg+Xmm2829zVp0sSse/bsabpxen5v1qyZTJw4UV577TVTaPbt29dsM2jQIL/nHjp0qOmqe+mll8r7778vn3zyidxzzz1+23Tt2lWWLl1qikyVnp4uDz30kFx88cXSo0cPuemmm+TFF18M+i+sheZHH30kP//8s2zatEk6dOggoVCmTBmzz4cPH87zY7Sw1sfoPkVHR5sWzz/96U+yaNGisCgyFYUmrHHmzBlzcNE1iLGNyGHiazPyl/jajPwtWDre8JlnnpGNGzfKhx9+KCtXrjQtkGr//v1mrUWUduP0/K4tmTpWUYtNbfXUAknHMWrB6WvSpEkyfvx4s4229n388cdy3XXXmdY/peMWO3fubG730OL1yy+/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"
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
}
|
|
],
|
|
"execution_count": 7
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-04-11T09:12:42.283263Z",
|
|
"start_time": "2026-04-11T09:12:42.156960Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from sympy import solveset, S, Abs, Ge, Gt, solve_univariate_inequality, oo, Symbol, latex, pretty\n",
|
|
"from sympy.abc import x\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"def plot_intervals_with_arrows(intervals, titles, colors):\n",
|
|
" fig, ax = plt.subplots(figsize=(10, 4))\n",
|
|
"\n",
|
|
" for i, (inter, title, color) in enumerate(zip(intervals, titles, colors)):\n",
|
|
" y = i + 1\n",
|
|
" # Sichtbarer Bereich für Unendlichkeit\n",
|
|
" view_min, view_max = -10, 10\n",
|
|
"\n",
|
|
" start = float(inter.start) if inter.start != -oo else view_min\n",
|
|
" end = float(inter.end) if inter.end != oo else view_max\n",
|
|
"\n",
|
|
" # 1. Die Linie zeichnen\n",
|
|
" ax.plot([start, end], [y, y], color=color, lw=2, label=title)\n",
|
|
"\n",
|
|
" # 2. Linke Seite: Punkt oder Pfeil?\n",
|
|
" if inter.start == -oo:\n",
|
|
" ax.annotate('', xy=(view_min - 0.5, y), xytext=(start, y),\n",
|
|
" arrowprops=dict(arrowstyle='->', color=color, lw=2))\n",
|
|
" else:\n",
|
|
" m_fill = color if not inter.left_open else 'white'\n",
|
|
" ax.plot(start, y, 'o', markeredgecolor=color, markerfacecolor=m_fill, markersize=10)\n",
|
|
"\n",
|
|
" # 3. Rechte Seite: Punkt oder Pfeil?\n",
|
|
" if inter.end == oo:\n",
|
|
" ax.annotate('', xy=(view_max + 0.5, y), xytext=(end, y),\n",
|
|
" arrowprops=dict(arrowstyle='->', color=color, lw=2))\n",
|
|
" else:\n",
|
|
" m_fill = color if not inter.right_open else 'white'\n",
|
|
" ax.plot(end, y, 'o', markeredgecolor=color, markerfacecolor=m_fill, markersize=10)\n",
|
|
"\n",
|
|
" # Styling\n",
|
|
" ax.set_xlim(-12, 12)\n",
|
|
" ax.set_ylim(0, len(intervals) + 1)\n",
|
|
" ax.set_yticks(range(1, len(intervals) + 1))\n",
|
|
" ax.set_yticklabels(titles)\n",
|
|
" ax.axvline(0, color='black', lw=1, alpha=0.3) # Nullpunkt-Linie\n",
|
|
" ax.grid(True, axis='x', linestyle='--', alpha=0.5)\n",
|
|
" plt.legend()\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"# --- Beispiel mit Unendlichkeit ---\n",
|
|
"x = Symbol('x', real=True)\n",
|
|
"\n",
|
|
"#i1 = Interval(2, oo) # [2, oo) -> Geschlossen bei 2, Pfeil rechts\n",
|
|
"#i2 = Interval(-oo, 5, True, True) # (-oo, 5) -> Pfeil links, Offen bei 5\n",
|
|
"#ergebnis = i1.intersect(i2) # [2, 5) -> Schnittmenge\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from sympy import Symbol, solveset, S, Interval, oo\n",
|
|
"\n",
|
|
"def plot_intervals_with_arrows(intervals, titles, colors):\n",
|
|
" fig, ax = plt.subplots(figsize=(10, 4))\n",
|
|
"\n",
|
|
" for i, (inter, title, color) in enumerate(zip(intervals, titles, colors)):\n",
|
|
" y = i + 1\n",
|
|
" # Sichtbarer Bereich für Unendlichkeit\n",
|
|
" view_min, view_max = -10, 10\n",
|
|
"\n",
|
|
" start = float(inter.start) if inter.start != -oo else view_min\n",
|
|
" end = float(inter.end) if inter.end != oo else view_max\n",
|
|
"\n",
|
|
" # 1. Die Linie zeichnen\n",
|
|
" ax.plot([start, end], [y, y], color=color, lw=2, label=title)\n",
|
|
"\n",
|
|
" # 2. Linke Seite: Punkt oder Pfeil?\n",
|
|
" if inter.start == -oo:\n",
|
|
" ax.annotate('', xy=(view_min - 0.5, y), xytext=(start, y),\n",
|
|
" arrowprops=dict(arrowstyle='->', color=color, lw=2))\n",
|
|
" else:\n",
|
|
" m_fill = color if not inter.left_open else 'white'\n",
|
|
" ax.plot(start, y, 'o', markeredgecolor=color, markerfacecolor=m_fill, markersize=5)\n",
|
|
"\n",
|
|
" # 3. Rechte Seite: Punkt oder Pfeil?\n",
|
|
" if inter.end == oo:\n",
|
|
" ax.annotate('', xy=(view_max + 0.5, y), xytext=(end, y),\n",
|
|
" arrowprops=dict(arrowstyle='->', color=color, lw=2))\n",
|
|
" else:\n",
|
|
" m_fill = color if not inter.right_open else 'white'\n",
|
|
" ax.plot(end, y, 'o', markeredgecolor=color, markerfacecolor=m_fill, markersize=5)\n",
|
|
"\n",
|
|
" # Styling\n",
|
|
" ax.set_xlim(-12, 12)\n",
|
|
" ax.set_ylim(0, len(intervals) + 1)\n",
|
|
" ax.set_yticks(range(1, len(intervals) + 1))\n",
|
|
" ax.set_yticklabels(titles)\n",
|
|
" ax.axvline(0, color='black', lw=1, alpha=0.3) # Nullpunkt-Linie\n",
|
|
" ax.grid(True, axis='x', linestyle='--', alpha=0.5)\n",
|
|
" plt.legend()\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"# --- Beispiel mit Unendlichkeit ---\n",
|
|
"x = Symbol('x', real=True)\n",
|
|
"#i1 = Interval(2, oo) # [2, oo) -> Geschlossen bei 2, Pfeil rechts\n",
|
|
"#i2 = Interval(-oo, 5, True, True) # (-oo, 5) -> Pfeil links, Offen bei 5\n",
|
|
"i1 = solveset(Abs(x)<8, x, domain=S.Reals)\n",
|
|
"i2 = solveset(Ge(x,2), x, domain=S.Reals)\n",
|
|
"\n",
|
|
"str_i1 = pretty(i1, use_unicode=True)\n",
|
|
"str_i2 = pretty(i2, use_unicode=True)\n",
|
|
"\n",
|
|
"\n",
|
|
"ergebnis = i1.intersect(i2) # [2, 5) -> Schnittmenge\n",
|
|
"str_erg = pretty(ergebnis, use_unicode=True)\n",
|
|
"\n",
|
|
"plot_intervals_with_arrows([i1, i2, ergebnis],\n",
|
|
" [str_i1, str_i2,\n",
|
|
" str_erg],\n",
|
|
" [\"blue\", \"green\", \"red\"])\n"
|
|
],
|
|
"id": "310dd48010b953a0",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 1000x400 with 1 Axes>"
|
|
],
|
|
"image/png": "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"
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
}
|
|
],
|
|
"execution_count": 8
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-04-11T13:55:04.221370Z",
|
|
"start_time": "2026-04-11T13:55:04.187430Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# Soll: Eingabe zweier Intervalle, Ausgabe alle Lösungen, Grafik und Mengenschreibweise\n",
|
|
"from sympy import solveset, S, Abs, Ge, Gt, solve_univariate_inequality, oo, Symbol, latex, pprint\n",
|
|
"from sympy.abc import x\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"def set_op(a,b, op):\n",
|
|
" convert(b)\n",
|
|
" pass\n",
|
|
"\n",
|
|
"\n",
|
|
"def convert(desc: str):\n",
|
|
" # Normalisierung\n",
|
|
" desc = desc.replace(\" \", \"\")\n",
|
|
"\n",
|
|
" if desc.startswith(( \"[\", \"]\", \"(\" )):\n",
|
|
" print('Intervall')\n",
|
|
" else:\n",
|
|
" print('Beschreibende Form')\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"def plot_interval(intervall, x_range=(-10, 10)):\n",
|
|
" fig, ax = plt.subplots(figsize=(8, 2))\n",
|
|
"\n",
|
|
" # Zahlenstrahl-Optik\n",
|
|
" ax.set_xlim(x_range)\n",
|
|
" ax.set_ylim(-1, 1)\n",
|
|
" ax.set_yticks([])\n",
|
|
" ax.spines['top'].set_visible(False)\n",
|
|
" ax.spines['right'].set_visible(False)\n",
|
|
" ax.spines['left'].set_visible(False)\n",
|
|
" ax.spines['bottom'].set_position('center')\n",
|
|
"\n",
|
|
" # Start- und Endpunkte extrahieren\n",
|
|
" start, end = float(intervall.start), float(intervall.end)\n",
|
|
" # Die Linie für das Intervall zeichnen\n",
|
|
" ax.plot([start, end], [0, 0], color='blue', lw=4)\n",
|
|
"\n",
|
|
" # Punkte zeichnen: gefüllt = inklusive, weiß/leer = exklusive\n",
|
|
" ax.plot(start, 0, 'o', color='blue', mfc='blue' if not intervall.left_open else 'white', markersize=10)\n",
|
|
" ax.plot(end, 0, 'o', color='blue', mfc='blue' if not intervall.right_open else 'white', markersize=10)\n",
|
|
"\n",
|
|
" plt.title(f\"Intervall: {intervall}\")\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"#\n",
|
|
"set_op(\"a>2\", \"]1,6[\", \"Durchschnitt\" )\n",
|
|
"\n",
|
|
"\n",
|
|
"\n"
|
|
],
|
|
"id": "f0a7ff043bf0c1b2",
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Intervall\n"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 13
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "code",
|
|
"outputs": [],
|
|
"execution_count": null,
|
|
"source": "",
|
|
"id": "8eb6558e7371e5bf"
|
|
}
|
|
],
|
|
"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.13.11"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|