{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 7章 PID制御" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from control.matlab import *\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "#plt.rcParams['font.family'] ='sans-serif' #使用するフォント\n", "plt.rcParams['font.family'] = 'Times New Roman' # font familyの設定\n", "plt.rcParams['mathtext.fontset'] = 'cm' # math fontの設定\n", "plt.rcParams['xtick.direction'] = 'in' #x軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['ytick.direction'] = 'in' #y軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['xtick.major.width'] = 1.0 #x軸主目盛り線の線幅\n", "plt.rcParams['ytick.major.width'] = 1.0 #y軸主目盛り線の線幅\n", "plt.rcParams['font.size'] = 11 #フォントの大きさ\n", "plt.rcParams['axes.linewidth'] = 0.5 # 軸の線幅edge linewidth。囲みの太さ\n", "plt.rcParams['mathtext.default'] = 'it'#'regular'\n", "plt.rcParams['axes.xmargin'] = '0'\n", "plt.rcParams['axes.ymargin'] = '0.05'\n", "plt.rcParams['savefig.facecolor'] = 'None'\n", "plt.rcParams['savefig.edgecolor'] = 'None'\n", "\n", "plt.rcParams[\"legend.fancybox\"] = True # 丸角\n", "# plt.rcParams[\"legend.framealpha\"] = 1 # 透明度の指定、0で塗りつぶしなし\n", "# plt.rcParams[\"legend.edgecolor\"] = 'gray' # edgeの色を変更\n", "plt.rcParams[\"legend.handlelength\"] = 1.8 # 凡例の線の長さを調節\n", "plt.rcParams[\"legend.labelspacing\"] = 0.4 # 垂直方向(縦)の距離の各凡例の距離\n", "plt.rcParams[\"legend.handletextpad\"] = 0.7 # 凡例の線と文字の距離の長さ\n", "plt.rcParams[\"legend.markerscale\"] = 1.0 # 点がある場合のmarker scale" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def linestyle_generator():\n", " linestyle = ['-', '--', '-.', ':']\n", " lineID = 0\n", " while True:\n", " yield linestyle[lineID]\n", " lineID = (lineID + 1) % len(linestyle)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def plot_set(fig_ax, *args):\n", " fig_ax.set_xlabel(args[0])\n", " fig_ax.set_ylabel(args[1])\n", " fig_ax.grid(ls=':', lw=0.5)\n", " if len(args)==3:\n", " fig_ax.legend(loc=args[2])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def bodeplot_set(fig_ax, *args):\n", " fig_ax[0].grid(which=\"both\", ls=':', lw=0.5)\n", " fig_ax[0].set_ylabel('Gain [dB]')\n", "\n", " fig_ax[1].grid(which=\"both\", ls=':', lw=0.5)\n", " fig_ax[1].set_xlabel('$\\omega$ [rad/s]')\n", " fig_ax[1].set_ylabel('Phase [deg]')\n", " \n", " if len(args) > 0:\n", " fig_ax[1].legend(loc=args[0])\n", " if len(args) > 1:\n", " fig_ax[0].legend(loc=args[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PID制御" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 制御対象" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1.+3.j -1.-3.j]\n" ] } ], "source": [ "a1 = 2;\n", "a0 = 10;\n", "b0 = 8;\n", "\n", "P = tf( [0,b0], [1, a1, a0] )\n", "\n", "print(P.pole())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例7.1: P制御" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 5.0)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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b/8iAIwePdqjat3U1FSdguWio6NtHz58aNGxY8ey77///uGnn36a6evrW65IyTpnzpzs7du365RAKzU11XLMmDH5+j670VtAlNI0VDicFXxY5djvAH6v7Vxdgg5HjhyJF154QSctL774ImJiYhAREYEbN25gx44dOp1nbW1d67ExY8bUeszX1xcvvPACoqKi8MYbb+h0r7poaEhY0MGCBkMSERHxKCIiQiVGSF2u6KysLJWYo927d6ft3r07rWa5NgyVkvXnn392XLBgQWZdgoSZ/inRpeVgZ2cHR0dHjXUOHTqElStXomfPnhg5ciR8fX0xZcoUnXWUl6vvJl+5cgUfffSRxnPff/99bNu2Ted76auhoWFBBwsannYMlZL10KFD9l27di1t27at+N69e3pbIKbntGvzAVFK4efnh+zs7FonIspkMnzyySf4+uuvAVRMRkxNTUWvXr2watUqTJo0CS4uLhrvU9sEw3bt2mHChAkazw0LC0NqaqrGOrpgzEmO+sCCDhY0PO0YIiXrZ5995rp58+bmzs7OUrlcjs6dO5fs2rXrvj46mDZA2igpKQEhROMs6MOHD8PBwQGvvfYaAMDDwwPp6emQSCRIT0/HmjVrtA6n1uaLSkxMROfOnTWea29vj5UrV0IikdQrj019VnY1JCzoYEHD044hUrJ++umnWVUd0XWB6S6YtuTjWVlZcHV11VinuLgY8+fPV35oLSws0KJFC9y/fx/z5s3Djz/+iPz8fI3XsLVVXXVWJBJhwIABOnUHjh8/jnfeeUdrPX01AEBBQQE2bdqEGTNmYM2aNbh/X68fIIPpaEhY0NAYUaRk7dKlS4PNc2DaAGkbqcrMzNRogCilGDduHIYOHVqtXBET5uHhgcGDB+P8+fMa76POyFy4cAGdOnXSKc/0gAED8PPPP2utp68GSilef/11nDlzBl5eXrh37x66du2KiIgIo6UtZcH/woIGjmFgugumzQBpawFt3LgR+fn5+OSTT6qVR0RE4LnnngNQMTSvrUmvLjn+mTNnMGDAAI3nKbCwsMC5c+dAKcUrr7yi0znaNNy6dQtt2rTB77//Dnt7e2X5/PnzMXXqVIwdO1Zr69AQOkwBCxo4hoHpFpA2tBmgX3/9Fb6+virlXl5eygT1hBAsW7ZM7+DRS5cuoVevXtorVvLw4UOsXbtWr3toYv36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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "kp = (1, 2, 5)\n", "for i in range(3):\n", " K = tf([0, kp[i]], [0, 1])\n", " Gyr = feedback(P*K, 1)\n", " y,t = step(Gyr, np.arange(0, 5, 0.01))\n", " \n", " pltargs = {'c':'k','ls': next(LS), 'label': '$k_P$='+str(kp[i]), 'lw':'1'} \n", " ax.plot(t, y, **pltargs)\n", " \n", " \n", " #print(stepinfo(Gyr))\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5)\n", "plot_set(ax, '$t$', '$y$')\n", "plt.legend(bbox_to_anchor=(1.05, 1.0), loc=2)\n", "\n", "ax.set_xlim(0, 5)\n", "#ax.set_ylim(0, 50)\n", "\n", "#fig.savefig(\"pcont_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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Tk1pj7Vr19K8eXOmTJnC77//ztChQ69E0ysVLVu2ZNeuXezatYvu3bvTvHlzvvzyS+rVq1cuEFmlShWmT59OTEyM3c8BdLyI2u0M8Bew3s520t1bJG9uL774ot1bQH95FLJlw4YNDqemdPYo5Ehm+yiUnZ2t5FnvexN36tVSRk3HXp61rLCwUL755psyNjZW9u3bV/7222/y4Ycflr1795b79u0rUyYvL08mJibKyZMnl5nq0lu4ah9f2MaR3FamlsaHj0L3ypI1mstslMwip+Mit9xyi8OpKXU8IzAwkNGjR7N//37atWtH9+7dSU9PJyYmhm7dujF8+HBF12g0smnTJpYvX85jjz2mrESo4z2cLQq/x4H8N980xzX8fVF4V3T+6YvCO9PRssC5hWeffZZjx47RsWNHtm7disFgID09nR07djBu3DgWLVpEREQEX3/9NWazmXr16vH8889z+vRp7R1ysx/u6uuLwuvo+AFhYWGMGTOGDRs2sHbtWurXr88DDzzAokWLGDduHLGxsbzyyit88sknbNy4kcLCQpYsWQKUxMekG6Ovdf6fK7oovLcJDPRN8yvznLfW6/7argHsLdypV0sZNR17eVpkISEhNG7cmKlTpzJlyhT27NnDzp07Wb16NcuXL2fNmjWkp6djMBho0aIFBQUFrF+/nh9++IGVK1dy8eJFunfvTu3atTX00nk/3NV31TaO5Pbs42pbtFCpHYu/zLKutcyVmKXfH1f601rG145XCEHjxo1p1aoVw4YNIycnh+TkZHbu3Mn69evZtm0b06ZNIyQkhBo1apCbm0tQUBC5ubmEh4dz/fXX06JFC3r06MHtt99OcXGx3YGR+kqIldyxqMVYpJRuO57i4mKXDayljJqOvTwtsuLi4jL9zM7OVv7rWO97E3fq1VJGTcdenhaZWjonJ4ekpCSSkpJ48MEHgZLrJiUlhd9//50tW7awa9cujhw5QmBgIDt27GDz5s288847hIaGEhYWRtu2bcnIyODs2bPExcXRpEkTGjduTJMmTUhMTCQ2NtbpnbUvbOMN+3jCFXUsQogalEzGnSalfN1K9hTwG9AGeE1KmSmE6FKahpJvljR/UW0ymUhLSyM6OtpndzX+gpSStLQ0TCaTc2UdpwghqFGjBl27dlXGIVmTlZXF/v372bdvH8XFxSQnJ/Pjjz/y999/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "for i in range(len(kp)):\n", " K = tf([0, kp[i]], [0, 1])\n", " Gyr = feedback(P*K, 1)\n", " gain, phase, w = bode(Gyr, logspace(-1,2), plot=False)\n", " \n", " pltargs = {'c':'k', 'ls': next(LS), 'label': '$k_P$='+str(kp[i]), 'lw':'1'}\n", " ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", " ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", " \n", "bodeplot_set(ax, 'lower left')\n", "\n", "ax[1].set_ylim(-190,10)\n", "ax[1].set_yticks([-180,-90,0])\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"pcont_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例7.2: PI制御" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 5.0)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kp = 5\n", "ki = (0, 5, 10)\n", "\n", "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(3):\n", " K = tf([kp, ki[i]], [1, 0])\n", " Gyr = feedback(P*K, 1)\n", " y,t = step(Gyr,np.arange(0, 5, 0.01))\n", " \n", " pltargs = {'c':'k', 'ls': next(LS), 'label': '$k_I$='+str(ki[i]), 'lw':'1'} \n", " ax.plot(t, y, **pltargs)\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5) \n", "plot_set(ax, '$t$', '$y$')\n", "plt.legend(bbox_to_anchor=(1.05, 1.0), loc=2)\n", "\n", "ax.set_xlim(0, 5)\n", "#fig.savefig(\"picont_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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Z0ZmVI5mHGYwatfpdOJ0OsnJyfHLRo8ezfXXX4/L5QJqbzvXr1/PkiVLWLJkCYsWLWLChAmsXLmSH3/8kWeffZaioiKeffZZfvvb39KtWzfKyspwuVwsX74cEeHBBx8kIyODZ5991rBvieafaPUjPXfCySPxTywk9M/N9VFdXW1Ju75kW7xtjHRC1ZmRGZWjGYcZYvVPUlIS55xzDnfccQezZs2isLCQF198kYKCAr744gtatWrFI488wnnnncfhw4cZNmwYc+bM8f8iBvCHP/yBOXPm1Nu3xuAfK86dcPJI/BMLCX/FEg1VVVXs2rULt9sdlX1NTQ1FRUVxtzHSCVVnRhaqfOTIERrTjGQRoU+fPnTs2JEXXniBjz/+mMmTJzN37lymTJnClVdeyYQJE9i0aROPPvooAOeccw4VFRVs2bKFdu3aNfAINME06sASLom3a9cuMjIyOP300/0/qUVCTU2NP5kbTxsjnVB1ZmTB5erqan9uonnz5hGNwSy+n03jbZOWlobT6WTEiBEMHTqUp556it69e/PII48wf/58brnlFoqKimjatCkiwiWXXMLcuXOPCizBxzEqRzMOM0TarlnfRFoXSh6Jf2KhUd8KhcPtdpObmxtVUGnsiAi5ublRX60lCikpKTzwwAMsWbKEf//73/zmN79h9uzZNGnShIULFwL4A4sm8WjUgaWqqipsXSxBpbEnb31j903EijfRtGvGJpROx44dWbRoEb/4xS8YNWoUu3fv5oYbbuDtt9/mwgsvZMOGDf7Jc6HaMConin+i9U19daHkkfgnFhp1YNGcHNhsNh599FEKCgqYM2cOn332GXfffTerVq1i27ZtEd+2aqzHMMciIhPqa0Ap9Wj8uhMZycnWpIiiea7GjI2RTqg6MzKjshVzNKJt14yNkU5WVhZvv/02vXr1om/fvsyYMYMtW7awZs0aVq9ezS233BKyDaNyovgnVt+Eqwslj8Q/sVDfNzMH+MCgfmhcehElVuVQomnXjI2RTqg6MzKjcjwfPAykoQJvu3bt+Pvf/851113HihUruPTSSykoKCA3NzdsG0blRPGPFf+Uwskj8U8s1NfK10qpReFewLK49CJKjHIssRB4zx5PGyOdUHVmZEZl38Ns8Saads3YGOn46kaOHEmPHj0YN24cN998M0lJSVx22WX+3EBwG0blRPFP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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "for i in range(3):\n", " K = tf([kp, ki[i]], [1, 0])\n", " Gyr = feedback(P*K,1)\n", " gain, phase, w = bode(Gyr, logspace(-1,2), plot=False)\n", " \n", " pltargs = {'c':'k', 'ls': next(LS), 'label': '$k_I$='+str(ki[i]), 'lw':'1'} \n", " ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", " ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", " \n", "bodeplot_set(ax, 'best')\n", "\n", "ax[1].set_ylim(-190,10)\n", "ax[1].set_yticks([-180,-90,0])\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"picont_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例7.3: PID制御" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 5.0)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kp = 5\n", "kd = (0, 0.2, 0.5)\n", "ki = 10\n", "\n", "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(3):\n", " K = tf([kd[i], kp, ki], [1, 0])\n", " Gyr = feedback(P*K, 1)\n", " y, t = step(Gyr, np.arange(0, 5, 0.01))\n", " \n", " pltargs = {'c':'k', 'ls': next(LS), 'label': '$k_D$='+str(kd[i]), 'lw':'1'} \n", " ax.plot(t, y, **pltargs)\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5) \n", "plot_set(ax, '$t$', '$y$')\n", "plt.legend(bbox_to_anchor=(1.05, 1.0), loc=2)\n", " \n", "ax.set_xlim(0, 5)\n", "#fig.savefig(\"pidcont_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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JytXrgRgyZIlfPfddzz55JO0bt26jkfoPXqDtz9JKecKIUZIKT8WQvwrqKPSSbBiLL78l9ejo9XGXZ0emVY5WPsu1YcYy3fffUfLli354YcfsNlsFBYWEhcXV+cxluLiYpYtW8bixYuJi4vj7bffpk2bNtx777107ty52qI9vX16qgv5GAsQL4SYCpwQQmzHntagzlExlrqJsdSHWyHH814VFRXMmjWLhx56CCllndwKHT16lF27diGlpGPHjrz77rtce+21TJgwAYB77rmHLl26aAbbvbWNJ/n5uhXSdcUipfyL470Qogf2BxLrHBVjUTEWd7LU1FSys7Od5SeffJJ///vfvP322zzwwANejckXysvLqaio4Pnnn2fJkiVkZ2czZcoU2rdvz549e85ZMR4M23iSh5RjqdpHaAgQiT14ewn2rVYVipDD4VgcV2wmk4nPP/+cbt260adPH48P8/mKlJKDBw+ybNkyli1bRpcuXfjTn/5Eo0aNmDt3Ll26dHE6+GA9hhJq6I2xjAT+wP92QrwuOMPxjmB9SIGKsWzatIn777+fFStW0KJFiwsmxqInlYAvOlpt3NV5kkVGRhITE0NeXp6zTYsWLdi5cycNGjTggw8+4Nprr632FLQ3WK1Wdu7cybp16+jRowdNmzalT58+9OvXj6FDh3LDDTcA9sRjegiGbTzJa8pqK/uKXsfyKXBASlkJIISIqqX9eSHUl/QHMjWl0WgkKyuLcePGVVtN6Whz6tQpunXrRnl5OYMHD+Zvf/vbRZk2wSFLS0sjOzvbuXEZQHJyMkVFRZw5c4bbb7+dZs2a8eyzz3LHHXdQWFhITExMNWdcWFjI8ePHOXnyJLt27eLBBx9k//799OvXj2bNmtGjRw+6d+9O48aNOX78uDPg6shap5dg2MaTXE/ahECgtSn8eiHEYSHEEeB54LhL+ceAHN1PghljCYTOkSNHaNmypWYbrTqbzcbWrVvZuHEjY8aMoW/fvs4no2vqzZ07l507d3LkyBH+9re/+TwPPYT6AjnAGcB1twDsmWee4ciRI4wePZpTp04BcN9992EymUhKSqJdu3YAfPjhh9x7773MnDmTX3/9ldLSUjp37szJkyfZu3cvc+fOpVOnTsC5S+69IRi28SQPhQVyrwPfSinPieYIIW4IyNEvcNauXUufPn1Yt24dX3zxBampqQwdOtRtasr58+ef81yL1WqloKDAeaJ36NCBBx98kFmzZlVrV1payurVq/n73//Ogw8+yCuvvBK0rVHqC461LB07dnRbHx4ezh133OGMt3z33XdYrVby8vKcV3rjx49n/Pjx5+gGa2vWCwmPVyxSyq+AJkKI+UKIN6q25HDUhcQCOb0xloyMDIQQ57wceTZcM8w1adIEo9F4TlvX+prpIcF9PGPt2rVkZmbSunVr3njjDSZMmEDz5s2dqSlHjx7NsWPHyMrK8vhcUHZ2tjNpkLvUlAaDgaioKJYvX87+/fvZv38/r732mscxBYJQj7HA/26FtGIINesMBgPJycmkpKTUOlYtvLXPxRhjeR84hv1XoCex7+EcMuiNIXhKTela7yArKwur1erxS+nOqXgaS83UlFar1WNqyqFDh55zTKvVSkZGhu7UlPHx8cyePZuxY8d6HFMgCOXtPxyytLQ0MjMz62TfpQth+w9/qW2B3GYp5SNSyiGAMzO/EKKBhs55I1CBppoE4ovjmpry8OHDWCwWlixZwoYNG9ympvR0Etx9991s374dcJ+asuY+MNnZ2QwcONDneejBsZ1FoHW02rir05I5fnKu2ca17Ms89OBtv8GwjSe5lj30jkUPtTmWeCHEjVW7FTZwef+ngBz9AsZdaspevXqxceNGrrvO/mu9a2pKT7imply+fLlzt4HMzExuvdX+HOj3339Phw4dmDZtGrt27aqWqf1ixXX1reL8U9ut0G3Y91N24EiX0ByYHJQReUEo57x1XDUAvPLKKwD89NNPbN68mXXr1pGfn09lZaVzrYNW7hXX9RCOX8LS09PZsmULVquVfv368csvv1Sr93UeegjlnLcOmSN4G4ict94SijlvPclqK/tKbY5lsJRya02hEOKagBz9IqNr164eU1MqAosjeKuoG2rbFP4cp1Il/yU4w/GOUN8U3ps2alN4/zeFd5UlJCRU27LVnY7aFP7C3hReoQg4QghSU1OdC+AU55d67ViCtQhM5bzVxnX/5EDqaLVxV1ebLC0tjYKCAo/1vsxDD972GwzbeJLXlNVW9pV67VhCJcu6Xp0LJUt/fXG8zZo147PPPqOkpMRtfbAcr7f91tVOiHrKvlKvHYtWjMWfxWG+PIOkR0erjbs6PTKtsuv7QC6Wc/2iBlJHq427utpkb775JmfOnOHKK69k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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "for i in range(3):\n", " K = tf([kd[i], kp, ki], [1, 0])\n", " Gyr = feedback(P*K,1)\n", " gain, phase, w = bode(Gyr, logspace(-1,2), plot=False)\n", " \n", " pltargs = {'c':'k', 'ls': next(LS), 'label': '$k_D$='+str(kd[i]), 'lw':'1'} \n", " ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", " ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", " \n", "bodeplot_set(ax, 'best')\n", "\n", "ax[1].set_ylim(-190,10)\n", "ax[1].set_yticks([-180,-90,0])\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"pidcont_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 限界感度法" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例7.4" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# 台車系のモデル\n", "a1 = 2;\n", "b0 = 8;\n", "P = tf([0, b0], [1, a1, 0])\n", "\n", "num_delay, den_delay = pade( 0.01, 2) #むだ時間 0.01, 2次のPade近似\n", "Pdelay = P * tf(num_delay, den_delay)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-300.+173.20508076j -300.-173.20508076j -2. +0.j\n", " 0. +0.j ]\n" ] } ], "source": [ "print(pole(Pdelay))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy import signal\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "kp0 = 25\n", "C = tf([0, kp0], [0, 1])\n", "Gyr = feedback(Pdelay*C, 1)\n", "y,t = step(Gyr, np.arange(0, 5, 0.01))\n", "\n", "yslice = y[1::]\n", "tslice = t[1::]\n", "[maxId] = signal.argrelmax(yslice)\n", "\n", "ax.plot(t, y, color='k', lw=1)\n", "ax.plot(tslice[maxId], yslice[maxId], 'ko')\n", "\n", "ax.axhline(1, color='k', linewidth=0.5) \n", "ax.set_xlim(0, 5)\n", "plot_set(ax, '$t$', '$y$')\n", "ax.grid(ls=':')\n", "\n", "#fig.savefig(\"tune_zn.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "T0= 0.45000000000000007\n", "kP0= 25\n" ] } ], "source": [ "T0 = tslice[maxId[2]]-tslice[maxId[1]]\n", "print('T0=', T0)\n", "print('kP0=', kp0)\n", "\n", "# Classic ZN\n", "kp = 0.6 * kp0\n", "ki = kp / (0.5 * T0)\n", "kd = kp * (0.125 * T0)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n", "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "K1 = tf([kd, kp, ki], [1, 0])\n", "K2 = tf([0, ki], [kd, kp, ki])\n", "\n", "Gyz = feedback(Pdelay*K1, 1)\n", "\n", "Td = np.arange(0, 5, 0.01)\n", "r = 1*(Td>0)\n", "\n", "z, t, _ = lsim(K2, r, Td, 0)\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "y, _, _ = lsim(Gyz, r, Td, 0)\n", "ax.plot(t, y, label='PID', lw=1, c='k')\n", "\n", "y, _, _ = lsim(Gyz, z, Td, 0)\n", "ax.plot(t, y, ls='--', label='I-PD', lw=1, c='k')\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5) \n", "ax.set_xlim(0, 5)\n", "plot_set(ax, '$t$', '$y$', 'best')\n", "\n", "#fig.savefig(\"tune_zn_result.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ステップ応答法" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例7.5" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# 台車系のモデル\n", "a1 = 2;\n", "b0 = 8;\n", "P = tf([0, b0], [1, a1, 0])\n", "\n", "num_delay, den_delay = pade( 0.01, 2) #むだ時間 0.01, 2次のPade近似\n", "Pdelay = P * tf(num_delay, den_delay)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n" ] }, { "data": { "text/plain": [ "array([30.47629261, -8.6641487 ])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tdata = np.arange(0, 1, 0.01)\n", "u0 = 10\n", "udata = u0*(tdata>0) \n", "y, t, _ = lsim(Pdelay, udata, tdata, 0)\n", "\n", "# ある程度時間が経過したあとの応答を1次関数で近似する\n", "yslice = y[50::]\n", "tslice = t[50::]\n", "p = np.polyfit(tslice, yslice, 1)\n", "p" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 1.0)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "y, t, _ = lsim(Pdelay, udata, tdata, 0)\n", "ax.plot(t, y, lw=1, c='k')\n", "ax.plot(t, np.poly1d( p )(t), lw=1, c='k', ls='--')\n", "\n", "plot_set(ax, '$t$', '$y$')\n", "ax.set_xlim(0, 1)\n", "\n", "#fig.savefig(\"tune_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.0476292613586424 0.28429142631999516\n", "kP= 1.3850177808529736\n", "kI= 2.435911977334859\n", "kD= 0.19687434019862315\n" ] } ], "source": [ "R = p[0]/u0\n", "L = -p[1]/p[0]\n", "print(R, L)\n", "\n", "kp = 1.2/(R*L)\n", "ki = kp / (2 * L)\n", "kd = kp * (0.5 * L)\n", "\n", "print('kP=', kp)\n", "print('kI=', ki)\n", "print('kD=', kd)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n", "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n" ] }, { "data": { "text/plain": [ "(0.0, 5.0)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "K1 = tf([kd, kp, ki], [1, 0])\n", "K2 = tf([0, ki], [kd, kp, ki])\n", "\n", "Gyz = feedback(Pdelay*K1, 1)\n", "\n", "Td = np.arange(0, 5, 0.01)\n", "r = 1*(Td>0)\n", "\n", "z, t, _ = lsim(K2, r, Td, 0)\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "y, _, _ = lsim(Gyz, r, Td, 0)\n", "ax.plot(t, y, lw = 1, c='k', label='PID')\n", "\n", "y, _, _ = lsim(Gyz, z, Td, 0)\n", "ax.plot(t, y, ls='--', lw = 1, c='k', label='I-PD')\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5) \n", "plot_set(ax, '$t$', '$y$', 'best')\n", "ax.set_xlim(0, 5)\n", "\n", "#fig.savefig(\"tune_step_result.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## モデルマッチング" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 規範モデル" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAN4AAACnCAYAAAB+SuK+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAokklEQVR4nO2deXgUVbr/Pyc7CSQQQsCAECGK/GQJwyIKCIyIoF6BccGLMAoCI8gg1xGQURTUR3D0il5Hhk0BZcY7iiKy73sghB0JW5RgQIgkQCB70v3+/uh0385eSbrTp6U+z9PPU1Xn1KlvVffbdZb3vEeJCCYmJrWLj6cFmJjcjJiGZ2LiAUzDMzHxAKbhmZh4ANPwTEw8gJ+nBVSHYcOGSUxMjEc15OTkUKdOHY9q0EWHDhp00TFjxoxPRWRUZfm80vBatGjB9OnTPapBhy9ZFx06aNBFx4wZM84byeeVVU0dxh6tVqunJQB66NBBA+ijwwheaXiFhYWelkBOTo6nJQB66NBBA+ijwwheaXgmJt6OVxqev7+/R66bn5+PiPDTTz/x4YcfsmLFCnJzcz2ixU5wcLBHr6+LBtBHhxG80vA8wdatW4mJiWHfvn34+vqSn5/PRx99RLNmzdi6daun5Zl4GV7Zq1lQUFCr11uxYgVjxozhiy++4O677wZg8uTJRERE8OOPP9KoUSMOHDjAL7/8wn/8x3/Uqrbs7GyP/9ProEEnHUYw33iVICJ8/fXXrFmzhn79+pVKb9WqFaGhoRQUFPDiiy8ycuRIMjIyPKDUxJvwSsPz86udF3VBQQGXLl1i6dKldOrUqVhayfGibt26cfToUQICAhg4cGCt6CtLhyfQQQPoo8MIXml4Sqlauc6CBQsYP358mWk+PqUfXd26dZk7dy4rVqygoKCA2bNnk5eX51aNZemobXTQAProMIL3KHWiNtp4WVlZvPXWW7z22muOY84DtFlZWeWeGxYWRk5ODrt27aJLly4cPXrUrTo9jQ4aQB8dRnC74Sml7lRKrVRK9SojrY9S6pWiT/uiY/5KqbeVUs8opaa4W1952DtSYmNjKSwsZM+ePfTp0weAl19+mQkTJrBt27ZyvWhCQ0NZtmwZf/nLX7j//vtJTk6uRfUmuuP2xpKInFRK3QCK1Q+VUkHA34CuQACwscg4xwNnRWSJUuo1pdRAEVnhfK6vr6+7ZfPggw/SvXt3hgwZQr9+/Rg5ciSbN28GYPz48Xz55ZeMHTsWf39/Jk6cyNNPP01gYGCxMpRSPPPMMzz00EM0atSIf/zjH+Tl5TFy5EhCQ0Orpev69evcuHHD8cnIyCAkJISoqChatGjB0aNHueOOO8jPz+eHH37AYrHQuHFjAM6ePYvVaiU0NJTmzZvTpEkTEhMTsVqt+Pj4EBISQkxMDKmpqWRmZuLr64uvry9RUVEUFhYWO1anTh18fX2xWq0EBATU7GG7iJLPX2tExO0fYDHQu8Sx3wNrnfb3Ay2AHcDdRcceARaVLO+vf/2ruJPExEQ5c+aMDB8+XB599FHJyckplSc7O1usVqts2LBB+vfvL02aNJEdO3ZUWO6hQ4fkiSeekAYNGsgLL7wgVqu1zHzp6emyatUqefPNN2XLli0yfvx4GTRokMycOVMaN24swcHBUrduXalfv74EBwdLYGCghIaGSqNGjSQsLEwiIiIEcHx8fHzEx8fHse/r6ytBQUHi5+cnfn5+xfKW9Sl5fmUfpZShPEbyebrMqnyKypsuBmzCk+N4TYArTvu5QFSJ4/Zjxdi0aRPvvPOOY3/SpEnMmDGDwsJCR2dGSEgIVqvV4b9nH9/Jzs4GbD1gPj4+jnZBYGAgfn5+ZGVl8cYbb6CU4vjx46xZs4bMzEzy8/MJDAwkMzMTESEzM5MmTZrQqVMnvvjiC06fPk10dDSbN29m48aNTJ48mTp16pCXl0dhYSE+Pj7ceeedLFiwgOTkZOLj48nLy2PEiBFs376d/Px8cnJyyM/Pp7CwEKUUAQEB1K9fn+joaKKiopg1axZZWVn4+fnRrVs3nnvuOZYvX47FYiEiIoLmzZvTp08fsrKyCA4OJjQ0lKCgIHJzc1FKERgYSEBAADk5OSilCAoKctyT/Zp+fn6Offub9OLFi/j7+zvKys3NxWq1opQiJCSE1NRUwsPDCQgIcHR8Xbt2jfz8fEJCQqhTpw6ZmZkUFBQQHBxMUFCQ45kEBgaSnZ1Nbm4uvr6+hIeHk52dTU5ODr6+vtSrV8+hsaCgAD8/P/z8/LBYLI5qfkBAALm5uY7vxNfXl4yMDMfbOCwsjIyMDAoKCvD39yckJIT8/HxHGYGBgQ4PJD8/P/z9/cnLy8NiseDr60toaCh5eXnk5ORgtVqpW7cuIuJ4DiEhIQDk5eVx6623Gvrxe9LwUgHn0c56wK8ljtuPFaNXr17Ex8eXWWi9evWK7dsfip2SA6xldUGvX7+ewMBA1q1bR/PmzYulOVdngoKCCAoKAiAiIgKwfXF16tQhPDyce+65h4KCAu68804aNmxIYGAgly9fxt/fn0uXLjFu3DgaNWrErbfeSkZGBpGRkUycOJFbbrmFlStXEhQURGRkJP369aNly5YkJSURFRVV7J769evnuLa7CAsLqzC9Xr16pTS0aNHCpRqM3GNaWpojX8n89evXd6memlLrhqeUqg9kAbuAmUXHAoECEflRKfUt0BE4ArQDvi9ZhjvbeGvWrKFBgwb069eP3/3ud+XmK69dExkZSWRkJGB7Mx89epSjR4+ybds24uLiSEtLo3v37owYMYJZs2bRpk2bModH7r333lLHbr/9dsM6ahMdNIA+OozgdsNTSrUA7gC6K6XigbeB7SLytVJqelHPpS8wuuiUOcDbSqkRQD6wrGSZ7jS83r1789JLL1U6CG7kS87Pz2f9+vX8/e9/p0ePHvz9739nwIABLnUA0OHHpoMG0EeHEWqjV/Mc4Pz3Pd4pbQ2wpkT+PGBSRWXm5+e7UmKxcjds2ODorayIzMxMRzWzJIWFhcyZM4c333yTgQMHsnfvXtwVqqIiHbWFDhp00mEEr3SSdhe7d+9mwoQJNG3alPvuu69aZZw8eZKnn36a0NBQdu7cSZs2bVys0uS3gFd6rrirqrl27VrGjRtnyOjKqtYsXbqUnj178qc//YktW7bUitHpUL3SQQPoo8MIpuE5sWTJEho2bGgor3Pvpogwbdo0ZsyYwebNmxkzZkyt+ZPqMGisgwbQR4cRvLKq6Y42nsVioaCggAceeMBQ/szMTAIDA7FarYwdO5YDBw6we/duR49mbWHX4Ul00KCTDiN4peG5g40bNxIREWG4emj3QJgwYQInTpxg69atpcYQawP7ILIn0UED6KPDCF5peO6Y/vHaa6/RrFkzw/n9/f15++23iYuL85jR2XV4Gh00gD46jOCVhueOibDHjx/n448/Npx//fr1LFiwgISEhEo9O9yJDlUrHTSAPjqM4JWdK66ej3fs2DHy8vIYPny4ofynTp3ihRdeYNmyZQ7Pf09h9z292TWAPjqM4JWG5+q6vFKKMWPGGPrHLCgoYNiwYUyaNImuXbu6VEd10CF6sg4aQB8dRvBKw3N1Gy8qKoq5c+cayjtr1iwaNmzI6NGjK89cC9RW/BndNYA+OozglYbn6gccHR3NkiVLKs1nbwcuXLhQm8A6OrhI6aAB9NFhBK80PFe28QoLC7FYLJU6RduHDl5//XWaNWumTXtCBx06aAB9dBjBKw3PlW28pUuXEh4eXul8rWXLlnH58mWef/55QJ/2hA46dNAA+ugwgvdUip1wpTvW+vXr6dChQ4V58vPzmTx5MosWLXJUc3UJJaeDDh00gD46jOA9Sp1w5UBpcnIykyZVOAuJzz77jNatW9O7d2/HMV1CheugQwcNoI8OI3jlG89V6+Pl5+eTkJBAeHh4uXlyc3N5++23Wb58eanjOjTmddChgwaddBjBK994rqrLJyQkYLVaueOOO8rNs3DhQjp16kSXLl2KHddhcUzQQ4cOGkAfHUbwyjeeq9p43333HeHh4eUOnFssFj744AP++c9/lkrTpT2hgw4dNIA+OozgPUqdcFUb7/r1645lt8pixYoVNG7cmHvuuadUmi7tCR106KAB9NFhhNoIdvQCtqBFUcBHInKt6LgCjgF1sAUEjQQ6FkUaexiYV1TEZBH5l3OZrqpSzJs3r8L0Dz74gJdeeqnMtLy8PC3aEzro0EGDTjqM4NY3nlLqd9iiQi8ANgNvOCW3BB4VkVYiEgN8U2R0CltwpFtFpFlJowPXtPFu3LhBu3btOH/+fJnp+/bt4/z58wwePLjM9NpeHLM8dNChgwbQR4cR3P3GGwQcL9o+DHwB/BeAiPxoz6SU6ggcKtrtAPQHhiulpopIqQbW9u3bi7XzqhNJ2mKxkJSURG5uLmlpacUiSQP8z//8D6NHj+batWuALZ6HcyTprKws6tatS3Z2NlarFT8/P4KCghz7Pj4+BAcHk5ub64iaHBwcTF5eHgUFBSilqFu3Lnl5eY4Z9XXr1iU/P9+xHxISUuk95eXlkZaWBlQcHdt+DwEBAWRmZpZ5T/7+/o7IzlW5J3v5rron5++pKveUkZHhsnuqyfdkCCNx3qv7AeYDo4u2/YC8cvLNBCJLHLsdOA10L5n/1VdfrXCNAiPs3btXmjZtWmZaRkaGhIWFyaVLl8o9Pzc3t8YaXIEOOnTQIKKHDgyuneDuzpVKw7EXVS0jRKRYmoicAV4HupQ8x2Kx1FjY66+/Xq6b2FdffUWfPn0qnGvn7gUnjaKDDh00gD46jOBuw/sWiC3abgd8r5Sqr5Ry7pbsBWy37yilnDWFAZtKFuoKw7t+/Trvv/9+mWmffvopzz33XIXnuyuoblXRQYcOGkAfHUZwq+GJyCEgUSk1CugLvIYthPsgp2yDgO+c9qcppbYopV4GTovID67WZbVaOXz4MLfddluptMTERM6dO0f//v1dfVkTEwe1EcL9vRKHxpdIn1hif0ZlZdY0cOnZs2cpKCgoc8D1888/Z/jw4ZXO+atbt26NNLgKHXTooAH00WEErxxAr2lVc8+ePQC0atWq2HER4auvvuKpp56qtAxdqjU66NBBA+ijwwg3peFt3bqVyMjIUm+8AwcO4OfnR2xsbKVl6PIl66BDBw2gjw4jeKWvZk2ZMmUKTz75ZKnj//73v3nyySdrLfy6yc2LV77xauqrefjw4VI+mvZq5pAhQwyVUXKlWU+hgw4dNIA+OozglYZXE5cxi8XCuHHj2Lp1a7Hj+/btIzg4mLZt2xoqR5cpKDro0EED6KPDCF5peDVp4/n6+lK3bl3atWtX7Pg333zD448/briaqctgrQ46dNAA+ugwglcaXk349ttvuXDhQqkxvJUrV/Loo496SJXJzYZXGl5N2ng7duzggQceKLbGXlJSEteuXaNTp06Gy9GlPaGDDh00gD46jOCVhic1CO+XnJzMyJEjix1btWoVjzzySJVmMOsSSk4HHTpoAH10GMErDa8mjeidO3eSkJBQ7NjKlSt55JFHqlSOfRqLp9FBhw4aQB8dRvBKw6su+fn5XLt2rVgczYyMDBISEujbt68HlZncbHil4VW3jXfmzBl8fX2L9WiuX7+enj17Vrl9oEt8Dx106KAB9NFhBK80vOpitVpp2bJlsXB+69atY8CAAR5UZXIz4pWGV93YGu3atePkyZOOcH4iwsaNG+nXr1+Vy9JlgQwddOigAfTRYYRKDU8pNUgp1bI2xLibIUOGOBYdAdvKrj4+Ptx+++0eVGVyM2LESTocmKWUagEkAluAr0Uk163KKqC66+NFRUUVG4rYuHEjffv2rZZTtC7r4+mgQwcNoI8OI1T6xhORz0TkSRG5G3gX24zx/1VK3eluceVRHUOxWq0cP3682CD5xo0beeCBB6qlQZeoxTro0EED6KPDCEaqmtOUUm8ppe4QkZPAN8BgoHq/WBdQnTZeSkoK27dvp02bNo4ytm/fzv33318tDfbwcp5GBx06aAB9dBjBSJ3tAnAJWyyUZsA24DnKiBhWFuVFknZK3wTcCZwHumP7M3gDOAM0EZF3jVynMk6cOEHPnj0db7z4+HhatWpFo0aNXFG8iUmVMPJu3gFkishwEelTFBPlVyClshMriSSNUmoQ8KrYIkZ3ExELtpgsZ0VkCeCvlCq1RrKzn6VR4uPjERFHNbUm1Uyg3IVOahsddOigAfTRYYRK33gikgQklTj2vcHyB1FOJOki+gCPKaX2AWNFJBVbNXaS0zmPASucC922bVuVI0nv2rWLCxcuOKIub9iwgddee82xX9WoyxaLBX9/f49Hki4oKPB4JOns7Gzy8vI8Hkk6Ly8PETEjSWMgkjTgC0wDNhTtnwZuL9ruC6wvec6kSZOqHOE3OjpaHnvsMRERycrKkpCQEMnKyqpyOXYuX75c7XNdiQ46dNAgoocOvCWStIhYROQtINToOdXh4sWLjnAPe/fupX379l7lYmTy28LdwY6+BSYUbTsiSQNZIlKglPIREatSKghbW9J+TkfgiP2ckoVWp423Y8cOWrZs6di+7777qlyGMzWN7ekqdNChgwbQR4cRPBZJWinVEPhBKfURMBJ4q+i0OcBdSqkR2HpDl5Ust6qGl5KSwsGDB2nYsCFgmxpkGt5vSwPoo8MIno4k/f/KyJ/H/3WulElV4ycePHiQl19+meeff578/Hz27dvHvffeW6UySpKZmenWRRALCgo4f/48ubkVOwhZLJZq1QBciQ4aaltHUFAQzZo1q/ZMmZsirmZISAidO3cGbEFrY2Jiyl0pSBfOnz9PvXr1iI6OrtBTp6CgwGVLU1cXHTTUpg4RIT09nfPnz5e5/oYRvMfHxomq/qu99dZbREREAK5p34H7qzW5ubk0bNiwUvc4HdykdNAAtadDKUXDhg0rrY1UhB5PrIpU1fDOnDnjCFTrivYd1M5grRGfVB2iXuugAWpXR02v5ZWGV5U2XlZWFlevXmXw4MFYLBZ27dpFjx49aqzBPgjtaXQI8KODBtBHhxF+822806dPU1hYSHp6OhcvXqRJkyYVrvRqFKlBpDNXooMOHTSAPjqM4JVvvKrU5fft24dSisjISJe176Dm6ze4Ck9V82bPns2iRYtcruHSpUvlRgQQEd555x3Gjh1bZnpNdBw6dIjFixdz9913c+zYMRYuXMjQoUN5772SnfKuwSvfeFWZCBsXF0fjxo1RSrFz504GDizlc10tdHHIdVeHwv79+xk8eDB/+MMfiI2NZc+ePYSHhzNz5kyUUrz44ouOH7orNTRp0oS1a9eWmaaUokuXLpw+fbrM9JromDp1KuvWrSM2NpbvvvuOLl268Nlnn7Fz585ql1kRXvnGq8p8vFatWvGHP/wBEWHHjh307NnTJRp0ie/hrnZN586dadWqFYMHD2bEiBHMnTuXb775hnXr1gG2H7nd8FytoaLOs4pqGjXRkZRkmwcQGxvLuXPnCAoKIigoqEYzWCrCK994VanLv/7664AtvkpQUBAtWrRwiQZPNORdXa2synO8fv06N27c4JZbbuHq1au8+OKL9O3bl549e/L4448zevRoNm/eTFhYGAsXLuTXX39lzpw53HbbbWzatIl3332Xixcv8thjj/Hhhx/y+eef07BhQ3r16sXq1asJCwtj7ty5LFq0iOXLl/P999+zadMmduyweRLecsst5VYxwRYNPDU11RGif9iwYSxevBir1UpSUhLNmjVj3LhxJCcnEx8fz7lz59i/fz9Lly7l66+/5tq1ayxevJjbbruNkydPsm7dOsLCwujYsWONn3OZGPGk1u0zZcoUQ57iBQUFUr9+fUlISJAFCxbIsGHDDJ1nhKtXr7qsrLJITEw0lK+goMBtGnr16iUTJ06UTz75RDp37izDhg2T3NxcERF59dVXZdGiRSIi0r17dzlw4ICIiERFRYmIyB//+EeJi4sTEZFFixbJkCFDRESkadOmcu3aNRERadSokWP71ltvFRGRM2fOSK9evURE5PPPP5fk5GSJi4uT3//+9yIisnXrVnnmmWeK6bxy5YoMHjxYCgoKJCUlRb788ks5c+aMDBgwQERECgsLJSYmRo4fPy6jRo2S5cuXy/Lly2XUqFGO59yiRQtHec8884xs3bq10udT1neEJrMT3ILRNp6Pjw9+fn40btzYpdVMwK3uYlXB3YPGAwcOZNy4cezevZukpCSmTJkCFP8O/Pz8CA8PB/6vKrhv3z5CQ20TTrp27crRo0cdecPCwgDb3Dv7tv0+nMvt3r07q1evJjU1tcKl2c6cOeOYW9esWTOeeuopDhw44AhS7OvrS8eOHfnhhx9ISEhgwIABDBo0iAULFhSLsVqbeKXh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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "alpha1 = (3, 2, 2.15)\n", "alpha2 = (3, 2, 1.75)\n", "omega_n = 5\n", "Label = ('Binomial coeff.', 'Butterworth', 'ITAE')\n", "\n", "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(3):\n", " M = tf([0, omega_n**3], [1, alpha2[i]*omega_n, alpha1[i]*omega_n**2, omega_n**3])\n", " y,t = step(M, np.arange(0, 5, 0.01))\n", " \n", " ax.plot(t, y, ls=next(LS), label=Label[i], lw=1, c='k')\n", "\n", "ax.set_xlim(0, 5)\n", "plot_set(ax, '$t$', '$y$', 'best')\n", "\n", "# fig.savefig(\"ref_model_3rd.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0) " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "omega_n = 5\n", "zeta = (1, 1/np.sqrt(2))\n", "Label = ('Binomial coeff.', 'Butterworth')\n", "\n", "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(2):\n", " Msys = tf([0,omega_n**2], [1,2*zeta[i]*omega_n,omega_n**2])\n", " y, t = step(Msys, np.arange(0, 5, 0.01))\n", " \n", " ax.plot(t, y, ls=next(LS), label=Label[i], lw=1, c='k')\n", "\n", "ax.set_xlim(0, 5)\n", "plot_set(ax, '$t$', '$y$', 'best')\n", "\n", "#fig.savefig(\"ref_model_2nd.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例題7.1" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kP= 0.8840169731258841\n", "kP= 3.125\n", "kP= 0.25007552280788803\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "omega_n = 5\n", "zeta = 0.707\n", "\n", "a1 = 2;\n", "a0 = 10;\n", "b0 = 8;\n", "\n", "Msys = tf([0,omega_n**2], [1,2*zeta*omega_n,omega_n**2])\n", "\n", "kp = a1*omega_n/(2*b0* zeta)\n", "print('kP=', kp)\n", "Gyr = tf([0, b0*kp], [1, a1, b0*kp])\n", "\n", "yM, tM = step(Msys, np.arange(0, 5, 0.01))\n", "y, t = step(Gyr, np.arange(0, 5, 0.01))\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "ax.plot(tM, yM, label='$\\mathcal{M}$', ls = '-.', c='k', lw=1)\n", "ax.plot(t, y, label='$\\mathcal{G}_{y\\, r}$', lw=1, c='k')\n", "\n", "##### 速応性に注目\n", "\n", "kp = omega_n**2/b0\n", "print('kP=', kp)\n", "Gyr = tf([0, b0*kp], [1, a1, b0*kp])\n", "y, t = step(Gyr, np.arange(0, 5, 0.01))\n", "ax.plot(t, y, c='k', lw=1, ls=':')\n", "\n", "##### 減衰性に注目\n", "\n", "kp = a1**2/(4*zeta**2*b0)\n", "print('kP=', kp)\n", "Gyr = tf([0, b0*kp], [1, a1, b0*kp])\n", "y, t = step(Gyr, np.arange(0, 5, 0.01))\n", "ax.plot(t, y, c='k', lw=1, ls='--')\n", "\n", "ax.set_xlim(0, 5)\n", "plot_set(ax, '$t$', '$y$', 4)\n", "\n", "#fig.savefig(\"model_match.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2自由度制御" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "a1 = 2;\n", "a0 = 10;\n", "b0 = 8;\n", "\n", "P = tf( [0,b0], [1, a1, a0] )" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n", "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n", "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n", "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n" ] }, { "data": { "text/plain": [ "(0.0, 5.0)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kp = 5\n", "kd = 0.5\n", "ki = 10\n", "\n", "alpha = (0, 0.2, 0.5, 1)\n", "beta = (0, 0.2, 0.5, 1)\n", "K1 = tf([kd, kp, ki], [1, 0])\n", "\n", "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(len(alpha)):\n", " K2 = tf([(1-beta[i])*kd, (1-alpha[i])*kp, ki], [kd, kp, ki])\n", "\n", " Gyz = feedback(P*K1, 1)\n", "\n", " Td = np.arange(0, 5, 0.01)\n", " r = 1*(Td>0)\n", "\n", " z, t, _ = lsim(K2, r, Td, 0)\n", "\n", " y, _, _ = lsim(Gyz, z, Td, 0)\n", " pltargs = {'c':'k', 'ls': next(LS), 'lw':'1'} \n", " ax.plot(t, y, **pltargs)\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5) \n", "plot_set(ax, '$t$', '$y$')\n", "plt.legend(['α=β=0 (PID)',\"α=β=0.2\",\"α=β=0.5\",\"α=β=1 (I-PD)\"],loc='best')\n", "ax.set_xlim(0, 5)\n", "\n", "# fig.savefig(\"ipdcont_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 章末問題" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 1 + s^{2} \\left(- \\frac{a_{0} k_{p}}{b_{0} k_{i}^{2}} + \\frac{a_{1}}{b_{0} k_{i}} + \\frac{k_{d}}{k_{i}}\\right) + s^{3} \\left(\\frac{a_{0} k_{p}^{2}}{b_{0} k_{i}^{3}} - \\frac{a_{1} k_{p}}{b_{0} k_{i}^{2}} - \\frac{k_{d} k_{p}}{k_{i}^{2}} + \\frac{1}{b_{0} k_{i}}\\right) + \\frac{a_{0} s}{b_{0} k_{i}} + O\\left(s^{4}\\right)$" ], "text/plain": [ " ⎛ 2 ⎞ \n", " 2 ⎛ a₀⋅kₚ a₁ k_d⎞ 3 ⎜a₀⋅kₚ a₁⋅kₚ k_d⋅kₚ 1 ⎟ a₀⋅s ⎛ 4⎞\n", "1 + s ⋅⎜- ────── + ───── + ───⎟ + s ⋅⎜────── - ────── - ────── + ─────⎟ + ───── + O⎝s ⎠\n", " ⎜ 2 b₀⋅kᵢ kᵢ⎟ ⎜ 3 2 2 b₀⋅kᵢ⎟ b₀⋅kᵢ \n", " ⎝ b₀⋅kᵢ ⎠ ⎝b₀⋅kᵢ b₀⋅kᵢ kᵢ ⎠ " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sp\n", "s = sp.Symbol('s')\n", "kp, ki, kd = sp.symbols('k_p k_i k_d')\n", "a0, a1, b0 = sp.symbols('a_0 a_1 b_0')\n", "sp.init_printing()\n", "\n", "G = b0*(kp*s+ki)/(s**3 + (a1 + b0*kd)*s**2 + (a0+b0*kp)*s + b0*ki)\n", "sp.series(1/G, s, 0, 4)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left[ \\left( \\frac{\\omega_{n}^{2}}{b_{0}}, \\ \\frac{a_{0} \\omega_{n}}{2 b_{0} \\zeta}, \\ \\frac{a_{0}}{2 b_{0} \\omega_{n} \\zeta} - \\frac{a_{1}}{b_{0}} + \\frac{2 \\omega_{n} \\zeta}{b_{0}}\\right)\\right]$" ], "text/plain": [ "⎡⎛ 2 ⎞⎤\n", "⎢⎜ωₙ a₀⋅ωₙ a₀ a₁ 2⋅ωₙ⋅ζ⎟⎥\n", "⎢⎜───, ──────, ───────── - ── + ──────⎟⎥\n", "⎣⎝ b₀ 2⋅b₀⋅ζ 2⋅b₀⋅ωₙ⋅ζ b₀ b₀ ⎠⎦" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sp\n", "z, wn = sp.symbols('zeta omega_n')\n", "sp.init_printing()\n", "\n", "f1 = a0/b0/ki-2*z/wn\n", "f2 = -a0/b0*kp/(ki**2)+a1/b0/ki+kd/ki -1/(wn**2)\n", "f3 = a0/b0*kp**2/(ki**3)-a1/b0*kp/(ki**2) - kd*kp/(ki**2) + 1/b0/ki\n", "sp.solve([f1, f2, f3],[kp, ki, kd])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 付録" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAANgAAACrCAYAAAAEllKCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAjr0lEQVR4nO2daXBU17Xv/0tTazSDJIwkaLUmNFkDEgYjCQyPBMcTwXVdqcSpm+Tl2q6bclJ23ntUXPFNJbl5Tr3EVclNla8/JHm+TtnOKyd4CCYQEmwzCBAYNIJmISQkQEIWxqCxpV7vg3Ta3a0eTvfZ+/RBOr+qLugz9Vpb+7/Hs/ciZoaJiYkcIsJtgInJYsYUmImJREyBmZhIxBSYiYlETIGZmEjEFJiJiURMgZmYSCRK1oOJ6C4A/wWgGEAngK8x85jL+e0ANs1/PcDMzbJsMTEJFyRropmIHgFwHMBnAP4I4AQzvzx/Lnb+3EYAMQD+AeB+Nme9TRYZ0mowZt6v/J+I6gBccTldBWBkXlBTRBQPwAqgz/UZxcXF3Nra+vlNVVXYtm0bHA4HZmdnAQDR0dFgZszMzDi/A4DdbgcAREVFgYic3yMjIxEREeH2PTIyEtPT016/R0REICoqCna7Hcy84DsRITo6GjMzM3A4HAu+A0BMTAxmZ2edNivfx8fHYbFYEB0dvWh8cvVhYmICUVFRi8on17/TSy+99H+Z+Un4QZrAPLAB+E+X76sBjLp8nwSQDg+B7d69GxcuXJBuXLiYmJhAXFxcuM2QxmL376WXXhoIdI30QQ4iegzAr5l5xuXwEIB4l+9JAIY9713sLUal5FysLHb/1CBVYES0E0ALM/cTUQYRLSeiaAC1ADLmr7EAsDNzj+f9SnNisTIxMRFuE6Sy2P1Tg8xRxOcAfB/AdSKKAHAGwAyAo8z8ZyL6CRH9AEAkgKdk2WFiEk5kDnL8B4D/8HP+AIAD/p6hdIQXK/Hx8YEvuoNZ7P6pwZxoNjGRiKEFpgzRLlbGx8fDbYJUFrt/ajC0wExM7nQMLTBlknKxspjniIDF758aDC0wIgq3CVKJiDB08mtmsfunBkOnwGLvg42NjQW+6A5msfunBkMLzMTkTsfQAouMjAy3CVKxWCzhNkEqi90/NRhaYIu9Db/YB3EWu39qMHQONvtgdzaL3T81GFpgJiZ3OoYW2GLvg8XExITbBKksdv/UYAosjCz2DLjY/VODoQWmLAcXzZtvvgmbzYaIiAjYbDa8+eabUn4nELdv3/Z5zig2+kKNff780wNDpCEzG/azZ88eFs0bb7zB8fHxDMD5iY+P5zfeeEP4bwXi+vXrXo8byUZvqLXPl396oEcaAvgJB8jDYReRv8/zzz8vLDEUMjMz3RJd+WRmZgr/rUDcvHnT63Ej2egNtfb58k8P9EhDNQIzdBNRRh+sv78/qOMy8TURayQbvaHWvnBONBslDQ0tMBl9sNTUVK/HrVar8N8KhLc+CjP7nKANh43eSE5O9nrc075w9cGMlIaGFpgM1qxZs2B0i4jw4osv6m4Le9k16+zZs1ixYsWC5fYWiyUsNnpj1apVqtLQm396cOzYMaxatcoQaWhogYl+VerWrVvo7OzEK6+8gszMTBARrFYrkpOTUVxcLPS31OBtz5G9e/fiySefxG9/+1unjStXrsSGDRvw9a9/XXcbPRkeHsbg4KCbfVarFcuWLcOGDRvcrg3Xnipvv/02vvOd77jZuHz5cmzevFn/NAzUSQvn54UXXhDWIWVm3rt3L+/cuXPB8e9973v84osvCv0tNUxMTLh9dzgcnJ2dzfX19W7HBwYGeMWKFTw9Pa2neV557bXX+PHHH19w/Omnn+Zf/epXbsc8/dOD2dlZzsjI4NbWVrfjPT09vGrVKp6ZmRH2W7jTBzlEv4v4/vvv49FHH11w/MEHH8TBgweF/pYaPPesaG5uBjOjvLzc7XhGRgby8vJw7NgxHa3zzv79+/Hwww8vOP7QQw/hwAH3TcLCsSfH2bNnkZSUhMLCQrfj2dnZSEtLw8mTJ3W1x9ACY4FteIfDgQMHDuCRRx5ZcG7btm1obGzEp59+Kuz31NrkykcffYSdO3d6Xcn9yCOP4G9/+5tepnnFbrfjH//4Bx588MEF53bs2IG6ujq3gY1w7Oz7wQcf4Etf+pLXcw899BAOHz6sqz16bJ1dQETvE9H9Ps4fJqIBIqojIrdxeZF9sM7OTiQkJMBmsy04FxcXh+rqahw5ckTY76nBc6Tr+PHj2LJli9dra2pqcOLECT3M8kljYyOsVivuvvvuBecSExNRWVmJ2tpa57FwLFepra31m4au9umBdIExczuAWwAWFMtEtBvAC8y8hpnvY+ZZ1/Mi/0CnTp1CVVWVz/NVVVWoq6sT9ntqiI2Ndf6fmf0KbOPGjWhqagrrdtSB0nDz5s1uaejqnx7Mzs7i5MmTqK6u9np+8+bNOHPmjK7LoPRqIvqa0NoO4G0ieoeIFhSLIhPi5MmTfjPHfffdp7vAXPsonZ2diIuL8zlPk5CQgOLiYpw9e1Yv8xZw6tQpbN682ed5T4Hp3Qe7cOECVq1a5bWGBYAVK1YgKysLDQ0NutkU1iWnzPwsEf0PAD8E8DqAna7njxw54tYf2bNnD376059iZmYGU1NTAOYynsPhcJbsytyH8seNi4tDREQEjh8/jq9+9au4desWoqKinIsBY2JiEBMTg5ycHJw9exajo6NISEjA7du3wcyIjo6GxWLB+Pg4HA4HoqKiEBsb6/weERGB+Ph4TE5OYmZmxvl9amoKdrsdRITExERMTU05J84TExMxPT2NGzduwOFwICEhAR9++CE2bNiAkZERnz5VVFTg0KFDqKioQEREhNMHi8Xi1SelPxQTEwOLxaLZp9raWjz33HP45JNPvPpUVFSEuro6DA8PIykpCbdv33b2w9T+nbT4dOTIEWca+vLp3nvvxaFDh5Cbm6v676R8T0hIcMt7agj7mu75ZuHP5oP0ubFt2zacPn3a631JSUlu3xMSEty+u04y3rx5E4ODg7j//vudzU7PPftycnKwdu1aXL58GWVlZQte8/Fs7gT73dvzZmZmsHLlSgBAa2srqqurkZKS4tOnbdu24U9/+pPzuKcPnt/V2KD2+5UrVzAxMYGNGzc6Cz3P5+Xm5mLlypUYHR3FqlWrkJiY6PTPl0+ek8FafGpubkZNTY1bGnpeX1NTg8OHDzvtCjaNgIV5zx+6jyK6hDDCfNQVJaTsgjFoUROVTU1NKCkpCdin27Rpk09By8A1czU0NGD9+vV+r1+/fj0aGxslW+Wd+vp6VFZWBtyrcuPGjThz5gwA/YM/GDEN9RhFzASwDkA1EcUB+N8AdhNRMoDzRPQbAN8G8DPPe0XFB2tsbERZWVnA68rLy9HU1CTkN9UwOTkJYK5z3tTUFDBz5ObmYnh4WPfpBGCukPKcn/NGeXk5mpvn4tkr/umB3W5HW1sbSktL/V5XVFSE3t5e3fqHeowi9jFzFTO/yMwTzPxdZv4zM3/CzEXM/Cwzv8LMtzzvFTWP0tTUpEpgZWVlzsyhB0oB0t3djdTUVCxfvtzv9ZGRkSgpKdHVRgW1aVhaWuospPQMoNja2gqbzRaw1oyJiUF+fj5aWlp0scvQE82its5WmzmUzCtygtsfyjxffX09KioqVN2zfv16XUfBFEIppPTcdk9N81BBz2aioQUmog82MzOD1tZWlJSUBLw2JSUFiYmJuq0ZUkrb5ubmgE0bhfLyct0FNjY2hoGBAeTn5we8Nj09HTMzM7h27ZqufTC1TVjAFJgTEU2Mjo4OZGRkIDExUdX1paWlujXBlOHetrY2FBUVqbqnpKQEra2tMs1aQEtLCwoKClRN/BORsxYLZjhbK62trarTsKioSLc0NLTARPTB2traglqKoqfAlIn0tra2BS+n+qKgoADt7e26rrVqbW0NKg2Vpraeb0wEk4aFhYVoa2uTbNEchhaYCNrb21FQUKD6+qKiIt0Sn4gwNTWFvr4+5OXlqbpHWYw5ODgo2brPaW9vV515gbkM3NHRoVv4qdu3b2NkZASZmZmqrk9LS8PU1BQ++eQTyZYZXGAi9tULVmBKDaEHiYmJ6Orqgs1mC8rXwsJC3WwEQk9Dtc1yrbS3t2PdunWq93AhIt1qMUMLbHZ2NvBFAQg2c+Tn56Ojo0OXJtjU1FRQTRuFgoIC3WpZIHSB6dUHCyUNTYFBu8CYGe3t7apGvxSWL1+OhIQEXLlyRdNvq2F6etrQmQOYKwT6+/uRk5Oj+p67774b09PTuHbtmkTLPsfIaWhogWllcHAQiYmJWLFiRVD3KbWYHoSaOfRqIvb09CAzMzOoJiwRoaCgAN3d3RIt+xxTYCGitQ8WbOdcQa9+WGJiYlDDywp6NhGDbR4qFBQU4PLlyxIsWogpsBDR2kQMNXPoVYNNTEygq6sraBvXrFmD27dv6/JOopY01CMDT09P49KlS6pHYRWysrIwNDQk/Z1EU2Be0KsG6+npQUpKyoIlHIFQmmB62KglDfUopLq7u2G1WoPeRTgyMhK5ubnSbTS0wLRi9Bqst7c36JJX4U4QWFdXlwSL3Onq6sK6detCulePQsDQAtP6LmJHR0dIiW+z2XRpPly5cgW5ubkh3ZuXlyd9ECGUUViFnJwcDAwMSAtBpdDd3R1yGubm5qKnp0ewRe4YWmBaXpWanJzE9evXQ9qLPDIyEjk5OdJL4O7u7qCGv13JycmRLrDr168jOjp6wapkNVgsFqSnp6O3t1eCZZ/T09Nj6DQ0tMC09MEuXboEq9UacoSW3Nxc6YmvJXPoUfr29PSEXDsAQGZmpi42aknDJS0wLfT09CA7Ozvk+3NycqRnjkuXLoWcgZUaVuYbJ1pqWGBupE6PQkpLE3FJC0xLH0xLyQbIFxgz49KlSyEXAkoIodHRUZFmuaE1DfPz86Wmod1ux+XLl71uJquG9PR03Lx507lzlQwMLTAtpfPFixcNLbCrV68iMTExqB2KXCEi6SWwlgEEYG6wSGYa9vf3Iy0tLeQXEiIiIpCVlSXVRkMLTMuCS6M3EXt6ekIueRX0sFFLIZWRkSG1ANBqHyC/mWhogWlBa+JnZmbiypUr0oaZu7u7kZWVpekZsjOHiEGOS5cuCVkV4Q2t9gFLXGCh9sEcDgd6e3s1ZeDo6GhkZGSgr68v5Gf4o6enJ+RJZgWZmeOzzz7D+Pi4z22o1ZCcnIzk5GRpi0O1DsIA8kdjDS2wULl69SqWLVumecGfzCaY1iYsoI99WlclyywERDQRZc+FGVpgoe7poHWAQ0FmBu7u7kZ6erqmZ8jOvFqbX+Pj49ILgTu+iUhEu4ko5KLWX3wwItpORM/Pf9TtW6YCEbUDILd0EzHIkZaWhtu3b+PWrQV7tmpGRPMLkFdIMbOQv7PVasW1a9ekrb5WU4OtBPB/iOg0Ef0XEf3z/F7yqvAVH2z+Gb8E8AsAvwbwMnm0R0KNDyai6QDIyxyjo6OYnZ3FmjVrND2HiJCdnS3FRhG1Q1xcnLRC6urVq0hKSgp5mkMhKioKVqtV2itdAXMwM78K4FVgrjYC8CKAfyKi5+fFowZvQ3FVAEbmg0lPEVE8ACsA56jCRx99FFL4os7OTmzduhUjIyOawuKsXLkSXV1dmJycFBq+qL29HTabDTdv3sTk5OSCsDjBhPqxWq1oaWlBfn6+0PBFnZ2dePjhhzEyMhJUSCbXUD8TExNISUlBR0cHJiYmhIYvam5uRnZ2Nj755BPNYaasVivq6+uRlZWlf/giIvoRgBgArzNzOxG9DeD/AfguAC3rJVYDcH0NYRJAOlwEtmXLFpw6dcrrzf7CF/X19aG8vNwtjE0oYXEqKyvR19eHmJgYoeGLBgYGsG7dOlgsFjcbgwnJpPhQWFiIwcFBxMXFCQ1f1NvbuyANg33e2NiYMw1jY2NBRMLCF127dg15eXnON1rU+OTre1FREYaHh2GxWMISvmgQwCkAPyKijwDkAfgXAMOqf8U7QwBcUzdJwDMBiGsiKk2Qq1evCrDqc0Q0vxRkdNInJycxPDyMtWvXan7WihUrEBUVhevXrwuw7HNE9REBuX1tNQI7BuA2M/8zM29n5p9iTgghbbjgEh+sFkDG/DELADszu3UmQnkTXsT8jSsy+mFK5gh2Fa43ZNjX29uraSWCguKfjLkmUYUoIHe0OKDAmLmbmY95HNvHzCfV/ICv+GDMPAXgJ0T0AwD/E8BTC4wLITrHxYsXhczfKMjMHCKCvMvIHKIyr+KfjBpCZCtApsCkh5Bl5j7MDWgofNfl3AEAB3zdG8o8mKghegVZGTg3NxdjY2ML+hjBYrVaMTQ0hKmpKSE1omKfCIEp/hm9BsvOzkZ/fz9mZ2c119qeGHqiORRETTIriBbY+Pg4RkdHkZGRIeR5MoaZRWZeQHwa3rhxA3a73W0ARguxsbFITU2Vss2coQUWSmli9Mxx8eJFZGVlISIiQsje+4D4JpioNFT8k2WfyOASspqJi05gSh9MFDIzr0iBicwcogUmuokosv+lIGsk0dACC2WpiOgaLDU1FXa7HTdu3BDyPNfhZWXSVCsiBTY7O6tppbUrin+rV6/G2NgYPvvsM83PBMQO0SssyRosWOx2OwYGBlTHiVKDsnJYVOLLKH1F2jc4OIjk5GTNgy+uEJHQDCy6EAWWqMCCbSJevnwZq1evFjaapiByMtfoTUSRmdfVP5FNMKMXUq4sKoHJKNkAsQJzbd6IKgiys7OFrRwWmYau/onMwDKbiKJ36TK0wILtg4meA1MQJTC73Y7BwUHnMhVRfbC4uDgkJydjYGBA87NECszVP1E1mDLNoXUlgifLly9HTEyM8Fe6DC2wYBE9B6YgqvTt6+tz2wVJZGkpykaRAnP1T5R9Fy9ehM1mC+ktn0DI6IcZWmDBJqKsGkxU6evZd9C6974rojKHSIG5+ifSPtH9LwUZQ/WGFliw7+rJ6oMpG1RqbdJ59h1EDsaIyMDKKmEZfbC1a9dieHgYk5OTmp4po/+lsORqsGDeRRSdOVyJiIgQsnLY0z6R0VtEZA5ll+BQgj14w9U/Ua90yazBZIwkGlpgwfRRlAVzwcZjVouIgQ7PzKEleownIpo3ol9B8vRPRBqaNZhAgumDad3mORAiSjfPzCFiuYqCYp+WgRPRfVhP/0RkYNl9sCUlsGAyoGyBaa0hlM1QXQXmbTl6qCgrh0dGRkJ+hugmtqd/WmswGW/quJKWloZbt24J3aXL0AILpg+mRw2mJXNcuXIFy5Ytc9uTQnQETa0lsGiBefqn1b6+vj5kZGQIewPGE2WXrosXLwp7pqEFFkxzx+gC89a0EdkHA4wnMNF9MJn9LwXRzURDCyyYzrbMtjmgfZjZW+YQPVkqohAQmYE9/cvKykJ/f3/IUXNk/40B8ZsIGVpgwUzEyq7BoqKikJmZGfIws7fM67llmVa0lL5jY2PCX0Hy9M9isWD16tXo7+8P6XlmDSYYtSXd6OgoHA7Hgj3yRKNloMObwLROunqiJXN0dnYiJydH6J4U3vzTYqMeNdiSEpjaPopSsolcQu4NLc2Hjo4O5Ofnux3TEmDQG1oKgI6ODhQUFAi1x5t/WqY7urq6zCaiSNQKRnbzUCHUxHc4HOjs7FwgMNF9sPT0dIyNjeHmzZtB3+utANCKN/9CLQTsdjt6e3ul/50zMzMxNDQkbITX0AJT2wczusD6+/uRnJy8IF6Z6D4YEaGgoABtbW1B3ytDYN78y83NRVdXV9DP6unpwZo1a4TOHXojKioKubm56OzsFPI86QIjomeI6Cki+jERLfdy/jARDRBRHRG5dQDUNqH0Elh+fj46OjqCvq+9vd1r80tGyJzCwkK0twcfMqC9vV24wLz5V1BQELJ9hYWFIswKSKg2ekOqwIioAsAmZv4dgA8A/Njj/G4ALzDzGma+j5ndluSq7YPp0fkFAJvNhuHh4aDfqvclsFADDPojlBqMmb02YbXizb+8vDz09fUFXbi0tbUJ7yP6orCwMKRWgDdk7+y7G8CF+f83AngdwPddzm/HXCikMwC+w8xDrjcfPXpUVfiirq4urFixAiMjI5rD4gQK9ZOTk4OmpiYUFhaqDl90/vx5FBYWOl9jUsLiKH0lLeGLPH3KyMjAyZMnMTk5qdqnoaEhJCYmwuFwuIUrCiYkk6/wRYrPrj5ZrVY0NzejuLhY9d+ppaXFGZJKjU9awkxlZGTg4MGDmJyc1By+CMws7QPgtwCemv9/FIApL9dEAvgRgL97nnvhhRc4EDdu3ODExER2OBwBrxXB1772Nf7DH/4Q1D1bt27lw4cPLzg+OTkpyiwnFy5c4Ly8vKDuOXz4MG/dulW4Lb78e+yxx/itt94K6lkbN27k2tpaEWYF5Ny5c1xaWhrwOgA/4QAakN0Hcw1R5DU8ETPPMvPPANzleU7NJi5K00H2EL1CUVERWltbg7pHzz5Ybm4u+vv7g3q2jAEOwLd/waYhM+vaRMzPz0dXV5eQTYRkC+wdAOXz/y8BsM8lfBGIKGL+31jMhUlyQ63AioqKRNkbkGAzx+joKMbHx70GPA9lY9VAxMTEwGazBTXaKUtgvvwrKioKqo9z9epVxMbGSn+RQCEhIQGpqano6+sLfHEApAqMmRsAtBLRkwC+AODfMB++iIiSAZwnot8A+DaAn4XyG62trbqNLgHBZw5lAlevGhYIfqBD7zQsLCwMqpDy1QKQSajTHZ7oEb7oJY9D33X5v9+qR82yhLa2Njz99NMhWBYaOTk5GBgYwMTEhKrdb/01bTznxUQR7ChYc3MzSktLhdvhy7/8/Hx0d3djZmZG1Zq/trY2XQsA4PPpjocffljTcww90aymidja2qprEzE6Oho5OTmqJyKbmpp8Zl4ZTUQguGbs0NAQpqenhYVTcsWXf/Hx8UhPT1e97qqlpQXFxcUiTQtIcXExWlpaND/njhbY2NgYrl27hqysLJ0smiOYDNzU1ISysjKv52QJrKysDE1NTaqubWlpQWlpqZQmrD//CgsLceHCBZ/nXWlqakJ5ebkgq9QRTBr6w9ACC0RHRwfy8vKE7m2hhnvuuUdV4jOzX4HJoqCgAJcuXVL1Pl1zczNKSkp0sModtRl4dnYWLS0tuqfhPffcg46ODs2FoKEFFuhdxHC0zQGgoqIC9fX1Aa+7fPkyYmNjfQZkd90+QCQxMTEoKChQ1cRRajAZ+PNPbRr29PQgNTUVy5YtE2laQOLj42Gz2TS/MmVogQV6VUrvIXqFyspK1NfXB9zSIFDtJXq5iivl5eVobGwMeF1jY6M0gfnzT63AGhsbdW8eKpSVlalKQ38YWmCB+mAXLlwISw2WlpaG6OjogCtzGxsb/QpMxkSzghqBjY+Po7OzU1oG9uefzWbD2NgYhoaGfF4DhKf/pVBeXo6GhgZNzzC0wAIRztJNqcX8cfr0aWzatEkni9ypqKjA2bNn/V7T0NCAoqIi6UtAvEFEqKioCJiBz5w5g8rKSp2scqeysjJgGgbC0ALz1wcbHR3FyMiILm/ReyNQBnY4HDh16hQ2b97s8xpZfTBgLnO0trY6X5b1xunTp7Fx40ZpNgTyr7KyEh9//LHP87Ozszh9+rTfNJTJpk2b0NDQoKmlYWiB+evjKLWXjDA2aqiqqkJtba3P852dnbjrrruQlpbm8xrR27a5EhcXh9LSUpw5c8bnNWfOnJFawwbyr6amBsePH/d5vqWlBRkZGbq9IuVJUlIS8vLyNDUTDS0wf53khoYGrF+/Xkdr3Kmursa5c+d8blwTqPYC4FyOIovq6mqcOHHC6zlmxqlTp6QKLJB/NTU1qKur87ku7uTJk6iqqpJhmmqqqqpw8uTJkO83tMD8EW6BJSUl4Z577kFdXZ3X87W1tWHPHDU1NT4Fprwtvm7dOp2t+pyVK1ciKyvLZ1/2xIkTYU/Dqqoqn2moBkMLzF8f7OzZs2Hr/Crcf//9OHr06ILjzIyDBw/igQce8Hu/6D05PNmyZYtz8aUnhw4dws6dO6W+hKzGv61bt3pNw9nZWfz973/Hjh07ZJimmu3bt+Ojjz4KefW5oQXmi+vXr+PatWu6v5/myY4dO3Dw4MEFxxsaGpzt93CSnJyMsrIyfPjhhwvOHTp0KGABoAc7d+7EX//61wXH6+rqkJ6e7oxnHS7S09ORm5vrt6/oD0MLzF/b/L777hO6SWYobN++HT09PQt2+92/fz8eeeSRgPeLDv7gjd27d+O9995zOzYxMYFjx45Jrx3U+Ldz5060tLTgypUrbsfff/99PProo7JMC4pdu3Zh3759bsfU7stiaIH54sSJE6ipqQm3GYiOjsbjjz+Ot956y3mMmbF3717s2rUrjJZ9zpe//GXs27fPbcBo37592LRpE1JSUsJo2RwWiwW7du3C3r17nceYGe+8846h0vDdd991e/Hh7bffVnWvoQXm6yXe2tpaVFdX62yNd5544gm89tprzsQ/ceIEJiYmsGXLloD3qllPppWcnBzk5eXh3XffdR575ZVX8O1vf1v6b6v174knnsCrr77qnJb54IMPYLFYcO+998o0TzUlJSVYtWoVDhw4AGCuAHjllVfU3Rxo045wfn74wx8u2Gjk008/5aSkJB4bGwu4KYkeOBwO3rx5M//ud79ju93OVVVV/Pvf/17VvePj45Ktm2P//v2cn5/P4+PjvH//fs7JyWG73S79d9X653A4eP369fz666/z1NQUb9iwgd944w3J1gXH3r17uaSkhCcnJ3nv3r1cWFioatObsIvI32fPnj0LHH3rrbf4oYceEpFmwjh//jynpqby+vXr+YEHHuCZmRlV912/fl2yZXM4HA7+xje+wcXFxZyamspHjx7V5XeD8e/cuXOckpLC5eXlvGvXLp6dnZVoWfA4HA7+yle+wiUlJZySksKnTp1SJTB9F1IJwEidX4Xi4mLU19fj/Pnz+MIXvhD2wRdPiAivvvoqjhw5ApvNJj0EUChUVFTg3LlzaGtrw44dO8L2ho4viAh//OMf8eGHHyI3N1f1Il9DC8wzo9rtdhw8eBA///nPw2SRb9asWRN0bC2LxSLJmoVERkbqPqcUrH9WqxVWq1WSNdqJjIzEF7/4xaDuMVYx4YFnKfaXv/wFRUVFWLt2bZgsEoveK7H1ZrH7pwZDC8xzHuzll1/GM888EyZrxOPvTffFwGL3Tw2GFpjrO2Aff/wxurq68Nhjj4XRIrH88pe/DLcJUlns/gHYFugC4gDL3rVCRM8AmAaQDuA3zPypy7ntAJTXuQ8wc7PHvczMmJiYQFVVFZ599ll861vfkmqvnhBRwG0H7mSWiH9+X+YMW/ii+e2yfwngFwB+DeBl8vLm6XvvvYft27ejvLwc3/zmN2Waa2IiHKk1GBH9O4AxZv4FESUCaGHmrPlz/w3AHmZ+cP77WQD/xMx9LvdfBbDa5ZFHARyRZrD+bMPi8seTbVjc/u1i5gp/F8ge5lkNQFkTPom5ZqLruVGX78p5p8CY2fdyYBOT8POTQBeEM3yR6zlv501M7njCGb6oFkAGABCRBYCdmXsk22Nioit6jCLuAXADgBVzgxk/A3CUmf9MRA9hTniRAA7yXLgjE5NFg3SBmZgsZQw70UxEzxDRU0T0YyJaHm57RENEBUT0PhHdH25bREJEdxHR20TUTkT7iEje5o9hgoiiiOglIqolooPzU05eMaTA/M2fLRaYuR3ALQD6hb7Uh62Yi1haCGAMwH8PrzlSWAPg35m5BkA0AJ+73xpSYAB2A1CCRzXOf1+MyAkQFkaYeT8z3+S5vkcdgCuB7rnTYOZLzHyLiOIBHGfm876uNarAXOfIPOfPTO4cbAD2BbroToSI7gLwUwBPE5HPCB9GFZi/+TOTOwAiegzAr5lZXoymMMLMnzHzHgA/APCUr+uMKrAF82fhM8UkWIhoJ+Zei+snIvHBn41FBwCfEecNuSKOmRuIqJWInsTc/Nm/hdsm0RBRJoB1AKqJ6DQzy92oXieI6DkA3wdwnYgiAJwB8K9hNUowRPRFAP8LwFsAGMBvfV5rzoOZmMjDqE1EE5NFgSkwExOJmAIzMZGIKTATE4mYAjMxkYgpMBMTiZgCMzGRiCmwJQIRxRLRO+G2Y6lhCmzpUA2gPdxGLDVMgS0BiOgLAJ6f///mMJuzpDBflVoiENEHmNvHz9wwXkfMGmwJML+kPdIUl/6YAlsabADw8fyWecYIfLxEMAW2NBgCEAPgQWb+ONDFJuIw+2AmJhIxazATE4mYAjMxkYgpMBMTiZgCMzGRiCkwExOJmAIzMZGIKTATE4n8f5wX72cPVToqAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "k = 8\n", "G = tf([0, 125], [1, 15, 75, 125])\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "Gyr = feedback(G*k, 1)\n", "y,t = step(Gyr, np.arange(0, 5, 0.01))\n", "\n", "yslice = y[1::]\n", "tslice = t[1::]\n", "[maxId] = signal.argrelmax(yslice)\n", "\n", "ax.plot(t, y, color='k', lw=1)\n", "ax.plot(tslice[maxId], yslice[maxId], 'ko')\n", "\n", "#ax.axhline(1, color='k', linewidth=0.5) \n", "ax.set_xlim(0, 3)\n", "ax.set_ylim(0, 2)\n", "plot_set(ax, '$t$', '$y$')\n", "ax.grid(ls=':')\n", "\n", "#fig.savefig(\"tune_zn_image.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAAAVCAYAAABWtYB0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADcUlEQVRYCe2Z0XEaMRCGz54UwCQd4A6wXUGgA0wqsN1B/AhvGaeDOBUkdgexK8jEHYQOQuiA/J9yeyOEuIOz7oAZ74xYaaVdrf5dSXdHtlgsMr+Mx+Ou336tL+PzUjxi+B5nHk0mk49q9jzRazU9At0c58LyEZGF1DEUOxe/cYLEP7J7G5j8JtlzIIs2Pd0/GnCicivZNDo4gdCbz6wl9VX2Sfa5+B0TuCCo0VH9SfwUYUqSza7s3avcqP6IbXHaPXEALSWN+aUBn8QfGCiOr8gGqicNhOy15qvmYg3vxed2HJGlX1SaIAAnk1wA8gkAshJA6VxpXEfcBQBd1editJvwt01f8d+dDhaEkRbntoY6kpFscsRxxyzZlpwsHmww0YXGxI6sn5L3ZYNgJqG2fdV8YALuneN88sqsrLnSa+lx9pG9dagvpVlE0fylPxXtwlfWMXqjHzLSPypSLQo7ZypTBYHd8EHFLtZ7yUrnVP8mWf5WNlPRLnwFgwFBYPImzlfAMSDPBGrx1KX6X5VLleKsZ3BABnDZLjL7gWqtptlq09ff8rTPncDksS1fayWmJIBtUTwFLd0JGvNd5as3xtS25e+2VYiN9/xo21dw77ITyLh5iXNP6jNAY8NC2YUW5V+mdn7743g848mHXbjuWCpLDNslHG8pqW1fma9DENaSwCQ4td4d0FXBdjTAdIi6/9nqr6cfSwCTxUBbNVYh8eZq21e3ATiOyDhbVIW7W3eT5WW2q0BEPxYo2wnrdtHWjkphF76CzYwgAERsoRK/mLjwY7bZXeyUKhB5eeLICgn9ZzLYOlQvC7YNK+Ot+eo5QTJNCQLn97nXkawqYHj6eRQvvhvlYI0kv7SJkKksVLgrClKbC30mPjSh6oC9oi8ZT1xL+qazCZduK74GvrhkOtKn1Z46eG6v/I4TGNi4KdsEwTKV6PMtyL+8M7V5XCNgvDQVpDZ66M9VuIhJmHX66spOpcPYWiTdxn01xzQXa762D3g0wqcaG3swXItixxDI2kFoa7HykWP6h/gJxxFE9Jcy0EkP74dP8XsfgBxWXl7BPXNBkOOcvfzZQHQOkuR7R46nfm9oBIscZ/B2L7G2E5iML5ZNfb5oZDGB0Sst6nMg29cmOBcnT/HPGt7mERoe0GL2FeS1fglb/lV7EC/ekf4B7t3JAdn1M3YAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle \\left( -6.0, \\ 6.0\\right)$" ], "text/plain": [ "(-6.0, 6.0)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3, 3))\n", "\n", "x, y, _ = nyquist(G*k, logspace(-5,5,10000), plot=False)\n", "ax.plot(x, y, color='k')\n", "ax.plot(x, -y, ls='--', color='k')\n", "ax.scatter(-1, 0, color='k')\n", "plot_set(ax, 'Re', 'Im')\n", "\n", "ax.set_xlim(-3.5, 8.5)\n", "ax.set_ylim(-6, 6)\n", "\n", "#fig.savefig(\"tune_zn_image_open.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFEAAAAVCAYAAAA+RgJMAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC/klEQVRYCe2Y8XHTMBTGQ48BDGxgNmjpBDQbpNmAdgP4M/mPKxsAE3DtBoUJgGyQbkDIBuH7CckI2ZYVK66vd313L5Ke3nv+/PnJjjTZ7XYTXxeLRemPH/vd/BxNPFkul281PPZMj906A6XlqZp5QqUhmpipOVX7zhi8H9mu7PCX2pfSK9nuPJdoNzc+mrxhUtejEK6lJ+pvG1xaTSlY5UOxbdV+IpEhUYNC/W9qTzD6IttPjd+rvcGuFl9sU/U7iZRPVjzXTBGL67N8N9JXUoh8Jnsyiftgtb6vye+WM5X2UfqfyOFChkKtIZBJgtQwrvkz70tuvJ+rqw8u6bn0Ur5fuvzD+R5YuX+zQh2JcyUxpRkkP9d4FdgYfpeeKYaqjElufCz3oef2wmr5grfiSD+8C9uW5ZnmWB6hOH/mY5IbH8t96Lk+WOFhTiVOpV9DRAlVRsjzMM6Nc+NdnvtoM7DC2xQSeQmvG8A6gmIv5thyzo1vgDSYqS9WeCshESKalmwK4hcpThGf3PhI6oNPNWGFN0MiT6Gp2mLEuifH/8Y2yY1vyzuEvS9W3okFldgoek84YpuWrLO5D0wtR258LeGAhgyspgAhkafgSAmh8uIsQ6PGrhJrH6TANzc+SDfosA9WeNtAItXURBSI2Trx4QmFnc3Ke4LhvBsnxytX24N0uYZuk7F6QCimO0hcSU+9iaqrG+MP+EYt/yWN2Juda/DGmibYpDspW7xKNE6OV9DvML5KtH/HfQTciqky6BpZWKtEfzummJ6qzxaJp9AmOHLgANF8SGjZM0K+EfXZclHRP6zJb/aJ5wbRrZ8gta84dx9uE3Btcd2qNTsycltbL6wBFq5zac4SdYa4lh6PfXYoDDNpMTaOlOsLZyld48tyRthIs3EfWziK61WFIwDnyPDfAYQtdQ4b2z4wg2PUtfmwxP53Do4h9QKWJ/gyrwhXicRzitF5vJV6oR5+FwL1oUfcGCHwVK3c6mQbJJbh2QO6mXsnUNxwqn2jttpo/AFf5yGQfdLxFgAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle \\left( 0.0, \\ 1.0\\right)$" ], "text/plain": [ "(0.0, 1.0)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "G = tf([0, 125], [1, 5, 0])\n", "num_delay, den_delay = pade( 0.05, 2)\n", "Gdelay = G * tf(num_delay, den_delay)\n", "\n", "tdata = np.arange(0, 1, 0.01)\n", "u0 = 10\n", "udata = u0*(tdata>0) \n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "y, t, _ = lsim(Gdelay, udata, tdata, 0)\n", "\n", "# ある程度時間が経過したあとの応答を1次関数で近似する\n", "yslice = y[50::]\n", "tslice = t[50::]\n", "p = np.polyfit(tslice, yslice, 1)\n", "\n", "ax.plot(t, y, lw=1, c='k')\n", "ax.plot(t, np.poly1d( p )(t), lw=1, c='k', ls='--')\n", "\n", "plot_set(ax, '$t$', '$y$')\n", "ax.set_xlim(0, 1)\n", "\n", "#fig.savefig(\"tune_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minami/.local/lib/python3.9/site-packages/control-dev-py3.9.egg/control/timeresp.py:917: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFsAAAAVCAYAAAApZJKFAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADq0lEQVRYCe2Z7VEbMRCGDUMBTtKB6QCHCoI7AHcQ3EH4af/LQAeQDgIdhFSQwR2EDjDuwHkfId3odLoPTnf2jCc7I0ta7Yd2tVpJ58Fmsxn4ZT6fj/z+/3beP039EfPj4cCDxWLxTd0TD7WXTdlZsFG4ocqoQ4NH1p+ZyANWCtDAuapT1VcG4f0Id227L6qPVa6Fe/ZIKpup/JXCI4PShzPvVcZqr0MS4V6FG6os7RhtIEr/NpT/bWKTaAjeteo7uI2z1UHZb9VjkD4I96T+d9UP4FVDC26idq3DRZPEj84mYOf1Q7Qrlc8qOPyD8GvVORDurxAfVbAFG7ANGwu0whdAdI1tsrRfkH1kJRG5t6FUEVwKx/YyjmYcJtuHfgKuDESXxF8mN4ZnXsJfMKZ2XTpcisbQxmRV4cT3XpvwE/6duZw9lRAT6oEiJuS2mj/0R50z8RAZVZDKXyV7V2Pvssn6Ff8OD/VDri5LB2caY1uG4OgZr4JU/irZuxprYxP+mh7ph1TwGM68QdTCQt6LQip/VGiHSM3PpAOJ/KTCLYScHdvFmdYEm/DvhDTCYcKBEYJzZNWhUZVGUvnD+XTZZ94/5bwbFW5flCe163ZqW5vw7whnoziWKoSuBaIiBVL5W+mWU7lJZUGkNtuc6CtcElooiNmEf42zWa1MsSe8agHcCr949GEzlT+U13cfh/MQIaWUQVubkD0ksqPgrTyRH4LDISQKqfxRoR0gNa9fKtyTy8DZVhhPsMkENM5mtcoUsLViK+0iu3CwBjNM5Q/EddLljIrZa2ySQ5c1WtrYhL4Vzjbbp0QBT14mF8JYCB4G63Ag6Dfml6yYAwJxnXTvpItPDiFwONYFDzyNbfIUsJDPOJuVPPUGsqYmxUNnpZq7uAHrlKk6Xy1qAE5lo5Lbnuo35pes15DfyW9Ru0PK7UBfxK305A5C9XlxAjxYDAiXZJOTY2sTnAf6FHgixL2Ex1Z7gFKN89wkijkQWZjCnVR0XG8eVc9UZ/BOfvgafwzKlNiGdBF1AFHKvAkkdi55Onshq01qdB/cWBBS6ZXw2JiB+kk2OUFWzsx9iELohZB1+crx91JLPzuIBcsZ3YuyLQmVLSwsi31MGgHMh5K35k5/+cS7N462nmQH4d+BcbYMZIvV3TGh7w00B7Z91b29N919CZZNRDV+NSnMRTb6OBxyBwfILcKlJnWzRX3bUIU/szMs+6cGzXYlzvfQ6G04NqdDPuSG86A6e/j9A4t+qvKoMchuAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle \\left( 0.0, \\ 15.0\\right)$" ], "text/plain": [ "(0.0, 15.0)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAANoAAACrCAYAAAAAY4K/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAV/ElEQVR4nO2dfXBU5b3HP89mX/KO3tBrxRYFCoVmMtp6Ra44NS1YRtEGAbGML9DhxVG0eqXcOkKLudhbLEjrUB2meLWKlSuOUKxCabBaAiVapmockcub2BKRkPCWZLObTfa5fyTZJksgycnuOc8vPJ+ZTPbs2d18zpPz3fM853nOc5TWGovFkl58XgtYLOcDNmgWiwvYoFksLmCDZrG4gA2axeICNmgWiwvYoFksLpD2oCmlRiqlfq+Uuq7Dc48ppQ4rpf6ulBqWbgeLxWv86f4DWus9Sqk6QAEopS4GqrXWX0r337ZYTCHtQWujqcPjCcC9SqmZwFyt9a7kFxcWFurdu3cnlq+55hqKi4uJx+O0tLQAEAgE0FrT3NycWAaIxWIA+P1+lFKJ5YyMDHw+X6fljIwMmpqaulz2+Xz4/X5isRha6zOWlVK0tLTg9/uJx+MopQgEAjQ3NxOPxwEIBoO0tLQknJOXA4FA2rcpFovh8/l6vE0dt8HNbaqvrycUCqXl/5TKbVq2bNn/aK1nJ++z3eFW0BJorX8D/EYpdSOwQSlVqLU+3fE1kyZN4qOPPnJbrdc0NjaSlZXltcY5keAIcjyXLVt22Mn7PDsZorXeBLwBDO1inftCDmj/RjQZCY4gx9MprgdNKdXxbzYAZxy62qsZptPY2Oi1QrdIcAQ5nk5Je9VRKXUpMAIYq5R6B1ivlDoBvAOs0lrH0u1gsXiNG2cdPwWu6fDUDd29p73BbDrZ2dleK3SLBEeQ4+kU22FtsbiAkUFrP7VrOuFw2GuFbpHgCHI8nWJk0CyW/oaRQfP7Xe/ec4SEfh8JjiDH0ylGBk0p5bVCj2gfcWEyEhxBjqdTjNw6KW20hoYGrxW6RYIjyPF0ipFBs1j6G0YGLSMjw2uFHhEKhbxW6BYJjiDH0ylGBk1KfV3CSRsJjiDH0ylG7tG2jZY6JDiCHE+nGBk0i6W/YWTQpLTRgsGg1wrdIsER5Hg6xQatD0jYOSQ4ghxPpxgZtPbL1E2nvr7ea4VukeAIcjydYmTQLJb+hpFBs1XH1CHBEeR4OsUGrQ9I6GSV4AhyPJ1iZNBsGy11SHAEOZ5OMTJoUpAwW5cER5Dj6RQjgyZlCJaEuU0kOIIcT6cYuUdLGfcmoV0hwRHkeDrFyKBJGesoYZ4LCY4gx9MpRgZNSn1dwuy6EhxBjqdTjAyalDaahCquBEeQ4+kUI/doKYWemZnptUK3SHAEOZ5OMTJoto2WOiQ4ghxPpxgZNNtGSx0SHEGOp1OMDJqdbi51SHAEOZ5OMXLrpHReSrgxgwRHkOPpFCODJuX+aJFIxGuFbpHgCHI8nWJk0KTU1yV8IUhwBDmeTjEyaLaNljokOIIcT6cYuXW2jZY6JDiCHE+nGBk0KdWIaDTqtUK3SHAEOZ5OSXvQlFIjlVK/V0pd17b8JaXUfyul5iqlbuvqPVLaaBI61iU4ghxPp7hxD+s9Sqk6oL3h9RTwkNb6gFJqo1Jqm9b6SLo90oGEtqQER0i/p9aaWCxGNBolFovR3Nzc698DBgxw/PfdGlTYBKCUCgHf0lofaHt+H/Ad4PmOLy4vL+9U8AsWLKC0tJTm5uZEFSMnJ4d4PE5jYyPwzzp++1CerKwsfD5fYqrpUCiE3+9PLAeDQYLBYOIS+mAwSCgUor6+Hq01gUCAUChEOBwmHo/j9/vJzMxMLPt8PgKBACdPnqS5uRmfz0d2dnbiH6mUIjc3l2g0mpiaITc3l6ampsRyTk5O2rcpEAhQW1vb423Kzs4mEom4vk3RaJSamhqCwSCNjY0cPnyYkydP0tjYSCQSoaamhrq6OhobG2lsbOT48eOJ5aamJurr64lEIgmXcDhMJBIhGo0SjUaJRCL4fD5CoRCBQAC/309GRgaBQKDTst/vJxgM4vf7E//jUChERkYGI0aM6NHO3hVuj94tAOo6LEeAQckvKi4uZufOnV1+QF5eXqflnJycTsvJjerkO0kmLycPZk2+ADF5fcfl06dPc8EFF/Tp8yC923T69GkKCgrO6dDb5d5uUzwep76+nqqqKj777DOqqqqoqqqiurqampoaamtrqa6u5vjx49TW1hIKhRg4cCAXXngh+fn55OXlJX63/4waNYq8vDxyc3PJzs4mMzMz8ZOVlXXG4/Yvpb6ycuVKR+9zO2g1QMf/Uh7wSfKLWlpaXBPqCxImEXLL8dSpUxw4cID9+/d3+n3o0CGOHDlCXl4el1xySaefyy+/nIEDB1JQUEBGRgbDhw+noKCgX15t7WrQtNZNSqkdSqnLtNaHgBHAMjcdLH0jEonw8ccf8+GHH3b6OXXqFMOGDWPYsGF85StfYfTo0UyfPp0hQ4YwaNCgbu9RXVNTw8CBA13aCvdJe9CUUpfSGqixSql3gAeBe5VSB4A1WuvDye+RMplmbm6u1wrd0hdHrTUHDhygoqKCiooKdu7cyccff8zQoUMpKiqiqKiIefPmUVRUxODBg/vU6SyhLPuCG2cdPwWu6fDUJ8B/nus9kqqOpl+w2FvHTz75hLKyMrZu3cpbb71FVlYWY8aMYcyYMdx+++18/etfT8s2SyjLvmDkpcySgmY63TlGo1HefPNNNm7cyNatW2loaGD8+PFMnDiRJ554gi9/+ctGeErHyKBZ0ks4HOaNN95g/fr1bN68maKiIiZNmsT9999PYWGhmL43SRgZNCljHZNPw5tIu2M8Hqe8vJznn3+eDRs2MHr0aKZMmcIvf/lLLrroIo8tZZRlXzAyaFKGYEkYk/n555+zdu1annnmGbKzs5kxYwaPPfYYgwad0X3pKRLKsi8YGTQpbbRoNHpGZ7MpVFZW8uSTT/Lqq68yefJk1q1bx5VXXmlstdDkskwFRgbN4pzt27dTWlrK7t27uffee6moqGDkyJFea533GBk020brPdu3b+fRRx/lwIEDLFq0iDvvvDMxblACJpVlOjAyaHa6uZ5TWVnJD3/4Q/bt28eiRYu46667On1RmeDYE6R4OsVe+NkHvDxaHD16lLlz53L99ddTUlLC3r17mTVr1hm1ASlHNCmeTjEyaJaz09LSwsqVKyksLCQ3N5c9e/Ywb948MdXt8xUjq45Sdhq357morKxkzpw5hEIhysvLGTVqVLfvkTIXhxRPp9gjmgBisRg/+clPGD9+PLNnz+btt9/uUcgs5mDkEU3K/BHhcDjt38R79+7ljjvuoKCggA8++ICLL764V+93wzEVSPF0SrdHNKXUJKXUUDdkLP9Ea83q1asZO3YsM2fOZNOmTb0OmcUcenJE+xdgadt1ZbuBPwGvaK3TNoezlPujdXcxo1PC4TB33303H3zwAdu2betTNTFdjqlGiqdTuj2iaa2f1VpP01pfDTwOTAL+VymVtuEGpg4TSiYds+vu27ePMWPGAFBRUdHntpiUGYCleDqlJ1XHHyulliilRmit9wCvArcA16dLSkobrX32qVTxhz/8gbFjx3LPPffwwgsvpKTNkmrHdCHF0yk9qaNVAZ8DP1ZKfQl4G5gFVKfR67zjqaee4rHHHmPDhg2MHTvWax1LiulJ0LYBg7TWd7Y/oZT6Lq0zWqWFjIyMdH10SknFbE0tLS3Mnz+fLVu2sGPHDoYOTe15JykzSknxdEq3QdNa7wf2Jz33WtqMkFNf7+tJm0gkwvTp06mrq2Pnzp1nzBGZCqScWJLi6RQj9+jzoY1WV1fHjTfeSCgUYtOmTWkJGchp+0jxdIqRQevv1NbWMm7cOIYPH85vf/tbMdPrWZxjZNCktNGcBOTo0aNcd911fPvb32bVqlVp31YpIZbi6RQbtD7Q252jurqacePGMXXqVJYuXepKf6GUHViKp1OMDJqUOf7a79rSE44dO8a4ceOYPHkyixcvTqNVZ3rj6CVSPJ1iZND6G7W1tYwfP56SkhJKS0vFjHyxpA4jg9afqo4NDQ1MnDiRCRMmsGTJEtdDJqVKJsXTKTZofaC7TtZYLMbUqVP52te+xuOPP+7JkUxKR7AUT6cYGbT+0EaLx+N8//vfJxAI8Otf/9qz6qKUto8UT6f07+74NHO22bq01syfP59PP/2ULVu2eDrqQcqMYlI8nWJk0KQMwTrb3CYrVqxg69atbNu2zfOrhqXMvyLF0ylGBk3KuLeu2hUbN25kxYoVVFRUcOGFF3pg1RkpbR8pnk4x8tAhZaxjOBzutPzee+8xe/Zsfve737l2X7HuSHY0FSmeTjEyaFLq6x1n1z1y5AglJSU8/fTTXHXVVR5adUbKDMBSPJ3iSdCUUhcppQ4qpQ4rpVaeISWkjdZexQ2Hw5SUlDB37lxuvfVWj606I6UaLsXTKV5t3RygSGvd5bURUgo9MzMTrTWzZ89mxIgRLFy40GulM5ByX2gpnk5xfY9WSmUBxcB9SqnfAIu01p0m2y8rK+OnP/1pYnnBggWUlpbS3NxMNBoFWu8+Eo/HE3O2t5/da6/rZ2Vl4fP5Etc5hUIh/H5/YjkYDBIMBhP9N8FgkFAoRH19PVprAoEAoVCIcDhMPB7H7/eTmZmZWPb5fDQ1NfHiiy9SWVnJli1biEajRKNRYrEYSilyc3OJRqOJfsHc3FyampoSyzk5OWnfpnA4TCAQ6PE2ZWdnE4lEaG5uTiy7sU1HjhwhPz8/Lf+nVG+TI7TWnvwAA4CNwCPJ6xYsWKAlUFZWpgcOHKj37t3rtcpZOXbsmNcKPUKKJ/CodrC/e9YY0lqfAu4GRievkzDo9sSJE8yaNYtVq1YxfPhwr3XOipT2rhRPp3h1MqQ9Sf8KvJG83vTOS601M2fO5Oabb2bKlCle65wTrzvMe4oUT6d40Ua7HliulFoP7Ndar05+jen3R1u+fDlHjx5l9eoz1I0jEomIONEgxdMprgdNa10GXH6u15jcp1JeXs4TTzzBu+++K6K6Y/qXVjtSPJ1i5J5iahuturqa6dOn89xzzzF48GARQZPgCHI8nWLk1pnYRmtpaeH2229nxowZ3HDDDYCMdoUER5Dj6RQjg2ZiNWLJkiXEYjFKS0sTz/WpX8UlJDiCHE+nGDkEw7Q22h//+EdWr17Nrl27Oo1akTD4WYIjyPF0ipFBM4mqqipmzJjB2rVrz7gRoKltyY5IcAQ5nk4xsupoykQtsViM2267jfvvv5/i4uIz1ufm5rov1UskOIIcT6cYGbSWlhavFQB45JFHyM/P5+GHH+5yvYR2hQRHkOPpFCOrjiYEbePGjaxbt46//e1vZz31LGESIQmOIMfTKUYGzWsOHjzInDlzeO211ygoKPBax9IPMLLq6GUbLRKJMG3aNBYuXJi4l/TZkNCukOAIcjydYmTQvKw6PvTQQ1x22WX84Ac/6Pa1Eqo7EhxBjqdTjKw6ehW0l156ibKyMnbt2tWj080Sdg4JjiDH0ylGBs0L9uzZwwMPPEBZWRkDBgzwWsfSzzCy6uj2WMeGhgamTp3Kz372M6644ooevy8nJyd9UilCgiPI8XSKkUFzcwiW1pp77rmHK6+8klmzZvXqvSaOyUxGgiPI8XSKkVVHN9toq1at4v3336eioqLXw4Ci0Sh5eXlpMksNEhxBjqdTjAyaW1RUVLB48WJ27NjR7y/TsHiLkVVHN9pox44dY9q0aaxevdrx5DoS2hUSHEGOp1OMDJpO85TgLS0tTJ8+nTvuuIOSkhLHn2Pa5TxdIcER5Hg6xcigpbthvGjRIqD1Ys6+0D4pqMlIcAQ5nk4579poa9as4eWXX+add94Rcwtfi3yMDFq62mjbt29n/vz5vPXWW3zhC1/o8+dJOIEiwRHkeDrFyKpjOjh48CC33nora9asobCw0Gsdy3mGkUFL9fwRJ06c4Oabb2bhwoVMmDAhZZ8r4eZ5EhxBjqdTjAxaKmloaGDixIlMmDCB++67z2sdy3mKkUFL1f3RmpqamDJlCiNGjGD58uUp+cyOZGVlpfwzU40ER5Dj6RQjg5aKGZGampr43ve+R2ZmJs8880xaZsKVMLuuBEeQ4+kUI7eur220xsZGbrnlFrTWvPzyy2m7g2j7zfJMRoIjyPF0ipFB6wunTp3ipptuIj8/n3Xr1hEKhbxWsljMDJrTjuR9+/YxZswYRo0axYsvvpj2MZMSQizBEeR4OsXIoDmpr2/evJlrr72WBx98kF/96leujPqQcFN7CY4gx9MpRm5db9podXV1/OhHP+L111/nlVde4Zvf/GYazTrT0NBg/NkyCY4gx9MpRh7RduzY0e1rYrEYzz77LF/96leJRCJUVla6GjKAn//8567+PSdIcAQ5nkCxkzepdF+S0uUfVWoe0AQMAp7UWp9MWq/P5vWPf/yDtWvX8vTTTzNkyBCWLl3K1VdfnXbnrlBKpf2Snr4iwRHEefa6/8mLe1h/A7haa32XUupaYDHwH8mvKy8vJxaLcfz4cQ4dOsT+/fv5y1/+QlVVFZMnT2bdunWMHj3abX2LxRGuH9GUUv8FNGitH1dK5QIfaq2HJL3mCPDFDk/9GXjbPcseU4yZXh0pxnxHkOP5Xa31N3r7Ji9OhnwR+Gvb4wit1cdOaK0vTn7OYjGER528yYuTIUeB9ouP8oBqDxwsFlfxImjrgSvaHhcBr3ngYLG4ildnHRcAJ4DBwC+01idcl7BYXMSToFks5xuejgw5V3+aUupbQHsH2SatdaX7hgmX7vr9tgIjgcPAWK21J7fDUUqNBJYBy7XWf05aZ1J5ntWzbb2n5amUygeeAwqBvcB0rXVDh/W9L0uttSc/wDeAF9oeX0trFbJ9XSatZyYVEAK20Xb0Ncmz7blJtPYLelaWST4vAcVJzxlTnufyNKU8gZuAAW3ltRa4r69l6eUQrEnAR22P329bbucaoEa3EqX1LOVgN+U6MImzewJ8C3hVKbVeKXWRe1pnpasbjZlUnu2c7YZonpen1vp1rfUp3ZqsCuCzDqsdlaWXQfsicLztcXJ/Wsd1Xa13k3N5orV+ALgUeA9Y465ajzGpPM+JgeV5GZ3PjDsqSy+Ddq7+tI7rulrvJt32+2mtW7TWS4B8N8V6gUnl2S2mlKdS6hZamwodp852VJZeBu2M/jSl1AVKqQCwHbgEQCkVAmJa6wOeWJ7bE6WUr+13Jq31dWMwtDzPwMTyVEp9h9bhgX9XSl3S17L09PR+cn8asAT4s9b6FaXUjbTu2BnAZq31e6Z5An8CyoEy4P+ANVrrOg89L6W18f4GsILWM3smlmeXnhhSnkqpB2kd6H6M1oPRu0AzfShL249msbiAkRd+Wiz9DRs0i8UFbNAsFhewQbNYXMAGzWJxARs0i8UFbNAsFhewQevnKKUylVLrvfY437FB6/+MBfZ4LXG+Y4PWj1FKjQcebnv87x7rnNfYIVj9HKXUm7TORdi/b0BmOPaI1o9pGwGfYUPmPTZo/Zt/A/7adonHVV7LnM/YoPVvjgJB4Aat9V+7e7Elfdg2msXiAvaIZrG4gA2axeICNmgWiwvYoFksLmCDZrG4gA2axeICNmgWiwv8P6eO1GLVGB+fAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "G = tf([0, 125], [1, 15, 75, 125])\n", "\n", "tdata = np.arange(0, 2, 0.01)\n", "u0 = 10\n", "udata = u0*(tdata>0) \n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "y, t, _ = lsim(G, udata, tdata, 0)\n", "\n", "ax.plot(t, y, lw=1, c='k')\n", "#ax.plot(t, np.poly1d( p )(t), lw=1, c='k', ls='--')\n", "\n", "plot_set(ax, '$t$', '$y$')\n", "ax.set_xlim(0, 2)\n", "ax.set_ylim(0, 15)\n", "\n", "#fig.savefig(\"tune_step2.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 4 }