summaryrefslogtreecommitdiff
path: root/Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb')
-rw-r--r--Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb601
1 files changed, 601 insertions, 0 deletions
diff --git a/Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb b/Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb
new file mode 100644
index 0000000..f34542d
--- /dev/null
+++ b/Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb
@@ -0,0 +1,601 @@
+{
+"cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 3: BLOCK DIAGRAMS"
+ ]
+ },
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_10: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.10\n",
+"//page 43\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 G5 H1 H2 H3;\n",
+"a=parallel(G3,G4);\n",
+"//shift off the take off point before block 'a' to after block 'a'\n",
+"b=1/a;\n",
+"d=1;\n",
+"c=G2/(1+G2*d);\n",
+"e=parallel(H1,b);\n",
+"f=series(c,a);\n",
+"g=series(H2,e);\n",
+"h=f/(1+f*g);\n",
+"h=simple(h);\n",
+"i=series(h,G1);\n",
+"y=i/(1+i*H3);\n",
+"y=simple(y);\n",
+"disp(y,'C(s)/R(s)=')"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_11: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.11\n",
+"//page 45\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 H1 H2 H3;\n",
+"a=G4/.H1;\n",
+"//shift the summing point after block G3 towards left of block G3\n",
+"b=G2/G3;\n",
+"c=series(a,G3);\n",
+"d=c/(1+c*H2);\n",
+"d=simple(d)\n",
+"//shift the summing point before block G1 towards right of block G1\n",
+"e=G1*H3;\n",
+"f=d/(1+d*e);\n",
+"f=simple(f)\n",
+"g=parallel(G1,b);\n",
+"g=simple(g);\n",
+"y=series(g,f)\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=');"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_12: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.12\n",
+"//page 47\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 H1 H2 H3;\n",
+"//shift the summing point before block G1 towards right of block G1\n",
+"//shift the summing point after block G3 towards left of block G3\n",
+"a=G2/G1\n",
+"b=H3/G3;\n",
+"c=G1/.H1\n",
+"d=G3/.H2\n",
+"e=series(G4,d)\n",
+"//shift the summing point after block e towards left of block e\n",
+"g=1/e\n",
+"f=series(a,g);\n",
+"f=simple(f)\n",
+"h=parallel(f,1);\n",
+"h=simple(h)\n",
+"i=e/(1+e*b);\n",
+"i=simple(i)\n",
+"j=series(c,h);\n",
+"y=series(j,i);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=');"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_13: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.13\n",
+"//page 49\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 H1 H2;\n",
+"//shift the summing point after block H2 towards right of block H2\n",
+"//shift the summing point after block H1 towards right of block H2\n",
+"a=H1*H2\n",
+"b=parallel(G1,G2)\n",
+"c=G4/.a\n",
+"d=series(G3,c)\n",
+"e=d/(1+d*H2);\n",
+"e=simple(e)\n",
+"f=series(b,e)\n",
+"y=f/(1+f*a);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=');\n",
+"\n",
+""
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_14: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.14\n",
+"//page 50\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 H1 H2 R D;\n",
+"a=parallel(G1,G2)\n",
+"b=G3/.H2\n",
+"c=series(a,b)\n",
+"//inorder to determine C(s)/R(s) consider D=0\n",
+"d=series(c,G4);\n",
+"y=d/(1+d*H1);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=')\n",
+"// now consider R=0 for calculating C(s)/D(s)\n",
+"e=series(c,H1)\n",
+"z=G4/(1+G4*e);\n",
+"z=simple(z);\n",
+"disp(z,'C(s)/D(s)=');\n",
+"x=(y*R)+(z*D);\n",
+"x=simple(x);\n",
+"printf('total output');\n",
+"disp(x,'C(s)')"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_15: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.15\n",
+"//page 52\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 H1 H2 H3 D1 D2 R;\n",
+"a=G2/.H2\n",
+"b=a/(1+a*H3);\n",
+"b=simple(b)\n",
+"//inorder to determine C(s)/R(s) consider D1=0,D2=0\n",
+"c=series(b,G1)\n",
+"y=c/(1+c*H1);\n",
+"y=simple(y)\n",
+"disp(y,'C(s)/R(s)');\n",
+"// now consider R=0,D2=0 for calculating C(s)/D1(s)\n",
+"d=series(G1,H1);\n",
+"z=b/(1+b*d);\n",
+"z=simple(z)\n",
+"disp(z,'D1(s)/R(s)');\n",
+"// now consider R=0,D1=0 for calculating C(s)/D2(s)\n",
+"e=G1*(-H1);\n",
+"f=series(b,e);\n",
+"x=f/(1+f);\n",
+"x=simple(x);\n",
+"disp(x,'D2(s)/R(s)');\n",
+"out=(y*R)+(z*D1)+(x*D2);\n",
+"out=simple(out);\n",
+"disp(out,'C(s)');"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_1: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.1\n",
+"//page 32\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 H1;\n",
+"// shifting take off point after block G2 to a position before block G2\n",
+"a= G2*H1;\n",
+"b=parallel(G2,G3);\n",
+"//shifting take off point before (G2+G3) to After (G2+G3)\n",
+"c=a/b;\n",
+"m=1;\n",
+"d=b/(1+m*b);\n",
+"e=series(G1,d);\n",
+"y=(e/(1+c*e));\n",
+"y=simple (y);\n",
+"disp (y,'C(s)/R(s)=');"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_2: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.2\n",
+"//page 34\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 H1;\n",
+"// shifting take off point before block G1 to a position after block G1\n",
+"a=G1*H1;\n",
+"b=parallel(G1,G2);\n",
+"c=G3/.a\n",
+"y=series(b,c);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=')"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_3: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.3\n",
+"//page 35\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 G5 G6 H1 H2;\n",
+"//shift the takeof point placed before G2 towards right side of block G2\n",
+"a= G5/G2;\n",
+"b=parallel(G3,G4);\n",
+"c=series(b,G6);\n",
+"d=parallel(a,c);\n",
+"e=series(G1,G2);\n",
+"l=series(H1,d);\n",
+"g=e/.H2\n",
+"y=g/(1+g*l)\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=')"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_4: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.4\n",
+"//page 36\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 H1 H2;\n",
+"//shift the take off point placed before G1 to after block G1\n",
+"a=G3/G1;\n",
+"b=parallel(a,G2);\n",
+"//shift the take off point before block b towards right side of same block\n",
+"c=1/b;\n",
+"d=series(H1,c);\n",
+"e=series(G1,b);\n",
+"g=parallel(H2,d);\n",
+"y=e/(1+e*g);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=')"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_5: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.5\n",
+"//page 37\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 H1 H2 H3;\n",
+"//shift the take off point placed before G3 to after block G3\n",
+"a=H3/G3;\n",
+"b=G3/.H2;\n",
+"c=series(G2,b);\n",
+"//shift the summing point after block G1 to before block G1\n",
+"d=a/G1;\n",
+"e=G1/.H1;\n",
+"f=series(e,c);\n",
+"y=f/(1+f*d);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=')"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_6: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.6\n",
+"//page 38\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 H1;\n",
+"a=parallel(G1,G3);\n",
+"b=G2/.H1;\n",
+"y=series(a,b);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=');"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_7: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.7\n",
+"//page 39\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 H1 H2;\n",
+"//shift the take off point placed before G2 to after block G2\n",
+"a=G2*H1;\n",
+"//shift the take off point placed before G2 to after block G1 and shift the summing point before block G2 to before block G2\n",
+"//interchange consecutive summing point and shift the take off point placed before H2 to after block H2\n",
+"b=G2*H2;\n",
+"c=b*H1;\n",
+"d=parallel(G3,G2);\n",
+"e=1/.b\n",
+"f=series(d,e);\n",
+"g=G1/.a\n",
+"h=series(g,f);\n",
+"y=h/(1-h*c);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=')"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_8: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.8\n",
+"//page 41\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 G5 H1 H2;\n",
+"//shift the summing point before block G5 towards left of block G5\n",
+"a=G2*G5;\n",
+"b=G4/.H1;\n",
+"c=series(G5,H2);\n",
+"d=series(b,G3);\n",
+"e=d/(1+d*c);\n",
+"e=simple(e)\n",
+"f=parallel(G1,a);\n",
+"y=series(f,e);\n",
+"y=simple (y);\n",
+"disp(y,'C(s)/R(s)=');"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2_9: Transfer_Function.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Caption:transfer_function\n",
+"// example 3.2.9\n",
+"//page 42\n",
+"// we have defined parallel and series function which we are going to use here\n",
+"//exec parallel.sce;\n",
+"//exec series.sce;\n",
+"syms G1 G2 G3 G4 G5 H1 H2 H3;\n",
+"//shift the take off point placed before G3 to after block G3\n",
+"a=G5/G3;\n",
+"b=G1/.H1;\n",
+"c=series(b,G2);\n",
+"d=G3/.H2;\n",
+"e=parallel(G4,a);\n",
+"e=simple(e);\n",
+"f=series(c,d);\n",
+"g=series(f,e);\n",
+"g=simple(g);\n",
+"y=g/(1+g*H3);\n",
+"y=simple(y);\n",
+"disp (y,'C(s)/R(s)=');"
+ ]
+ }
+],
+"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
+}