{ "cells": [ { "cell_type": "markdown", "id": "41fb094f", "metadata": {}, "source": [ "# Reference Generators\n", "\n", "Reference generators produce a reference signal $r_k$ that encodes the desired system behaviour.\n", "`h` always returns $r_k$ so the output can be fed directly into a controller block.\n", "\n", "\n", " \n", "" ] }, { "cell_type": "markdown", "id": "490e07a6", "metadata": { "lines_to_next_cell": 0 }, "source": [ "## Stateless\n" ] }, { "cell_type": "markdown", "id": "6b44c817", "metadata": {}, "source": [ "### Constant\n", "Generates a constant reference signal.\n", "$r_k = r$" ] }, { "cell_type": "code", "execution_count": 1, "id": "2b859194", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:29.785838Z", "iopub.status.busy": "2026-05-13T02:47:29.785705Z", "iopub.status.idle": "2026-05-13T02:47:30.102852Z", "shell.execute_reply": "2026-05-13T02:47:30.102276Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from dynamicalnodes import DynamicalSystem\n", "\n", "\n", "def constant_h(r: float) -> float:\n", " return r" ] }, { "cell_type": "code", "execution_count": 2, "id": "b6c09420", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.107013Z", "iopub.status.busy": "2026-05-13T02:47:30.106809Z", "iopub.status.idle": "2026-05-13T02:47:30.264139Z", "shell.execute_reply": "2026-05-13T02:47:30.263708Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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Io9FRUU5z3tISIj+9a9/ldm56tixo86cOeN8/tKeO19fXyUmJhap+ce/r+fOndPp06fVsWNH5eTk6JNPPrnieSi0bt06hYWFafDgwc4xb29vPfzwwzp//ry2bt3qMv93v/udQkJCrrkuUJ748ARwgwQFBUn64T8wJXHs2DFVqFBB9evXdxkPCwtTcHCwjh075jJ+yy23FFmjatWq+u6775zbU6ZMUb9+/XTrrbeqWbNm+s1vfqN7771XLVq0KFFNa9as0VNPPaW0tDTl5uY6xwtDRWnruR5+fn7697//LUn673//q+eff16ZmZku/xEvDK7dunUrdo3CXlxJ4f4JCQlXnHP27FlVrVrVuR0ZGVlkDWOMGjRoUOz+3t7eLtt16tQpch6rVq2qgwcPOrePHj2qhg0bqmLFK/+r+8iRIzp79qxq1qxZ7OOFHxYpTuH/6Th//nyRx9566y3l5eXpwIEDevTRR12eTyrdufrp70bhY999952CgoJKfe5q165d7IcUDh8+rCeeeEKbN292hsYf13Qtx44dU4MGDVShgus1kMaNGzsf/7Gf/g4A7kCwA26QoKAghYeH69ChQ6Xar7jQVJwr3XrC/Oi2JZ06ddLRo0f11ltvaePGjVq0aJFmzJih+fPna8SIEVdd/91339Wdd96pTp06ae7cuapVq5a8vb21ePFiLV++/LrquR5eXl4utyWJj49Xo0aN9MADDzivIhVeIVq2bJnCwsKKrHG1YPTj/V944QXFxsYWO+enV7V+HCwL13A4HHr77beLPRc/3b+szldBQYFq1qx5xVu/XO2KUv369VWxYsVif0c7d+4sqei5u55zda1jLe25++m5l6Tvv/9enTt3VlBQkKZMmaLo6Gj5+flp3759+tOf/lTkKmJZKK4O4EYj2AE30B133KGFCxdq586diouLu+rciIgIFRQU6MiRI84rBJKUkZGh77//XhEREddVQ7Vq1ZSYmKjExESdP39enTp10qRJk5zB7kpBcuXKlfLz89OGDRvk6+vrHF+8ePF11XG15yqNWrVqady4cZo8ebLef/99/epXv3K+BFyzZs3rujdd4f5BQUHXfW+76OhoGWMUGRmpW2+99brWKG7NDz74QHl5eUWuWv14zn/+8x916NCh1EGjcuXK6tKli7Zu3aoTJ06odu3aJapJ+nnnqrg1f+6527Jli86cOaM333xTnTp1co6np6cXmXul38OIiAgdPHhQBQUFLlftCl/Gvd6/QaA88R474AYaP368KleurBEjRigjI6PI40ePHtWLL74oSerdu7ckFbkj/vTp0yVJffr0KfXznzlzxmU7ICBA9evXd3lZtfD+az/9NggvLy85HA7l5+c7x7788kutXr261HVc67lKa8yYMapUqZKeffZZST9cxQsKCtIzzzyjvLy8IvNPnTp11fVat26t6Oho/fWvfy32Zclr7S9Jv/3tb+Xl5aXJkycXuepmjCnSi5L43e9+p9OnT2v27NlFHit8jgEDBig/P19PPvlkkTmXL1++5rmeMGGC8vPz9fvf/77YY//psZTFufqpsjh3hVf6frz/pUuXNHfu3CJzK1euXOxLs71799bJkye1YsUK59jly5c1a9YsBQQEOK9iAp6EK3bADRQdHa3ly5dr4MCBaty4scs3T+zYsUOvv/66hg8fLkmKiYlRQkKCFi5c6HxZadeuXfr73/+u/v37q2vXrqV+/iZNmqhLly5q3bq1qlWrpj179uiNN97Q6NGjnXNat24tSXr44YcVHx8vLy8vDRo0SH369NH06dP1m9/8RkOGDFFmZqbmzJmj+vXru7wPrDQKn+vPf/6zBg0aJG9vb/Xt27fUN/etXr26EhMTNXfuXH388cdq3Lix5s2bp3vvvVetWrXSoEGDFBISouPHj2vt2rXq0KFDseGoUIUKFbRo0SL16tVLTZs2VWJiomrXrq0TJ07onXfeUVBQkPN9flcSHR2tp556SikpKfryyy/Vv39/BQYGKj09XatWrdL999/v8l61khg2bJiWLl2q5ORk7dq1Sx07dlR2drb+85//6KGHHlK/fv3UuXNnPfDAA5o6darS0tLUs2dPeXt768iRI3r99df14osv6u67777ic3Ts2FGzZ8/WmDFj1KBBA+c3T1y6dEmfffaZXnnlFfn4+Dhf4i6Lc1Ue5+62225T1apVlZCQoIcfflgOh0PLli0r9qXt1q1ba8WKFUpOTlbbtm0VEBCgvn376v7779eCBQs0fPhw7d27V/Xq1dMbb7yh9957TzNnzizxB6GAG+rGfxAXwGeffWZGjhxp6tWrZ3x8fExgYKDp0KGDmTVrlsttGPLy8szkyZNNZGSk8fb2NnXr1r3qDYp/qnPnzqZz587O7aeeesq0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JCUkJGjJkiVuqurmNG/ePElSly5dXMYXL16s4cOH3/iCbnKZmZkaNmyYvvnmG1WpUkUtWrTQhg0b1KNHD3eXBrjdf//7Xw0ePFhnzpxRSEiIfv3rX+v9999XSEiI22riPnYAAACW4D12AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJgh0AAIAlCHYAUIzhw4erf//+bnv+e++9V88880yJ5g4aNEjTpk0r54oA/BLwzRMAbjoOh+Oqj0+cOFHjxo2TMUbBwcE3pqgfOXDggLp166Zjx44pICDgmvMPHTqkTp06KT09XVWqVLkBFQLwVAQ7ADedkydPOv95xYoVmjBhgj799FPnWEBAQIkCVXkZMWKEKlasqPnz55d4n7Zt22r48OFKSkoqx8oAeDpeigVw0wkLC3P+VKlSRQ6Hw2UsICCgyEuxXbp00ZgxYzR27FhVrVpVoaGheumll5Sdna3ExEQFBgaqfv36evvtt12e69ChQ+rVq5cCAgIUGhqqe++9V6dPn75ibfn5+XrjjTfUt29fl/G5c+eqQYMG8vPzU2hoqO6++26Xx/v27atXX331558cAL9oBDsAKKG///3vqlGjhnbt2qUxY8bowQcf1D333KPbbrtN+/btU8+ePXXvvfcqJydHkvT999+rW7duatmypfbs2aP169crIyNDAwYMuOJzHDx4UGfPnlWbNm2cY3v27NHDDz+sKVOm6NNPP9X69evVqVMnl/3atWunXbt2KTc3t3wOHsAvAsEOAEooJiZGTzzxhBo0aKCUlBT5+fmpRo0aGjlypBo0aKAJEybozJkzOnjwoCRp9uzZatmypZ555hk1atRILVu21Msvv6x33nlHn332WbHPcezYMXl5ealmzZrOsePHj6ty5cq64447FBERoZYtW+rhhx922S88PFyXLl1yeZkZwM2HYAcAJdSiRQvnP3t5eal69epq3ry5cyw0NFSSlJmZKemHD0G88847zvfsBQQEqFGjRpKko0ePFvscFy5ckK+vr8sHPHr06KGIiAhFRUXp3nvv1SuvvOK8KljI399fkoqMA7i5EOwAoIS8vb1dth0Oh8tYYRgrKCiQJJ0/f159+/ZVWlqay8+RI0eKvJRaqEaNGsrJydGlS5ecY4GBgdq3b5/++c9/qlatWpowYYJiYmL0/fffO+d8++23kqSQkJAyOVYAv0wEOwAoJ61atdLhw4dVr1491a9f3+WncuXKxe4TGxsrSfroo49cxitWrKju3bvr+eef18GDB/Xll19q8+bNzscPHTqkOnXqqEaNGuV2PAA8H8EOAMpJUlKSvv32Ww0ePFi7d+/W0aNHtWHDBiUmJio/P7/YfUJCQtSqVStt377dObZmzRr97W9/U1pamo4dO6alS5eqoKBADRs2dM5599131bNnz3I/JgCejWAHAOUkPDxc7733nvLz89WzZ081b95cY8eOVXBwsCpUuPK/fkeMGKFXXnnFuR0cHKw333xT3bp1U+PGjTV//nz985//VNOmTSVJFy9e1OrVqzVy5MhyPyYAno0bFAOAh7lw4YIaNmyoFStWKC4u7prz582bp1WrVmnjxo03oDoAnowrdgDgYfz9/bV06dKr3sj4x7y9vTVr1qxyrgrALwFX7AAAACzBFTsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACzx/wDZaRjIlPHOZgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ref_constant = DynamicalSystem(h=constant_h)\n", "\n", "r = 1.0\n", "dt = 0.01\n", "t_sim = np.arange(0, 5.0, dt)\n", "\n", "r_log = []\n", "for tk in t_sim:\n", " r_k = ref_constant.step(r=r)\n", " r_log.append(r_k)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t_sim, r_log)\n", "ax.set_xlabel(\"Time (s)\")\n", "ax.set_ylabel(\"$r_k$\")\n", "ax.set_title(\"Constant Reference Generator\")\n", "ax.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "06e1cf21", "metadata": { "lines_to_next_cell": 2 }, "source": [ "### Sinusoid\n", "Generates a sinusoidal reference signal with amplitude $A$ and angular frequency $\\omega$ (rad/s).\n", "$r_k = A \\sin(\\omega\\, t_k)$, where $t_k$ is elapsed time in seconds." ] }, { "cell_type": "code", "execution_count": 3, "id": "a84842a5", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.266177Z", "iopub.status.busy": "2026-05-13T02:47:30.266064Z", "iopub.status.idle": "2026-05-13T02:47:30.268624Z", "shell.execute_reply": "2026-05-13T02:47:30.268158Z" } }, "outputs": [], "source": [ "def sin_wave_h(tk: float, A: float, omega: float) -> float:\n", " return A * np.sin(omega * tk)" ] }, { "cell_type": "code", "execution_count": 4, "id": "e86f630a", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.270064Z", "iopub.status.busy": "2026-05-13T02:47:30.269961Z", "iopub.status.idle": "2026-05-13T02:47:30.347128Z", "shell.execute_reply": "2026-05-13T02:47:30.346672Z" }, "lines_to_next_cell": 0, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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pk2b2vyturoazc3NnZ7jYsHBwbjyyiuxZs0a5OXltfqbpT2VSiVuvvlm/O9//2s3Afx9GZzf69evH+69915s2LAB//znP9s95vevV1u01e/Zou0sPYMXx7t3716kpaW1Os7T09N63otdzmudqDexx47IgTz88MNoaGjATTfdhLi4OOj1euzevRvr1q1DTEwMFixYYJPHue+++/DAAw/g5ptvxvTp03Ho0CFs2rQJQUFBrY6Lj4/HlClTkJiYiMDAQOzfvx9ff/01lixZYj3m1VdfxTXXXIPx48dj4cKF1hIQfn5+HVbuDw4Oxv/93/9h5cqVuO666zB79mwcPHgQGzZsaBNHd91zzz1Yvnw5Xn75ZcyZMwd33XUX/vvf/+KBBx7A1q1bMXHiRBiNRpw4cQL//e9/rTXnLuWqq67C/fffj5UrVyIzMxMzZsyAWq1GdnY2vvrqK/zjH//ALbfc0mFMTzzxBH744Qdcd9111nIe9fX1OHLkCL7++mvk5uZ2+3m//fbbmDRpEsaMGYPFixejf//+yM3Nxc8//4zMzEwAwN///nds3boVycnJWLRoEeLj41FZWYmMjAz88ssvqKys7PAx3nrrLeTk5ODhhx/Gl19+ieuvvx4hISEoLy/Hrl278OOPP7a64LBFW9mj7a677jp88803uOmmm3DttdciJycHq1atQnx8fKs5hB4eHoiPj8e6deswePBgBAYGYvjw4Rg+fHiPX+tEvUqq5bhE1NaGDRvEe++9V4yLixO9vb1FNzc3ceDAgeLDDz8slpSUtDr2UuVO9u3b1+q4rVu3igDErVu3Wm8zGo3iX/7yFzEoKEj09PQUZ86cKZ4+fbrNOV944QVx3Lhxor+/v+jh4SHGxcWJL774YpvyK7/88os4ceJE0cPDQ/T19RWvv/568dixY62O+X25E0sczz77rBgeHi56eHiIU6ZMEbOystrEcSkAxIceeqjdvz3zzDOtnrderxdffvllcdiwYaJGoxEDAgLExMRE8dlnnxVramqs92uv3InFBx98ICYmJooeHh6ij4+POGLECPHJJ58UCwsLrcdER0dfskRMbW2tuGzZMnHgwIGim5ubGBQUJE6YMEF87bXXrG1qKdlxcbmWi5/v78twZGVliTfddJPo7+8vuru7i0OGDBH/9re/tTqmpKREfOihh8SoqChRrVaLYWFh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F6Ku7tIV83NzcyEIQrs/X331lfW49v7+5Zdf9sZTInIISdEBCPHRQNvUjN1OXiahVNuE9NxKAMA1Izi/jpyPn4fauk+qJelxViaTiA1HigAA1wzn+1l2id28efNw9OhRpKam4qeffsL27duxePHiSx4fFRWFoqKiVj/PPvssvL29cc0117Q69uOPP2513Jw5c+z8bIgch0IhWD8U12c59/DNxqPFEEUgIcofkQGeUodDZBeWXvifDxdJHIl9HcyvRmFNE7w1Klw5OFjqcCQnq8Tu+PHj2LhxI1avXo3k5GRMmjQJ77zzDr788ksUFha2ex+lUomwsLBWP99++y1uu+02eHt7tzrW39+/1XHu7u698bSIHMbsEeEAzPXsnHk09qeWL7rrRoZLHAmR/VwzPAxKhYAjBTXIdeLhWEviOj0+lGWLILPELi0tDf7+/khKSrLelpKSAoVCgb1793bpHAcOHEBmZiYWLlzY5m8PPfQQgoKCMG7cOKxZswai6Dr1f4gAICkmEMEtw7Ena5yzXECptgn7rMOwTOzIefXx1mBCy17QPx9xzl47k0nE+pbndi3fzwAAldQBdEdxcTFCQlqXJVCpVAgMDERxcdfmEHz00UcYOnQoJkyY0Or25557DlOnToWnpyc2b96MP/3pT6irq8MjjzzS7nl0Oh10Op31d61WCwAwGAwwGAzdeVpdYjmnPc7tzNhu3TczPgT/2ZuPzArBKdvtp0MFLcOwfgjxUtn0OfL11n1ss57parvNig/Bjuxy/JhZgMWTonsjtF514FwVirXmYdgr+vt32h5yfb11J16HSOyeeuopvPzyyx0ec/z48ct+nMbGRnz++ef429/+1uZvF982evRo1NfX49VXX71kYrdy5Uo8++yzbW7fvHkzPD3tN2cnNTXVbud2Zmy3rguoAwAVjlQK2LApFSpZ9et37rMsJQABMYpKrF+/3i6Pwddb97HNeqazdhMMgEJQ4kRJHT7+33qEevRSYL3kfzkKAAoM9dVjy+aNXb6f3F5vDQ0NXT7WIRK7xx9/HPfcc0+Hx8TGxiIsLAylpa33smxubkZlZSXCwjpfCfP111+joaEB8+fP7/TY5ORkPP/889DpdNBoNG3+vmzZMixdutT6u1arRVRUFGbMmAFfX99Oz99dBoMBqampmD59OtRqtc3P76zYbt1nNIn44tXf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/vnntgiRiIiISDKyGoolIiIioktjYkdERETkJJjYERERETkJJnZEREREToKJHREREZGTYGJHRERE5CSY2BERERE5CSZ2RERERE6CiR0RERGRk2BiR0REROQkZLWlmCOzbGWm1Wrtcn6DwYCGhgZotVqo1Wq7PIYzYrv1DNutZ9hu3cc26xm2W8/Itd0sucXvt01tDxM7G6mtrQUAREVFSRwJEREROaPa2lr4+fl1eIwgdiX9o06ZTCYUFhbCx8cHgiDY/PxarRZRUVHIz8+Hr6+vzc/vrNhuPcN26xm2W/exzXqG7dYzcm03URRRW1uLiIgIKBQdz6Jjj52NKBQKREZG2v1xfH19ZfVidBRst55hu/UM26372GY9w3brGTm2W2c9dRZcPEFERETkJJjYERERETkJJnYyodFosGLFCmg0GqlDkRW2W8+w3XqG7dZ9bLOeYbv1jCu0GxdPEBERETkJ9tgREREROQkmdkREREROgokdERERkZNgYicT7777LmJiYuDu7o7k5GSkp6dLHZJD2759O66//npERERAEAR89913UockCytXrsTYsWPh4+ODkJAQzJkzBydPnpQ6LIf23nvvYeTIkda6WOPHj8eGDRukDkt2/v73v0MQBDz66KNSh+LQnnnmGQiC0OonLi5O6rAcXkFBAe6880706dMHHh4eGDFiBPbv3y91WHbBxE4G1q1bh6VLl2LFihXIyMjAqFGjMHPmTJSWlkodmsOqr6/HqFGj8O6770odiqz89ttveOihh7Bnzx6kpqbCYDBgxowZqK+vlzo0hxUZGYm///3vOHDgAPbv34+pU6fixhtvxNGjR6UOTTb27duH999/HyNHjpQ6FFkYNmwYioqKrD87d+6UOiSHVlVVhYkTJ0KtVmPDhg04duwYXn/9dQQEBEgdml1wVawMJCcnY+zYsfjnP/8JwLx9WVRUFB5++GE89dRTEkfn+ARBwLfffos5c+ZIHYrslJWVISQkBL/99huuvPJKqcORjcDAQLz66qtYuHCh1KE4vLq6OowZMwb/+te/8MILLyAhIQFvvfWW1GE5rGeeeQbfffcdMjMzpQ5FNp566ins2rULO3bskDqUXsEeOwen1+tx4MABpKSkWG9TKBRISUlBWlqahJGRK6ipqQFgTlSoc0ajEV9++SXq6+sxfvx4qcORhYceegjXXnttq8846lh2djYiIiIQGxuLefPmIS8vT+qQHNoPP/yApKQk3HrrrQgJCcHo0aPx4YcfSh2W3TCxc3Dl5eUwGo0IDQ1tdXtoaCiKi4sliopcgclkwqOPPoqJEydi+PDhUofj0I4cOQJvb29oNBo88MAD+PbbbxEfHy91WA7vyy+/REZGBlauXCl1KLKRnJyMTz75BBs3bsR7772HnJwcTJ48GbW1tVKH5rDOnj2L9957D4MGDcKmTZvw4IMP4pFHHsHatWulDs0uVFIHQESO6aGHHkJWVhbn73TBkCFDkJmZiZqaGnz99de4++678dtvvzG560B+fj7+/Oc/IzU1Fe7u7lKHIxvXXHON9f9HjhyJ5ORkREdH47///S+H/i/BZDIhKSkJL730EgBg9OjRyMrKwqpVq3D33XdLHJ3tscfOwQUFBUGpVKKkpKTV7SUlJQgLC5MoKnJ2S5YswU8//YStW7ciMjJS6nAcnpubGwYOHIjExESsXLkSo0aNwj/+8Q+pw3JoBw4cQGlpKcaMGQOVSgWVSoXffvsNb7/9NlQqFYxGo9QhyoK/vz8GDx6M06dPSx2KwwoPD29zkTV06FCnHcJmYufg3NzckJiYiC1btlhvM5lM2LJlC+fwkM2JooglS5bg22+/xa+//or+/ftLHZIsmUwm6HQ6qcNwaNOmTcORI0eQmZlp/UlKSsK8efOQmZkJpVIpdYiyUFdXhzNnziA8PFzqUBzWxIkT25RtOnXqFKKjoyWKyL44FCsDS5cuxd13342kpCSMGzcOb731Furr67FgwQKpQ3NYdXV1ra5gc3JykJmZicDAQPTr10/CyBzbQw89hM8//xzff/89fHx8rPM4/fz84OHhIXF0jmnZsmW45ppr0K9fP9TW1uLzzz/Htm3bsGnTJqlDc2g+Pj5t5m56eXmhT58+nNPZgf/7v//D9ddfj+joaBQWFmLFihVQKpW44447pA7NYT322GOYMGECXnrpJdx2221IT0/HBx98gA8++EDq0OxDJFl45513xH79+olubm7iuHHjxD179kgdkkPbunWrCKDNz9133y11aA6tvTYDIH788cdSh+aw7r33XjE6Olp0c3MTg4ODxWnTpombN2+WOixZuuqqq8Q///nPUofh0G6//XYxPDxcdHNzE/v27Svefvvt4unTp6UOy+H9+OOP4vDhw0WNRiPGxcWJH3zwgdQh2Q3r2BERERE5Cc6xIyIiInISTOyIiIiInAQTOyIiIiInwcSOiIiIyEkwsSMiIiJyEkzsiIiIiJwEEzsiIiIiJ8HEjoiIiMhJMLEjIuqie+65B3PmzJHs8e+66y689NJLXTp27ty5eP311+0cERE5Gu48QUQEQBCEDv++YsUKPPbYYxBFEf7+/r0T1EUOHTqEqVOn4ty5c/D29u70+KysLFx55ZXIycmBn59fL0RIRI6AiR0REYDi4mLr/69btw7Lly/HyZMnrbd5e3t3KaGyl/vuuw8qlQqrVq3q8n3Gjh2Le+65Bw899JAdIyMiR8KhWCIiAGFhYdYfPz8/CILQ6jZvb+82Q7FTpkzBww8/jEcffRQBAQEIDQ3Fhx9+iPr6eixYsAA+Pj4YOHAgNmzY0OqxsrKycM0118Db2xuhoaG46667UF5efsnYjEYjvv76a1x//fWtbv/Xv/6FQYMGwd3dHaGhobjlllta/f3666/Hl19+efmNQ0SywcSOiOgyrF27FkFBQUhPT8fDDz+MBx98ELfeeismTJiAjIwMzJgxA3fddRcaGhoAANXV1Zg6dSpGjx6N/fv3Y+PGjSgpKcFtt912ycc4fPgwampqkJSUZL1t//79eOSRR/Dcc8/h5MmT2LhxI6688spW9xs3bhzS09Oh0+ns8+SJyOEwsSMiugyjRo3C008/jUGDBmHZsmVwd3dHUFAQFi1ahEGDBmH58uWoqKjA4cOHAQD//Oc/MXr0aLz00kuIi4vD6NGjsWbNGmzduhWnTp1q9zHOnTsHpVKJkJAQ6215eXnw8vLCddddh+joaIwePRqPPPJIq/tFRERAr9e3GmYmIufGxI6I6DKMHDnS+v9KpRJ9+vTBiBEjrLeFhoYCAEpLSwGYF0Fs3brVOmfP29sbcXFxAIAzZ860+xiNjY3QaDStFnhMnz4d0dHRiI2NxV133YXPPvvM2ito4eHhAQBtbici58XEjojoMqjV6la/C4LQ6jZLMmYymQAAdXV1uP7665GZmdnqJzs7u81QqkVQUBAaGhqg1+utt/n4+CAjIwNffPEFwsPDsXz5cowaNQrV1dXWYyorKwEAwcHBNnmuROT4mNgREfWiMWPG4OjRo4iJicHAgQNb/Xh5ebV7n4SEBADAsWPHWt2uUqmQkpKCV155BYcPH0Zubi5+/fVX69+zsrIQGRmJoKAguz0fInIsTOyIiHrRQw89hMrKStxxxx3Yt28fzpw5g02bNmHBggUwGo3t3ic4OBhjxozBzp07rbf99NNPePvtt5GZmYlz587h008/hclkwpAhQ6zH7NixAzNmzLD7cyIix8HEjoioF0VERGDXrl0wGo2YMWMGRowYgUcffRT+/v5QKC79kXzffffhs88+s/7u7++Pb775BlOnTsXQoUOxatUqfPHFFxg2bBgAoKmpCd999x0WLVpk9+dERI6DBYqJiGSgsbERQ4YMwbp16zB+/PhOj3/vvffw7bffYvPmzb0QHRE5CvbYERHJgIeHBz799NMOCxlfTK1W45133rFzVETkaNhjR0REROQk2GNHRERE5CSY2BERERE5CSZ2RERERE6CiR0RERGRk2BiR0REROQkmNgREREROQkmdkREREROgokdERERkZNgYkdERETkJJjYERERETmJ/w+PxbRLQ9zPzAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ref_sin_wave = DynamicalSystem(h=sin_wave_h)\n", "\n", "A = 1.0 # amplitude\n", "omega = 2.0 # angular frequency (rad/s)\n", "dt = 0.01\n", "t_sim = np.arange(0, 4 * np.pi / omega, dt)\n", "\n", "r_log = []\n", "for tk in t_sim:\n", " r_k = ref_sin_wave.step(tk=tk, A=A, omega=omega)\n", " r_log.append(r_k)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t_sim, r_log)\n", "ax.set_xlabel(\"Time (s)\")\n", "ax.set_ylabel(\"$r_k$\")\n", "ax.set_title(\"Sinusoid Reference Generator\")\n", "ax.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3df11096", "metadata": {}, "source": [ "### Square Wave\n", "Generates a square wave reference signal with amplitude $A$ and period $T$ (seconds).\n", "$r_k = A \\operatorname{sgn}\\!\\left(\\sin\\!\\left(\\tfrac{2\\pi}{T} t_k\\right)\\right)$" ] }, { "cell_type": "code", "execution_count": 5, "id": "a60a5683", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.350388Z", "iopub.status.busy": "2026-05-13T02:47:30.350267Z", "iopub.status.idle": "2026-05-13T02:47:30.352609Z", "shell.execute_reply": "2026-05-13T02:47:30.351982Z" } }, "outputs": [], "source": [ "def square_wave_h(tk: float, A: float, T: float) -> float:\n", " return A * np.sign(np.sin(2 * np.pi / T * tk))" ] }, { "cell_type": "code", "execution_count": 6, "id": "931cd407", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.353993Z", "iopub.status.busy": "2026-05-13T02:47:30.353862Z", "iopub.status.idle": "2026-05-13T02:47:30.436673Z", "shell.execute_reply": "2026-05-13T02:47:30.436244Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAaGJJREFUeJzt3XtcVGX+B/DPzHBHEBUESRJvK2reQmU1K1MEHbeyu63lpdKtlVqlm7apqaVrF3M1k6wsba2sNvtVSyaZVhqpaXhLTc27Al6CEVAcZs7vD5ypYUAYmMs58/28Xy9eOmfOPPN8n+c8nO95zgWdoigKiIiIiEjz9L6uABERERG5BxM7IiIiIj/BxI6IiIjITzCxIyIiIvITTOyIiIiI/AQTOyIiIiI/wcSOiIiIyE8wsSMiIiLyE0zsiIiIiPwEEzsiIg965513kJSUhMDAQERFRfm6OkTk55jYETXQjh07cPvtt6NVq1YICQnBFVdcgUGDBmHBggW+rppHGY1GNGnSBFX/KuFPP/0EnU6HVq1aOX3m66+/hk6nw+LFi71VzTrr378/dDqd/Sc0NBRdu3bFvHnzYLVa61Xmnj17MHr0aLRt2xavv/66KuP2he+++w533nknrrjiCgQFBaFx48ZISUnBjBkzUFBQ4OvqudWrr76Kt99+29fVIEECfF0BIi37/vvvccMNN+DKK6/E2LFjERcXh6NHj+KHH37Av//9bzz88MO+rqLH9OvXD1988QV27tyJLl262Jdv2LABAQEBOHLkCI4dO4aWLVs6vGf7rBq1bNkSs2fPBgCcPn0a7777LiZOnIhTp07hueeec7m8devWwWq14t///jfatWvn7upq0tSpUzFz5ky0adMGo0ePRps2bXDhwgVs2bIFL730EpYuXYoDBw74uppu8+qrryI6OhqjR4/2dVVICCZ2RA3w3HPPoXHjxti8ebPTabbCwkLfVKoOFEXBhQsXEBoaWu8ybMnZ+vXrnRI7o9GIr7/+GuvXr8fw4cPt761fvx7NmjVDx44d6195D2rcuDHuuece++sHH3wQSUlJWLBgAWbMmAGDweBSebZtwJ2nYEtLSxEeHu628rxpxYoVmDlzJu6880688847CAoKcnj/5Zdfxssvv+yj2tXOHePGHS5cuICgoCDo9TzpRs64VRA1wIEDB9C5c+dqd9zNmzd3eF1eXo6JEyciJiYGERERuOmmm3Ds2DHodDo888wz9vVGjx6NxMREp/KeeeYZ6HQ6h2VvvfUWBgwYgObNmyM4OBidOnXCokWLnD6bmJiIv/zlL/jyyy/Rs2dPhIaG4rXXXgMAFBUVYcKECUhISEBwcDDatWuHOXPm1Hr6sXfv3ggKCrLPwtls2LAB1113HXr37u3wntVqxQ8//IC+fftCp9Ph7NmzeOyxx9ClSxc0atQIkZGRGDJkCLZt22b/TEFBAQICAjB9+nSn79+7dy90Oh1eeeUV+7L6xlKTkJAQ9OrVC+fOnXNK1P/zn/8gOTkZoaGhaNq0KYYPH46jR4/a309MTMS0adMAADExMU79/MUXX+Daa69FeHg4IiIiMHToUOzatcvhO0aPHo1GjRrhwIEDMBqNiIiIwIgRI+ztOW/ePHTu3BkhISGIjY3F3/72N/z2228OZdj6fv369ejduzdCQkLQpk0bLFu2zCneoqIiTJw4EYmJiQgODkbLli0xcuRInD592r5OeXk5pk2bhnbt2iE4OBgJCQl44oknUF5eXmt7Tp06FdHR0XjzzTedkjqgMrH+YxvVp62OHz+OYcOGoVGjRoiJicFjjz0Gi8XisK6rbVfduKnL2EtMTMSuXbvwzTff2E/x9+/f3/7+r7/+ijvuuANNmzZFWFgY/vznP+N///ufQxnr1q2DTqfD+++/j6effhpXXHEFwsLCYDKZam1vEkohonpLS0tTIiIilB07dtS67j333KMAUP76178qr7zyinLrrbcqXbt2VQAo06ZNs683atQopVWrVk6fnzZtmlJ1yPbq1UsZPXq08vLLLysLFixQ0tLSFADKK6+84rBeq1atlHbt2ilNmjRRJk2apGRlZSlr165VSktLla5duyrNmjVTnnrqKSUrK0sZOXKkotPplH/84x+1xtSnTx+Huh45ckQBoHz//ffK008/rfTo0cP+Xl5engJAmTNnjqIoirJ582albdu2yqRJk5TXXntNmTFjhnLFFVcojRs3Vo4fP27/3IABA5ROnTo5fff06dMVg8Gg5OfnK4qiNDiW66+/XuncubPT8p49eyo6nU4pKyuzL3v22WcVnU6n3HXXXcqrr76qTJ8+XYmOjlYSExOV3377TVEURVm5cqVyyy23KACURYsWKe+8846ybds2RVEUZdmyZYpOp1MGDx6s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NfN1ldyGp2I1IDMzE6NGjULPnj3Ru3dvzJs3D6WlpRgzZoyvq6Za48ePx7vvvov/+7//Q0REhP16k8aNGyM0NNTHtVOniIgIp2sQw8PD0axZM16beBkTJ05E3759MWvWLNx5553YtGkTFi9ejMWLF/u6aqp244034rnnnsOVV16Jzp0746effsLcuXNx3333+bpqqlJSUoL9+/fbXx88eBB5eXlo2rQprrzySkyYMAHPPvss2rdvj9atW2PKlCmIj4/HsGHDfFdpFbhcu7Vo0QK33347tm7dis8//xwWi8W+j2jatCmCgoJ8VW338PVtuVQ3CxYsUK688kolKChI6d27t/LDDz/4ukqqBqDan7feesvXVdMUPu6kbj777DPlqquuUoKDg5WkpCRl8eLFvq6S6plMJuUf//iHcuWVVyohISFKmzZtlH/+859KeXm5r6umKmvXrq32d9moUaMURal85MmUKVOU2NhYJTg4WBk4cKCyd+9e31ZaBS7XbgcPHqxxH7F27VpfV73BdIrCx3wTERER+QNeY0dERETkJ5jYEREREfkJJnZEREREfoKJHREREZGfYGJHRERE5CeY2BERERH5CSZ2RERERH6CiR0RERGRn2BiR0RUR6NHj/bpn2q69957MWvWrDqtO3z4cLz00kserhERqQ3/8gQREQCdTnfZ96dNm4aJEydCURRERUV5p1J/sG3bNgwYMACHDx9Go0aNal1/586duO6663Dw4EE0btzYCzUkIjVgYkdEBNj/CDgArFixAlOnTsXevXvtyxo1alSnhMpTHnjgAQQEBCArK6vOn+nVqxdGjx6N8ePHe7BmRKQmPBVLRAQgLi7O/tO4cWPodDqHZY0aNXI6Fdu/f388/PDDmDBhApo0aYLY2Fi8/vrrKC0txZgxYxAREYF27drhiy++cPiunTt3YsiQIWjUqBFiY2Nx77334vTp0zXWzWKx4KOPPsKNN97osPzVV19F+/btERISgtjYWNx+++0O79944414//33G944RKQZTOyIiBpg6dKliI6OxqZNm/Dwww/joYcewh133IG+ffti69atSEtLw7333ouysjIAQFFREQYMGIAePXrgxx9/xKpVq1BQUIA777yzxu/Yvn07iouL0bNnT/uyH3/8EY888ghmzJiBvXv3YtWqVbjuuuscPte7d29s2rQJ5eXlngmeiFSHiR0RUQN069YNTz/9NNq3b4/JkycjJCQE0dHRGDt2LNq3b4+pU6fizJkz2L59OwDglVdeQY8ePTBr1iwkJSWhR48eWLJkCdauXYtffvml2u84fPgwDAYDmjdvbl925MgRhIeH4y9/+QtatWqFHj164JFHHnH4XHx8PC5evOhwmpmI/BsTOyKiBujatav9/waDAc2aNUOXLl3sy2JjYwEAhYWFACpvgli7dq39mr1GjRohKSkJAHDgwIFqv+P8+fMIDg52uMFj0KBBaNWqFdq0aYN7770Xy5cvt88K2oSGhgKA03Ii8l9M7IiIGiAwMNDhtU6nc1hmS8asVisAoKSkBDfeeCPy8vIcfvbt2+d0KtUmOjoaZWVluHjxon1ZREQEtm7divfeew8tWrTA1KlT0a1bNxQVFdnXOXv2LAAgJibGLbESkfoxsSMi8qKrr74au3btQmJiItq1a+fwEx4eXu1nunfvDgD4+eefHZYHBAQgNTUVzz//PLZv345Dhw7h66+/tr+/c+dOtGzZEtHR0R6Lh4jUhYkdEZEXjR8/HmfPnsXdd9+NzZs348CBA/jyyy8xZswYWCyWaj8TExODq6++GuvXr7cv+/zzzzF//nzk5eXh8OHDWLZsGaxWKzp06GBf57vvvkNaWprHYyIi9WBiR0TkRfHx8diwYQMsFgvS0tLQpUsXTJgwAVFRUdDra/6V/MADD2D58uX211FRUfj4448xYMAAdOzYEVlZWXjvvffQuXNnAMCFCxfwySefYOzYsR6PiYjUgw8oJiLSgPPnz6NDhw5YsWIF+vTpU+v6ixYtwsqVK7F69Wov1I6I1IIzdkREGhAaGoply5Zd9kHGfxQYGIgFCxZ4uFZEpDacsSMiIiLyE5yxIyIiIvITTOyIiIiI/AQTOyIiIiI/wcSOiIiIyE8wsSMiIiLyE0zsiIiIiPwEEzsiIiIiP8HEjoiIiMhPMLEjIiIi8hNM7IiIiIj8xP8DXmNrur7kSBAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ref_square_wave = DynamicalSystem(h=square_wave_h)\n", "\n", "A = 1.0 # amplitude\n", "T = np.pi # period (s)\n", "dt = 0.01\n", "t_sim = np.arange(0, 4 * T, dt)\n", "\n", "r_log = []\n", "for tk in t_sim:\n", " r_k = ref_square_wave.step(tk=tk, A=A, T=T)\n", " r_log.append(r_k)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t_sim, r_log)\n", "ax.set_xlabel(\"Time (s)\")\n", "ax.set_ylabel(\"$r_k$\")\n", "ax.set_title(\"Square Wave Reference Generator\")\n", "ax.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "f03693a7", "metadata": {}, "source": [ "### Ramp\n", "Generates a linearly increasing reference signal with slope $m$ (units/s).\n", "$r_k = m\\, t_k$" ] }, { "cell_type": "code", "execution_count": 7, "id": "50ef43ac", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.438107Z", "iopub.status.busy": "2026-05-13T02:47:30.438001Z", "iopub.status.idle": "2026-05-13T02:47:30.439816Z", "shell.execute_reply": "2026-05-13T02:47:30.439499Z" } }, "outputs": [], "source": [ "def ramp_h(tk: float, m: float) -> float:\n", " return m * tk" ] }, { "cell_type": "code", "execution_count": 8, "id": "e39073b8", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.441091Z", "iopub.status.busy": "2026-05-13T02:47:30.440993Z", "iopub.status.idle": "2026-05-13T02:47:30.512174Z", "shell.execute_reply": "2026-05-13T02:47:30.511698Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWcNJREFUeJzt3Xd4FHXix/H3pvdQUmih90ASiiAiVYqIICjlsIFiux94B0FQLBRRUJHiiWc5D9E7PSkKKh0pIoLSTCCU0IuBhJpOks3u/P7wyBkJQiCb2Ww+r+fJ87izUz473yz5ODs7YzEMw0BEREREyjw3swOIiIiISMlQsRMRERFxESp2IiIiIi5CxU5ERETERajYiYiIiLgIFTsRERERF6FiJyIiIuIiVOxEREREXISKnYiIiIiLULETkTIrPz+fcePGERERgZubG/369TM7koiIqVTsRJzMvHnzsFgsBT8eHh5Ur16dYcOGkZSUZHa8G/bb12SxWAgKCqJTp04sW7bshtc5d+5cpk+fzoABA/j4448ZPXp0CSYum+x2O5988gndu3cnJCQET09PwsLC6NGjBx988AG5ublmRywx2dnZTJo0iQ0bNpgdRcRpeJgdQESK9vLLL1OnTh1ycnL48ccfmTdvHps2bSIhIQEfHx+z492Q7t278/DDD2MYBsePH+fdd9+lT58+rFixgp49exZ7fevWraN69erMmjXLAWnLnkuXLtG/f39WrVrFbbfdxjPPPEN4eDgXLlzgu+++4//+7//46aef+Oc//2l21BKRnZ3N5MmTAejcubO5YUSchIqdiJPq1asXrVu3BuCxxx4jJCSE119/na+//ppBgwaZnO7GNGzYkAcffLDg8X333UfTpk156623bqjYnTlzhgoVKpRYPsMwyMnJwdfXt8TWWZpGjx7NqlWrmD17Nn/9618LPTdmzBgOHjzImjVrTEp3bfn5+djtdry8vEzNkZWVhb+/v6kZRG6UPooVKSM6dOgAwOHDhwum5eXlMWHCBFq1akVwcDD+/v506NCB9evXF1r22LFjWCwW3nzzTd555x3q1q2Ln58fPXr04OTJkxiGwZQpU6hRowa+vr7cc889XLhwodA6ateuzd13383q1auJiYnBx8eHpk2b8uWXX97wa2rSpAkhISGFXhNAbm4uEydOpH79+nh7exMREcG4ceMKPka8/HrWr1/Pnj17Cj7evfyRnN1uZ/bs2URGRuLj40N4eDhPPvkkFy9eLPI1rVq1itatW+Pr68v7778PQGpqKqNGjSIiIgJvb2/q16/P66+/jt1uL3K/fvDBB9SrVw9vb29uueUWtm3bdsXr3b9/P4MGDSI0NBRfX18aNWrECy+8UGiepKQkHn30UcLDw/H29iYyMpK5c+dec1+ePHmSDz/8kDvvvPOKUndZgwYN+L//+79C04q7rzZt2kSbNm3w8fGhbt26fPLJJ1dsp7j7bvbs2QX7bu/evdf1e33s2DFCQ0MBmDx5csHvwKRJkwrmWbduHR06dMDf358KFSpwzz33sG/fvkJZJ02ahMViYe/evdx///1UrFiR22+//Zr7W8RZ6YidSBlx7NgxACpWrFgwLT09nQ8//JAhQ4bw+OOPk5GRwT//+U969uzJ1q1biYmJKbSOTz/9lLy8PJ5++mkuXLjAG2+8waBBg+jatSsbNmzg2Wef5dChQ7z99ts888wzVxSKgwcPMnjwYJ566imGDh3KRx99xMCBA1m5ciXdu3cv9mtKS0vj4sWL1KtXr2Ca3W6nb9++bNq0iSeeeIImTZqwe/duZs2axYEDB1iyZAmhoaH861//4tVXXyUzM5Np06YBvxZFgCeffJJ58+bxyCOP8Je//IWjR48yZ84cfv75Z3744Qc8PT0LtpeYmMiQIUN48sknefzxx2nUqBHZ2dl06tSJpKQknnzySWrWrMnmzZsZP348p0+fZvbs2YVex2effUZGRgZPPvkkFouFN954g3vvvZcjR44UbGvXrl106NABT09PnnjiCWrXrs3hw4f55ptvePXVVwFISUnh1ltvxWKxMHLkSEJDQ1mxYgXDhw8nPT2dUaNGXXVfrlixApvNVuiI6PUozr46dOgQAwYMYPjw4QwdOpS5c+cybNgwWrVqRWRkJECx991HH31ETk4OTzzxBN7e3lSqVOm6fq9DQ0N59913+fOf/0z//v259957AYiKigLg22+/pVevXtStW5dJkyZx6dIl3n77bdq3b8/OnTupXbt2oRwDBw6kQYMGTJ06FcMwirUPRZyKISJO5aOPPjIA49tvvzXOnj1rnDx50li0aJERGhpqeHt7GydPniyYNz8/38jNzS20/MWLF43w8HDj0UcfLZh29OhRAzBCQ0ON1NTUgunjx483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TVZWFo888ojZ0cqtzMzMQv8ndfToUeLi4qhUqRI1a9Y0MVn5NWLECD777DO++uorAgMDSU5OBiA4OBhfX1+T05VP48ePp1evXtSsWZOMjAw+++wzNmzYwKpVq8yOVm4FBgZecd6pv78/lStX1vmoJnrmmWfo06cPtWrV4tSpU0ycOBF3d3eGDBliai4VOwcZPHgwZ8+eZcKECSQnJxMTE8PKlSuv+EKFlJ7t27fTpUuXgsexsbEADB06lHnz5pmUqnx79913AejcuXOh6R999BHDhg0r/UDCmTNnePjhhzl9+jTBwcFERUWxatUqunfvbnY0Eafyyy+/MGTIEM6fP09oaCi33347P/74I6Ghoabm0nXsRERERFyEzrETERERcREqdiIiIiIuQsVORERExEWo2ImIiIi4CBU7ERERERehYiciIiLiIlTsRERERFyEip2IiIiIi1CxE5Fyb9iwYfTr18+07T/00ENMnTr1uub905/+xIwZMxycSETKKt15QkRcmsVi+cPnJ06cyOjRozEMgwoVKpROqN+Ij4+na9euHD9+nICAgGvOn5CQQMeOHTl69CjBwcGlkFBEyhIVOxFxacnJyQX/PX/+fCZMmEBiYmLBtICAgOsqVI7y2GOP4eHhwXvvvXfdy9xyyy0MGzaMESNGODCZiJRF+ihWRFxalSpVCn6Cg4OxWCyFpgUEBFzxUWznzp15+umnGTVqFBUrViQ8PJx//OMfZGVl8cgjjxAYGEj9+vVZsWJFoW0lJCTQq1cvAgICCA8P56GHHuLcuXNXzWaz2Vi0aBF9+vQpNP3vf/87DRo0wMfHh/DwcAYMGFDo+T59+vD555/f/M4REZejYiciUoSPP/6YkJAQtm7dytNPP82f//xnBg4cyG233cbOnTvp0aMHDz30ENnZ2QCkpqbStWtXWrRowfbt21m5ciUpKSkMGjToqtvYtWsXaWlptG7dumDa9u3b+ctf/sLLL79MYmIiK1eupGPHjoWWa9OmDVu3biU3N9cxL15EyiwVOxGRIkRHR/Piiy/SoEEDxo8fj4+PDyEhITz++OM0aNCACRMmcP78eXbt2gXAnDlzaNGiBVOnTqVx48a0aNGCuXPnsn79eg4cOFDkNo4fP467uzthYWEF006cOIG/vz933303tWrVokWLFvzlL38ptFy1atXIy8sr9DGziAio2ImIFCkqKqrgv93d3alcuTLNmzcvmBYeHg7AmTNngF+/BLF+/fqCc/YCAgJo3LgxAIcPHy5yG5cuXcLb27vQFzy6d+9OrVq1qFu3Lg899BCffvppwVHBy3x9fQGumC4iomInIlIET0/PQo8tFkuhaZfLmN1uByAzM5M+ffoQFxdX6OfgwYNXfJR6WUhICNnZ2eTl5RVMCwwMZOfOnfznP/+hatWqTJgwgejoaFJTUwvmuXDhAgChoaEl8lpFxHWo2ImIlICWLVuyZ88eateuTf369Qv9+Pv7F7lMTEwMAHv37i003cPDg27duvHGG2+wa9cujh07xrp16wqeT0hIoEaNGoSEhDjs9YhI2aRiJyJSAkaMGMGFCxcYMmQI27Zt4/Dhw6xatYpHHnkEm81W5DKhoaG0bNmSTZs2FUxbunQpf/vb34iLi+P48eN88skn2O12GjVqVDDP999/T48ePRz+mkSk7FGxExEpAdWqVeOHH37AZrPRo0cPmjdvzqhRo6hQoQJublf/p/axxx7j008/LXhcoUIFvvzyS7p27UqTJk147733+M9//kNkZCQAOTk5LFmyhMcff9zhr0lEyh5doFhExESXLl2iUaNGzJ8/n3bt2l1z/nfffZfFixezevXqUkgnImWNjtiJiJjI19eXTz755A8vZPxbnp6evP322w5OJSJllY7YiYiIiLgIHbETERERcREqdiIiIiIuQsVORERExEWo2ImIiIi4CBU7ERERERehYiciIiLiIlTsRERERFyEip2IiIiIi1CxExEREXERKnYiIiIiLuL/ATtrPGdse/5vAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ref_ramp = DynamicalSystem(h=ramp_h)\n", "\n", "m = 0.5 # slope (units/s)\n", "dt = 0.01\n", "t_sim = np.arange(0, 5.0, dt)\n", "\n", "r_log = []\n", "for tk in t_sim:\n", " r_k = ref_ramp.step(tk=tk, m=m)\n", " r_log.append(r_k)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t_sim, r_log)\n", "ax.set_xlabel(\"Time (s)\")\n", "ax.set_ylabel(\"$r_k$\")\n", "ax.set_title(\"Ramp Reference Generator\")\n", "ax.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "e0762bf9", "metadata": {}, "source": [ "### Step\n", "Generates a step reference signal that jumps from $0$ to $A$ at $t = t_{\\text{step}}$.\n", "$r_k = \\begin{cases} A & t_k \\ge t_{\\text{step}} \\\\ 0 & \\text{otherwise} \\end{cases}$" ] }, { "cell_type": "code", "execution_count": 9, "id": "e18a10e0", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.513707Z", "iopub.status.busy": "2026-05-13T02:47:30.513599Z", "iopub.status.idle": "2026-05-13T02:47:30.515539Z", "shell.execute_reply": "2026-05-13T02:47:30.515139Z" } }, "outputs": [], "source": [ "def step_h(tk: float, A: float, t_step: float) -> float:\n", " return A if tk >= t_step else 0.0" ] }, { "cell_type": "code", "execution_count": 10, "id": "26a0cdaf", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.516658Z", "iopub.status.busy": "2026-05-13T02:47:30.516561Z", "iopub.status.idle": "2026-05-13T02:47:30.633885Z", "shell.execute_reply": "2026-05-13T02:47:30.633401Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAO25JREFUeJzt3Xt4VNW9xvF3EpIJIQkXAwmESLgJgkC4piggaCBFxIMeENEDISo9WmKFVKqxSkAq8VIpnooiWkTbKigt1HoBIhfRAnIzKCgIiECVBBAhkEgyJvv8oZkyJiDJ7GFthu/nefI8zMree357FiOva+21t8uyLEsAAAA474WYLgAAAAD2INgBAAAECYIdAABAkCDYAQAABAmCHQAAQJAg2AEAAAQJgh0AAECQINgBAAAECYIdAABAkCDYATgv7Ny5U4MGDVL9+vXlcrm0ePFi0yUBgOMQ7IDzxMcff6zhw4erRYsWioiIUEJCggYOHKg//vGPPttNnz7daOiZN2+eXC6X96dOnTpKSEjQ2LFj9eWXX9b6uOnp6fr444/18MMP689//rN69OhhY9Xnp4MHD+q+++5Tp06dFBUVpYiICLVp00YZGRl6//33TZdnqzVr1mjKlCk6evSo6VIAR3PxrFjA+dasWaMBAwbo4osvVnp6uuLj47V//36tW7dOu3fv1q5du7zbRkVFafjw4Zo3b56RWufNm6eMjAw99NBDatmypU6ePKl169Zp3rx5SkpK0tatWxUREVGjY3777beKjIzUb3/7W/3ud78LUOXnl/Xr12vIkCE6fvy4brrpJvXs2VNut1t79uzR4sWL9cknn+jdd99Vv379TJdqi9///veaNGmS9uzZo6SkJNPlAI5Vx3QBAH7aww8/rPr162vDhg1q0KCBz+8OHjxopqifMHjwYO+o2u23367Y2Fg9+uijev3113XjjTfW6FiHDh2SpCrn7o+TJ08qPDxcISHn38TFN998o2HDhqlOnTrKz89X+/btfX7/u9/9TvPnz1fdunUNVfjTiouLVa9ePaM1WJalkydPOvpzAmrq/PsvGnAB2r17tzp27FhtsGnSpIn3zy6XS8XFxXrxxRe9U6Fjx471/v7LL7/Urbfeqri4OLndbnXs2FFz5871Od6qVavkcrm0YMEC3X///YqPj1e9evV03XXXaf/+/bU+h759+3rP5VTbt2/X8OHD1ahRI0VERKhHjx56/fXXvb+fMmWKWrRoIUmaNGmSXC6Xz4hNTc5p/vz5euCBB5SQkKDIyEgVFRVJkj744AP9/Oc/V/369RUZGakrr7xS//rXv3yOMWXKFLlcLu3atUtjx45VgwYNVL9+fWVkZKikpKTK+f7lL39Rr169FBkZqYYNG6pfv35atmyZzzZvv/22+vbtq3r16ik6OlpDhgzRtm3bfvKznD17tg4cOKCZM2dWCXXS938PRo0apZ49e/q01+SzevXVV/Xwww+refPmioiI0NVXX+0zMlypJp/dJ598optvvlkNGzZUnz59JEkfffSRxo4dq1atWikiIkLx8fG69dZb9fXXX/vsP2nSJElSy5YtvX+3v/jiC0nSd999p2nTpql169Zyu91KSkrS/fffr9LSUp86kpKSdO2112rp0qXq0aOH6tatq2efffYnP2/gfMKIHXAeaNGihdauXautW7fqsssuO+12f/7zn3X77berV69e+sUvfiFJat26tSSpsLBQP/vZz+RyuZSZmanGjRvr7bff1m233aaioiJNmDDB51gPP/ywXC6X7r33Xh08eFAzZ85Uamqq8vPzazXCUfmPcMOGDb1t27Zt0xVXXKGEhATdd999qlevnl599VUNGzZMf/vb33T99dfrhhtuUIMGDTRx4kSNGjVK11xzjaKiomp1TtOmTVN4eLjuuecelZaWKjw8XCtWrNDgwYPVvXt35eTkKCQkRC+88IKuuuoqvffee+rVq5fPMW688Ua1bNlSubm52rx5s55//nk1adJEjz76qHebqVOnasqUKbr88sv10EMPKTw8XB988IFWrFihQYMGefsqPT1daWlpevTRR1VSUqJnnnlGffr00YcffnjG6cZ//vOfqlu3rm644Yaz/vxr+lk98sgjCgkJ0T333KNjx47pscce0y233KIPPvjAu01NP7sRI0aobdu2mj59uiqvAsrLy9Pnn3+ujIwMxcfHa9u2bZozZ462bdumdevWyeVy6YYbbtBnn32mV155RX/4wx8UGxsrSWrcuLGk70eEX3zxRQ0fPly//vWv9cEHHyg3N1effvqpFi1a5FPDjh07NGrUKP3v//6vxo0bp3bt2p31ZwicFywAjrds2TIrNDTUCg0NtXr37m395je/sZYuXWqVlZVV2bZevXpWenp6lfbb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rVy5UjExMfrnP/9Zo3Ns06aNfvvb32ratGnq27evbrjhBrndbm3YsEHNmjVTbm6uYmJi9Mwzz2j06NHq1q2bbrrpJjVu3Fj79u3Tm2++qSuuuEJPPfXUad+jUaNGWrRokYYOHaouXbp4nzwRFham/fv367XXXpPke52cv59VID67mJgY9evXT4899pg8Ho8SEhK0bNky7dmzp8q23bt3lyT99re/1U033aSwsDDv+aenp2vOnDk6evSorrzySq1fv14vvviihg0bpgEDBtTovIDznomluABq5u2337ZuvfVWq3379lZUVJQVHh5utWnTxrrrrruswsJCn223b99u9evXz6pbt64lyefWJ4WFhdb48eOtxMREKywszIqPj7euvvpqa86cOd5tKm938corr1jZ2dlWkyZNrLp161pDhgyx9u7d+5O1Vt7uZMOGDVV+V15ebrVu3dpq3bq19d1331mWZVm7d++2xowZY8XHx1thYWFWQkKCde2111oLFy707ne6253U9Jxee+21amv+8MMPrRtuuMG66KKLLLfbbbVo0cK68cYbreXLl3u3qbxlx6FDh6o93x/fhmPu3LlW165dLbfbbTVs2NC68sorrby8PJ9tVq5caaWlpVn169e3IiIirNatW1tjx461Nm7ceJpP19eBAwesSZMmWR06dLDq1q1rud1uq1WrVtaYMWN8bhVix2dV2QcvvPCCbZ+dZVnWv//9b+v666+3GjRoYNWvX98aMWKE9dVXX1mSrJycHJ9tp02bZiUkJFghISE+n7nH47GmTp1qtWzZ0goLC7MSExOt7Oxsn9voWNb3tzsZMmTI2Xy0wHmLZ8UC8LFq1SoNGDBAr732moYPH266HABADXCNHQAAQJAg2AEAAAQJgh0AAECQ4Bo7AACAIMGIHQAAQJAg2AEAAASJC/YGxRUVFfrqq68UHR191s8YBAAAONcsy9Lx48fVrFkzhYSceUzugg12X331lRITE02XAQAAcFb279+v5s2bn3GbCzbYRUdHS/r+Q4qJiQnIe3g8Hi1btkyDBg1SWFhYQN4DNUe/OA994kz0i/PQJ84U6H4pKipSYmKiN7ucyQUb7CqnX2NiYgIa7CIjIxUTE8MX0EHoF+ehT5yJfnEe+sSZzlW/nM2lYyyeAAAACBIEOwAAgCBBsAMAAAgSBDsAAIAgQbADAAAI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gCBBsAMAAAgSBDsAAIAgQbADAAAIEgQ7AACAIEGwAwAACBKOeaTYuWZZliSpqKgoYO/h8XhUUlKioqIihYWFBex9UDP0i/PQJ85EvzgPfeJMge6XyqxSmV3O5IINdsePH5ckJSYmGq4EAADgpx0/flz169c/4zYu62ziXxCqqKjQV199pejoaLlcroC8R1FRkRITE7V//37FxMQE5D1Qc/SL89AnzkS/OA994kyB7hfLsnT8+HE1a9ZMISFnvorugh2xCwkJUfPmzc/Je8XExPAFdCD6xXnoE2eiX5yHPnGmQPbLT43UVWLxBAAAQJAg2AEAAAQJgl0Aud1u5eTkyO12my4Fp6BfnIc+cSb6xXnoE2dyUr9csIsnAAAAgg0jdgAAAEGCYAcAABAkCHYAAABBgmAXQLNmzVJSUpIiIiKUkpKi9evXmy7pgrZ69WoNHTpUzZo1k8vl0uLFi02XdMHLzc1Vz549FR0drSZNmmjYsGHasWOH6bIuaM8884w6d+7svR9X79699fbbb5suC6d45JFH5HK5NGHCBNOlXNCmTJkil8vl89O+fXvTZRHsAmXBggXKyspSTk6ONm/erC5duigtLU0HDx40XdoFq7i4WF26dNGsWbNMl4IfvPvuuxo/frzWrVunvLw8eTweDRo0SMXFxaZLu2A1b95cjzzyiDZt2qSNGzfqqquu0n/9139p27ZtpkuDpA0bNujZZ59V586dTZcCSR07dtSBAwe8P++//77pklgVGygpKSnq2bOnnnrqKUnfP8IsMTFRd911l+677z7D1cHlcmnRokUaNmyY6VJwikOHDqlJkyZ699131a9fP9Pl4AeNGjXS448/rttuu810KRe0EydOqFu3bnr66af1u9/9TsnJyZo5c6bpsi5YU6ZM0eLFi5Wfn2+6FB+M2AVAWVmZNm3apNTUVG9bSEiIUlNTtXbtWoOVAc527NgxSd8HCZhXXl6u+fPnq7i4WL179zZdzgVv/PjxGjJkiM+/LTBr586datasmVq1aqVbbrlF+/btM13Shfus2EA6fPiwysvLFRcX59MeFxen7du3G6oKcLaKigpNmDBBV1xxhS677DLT5VzQPv74Y/Xu3VsnT55UVFSUFi1apA4dOpgu64I2f/58bd68WRs2bDBdCn6QkpKiefPmqV27djpw4ICmTp2qvn37auvWrYqOjjZWF8EOgCOMHz9eW7dudcQ1Khe6du3aKT8/X8eOHdPChQuVnp6ud999l3BnyP79+3X33XcrLy9PERERpsvBDwYPHuz9c+fOnZWSkqIWLVro1VdfNXrZAsEuAGJjYxUaGqrCwkKf9sLCQsXHxxuqCnCuzMxMvfHGG1q9erWaN29uupwLXnh4uNq0aSNJ6t69uzZs2KAnn3xSzz77rOHKLkybNm3SwYMH1a1bN29beXm5Vq9eraeeekqlpaUKDQ01WCEkqUGDBrrkkku0a9cuo3VwjV0AhIeHq3v37lq+fLm3raKiQsuXL+c6FeAUlmUpMzNTixYt0ooVK9SyZUvTJaEaFRUVKi0tNV3GBevqq6/Wxx9/rPz8fO9Pjx49dMsttyg/P59Q5xAnTpzQ7t271bRpU6N1MGIXIFlZWUpPT1ePHj3Uq1cvzZw5U8XFxcrIyDBd2gXrxIkTPv8ntWfPHuXn56tRo0a6+OKLDVZ24Ro/frxefvll/eMf/1B0dLQKCgokSfXr11fdunUNV3dhys7O1uDBg3XxxRfr+PHjevnll7Vq1SotXbrUdGkXrOjo6CrXndarV08XXXQR16MadM8992jo0KFq0aKFvvrqK+Xk5Cg0NFSjRo0yWhfBLkBGjhypQ4cOafLkySooKFBycrKWLFlSZUEFzp2NGzdqwIAB3tdZWVmSpPT0dM2bN89QVRe2Z555RpLUv39/n/YXXnhBY8eOPfcFQQcPHtSYMWN04MAB1a9fX507d9bSpUs1cOBA06UBjvLvf/9bo0aN0tdff63GjRurT58+WrdunRo3bmy0Lu5jBwAAECS4xg4AACBIEOwAAACCBMEOAAAgSBDsAAAAggTBDgAAIEgQ7AAAAIIEwQ4AACBIEOwAAACCBMEOwAVv7NixGjZsmLH3Hz16tKZPn35W295000164oknAlwRgPMVT54AENRcLtcZf5+Tk6OJEyfKsiw1aNDg3BR1ii1btuiqq67S3r17FRUV9ZPbb926Vf369dOePXtUv379c1AhgPMJwQ5AUCsoKPD+ecGCBZo8ebJ27NjhbYuKijqrQBUot99+u+rUqaPZs2ef9T49e/bU2LFjNX78+ABWBuB8xFQsgKAWHx/v/alfv75cLpdPW1RUVJWp2P79++uuu+7ShAkT1LBhQ8XFxem5555TcXGxMjIyFB0drTZt2ujtt9/2ea+tW7dq8ODBioqKUlxcnEaPHq3Dhw+ftrby8nItXLhQQ4cO9Wl/+umn1bZtW0VERCguLk7Dhw/3+f3QoUM1f/58/z8cAEGHYAcA1XjxxRcVGxur9evX66677tKdd96pESNG6PLLL9fmzZs1aNAgjR49WiUlJZKko0eP6qqrrlLXrl21ceNGLVmyRIWFhbrxxhtP+x4fffSRjh07ph49enjbNm7cqF/96ld66KGHtGPHDi1ZskT9+vXz2a9Xr15av369SktLA3PyAM5bBDsAqEaXLl30wAMPqG3btsrOzlZERIRiY2M1btw4tW3bVpMnT9bXX3+tjz76SJL01FNPqWvXrpo+fbrat2+vrl27au7cuVq5cqU+++yzat9j7969Cg0NVZMmTbxt+/btU7169XTttdeqRYsW6tq1q371q1/57NesWTOVlZX5TDMDgESwA4Bqde7c2fvn0NBQXXTRRerUqZO3LS4uTpJ08OBBSd8vgli5cqX3mr2oqCi1b99ekrR79+5q3+Pbb7+V2+32WeAxcOBAtWjRQq1atdLo0aP117/+1TsqWKlu3bqSVKUdAAh2AFCNsLAwn9cul8unrTKMVVRUSJJOnDihoUOHKj8/3+dn586dVaZSK8XGxqqkpERlZWXetujoaG3evFmvvPKKmjZtqsmTJ6tLly46evSod5sjR45Ikho3bmzLuQIIHgQ7ALBBt27dtG3bNiUlJalNmzY+P/Xq1at2n+TkZEnSJ5984tNep04dpaam6rHHHtNHH32kL774QitWrPD+fuvWrWrevLliY2MDdj4Azk8EOwCwwfjx43XkyBGNGjVKGzZs0O7du7V06VJlZGSovLy82n0aN26sbt266f333/e2vfHGG/q///s/5efna+/evXrppZdUUVGhdu3aebd57733NGjQoICfE4DzD8EOAGzQrFkz/etf/1J5ebkGDRqkTp06acKECWrQoIFCQk7/n9rbb79df/3rX72vGzRooL///e+66qqrdOmll2r27Nl65ZVX1LFjR0nSyZMntXjxYo0bNy7g5wTg/MMNigHAoG+//Vbt2rXTggUL1Lt375/c/plnntGiRYu0bNmyc1AdgPMNI3YAYFDdunX10ksvnfFGxqcKCwvTH//4xwBXBeB8xYgdAABAkGDEDgAAIEgQ7AAAAIIEwQ4AACBIEOwAAACCBMEOAAAgSBDsAAAAggTBDgAAIEgQ7AAAAIIEwQ4AACBIEOwAAACCxP8Dz8zZGL/4UqMAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ref_step = DynamicalSystem(h=step_h)\n", "\n", "A = 1.0\n", "t_step = 2.0 # step onset (s)\n", "dt = 0.01\n", "t_sim = np.arange(0, 5.0, dt)\n", "\n", "r_log = []\n", "for tk in t_sim:\n", " r_k = ref_step.step(tk=tk, A=A, t_step=t_step)\n", " r_log.append(r_k)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t_sim, r_log)\n", "ax.set_xlabel(\"Time (s)\")\n", "ax.set_ylabel(\"$r_k$\")\n", "ax.set_title(\"Step Reference Generator\")\n", "ax.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "b048bba4", "metadata": {}, "source": [ "## Stateful" ] }, { "cell_type": "markdown", "id": "dd4ebce3", "metadata": {}, "source": [ "### Latch\n", "Holds the last captured value until a boolean `trigger` goes high, at which point it latches the new input `u`.\n", "$$x_{k+1} = \\begin{cases} u_k & \\text{trigger}_k \\\\ x_k & \\text{otherwise} \\end{cases}, \\qquad r_k = x_k$$" ] }, { "cell_type": "code", "execution_count": 11, "id": "ccc95504", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.635583Z", "iopub.status.busy": "2026-05-13T02:47:30.635475Z", "iopub.status.idle": "2026-05-13T02:47:30.637953Z", "shell.execute_reply": "2026-05-13T02:47:30.637643Z" } }, "outputs": [], "source": [ "def latch_f(x_k: float, u: float, trigger: bool) -> float:\n", " return u if trigger else x_k\n", "\n", "\n", "def latch_h(x_k: float) -> float:\n", " return x_k" ] }, { "cell_type": "code", "execution_count": 12, "id": "8289c1e2", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.638965Z", "iopub.status.busy": "2026-05-13T02:47:30.638870Z", "iopub.status.idle": "2026-05-13T02:47:30.722557Z", "shell.execute_reply": "2026-05-13T02:47:30.721894Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ref_latch = DynamicalSystem(f=latch_f, h=latch_h)\n", "\n", "dt = 0.01\n", "t_sim = np.arange(0, 5.0, dt)\n", "trigger_times = {1.0, 3.0}\n", "\n", "x_k = 0.0\n", "u_log, r_log = [], []\n", "for tk in t_sim:\n", " trigger = any(abs(tk - t) < dt / 2 for t in trigger_times)\n", " u = 0.5 * tk\n", " x_k, r_k = ref_latch.step(x_k=x_k, u=u, trigger=trigger)\n", " u_log.append(u)\n", " r_log.append(r_k)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t_sim, u_log, linestyle=\"--\", label=\"$u_k$ (input)\")\n", "ax.plot(t_sim, r_log, label=\"$r_k$ (latched)\")\n", "ax.set_xlabel(\"Time (s)\")\n", "ax.set_ylabel(\"Value\")\n", "ax.set_title(\"Latch Reference Generator\")\n", "ax.legend()\n", "ax.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "50fb31f2", "metadata": {}, "source": [ "### Setpoint\n", "Holds a setpoint value and updates it whenever a new one is provided.\n", "Pass `setpoint=value` to update; omit it to hold the current value.\n", "$$x_{k+1} = \\begin{cases} \\text{setpoint}_k & \\text{if provided} \\\\ x_k & \\text{otherwise} \\end{cases}, \\qquad r_k = x_k$$" ] }, { "cell_type": "code", "execution_count": 13, "id": "790923a6", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.723961Z", "iopub.status.busy": "2026-05-13T02:47:30.723849Z", "iopub.status.idle": "2026-05-13T02:47:30.726249Z", "shell.execute_reply": "2026-05-13T02:47:30.725729Z" } }, "outputs": [], "source": [ "def setpoint_f(x_k: float, setpoint: float = None) -> float:\n", " return setpoint if setpoint is not None else x_k\n", "\n", "\n", "def setpoint_h(x_k: float) -> float:\n", " return x_k" ] }, { "cell_type": "code", "execution_count": 14, "id": "6f3e042f", "metadata": { "execution": { "iopub.execute_input": "2026-05-13T02:47:30.727597Z", "iopub.status.busy": "2026-05-13T02:47:30.727410Z", "iopub.status.idle": "2026-05-13T02:47:30.810375Z", "shell.execute_reply": "2026-05-13T02:47:30.809881Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUK1JREFUeJzt3Xd8FHXi//H3pieQhJpGCREQlN6lKWgAkUM5TxEsQE7RU0AxP/UuntJU4lmxoJwFEU+Es4DfswARCIhSpETEwgEXQIGEcpKQRJIlmd8fXBbX3c0mZJed3byej0ceurMzs5/55BPmvZ/PfGYshmEYAgAAgN8L8nUBAAAA4BkEOwAAgABBsAMAAAgQBDsAAIAAQbADAAAIEAQ7AACAAEGwAwAACBAEOwAAgABBsAMAAAgQBDsA52TGjBmyWCy+LkatLF++XF27dlVERIQsFotOnDjh6yIBQK0Q7AAf+uabb3TdddcpOTlZERERatasmYYMGaIXXnjhnPa3aNEizZkzx7OF9IIvv/xSM2bMqHaQmjBhgiwWi+0nPDxcF154oaZNm6ZTp06dUxmOHz+u0aNHKzIyUnPnztVbb72levXqndO+AsmOHTuUlpamlJQURUREqH79+urataseeOAB/ec///F18TzKX/5egJqw8KxYwDe+/PJLDR48WC1bttT48eOVkJCgH3/8URs3btTevXu1Z8+eGu/zd7/7nXbu3Kl9+/Z5vsC/cfr0aZ0+fVoRERE13vapp57S/fffr9zcXLVq1crt+hMmTNDixYv12muvSZIKCgr04YcfKisrSzfeeKPefvvtGpdh+fLlGj58uLKyspSamlrj7QPRq6++qjvvvFNNmjTRTTfdpPbt2+v06dPauXOn3n//ff33v//VL7/8ouDgYF8X1SPO598LcL6E+LoAQF312GOPKTY2Vl999ZUaNGhg996RI0d8U6gaCAkJUUjI+fsnJCQkRDfffLPt9V133aV+/frpnXfe0TPPPKP4+Pga7a+yjn9b97VRXFzst71+X375pe688071799fH330kaKjo+3ef/rpp/XYY4/5qHTVU1JSoqioKJ+W4fTp06qoqFBYWJhPy4G6i6FYwEf27t2rDh06OA0WcXFxDsv+8Y9/qEePHoqMjFSjRo00ZswY/fjjj7b3Bw0apI8//lj79++3DVlW9oZlZ2fLYrFoyZIlevDBB5WQkKB69erp6quvtttHpXfffdf2WU2aNNHNN9+sgwcP2q3j7Bo7i8WiyZMna9myZerYsaPCw8PVoUMHLV++3G67+++/X5KUkpJiK2tNe00sFosGDBggwzAchgg//fRTDRw4UPXq1VN0dLRGjBihb7/91q6uxo8fL0nq1auXLBaLJkyYYHt/06ZNuvLKKxUbG6uoqChddtll+uKLL5we/3fffacbb7xRDRs21IABA2zvu/t9VZajY8eO+u677zR48GBFRUWpWbNmeuKJJxyO99SpU5oxY4YuvPBCRUREKDExUddee6327t1rW6eiokJz5sxRhw4dFBERofj4eN1xxx36+eef3dbnzJkzZbFY9PbbbzuEOkmKiIjQI4884tBbV5O62rNnjyZMmKAGDRooNjZWaWlpKikpcfismtTd1q1bdemllyoqKkoPPvigJOnDDz/UiBEjlJSUpPDwcLVu3VqPPPKIysvL7bZ39fcinQn+t956q+Lj4xUREaEuXbrozTfftCvDvn37ZLFY9NRTT2nOnDlq3bq1wsPD9d1337mtb8Bb6LEDfCQ5OVkbNmzQzp071bFjxyrXfeyxx/Twww9r9OjRuu2223T06FG98MILuvTSS7V9+3Y1aNBAf/3rX1VQUKCffvpJzz77rCSpfv36DvuxWCz685//rCNHjmjOnDlKTU1VTk6OIiMjJUkLFixQWlqaevXqpczMTOXn5+u5557TF198Yfusqqxfv14ffPCB7rrrLkVHR+v555/XH/7wBx04cECNGzfWtddeq3//+99655139Oyzz6pJkyaSpKZNm9a4DivDYMOGDW3L3nrrLY0fP17Dhg3T3/72N5WUlOjll1/WgAEDtH37drVq1Up//etf1a5dO73yyiuaNWuWUlJS1Lp1a0nS6tWrNXz4cPXo0UPTp09XUFCQ3njjDV1++eX6/PPP1bt3b7syXH/99Wrbtq1mz56tyitbqvP7qvTzzz/ryiuv1LXXXqvRo0frvffe05///Gd16tRJw4cPlySVl5frd7/7nVatWqUxY8bonnvu0cmTJ5WVlaWdO3fayn7HHXfYfn933323cnNz9eKLL2r79u364osvFBoa6rQeS0pKtHr1ag0aNEjNmzevdv3XtK5Gjx6tlJQUZWZmatu2bXrttdcUFxenv/3tb7Z1alJ3x48f1/DhwzVmzBjdfPPNtl7bBQsWqH79+kpPT1f9+vW1evVqTZs2TYWFhXryySclqcq/l19++UWDBg3Snj17NHnyZKWkpOjdd9/VhAkTdOLECd1zzz12x/XGG2/o1KlTuv322xUeHq5GjRpVuw4BjzMA+MTKlSuN4OBgIzg42Ojbt6/xwAMPGCtWrDDKysrs1tu3b58RHBxsPPbYY3bLv/nmGyMkJMRu+YgRI4zk5GSHz1qzZo0hyWjWrJlRWFhoW/7Pf/7TkGQ899xzhmEYRllZmREXF2d07NjR+OWXX2zrffTRR4YkY9q0abZl06dPN377T4gkIywszNizZ49t2ddff21IMl544QXbsieffNKQZOTm5lajpgxj/PjxRr169YyjR48aR48eNfbs2WM89dRThsViMTp27GhUVFQYhmEYJ0+eNBo0aGBMnDjRbvu8vDwjNjbWbvkbb7xhSDK++uor27KKigqjbdu2xrBhw2z7NAzDKCkpMVJSUowhQ4Y4HP/YsWPtPqsmv6/LLrvMkGQsXLjQtqy0tNRISEgw/vCHP9iWzZ8/35BkPPPMMw51U1nOzz//3JBkvP3223bvL1++3OnyX6v8HU2dOtXhvePHj9vq/ejRo0Zpaek519Uf//hHu33//ve/Nxo3bmx7fS51N2/ePIcyl5SUOCy74447jKioKOPUqVO2Za7+XubMmWNIMv7xj3/YlpWVlRl9+/Y16tevb/sbys3NNSQZMTExxpEjRxz2A/gCQ7GAjwwZMkQbNmzQ1Vdfra+//lpPPPGEhg0bpmbNmun//u//bOt98MEHqqio0OjRo3Xs2DHbT0JCgtq2bas1a9ZU+zPHjRtnN8x23XXXKTExUZ988okkacuWLTpy5Ijuuusuu0kRI0aMUPv27fXxxx+7/YzU1FRbD5Ikde7cWTExMbWeUVlcXKymTZuqadOmatOmje677z71799fH374oW1IOCsrSydOnNDYsWPt6io4OFh9+vRxW1c5OTnavXu3brzxRh0/fty2fXFxsa644gqtW7dOFRUVdtv86U9/sntd099X/fr17a4dDAsLU+/eve3q6/3331eTJk00ZcoUhzJXHvu7776r2NhYDRkyxO5ze/Toofr161d57IWFhbay/NYFF1xgq/emTZva2qYn6mrgwIE6fvy47fNrWnfh4eFKS0tzKHNl77MknTx5UseOHdPAgQNVUlKiH374wWU9VPrkk0+UkJCgsWPH2paFhobq7rvvVlFRkdauXWu3/h/+8Idz6nEGvIGhWMCHevXqpQ8++EBlZWX6+uuvtXTpUj377LO67rrrlJOTo4svvli7d++WYRhq27at0324Gl5z5rf7sFgsatOmjW1Ic//+/ZKkdu3aOWzbvn17rV+/3u1ntGzZ0mFZw4YNq3WdV1UiIiL0r3/9S5L0008/6YknntCRI0fsTuK7d++WJF1++eVO9xETE1PlZ1RuX3n9nTMFBQV2Q78pKSkO+6jJ76t58+YO1yo2bNhQO3bssL3eu3ev2rVrV+Vkld27d6ugoMDp9ZlS1RNyKsN+UVGRw3sffvihrFarvv76a9133312nyfVrK5+2zYq3/v5558VExNT47pr1qyZ00kK3377rR566CGtXr3aFhp/XSZ39u/fr7Zt2yooyL7v46KLLrK9/2u/bQOALxHsABMICwtTr1691KtXL1144YVKS0vTu+++q+nTp6uiokIWi0Wffvqp09tMOOtl8SVXt8IwanlnpeDgYLvbkgwbNkzt27fXHXfcYetFquwheuutt5SQkOCwD3ezeCu3f/LJJ9W1a1en6/y2vn8dLCv3UZPfl6fqq6KiQnFxcS5v/VJVj1KbNm0UEhKinTt3Orx32WWXSXKsu3OpK3fHWtO6+23dS9KJEyd02WWXKSYmRrNmzVLr1q0VERGhbdu26c9//rNDL6InOCsH4CsEO8BkevbsKUk6fPiwJKl169YyDEMpKSm68MILq9zW3ZMgKntZKhmGoT179qhz586SzkzokKRdu3Y59Hrt2rXL9n5teeKJFYmJibr33ns1c+ZMbdy4UZdccoltCDguLu6c7k1XuX1MTMw539uuJr+vmuxz06ZNslqtLntoW7durc8++0z9+/evcdCoV6+eBg0apLVr1+rgwYNq1qxZtcok1a6unO2ztnWXnZ2t48eP64MPPtCll15qW56bm+uwrqt2mJycrB07dqiiosKu165yGNdTfweAN3CNHeAja9ascdorU3m9W+Vw6LXXXqvg4GDNnDnTYX3DMHT8+HHb63r16lU51LRw4UKdPHnS9vq9997T4cOHbbMve/bsqbi4OM2bN0+lpaW29T799FN9//33GjFixDkcqaPKe73V9hFeU6ZMUVRUlB5//HFJZ3rxYmJiNHv2bFmtVof1jx49WuX+evToodatW+upp55yOizpbnupZr+v6vrDH/6gY8eO6cUXX3R4r/IzRo8erfLycj3yyCMO65w+fdptXU+bNk3l5eW6+eabnR77b4/FE3X1W56ou8qevl9vX1ZWppdeeslhXVd/L1dddZXy8vK0ZMkS27LTp0/rhRdeUP369W29mIAZ0WMH+MiUKVNUUlKi3//+92rfvr3Kysr05ZdfasmSJWrVqpXtovDWrVvr0UcfVUZGhvbt26dRo0YpOjpaubm5Wrp0qW6//XbbtU89evTQkiVLlJ6erl69eql+/foaOXKk7TMbNWqkAQMGKC0tTfn5+ZozZ47atGmjiRMnSjpzDdPf/vY3paWl6bLLLtPYsWNttztp1aqV7r33Xo8ce48ePSSdueXEmDFjFBoaqpEjR9b45r6NGzdWWlqaXnrpJX3//fe66KKL9PLLL+uWW25R9+7dNWbMGDVt2lQHDhzQxx9/rP79+zsNR5WCgoL02muvafjw4erQoYPS0tLUrFkzHTx4UGvWrFFMTIztOj9XavL7qq5x48Zp4cKFSk9P1+bNmzVw4EAVFxfrs88+01133aVrrrlGl112me644w5lZmYqJydHQ4cOVWhoqHbv3q13331Xzz33nK677jqXnzFw4EC9+OKLmjJlitq2bWt78kRZWZn+/e9/6+2331ZYWJhtiNsTdeWNuuvXr58aNmyo8ePH6+6775bFYtFbb73l9EuUq7+X22+/XX//+981YcIEbd26Va1atdJ7772nL774QnPmzHF6nz/ANM7rHFwANp9++qnxxz/+0Wjfvr1Rv359IywszGjTpo0xZcoUIz8/32H9999/3xgwYIBRr149o169ekb79u2NSZMmGbt27bKtU1RUZNx4441GgwYNDEm2WzlU3u7knXfeMTIyMoy4uDgjMjLSGDFihLF//36Hz1qyZInRrVs3Izw83GjUqJFx0003GT/99JPdOq5udzJp0iSH/SUnJxvjx4+3W/bII48YzZo1M4KCgtze+qTydifO7N271wgODrbb/5o1a4xhw4YZsbGxRkREhNG6dWtjwoQJxpYtW2zrOLvdSaXt27cb1157rdG4cWMjPDzcSE5ONkaPHm2sWrXK4fiPHj3qtFzV+X1ddtllRocOHZwe729vw1FSUmL89a9/NVJSUozQ0FAjISHBuO6664y9e/farffKK68YPXr0MCIjI43o6GijU6dOxgMPPGAcOnTIaTmdHfu4ceOMli1bGmFhYUa9evWMzp07G//v//0/u9vYeKKuKn8Hv/3d16buDMMwvvjiC+OSSy4xIiMjjaSkJNuthCQZa9assa3n6u/FMAwjPz/fSEtLM5o0aWKEhYUZnTp1Mt544w27z6m83cmTTz7pplaB84dnxQJ1QHZ2tgYPHqx33323yl4bAIB/4xo7AACAAEGwAwAACBAEOwAAgADBNXYAAAABgh47AACAAEGwAwAACBDcoNiFiooKHTp0SNHR0R55/BEAAMC5MAxDJ0+eVFJSkt1j7pwh2Llw6NAhtWjRwtfFAAAAkCT9+OOPat68eZXrEOxcqHxkzI8//qiYmBivfIbVatXKlSttj/5B7VCfnkNdeg516TnUpWdRn57j7bosLCxUixYtqvU4O4KdC5XDrzExMV4NdlFRUYqJieGPygOoT8+hLj2HuvQc6tKzqE/POV91WZ1Lw5g8AQAAECAIdgAAAAGCYAcAABAgCHYAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAGCYAcAABAgCHYAAAABwufBLjMzU7169VJ0dLTi4uI0atQo7dq1q8ptFixYIIvFYvcTERFht45hGJo2bZoSExMVGRmp1NRU7d6925uHAgAA4FM+D3Zr167VpEmTtHHjRmVlZclqtWro0KEqLi6ucruYmBgdPnzY9rN//36795944gk9//zzmjdvnjZt2qR69epp2LBhOnXqlDcPBwAAwGdCfF2A5cuX271esGCB4uLitHXrVl166aUut7NYLEpISHD6nmEYmjNnjh566CFdc801kqSFCxcqPj5ey5Yt05gxYzx3AAAAACbh82D3WwUFBZKkRo0aVbleUVGRkpOTVVFRoe7du2v27Nnq0KGDJCk3N1d5eXlKTU21rR8bG6s+ffpow4YNBDugGo6dkrbs/1khIab7Z8KvnD59WnsLqUtPOH36tPJKfF0KwNxM9a9MRUWFpk6dqv79+6tjx44u12vXrp3mz5+vzp07q6CgQE899ZT69eunb7/9Vs2bN1deXp4kKT4+3m67+Ph423u/VVpaqtLSUtvrwsJCSZLVapXVaq3toTlVuV9v7b+uoT49Z/v+43pke4i0/StfFyVAhOj5b6lLzwhRy4vzlHqx8xEbVB//ZnqOt+uyJvs1VbCbNGmSdu7cqfXr11e5Xt++fdW3b1/b6379+umiiy7S3//+dz3yyCPn9NmZmZmaOXOmw/KVK1cqKirqnPZZXVlZWV7df11DfdbetmMWScEKtRhqGO7r0gBnFJRJpRUWfbZhu8r2Gb4uTsDg30zP8VZdlpRUv6vaNMFu8uTJ+uijj7Ru3To1b968RtuGhoaqW7du2rNnjyTZrr3Lz89XYmKibb38/Hx17drV6T4yMjKUnp5ue11YWKgWLVpo6NChiomJqeHRVI/ValVWVpaGDBmi0NBQr3xGXUJ9eo51+0/S7u/UPbmh/nFrb18Xx6/RLj3nnsU5+uTbI7qwXXtdNSDF18Xxe7RNz/F2XVaOIlaHz4OdYRiaMmWKli5dquzsbKWk1PyPtby8XN98842uuuoqSVJKSooSEhK0atUqW5ArLCzUpk2bdOeddzrdR3h4uMLDHbsmQkNDvd7gz8dn1CXUZ+0FBQdLOjNJibr0DNpl7VmCztzIITg4iLr0INqm53irLmuyT58Hu0mTJmnRokX68MMPFR0dbbsGLjY2VpGRkZKkcePGqVmzZsrMzJQkzZo1S5dcconatGmjEydO6Mknn9T+/ft12223STpzMpo6daoeffRRtW3bVikpKXr44YeVlJSkUaNG+eQ4AX9i/G+Uy2Kx+LYgwK9UtkYGYQHXfB7sXn75ZUnSoEGD7Ja/8cYbmjBhgiTpwIEDCgo6e8u9n3/+WRMnTlReXp4aNmyoHj166Msvv9TFF19sW+eBBx5QcXGxbr/9dp04cUIDBgzQ8uXLHW5kDMBR5YmTWAczMkh2gEs+D3ZGNf5Cs7Oz7V4/++yzevbZZ6vcxmKxaNasWZo1a1ZtigfUTbYuO98WA/g1OpAB93z+5AkA5mUh2cFEaI+AewQ7AA4Y6YKZVWekB6irCHYAHJydPOHbcgC/RnsE3CPYAXBg/K/PjvMozIj+OsA1gh0AB/TYwYxojoB7BDsALnGxOsyk8osGl9gBrhHsADiwnTfJdTAhg8FYwCWCHQAH9IjAlLg2AHCLYAfACSZPwHxsjxTjiwfgEsEOgAMmTwCAfyLYAXCJyRMwEyZPAO4R7AA4qDxv0mMHAP6FYAfAAT0iMCN6kAH3CHYAHPDkCZjR2aFYvnkArhDsADg4O3mCaAcA/oRgB8AB/SEwI9vtTnxaCsDcCHYAXKLDDmbESCzgGsEOgCPOnDAhvmgA7hHsADiw3e7Ep6UAfutMi+RrB+AawQ6AAyZPwMyYFQu4RrAD4IAeO5gR3zMA9wh2AFziRAozor8OcI1gB8BB5VAXd/qHmdAaAfcIdgAc0CMCM7JwIzvALYIdAAcGF9nBxAySHeASwQ6AS+Q6mAmXBgDuEewAuMTkCZgRdzsBXCPYAXDA5AmYEV80APcIdgAc0CECM2LuBOAewQ6Ag7NPnvBtOQBnGIoFXCPYAXBQOeuQXAdT4ZsG4BbBDoADeuxgZtzuBHCNYAfANZIdTITWCLjn82CXmZmpXr16KTo6WnFxcRo1apR27dpV5TavvvqqBg4cqIYNG6phw4ZKTU3V5s2b7daZMGGCLBaL3c+VV17pzUMBAgbXMMGMePIE4J7Pg93atWs1adIkbdy4UVlZWbJarRo6dKiKi4tdbpOdna2xY8dqzZo12rBhg1q0aKGhQ4fq4MGDdutdeeWVOnz4sO3nnXfe8fbhAAGFHhKYEbkOcC3E1wVYvny53esFCxYoLi5OW7du1aWXXup0m7ffftvu9Wuvvab3339fq1at0rhx42zLw8PDlZCQ4PlCAwHOdh87kh1MhOYIuOfzYPdbBQUFkqRGjRpVe5uSkhJZrVaHbbKzsxUXF6eGDRvq8ssv16OPPqrGjRs73UdpaalKS0ttrwsLCyVJVqtVVqu1podRLZX79db+6xrq03NOl5dLkowKg/qsJdql5xgVFZLOtE/qs/Zom57j7bqsyX4thmGeq2kqKip09dVX68SJE1q/fn21t7vrrru0YsUKffvtt4qIiJAkLV68WFFRUUpJSdHevXv14IMPqn79+tqwYYOCg4Md9jFjxgzNnDnTYfmiRYsUFRV17gcF+KGVP1n08Y/BuiSuQmNbV/i6OIAkaem+IGUfDtIVSRW6Opl2ibqjpKREN954owoKChQTE1PluqYKdnfeeac+/fRTrV+/Xs2bN6/WNo8//rieeOIJZWdnq3Pnzi7X+89//qPWrVvrs88+0xVXXOHwvrMeuxYtWujYsWNuK/FcWa1WZWVlaciQIQoNDfXKZ9Ql1KfnvLB6t55fk6vruiUq89pOvi6OX6Ndes6jH3+vNzf+qNv6tdSfh7f3dXH8Hm3Tc7xdl4WFhWrSpEm1gp1phmInT56sjz76SOvWrat2qHvqqaf0+OOP67PPPqsy1EnSBRdcoCZNmmjPnj1Og114eLjCw8MdloeGhnq9wZ+Pz6hLqM/aCwoK/t9/g6hLD6Fd1l5w0Jn5fhbapUfRNj3HW3VZk336PNgZhqEpU6Zo6dKlys7OVkpKSrW2e+KJJ/TYY49pxYoV6tmzp9v1f/rpJx0/flyJiYm1LTIQ8Jg8ATOiPQLu+fx2J5MmTdI//vEPLVq0SNHR0crLy1NeXp5++eUX2zrjxo1TRkaG7fXf/vY3Pfzww5o/f75atWpl26aoqEiSVFRUpPvvv18bN27Uvn37tGrVKl1zzTVq06aNhg0bdt6PEfA3Z6/P4EwK8zHN9UOACfk82L388ssqKCjQoEGDlJiYaPtZsmSJbZ0DBw7o8OHDdtuUlZXpuuuus9vmqaeekiQFBwdrx44duvrqq3XhhRfq1ltvVY8ePfT55587HW4F4Bw9JDAjE10aDpiOKYZi3cnOzrZ7vW/fvirXj4yM1IoVK2pRKqCOq3xWrG9LAdix8E0DcMvnPXYAzIeHrAOAfyLYAXBQ2ZFOBwnMhOYIuEewA+Cgsr/OwqkUJlL5RYNL7ADXCHYAHNBjBzMj1wGuEewAuESug5nQgwy4R7AD4IDJEzAzbncCuEawA+DIdpEdPSQwD5oj4B7BDoCDs5MnAPOobI/01wGuEewAOGDyBMyMkVjANYIdAJfIdTAVGiTgFsEOgIPKyRM8wglmRIcd4BrBDoADhrpgRrbbndBAAZcIdgAcMHkCZkQHMuAewQ6Ag8r7hHEihRnRXwe4RrADAPgFvmcA7hHsALjE5AmYiYVL7AC3CHYAHHDihJnxyDvANYIdAAdMnoAZWWiRgFsEOwAOmDwBM6NHGXCNYAfAwdkeO5IdTITmCLhFsAPgEj12MJPK5kiHHeAawQ6AA4a6YGa0T8A1gh0AB0yegBlx+x3APYIdAEeVXSKcR2FKdNkBrhDsADhg8gTMiNYIuEewA+ASI18wE548AbhHsAPggJFYmBm5DnCNYAfAAY9sghnxRQNwj2AHwIGtx44zKUyIoVjANYIdAAdMnoAZVd7uhB5lwDWCHQDXyHUA4FcIdgAcMHkCZsZQLOAawQ6AE5w5YT5c8wm45/Ngl5mZqV69eik6OlpxcXEaNWqUdu3a5Xa7d999V+3bt1dERIQ6deqkTz75xO59wzA0bdo0JSYmKjIyUqmpqdq9e7e3DgMIKGcnT3AmhfnwtQNwzefBbu3atZo0aZI2btyorKwsWa1WDR06VMXFxS63+fLLLzV27Fjdeuut2r59u0aNGqVRo0Zp586dtnWeeOIJPf/885o3b542bdqkevXqadiwYTp16tT5OCzAr/GsWJiR7XsGY7GASyG+LsDy5cvtXi9YsEBxcXHaunWrLr30UqfbPPfcc7ryyit1//33S5IeeeQRZWVl6cUXX9S8efNkGIbmzJmjhx56SNdcc40kaeHChYqPj9eyZcs0ZswY7x4U4Oe43QnMiFnagHs+D3a/VVBQIElq1KiRy3U2bNig9PR0u2XDhg3TsmXLJEm5ubnKy8tTamqq7f3Y2Fj16dNHGzZscBrsSktLVVpaantdWFgoSbJarbJared8PFWp3K+39l/XUJ+eU1FRYfsv9Vk7tEvPKS8vP/Nf2qVH0DY9x9t1WZP9mirYVVRUaOrUqerfv786duzocr28vDzFx8fbLYuPj1deXp7t/cplrtb5rczMTM2cOdNh+cqVKxUVFVWj46iprKwsr+6/rqE+a+/gwSBJQdqzZ7c++eXfvi5OQKBd1t7uQxZJwTp86LA++eSgr4sTMGibnuOtuiwpKan2uqYKdpMmTdLOnTu1fv368/7ZGRkZdr2AhYWFatGihYYOHaqYmBivfKbValVWVpaGDBmi0NBQr3xGXUJ9es6a93ZIR/PUtk1bXTW4ja+L49dol55zcN1eaf9eJSQm6qqruvi6OH6Ptuk53q7LylHE6jBNsJs8ebI++ugjrVu3Ts2bN69y3YSEBOXn59sty8/PV0JCgu39ymWJiYl263Tt2tXpPsPDwxUeHu6wPDQ01OsN/nx8Rl1CfdaeJejMvKrg4GDq0kNol7UXHBwsSbJYgqhLD6Jteo636rIm+/T5rFjDMDR58mQtXbpUq1evVkpKittt+vbtq1WrVtkty8rKUt++fSVJKSkpSkhIsFunsLBQmzZtsq0DoAr/mz3B5AmYCbffAdzzeY/dpEmTtGjRIn344YeKjo62XQMXGxuryMhISdK4cePUrFkzZWZmSpLuueceXXbZZXr66ac1YsQILV68WFu2bNErr7wi6cwf/9SpU/Xoo4+qbdu2SklJ0cMPP6ykpCSNGjXKJ8cJ+CPOozAjnhULuObzYPfyyy9LkgYNGmS3/I033tCECRMkSQcOHFBQ0NnOxX79+mnRokV66KGH9OCDD6pt27ZatmyZ3YSLBx54QMXFxbr99tt14sQJDRgwQMuXL1dERITXjwnwd2cfKUayAwB/4vNgZ1TjRpPZ2dkOy66//npdf/31LrexWCyaNWuWZs2aVZviAXUS/SEwo8oeZO5PDLjm82vsAJgPNyiGmZHrANcIdgAcVF7DRK6DmdAeAfcIdgBcYhYiTIkuO8Algh0AB1zDBDOq/KLBrFjANYIdAAecNmFG9B8D7hHsADhi8gRMjB5lwDWCHQAHTJ6AGfFFA3CPYAfAJSZPwIzosANcI9gBcHD2yROAeVS2x+rc2B6oqwh2ABxw2oQp0YMMuEWwA+CgskeE8yjMiC8egGsEOwAOKk+c5DqYCe0RcI9gB8CB7RImuuxgQlxiB7hGsAPgErEOZsL3DMA9gh0AlziRwkwsfNUA3CLYAXDA7SRgZrRPwDWCHQAHZydP0EMC86AHGXCPYAfAgcGzYmFCthsU+7QUgLkR7AC4RK6DGTESC7hGsAPgwBA3KIb50B4B9wh2ABzQIwIzMxiMBVwi2AFwcPa0SRcJzORMe+SLB+AawQ6AIyZPwIRoj4B7BDsALnEehRnRYQe4RrAD4IDJEzAjmiPgHsEOgAOuYYKp0T4Blwh2ABzw5AmYUWUPMrNiAdcIdgAc8OQJmBFfNAD3CHYAHNiusfNxOQBnuFQAcI1gB8A1uuxgIjRHwD2CHQBHlUOxvi0F4BQddoBrBDsADjhxwowqv2gwFAu4Zopgt27dOo0cOVJJSUmyWCxatmxZletPmDBBFovF4adDhw62dWbMmOHwfvv27b18JEBgMAzuYwcTokECbpki2BUXF6tLly6aO3dutdZ/7rnndPjwYdvPjz/+qEaNGun666+3W69Dhw52661fv94bxQcCztnbnQDmw+1OANdCfF0ASRo+fLiGDx9e7fVjY2MVGxtre71s2TL9/PPPSktLs1svJCRECQkJHisnUNdY6CGBidAaAfdM0WNXW6+//rpSU1OVnJxst3z37t1KSkrSBRdcoJtuukkHDhzwUQkB/2IweQJmRocd4JIpeuxq49ChQ/r000+1aNEiu+V9+vTRggUL1K5dOx0+fFgzZ87UwIEDtXPnTkVHRzvsp7S0VKWlpbbXhYWFkiSr1Sqr1eqVslfu11v7r2uoT8+pqKiQJJ0uL6c+a4l26TkVFeWSpPKKCurTA2ibnuPtuqzJfi2GYa75RRaLRUuXLtWoUaOqtX5mZqaefvppHTp0SGFhYS7XO3HihJKTk/XMM8/o1ltvdXh/xowZmjlzpsPyRYsWKSoqqtrlBwLB8zuDtfekRRMuLFe3xqb6JwJ12LZjFr25O1htYyo0uUOFr4sDnDclJSW68cYbVVBQoJiYmCrX9eseO8MwNH/+fN1yyy1VhjpJatCggS688ELt2bPH6fsZGRlKT0+3vS4sLFSLFi00dOhQt5V4rqxWq7KysjRkyBCFhoZ65TPqEurTc978aZN0skBdOnfWVV2a+bo4fo126TnW7T9Ju79To0aNdNVVvX1dHL9H2/Qcb9dl5Shidfh1sFu7dq327NnjtAfut4qKirR3717dcsstTt8PDw9XeHi4w/LQ0FCvN/jz8Rl1CfVZe0FBZ66uCwkJoS49hHZZeyEh/ztlWSzUpQfRNj3HW3VZk32aYvJEUVGRcnJylJOTI0nKzc1VTk6ObbJDRkaGxo0b57Dd66+/rj59+qhjx44O7913331au3at9u3bpy+//FK///3vFRwcrLFjx3r1WIBAwOQJmBHtEXDPFD12W7Zs0eDBg22vK4dEx48frwULFujw4cMOM1oLCgr0/vvv67nnnnO6z59++kljx47V8ePH1bRpUw0YMEAbN25U06ZNvXcgQIDgqjqYmbmuDAfMxRTBbtCgQapqDseCBQsclsXGxqqkpMTlNosXL/ZE0YA6iSdPwIxoj4B7phiKBWAuZ588wZkU5kOHHeAawQ6AA9s1duQ6mJDJ7tIFmArBDoBL5DqYCY+4A9wj2AFwYHvIOudRAPArBDsAjhjpggnxPQNwj2AHwIFt8gRDXzAhLrEDXCPYAXDADYphRpXfM8h1gGsEOwAu0WEHM+H2O4B7BDsADionT3AahRlxuxPANYIdAAecN2FG9CAD7hHsADg4e4NizqQwH753AK4R7AA4OPtIMcA8KtsjPcqAawQ7AK6R7GAmtEfALYIdAEdG5eQJzqQwH4PBWMAlgh0AB5w2YUYWbmQHuEWwA+Dg7OQJ35YDAFAzBDsADriPHczINnnCp6UAzI1gB8ABPXYwI9oj4B7BDoBLTJ6AGXG7E8A1gh0AB7b72JHrYCJnh2JJdoArBDsADugRgRnxJBTAPYIdACdIdjAvvngArhHsADhg8gTMiOYIuEewA+ASkydgRvTYAa4R7AA4YPIETIkHTwBuEewAOKBHBGZEDzLgHsEOgAOePAFT45sH4BLBDoCDs5MniHYwD5oj4B7BDoBLnEdhRvTXAa4R7AA4sJ04SXYwEduTJ0h2gEsEOwCOOHPChBiKBdwj2AFwYLvdiU9LATjHs2IB1wh2ABwweQJmVHm7EzqUAddqFexee+01jxRi3bp1GjlypJKSkmSxWLRs2bIq18/OzpbFYnH4ycvLs1tv7ty5atWqlSIiItSnTx9t3rzZI+UFAh09dgDgn2oV7D766COtXr3a9rqkpERjxoyp8X6Ki4vVpUsXzZ07t0bb7dq1S4cPH7b9xMXF2d5bsmSJ0tPTNX36dG3btk1dunTRsGHDdOTIkRqXD6ir6LCDmVh48gTgVkhtNl64cKGuuuoqJSUlKSgoSDfeeKMmTZpU4/0MHz5cw4cPr/F2cXFxatCggdP3nnnmGU2cOFFpaWmSpHnz5unjjz/W/Pnz9Ze//KXGnwXUJQZjXQDgl84p2N17773q2rWrunTpotdee0033XSTKioq9MYbb6hr164eLqJrXbt2VWlpqTp27KgZM2aof//+kqSysjJt3bpVGRkZtnWDgoKUmpqqDRs2nLfyAf7q7FAsXXYwH753AK5VO9iVl5frX//6l6644goNHjxYO3bs0Mcff6zvv/9eBw8eVN++fbVixQodPHhQI0aM8GaZlZiYqHnz5qlnz54qLS3Va6+9pkGDBmnTpk3q3r27jh07pvLycsXHx9ttFx8frx9++MHpPktLS1VaWmp7XVhYKEmyWq2yWq1eOY7K/Xpr/3UN9ek5lT125eWnqc9aol16TkV5uaQz7ZP6rD3apud4uy5rst9qB7vg4GCNHTtW3377ra6++mpdffXVtvdOnTqlnTt3aseOHfrss8+8HuzatWundu3a2V7369dPe/fu1bPPPqu33nrrnPaZmZmpmTNnOixfuXKloqKizrms1ZGVleXV/dc11GftnToVLMmiTZs26uBOX5cmMNAua29PoSSFqLi4WJ988omvixMwaJue4626LCkpqfa6NRqK7dWrl3Jzc3XBBRfYLY+IiFDPnj3Vs2fPmuzOo3r37q3169dLkpo0aaLg4GDl5+fbrZOfn6+EhASn22dkZCg9Pd32urCwUC1atNDQoUMVExPjlTJbrVZlZWVpyJAhCg0N9cpn1CXUp+c8+k22ZC3TJZdcos4tGvm6OH6Nduk5G/Yclb7drqh6UbrqqoG+Lo7fo216jrfrsnIUsTpqFOymTJmiBx98UO+9955atGhR44J5U05OjhITEyVJYWFh6tGjh1atWqVRo0ZJkioqKrRq1SpNnjzZ6fbh4eEKDw93WB4aGur1Bn8+PqMuoT49JzSEuvQU2mXthYaeOWVZZKEuPYi26Tneqsua7LNGwe6GG26QJHXo0EFXX321Bg0apG7duqlTp04KCwurWSl/paioSHv27LG9zs3NVU5Ojho1aqSWLVsqIyNDBw8e1MKFCyVJc+bMUUpKijp06KBTp07ptdde0+rVq7Vy5UrbPtLT0zV+/Hj17NlTvXv31pw5c1RcXGybJQvANa5Nh5nRPgHXahTscnNz9fXXXysnJ0dff/21MjMztW/fPoWEhKhdu3basWPHORViy5YtGjx4sO115ZDo+PHjtWDBAh0+fFgHDhywvV9WVqb/9//+nw4ePKioqCh17txZn332md0+brjhBh09elTTpk1TXl6eunbtquXLlztMqADg6OyTJ3xbDuDXKpsjs2IB12oU7JKTk5WcnGw3ceLkyZPKyck551AnSYMGDaryvlkLFiywe/3AAw/ogQcecLvfyZMnuxx6BeBa5bM4yXUwEx5xB7hXqxsUS1J0dLQGDhyogQO5kBUINJxHYUYGg7GAS7V6pBiAwGQbiqXPDiZCawTcI9gBAPwK19gBrhHsADgwzj5TDDCP/7VHch3gGsEOgAMmT8CMaI+AewQ7AA7O3u6EUylMiLFYwCWCHQCXiHUwk8ovGsQ6wDWCHQAHnDgBwD8R7AA44MkTMCOePAG4R7AD4MA2eYJgBxOhPQLuEewAOOIGxTAxOuwA1wh2AFwj18FEKr9oVPVscaCuI9gBcMD9iQHAPxHsADigRwRmZOHJE4BbBDsADmw9dnTZAYBfIdgBcGAweQJmRpcd4BLBDoBL9NjBTBiKBdwj2AFwwOQJAPBPBDsADpg8ATPidieAewQ7AC5ZGIuFiTAUC7hHsAPggA4RAPBPBDsADrjdCcyosjnyxQNwjWAHwCVyHcyELxqAewQ7AA64OB1mZnCVHeASwQ6Ag7NDsXSRwDzOzor1cUEAEyPYAXBw9skTAAB/QrAD4BIddjAV2iPgFsEOgEucR2EmtEfAPYIdADt2EyfosoMJcY0d4BrBDoAdTpowq8rJPMyKBVwj2AGw8+tTJv11AOBfCHYA7Px6KJaRWJgJT54A3CPYAXDJQp8dTIQvGoB7pgh269at08iRI5WUlCSLxaJly5ZVuf4HH3ygIUOGqGnTpoqJiVHfvn21YsUKu3VmzJghi8Vi99O+fXsvHgUQGOyGYjmRwoTosANcM0WwKy4uVpcuXTR37txqrb9u3ToNGTJEn3zyibZu3arBgwdr5MiR2r59u916HTp00OHDh20/69ev90bxgYDCMBfMqvKLBm0UcC3E1wWQpOHDh2v48OHVXn/OnDl2r2fPnq0PP/xQ//rXv9StWzfb8pCQECUkJHiqmECd8OsZh3TYAYB/MUWwq62KigqdPHlSjRo1slu+e/duJSUlKSIiQn379lVmZqZatmzpdB+lpaUqLS21vS4sLJQkWa1WWa1Wr5S7cr/e2n9dQ316htVabvv/06dPU5+1RLv0nNOnT0s6M8GH+qw92qbneLsua7LfgAh2Tz31lIqKijR69Gjbsj59+mjBggVq166dDh8+rJkzZ2rgwIHauXOnoqOjHfaRmZmpmTNnOixfuXKloqKivFr+rKwsr+6/rqE+a6esXKr8pyF7zRpFBMS/Er5Hu6y9Y6ckKUSnT5/WJ5984uviBAzapud4qy5LSkqqva7FMMx1tYLFYtHSpUs1atSoaq2/aNEiTZw4UR9++KFSU1NdrnfixAklJyfrmWee0a233urwvrMeuxYtWujYsWOKiYmp8XFUh9VqVVZWloYMGaLQ0FCvfEZdQn16xilruTrNWiVJ+urPA9WgfqSPS+TfaJeesze/UFe+uFFRYcH6+uErfF0cv0fb9Bxv12VhYaGaNGmigoICt5nEr7+LL168WLfddpvefffdKkOdJDVo0EAXXnih9uzZ4/T98PBwhYeHOywPDQ31eoM/H59Rl1CftXPaODunKoS69BjaZe2Fhob86v+pS0+hbXqOt+qyJvs0xazYc/HOO+8oLS1N77zzjkaMGOF2/aKiIu3du1eJiYnnoXSA/2LyBAD4L1P02BUVFdn1pOXm5ionJ0eNGjVSy5YtlZGRoYMHD2rhwoWSzgy/jh8/Xs8995z69OmjvLw8SVJkZKRiY2MlSffdd59Gjhyp5ORkHTp0SNOnT1dwcLDGjh17/g8Q8CO/vjiD+9jBTM7e7sRUVxABpmKKHrstW7aoW7dutluVpKenq1u3bpo2bZok6fDhwzpw4IBt/VdeeUWnT5/WpEmTlJiYaPu55557bOv89NNPGjt2rNq1a6fRo0ercePG2rhxo5o2bXp+Dw7wM/bPiiXZwTwq2yOxDnDNFD12gwYNqvIb2IIFC+xeZ2dnu93n4sWLa1kqAPTYAYB/MUWPHQDz+PWXLHIdzIQnTwDuEewA2OGcCbPiiwbgHsEOgB273hDGYmFCfPkAXCPYAbD361mxvisF4MDyvy8azIoFXCPYAXCJDjsA8C8EOwB2uEExAPgvgh0AO4xywazoQQbcI9gBsGM/d4IzKcyHLx+AawQ7AHa4jx3MqrI9kusA1wh2AOxwtxMA8F8EOwAuMRQLM+F2J4B7BDsAdjhnwqwYigXcI9gBsGNw2gQAv0WwA2Dvf7nOQsCDyVReGUCvMuAawQ6AHc6ZAOC/CHYAnGLaBMyGNgm4R7ADYMc2zMVZFGbzq1nazIwFnCPYAbDD5AkA8F8EOwB2DNvkCcBcft0m6bADnCPYAbDD+RIA/BfBDoBT9NjBbH79IBS+gADOEewA2Km8KJ1gB7OxiMkTgDsEOwB2OF8CgP8i2AFwji47mAxDsYB7BDsAdpgVCwD+i2AHwA73sYNZcbsTwD2CHQCn6LGD2dgPxZLsAGcIdgDs0BMCAP6LYAfAji3X0WUH0/n17U58WAzAxAh2AOxwHzuYlYVGCbhFsANgp7IjhHMoAPgfgh0AwC8wKxZwzxTBbt26dRo5cqSSkpJksVi0bNkyt9tkZ2ere/fuCg8PV5s2bbRgwQKHdebOnatWrVopIiJCffr00ebNmz1feCDAcB87APBfpgh2xcXF6tKli+bOnVut9XNzczVixAgNHjxYOTk5mjp1qm677TatWLHCts6SJUuUnp6u6dOna9u2berSpYuGDRumI0eOeOswgABBVwjMidudAO6F+LoAkjR8+HANHz682uvPmzdPKSkpevrppyVJF110kdavX69nn31Ww4YNkyQ988wzmjhxotLS0mzbfPzxx5o/f77+8pe/eP4ggABhcJEdTMrCrFjALVMEu5rasGGDUlNT7ZYNGzZMU6dOlSSVlZVp69atysjIsL0fFBSk1NRUbdiw4XwWtUp5haeU/4v0n6PFCgn1y1+FqZy2nqY+PeDHn0skkesAwB/55dkvLy9P8fHxdsvi4+NVWFioX375RT///LPKy8udrvPDDz843WdpaalKS0ttrwsLCyVJVqtVVqvVw0dwxsx/fafPfgjR7JwvvLL/uon69CRvtf26pLIOqcvaO336bB2WWa0KC6LbrjZom57j7bqsyX79Mth5Q2ZmpmbOnOmwfOXKlYqKivLKZxYcC1JUMP0iMKc+cYaysrJ8XYyAQV3WXlm5VHnaWrlypSKCfVqcgEHb9Bxv1WVJSUm11/XLYJeQkKD8/Hy7Zfn5+YqJiVFkZKSCg4MVHBzsdJ2EhASn+8zIyFB6errtdWFhoVq0aKGhQ4cqJibG8wchaYjVqqysLA0ZMkShoaFe+Yy6xEp9egx16TnUpecU/XJK2rxOkjRkyFBFR/jlKcw0aJue4+26rBxFrA6//Kvo27evPvnkE7tlWVlZ6tu3ryQpLCxMPXr00KpVqzRq1ChJUkVFhVatWqXJkyc73Wd4eLjCw8MdloeGhnq9wZ+Pz6hLqE/PoS49h7qsvdDTFbb/DwkNoT49hLbpOd6qy5rs0xS3OykqKlJOTo5ycnIknbmdSU5Ojg4cOCDpTG/auHHjbOv/6U9/0n/+8x898MAD+uGHH/TSSy/pn//8p+69917bOunp6Xr11Vf15ptv6vvvv9edd96p4uJi2yxZAACAQGOKHrstW7Zo8ODBtteVQ6Ljx4/XggULdPjwYVvIk6SUlBR9/PHHuvfee/Xcc8+pefPmeu2112y3OpGkG264QUePHtW0adOUl5enrl27avny5Q4TKgAA/oEnTwDumSLYDRo0yPbgcWecPVVi0KBB2r59e5X7nTx5ssuhVwAAgEBjiqFYAADcsdh12fmsGICpEewAAH7BPteR7ABnCHYAAAABgmAHAPALFgvPigXcIdgBAPwOuQ5wjmAHAPALPIARcI9gBwDwC7+eFVvVLbKAuoxgBwAAECAIdgAAv2A3ecKH5QDMjGAHAPA7jMQCzhHsAAAAAgTBDgDgNyz/G4TlyROAcwQ7AACAAEGwAwD4HzrsAKcIdgAAv1E5L5ZcBzhHsAMAAAgQBDsAgP/4X5cdtzsBnCPYAQAABAiCHQDAb5y9xo4uO8AZgh0AwO8wFAs4R7ADAAAIEAQ7AIDf4HYnQNUIdgAAv2MwFgs4RbADAPgNi/tVgDqNYAcA8B/cxw6oEsEOAAAgQBDsAAB+g6FYoGoEOwCA32EoFnCOYAcAABAgCHYAAL/BI8WAqhHsAAAAAgTBDgDgP7jdCVAlgh0AwG/wSDGgaqYJdnPnzlWrVq0UERGhPn36aPPmzS7XHTRokCwWi8PPiBEjbOtMmDDB4f0rr7zyfBwKAACAT4T4ugCStGTJEqWnp2vevHnq06eP5syZo2HDhmnXrl2Ki4tzWP+DDz5QWVmZ7fXx48fVpUsXXX/99XbrXXnllXrjjTdsr8PDw713EAAAr7P12DEWCzhlih67Z555RhMnTlRaWpouvvhizZs3T1FRUZo/f77T9Rs1aqSEhATbT1ZWlqKiohyCXXh4uN16DRs2PB+HAwAA4BM+D3ZlZWXaunWrUlNTbcuCgoKUmpqqDRs2VGsfr7/+usaMGaN69erZLc/OzlZcXJzatWunO++8U8ePH/do2QEAvkF/HeCcz4dijx07pvLycsXHx9stj4+P1w8//OB2+82bN2vnzp16/fXX7ZZfeeWVuvbaa5WSkqK9e/fqwQcf1PDhw7VhwwYFBwc77Ke0tFSlpaW214WFhZIkq9Uqq9V6LofmVuV+vbX/uob69Bzq0nOoS8+xWq22oVir9TR1Wku0Tc/xdl3WZL8+D3a19frrr6tTp07q3bu33fIxY8bY/r9Tp07q3LmzWrdurezsbF1xxRUO+8nMzNTMmTMdlq9cuVJRUVGeL/ivZGVleXX/dQ316TnUpedQl55y5ov5unVrtSvSx0UJELRNz/FWXZaUlFR7XZ8HuyZNmig4OFj5+fl2y/Pz85WQkFDltsXFxVq8eLFmzZrl9nMuuOACNWnSRHv27HEa7DIyMpSenm57XVhYqBYtWmjo0KGKiYmp5tHUjNVqVVZWloYMGaLQ0FCvfEZdQn16DnXpOdSl51itVmV8tVqSNHDgpWoTV9/HJfJvtE3P8XZdVo4iVofPg11YWJh69OihVatWadSoUZKkiooKrVq1SpMnT65y23fffVelpaW6+eab3X7OTz/9pOPHjysxMdHp++Hh4U5nzYaGhnq9wZ+Pz6hLqE/PoS49h7r0rJCQEOrTQ2ibnuOtuqzJPn0+eUKS0tPT9eqrr+rNN9/U999/rzvvvFPFxcVKS0uTJI0bN04ZGRkO273++usaNWqUGjdubLe8qKhI999/vzZu3Kh9+/Zp1apVuuaaa9SmTRsNGzbsvBwTAMDzLO5XAeo0n/fYSdINN9ygo0ePatq0acrLy1PXrl21fPly24SKAwcOKCjIPoPu2rVL69ev18qVKx32FxwcrB07dujNN9/UiRMnlJSUpKFDh+qRRx7hXnYAEACYFQs4Z4pgJ0mTJ092OfSanZ3tsKxdu3Yub1AZGRmpFStWeLJ4AAAApmeKoVgAAKrj7JMnfFoMwLQIdgAAv2MwGAs4RbADAPgPZk8AVSLYAQD8BkOxQNUIdgAAAAGCYAcA8Bv02AFVI9gBAPwOkycA5wh2AAAAAYJgBwDwGwzFAlUj2AEAAAQIgh0AwH9wHzugSgQ7AIDfYCgWqBrBDgAAIEAQ7AAAfofbnQDOEewAAH6HoVjAOYIdAMBvMHcCqBrBDgDgNyz/S3Z02AHOEewAAAACBMEOAOB3DC6yA5wi2AEA/A6xDnCOYAcA8BtMngCqRrADAPgdRmIB5wh2AAAAAYJgBwDwG2eHYumyA5wh2AEA/A5DsYBzBDsAgP9g9gRQJYIdAMBvVOY6OuwA5wh2AAAAAYJgBwDwG7YeO7rsAKcIdgAAv8MjxQDnCHYAAAABgmAHAPAblv+NxdJfBzhHsAMA+B1GYgHnTBPs5s6dq1atWikiIkJ9+vTR5s2bXa67YMECWSwWu5+IiAi7dQzD0LRp05SYmKjIyEilpqZq9+7d3j4MAAAAnzFFsFuyZInS09M1ffp0bdu2TV26dNGwYcN05MgRl9vExMTo8OHDtp/9+/fbvf/EE0/o+eef17x587Rp0ybVq1dPw4YN06lTp7x9OAAALzl7Hzu67ABnTBHsnnnmGU2cOFFpaWm6+OKLNW/ePEVFRWn+/Pkut7FYLEpISLD9xMfH294zDENz5szRQw89pGuuuUadO3fWwoULdejQIS1btuw8HBEAAMD5F+LrApSVlWnr1q3KyMiwLQsKClJqaqo2bNjgcruioiIlJyeroqJC3bt31+zZs9WhQwdJUm5urvLy8pSammpbPzY2Vn369NGGDRs0ZswYh/2VlpaqtLTU9rqwsFCSZLVaZbVaa32czlTu11v7r2uoT8+hLj2HuvScX9fhXz/4RvUjfH4K82uGYaigIFiv7t8gi4VntdWGYRgak+S9v/Oa7NfnfxXHjh1TeXm5XY+bJMXHx+uHH35wuk27du00f/58de7cWQUFBXrqqafUr18/ffvtt2revLny8vJs+/jtPivf+63MzEzNnDnTYfnKlSsVFRV1LodWbVlZWV7df11DfXoOdek51KVnNAwPUt4vFuUeL/F1UQKERT8Wn/R1IQJCeYL3/s5LSqrf3n0e7M5F37591bdvX9vrfv366aKLLtLf//53PfLII+e0z4yMDKWnp9teFxYWqkWLFho6dKhiYmJqXWZnrFarsrKyNGTIEIWGhnrlM+oS6tNzqEvPoS49x2q16lR5lmJbd1VQcLCvi+P3yk+f1vacHHXr2lXBIX4ZB0yj/PRpFedu99rfeeUoYnX4/DfZpEkTBQcHKz8/3255fn6+EhISqrWP0NBQdevWTXv27JEk23b5+flKTEy022fXrl2d7iM8PFzh4eFO9+3tf4zPx2fUJdSn51CXnkNdekZEsHTFxQnUpQdYrVaV7d+u1A6J1GctWa1WfbJ/u9f+zmuyT59PnggLC1OPHj20atUq27KKigqtWrXKrleuKuXl5frmm29sIS4lJUUJCQl2+ywsLNSmTZuqvU8AAAB/4/MeO0lKT0/X+PHj1bNnT/Xu3Vtz5sxRcXGx0tLSJEnjxo1Ts2bNlJmZKUmaNWuWLrnkErVp00YnTpzQk08+qf379+u2226TdGbG7NSpU/Xoo4+qbdu2SklJ0cMPP6ykpCSNGjXKV4cJAADgVaYIdjfccIOOHj2qadOmKS8vT127dtXy5cttkx8OHDigoKCznYs///yzJk6cqLy8PDVs2FA9evTQl19+qYsvvti2zgMPPKDi4mLdfvvtOnHihAYMGKDly5c73MgYAAAgUJgi2EnS5MmTNXnyZKfvZWdn271+9tln9eyzz1a5P4vFolmzZmnWrFmeKiIAAICp+fwaOwAAAHgGwQ4AACBAEOwAAAACBMEOAAAgQBDsAAAAAgTBDgAAIEAQ7AAAAAIEwQ4AACBAEOwAAAACBMEOAAAgQJjmkWJmYxiGJKmwsNBrn2G1WlVSUqLCwkKFhoZ67XPqCurTc6hLz6EuPYe69Czq03O8XZeVWaQym1SFYOfCyZMnJUktWrTwcUkAAADOZJPY2Ngq17EY1Yl/dVBFRYUOHTqk6OhoWSwWr3xGYWGhWrRooR9//FExMTFe+Yy6hPr0HOrSc6hLz6EuPYv69Bxv16VhGDp58qSSkpIUFFT1VXT02LkQFBSk5s2bn5fPiomJ4Y/Kg6hPz6EuPYe69Bzq0rOoT8/xZl2666mrxOQJAACAAEGwAwAACBAEOx8KDw/X9OnTFR4e7uuiBATq03OoS8+hLj2HuvQs6tNzzFSXTJ4AAAAIEPTYAQAABAiCHQAAQIAg2AEAAAQIgp0PzZ07V61atVJERIT69OmjzZs3+7pIfmndunUaOXKkkpKSZLFYtGzZMl8XyS9lZmaqV69eio6OVlxcnEaNGqVdu3b5ulh+6+WXX1bnzp1t97Xq27evPv30U18XKyA8/vjjslgsmjp1qq+L4ndmzJghi8Vi99O+fXtfF8tvHTx4UDfffLMaN26syMhIderUSVu2bPFpmQh2PrJkyRKlp6dr+vTp2rZtm7p06aJhw4bpyJEjvi6a3ykuLlaXLl00d+5cXxfFr61du1aTJk3Sxo0blZWVJavVqqFDh6q4uNjXRfNLzZs31+OPP66tW7dqy5Ytuvzyy3XNNdfo22+/9XXR/NpXX32lv//97+rcubOvi+K3OnTooMOHD9t+1q9f7+si+aWff/5Z/fv3V2hoqD799FN99913evrpp9WwYUOflotZsT7Sp08f9erVSy+++KKkM48wa9GihaZMmaK//OUvPi6d/7JYLFq6dKlGjRrl66L4vaNHjyouLk5r167VpZde6uviBIRGjRrpySef1K233urroviloqIide/eXS+99JIeffRRde3aVXPmzPF1sfzKjBkztGzZMuXk5Pi6KH7vL3/5i7744gt9/vnnvi6KHXrsfKCsrExbt25VamqqbVlQUJBSU1O1YcMGH5YMOKugoEDSmTCC2ikvL9fixYtVXFysvn37+ro4fmvSpEkaMWKE3b+dqLndu3crKSlJF1xwgW666SYdOHDA10XyS//3f/+nnj176vrrr1dcXJy6deumV1991dfFItj5wrFjx1ReXq74+Hi75fHx8crLy/NRqYCzKioqNHXqVPXv318dO3b0dXH81jfffKP69esrPDxcf/rTn7R06VJdfPHFvi6WX1q8eLG2bdumzMxMXxfFr/Xp00cLFizQ8uXL9fLLLys3N1cDBw7UyZMnfV00v/Of//xHL7/8stq2basVK1bozjvv1N13360333zTp+UK8emnAzClSZMmaefOnVx7U0vt2rVTTk6OCgoK9N5772n8+PFau3Yt4a6GfvzxR91zzz3KyspSRESEr4vj14YP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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ref_setpoint = DynamicalSystem(f=setpoint_f, h=setpoint_h)\n", "\n", "dt = 0.01\n", "t_sim = np.arange(0, 6.0, dt)\n", "updates = {2.0: 2.5, 4.0: 0.5} # {time: new_setpoint}\n", "\n", "x_k = 1.0 # initial setpoint\n", "r_log = []\n", "for tk in t_sim:\n", " new_sp = next((v for t, v in updates.items() if abs(tk - t) < dt / 2), None)\n", " kwargs = {\"x_k\": x_k} if new_sp is None else {\"x_k\": x_k, \"setpoint\": new_sp}\n", " x_k, r_k = ref_setpoint.step(**kwargs)\n", " r_log.append(r_k)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t_sim, r_log)\n", "ax.set_xlabel(\"Time (s)\")\n", "ax.set_ylabel(\"$r_k$\")\n", "ax.set_title(\"Setpoint Reference Generator\")\n", "ax.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.12.12" } }, "nbformat": 4, "nbformat_minor": 5 }