{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Chapter 12: Frequency Domain Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 12.01: denominator_polynomial.sci" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "//denominator polynomial//\n", "s=poly(0,'s'); //Defines s as polynomial variable\n", "F=syslin('c',[225/((s+6)*s)]); //Creates transfer function in forward path\n", "B=syslin('c',(1+0*s)/(1+0*s)); //Creates transfer function in backward path\n", "CL=F/.B //Calculates closed-loop transfer function\n", "// compare CL with Wn^2/(s^2+2*zeta*Wn+Wn^2)\n", "y=denom(CL) //extracting the denominator of CL\n", "z=coeff(y) //extracting the coefficients of the denominator polynomial\n", "//Wn^2=z(1,1) ,comparing the coefficients\n", "Wn=sqrt(z(1,1)) // Wn=natural frequency\n", "//2*zeta*Wn=z(1,2)\n", "zeta=z(1,2)/(2*Wn) // zeta=damping factor\n", "Mr=1/(2*zeta*sqrt(1-zeta^2))\n", "Wr=Wn*sqrt(1-zeta^2) \n", "Wc=Wn*sqrt((1-2*zeta^2)+sqrt(4*zeta^4-4*zeta^2+2))\n", "BW=Wc //BANDWIDTH" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 12.02: denominator_polynomial.sci" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "//denominator polynomial//\n", "s=poly(0,'s'); //Defines s as polynomial variable\n", "F=syslin('c',[36/((s+8)*s)]); //Creates transfer function in forward path\n", "B=syslin('c',(1+0*s)/(1+0*s)); //Creates transfer function in backward path\n", "CL=F/.B //Calculates closed-loop transfer function\n", "// compare CL with Wn^2/(s^2+2*zeta*Wn+Wn^2)\n", "y=denom(CL) //extracting the denominator of CL\n", "z=coeff(y) //extracting the coefficients of the denominator polynomial\n", "//Wn^2=z(1,1) ,comparing the coefficients\n", "Wn=sqrt(z(1,1)) // Wn=natural frequency\n", "//2*zeta*Wn=z(1,2)\n", "zeta=z(1,2)/(2*Wn) // zeta=damping factor\n", "Mr=1/(2*zeta*sqrt(1-zeta^2))\n", "Wr=Wn*sqrt(1-zeta^2) \n", "Wc=Wn*sqrt((1-2*zeta^2)+sqrt(4*zeta^4-4*zeta^2+2))\n", "BW=Wc //BANDWIDTH" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 12.03: denominator_polynomial.sci" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "//denominator polynomial//\n", "s=poly(0,'s'); //Defines s as polynomial variable\n", "F=syslin('c',[81/(s^2+7*s)]); //Creates transfer function in forward path\n", "B=syslin('c',(1+0*s)/(1+0*s)); //Creates transfer function in backward path\n", "CL=F/.B //Calculates closed-loop transfer function\n", "// compare CL with Wn^2/(s^2+2*zeta*Wn+Wn^2)\n", "y=denom(CL) //extracting the denominator of CL\n", "z=coeff(y) //extracting the coefficients of the denominator polynomial\n", "//Wn^2=z(1,1) ,comparing the coefficients\n", "Wn=sqrt(z(1,1)) // Wn=natural frequency\n", "//2*zeta*Wn=z(1,2)\n", "zeta=z(1,2)/(2*Wn) // zeta=damping factor\n", "Mr=1/(2*zeta*sqrt(1-zeta^2))\n", "Wr=Wn*sqrt(1-zeta^2) \n", "Wc=Wn*sqrt((1-2*zeta^2)+sqrt(4*zeta^4-4*zeta^2+2))\n", "BW=Wc //BANDWIDTH" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 12.04: denominator_polynomial.sci" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "//denominator polynomial//\n", "//Defines s as polynomial variable\n", "s=poly(0,'s');\n", "//Creates transfer function in forward path\n", "F=syslin('c',[81/((s+18)*s)]); \n", "//Creates transfer function in backward path\n", "B=syslin('c',(1+0*s)/(1+0*s));\n", "//Calculates closed-loop transfer function\n", "CL=F/.B \n", "// compare CL with Wn^2/(s^2+2*zeta*Wn+Wn^2)\n", "y=denom(CL)//extracting the denominator of CL\n", "//Extracting the coefficients of the denominator polynomial\n", "z=coeff(y) \n", "//Wn^2=z(1,1) ,comparing the coefficients\n", "Wn=sqrt(z(1,1)) \n", "//2*zeta*Wn=z(1,2)\n", "zeta=z(1,2)/(2*Wn) \n", "// zeta=damping factor\n", "//NOTE= here sqrt(1-2zeta^2) becomes complex so the other solution is Wr=0 & Mr=1\n", "Mr=1 \n", "Wr=0 \n", "Wc=Wn*((1-2*zeta^2)+sqrt(4*zeta^4-4*zeta^2+2))\n", "BW=Wc //BANDWIDTH" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 12.05: denominator_polynomial.sci" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "//denominator polynomial//\n", "ieee(2);\n", "syms k a;\n", "num=k ;\n", "den=s*(a+s);\n", "G=num/den;\n", "disp(G,'G(s)=')\n", "H=1;\n", "CL=G/.H;\n", "CL=simple(CL);\n", "disp(CL,'C(s)/R(s)=') //Calculates closed-loop transfer function\n", "// compare CL with Wn^2/(s^2+2*zeta*Wn+Wn^2)\n", "[num,den]=numden(CL); //extracts num & den of symbolic function (CL)\n", "cof_a_0 = coeffs(den,'s',0); // coeff of den of symbolic function (CL)\n", "cof_a_1 = coeffs(den,'s',1);\n", "//Wn^2= cof_a_0,comparing the coefficients\n", "Wn=sqrt(cof_a_0) \n", "//cof_a_1=2*zeta*Wn\n", "zeta=cof_a_1/(2*Wn)\n", "Mr=1/(2*zeta*sqrt(1-zeta^2)) //----------1)\n", "printf('Given ,Mr=1.25 \n');\n", "//On solving eq (1) we get k=1.25a^2-------2\n", "printf('k=1.25*a^2 \n')\n", "Wr=Wn*sqrt(1-2*zeta^2) //---------------3)\n", "printf('Given, Wr=12.65 \n') ;\n", "//on soving eq (3),we get 2k-a^2=320-----------4)\n", "printf('2k-a^2=320 \n')\n", "//now eq 2 &4 can be simultaneously soved to take out values of k &a\n", "// Let k=x & a^2=y\n", "A=[1,-1.25;2,-1]; // coefficient matrix\n", "b=[0;320];\n", "m=A\b;\n", "x=m(1,1);\n", "k=x\n", "y=m(2,1);\n", "a=sqrt(y)\n", "Wn=dbl(eval(Wn)); \n", "disp(Wn,'Wn=')\n", "zeta=dbl(eval(zeta));\n", "disp(zeta,'zeta=')\n", "Ts=4/(zeta*Wn) ;\n", "disp(Ts,'Settling Time (Ts)=')\n", "Wc=Wn((1-(2*zeta^2))+sqrt(4*zeta^4-4*zeta^2+2))\n", "disp(Wc,'BW=')" ] } ], "metadata": { "kernelspec": { "display_name": "Scilab", "language": "scilab", "name": "scilab" }, "language_info": { "file_extension": ".sce", "help_links": [ { "text": "MetaKernel Magics", "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" } ], "mimetype": "text/x-octave", "name": "scilab", "version": "0.7.1" } }, "nbformat": 4, "nbformat_minor": 0 }