{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A = [[ 0. 0. 1. 0. ]\n", " [ 0. 0. 0. 1. ]\n", " [-200. 100. -1.8 0.9]\n", " [ 100. -100. 0.9 -0.9]]\n", "\n", "B = [[0.]\n", " [0.]\n", " [0.]\n", " [1.]]\n", "\n", "C = [[1. 0. 0. 0.]\n", " [0. 1. 0. 0.]]\n", "\n", "D = [[0.]\n", " [0.]]\n", "\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "from scipy import signal\n", "import numpy as np\n", "import control as ctl\n", "import scipy.linalg as la\n", "from control import (TransferFunction, step_response, bode_plot,\n", " impulse_response, series, feedback, rlocus,\n", " margin, nyquist_plot)\n", "\n", "\n", "m1 = 1\n", "m2 = 1\n", "b1 = 0.9\n", "b2 = 0.9\n", "k1 = 100\n", "k2 = 100\n", "\n", "A = np.array([[0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0], [-(k1+k2)/m1, k2/m1, -(b1+b2)/m1, b2/m1 ],[k2/m2, -k2/m2, b2/m2, -b2/m2 ]])\n", "\n", "B = np.array([[0.0], [0.0], [0.0],[1/m2]])\n", "\n", "C = np.array([[1.0, 0.0, 0.0, 0.0],[0.0, 1.0, 0.0, 0.0]])\n", "\n", "D = np.array([[0.0], [0.0]])\n", "\n", "sys = ctl.ss(A,B,C,D)\n", "print(sys)\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1.17811529+16.1373927j -1.17811529-16.1373927j\n", " -0.17188471 +6.17794924j -0.17188471 -6.17794924j]\n", "[-1.17811529+16.1373927j -1.17811529-16.1373927j\n", " -0.17188471 +6.17794924j -0.17188471 -6.17794924j]\n" ] } ], "source": [ "poles_sys= ctl.pole(sys)\n", "print(poles_sys)\n", "\n", "# alternativa\n", "eigvals, eigvecs = la.eig(A)\n", "print(eigvals)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-111.11111111+0.j]\n", "[-0.9+14.11346874j -0.9-14.11346874j]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "CX1 = np.array([[1.0, 0.0, 0.0, 0.0]]) # saída X1\n", "CX2 = np.array([[0.0, 1.0, 0.0, 0.0]]) # saída X2\n", "D0 = np.array([0.0])\n", "\n", "sys_X1U = ctl.ss(A,B,CX1,D0) # não colocado\n", "sys_X2U = ctl.ss(A,B,CX2,D0) # colocado\n", "\n", "\n", "w = np.linspace(0.1, 100, 1001)\n", "\n", "plt.figure()\n", "mag, phase, omega = bode_plot(sys_X1U, omega=w, dB=True)\n", "mag, phase, omega = bode_plot(sys_X2U, omega=w, dB=True)\n", "plt.legend([\"X1/U\", \"X2/U\"])\n", "plt.title(\"Bode plot FRFs\")\n", "plt.show\n", "\n", "\n", "\n", "zeros_sys= ctl.zero(sys_X1U)\n", "print(zeros_sys)\n", "\n", "zeros_sys2= ctl.zero(sys_X2U)\n", "print(zeros_sys2)\n" ] } ], "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }