diff options
105 files changed, 39966 insertions, 0 deletions
diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch11_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch11_1.ipynb new file mode 100644 index 00000000..2c6f71ae --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch11_1.ipynb @@ -0,0 +1,340 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter11 - Properties of integers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex11.2 Pg 319" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Division Algorithm\n", + "a and j have equal values.Hence division algorithm is proved\n" + ] + } + ], + "source": [ + "from numpy import divide\n", + "print 'Division Algorithm'\n", + "a=4461# #dividend\n", + "b=16# #divisor\n", + "r=(a%b) #remainder\n", + "k=divide(a,b) #quotient\n", + "j=b*k+r #dividend=divisor*quotient+remainder\n", + "\n", + "a=-262# #dividend\n", + "b=3# #divisor\n", + "k=divide(a,b) #remainder\n", + "r=(a%b) #quotient\n", + "j=b*k+r #dividend=divisor*quotient+remainder\n", + "print 'a and j have equal values.Hence division algorithm is proved'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex11.4 Pg 320" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Divisibility and Primes\n", + "prime numbers less than 50 are\n", + "the prime factorisation of 21,24 and 1729 respectively are:\n", + "[3, 7] [2, 2, 2, 3] [7, 13, 19]\n" + ] + } + ], + "source": [ + "from math import floor\n", + "print 'Divisibility and Primes'\n", + "x=50#\n", + "print 'prime numbers less than 50 are'\n", + "def get_primes(n):\n", + " numbers = set(range(n, 1, -1))\n", + " primes = []\n", + " while numbers:\n", + " p = numbers.pop()\n", + " primes.append(p)\n", + " numbers.difference_update(set(range(p*2, n+1, p)))\n", + " return primes\n", + "\n", + "y=get_primes(x)\n", + "\n", + "print 'the prime factorisation of 21,24 and 1729 respectively are:'\n", + "\n", + "def factors(n):\n", + " primfac = []\n", + " d = 2\n", + " while d*d <= n:\n", + " while (n % d) == 0:\n", + " primfac.append(d) # supposing you want multiple factors repeated\n", + " n //= d\n", + " d += 1\n", + " if n > 1:\n", + " primfac.append(n)\n", + " return primfac\n", + "\n", + "k=factors(21)\n", + "l=factors(24)\n", + "n=factors(1729)\n", + "print k,l,n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex11.5 Pg 321" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the GCD of the following numbers is:\n", + "gcd(12,18) = [6]\n", + "gcd(12,-18) = [6]\n", + "gcd(12,-16) = [4]\n", + "gcd(29,15) = [1]\n", + "gcd(14,49) = [7]\n" + ] + } + ], + "source": [ + "from numpy import int32\n", + "import numpy as np\n", + "print 'the GCD of the following numbers is:'\n", + "def gcd(a, b):\n", + " a, b = np.broadcast_arrays(a, b)\n", + " a = a.copy()\n", + " b = b.copy()\n", + " pos = np.nonzero(b)[0]\n", + " while len(pos) > 0:\n", + " b2 = b[pos]\n", + " a[pos], b[pos] = b2, a[pos] % b2\n", + " pos = pos[b[pos]!=0]\n", + " return abs(a)\n", + "print \"gcd(12,18) = \",gcd([12],[18])\n", + "print \"gcd(12,-18) = \",gcd([12],[-18])\n", + "print \"gcd(12,-16) = \",gcd([12],[-16])\n", + "print \"gcd(29,15) = \",gcd([29],[15])\n", + "print \"gcd(14,49) = \",gcd([14],[49])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex11.6 Pg 322" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Euclidean Algorithm\n", + "540.0\n", + "168.0\n", + "36.0\n", + "24.0\n", + "for the equation 540*x+168*y=12,we are given\n", + "x=5 and y=16\n" + ] + } + ], + "source": [ + "from numpy import floor\n", + "print 'Euclidean Algorithm'\n", + "a=[540,168,36,24]#\n", + "b=[168,36,24,12]#\n", + "thegcd=[]\n", + "for i in range(0,4):\n", + " thegcd.append(gcd(a,b))\n", + " \n", + "\n", + "\n", + "def myf(dividend,divisor):\n", + " quotient=floor(dividend/divisor)#\n", + " rem=(dividend%divisor)#\n", + " k=quotient*divisor+rem#\n", + " print k\n", + " if(rem!=0):\n", + " myf(divisor,rem) \n", + "\n", + "\n", + "\n", + "myf(540,168)\n", + "\n", + "print 'for the equation 540*x+168*y=12,we are given'\n", + "a=540#\n", + "b=168#\n", + "c=24#\n", + "d=36#\n", + "d=a-3*b# #Eqn (1)\n", + "c=b-4*d# #Eqn (2)\n", + "k=d-1*c# #Eqn (3)\n", + "5*d-1*b# #Eqn (4)\n", + "k=d-b+4*d# #substituting value of c in Eqn (3) from Eqn (2) \n", + "r=5*a-16*b# \n", + "if(r==k):\n", + " print 'x=5 and y=16'# \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex11.9 Pg 324" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gcd(a,b) = [792]\n", + "lcm(a,b) = 183783600\n" + ] + } + ], + "source": [ + "a=2**4*3**3*7*11*13\n", + "b=2**3*3**2*5**2*11*17\n", + "d=gcd([a],[b])\n", + "print \"gcd(a,b) =\",d\n", + "lcm1=2**4*3**3*5**2*7*11*13*17 #lcm is the product of those primes which appear in either a or b\n", + "print \"lcm(a,b) =\",lcm1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex11.19 Pg 332" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "solving for the congruence equation 8x @ 12(mod 28) ,where @ is the sign for congruence\n", + "k is the unique solution of the equation \n", + "solutions of the original equation at d=4\n", + "[5]\n", + "[12]\n", + "[19]\n", + "[26]\n" + ] + } + ], + "source": [ + "print 'solving for the congruence equation 8x @ 12(mod 28) ,where @ is the sign for congruence'\n", + "a=8#\n", + "b=12#\n", + "m=28#\n", + "d= gcd([a],[m])#\n", + "a1= a/d#\n", + "b1= b/d#\n", + "m1= m/d#\n", + " \n", + "def f(x):\n", + " yd= (a1*x)-b1\n", + " return yd\n", + " \n", + "print 'k is the unique solution of the equation '\n", + "for i in range(0,m1):\n", + " x=i#\n", + " p=f(x)#\n", + " if((p%m1) == 0):\n", + " k=x\n", + " break#\n", + "\n", + "s1=[k]#\n", + "s2=k+m1#\n", + "s3=k+(m1*2)#\n", + "s4=k+(m1*3)#\n", + "print 'solutions of the original equation at d=4'\n", + "print s1\n", + "print s2\n", + "print s3\n", + "print s4" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch12_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch12_1.ipynb new file mode 100644 index 00000000..868f3b66 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch12_1.ipynb @@ -0,0 +1,157 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter12- Algebric systems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex12.4 Pg 365" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "since a and b are not equal so subtraction is non-commutative on Z(set of integers)\n", + "since g and k are not equal matrix multiplication is non-commutative\n", + "since h and j are not equal so exponential operation is non associative on the set of positive integers N\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "a=(8-4)-3\n", + "b=8-(4-3)\n", + "print 'since a and b are not equal so subtraction is non-commutative on Z(set of integers)'\n", + "\n", + "a=mat([[1, 2],[3, 4]])\n", + "b=mat([[5 ,6],[0, -2]])\n", + "g= a*b\n", + "k= b*a\n", + "print 'since g and k are not equal matrix multiplication is non-commutative'\n", + "\n", + "h=(2**2)**3\n", + "j=2**(2**3)\n", + "print 'since h and j are not equal so exponential operation is non associative on the set of positive integers N'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex12.17 Pg 380" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "roots of f(t) are as follows:\n", + "2\n", + "-3/2 + sqrt(17)/2\n", + "-sqrt(17)/2 - 3/2\n" + ] + } + ], + "source": [ + "from sympy import symbols, solve\n", + "t=symbols('t')\n", + "f=t**3+t**2-8*t+4\n", + "r=solve(f,t)\n", + "print 'roots of f(t) are as follows:'\n", + "for r in r:\n", + " print r" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex12.18 Pg 382" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the real roots of h(t) are 1 and -2\n", + "-2\n", + "1\n", + "3/2 - sqrt(11)*I/2\n", + "3/2 + sqrt(11)*I/2\n", + "\n", + "roots of f(t) are as follows:\n", + "-1/2 + sqrt(13)/2\n", + "2 - 3*I\n", + "2 + 3*I\n", + "-sqrt(13)/2 - 1/2\n" + ] + } + ], + "source": [ + "from sympy import symbols, solve\n", + "t=symbols('t')\n", + "h=t**4-2*t**3+11*t-10\n", + "r=solve(h,t)\n", + "print 'the real roots of h(t) are 1 and -2'\n", + "for r in r:\n", + " print r\n", + "\n", + "t=symbols('t')\n", + "f=t**4-3*t**3+6*t**2+25*t-39\n", + "r=solve(f,t)\n", + "print '\\nroots of f(t) are as follows:'\n", + "for r in r:\n", + " print r\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch15_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch15_1.ipynb new file mode 100644 index 00000000..351837d0 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch15_1.ipynb @@ -0,0 +1,67 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter15 - Boolean Algebra" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex15.2 Pg 479" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lcm(2,14) : 14\n" + ] + } + ], + "source": [ + "from fractions import gcd\n", + "D=[1,2,5,7,10,14,35,70]#\n", + "a = 2# #a and b belong to D\n", + "b = 14#\n", + "def lcm(*numbers):\n", + " \"\"\"Return lowest common multiple.\"\"\" \n", + " def lcm(a, b):\n", + " return (a * b) // gcd(a, b)\n", + " return reduce(lcm, numbers, 1)\n", + "print \"lcm(2,14) : \",lcm(2,14)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch16_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch16_1.ipynb new file mode 100644 index 00000000..9602b137 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch16_1.ipynb @@ -0,0 +1,348 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter16 - Recurrance relations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex16.14 Pg 536" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for recurrence relation a(n)=5*a(n-1)-4*a(n-2)+n**2\n", + "Value of a(2) is: 10 \n", + "\n", + "Value of a(3) is: 51 \n", + "\n", + "for recurrence relation a(n)=2*a(n-1)*a(n-2)+n**2\n", + "Value of a(2) is: 8 \n", + "\n", + "Value of a(3) is: 41 \n", + "\n", + "for recurrence relation a(n)=n*a(n-1)+3*a(n-2)\n", + "Value of a(2) is: 7 \n", + "\n", + "Value of a(3) is: 27 \n", + "\n", + "for recurrence relation a(n)=2*a(n-1)+5*a(n-2)-6*a(n-3)\n", + "Value of a(2) is: 1 \n", + "\n", + "Value of a(3) is: 3 \n", + "\n" + ] + } + ], + "source": [ + "a=[]#\n", + "a.append(1)# #initial condition\n", + "a.append(2)# #initial condition\n", + "print 'for recurrence relation a(n)=5*a(n-1)-4*a(n-2)+n**2' #this is a second order recurrence relation with constant coefficients.It is non homogenous because of the n**2\n", + "for n in range(2,4):\n", + " a.append(5*a[n-1]-4*a[n-2]+n**2)\n", + " print 'Value of a(%d) is: %d \\n'%(n,a[n])\n", + "\n", + " \n", + "a=[]#\n", + "a.append(1)# #initial condition\n", + "a.append(2)# #initial condition\n", + "print 'for recurrence relation a(n)=2*a(n-1)*a(n-2)+n**2' #this recurrence relation is not linear\n", + "for n in range(2,4):\n", + " a.append(2*a[(n-1)]*a[(n-2)]+n**2)\n", + " print 'Value of a(%d) is: %d \\n'%(n,a[n])\n", + "\n", + " \n", + "a=[]#\n", + "a.append(1)# #initial condition\n", + "a.append(2)# #initial condition\n", + "print 'for recurrence relation a(n)=n*a(n-1)+3*a(n-2)' #this is a homogenous linear second order recurrence relation without constant coefficients because the coefficient of a[n-1] is n,not a constant\n", + "for n in range(2,4):\n", + " a.append(n*a[(n-1)]+3*a[(n-2)])\n", + " print 'Value of a(%d) is: %d \\n'%(n,a[n])\n", + "\n", + "\n", + " \n", + "a=[]#\n", + "a.append(1)# #initial condition\n", + "a.append(2)# #initial condition\n", + "a.append(1)# #initial condition\n", + "print 'for recurrence relation a(n)=2*a(n-1)+5*a(n-2)-6*a(n-3)' #this is a homogenous linear third order recurrence relation with constant coefficients.Thus we need three,not two,initial conditions to yield a unique solution of the recurrence relation\n", + "for n in range(2,4):\n", + " a.append(2*a[(n-1)]+5*a[(n-2)]-6*a[(n-3)])\n", + " print 'Value of a(%d) is: %d \\n'%(n,a[n])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex16.15 Pg 539" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "recurrence relation of Fibonacci numbers f[n]=f[n-1]+f[n-2]\n", + "characterstic equation of the recurrence relation is: x**2 - x - 1\n", + "roots of the characterstic equation j1,j2 are :\n", + "1/2 + sqrt(5)/2 \t-sqrt(5)/2 + 1/2 \t\n", + "\n", + "for general equation fn=Ar**n+Br**n,values of Aand B respectively are calculated as:\n", + "initial condition at n=0 and n=1 respectively are:\n", + "[[ 1.618034 -0.618034]] [[ 2.61803403 0.38196603]]\n", + "thus the solution is f[n]=0.4472136*((1.618034)**n-(- 0.4472136)**n)]\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "from sympy import symbols, solve\n", + "print 'recurrence relation of Fibonacci numbers f[n]=f[n-1]+f[n-2]' \n", + "x=symbols('x')\n", + "g=x**2-x-1\n", + "print 'characterstic equation of the recurrence relation is:',g\n", + "j=solve(g,x)#\n", + "print 'roots of the characterstic equation j1,j2 are :'\n", + "for x in j:\n", + " print x,'\\t',\n", + "\n", + "print '\\n'\n", + "print 'for general equation fn=Ar**n+Br**n,values of Aand B respectively are calculated as:'\n", + "print 'initial condition at n=0 and n=1 respectively are:'\n", + "f1=1# \n", + "f2=1# \n", + "#putting the values of f1 and f2 we get the equations to solve \n", + "\n", + "D=mat([[1.6180340, -0.618034],[(1.6180340)**2, (-0.618034)**2]])#\n", + "K=mat([[1, 1]])\n", + "c=[]#\n", + "c=D/K#\n", + "A=c[0]\n", + "B=c[1]\n", + "print A, B\n", + "print 'thus the solution is f[n]=0.4472136*((1.618034)**n-(- 0.4472136)**n)]'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex16.17 Pg 543" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The recurrence relation t[n]=4(t[n-1]-t[n-2])\n", + "characterstic polynomial equation for the above recurrence relation : x**2 - 4*x + 4\n", + "roots of the characterstic equation j1,j2 : \n", + "2 \t\n", + "\n", + "the general solution is t[n]=n*2**n\n", + "initial condition at n=0 and n=1 respectively are:\n", + "[[ 1. 1. ]\n", + " [-0.5 -0.5]] \t[[ 1. 1. ]\n", + " [-0.5 -0.5]] \t\n", + "thus the solution is t{n}=2*n-n*2**(n-1)\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "from sympy import symbols, solve\n", + "print 'The recurrence relation t[n]=4(t[n-1]-t[n-2])'\n", + "x=symbols('x')\n", + "g=x**2-4*x+4\n", + "print 'characterstic polynomial equation for the above recurrence relation : ',g \n", + "j=solve(g, x)\n", + "print 'roots of the characterstic equation j1,j2 : '\n", + "for x in j:\n", + " print x,'\\t'\n", + "print ''\n", + "print 'the general solution is t[n]=n*2**n' \n", + "print 'initial condition at n=0 and n=1 respectively are:'\n", + "t0=1#\n", + "t1=1#\n", + "#putting the values of t0 and t1 we get the equations to solve\n", + "D=mat([[1, 0],[2, 2]])\n", + "K=mat([[1, 1]])\n", + "from numpy.linalg import solve\n", + "c=solve(D,K)\n", + "for cc in c:\n", + " print c,'\\t',\n", + "print ''\n", + "D=mat([[1, 0],[2, 2]])\n", + "K=mat([[1, 1]])\n", + "c=D/K#\n", + "c1=c[0]\n", + "c2=c[1]\n", + "print 'thus the solution is t{n}=2*n-n*2**(n-1)'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex16.18 Pg 544" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The recurrence relation a[n]=2*a[n-1]-3a[n-2]\n", + "characterstic polynomial equation for the above recurrence relation : x**2 - 2*x - 3\n", + "roots of the characterstic equation j1,j2 : \n", + "-1 \t3 \t\n", + "the general solution is a[n]=c1*3**n+c2*(-1)**n\n", + "initial condition at n=0 and n=1 respectively are:\n", + "[[1 0]] [[ 3 -1]]\n", + "thus the solution is a[n]=0.75*(3**n)+0.25*(1**n)\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "from sympy import symbols, solve\n", + "print 'The recurrence relation a[n]=2*a[n-1]-3a[n-2]'\n", + "x=symbols('x')\n", + "g=x**2-2*x-3\n", + "print 'characterstic polynomial equation for the above recurrence relation : ',g \n", + "from sympy import solve\n", + "j=solve(g, x)#\n", + "print 'roots of the characterstic equation j1,j2 : '\n", + "for x in j:\n", + " print x,'\\t',\n", + "print \"\"\n", + "print 'the general solution is a[n]=c1*3**n+c2*(-1)**n' \n", + "print 'initial condition at n=0 and n=1 respectively are:'\n", + "#putting the values of t0 and t1 we get the equations to solve\n", + "a0=1#\n", + "a1=2#\n", + "D=mat([[1, 1],[3, -1]])\n", + "K=mat([[1, 2]])\n", + "c=D/K#\n", + "c1=c[0]\n", + "c2=c[1]\n", + "print c1, c2\n", + "print 'thus the solution is a[n]=0.75*(3**n)+0.25*(1**n)'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex16.19 Pg 556" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The recurrence relation a[n]=11*a[n-1]-39*a[n-2]+45*a[n-3]\n", + "characterstic polynomial equation for the above recurrence relation : x**3 - 11*x**2 + 39*x - 45\n", + "roots of the characterstic equation j1,j2 : \n", + "3 \t5 \t\n", + "hence the general solution is:a[n]=c1*(3**n)+c2*n*(3**n)+c3*(5**n)\n", + "initial condition at n=0 and n=1 respectively are:\n", + "[[0 0 0]] [[0 0 0]] [[1 1 1]]\n", + "thus the solution is a[n]=(4-2*n)*(3**n)+5**n\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "from sympy import symbols, solve\n", + "print 'The recurrence relation a[n]=11*a[n-1]-39*a[n-2]+45*a[n-3]'\n", + "x=symbols('x')\n", + "g=x**3-11*x**2+39*x-45\n", + "print 'characterstic polynomial equation for the above recurrence relation : ',g \n", + "j=solve(g, x)\n", + "print 'roots of the characterstic equation j1,j2 : '\n", + "for x in j:\n", + " print x,'\\t',\n", + "print ''\n", + "print 'hence the general solution is:a[n]=c1*(3**n)+c2*n*(3**n)+c3*(5**n)'\n", + "print 'initial condition at n=0 and n=1 respectively are:'\n", + "#putting the values of t0 and t1 we get the equations to solve\n", + "a0=5#\n", + "a1=11#\n", + "a2=25#\n", + "D=mat([[1, 0 ,1],[3, 3, 5],[9, 18, 25]])\n", + "K=mat([[5, 11, 25]])\n", + "c=D/K#\n", + "c1=c[0]\n", + "c2=c[1]\n", + "c3=c[2]\n", + "print c1, c2, c3\n", + "print 'thus the solution is a[n]=(4-2*n)*(3**n)+5**n'" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch1_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch1_1.ipynb new file mode 100644 index 00000000..e95a73d3 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch1_1.ipynb @@ -0,0 +1,224 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter1 - Set Theory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex1.7 Pg 9" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "To find : number of mathematics students taking atleast one of the languages French(F),German(G) and Russian(R)\n", + "the number of students studying atleast one of the languages : 100\n" + ] + } + ], + "source": [ + "print 'To find : number of mathematics students taking atleast one of the languages French(F),German(G) and Russian(R)'\n", + "F=65# #number of students studying French\n", + "G=45# # number of students studying German\n", + "R=42# #number of students studying Russian\n", + "FandG=20# #number of students studying French and German\n", + "FandR=25# #number of students studying French and Russian\n", + "GandR=15# #number of students studying German and Russian\n", + "FandGandR=8# #number of students studying French,German and Russian\n", + "#By inclusion-exclusion principle\n", + "ForGorR=F+G+R-FandG-FandR-GandR+FandGandR#\n", + "print 'the number of students studying atleast one of the languages :',ForGorR\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex1.8 Pg 10" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "In a college, 120 mathematics students can opt for either French(F),German(G) or Russian(R)\n", + "using inclusion-exclusion principle:\n", + "number of students studying French or German or Russian 100\n", + "number of students studying French and German but not Russian 12\n", + "number of students studying French and Russian but not German 17\n", + "number of students studying German and Russian but not French 7\n", + "number of students studying Only French 28\n", + "number of students studying Only German 18\n", + "number of students studying Only Russian 10\n", + "number of students not studying any of the languages 20\n" + ] + } + ], + "source": [ + "print 'In a college, 120 mathematics students can opt for either French(F),German(G) or Russian(R)'\n", + "n=120# #total number of students\n", + "F=65# #number of students studying French\n", + "G=45# #number of students studying German\n", + "R=42# #number of students studying Russian\n", + "FandG=20# #number of students studying French and German\n", + "FandR=25# #number of students studying French and Russian\n", + "GandR=15# #number of students studying German and Russian\n", + "FandGandR=8# #number of students studying French,German and Russian\n", + "print 'using inclusion-exclusion principle:'\n", + "ForGorR=F+G+R-FandG-FandR-GandR+FandGandR# \n", + "print 'number of students studying French or German or Russian',ForGorR\n", + "FGnR=FandG-FandGandR# \n", + "print 'number of students studying French and German but not Russian',FGnR\n", + "FRnG=FandR-FandGandR #\n", + "print 'number of students studying French and Russian but not German',FRnG\n", + "GRnF=GandR-FandGandR # \n", + "print 'number of students studying German and Russian but not French',GRnF\n", + "OF=F-FGnR-FandGandR-FRnG # \n", + "print 'number of students studying Only French',OF\n", + "OG=G-FGnR-FandGandR-GRnF# \n", + "print 'number of students studying Only German',OG\n", + "OR=R-FRnG-FandGandR-GRnF# \n", + "print 'number of students studying Only Russian',OR\n", + "k=n-ForGorR# \n", + "print 'number of students not studying any of the languages',k\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex1.13 Pg 12" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of members of powerset P which are proper subsets of x are: 1023\n" + ] + } + ], + "source": [ + "x=10# #number of members of set X\n", + "P=2**x #number of members of the power set of X\n", + "q=P-1##x itself is not the proper subset.Hence it isn't counted\n", + "print 'number of members of powerset P which are proper subsets of x are:',q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex1.14 Pg 12" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of different salads that can be prepared using the given eatables 31\n" + ] + } + ], + "source": [ + "A=[1,2,3,4,5]# #eatables for salad preparation 1=onion,2=tomato,3=carrot,4=cabbage,5=cucumber\n", + "p=len(A)# #total number of eatables available \n", + "n=2**p-1# #no salad can be made without atleast one of the eatables.Hence null set isn't counted\n", + "print 'number of different salads that can be prepared using the given eatables',n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex1.18 Pg 13" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P(1) 1\n", + "P(2) 5\n", + "P(1)=U(1) and P(2)=U(2)\n", + "hence Un=3**n-2**n for all n belonging to N\n" + ] + } + ], + "source": [ + "U1=1# #given\n", + "U2=5# #given\n", + "P=[]#\n", + "for I in range(0,2):\n", + " i=I+1\n", + " P.append(3**i-2**i)\n", + " print \"P(%s)\"%(i),P[I]\n", + "print 'P(1)=U(1) and P(2)=U(2)'#\n", + "print 'hence Un=3**n-2**n for all n belonging to N'" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch3_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch3_1.ipynb new file mode 100644 index 00000000..8f33a532 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch3_1.ipynb @@ -0,0 +1,101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter3 - Functions & Algorithms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex3.8 Pg 60" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the value of 4! is : 24\n" + ] + } + ], + "source": [ + "def recur_factorial(n):\n", + " if n == 1:\n", + " return n\n", + " else:\n", + " return n*recur_factorial(n-1)\n", + "\n", + "a=4\n", + "p=recur_factorial(a)\n", + "print 'the value of 4! is : ',p\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex3.10 Pg 63" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the polynomial(p) is : 2*x**3 - 7*x**2 + 4*x - 15\n", + "f(a) at a= 5 is : 80\n" + ] + } + ], + "source": [ + "from sympy import symbols, solve\n", + "x = symbols('x')\n", + "p = 2*x**3-7*x**2+4*x-15\n", + "print 'the polynomial(p) is : ',p\n", + "# Let x=5\n", + "x=5\n", + "p = 2*x**3-7*x**2+4*x-15\n", + "print \"f(a) at a= 5 is : \",p\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch5_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch5_1.ipynb new file mode 100644 index 00000000..9e761152 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch5_1.ipynb @@ -0,0 +1,427 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 - Vectors & Matrices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.2 Pg 103" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u+v = [[ 3 -2 4]]\n", + "5*u = [[ 10 15 -20]]\n", + "-v = [[-1 5 -8]]\n", + "2*u-3*v = [[ 1 21 -32]]\n", + "dot product of the two vectors, k = u.v = [[-45]]\n", + "norm or length of the vector u = 5.3852\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "u=mat([[2,3,-4]])\n", + "v=mat([[1,-5,8]])\n", + "print \"u+v = \",add(u,v)\n", + "print \"5*u = \",multiply(5,u)\n", + "print \"-v = \",multiply(-1,v)\n", + "print \"2*u-3*v = \",add(multiply(2,u),multiply(-3,v))\n", + "print 'dot product of the two vectors, k = u.v = ',inner(u,v)\n", + "l=norm(u)# \n", + "print 'norm or length of the vector u = ',round(l,4)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.3 Pg 104 " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2*u-3*v =\n", + "[[ 1]\n", + " [ 9]\n", + " [-2]]\n", + "The dot product of the two vectors u and v is: [[20]]\n", + "norm or length of the vector u = 7.0711\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "u=mat([[5],[3],[-4]])\n", + "v=mat([[3],[-1],[-2]])\n", + "print \"2*u-3*v =\\n\",add(multiply(2,u),multiply(-3,v))\n", + "print 'The dot product of the two vectors u and v is:', sum(multiply(u,v))\n", + "l=norm(u)#\n", + "print 'norm or length of the vector u = ',round(l,4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.5 Pg 105" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The addition of the two matrices A and B is:\n", + "[[ 5 4 11]\n", + " [ 1 1 -2]]\n", + "\n", + "The multiplication of a vector with a scalar is:\n", + "[[ 3 -6 9]\n", + " [ 0 12 15]]\n", + "\n", + "2*A-3*B = \n", + "[[-10 -22 -18]\n", + " [ -3 17 31]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "A=mat([[1,-2,3],[0,4,5]])\n", + "B=mat([[4,6,8],[1,-3,-7]])\n", + "k=add(A,B)\n", + "print 'The addition of the two matrices A and B is:\\n',k\n", + "m=multiply(3,A)\n", + "print '\\nThe multiplication of a vector with a scalar is:\\n',m\n", + "p=add(multiply(2,A),multiply(-3,B))\n", + "print \"\\n2*A-3*B = \\n\",p" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.6 Pg 106" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "product of a and b is : [[8]]\n", + "product of p and q is: [[32]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "a=mat([[7,-4,5]])\n", + "b=mat([[3,2,-1]])\n", + "k=inner(a,b)\n", + "print 'product of a and b is : ',k\n", + "p=mat([[6,-1,8,3]])\n", + "q=mat([[4,-9,-2,5]])\n", + "l=inner(p,q)\n", + "print 'product of p and q is:',l" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.7 Pg 107" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A*B = \n", + "[[ 17 -6 14]\n", + " [ -1 2 -14]]\n", + "A*B = \n", + "[[ 5 2]\n", + " [15 10]]\n", + "B*A = \n", + "[[23 34]\n", + " [-6 -8]]\n", + "matrix mulitplication is not commutative since AB may not be equal to BA\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "A=mat([[1 ,3],[2, -1]])\n", + "B=mat([[2, 0, -4],[5, -2, 6]])\n", + "print \"A*B = \\n\", dot(A,B)\n", + "A=mat([[1, 2],[3, 4]])\n", + "B=mat([[5, 6],[0, -2]])\n", + "print \"A*B = \\n\",dot(A,B)\n", + "print \"B*A = \\n\", dot(B,A)\n", + "print 'matrix mulitplication is not commutative since AB may not be equal to BA'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.8 Pg 109" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for the function f(x)=2x**2-3x+5,f(A) is :\n", + "[[ 16. -18.]\n", + " [-27. 61.]]\n", + "for the function g(x)=x**2+3x-10,g(A) is\n", + "[[ 0. 0.]\n", + " [ 0. 0.]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "from numpy import identity as idt\n", + "A=mat([[1, 2],[3, -4]])\n", + "A2=dot(A,A) #multiplying A by itself\n", + "A3=dot(A2,A)\n", + "f=add(add(multiply(2,A2),multiply(-3,A)),multiply(5,idt(2)))\n", + "print 'for the function f(x)=2x**2-3x+5,f(A) is :\\n',f\n", + "g=add(add(A2,multiply(3,A)),multiply(-10,idt(2)))\n", + "print 'for the function g(x)=x**2+3x-10,g(A) is\\n',g" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.9 Pg 110" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A*b = \n", + "[[1 0 0]\n", + " [0 1 0]\n", + " [0 0 1]]\n", + "since A*B is identity matrix,A and B are invertible and inverse of each other\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "A=mat([[1 ,0 ,2],[2 ,-1, 3],[4, 1, 8]])\n", + "B=mat([[-11, 2 ,2],[-4, 0 ,1],[6, -1, -1]])\n", + "print \"A*b = \\n\",dot(A,B)\n", + "print 'since A*B is identity matrix,A and B are invertible and inverse of each other'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.10 Pg 111" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "determinant of A 7.0\n", + "determinant of B 16.0\n", + "determinant of C -81.0\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm\n", + "from numpy import mat, add, dot, multiply, inner\n", + "A=mat([[5 ,4],[2, 3]])\n", + "print 'determinant of A',det(A)\n", + "B=mat([[2, 1],[-4, 6]])\n", + "print 'determinant of B',det(B)\n", + "C=mat([[2, 1, 3],[4, 6, -1],[5 ,1 ,0]])\n", + "print 'determinant of C',det(C)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.13 Pg 115" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x = [[ 2.]]\n", + "y = [[-1.]]\n", + "z = [[ 3.]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy.linalg import det,norm,solve\n", + "from numpy import mat, add, dot, multiply, inner,divide\n", + "\n", + "\n", + "A=mat([[1, 2, 1],[2, 5, -1],[3, -2, -1]]) #left hand side of the system of equations\n", + "B=mat([[3] ,[-4] ,[5]]) #right hand side or the constants in the equations\n", + "X=divide(A,B) # #unique solution for the system of equations\n", + "X = solve(A, B)\n", + "print \"x = \",X[0]\n", + "print \"y = \",X[1]\n", + "print \"z = \",X[2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex5.14 Pg 116" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Inverse of A = \n", + "[[-11. 2. 2.]\n", + " [ -4. 0. 1.]\n", + " [ 6. -1. -1.]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import mat\n", + "\n", + "A=mat([[1 ,0 ,2],[2, -1, 3],[4, 1, 8]])\n", + "A_inv = A**-1\n", + "print \"Inverse of A = \\n\", A_inv" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch6_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch6_1.ipynb new file mode 100644 index 00000000..f99f0648 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch6_1.ipynb @@ -0,0 +1,488 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter6 - Counting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex 6.1 Pg 133" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of ways a student can choose a calculus professor\n", + "13\n", + "event of getting an even or a prime number\n", + "7\n", + "number of ways of choosing a number which is prime or even\n", + "8\n" + ] + } + ], + "source": [ + "from numpy import intersect1d, union1d\n", + "M=8# #number of male professors teaching calculus\n", + "F=5# #number of female professors teaching calculus\n", + "T=M+F #\n", + "print 'number of ways a student can choose a calculus professor\\n',T\n", + "\n", + "E=[2,3,5,7]# #event of choosing a prime number less than 10\n", + "F=[2,4,6,8]# #event of choosing an even number less than 10\n", + "G=intersect1d(E,F)# #event of getting an even and prime number \n", + "H=len(E)+len(F)-len(G)# \n", + "print 'event of getting an even or a prime number\\n',H\n", + "\n", + "E=[11,13,17,19]# #event of choosing a prime number between 10 and 20\n", + "F=[12,14,16,18]# #event of choosing an even number between 10 and 20\n", + "G=union1d(E,F)# #event of choosing a number which is prime or even\n", + "k=len(G)# \n", + "print 'number of ways of choosing a number which is prime or even\\n',k" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.2 Pg 133" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a license plate contains two letters followed by three digits where first digit can not be zero\n", + "total number of license plates that can be printed\n", + "608400\n", + "\n", + "\n", + "a president ,a secretary and a treasurer has to be elected in an orga-nisation of 26 members.No person is elected to more than one postion\n", + "number of ways to elect the three officers (president,secretary,treasurer\n", + "15600\n" + ] + } + ], + "source": [ + "print 'a license plate contains two letters followed by three digits where first digit can not be zero' \n", + "n=26# #number of english letters\n", + "n*n# #number of ways of choosing two letters in the license plate\n", + "p=10# #number of digits (0-9)\n", + "(p-1)*p*p# #number of ways to select the three digits with the first digit not being zero\n", + "k=n*n*(p-1)*p*p#\n", + "print 'total number of license plates that can be printed\\n',k\n", + "\n", + "print '\\n\\na president ,a secretary and a treasurer has to be elected in an orga-nisation of 26 members.No person is elected to more than one postion'\n", + "t=26# #total number of members in the organisation\n", + "j=t*(t-1)*(t-2)# \n", + "print 'number of ways to elect the three officers (president,secretary,treasurer\\n',j\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.3 Pg 134" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "factorial of 6 : \n", + "720\n", + "value of 8!/6! is: 56.0\n", + "value of 12!/9! is: 1320.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "print 'factorial of 6 : '\n", + "facto2=2*1#\n", + "facto3=3*facto2\n", + "facto4=3*facto3\n", + "facto4=4*facto3\n", + "facto5=5*facto4\n", + "facto6=6*facto5\n", + "print facto6\n", + "k=8*7*factorial(6)/factorial(6)#\n", + "print 'value of 8!/6! is:',k\n", + "j=12*11*10*factorial(9)/factorial(9)#\n", + "print 'value of 12!/9! is:',j\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.4 Pg 135" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8C2 = 28.0\n", + "9C4 = 126.0\n", + "12C5 = 792.0\n", + "10C3 = 120.0\n", + "13C1 = 13.0\n", + "value of 10C7 is 120.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "def func1(n,r): #calculating binomial coefficient\n", + " k=factorial(n)/(factorial(r)*factorial(n-r))#\n", + " return k\n", + "print \"8C2 = \",func1(8,2)\n", + "print \"9C4 = \",func1(9,4)\n", + "print \"12C5 = \",func1(12,5)\n", + "print \"10C3 = \",func1(10,3)\n", + "print \"13C1 = \",func1(13,1)\n", + " \n", + "p = factorial(10)/(factorial(10-7)*factorial(7)) #calculating 10C7\n", + "q= factorial(10)/(factorial(10-3)*factorial(3)) #calculating 10C3\n", + "print 'value of 10C7 is',p\n", + "#10-7=3 so 10C7 can also be computed as 10C3\n", + "#both p and q have same values but second method saves time and space\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.5 Pg 136" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "finding the number of three-letter words using only the given six letters(A,B,C,D,E,F) without repetition\n", + "number of three-letter words possible 120\n" + ] + } + ], + "source": [ + "print 'finding the number of three-letter words using only the given six letters(A,B,C,D,E,F) without repetition'\n", + "n=6# #total number of letters\n", + "l1=n# #number of ways in which first letter of the word can be chosen\n", + "l2=n-1# #number of ways in which second letter of the word can be chosen\n", + "l3= n-2# #number of ways in which third letter can be chosen\n", + "k=l1*l2*l3#\n", + "print 'number of three-letter words possible',k" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.6 Pg 137" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The number of seven-letter words that can be formed using letters of the word BENZENE = 420.0\n", + "\n", + "a set of 4 indistinguishable red coloured flags, 3 indistinguishable white flags and a blue flag is given\n", + "\n", + "number of different signals ,each consisting of eight flags = 280.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "def funct1(n,p,q):\n", + " k= factorial(n)/(factorial(p)*factorial(q))#\n", + " return k\n", + "k=funct1(7,3,2) #in \"BENZENE\" three letters are alike(the three Es) and two are alike (the two Ns)\n", + "print 'The number of seven-letter words that can be formed using letters of the word BENZENE = ',k\n", + "\n", + "print '\\na set of 4 indistinguishable red coloured flags, 3 indistinguishable white flags and a blue flag is given'\n", + "j=funct1(8,4,3)\n", + "print '\\nnumber of different signals ,each consisting of eight flags = ',j\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.7 Pg 138" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "four objects are given (a,b,c,d) and three are taken at a time\n", + "number of combinations of the four objects given = 4.0\n", + "total number of permuatations for the problem = 24.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "print 'four objects are given (a,b,c,d) and three are taken at a time' \n", + "combinations = factorial(4)/(factorial(4-3)*factorial(3))#\n", + "print 'number of combinations of the four objects given = ',combinations\n", + "k=factorial(3)# #number of permutations of objects in a combination\n", + "permutations = combinations*k#\n", + "print 'total number of permuatations for the problem = ',permutations\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.8 Pg 138" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the number of committees of three that can be formed out of eight people = 56.0\n", + "total number of ways that a farmer can choose all these animals = 14000.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "def myfunc(n,r):\n", + " k=factorial(n)/(factorial(n-r)*factorial(r))#\n", + " return k\n", + "k=myfunc(8,3)\n", + "print'the number of committees of three that can be formed out of eight people = ', k\n", + " \n", + "cows=myfunc(6,3) #number of ways that a farmer can choose 3 cows out of 6 cows\n", + "pigs=myfunc(5,2) #number of ways that a farmer can choose 2 pigs out of 5 pigs\n", + "hens=myfunc(8,4) #number of ways that a farmer can choose 4 hens out of 8 hens\n", + "p=cows*pigs*hens# \n", + "print 'total number of ways that a farmer can choose all these animals = ',p\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.9 Pg 139" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of non negative integer solutions of the given equation x+y+z=18 = 190.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "#each solution to the equation can be viewed as a combination of objects\n", + "r=18# #number of objects \n", + "M=3# #kinds of object\n", + "m=factorial(r+(M-1))/(factorial(r+(M-1)-(M-1))*factorial(M-1))#\n", + "print 'number of non negative integer solutions of the given equation x+y+z=18 = ',m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.14 Pg 145" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of ways nine toys can be divided between four children with the youngest son getting 3 toys and others getting 2 each 7560.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "c1=3# #number of toys that the youngest child should get\n", + "c2=2# #number of toys that the third child should get\n", + "c3=2# #number of toys that the second child should get\n", + "c4=2# #number of toys that the eldest son should get\n", + "m=factorial(9)/(factorial(3)*factorial(2)*factorial(2)*factorial(2))#\n", + "print 'number of ways nine toys can be divided between four children with the youngest son getting 3 toys and others getting 2 each',m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.15 Pg 146" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "each partition of the students can be arranged in 3! ways as an ordered partition\n", + "number of ways that 12 students can be partitioned into three teams so that each team consists of 4 students 5775.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "p=12# #total number of students\n", + "t=3# #number of teams or partition\n", + "print 'each partition of the students can be arranged in 3! ways as an ordered partition'\n", + "r=factorial(12)/(factorial(4)*factorial(4)*factorial(4)) #number of ordered partitions\n", + "m=r/factorial(t)# #number of unordered partitions\n", + "print 'number of ways that 12 students can be partitioned into three teams so that each team consists of 4 students',m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex6.16 Pg 147" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The number of integers in the set U, which are not divisible by 3,5 and 7 is 457.0\n" + ] + } + ], + "source": [ + "from numpy import floor\n", + "U=1000# #number of elements in the set of positive integers not exceeding 1000\n", + "A=U/3# #number of elements in the subset of integers divisible by 3\n", + "B=U/5# #number of elements in the subset of integers divisible by 5\n", + "C=U/7# #number of elements in the subset of integers divisible by 7\n", + "AandB=floor(U/(3*5)) #number of elements in the subset containing numbers divisible by both 3 and 5\n", + "AandC=floor(U/(3*7)) #number of elements in the subset containing numbers divisible by both 3 and 7\n", + "BandC=floor(U/(5*7)) #number of elements in the subset containing numbers divisible by both 5 and 7\n", + "AandBandC=floor(U/(3*5*7)) #number of elements in the subset containing numbers divisible by 3,5 and 7\n", + "s=U-(A+B+C)+(AandB+AandC+BandC)-(AandBandC)# # By inclusion-exclusion principle\n", + "S=round(s)#\n", + "print 'The number of integers in the set U, which are not divisible by 3,5 and 7 is',S" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch7_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch7_1.ipynb new file mode 100644 index 00000000..33721c88 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch7_1.ipynb @@ -0,0 +1,793 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter7 - Probability Theory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.1 Pg 152" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sample space for the event that an even or a prime number occurs = [2 3 4 5 6]\n", + "sample space for the event that an odd prime number occurs = [3 5]\n", + "sample space for the event that a prime number does not occur = [1 4 6]\n", + "sample space for the event in which only heads appear = ['000']\n", + "Experiment:tossing a coin until a head appears and then counting the number of times the coin is tossed\n", + "Since every positive integer is an element of S,the sample space is infinite\n" + ] + } + ], + "source": [ + "from numpy import intersect1d, setdiff1d, union1d,inf\n", + "from __future__ import division\n", + "S=[1,2,3,4,5,6] #sample space for the rolling of a die\n", + "A=[2,4,6] #event that an even number occurs\n", + "B=[1,3,5] #event that an odd number occurs\n", + "C=[2,3,5] #event that a prime number occurs\n", + "print 'sample space for the event that an even or a prime number occurs = ',union1d(A,C)\n", + "print 'sample space for the event that an odd prime number occurs = ',intersect1d(B,C)\n", + "print 'sample space for the event that a prime number does not occur = ',setdiff1d(S,C) #It is the complement of the set C.\n", + "intersect1d(A,B) #It is a null set or null vector since there can't occur an even and an odd number simultaneously\n", + " \n", + "H=0# #\"head\" face of a coin\n", + "T=1# #\"tail\" face of a coin\n", + "S=[\"000\",\"001\",\"010\",\"011\",\"100\",\"101\",\"110\",\"111\"] # #sample space for the toss of a coin three times\n", + "A=[\"000\",\"001\",\"100\"]# #event that two more or more heads appear consecutively\n", + "B=[\"000\",\"111\"]# #event that all tosses are the same\n", + "print 'sample space for the event in which only heads appear = ',intersect1d(A,B)\n", + " \n", + "print 'Experiment:tossing a coin until a head appears and then counting the number of times the coin is tossed'\n", + "S=[1,2,3,4,5,inf] #The sample space has infinite elements in it\n", + "print \"Since every positive integer is an element of S,the sample space is infinite\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.2 Pg 153" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Experiment:three coins are tossed and the number of heads are observed\n", + "the probability space is as follows \n", + "A is the event that atleast one head appears and B is the event that all heads or all tails appear \n", + "probability of occurrence of event A = 0.875\n", + "probability of occurrence of event B = 0.25\n" + ] + } + ], + "source": [ + "print 'Experiment:three coins are tossed and the number of heads are observed'\n", + "S=[0,1,2,3]# #the sample space for the experiment where 0 implies no heads,1 implies only one head out of the three coins and so on\n", + "print \"the probability space is as follows \"\n", + "P0=1/8# #probability of getting no head on any of the coins i.e TTT\n", + "P1=3/8# #probability of getting only one head on any of the coins, out of the three coins i.e HTT,THT,TTH\n", + "P2=3/8# #probability of getting two heads, out of the three coins i.e THH,HTH,HHT\n", + "P3=1/8# #probability of getting all the three heads i.e HHH\n", + "print \"A is the event that atleast one head appears and B is the event that all heads or all tails appear \"\n", + "A=[1,2,3]# # HHH,HHT,HTH,HTT,THH,THT,TTH\n", + "B=[0,3]# #HHH,TTT\n", + "PA=P1+P2+P3# \n", + "print 'probability of occurrence of event A = ',PA\n", + "PB=P0+P3# \n", + "print 'probability of occurrence of event B = ',PB " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.3 Pg 154" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Experiment: a card is selected from a deck of 52 cards \n", + "A is the event of the selected card being a spade \n", + "B is the event of the selected card being a face card \n", + "probability of selecting a spade = 1/4\n", + "probability of selecting a face card = 3/13\n", + "probability of selecting a spade face card is: 3/52\n" + ] + } + ], + "source": [ + "from fractions import Fraction\n", + "print \"Experiment: a card is selected from a deck of 52 cards \"\n", + "print \"A is the event of the selected card being a spade \"\n", + "print \"B is the event of the selected card being a face card \"\n", + "t=52 # #the total number of cards\n", + "s=13# #number of spades\n", + "PA= s/t# \n", + "print 'probability of selecting a spade = ',Fraction(PA).limit_denominator(100)\n", + "f=12# #number of face cards(jack,queen,king)\n", + "PB=f/t#\n", + "print 'probability of selecting a face card = ',Fraction(PB).limit_denominator(100)\n", + "sf=3# #number of spade face cards\n", + "Psf=sf/t#\n", + "print \"probability of selecting a spade face card is:\",Fraction(Psf).limit_denominator(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.4 Pg 155" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Experiment: selection of a student out of 100 students \n", + "probability of the selected student taking mathematics or chemistry = 2/5\n" + ] + } + ], + "source": [ + "print \"Experiment: selection of a student out of 100 students \"\n", + "M=30# #no of students taking mathematics\n", + "C=20# #no of students taking chemistry\n", + "T=100# #total no. of students\n", + "PM = M/T #probability of the selected student taking mathematics\n", + "PC = C/T #probability of the selected student taking chemistry\n", + "MnC=10# #no of students taking mathematics and chemistry\n", + "PMnC = MnC/T #probability of the selected student taking mathematics and chemistry both\n", + "PMorC = PM+PC-PMnC# \n", + "print 'probability of the selected student taking mathematics or chemistry = ',Fraction(PMorC).limit_denominator(100)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.6 Pg 156" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A bag contains 12 items of which four are defective.Three items are drawn at random,one after the other\n", + "probability that all three items are non defective = 14/55\n" + ] + } + ], + "source": [ + "print \"A bag contains 12 items of which four are defective.Three items are drawn at random,one after the other\"\n", + "s=12# #total itmes in the bag\n", + "d=4# #defective items in the bag\n", + "Pf=(s-d)/s # #probability that the first item drawn is non defective\n", + "Pe=Pf*((s-d-1)/(s-1))*((s-d-2)/(s-2))\n", + "print 'probability that all three items are non defective = ',Fraction(Pe).limit_denominator(100)\n", + "#after the first item is chosen,the second item is to be chosen from 1 less than the original number of items in the box and similarly the number of non defective items gets decreased by 1.Similarly ,for the third draw of item from the box" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.7 Pg 157" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probability of A is = 0.5\n", + "probability of B is = 0.5\n", + "probability of C is = 0.25\n", + "probability of the event AnB = 0.25\n", + "probability of the event AnC = 0.125\n", + "probability of the event BnC = 0.25\n", + "A and B are independent\n", + "A and C are independent\n", + "B and C are dependent\n" + ] + } + ], + "source": [ + "from numpy import intersect1d\n", + "H=1# #heads of a coin\n", + "T=2# #tails of the coin\n", + "S=[111,112,121,122,211,212,221,222] #sample space for the toss of a coin three times. 111 implies heads all three times,112 implies heads on first two tosses and tails on the third toss\n", + "A=[111,112,121,122]# #event that first toss is heads\n", + "B=[111,112,211,212]# #event that second toss is heads\n", + "C=[112,211]# #event that exactly two heads appear in a row\n", + "PA=len(A)/len(S)\n", + "print 'probability of A is = ',PA\n", + "PB=len(B)/len(S)\n", + "print 'probability of B is = ',PB\n", + "PC=len(C)/len(S)\n", + "print 'probability of C is = ',PC\n", + "AnB=intersect1d(A,B)\n", + "AnC=intersect1d(A,C)\n", + "BnC=intersect1d(B,C)\n", + "PAnB= len(AnB)/len(S)\n", + "print 'probability of the event AnB = ',PAnB\n", + "PAnC= len(AnC)/len(S)#\n", + "print 'probability of the event AnC = ',PAnC \n", + "PBnC= len(BnC)/len(S)\n", + "print 'probability of the event BnC = ',PBnC\n", + "if((PA*PB)==PAnB):\n", + " print \"A and B are independent\"\n", + "else:\n", + " print \"A and B are dependent\"\n", + "\n", + "if((PA*PC)==PAnC):\n", + " print \"A and C are independent\"\n", + "else:\n", + " print \"A and C are dependent\"\n", + "if((PB*PC)==PBnC):\n", + " print \"B and C are independent\"\n", + "else:\n", + " print \"B and C are dependent\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.8 Pg 157" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Experiment: A and B both shoot at a target\n", + "A and B are independent events so PA*PB will be equal to probability of the event of A and B both hitting the target i.e PAnB\n", + "probability of atleast one of them hitting the target = 0.55\n" + ] + } + ], + "source": [ + "print \"Experiment: A and B both shoot at a target\"\n", + "PA=1/4# #given probability of A hitting the target\n", + "PB=2/5# #given probability of B hitting the target\n", + "print \"A and B are independent events so PA*PB will be equal to probability of the event of A and B both hitting the target i.e PAnB\"\n", + "PAnB=PA*PB#\n", + "PAorB=PA+PB-PAnB#\n", + "print'probability of atleast one of them hitting the target = ', PAorB" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.9 Pg 158" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Experiment: Three horses race together twice\n", + "probability of third horse winning the first race and first horse winning the second race is = 1/12\n" + ] + } + ], + "source": [ + "print \"Experiment: Three horses race together twice\"\n", + "Ph1=1/2# #probability of first horse winning the race\n", + "Ph2=1/3# #probability of second horse winning the race\n", + "Ph3=1/6# #probability of third horse winning the race\n", + "S=[11,12,13,21,22,23,31,32,33] #sample space where 11 implies first horse winning the first and second race both,12 implies first horse winning the first race and second horse winning the second race and so on\n", + "P11=Ph1*Ph1 #probability of first horse winning both races\n", + "P12=Ph1*Ph2 #probability of first horse winning the first race and second horse winning the second race\n", + "P13=Ph1*Ph3 #probability of first horse winning the first race and third horse winning the second race\n", + "P21=Ph2*Ph1 #probability of second horse winning the first race and first horse winning the second race\n", + "P22=Ph2*Ph2 #probability of second horse winning both the races\n", + "P23=Ph2*Ph3 #probability of second horse winning the first race and third horse winning the second race\n", + "P31=Ph3*Ph1 #probability of third horse winning the first race and first horse winning the second race\n", + "P32=Ph3*Ph2 #probability of third horse winning the first race and second horse winning the second race\n", + "P33=Ph3*Ph3 #probability of third horse winning both the races \n", + "print 'probability of third horse winning the first race and first horse winning the second race is = ',Fraction(P31).limit_denominator(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.10 Pg 158" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probability of getting exactly two heads (i.e k=2) = 15/64\n", + "probability of getting atleast four heads(i.e k=4,5 or 6) = 11/32\n", + "probability of getting one or more heads = 63/64\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "n=6# #number of times a fair coin is tossed and getting a heads is a success\n", + "p=1/2# #probability of getting a heads\n", + "q=1/2 # #probability of not getting a heads\n", + "P2=(factorial(6)/(factorial(6-2)*factorial(2)))*p**2*q**(6-2)# \n", + "print 'probability of getting exactly two heads (i.e k=2) = ',Fraction(P2).limit_denominator(100)\n", + "\n", + "P4=(factorial(6)/(factorial(6-4)*factorial(4)))*p**4*q**(6-4)# #probabilty of getting four heads\n", + "P5=(factorial(6)/(factorial(6-5)*factorial(5)))*p**5*q**(6-5)# #probabilty of getting five heads\n", + "P6=(factorial(6)/(factorial(6-6)*factorial(6)))*p**6*q**(6-6)# #probabilty of getting five heads\n", + "PA=P4+P5+P6 # \n", + "print 'probability of getting atleast four heads(i.e k=4,5 or 6) = ',Fraction(PA).limit_denominator(100)\n", + " \n", + "Pn=q**6 #probability of getting no heads\n", + "Pm=1-Pn#\n", + "print 'probability of getting one or more heads = ',Fraction(Pm).limit_denominator(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.12 Pg 159" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A box contains 12 items of which three are defective\n", + "A sample of three items is selected from the box\n", + "number of elements in the sample space where samples are of size 3 220.0\n" + ] + } + ], + "source": [ + "from scipy.misc import factorial\n", + "print \"A box contains 12 items of which three are defective\"\n", + "print \"A sample of three items is selected from the box\"\n", + "s=factorial(12)/(factorial(12-3)*factorial(3))# \n", + "print 'number of elements in the sample space where samples are of size 3',s\n", + "#X denotes the number of defective items in the sample\n", + "x=[0,1,2,3]# #range space of the random variable X" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.13 Pg 160" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "distribution table of X where first row gives the range space and second row gives the respective probabilities is as follows : \n", + "x(i)\t\t\tp(i)\n", + "2.0 \t\t\t1/36\n", + "3.0 \t\t\t1/18\n", + "4.0 \t\t\t1/12\n", + "5.0 \t\t\t1/9\n", + "6.0 \t\t\t5/36\n", + "7.0 \t\t\t1/6\n", + "8.0 \t\t\t5/36\n", + "9.0 \t\t\t1/9\n", + "10.0 \t\t\t1/12\n", + "11.0 \t\t\t1/18\n", + "12.0 \t\t\t1/36\n" + ] + } + ], + "source": [ + "from numpy import mat,nditer\n", + "r=[1,2,3,4,5,6,5,4,3,2,1]\n", + "#number of outcomes whose sum is 2,3,4,5,6,7,8,9,10,11,12 respectively such that there is only 1 outcome i.e (1,1) whose sum is 2,two outcomes (1,2) and (2,1) whose sum is 3 and so on\n", + "t=36# #total number of elements in the sample space of the experiment of tossing a pair of dice\n", + "\n", + "\n", + "x=mat([[2,3,4,5,6,7,8,9,10,11,12]]) #range space of random variable X which assigns to each point in sample space the sum of the numbers \n", + "\n", + "D=mat([[2,3,4,5,6,7,8,9,10,11,12],[0.0277778, 0.0555556 , 0.0833333, 0.1111111, 0.1388889 ,0.1666667, 0.1388889 ,0.1111111, 0.0833333, 0.0555556, 0.0277778]])\n", + "print '\\n\\ndistribution table of X where first row gives the range space and second row gives the respective probabilities is as follows : '\n", + "\n", + "print \"x(i)\\t\\t\\tp(i)\"\n", + "for x,y in nditer([D[0,:],D[1,:]]):\n", + " y=float(y)\n", + " print x,\"\\t\\t\\t\",Fraction(y).limit_denominator(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.14 Pg 160" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a box contains 12 items of which three are defective\n", + "A sample of three items is selected from the box\n", + "\n", + "distribution table for random variable X the upper row being values of X\n", + ":\n", + "x(i)\t\t\tp(i)\n", + "0.0 \t\t\t21/55\n", + "1.0 \t\t\t27/55\n", + "2.0 \t\t\t7/57\n", + "3.0 \t\t\t0\n" + ] + } + ], + "source": [ + "from fractions import Fraction\n", + "from numpy import nditer,mat\n", + "from scipy.misc import factorial\n", + "print \"a box contains 12 items of which three are defective\"\n", + "print \"A sample of three items is selected from the box\"\n", + "r=factorial(9)/(factorial(9-3)*factorial(3)) #number of samples of size 3 with no defective items\n", + "t=220# #number of different samples of size 3 i.e the number of elements in the sample space\n", + "P0=r/t #probability of getting no defective item\n", + "r1=3*(factorial(9)/(factorial(9-2)*factorial(2))) #number of samples of size 3 getting 1 defective item\n", + "P1=r1/t #probability of getting 1 defective item\n", + "r2=9*(factorial(3)/(factorial(3-2)*factorial(2))) #number of samples of size 3 getting 2 defective item\n", + "P2=r2/t #probability of getting 2 defective item\n", + "r3=1# #number of samples of size 3 getting 3 defective item\n", + "P3=r3/t #probability of getting 3 defective item\n", + "x=[0,1,2,3]#\n", + "p=mat([[P0,P1,P2,P3]])\n", + "D=mat([[0,1,2,3],[P0,P1,P2,P3]])\n", + "print '\\ndistribution table for random variable X the upper row being values of X\\n:'\n", + "\n", + "print \"x(i)\\t\\t\\tp(i)\"\n", + "for x,y in nditer([D[0,:],D[1,:]]):\n", + " y=float(y)\n", + " print x,\"\\t\\t\\t\",Fraction(y).limit_denominator(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.15 Pg 161" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A fair coin is tossed six times\n", + "mean or expected number of heads are = 3.0\n", + "X is a random variable which gives possible number of defective items in a sample of size 3\n", + "expected number of defective items in a sample of size 3 are = 0.75\n", + "expected pay off for the race is = 4.5\n" + ] + } + ], + "source": [ + "print \"A fair coin is tossed six times\"\n", + "x=[0,1,2,3,4,5,6] #number of heads which can occur\n", + "p=[1/64,6/64,15/64,20/64,15/64,6/64,1/64]# #probability of occurring of heads where 1/64 is probability for occurrence of a single head,6/64 that of occurrence of two heads and so on.\n", + "r=0#\n", + "for i in range(0,7):\n", + " r = r + (x[i]*p[i])#\n", + "\n", + "print 'mean or expected number of heads are = ',r\n", + " \n", + "print \"X is a random variable which gives possible number of defective items in a sample of size 3\"\n", + "#Box contains 12 items of which three are defective\n", + "x=[0,1,2,3]# #possible number of defective items in a smaple of size 3\n", + "p=[84/220,108/220,27/220,1/220]# #probability of occurrence of each number in x respectively where 84/220 is the probability for getting no defective item,108/220 is that of getting 1 defective item and so on.\n", + "r=0#\n", + "for i in range(0,4):\n", + " r = r + (x[i]*p[i])#\n", + "\n", + "print 'expected number of defective items in a sample of size 3 are = ',r\n", + " \n", + "Ph1=1/2# #probability of winning the race by first horse\n", + "Ph2=1/3# #probability of winning the race by second horse\n", + "Ph3=1/6# #probability of winning the race by third horse\n", + "#X is the payoff function for the winning horse\n", + "X1=2# #X pays $2 as first horse wins the rac\n", + "X2=6# #X pays $6 as second horse wins the race\n", + "X3=9# #X pays $9 as third horse wins the race\n", + "E=X1*Ph1+X2*Ph2+X3*Ph3\n", + "print 'expected pay off for the race is = ',E" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.16 Pg 162" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Variance of X is = 1.5\n", + "Standard deviation of X is = 1.2247\n", + "variance of X is = 0.4602\n", + "Standard deviation for X = 0.6784\n" + ] + } + ], + "source": [ + "from numpy import sqrt\n", + "u=3 #mean of distribution of random variable X\n", + "x=[0,1,2,3,4,5,6] #values of X in the distribution as x where it is the number of times heads occurs when a coin is tossed six times\n", + "p=[1/64,6/64,15/64,20/64,15/64,6/64,1/64] #probabilities of occurrence of each value of X (x) in the distribution such that 1/64 gives the probability of occurrence of no heads at all,6/64 gives that of occurrence of heads for only one time and so on\n", + "k=0\n", + "for i in range(0,7):\n", + " k=k+((x[i]-u)**2)*p[i]\n", + "\n", + "print 'Variance of X is = ',k\n", + "s=sqrt(k)#\n", + "print'Standard deviation of X is = ',round(s,4)\n", + "\n", + "u=0.75# #mean \n", + "x=[0,1,2,3]# #values of random variable X as x in the probability distribution of X\n", + "p=[84/220,108/220,27/220,1/220]# #probability of values in x which appear in distribution table of X\n", + "g=0#\n", + "for i in range(0,4):\n", + " g=g+((x[i])**2)*p[i]\n", + "\n", + "h=g-(u*u) \n", + "print 'variance of X is = ',round(h,4)\n", + "sd=sqrt(h)#\n", + "print 'Standard deviation for X = ',round(sd,4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.17 Pg 162" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "expected number of times the man will hit the target = 20.0\n", + "Standard deviation = 4.0\n", + "expected number of correct answers in the exam = 2.5\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import sqrt\n", + "p=1/5# #probability of the man hitting a target\n", + "q=1-1/5# #probability of the man not hitting the target\n", + "n=100# #number of times the man fires\n", + "e=n*p# \n", + "print 'expected number of times the man will hit the target = ',e\n", + "r=sqrt(n*p*q)# \n", + "print 'Standard deviation = ',r\n", + "\n", + "p=1/2# #probability of guessing the correct answer in a five question true-false exam\n", + "n=5# #number of questions in the exam\n", + "g=n*p#\n", + "print 'expected number of correct answers in the exam = ',g" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.18 Pg 164" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "thus the probability that a value of X lies between 65 and 85 is atleast 0.75 according to Chebyshev inequality\n", + "thus the probability that a value of X lies between 60 and 90 is atleast 0.8888889 according to Chebyshev Inequality\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "u=75# #mean of a random variable X\n", + "n=5# #standard deviation of X\n", + "k=2# #for k=2\n", + "l1=u-k*n\n", + "l2=u+k*n\n", + "P1=1-(1/k)**2\n", + "print \"thus the probability that a value of X lies between 65 and 85 is atleast 0.75 according to Chebyshev inequality\"\n", + "k=3# #for k=3\n", + "l1=u-k*n\n", + "l2=u+k*n\n", + "P2=1-(1/k)**2\n", + "print \"thus the probability that a value of X lies between 60 and 90 is atleast 0.8888889 according to Chebyshev Inequality\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex7.19 Pg 166" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a die is tossed 5 times with the following outcomes\n", + "for a fair die the mean is 3.5.So law of large numbers tells us that as number of outcomes increase for this experiment,there is a greater likelihood that themean will get closer to 3.5\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"a die is tossed 5 times with the following outcomes\"\n", + "x1=3#\n", + "x2=4#\n", + "x3=6#\n", + "x4=1#\n", + "x5=4#\n", + "xmean=(x1+x2+x3+x4+x5)/5 #mean of the outcomes\n", + "print \"for a fair die the mean is 3.5.So law of large numbers tells us that as number of outcomes increase for this experiment,there is a greater likelihood that themean will get closer to 3.5\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch8_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch8_1.ipynb new file mode 100644 index 00000000..ad89800d --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch8_1.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter8 - Graph Theory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex8.1 Pg 193" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "given a graph with 6 nodes viz. node1,node2....node6\n", + "The adjacency matrix for A is : \n", + "[[0 1 0 1 1 0]\n", + " [1 0 1 0 1 0]\n", + " [0 1 0 0 0 1]\n", + " [1 0 0 0 0 0]\n", + " [1 1 0 0 0 0]\n", + " [0 0 1 0 0 0]]\n", + "sequence A is a path from node4 to node6# but it is not a trail since the edge from node1 to node2 is used twice\n", + "The adjacency matrix for B is : \n", + "[[0 0 0 1 1 0]\n", + " [0 0 0 0 1 1]\n", + " [0 0 0 0 0 0]\n", + " [1 0 0 0 0 0]\n", + " [1 1 0 0 0 0]\n", + " [0 1 0 0 0 0]]\n", + "sequence B is not a path since there is no edge from node2 to node6 is used twice\n", + "sequence C is a trail since is no edge is used twice\n", + "The adjacency matrix for D is : \n", + "[[0 0 0 1 1 0]\n", + " [0 0 0 0 0 0]\n", + " [0 0 0 0 1 1]\n", + " [1 0 0 0 0 0]\n", + " [1 0 1 0 0 0]\n", + " [0 0 1 0 0 0]]\n", + "sequence D is a simple path from node4 to node6\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "# refer to page 8.6\n", + "print 'given a graph with 6 nodes viz. node1,node2....node6'\n", + "A=mat([[0, 1, 0, 1 ,1 ,0],[1, 0, 1, 0, 1, 0],[0, 1, 0, 0, 0, 1],[1, 0, 0 ,0 ,0 ,0],[1 ,1, 0, 0, 0, 0],[0, 0, 1, 0 ,0 ,0]])\n", + "print 'The adjacency matrix for A is : \\n',A\n", + "print 'sequence A is a path from node4 to node6# but it is not a trail since the edge from node1 to node2 is used twice'\n", + "B=mat([[0 ,0, 0, 1, 1, 0],[0, 0 ,0 ,0 ,1, 1],[0, 0, 0, 0 ,0, 0],[1, 0, 0 ,0 ,0,0],[1, 1, 0, 0, 0, 0],[0,1, 0 ,0, 0, 0]])\n", + "print 'The adjacency matrix for B is : \\n',B\n", + "print 'sequence B is not a path since there is no edge from node2 to node6 is used twice'\n", + "C=mat([[0, 0, 0 ,1 ,1 ,0],[0, 0, 1, 0, 1, 0],[0, 1, 0, 0, 1, 0],[1, 0, 0, 0, 0, 0],[1, 1, 1, 0, 0, 1],[0, 0, 0, 0, 1, 0]])\n", + "print 'sequence C is a trail since is no edge is used twice'\n", + "D=mat([[0, 0 ,0 ,1, 1, 0],[0, 0, 0, 0, 0, 0],[0, 0 ,0 ,0, 1, 1],[1, 0, 0,0, 0, 0],[1, 0, 1, 0, 0, 0],[0, 0, 1 ,0 ,0 ,0]])\n", + "print 'The adjacency matrix for D is : \\n',D\n", + "print 'sequence D is a simple path from node4 to node6'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex8.2 Pg 200" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "to find:minimal spanning tree\n", + "the adjacency matrix for the weighted graph(nodeA,nodeB...nodeF) of 6 nodes is :\n", + "edges of the graph\n", + "deleting edges without disconnecting the graph until 5 edges remain\n", + "weight of the minimal spanning tree is : 24\n", + "another method of finding a minimal spanning tree is :\n", + "weight of the minimal spanning tree is : 24\n" + ] + } + ], + "source": [ + "from numpy import int32,mat\n", + "print 'to find:minimal spanning tree'\n", + "print 'the adjacency matrix for the weighted graph(nodeA,nodeB...nodeF) of 6 nodes is :'\n", + "K=mat([[0,0,7,0, 4, 7],[0, 0, 8, 3, 7 ,5],[7, 8, 0, 0, 6, 0],[0, 3 ,0 ,0, 0, 4],[4, 7 ,6 ,0 ,0 ,0],[7, 5, 0, 4, 0, 0]])\n", + "print 'edges of the graph'\n", + "AC=7# \n", + "AE=4#\n", + "AF=7#\n", + "BC=8#\n", + "BD=3#\n", + "BE=7#\n", + "BF=5#\n", + "CE=6#\n", + "DF=4#\n", + "M=[AC,AE,AF,BC,BD,BE,BF,CE,DF]# #set of all edges\n", + "V=int32(M)#\n", + "L=sorted(V, reverse = True) #edges sorted in decreasing order of their weights\n", + "print 'deleting edges without disconnecting the graph until 5 edges remain'\n", + "N=[BE,CE,AE,DF,BD]# #edges in minimum spanning tree\n", + "Sum=sum(N)#\n", + "print 'weight of the minimal spanning tree is : ',Sum\n", + "\n", + "\n", + "print 'another method of finding a minimal spanning tree is :'\n", + "K=sorted(V)#edges sorted in increasing order\n", + "N2=[BD,AE,DF,CE,AF]# #edges in minimum spanning tree\n", + "Sum2=sum(N2)#\n", + "print 'weight of the minimal spanning tree is : ',Sum2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch9_1.ipynb b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch9_1.ipynb new file mode 100644 index 00000000..fa7f471b --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch9_1.ipynb @@ -0,0 +1,113 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter9 - Directed Graphs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex9.1 Pg 233" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "adjacency matrix of graph G is: \n", + "[[0 0 0 1]\n", + " [1 0 1 1]\n", + " [1 0 0 1]\n", + " [1 0 1 0]]\n", + "the number of ones in A is equal to the number of edges in the graph i.e 8\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "A=mat([[0,0, 0, 1],[1, 0, 1, 1],[1, 0, 0, 1],[1, 0, 1, 0]])\n", + "print 'adjacency matrix of graph G is: \\n',A\n", + "A2=A**2\n", + "A3=A**3\n", + "print 'the number of ones in A is equal to the number of edges in the graph i.e 8'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex9.2 Pg 234" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "adjacency matrix of graph G is : \n", + "[[0 0 0 1]\n", + " [1 0 1 1]\n", + " [1 0 0 1]\n", + " [1 0 1 0]]\n", + "Replacing non zero entries of B4 with 1 ,we get path (reachability) matrix P is:\n", + "[1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]\n", + "there are zero entries in P,therefore the graph is not strongly connected\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "A=mat([[0, 0, 0, 1],[1, 0, 1, 1],[1 ,0 ,0 ,1],[1, 0, 1, 0]])\n", + "print 'adjacency matrix of graph G is : \\n',A\n", + "A4=A**4#\n", + "A3=A**3#\n", + "A2=A**2#\n", + "B4=A+A2+A3+A4#\n", + "B4=[4, 11, 7 ,7 ,0, 0, 0 ,0 ,3 ,7 ,4 ,4 ,4, 11, 7, 7]\n", + "for i in range(0,16):\n", + " if(B4[i]!=0):\n", + " B4[i]=1\n", + "print 'Replacing non zero entries of B4 with 1 ,we get path (reachability) matrix P is:\\n',B4\n", + "print 'there are zero entries in P,therefore the graph is not strongly connected'" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/ConGruenceEqn.png b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/ConGruenceEqn.png Binary files differnew file mode 100644 index 00000000..2e21a784 --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/ConGruenceEqn.png diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/DivisionAlgo.png b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/DivisionAlgo.png Binary files differnew file mode 100644 index 00000000..a67e3d9e --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/DivisionAlgo.png diff --git a/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/EuclideanAlgo.png b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/EuclideanAlgo.png Binary files differnew file mode 100644 index 00000000..a18a8f8f --- /dev/null +++ b/Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/EuclideanAlgo.png diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch10_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch10_1.ipynb new file mode 100644 index 00000000..c3e05470 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch10_1.ipynb @@ -0,0 +1,1096 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 10 : Frequency response of amplifiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.1: Page No 450" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nffgAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fcd593fb850>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fcd590ace90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from scipy import log10\n", + "from numpy import nditer\n", + "import numpy as np\n", + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "\n", + "#Asymptotic magnitude and phase response curves\n", + "w=range(0,70)\n", + "# Asymptotic magnitude response curve\n", + "a=[]\n", + "b=[]\n", + "c=[]\n", + "for i in range(0,len(w)):\n", + " a.append(32)\n", + " if w[i]<10:\n", + " b.append(0)\n", + " c.append(0)\n", + " elif w[i]<50:\n", + " b.append(14*(w[i]-10)/40)\n", + " c.append(0)\n", + " else:\n", + " b.append(20*log10(w[i]/10))\n", + " c.append(-20*log10(w[i]/50))\n", + " \n", + "\n", + "A=[]\n", + "for x,y,z in nditer([a,b,c]):\n", + " A.append(x+y+z)\n", + "#A=a+b+c#\n", + "\n", + "plot(w,A)\n", + "title(\"Asymptotic magnitude response curve\")\n", + "xlabel(\"omega(rad/sec)\")\n", + "ylabel(\"20 log |A(jomega)| in dB\")\n", + "show()\n", + "# Asymptotic phase response curve\n", + "w=range(0,600)\n", + "theta1=[] \n", + "theta2=[] \n", + "for i in range(0,len(w)):\n", + " if w[i]<1:\n", + " theta1.append(0)\n", + " theta2.append(0)\n", + " elif w[i]<5:\n", + " theta1.append(31.45*(w[i]-1)/4)\n", + " theta2.append(0)\n", + " elif w[i]<100:\n", + " theta1.append(45*log10(w[i]/10))\n", + " theta2.append(-45*log10(w[i]/50))\n", + " elif w[i]<500:\n", + " theta1.append(90)\n", + " theta2.append(-58.55-31.45*(w[i]-100)/400)\n", + " else:\n", + " theta1.append(90)\n", + " theta2.append(-90)\n", + "\n", + "theta=[]\n", + "for x,y in nditer([theta1,theta2]):\n", + " theta.append(x+y)\n", + "\n", + "plot(w,theta)#\n", + "title(\"Asymptotic phase curve response\")\n", + "xlabel(\"omega(rad/sec)\")\n", + "ylabel(\"theta(omega)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.2: Page No 453" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fcd59443250>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEZCAYAAAB1mUk3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xe8nGWZ//HPN0BEamgGCCWARImCwtICCkdFFl1I2KW6\nqxRdQlkpG6QE9yfHsoIsRcWyioBBTSAEJcGVEpVD0UCkCRqqmlCE0JsgBHL9/rjvgWFyTnLKzDzP\nzHzfr9d55akz1zkn57nnvq+7KCIwM7PONqzoAMzMrHguDMzMzIWBmZm5MDAzM1wYmJkZLgzMzAwX\nBh1HUo+kzxQdRzVJXZIeavJ7TpM0oZnvOVSSbpY0dinn/03S1XV6r6b/TqxYLgzakKT5kl6S9IKk\nxyRdKGnlfDryV5HxLZa0aZ1ea8APLUlbAVtFxMx6xNBEZwJf6utkRPwkIv6xifFYG3Fh0J4C2DMi\nVgW2AbYF/qvYkJagAt/7cODHBb7/YF0BfEjSyKIDGSxJyxcdg/XOhUGbi4i/AlcB76k6PFrSjZKe\nl3S1pLUqJyRdKulRSc9Kuq66WULSxyX9Md/3sKTjq87tKekOSc9I+o2kLXuLR9L1efP3ueayX9W5\nSZIWSvqrpEOqjr9N0pmSFuSaznclrZhrO1cC6+fXel7SupK2lzQnx/JXSedKWqEqjD2A66peX5L+\nK9eoFkqaImm1fG50rskcIulBSU9JOkLSdpLuzO9xbs33+GlJ8yQ9LekqSRtVndtd0r355/vt/DP+\nTD63maRfS3pS0hOSfixp9arf5d+BW4FeP/3nGG+o2l8s6XBJ9+U4v9Xbffnat0v6YY75j8B2NefX\nl3SZpMcl/VnS0TX3Tsn3zpN0YnVtLf9cT5R0J/CCpGGSdpT02xzXHZJ2rbp+dUnn59/dw5K+LGlY\nPvfO/DN7Nv+MLu7re7IBigh/tdkX8BfgI3l7Q+APwBfzfg/wAPBOYEXgWuC0qnsPAVYGVgDOAW6v\nOvcosHPeXh3YOm9vDSwkPUAEHJRjGN5HfIuBTav2u4BFQDewHPAx4G/A6vn8OcDlwAhgFWAW8NV8\nblfgoZrX3wbYnvRhZ2NgHnBsPrdyfv+1qq7/NHA/MDqfvwy4KJ8bna//DjAc+CjwCvAzYG1g/fy9\n75Kvn5Bf6135/T8P/CafWxt4Dtg7nzsGeBX4dD6/GfCR/LNfm1RgnVPzvX0DOKuPn+shwA01P+dZ\nwGr5/8HjwD/2ce/p+f1GABvk/zMP5nPDSIXQfwHLA5sAfwJ2r7r32vx/YhRwZ+XefH4+cFs+97b8\n75PAHvn8bnl/rbz/M+C7wNuBdYCbgYn53DRgct4eDuxU9N9bu3wVHoC/GvBLTX98LwDP5O1vAW/L\n564FTqm69kjgyj5eZ0R+oKya9xcAE4HVaq77LvClmmP3VB6Qvbxub4XBS8CwqmMLSQ90AS/WXD8O\n+HPVvQ/19j5V1x8H/DRvj8rvP7zq/K+AI6r2x5Ae0sN4szBYr+r8k8B+VfszgGPy9pXkh3veH0Yq\n2DYiFZK/qYntwerra87tDdxWc+wrwPl9XH8ISxYGO1XtXwKc1Me9bzzc8/5hlZ8rsAOwoOb6ycAF\nVfd+tOrcZ6p/J6QPBodU7Z9ELmyrjl2Vfz4jgb8DK1ad+wTw67w9BfgeMKrov7N2+3IzUXsKYEJE\nrBERoyPisxHxStX5x6q2XyZ92kbScpJOl/SApOdIf8RB+pQKsA/wcWC+Uq+kHfPxjYHjc5X/GUnP\nkD5drjeAmJ+KiMVV+y/luNYBVgJurXrtK6tiWoKkMZJ+rtTc9Rzw30ClKezZ/O+qVbesRyroKh4k\nfQKubptfWLX9ci/7q+TtjYFvVMX6VD4+Kr/PwzXhvrEvaaSki3PTyHPAj6rirliNVMj3V/XvuvIz\n7c36QHUi/sGq7Y1JTXHVv9/JwDv6uLf2e6Tm/MbAfjWvtzOwLqnQXAF4tOrc/5L+HwCcSPqAMFfS\nHyQd2sf3YwPkwsCq/SswntTEtDqpOUD5i4i4JSL2Jv1hXg5Mz/c9CPx3LnwqX6tExCV1iOlJ0sN2\nbNVrj4iI1fL53npGfZfUNPTO/H18nvx/PSL+Rvok+66q6/9KqgFUbAS8xlsf+P31IKlJo/pnsXJE\nzCE1s21QuVCSqveBrwKvA+/NcX+KJf9GtwB+P4i4luVR0vddUb39EPCXmu9ptYjYs+reDauur96u\nqP49PQj8qOb1Vo2IM0gFySukJqPKudUjYkuAiFgYERMjYhSpI8B3VKeeaZ3OhUFn6qsnzyqkP8Sn\nc3L2q2/cIK2g1I999Yh4ndQM9Xo+fR5wRE7cStLKkv5JUl+fQheS2seXKdcWzgO+LmmdHMsoSbtX\nvdZalYRv1ffxAvCSpHeTmsKq/YKUa6iYBvxnThavkr/vi2tqKstS+Zn+L3CKcuI9J0MrSfJfAFtK\nmqDUq+Y/SJ+Gq+P+G/C8pFHACW95A2lFUj5k9gDi6i3G3kwHJksaIWkD4Oiqc3NJid8Tc7J4OUnv\nlbRtL/eOAj7L0rsv/xjYKyfTl1PqDNAlaVREPApcA5wtadWcbN5M0i4AkvbL8UGq5QWpOcyGyIVB\nZ4qa7cr+RaTmkkdICcQ5Ndd+EvhLbsKYCPwbQETcSmpj/hbwNCmBetBS3r8bmJKbAfZl2WMfTiIl\nvW/K7z2b1K5PRNxDepj/OfdmWRf4HKmW8zzwfeDimtf/fiX27AJSk8z1wJ9JzSnVD8P+jMuIHM/l\nwNeAi3Osd5F7/0TEk8B+wBmkGs8WwC2kAhjgi6SH/XOkbqSX1bz3XsC1EVHd9FMbQ+3vdmnnq32R\n9Lv/C6n9/qKq7+l1YE/g/aSfzxOkn2GlAP4S6RP9X0gP8ktJOZfeg4x4mJRoP4WU1H4QOJ43n0cH\nkZLD80j/ny7lzUJzW9L/gxeAmaRczfy+3sv6TxGNGX8k6QLgn4DHK1U8SduTHhgrkKrhR0XE7/K5\nyaReHa+TfsHXNCQwM0DST4DpUeDAs9xd8iHgXyPiun5cfxMp2Tyv4cENgaQjgf0j4kNFx2L918jC\n4IOkXiAXVRUGPaRujFdL+hhwYkR8KFepp5K6Jo4CfgmMGWA13az0cvPWXFIe5ARSE9amNQn+lpJr\nY5uRapKbAz8Hzo2IbxYamA1Iw5qJIuIGluz18CipLzKkbouP5O0JwLSIWJSrfA+QuhWatZtxpP/f\nT5Bqznu3ckGQDSflSp4nddO9nDQuw1pIs4eGnwzcKOlMUkE0Lh9fH7ip6rqHSTUEs7YSEV8ktc+3\njYh4EOh1xLm1jmYnkM8n5QM2Av6TlLjrS6GTqZmZdZJm1wy2j4jd8vYM4Ad5+xHe2jd5A95sQnqD\nJBcQZmaDEBFLnRyy2TWDB6ompPowcF/engUcKGm4pE1ISai5vb1A0UO2+/N16qmnFh6D43ScjtMx\nVr76o2E1A0nTSAN71laawfALpL7p35b0NlJviokAETFP0nRSv+JKl1PXAszMmqRhhUFEfKKPUzv0\ncf1XqRrxamZmzeMRyA3Q1dVVdAj94jjry3HWVyvE2Qox9lfDBp01giS3HpmZDZAkomQJZDMzKyEX\nBmZm5sLAzMxcGJiZGS4MzMwMFwZmZoYLAzMzw4WBmZnhwsDMzGj+FNZWEosXw333wUAGdK+wAmy2\nGWip4xjNrBW5MOhQRx4JP/85rLZa/+954gmYPBmOP75xcZlZMVwYdKCpU+Haa+HuuwdWGMyfD9tv\nDzvtBOPGLfNyM2shnqiuw9x7L3zgAzB7Nrz//QO/f+ZMOOYYuP12WHPN+sdnZvXXn4nqXBh0kJdf\nhh13hKOOgsMPH/zrTJoEDzyQCgbnD8zKr9BZSyVdIGmhpLtqjh8t6W5Jf5D0tarjkyXdL+keSbs3\nKq5OdtxxMHYsTJw4tNc5/XRYuBDOOac+cZlZ8RqZM7gQOBe4qHJA0oeA8cBWEbFI0jr5+FjgAGAs\nMAr4paQxEbG4gfF1lKlT4de/hltvHfqn+eHD4ZJLYIcdUv5gxx3rE6OZFadhNYOIuAF4pubwkcBp\nEbEoX/NEPj4BmBYRiyJiPvAAsH2jYus0994Lxx4L06cPLGG8NKNHw3nnwYEHwtNP1+c1zaw4zR50\ntjmwi6SbJPVI2jYfXx94uOq6h0k1BBuil1+G/feHL38Ztt66vq89fjzssw8ccsjAxiuYWfk0u2vp\n8sAaEbGjpO2A6cCmfVzb6+Olu7v7je2urq62WoO0EY47DrbYYmgJ46U57TTYZRc4+2yPPzAri56e\nHnp6egZ0T0N7E0kaDVwREVvm/SuB0yPiurz/ALAj8O8AEXF6Pn4VcGpE3Fzzeu5NNABTp0J3N9xy\nS/2ah3qzYEEaf3D55R5/YFZGZVwD+XLgwwCSxgDDI+JJYBZwoKThkjYhNSfNbXJsbeW+++qfJ+jL\nxhs7f2DW6hrZtXQa8FtgjKSHJB0KXABsmrubTgMOAoiIeaQmo3nAlcBRrgIM3ssvw377wVe+MriB\nZYMxfjzsuy8cfLDzB2atyIPO2tDhh8Nzz8G0ac0dFPbqqyl/sN9+zh+YlUl/mok8N1Gbqcw7dMst\nzR8dXBl/4PmLzFqPawZtZKjzDtXLrFlw9NGev8isLDw3UQep17xD9XL88SmJPWuW5y8yK5oLgw5y\n+OHw/POpmagMD1/nD8zKwzmDDjFtWnF5gr44f2DWWlwzaHH33Qc771x8nqAvzh+YFc/NRG3u5ZfT\nJ+4jjyxHnqAvzh+YFcuFQZs74og0nqAseYK+vPoqfPCDacI85w/Mms85gzY2bVpan6BMeYK+OH9g\nVn6uGbSgsownGCivn2xWDDcTtaGyjScYqEmT4P77nT8wayYXBm2obOMJBsr5A7Pmc86gzRQ571C9\n1K6f7PyBWTm4ZtAiWjVP0BePPzBrHjcTtYlWzxP0xeMPzJrDhUGbKGp9gkbz/EVmzVHospeSLpC0\nMK9qVnvueEmLJa1ZdWyypPsl3SNp90bF1WoqeYLvf7+9CgJ4M39wxhkwZ07R0Zh1tkaugXwhsEft\nQUkbAh8FFlQdGwscAIzN93xHUrPXZy6de+9t3jrGRfH6yWbl0LAHbkTcADzTy6mzgRNrjk0ApkXE\nooiYDzwAbN+o2FrByy+n7pfNXMe4KF4/2ax4Tf30LWkC8HBE3Flzan3g4ar9h4FRTQushI47DrbY\nAiZOLDqS5jjtNHj8cTj77KIjMetMTRtnIGkl4BRSE9Ebh5dyS6+fEbu7u9/Y7urqoqurqw7RlUtl\n3qFbb22/PEFfPH+RWf309PTQ09MzoHsa2ptI0mjgiojYUtKWwC+Bl/LpDYBHgB2AQwEi4vR831XA\nqRFxc83rtX1vosp4gmuuga23Ljqa5vP8RWb1V2hvoloRcVdEjIyITSJiE1JT0DYRsRCYBRwoabik\nTYDNgbnNiq0sKnmCL3+5MwsCgAkTYJ994JBDnD8wa6ZGdi2dBvwWGCPpIUmH1lzyxp96RMwDpgPz\ngCuBo9q+CtCL446DsWPba2DZYJx+esofnHNO0ZGYdQ4POiuJqVOhuzvNO9Su3UgHYsGClD+YOTON\nvjazwfMI5BbRbvMO1cusWSl/cNttzh+YDYULgxZQmXfoyCPTMpb2Vscfn9Y/mDmzc3pWmdWbC4MW\n0OrrEzRaZf6i/fdPC+OY2cB5PYOSa4f1CRqtdvyB8wdmjeGaQUGcJxgYr39gNnhuJiqpdl2foNG8\n/oHZ4LgwKCnnCQankj/Yd1/43OeKjsasdThnUEJTp3bevEP1Up0/2Hlnz19kVk+uGTRRp887VC/O\nH5gNjJuJSsTjCerL+QOz/nNhUCLtuo5xUbx+sln/OWdQEp24PkGj1eYPPP7AbGhcM2iw++5LDyvn\nCRrD8xeZLZubiQrm8QTN4fmLzJbOhUHBPJ6gOTx/kdnSOWdQIM871Dyev8hs6Bq50tkFkhZKuqvq\n2P9IulvS7yX9VNLqVecmS7pf0j2Sdm9UXM1w771w7LEwfboXqmmWjTeG886DAw+Ep58uOhqz1tPI\nNZAvBPaoOXYN8J6IeB9wHzAZQNJY4ABgbL7nO5Katj5zPVXWMf7KVzwBXbONH+/1k80Gq2EP3Ii4\nAXim5tjsiFicd28GNsjbE4BpEbEoIuYDDwDbNyq2RjruONhiC5g4sehIOtNpp3n9ZLPBKDJn8Glg\nWt5eH7ip6tzDwKimRzREzhMUz/kDs8EppDCQ9Hng1YiYupTLeq3od3d3v7Hd1dVFV1dXXWMbrEqe\nYPZs5wmKVp0/8PgD60Q9PT309PQM6J6Gdi2VNBq4IiK2rDp2CHAY8JGI+Hs+djJARJye968CTo2I\nm2ter5RdSz2eoJw8/sAs6U/X0qYmaSXtAZwATKgUBNks4EBJwyVtAmwOzG1mbENx3HEwdqzzBGXj\n/IFZ/zWsmUjSNGBXYG1JDwGnknoPDQdmK31UmxMRR0XEPEnTgXnAa8BRpawC9GLaNOcJyqo6fzBu\nnNc/MFsaj0Aegsq8Q17HuNy8/oF1urpMRyHpPcAuwGhSUnc+cENE/LE+YfZfmQqDl19OnzSPPNJ5\nglYwaVLKH3j9A+tEQyoMJH0KOBp4itR+/1dAwHqkMQBrA9+IiB/XM+ilKVNhcMQRaX0CzzvUGl59\nFT74wTQg0OsfWKcZ6txEa5B6/LzQx4uvBhwy+PBaV2V9AucJWkft+APnD8zeyjmDAXKeoLXNnJnW\nP3D+wDpJvXIGbwc+A7wHWDEfjoj4dF2iHICiCwOvY9wenD+wTlOvcQY/AkYC/wj0kOYTenHI0bWg\nyngCJ4xb2+mnp/EHZ59ddCRm5dGfmsEdEfF+SXdGxFaSVgBujIgdmhPiW2IprGYwdSp0d6c8gaeb\naH3z56f8wcyZzh9Y+6tXzeDV/O9zkrYERgDrDDW4VuL1CdrP6NFe/8CsWn8Kg/MkrQn8F2naiHnA\nGQ2NqkS8PkH7mjAB9t0XDj7Y6x+YuTfRMngd4/ZWWT95333hc58rOhqzxqjLGsiSjieNPBZvTiv9\nHHBrRNwx5ChLzOsTtL/q8Qc77+z8gXWu/iSQpwLbAleQCoR/Au4CNgZmRMTXGh1kVSxNqxncey98\n4AMeT9ApPH+RtbN6jTO4AfhYRLyY91cBfkFaq/jWiNiiTvEuU7MKA69P0JmOPz4NKvT4A2s39epN\ntA5v9igCWASMjIiXgL/3fktr8zrGnamy/oHHH1gn6s96Bj8BbpZ0OamZaC9gqqSVST2L2srUqWne\noVtv9afDTuP5i6yT9as3kaTtgJ3y7m8i4pZ+3HMBKb/weGXZy9xF9RJSvmE+sH9EPJvPTQY+DbwO\nHBMR1/Tymg1tJqrkCa65BrbeumFvYyXn+Yus3dRz2csVgRci4hvAgrw05bJcSMorVDsZmB0RY4Bf\n5X0kjQUOAMbme74jqalLclbGE3z5yy4IOt2ECbDPPh5/YJ1lmQ9cSd3AieQHN2nZymWuYRARNwDP\n1BweD0zJ21OAvfP2BGBaRCyKiPnAA6Q1E5qmkidwwtjA8xdZ5+lPzuCfga2BWwEi4hFJqw7y/UZG\nxMK8vZA0AR7A+sBNVdc9DIwa5HsMmMcTWC3nD6zT9Kcp5pWIWFzZyYnjIcuN/0urhDelgu55h6wv\nnr/IOkl/agaXSvoeMELSRFKS9weDfL+FktaNiMckrQc8no8/AmxYdd0G+dgSuru739ju6uqiq6tr\nkKF43iFbtgkT4LrrUv7A4w+sVfT09NDT0zOge/rbm2h3YPe8e3VEzO7Xi0ujgSuqehOdATwVEV+T\ndDIwIiJOzgnkqaQ8wSjgl8A7a7sO1bs3kecdsv7w+snW6uoyArnqxVYn1SQCICKWWnGWNA3YFVib\nlB/4AjATmA5sxJJdS08h1TpeA46NiKt7ec26FQZen8AGwusfWCur13QUhwNfBF4BKrmDiIhN6xLl\nANSrMPC8QzYYHn9grapehcEDwI4R8WQ9gxuMehQGnnfIhsLrJ1srqtegsz8DL9cnpOJV1jH2vEM2\nGB5/YO2qP72JTgbmSJrDmxPWRUQc07iwGmPaNM87ZENTGX+www4ef2DtpT/NRLcA15PWMFhMXuQm\nIqYs9cYGGEozkecdsnry+gfWSuqVM7g9Ikrx+BxsYVDJExx5JBxxRAMCs47k9Q+sVdSrMPgqsACY\nRepRBCy7a2kjDLYwOPxweO651EzkP1qrl8r6yfvt5/EHVm71Kgzms+TUEC3TtXTqVDj11JQn8HgC\nq7cFC9L4g8svd/7Ayquug87KQFLMmtX/eP/2t9Su6zyBNVIlf/DNb8Kwpk68PnArrAAf+Uj61zpH\nvWoGw4EjgV1INYTrgP+NiEX1CrS/JMWeew6s8PrkJ+GAAxoUkFl2zjmpp1rZ/fnPsMcecNZZRUdi\nzVSvwuB8UhfUKaSeRJ8CXouIf69XoP3V6JXOzNrdU0/BNtukWsyECUVHY81Sr8LgzojYalnHmsGF\ngdnQzZmTCoK5c9M03db+6jUC+TVJ76x60c1Ik8mZWQsaNw5OPDGt0/Dqq8u+3jpDf2oGHyGtZ/yX\nfGg0cGhENL2F1DUDs/pYvDjVDt71LjjzzKKjsUarW28iSSsC78q790bE3+sQ34C5MDCrn0r+4Nxz\nYfz4oqOxRhpSYSCpKyJ6lvEGH4qIawcf4sC4MDCrrzlzYO+9U/5g442LjsYaZaiFwZmk7qS/BG4B\nHiXlGNYFtgV2A66NiBPrGfTSuDAwq7+zzoJLL4Xrr08T8Vn7GXIzkaRVgQnAzkDlc8MC4EZgZkS8\nOMjAJgOfJE18dxdwKLAycEl+n/lUrYJWdZ8LA7M6i0j5gzFjnD9oV6UcgZzXRf41sEVEvCLpEuAX\nwHuAJyPiDEknAWtExMk197owMGuAp59+c/yB8wftpz+FQX/WM0DSnsBYYMXKsYj40iDjeh5YBKwk\n6XVgJeCvwGTSmsmQBrj1kNZSMLMGW3PNNJHj3nvD+97n/EEnWuY4A0nfA/YHjiGNQN6fN5uMBizP\ndnoW8CCpEHg2ImYDIyNiYb5sITBysO9hZgNXGX9wwAEef9CJ+jPobKeIOAh4OiK+COzIm91MBywP\nWjuONF5hfWAVSZ+svia3Bbk9yKzJJk2Cd7wDTjml6Eis2frTTFRZ//glSaOAp0g9igZrW+C3EfEU\ngKSfAuOAxyStGxGPSVoPeLy3m7u7u9/Y7urqoqurawihmFk1CX74w5Q/2GUX5w9aVU9PDz09PQO6\npz8jkL8AnAt8GPh2PnxeRPy/QcSIpPcBPwG2A/4O/BCYS2p6eioivibpZGCEE8hmxfD4g/ZSr4nq\nVqyMOM4jkVcE/j6UUciSTgQOJnUtvQ34d2BVYDqwEe5aalY4jz9oH/UqDG6LiG2WdawZXBiYNU9l\n/MHmm3v9g1Y3pK6lud1+fVIX0G1IPYkCWI3UHdTM2lht/sDrH7S3pU1HcTBwCCnhe0vVqReAH0bE\nTxse3ZIxuWZg1mSV/MHNN3v9g1ZVr2aifSNiRl0jGyQXBmbFOPNMmDHD+YNWVa/FbW6UdL6kq/KL\njpX0mbpEaGYtYdIkWGcdmDy56EisUfpTGPwQuIaUPwC4H/jPRgVkZuUzbFjKH8yYATNnFh2NNUJ/\nCoO1I+IS4HWAiFiEl7006zhrrQUXXwwTJ8KCBUVHY/XWn8LgRUlrVXYk7Qg817iQzKysxo2DE07w\n/EXtqD8J5H8gjUB+D/BHYB1g34j4fePDWyIWJ5DNCub1k1tPPddAXoG3roG8qA7xDZgLA7Ny8PrJ\nraWehcHOpFlGlyfPJhoRF9UhxgFxYWBWHp6/qHXUa5zBj4FNgTvISWSAiDi6HkEOhAsDs3Lx/EWt\noV6Fwd3A2DI8hV0YmJWL109uDfUadPYHYL36hGRm7aQyf9GMGTBrVtHR2FAsbW6iK/LmKsDWpDUH\nXsnHIiKanjZyzcCsnJw/KLchNRNJ6sqbZwAnkGYtrTgjIravR5AD4cLArLycPyiveuUMbo+IrWuO\n3RURW9YhxgFxYWBWXhGpm+mYMV7/oGyGlDOQdKSku4B3Sbqr6ms+cOcQAxshaYakuyXNk7SDpDUl\nzZZ0n6RrJI0YynuYWXNV5w88f1HrWVoz0erAGsDpwEm82Uz0QmUx+0G/qTQFuC4iLpC0PLAy8Hng\nyYg4Q9JJwBpeA9ms9cyZk3oYzZ3r9Q/Kom6DzuopFzK3R8SmNcfvAXaNiIWS1gV6IuLdNde4MDBr\nAV7/oFzq1bW03jYBnpB0oaTbJJ0naWVgZEQszNcsBEYWEJuZ1UFl/YNTTik6EuuvPtdAbvB7bgN8\nNiJ+J+nrwFuagyIiJPVaBeju7n5ju6uri66ursZFamaDUln/oLJ+sucvaq6enh56enoGdE8RzUTr\nAnMiYpO8/wFgMmnKiw9FxGOS1gOudTORWWvz+INyKGUzUUQ8BjwkaUw+tBtpauwrgIPzsYOBy5sd\nm5nVl9c/aB1NrxkASHof8ANgOPAn4FBgOWA6sBEwH9g/Ip6tuc81A7MW4/UPilfK3kRD4cLArDV5\n/YNiuTAws9Jw/qA4pcwZmFlncv6g3FwzMLOmqeQPPH9Rc7lmYGalMmwYTJkCl13m9Q/KxjUDM2s6\n5w+ayzUDMyulcePgxBOdPygT1wzMrBBeP7l5XDMws9Ly+snl4pqBmRXK+YPGc83AzErP4w/KwTUD\nMyuc5y9qLNcMzKwlVNY/uPRS5w+K4pqBmZWG8weN4ZqBmbUU5w+K45qBmZWK8wf155qBmbUc5w+K\nUVhhIGk5SbdLuiLvrylptqT7JF0jaURRsZlZsdZaCy6+GA47DBYsKDqazlBkzeBYYB5Qafc5GZgd\nEWOAX+V9M+tQzh80VyGFgaQNgI+T1kGutGONB6bk7SnA3gWEZmYlMmkSrLMOnHJK0ZG0v6JqBucA\nJwCLq46NjIiFeXshMLLpUZlZqVTWP/D8RY23fLPfUNKewOMRcbukrt6uiYiQ1Gu3oe7u7je2u7q6\n6Orq9SXMrE2suSZMm5bGH2y1FYweXXRE5dfT00NPT8+A7ml611JJXwU+BbwGrAisBvwU2A7oiojH\nJK0HXBsek9zaAAAKQ0lEQVQR7665111LzTrUmWemGsL118Pw4UVH01r607W00HEGknYFPhcRe0k6\nA3gqIr4m6WRgREScXHO9CwOzDuX1kwevVcYZVJ7upwMflXQf8OG8b2YGvDn+YMYMmDmz6Gjaj0cg\nm1lLmTMn1RB+9zvPX9RfrVIzMDPrN6+f3BiuGZhZy/H8RQPjmoGZtSXPX1R/rhmYWcvy+gf945qB\nmbU1z19UP64ZmFlL8/iDZXPNwMzaXvX4A+cPBs81AzNrC84f9M01AzPrGM4fDI1rBmbWNpw/6J1r\nBmbWUTx/0eC5ZmBmbacyf9HcuV7/AFwzMLMOVZm/6MADnT/oL9cMzKwtef6iN7lmYGYdy/MXDYxr\nBmbW1jz+oKQ1A0kbSrpW0h8l/UHSMfn4mpJmS7pP0jWSRjQ7NjNrPx5/0D9NrxlIWhdYNyLukLQK\ncCuwN3Ao8GREnCHpJGANr4FsZvXQ6fmDUtYMIuKxiLgjb78I3A2MAsYDU/JlU0gFhJnZkDl/sGyF\n5gwkjQauA94LPBgRa+TjAp6u7Fdd75qBmQ1ap+YP+lMzWL5ZwdTKTUSXAcdGxAvp+Z9EREjq9anf\n3d39xnZXVxddXV2NDdTM2kZ1/uD662H48KIjaoyenh56enoGdE8hNQNJKwA/B66MiK/nY/cAXRHx\nmKT1gGsj4t0197lmYGZD0on5g1LmDHIT0PnAvEpBkM0CDs7bBwOXNzs2M2t/zh/0rojeRB8Argfu\nBCpvPhmYC0wHNgLmA/tHxLM197pmYGZ10Un5g/7UDDzozMw61llnpRpCO+cPwIWBmdlSRby5/kE7\n5w9KmTMwMysLyesnV7hmYGYdr93zB64ZmJn1g+cvcs3AzAxo7/EHrhmYmfVTp48/cM3AzKxKO+YP\nXDMwMxugTs0fuGZgZlajkj8YMyYNTGt1rhmYmQ1CJX/QSeMPXDMwM+tDu+QPXDMwMxuCTsofuGZg\nZrYU7TD+wDUDM7Mh6pTxB64ZmJn1QyvnD1quZiBpD0n3SLpf0klFx2NmVjFuHJx4YvvmD0pTGEha\nDvgWsAcwFviEpC2KjWpwBroQdVEcZ305zvoqY5yTJsE73gGnnJL2yxjjYJWmMAC2Bx6IiPkRsQi4\nGJhQcEyD0ir/QRxnfTnO+ipjnLXrH5QxxsEqU2EwCnioav/hfMzMrDTWXBOmTYPDDoNnn1329a1i\n+aIDqOLMsJm1hEr+4CtfgT/9qeholrTXXjBx4sDuKU1vIkk7At0RsUfenwwsjoivVV1TjmDNzFrM\nsnoTlakwWB64F/gI8FdgLvCJiLi70MDMzDpAaZqJIuI1SZ8FrgaWA853QWBm1hylqRmYmVlxytSb\naKlaYUCapAskLZR0V9GxLI2kDSVdK+mPkv4g6ZiiY+qNpBUl3SzpDknzJJ1WdEx9kbScpNslXVF0\nLH2RNF/SnTnOuUXH0xdJIyTNkHR3/r3vWHRMtSS9K/8cK1/PlfjvaHL+W79L0lRJb+v1ulaoGeQB\nafcCuwGPAL+jhPkESR8EXgQuiogti46nL5LWBdaNiDskrQLcCuxdtp8ngKSVIuKlnFO6EfhcRNxY\ndFy1JE0C/gFYNSLGFx1PbyT9BfiHiHi66FiWRtIU4LqIuCD/3leOiOeKjqsvkoaRnkvbR8RDy7q+\nmSSNBn4NbBERr0i6BPhFREypvbZVagYtMSAtIm4Anik6jmWJiMci4o68/SJwN7B+sVH1LiJeypvD\nSbmk0j3IJG0AfBz4AbDUHhslUOr4JK0OfDAiLoCUSyxzQZDtBvypbAVB9jywCFgpF6wrkQquJbRK\nYeABaQ2SPzlsDdxcbCS9kzRM0h3AQuDaiJhXdEy9OAc4AVhcdCDLEMAvJd0i6bCig+nDJsATki6U\ndJuk8yStVHRQy3AgMLXoIHqTa4FnAQ+Semk+GxG/7O3aVikMyt+W1YJyE9EM4NhcQyidiFgcEe8H\nNgB2kdRVcEhvIWlP4PGIuJ2Sf+oGdo6IrYGPAf+RmzXLZnlgG+A7EbEN8Dfg5GJD6puk4cBewKVF\nx9IbSZsBxwGjSbX/VST9W2/Xtkph8AiwYdX+hqTagQ2SpBWAy4AfR8TlRcezLLmp4P+AbYuOpcZO\nwPjcHj8N+LCkiwqOqVcR8Wj+9wngZ6Tm17J5GHg4In6X92eQCoey+hhwa/6ZltG2wG8j4qmIeA34\nKen/7BJapTC4Bdhc0uhcEh8AtPEyE40lScD5wLyI+HrR8fRF0tqSRuTttwMfBW4vNqq3iohTImLD\niNiE1Fzw64g4qOi4aklaSdKqeXtlYHegdL3eIuIx4CFJY/Kh3YA/FhjSsnyC9CGgrO4BdpT09vx3\nvxvQa1NraQadLU2rDEiTNA3YFVhL0kPAFyLiwoLD6s3OwCeBOyVVHq6TI+KqAmPqzXrAlNxbYxjw\no4j4VcExLUtZmzRHAj9LzwOWB34SEdcUG1KfjgZ+kj/4/Qk4tOB4epUL1d2AsuZfiIjf55rqLaSc\n1m3A93u7tiW6lpqZWWO1SjORmZk1kAsDMzNzYWBmZi4MzMwMFwZmZoYLAzMzw4WBtRlJg55WQ9Jn\nJT0gabGkNWvOfTNPn/57SVsPPVKzcnFhYO1mKANnbiQtu7qg+qCkjwPvjIjNgYnAd4fwHmal5MLA\n2pKS/8kLetwpaf98fJik7+SFU66R9H+S9gGIiDsiYkEvLzcemJKvuRkYIWlkL+/5ifxed0k6ver4\ni5LOyAsJzZa0o6TrJP1J0l75muVyvHNz7WPisuKV9IV8/V2SvlfnH6F1GBcG1q7+BXgfsBVpyoD/\nyYv6/AuwcURsAXwKGMeyaxO9TaG+QfUFktYHTgc+BLwf2E5SZc2NlYBfRcR7gReALwEfBv45bwN8\nhjS98PakCeQOy9OLLy3ecyNi+7yQ0tvzDKpmg+LCwNrVB4CpkTwOXAdsR5qXaTpARCwEru3n69VO\nT11bgGxHWm/hqYh4HfgJsEs+92pEXJ2378rXvQ78gTS1MKSJ4w7Kc0XdBKwJbL6MeD8s6SZJd5IK\nl/f083sxW0JLTFRnNghB3+sLDHTdgdop1DdgydWiat9PvFlgLKo6vhh4FdJaDXn1qYrPRsTstwSa\n8hVLxCtpReDbpGUsH5F0KrBiv78jsxquGVi7ugE4ILe5r0P6lH4z8Btgn5xTGAl09XF/9QN4FnAQ\ngNLi7M/mT+nVfgfsKmktpTW7DyTVRvrrauCoSuEgaUxe4auveCsP/qfyIkX7Ud4ZU60FuGZg7SYA\nIuJnksYBv8/HToiIxyVdRuoxNI+UB7gNeA5A0jGk5StHkqb3/r+ImBgRv5D0cUkPkFbeWmJK5Yh4\nVNLJpGYcAT+PiCuqY6qNsWb7B6Qmo9vyvPOPA3uTFiBaIt6IeFbSeaSmpsco6bKl1jo8hbV1HEkr\nR8TfJK1FeojulPMKpdRq8Vprcs3AOtHP8wpqw4EvtcCDtdXitRbkmoGZmTmBbGZmLgzMzAwXBmZm\nhgsDMzPDhYGZmeHCwMzMgP8P7HvsmVOn2LsAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fcd58efccd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Bode's plots\n", + "from numpy import arange,nditer\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, title, show, xlabel, ylabel\n", + "\n", + "w=arange(0,8,0.1)\n", + "# Asymptotic magnitude response curve\n", + "a=[]\n", + "b=[]\n", + "c=[]\n", + "d=[]\n", + "e=[]\n", + "for i in range(0,len(w)):\n", + " a.append(40)\n", + " if w[i]<1.3:\n", + " b.append(20*w[i])\n", + " c.append(0)\n", + " d.append(0)\n", + " e.append(0)\n", + " elif w[i]<3:\n", + " b.append(20*w[i])\n", + " c.append(20*(w[i]-1.3))\n", + " d.append(0)\n", + " e.append(0)\n", + " elif w[i]<6:\n", + " b.append(20*w[i])\n", + " c.append(20*(w[i]-1.3))\n", + " d.append(-20*(w[i]-3))\n", + " e.append(0)\n", + " else:\n", + " b.append(20*w[i])\n", + " c.append(20*(w[i]-1.3))\n", + " d.append(-20*(w[i]-3))\n", + " e.append(-20*(w[i]-6))\n", + " \n", + "\n", + "A=[]\n", + "\n", + "for m,n,o,p,q in nditer([a, b, c, d, e]):\n", + " A.append(m+n+o+p+q)\n", + "\n", + "plot(w,A)\n", + "title(\"Amplitude (Gain) |A(j omega)| in dB\")\n", + "xlabel(\"log omega\")\n", + "ylabel(\"|A(j omega)| dB\")\n", + "show()\n", + "# Asymptotic phase response curve\n", + "\n", + "thetab=[]\n", + "thetac=[]\n", + "thetad=[]\n", + "thetae=[]\n", + "for i in range(0,len(w)):\n", + " thetab.append(90)\n", + " if w[i]<0.3:\n", + " thetac.append(0)\n", + " thetad.append(0)\n", + " thetae.append(0)\n", + " elif w[i]<2:\n", + " thetac.append(45*(w[i]-0.3))\n", + " thetad.append(0)\n", + " thetae.append(0)\n", + " elif w[i]<2.3:\n", + " thetac.append(45*(w[i]-0.3))\n", + " thetad.append(-45*(w[i]-2))\n", + " thetae.append(0)\n", + " elif w[i]<4:\n", + " thetac.append(90)\n", + " thetad.append(-45*(w[i]-2))\n", + " thetae.append(0)\n", + " elif w[i]<5:\n", + " thetac.append(90)\n", + " thetad.append(-90)\n", + " thetae.append(0)\n", + " elif w[i]<7:\n", + " thetac.append(90)\n", + " thetad.append(-90)\n", + " thetae.append(-45*(w[i]-5))\n", + " else:\n", + " thetac.append(90)\n", + " thetad.append(-90)\n", + " thetae.append(-90)\n", + "theta =[] \n", + "for m,n,o,p in nditer([thetab, thetac, thetad, thetae]):\n", + " theta.append(m+n+o+p)\n", + "\n", + "plot(w,theta)#\n", + "title(\"Phase theta(omega) in degrees\")\n", + "xlabel(\"log10 omega\")\n", + "ylabel(\"theta(omega)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.3: Page No 461" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CS = 18.57 µF \n", + "Here at f = 0 Hz, CS has infinite reactance.\n", + "Therefore, zero frequency fzero = 0 Hz here, i.e. the voltage transfer function is zero at DC.\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "#CS, Zero frequency\n", + "\n", + "gm=1e-3# # in mho\n", + "fL=10# # in hertz\n", + "# From Fig. 10.10\n", + "RS=6e3# # in ohms\n", + "I=RS/(1+RS*gm)# # Impedance seen by CS in ohms\n", + "CS=1/(2*pi*fL*I)# # in farads\n", + "CS=CS*1e6# # in micro-farads\n", + "print \"CS = %0.2f µF \"%CS\n", + "print \"Here at f = 0 Hz, CS has infinite reactance.\"\n", + "print \"Therefore, zero frequency fzero = 0 Hz here, i.e. the voltage transfer function is zero at DC.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.4: Page No 475" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fT = 400.50 MHz \n", + "fb = 2.50 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#fT, fb\n", + "\n", + "b_o=160#\n", + "f=50# # in Mega-hertz\n", + "b_jw=8#\n", + "wb=sqrt((2*pi*f)**2*b_jw**2/(b_o**2-b_jw**2))# # in Mega-rad/sec\n", + "fb=wb/(2*pi)# # in Mega-hertz\n", + "fT=fb*b_o# # in Mega-hertz\n", + "print \"fT = %0.2f MHz \"%fT\n", + "print \"fb = %0.2f MHz \"%fb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.5: Page No 477" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cπ = 24.38 pF \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#Cπ\n", + "\n", + "IC=1e-3# # in amperes\n", + "b_o=120#\n", + "b_jw=10#\n", + "f=25e6# # in hertz\n", + "C_mu=1e-12# # in farads\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "wb=sqrt((2*pi*f)**2*b_jw**2/(b_o**2-b_jw**2))# # in rad/sec\n", + "wT=wb*b_o# # in hertz\n", + "gm=IC/VT# # in mho\n", + "C_pi=gm/wT-C_mu# # in farads\n", + "C_pi=C_pi*1e12# # in pico-farads\n", + "print \"Cπ = %0.2f pF \"%C_pi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.7: Page No 490" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Midband gain = -43.80 \n", + "p2/p1 = 49.49 \n", + "Since p2/p1 >> 8, therefore dominant-pole approximation holds good.\n", + "Upper half-power frequency = 77.05 M rad/sec \n", + "Part (b)\n", + "Zi =26.14+-284.59j Ω \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "# (a) Midband gain, Upper half-power frequency\n", + "# (b) Zi\n", + "\n", + "ICQ=1e-3# # in amperes\n", + "RS=300# # in ohms\n", + "RC=1.2e3# # in ohms\n", + "bta=125#\n", + "fT=300e6# # in hertz\n", + "C_mu=0.5e-12# # in farads\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "\n", + "print \"Part (a)\"\n", + "gm=ICQ/VT# # in mho\n", + "r_pi=bta/gm# # in ohms\n", + "# To find C_pi\n", + "C_pi=gm/(2*pi*fT)-C_mu# # in farads\n", + "AVo=-bta*RC/(RS+r_pi)# # Midband gain\n", + "print \"Midband gain = %0.2f \"%AVo\n", + "R_pi0=RS*r_pi/(RS+r_pi)#\n", + "a1=R_pi0*C_pi+(R_pi0+RC*(1+gm*R_pi0))*C_mu# # in seconds\n", + "a2=R_pi0*RC*C_pi*C_mu# # in seconds\n", + "p1=1/a1# # in rad/sec\n", + "p2=a1/a2# # in rad/sec\n", + "print \"p2/p1 = %0.2f \"%(p2/p1)\n", + "print \"Since p2/p1 >> 8, therefore dominant-pole approximation holds good.\"\n", + "wH=p1*1e-6# # in M rad/sec\n", + "print \"Upper half-power frequency = %0.2f M rad/sec \"%wH\n", + "\n", + "print \"Part (b)\"\n", + "CM=C_pi+C_mu*(1+gm*RC)# # in farads\n", + "Zi=r_pi/(1+1J*wH*1e6*CM*r_pi)# # in ohms\n", + "print \"Zi ={0:.2f}+{1:.2f}j\".format(Zi.real,Zi.imag),\"Ω \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.12: Page No 530" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "fH = 2.59 MHz \n", + "Part (b)\n", + "Approximate location of the closest non-dominant pole = 28.67 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "# (a) Approximate value of fH\n", + "# (b) Approximate location of the closest non-dominant pole\n", + "\n", + "RS=600# # in ohms\n", + "RC1=1.5e3# # in ohms\n", + "RC2=600# # in ohms\n", + "r_pi1=1.2e3# # in ohms\n", + "gm1=0.1# # in mho\n", + "C1=24.5e-12# # in farads\n", + "C_pi1=C1# # in farads\n", + "C2=0.5e-12# # in farads\n", + "C_mu1=C2# # in farads\n", + "r_pi2=2.4e3# # in ohms\n", + "gm2=0.05# # in mho\n", + "C3=19.5e-12# # in farads\n", + "C_pi2=C3# # in farads\n", + "C4=0.5e-12# # in farads\n", + "C_mu2=C4# # in farads\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)\n", + " return c\n", + "\n", + "print \"Part (a)\"\n", + "R11_0=parallel(RS,r_pi1)# # in ohms\n", + "R33_0=parallel(RC1,r_pi2)# # in ohms\n", + "R22_0=R11_0*(1+gm1*R33_0)+R33_0# # in ohms\n", + "R44_0=R33_0*(1+gm2*RC2)+RC2# # in ohms\n", + "a1=R11_0*C1+R22_0*C2+R33_0*C3+R44_0*C4# # in seconds\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "print \"fH = %0.2f MHz \"%fH\n", + "\n", + "print \"Part (b)\"\n", + "R33_1=R33_0# # in ohms\n", + "R44_1=R44_0# # in ohms\n", + "# From Fig. 10.61(a)\n", + "R22_1=R33_0# # in ohms\n", + "# From Fig. 10.61(b)\n", + "R44_3=RC2# # in ohms\n", + "# From Fig. 10.61(c)\n", + "R33_2=parallel(parallel(r_pi2,RC2),parallel(1/gm1,R11_0))#\n", + "R44_2=R33_2*(1+gm2*RC2)+RC2# # in ohms\n", + "a2=R11_0*C1*R22_1*C2+R11_0*C1*R33_1*C3+R11_0*C1*R44_1*C4+R22_0*C2*R33_2*C3+R22_0*C2*R44_2*C4+R33_0*C3*R44_3*C4# # in seconds\n", + "p2=a1/a2#\n", + "f2=p2/(2*pi)# # in hertz\n", + "f2=f2*1e-6# # in Mega-hertz\n", + "print \"Approximate location of the closest non-dominant pole = %0.2f MHz \"%f2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.13: Page No 537" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "fH for cascode amplifier = 24.51 MHz \n", + "Part (b)\n", + "fH for common-emitter stage = 10.11 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "# (a) fH for cascode amplifier\n", + "# (b) fH for common -emitter stage\n", + "\n", + "RC1=1.5e3# # in ohms\n", + "RC2=RC1#\n", + "RS=300# # in ohms\n", + "r_pi=2e3# # in ohms\n", + "gm=0.05# # in mho\n", + "bta=100#\n", + "C_pi=19.5e-12# # in farads\n", + "C_mu=0.5e-12# # in farads\n", + "\n", + "print \"Part (a)\"\n", + "R_pi1=RS*r_pi/(RS+r_pi)# # in ohma\n", + "Ri2=r_pi/(1+bta)# # in ohms\n", + "RL1=RC1*Ri2/(RC1+Ri2)# # in ohms\n", + "a11=R_pi1*C_pi+(R_pi1*(1+gm*RL1)+RL1)*C_mu# # in seconds\n", + "a12=C_pi/gm+C_mu*RC2# # in seconds\n", + "a1=a11+a12# # in seconds\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "print \"fH for cascode amplifier = %0.2f MHz \"%fH\n", + "\n", + "print \"Part (b)\"\n", + "a1=R_pi1*C_pi+(R_pi1*(1+gm*RC1)+RC1)*C_mu# # in seconds\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "print \"fH for common-emitter stage = %0.2f MHz \"%fH" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.15: Page No 548" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "CB = 3.98 µF \n", + "CE = 406.11 µF \n", + "Part (b)\n", + "fE = 0.26 Hz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "## (a) CB and CL\n", + "# (b) Zero introduced by CE\n", + "\n", + "RE=1.5e3# # in ohms\n", + "Rs=600# # in ohms\n", + "bta=100#\n", + "r_pi=1e3# # in ohms\n", + "fL=50# # in hertz\n", + "\n", + "print \"Part (a)\"\n", + "fLB=fL/2# # in hertz\n", + "fLE=fLB# # in hertz\n", + "CB=1/(2*pi*fLB*(Rs+r_pi))# # in farads\n", + "CB=CB*1e6# # in micro-farads\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)\n", + " return c\n", + "CE=1/(2*pi*fLE*parallel(RE,(Rs+r_pi)/(1+bta)))# # in farads\n", + "CE=CE*1e6# # in micro-farads\n", + "print \"CB = %0.2f µF \"%CB\n", + "print \"CE = %0.2f µF \"%CE\n", + "\n", + "print \"Part (b)\"\n", + "fE=1e6/(2*pi*RE*CE)# # in hertz\n", + "print \"fE = %0.2f Hz \"%fE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.16: Page No 549" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Since p2/pi >> 8, therefore dominant-pole approximation holds good.\n", + "AVo = -93.75 \n", + "fH = 4.38 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#AVo, fH\n", + "\n", + "RC=1.5e3# # in ohms\n", + "Rs=0.6e3# # in ohms\n", + "# From Fig. 10.69\n", + "C_pi=19.5e-12# # in farads\n", + "r_pi=1e3# # in ohms\n", + "C_mu=0.5e-12# # in farads\n", + "gm=0.1# # in mho\n", + "bta=r_pi*gm#\n", + "AVo=-bta*RC/(Rs+r_pi)#\n", + "R_pi=Rs*r_pi/(Rs+r_pi)# # in ohms\n", + "R_mu=R_pi+(1+gm*R_pi)*RC# # in ohms\n", + "a1=R_pi*C_pi+R_mu*C_mu# # in seconds\n", + "a2=R_pi*C_pi*R_mu*C_mu# # in seconds\n", + "p2_pi=a1**2/a2# # p2/p1\n", + "print \"Since p2/pi >> 8, therefore dominant-pole approximation holds good.\"\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "print \"AVo = %0.2f \"%AVo\n", + "print \"fH = %0.2f MHz \"%fH" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.17: Page No 550" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a1 = 5.22 ns \n", + "a2 = 1.53e-21 sec square \n" + ] + } + ], + "source": [ + "#(b) a1, a2\n", + "\n", + "RS=0.3e3# # in ohms\n", + "r_pi=2e3# # in ohms\n", + "RC=0.6# # in ohms\n", + "gm=0.1e-3# # in mho\n", + "C_pi=19.5e-12# # in farads\n", + "C_mu=0.5e-12# # in farads\n", + "R_pi=RS*r_pi/(RS+r_pi)# # in ohms\n", + "a1=C_pi*R_pi+C_mu*(R_pi+RC+gm*R_pi*RC)# # in seconds\n", + "a1=a1*1e9# # in nano-seconds\n", + "a2=C_pi*R_pi*C_mu*RC# # in seconds square\n", + "print \"a1 = %0.2f ns \"%a1\n", + "print \"a2 = %0.2e sec square \"%a2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.18: Page No 552" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Upper 3 dB frequency = 2.00 MHz \n", + "Bandwidth:\n", + "Stage 1 only = 3.99 MHz \n", + "Stage 2 only = 3.99 MHz \n", + "Cascade = 2.00 MHz \n", + "Gain:\n", + "Stage 1 only = 157.50 \n", + "Stage 2 only = 19.53 \n", + "Cascade = 3076.74 \n", + "Gain-bandwidth product:\n", + "Stage 1 only = 628781932.47 MHz \n", + "Stage 2 only = 78003472.90 MHz \n", + "Cascade = 6142182172.51 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#Upper 3 dB frequency\n", + "\n", + "r_pi1=1.4e3# # in ohms\n", + "r_pi2=2.8e3# # in ohms\n", + "gm1=0.15# # in mho\n", + "gm2=0.05# # in mho\n", + "C_pi1=20e-12# # in farads\n", + "C_pi2=25e-12# # in farads\n", + "C_mu1=0.5e-12# # in farads\n", + "C_mu2=C_mu1 # in farads\n", + "bta1=gm1*r_pi1#\n", + "bta2=gm2*r_pi2#\n", + "# From Fig. 10.71\n", + "RS=600# # in ohms\n", + "RC1=1.5e3# # in ohms\n", + "RL2=600# # in ohms\n", + "# From ac model in Fig. 10.72\n", + "R_pi1=RS*r_pi1/(RS+r_pi1)# # in ohms\n", + "RL1=RC1*r_pi2/(RC1+r_pi2)# # in ohms\n", + "R_mu1=R_pi1+RL1+gm1*RL1*R_pi1# # in ohms\n", + "R_pi2=RL1# # in ohms\n", + "R_mu2=R_pi2+RL2+gm2*RL2*R_pi2# # in ohms\n", + "a11=C_pi1*R_pi1+C_mu1*R_mu1# # in seconds\n", + "a12=C_pi2*R_pi2+C_mu2*R_mu2# # in seconds\n", + "a1=a11+a12# # in seconds\n", + "fH1=1/(2*pi*a11)# # in hertz\n", + "fH2=1/(2*pi*a12)# # in hertz\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH1=fH1*1e-6# # in Mega-hertz\n", + "fH2=fH2*1e-6# # in Mega-hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "AV1=-bta1*RC1/(RS+r_pi1)# # Gain of first stage\n", + "AV2=-bta2*RL2/(RC1+r_pi2)# # Gain of second stage\n", + "AV=AV1*AV2# # Gain of cascade\n", + "print \"Upper 3 dB frequency = %0.2f MHz \"%fH\n", + "print \"Bandwidth:\"\n", + "print \"Stage 1 only = %0.2f MHz \"%fH1\n", + "print \"Stage 2 only = %0.2f MHz \"%fH2\n", + "print \"Cascade = %0.2f MHz \"%fH\n", + "print \"Gain:\"\n", + "print \"Stage 1 only = %0.2f \"%abs(AV1)\n", + "print \"Stage 2 only = %0.2f \"%abs(AV2)\n", + "print \"Cascade = %0.2f \"%AV\n", + "print \"Gain-bandwidth product:\"\n", + "print \"Stage 1 only = %0.2f MHz \"%(fH1*abs(AV1)*1e6)\n", + "print \"Stage 2 only = %0.2f MHz \"%(fH2*abs(AV2)*1e6)\n", + "print \"Cascade = %0.2f MHz \"%(fH*AV*1e6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.19: Page No 554" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Approximate value of fH 435.86 kHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#Approximate value of fH\n", + "\n", + "btaf=150#\n", + "VA=120# # in volts\n", + "fT=400e6# # in hertz\n", + "C_mu=0.5e-12# # in farads\n", + "ICQ=100e-6# # in amperes\n", + "RS=50e3# # in ohms\n", + "RC=250e3# # in ohms\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "gm=ICQ/VT# # in mho\n", + "r_pi=btaf/gm# # in ohms\n", + "ro=VA/ICQ# # in ohms\n", + "C_pi=btaf/(2*pi*fT*r_pi)-C_mu# # in farads\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "# From AC model in Fig. 10.73\n", + "Ri=r_pi+(1+btaf)*parallel(ro,r_pi)# # in ohms\n", + "R_mu1=parallel(RS,Ri)# # in ohms\n", + "# From Fig. 10.75(b)\n", + "R=(50+36.36)/(1+145)# # in ohms\n", + "R_pi1=parallel(r_pi,R)# # in ohms\n", + "R_pi2=parallel(r_pi,parallel((RS+r_pi)/(1+btaf),ro))# # in ohms\n", + "RL=parallel(ro,RC)# # in ohms\n", + "R_mu2=R_pi2*(1+gm*RL)+RL# # in ohms\n", + "a1=R_mu1*C_mu+R_pi1*C_pi+R_pi2*C_pi+R_mu2*C_mu# # in seconds\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-3# # in kilo-hertz\n", + "print \"Approximate value of fH %0.2f kHz \"%fH" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.20: Page No 556" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Low 3 dB frequency = 504.72 Hz \n", + "Part (b)\n", + "High 3 dB frequency = 12.27 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "# (a) Low 3 dB frequency\n", + "# (b) High 3 dB frequency\n", + "\n", + "# From Fig. 10.76\n", + "C_gd1=2e-12# # in farads\n", + "C_gs1=5e-12# # in farads\n", + "gm1=10e-3# # in mho\n", + "C1=1e-6# # in farads\n", + "C_gd2=2e-12# # in farads\n", + "C_gs2=5e-12# # in farads\n", + "gm2=10e-3# # in mho\n", + "C2=10e-6# # in farads\n", + "# From low-frequency equivalent cicuit in Fig. 10.77\n", + "RS=0.2e3# # in ohms\n", + "RG1=50e3# # in ohms\n", + "RS1=0.25e3# # in ohms\n", + "RS2=0.15e3# # in ohms\n", + "RD2=5e3# # in ohms\n", + "R=10e3# # in ohms\n", + "C3=5.3e-6# # in farads\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)\n", + " return c\n", + "\n", + "print \"Part (a)\"\n", + "# From low-frequency equivalent cicuit in Fig. 10.77\n", + "tau1=C1*(RS+RG1)# # in seconds\n", + "R_22=RD2+R# # in ohms\n", + "tau2=C2*R_22# # in seconds\n", + "R_33=parallel(RS2,1/gm2)# # in ohms\n", + "tau3=C3*R_33# # in ohms\n", + "fL=(1/tau1+1/tau2+1/tau3)/(2*pi)# # in hertz\n", + "print \"Low 3 dB frequency = %0.2f Hz \"%fL\n", + "\n", + "print \"Part (b)\"\n", + "# From high frequency equivalent cicuit in Fig. 10.78\n", + "R_gd1=parallel(RS,RG1)# # in ohms\n", + "# From Fig. 10.79\n", + "R_gs1=(R_gd1+RS1)/(1+gm1*RS1)# # in ohms\n", + "R_gs2=parallel(RS1,1/gm2)# # in ohms\n", + "R_gd2=R_gs2+parallel(RD2,R)+R_gs2*parallel(RD2,R)*gm2# # in ohms\n", + "a1=C_gd1*R_gd1+C_gs1*R_gs1+C_gs2*R_gs2+C_gd2*R_gd2# # in seconds\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "print \"High 3 dB frequency = %0.2f MHz \"%fH" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.21: Page No 559" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "AVo = 160.00 \n", + "Approximate value of fH = 0.34 MHz \n", + "Part (b)\n", + "Frequency of the nearest non-dominant pole = 5.31 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "# (a) AVo, Approximate value of fH\n", + "# (b) Frequency of the nearest non-dominant pole\n", + "\n", + "gm=1e-3# # in mho\n", + "Rd=40e3# # in ohms\n", + "Cgs=5e-12# # in farads\n", + "Cgd=1e-12# # in farads\n", + "Cds=1e-12# # in farads\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "\n", + "print \"Part (a)\"\n", + "RS=5e3# # in ohms\n", + "RD1=40e3# # in ohms\n", + "RD2=10e3# # in ohms\n", + "# From AC model of cascade amplifier in Fig. 10.80\n", + "Rds1=40e3# # in ohms\n", + "Rds2=40e3# # in ohms\n", + "R11_0=RS# # in ohms\n", + "RL1=parallel(Rds1,RD1)# # in ohms\n", + "R22_0=RS+RL1+gm*RS*RL1# # in ohms\n", + "R33_0=RL1# # in ohms\n", + "RL2=parallel(Rds2,RD2)# # in ohms\n", + "R44_0=RL1+RL2+gm*RL1*RL2# # in ohms\n", + "R55_0=RL2# # in ohms\n", + "C1=Cgs# # in farads\n", + "C2=Cgd# # in farads\n", + "C3=Cds+Cgs# # in farads\n", + "C4=Cds# # in farads\n", + "C5=Cds# # in farads\n", + "a1=C1*R11_0+C2*R22_0+C3*R33_0+C4*R44_0+C5*R55_0# # in seconds\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "AVo=gm*RL1*gm*RL2#\n", + "print \"AVo = %0.2f \"%AVo\n", + "print \"Approximate value of fH = %0.2f MHz \"%fH\n", + "\n", + "print \"Part (b)\"\n", + "R22_1=RL1# # in ohms\n", + "R33_1=RL1# # in ohms\n", + "R44_1=R44_0# # in ohms\n", + "R55_1=RL2# # in ohms\n", + "R33_2=parallel(RL1,parallel(1/gm,RS))# # in ohms\n", + "R44_2=R33_2+RL2+gm*R33_2*RL2# # in ohms\n", + "R55_2=R55_0# # in ohms\n", + "R44_3=RL2# # in ohms\n", + "R55_3=RL2# # in ohms\n", + "R55_4=parallel(RL1,parallel(1/gm,RL2))# # in ohms\n", + "a2=R11_0*C1*(R22_1*C2+R33_1*C3+R44_1*C4+R55_1*C5)+R22_0*C2*(R33_2*C3+R44_2*C4+R55_2*C5)+R33_0*C3*(R44_3*C4+R55_3*C5)+R44_0*C4*R55_4*C5# # in seconds\n", + "p2=a1/a2#\n", + "f=p2/(2*pi)# # in hertz\n", + "f=f*1e-6# # in Mega-hertz\n", + "print\"Frequency of the nearest non-dominant pole = %0.2f MHz \"% f" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.23: Page No 563" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Value of fH for the cascade = 3.53 MHz \n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#Value of fH for the cascade\n", + "\n", + "bta=100#\n", + "r_pi1=0.5e3# # in ohms\n", + "r_pi2=0.5e3# # in ohms\n", + "r_pi3=1e3# # in ohms\n", + "fT=200e6# # in hertz\n", + "C_mu=1e-12# # in farads\n", + "# From Fig. 10.85\n", + "RS=2e3# # in ohms\n", + "RE1=5e3# # in ohms\n", + "RC2=2e3# # in ohms\n", + "RC3=1e3# # in ohms\n", + "RE3=100# # in ohms\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "\n", + "# From Fig. 10.86\n", + "Ro1=parallel(RE1,(RS+r_pi1)/(1+bta))# # in ohms\n", + "gm2=bta/r_pi2# # in mho\n", + "gm3=bta/r_pi3# # in mho\n", + "C_pi2=bta/(2*pi*fT*r_pi2)-C_mu# # in farads\n", + "C_pi3=bta/(2*pi*fT*r_pi3)-C_mu# # in farads\n", + "\n", + "# From Fig. 10.87\n", + "C1=C_pi2# # in farads\n", + "C2=C_mu# # in farads\n", + "C3=C_pi3# # in farads\n", + "C4=C_mu# # in farads\n", + "R11_0=parallel(Ro1,r_pi1)# # in ohms\n", + "RL1=parallel(RC2,r_pi3+(1+bta)*RE3)# # in ohms\n", + "R22_0=R11_0+RL1*(1+gm2*R11_0)# # in ohms\n", + "\n", + "# From Fig. 10.88\n", + "R_dash=2.1e3/(1+10)# # in ohms\n", + "R33_0=parallel(RC2,R_dash)# # in ohms\n", + "\n", + "# From Fig. 10.89\n", + "R44_0=(3+2*98/13.1)*1e3# # in ohms\n", + "\n", + "a1=R11_0*C1+R22_0*C2+R33_0*C3+R44_0*C4# # in seconds\n", + "fH=1/(2*pi*a1)# # in hertz\n", + "fH=fH*1e-6# # in Mega-hertz\n", + "print \"Value of fH for the cascade = %0.2f MHz \"%fH" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch11_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch11_1.ipynb new file mode 100644 index 00000000..6925509c --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch11_1.ipynb @@ -0,0 +1,1129 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 11 : Feedback Amplifiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.1: Page No 585" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Open-loop gain = 2525.24 \n", + "Return ratio = 49.49 \n", + "Reverse transmission β of the feedback circuit = 0.0196 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import mat\n", + "#Open-loop gain, Return ratio, Reverse transmission β of feedback circuit\n", + "\n", + "# Let A be open-loop gain and B be return ratio\n", + "# For A, B 10% higher, -1.1A + 55.11B = -50.1\n", + "# For A, B 10% lower, -0.9A + 44.91B = -49.9\n", + "# Solving the two equations\n", + "a=mat([[-1.1, 55.11],[-0.9, 44.91]])\n", + "b=mat([[-50.1],[-49.9]])\n", + "c=(a**-1)*b\n", + "A=c[0,0]\n", + "B=c[1,0]\n", + "print \"Open-loop gain = %0.2f \"%A\n", + "print \"Return ratio = %0.2f \"%B\n", + "print \"Reverse transmission β of the feedback circuit = %0.4f \"%(B/A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.2: Page No 586" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Necessary amount of feedback = 0.01 \n", + "Gain without feedback = 145.89 \n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "#Necessary amount of feedback, Gain without feedback\n", + "\n", + "# Let A be gain without feedback and b be necessary amount of feedback\n", + "# AOL can assume values A, 1.1A, 0.9A, i.e. 10% variation\n", + "# For AOL = 1.1A yields, 50.01 + 1.1A(50.01b -1) = 0\n", + "# When AOL = 0.9A, 49.99 + 0.9A(49.99b - 1) = 0 \n", + "# Solving the two equations\n", + "\n", + "a=mat([[1.1*50.01, -1.1],[0.9*44.99, -0.9]])\n", + "b=mat([[-50.01],[-49.99]])\n", + "c=(a**-1)*b#\n", + "d=c[0,0]# # A*b\n", + "A=c[1,0]#\n", + "b=d/A#\n", + "print \"Necessary amount of feedback = %0.2f \"%b\n", + "print \"Gain without feedback = %0.2f \"%A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.3: Page No 595" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Fundamental output with feedback = 2.19 V\n", + "Second-harmonic distortion with feedback = 0.15 V\n", + "Part (b)\n", + "Input voltage = 0.20 V\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "# (a) Output voltage\n", + "# (b) Input voltage\n", + "\n", + "B1=36# # Fundamental output in volts\n", + "B2=7*B1/100# # Second-harmonic distortion in volts\n", + "Vs=0.028# # Input in volts\n", + "A=B1/Vs# # Gain\n", + "\n", + "print \"Part (a)\"\n", + "b=1.2/100# # Amount of feedback in volts\n", + "B1f=B1/(1+b*A)# # Fundamental output with feedback in volts\n", + "B2f=B2/(1+b*A)# # Second-harmonic distortion with feedback in volts\n", + "print \"Fundamental output with feedback = %0.2f V\"%B1f\n", + "print \"Second-harmonic distortion with feedback = %0.2f V\"%B2f\n", + "\n", + "print \"Part (b)\"\n", + "B1f=36# # Fundamental output with feedback in volts\n", + "B2f=1*B1f/100# # Second-harmonic distortion with feedback in volts\n", + "T=B2/B2f-1# # Return ratio\n", + "AF=A/(1+T)# # Feedback gain\n", + "Vs=B1f/AF# # Input voltage in volts\n", + "print \"Input voltage = %0.2f V\"%Vs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.4: Page No 599" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Closed loop parameters :\n", + "Gain = 90.91 \n", + "Input impedance = 11.00 kΩ\n", + "Output impedance = 38.18 Ω\n", + "Lower 3 dB frequency = 0.14 kHz\n", + "Upper 3 dB frequency = 5516.50 kHz\n" + ] + } + ], + "source": [ + "#Closed loop parameters\n", + "\n", + "Av=1000#\n", + "bta=0.01#\n", + "Zin=1# # in kilo-ohms\n", + "Zo=420# # in ohms\n", + "fL=1.5# # in kilo-hertz\n", + "fH=501.5# # in kilo-hertz\n", + "print \"Closed loop parameters :\"\n", + "T=Av*bta# # Return ratio\n", + "# From Fig. 11.18\n", + "Af=Av/(1+T)# # Closed loop gain\n", + "Zif=Zin*(1+T)# # Closed loop input impedance in kilo-ohms\n", + "Zof=Zo/(1+T)# # Closed loop output impedance in ohms\n", + "fLf=fL/(1+T)# # Closed loop lower 3 dB frequency in kilo-hertz\n", + "fHf=fH*(1+T)# # Closed loop upper 3 dB frequency in kilo-hertz\n", + "print \"Gain = %0.2f \"%Af\n", + "print \"Input impedance = %0.2f kΩ\"%Zif\n", + "print \"Output impedance = %0.2f Ω\"%Zof\n", + "print \"Lower 3 dB frequency = %0.2f kHz\"%fLf\n", + "print \"Upper 3 dB frequency = %0.2f kHz\"%fHf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.5: Page No 603" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Output signal voltage = 01 V\n", + "Output noise voltage = 0.01 V\n", + "Improvement in S/N ratio = 40.00 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import log10\n", + "#Output signal voltage, Output noise voltage, Improvement in S/N ratio\n", + "\n", + "A1=1#\n", + "Vs=1# # in volts\n", + "Vn=1# # in volts\n", + "A2=100#\n", + "bta=1#\n", + "Vos=Vs*A1*A2/(1+bta*A1*A2)# # Output signal voltage in volts\n", + "Von=Vn*A1/(1+bta*A1*A2)# # Output noise voltage in volts\n", + "SNRi=20*log10(Vs/Vn)# # Input S/N ratio in dB\n", + "SNRo=20*log10(Vos/Von)# # Output S/N ratio in dB\n", + "SNR=SNRo-SNRi# # Improvement in S/N raio in dB\n", + "print \"Output signal voltage = %02.f V\"%Vos\n", + "print \"Output noise voltage = %0.2f V\"%Von\n", + "print \"Improvement in S/N ratio = %0.2f dB\"%SNR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.6: Page No 604" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (b)\n", + "R2/R1 = 9.01 \n", + "Part (c)\n", + "Amount of feedback = 60.00 dB\n", + "Part (d)\n", + "Vo = 10.00 V\n", + "Vf = 1.00 V\n", + "Vi = 0.00 V\n", + "Part (e)\n", + "Percentage decrease in Af = 0.02 %\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "# (b) R2/R1\n", + "# (c) Amount of feedback in decibels\n", + "# (d) Vo, Vf, Vi\n", + "# (e) Decrease in Af\n", + "\n", + "\n", + "print \"Part (b)\"\n", + "A=1e4#\n", + "Af=10#\n", + "bta=(A/Af-1)/A# # Feedback factor\n", + "R2_R1=1/bta-1# # R2/R1\n", + "print \"R2/R1 = %0.2f \"%R2_R1\n", + "\n", + "print \"Part (c)\"\n", + "dB=20*log10(1+A*bta)# # Amount of feedback in decibels\n", + "print \"Amount of feedback = %0.2f dB\"%dB\n", + "\n", + "print \"Part (d)\"\n", + "Vs=1# # in volts\n", + "Vo=Af*Vs# # in volts\n", + "Vf=bta*Vo# # in volts\n", + "Vi=Vs-Vf# # in volts\n", + "print \"Vo = %0.2f V\"%Vo\n", + "print \"Vf = %0.2f V\"%Vf\n", + "print \"Vi = %0.2f V\"%Vi\n", + "\n", + "print \"Part (e)\"\n", + "A=80*A/100# # Decreased A\n", + "Af_dash=A/(1+A*bta)# # Decreased Af\n", + "C=(Af-Af_dash)*100/Af# # Percentage decrease in Af\n", + "print \"Percentage decrease in Af = %0.2f %%\"%C" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.7: Page No 606" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For closed loop amplifier :\n", + "Low frequency gain = 9.99 \n", + "Upper 3 dB frequency = 100.10 kHz\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Low frequency gain, Upper 3 dB frequency\n", + "\n", + "# Without feedback\n", + "AM=1e4# # Low frequency values of A\n", + "wH=100# # Upper 3 dB frequency in hertz\n", + "# With feedback\n", + "R1=1# # in kilo-ohms\n", + "R2=9# # in kilo-ohms\n", + "bta=R1/(R1+R2)# # Feedback factor\n", + "AfM=AM/(1+bta*AM)# # Low frequency gain\n", + "wHf=wH*(1+bta*AM)# # Upper 3 dB frequency in hertz\n", + "wHf=wHf*1e-3# # Upper 3 dB frequency in kilo-hertz\n", + "print \"For closed loop amplifier :\"\n", + "print \"Low frequency gain = %0.2f \"%AfM\n", + "print \"Upper 3 dB frequency = %0.2f kHz\"%wHf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.9: Page No 615" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "RE = 0.98 kΩ\n", + "Part (b)\n", + "RL = 4.00 kΩ\n", + "Part (c)\n", + "R1F = 150.00 kΩ\n", + "Part (d)\n", + "IC = 3.82 mA\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "# (a) RE\n", + "# (b) RL\n", + "# (c) R1F\n", + "# (d) Quiescent collector current\n", + "\n", + "GmF=1# # Transconductance gain in mili-amperes per volts\n", + "AVF=-4# # Voltage gain\n", + "D=50# # Desensitivity factor\n", + "RS=1# # in kilo-ohms\n", + "btao=150#\n", + "AoL=GmF*D# # Open loop mutual conductance in mili-amperes per volts\n", + "\n", + "print \"Part (a)\"\n", + "RE=(D-1)/AoL# # in kilo-ohms\n", + "print \"RE = %0.2f kΩ\"%RE\n", + "\n", + "print \"Part (b)\"\n", + "RL=-AVF/GmF# # in kilo-ohms\n", + "print \"RL = %0.2f kΩ\"%RL\n", + "print \"Part (c)\"\n", + "r_pi=btao/AoL-RS-RE# # in kilo-ohms\n", + "R1F=RS+r_pi+(1+btao)*RE# # in kilo-ohms\n", + "print \"R1F = %0.2f kΩ\"%R1F\n", + "\n", + "print \"Part (d)\"\n", + "VT=26e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "IC=btao*VT/r_pi# # in mili-amperes\n", + "print \"IC = %0.2f mA\"%IC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.11: Page No 621" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "It ia a CB-CE cascade, configuration. It has low input and high output impedance and hence corresponds to a current amplifier.\n", + "Part (b)\n", + "Input resistance = 9.90 Ω\n", + "Output resistance = inf \n", + "Transfer ratio = 74.26 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import inf\n", + "# (a) Amplifier type\n", + "# (b) Input resistance, Output resistance, Transfer ratio\n", + "\n", + "r_pi=1e3# # in ohms\n", + "gm=0.1# # in mho\n", + "\n", + "print \"Part (a)\"\n", + "print \"It ia a CB-CE cascade, configuration. It has low input and high output impedance and hence corresponds to a current amplifier.\"\n", + "\n", + "print \"Part (b)\"\n", + "# From low frequency equivalent circuit in Fig. 11.40\n", + "btao=gm*r_pi#\n", + "Rin=r_pi/(1+btao)# # Input resistance in ohms\n", + "Rout=inf# # Output resistance (= ro of Q2)\n", + "Ai=gm*gm*Rin*3e3*1e3/(3e3+1e3)# # Transfer ratio\n", + "print \"Input resistance = %0.2f Ω\"%Rin\n", + "print \"Output resistance = %0.2f \"%Rout\n", + "print \"Transfer ratio = %0.2f \"%Ai" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.12: Page No 623" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (b)\n", + "AF = 299.89 \n" + ] + } + ], + "source": [ + "#(b) AF\n", + "\n", + "AV=4000#\n", + "bta=1/300#\n", + "RS=2# # in kilo-ohms\n", + "RE=RS# # in kilo-ohms\n", + "RC=6# # in kilo-ohms\n", + "btao=200#\n", + "r_pi=4# # in kilo-ohms\n", + "\n", + "print \"Part (b)\"\n", + "x=-AV*-btao*RC/(r_pi+RS)#\n", + "AF=x/(1+x*bta)#\n", + "print \"AF = %0.2f \"%AF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.13: Page No 624" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Q1 is a common collector and Q2 is common emitter stage. Hence the given circuit is cascade of cc and CE stages. As the Rin of a CC is high and the Ro of the CE is low, therefore, the given circuit approximates a voltage amplifier. If RL is chosen a low resistance, the amplifier can be considered a voltage-to-current converter.\n", + "Part (b)\n", + "Input resistance = 76.75 Ω\n", + "Output resistance = 0.60 \n", + "Transfer ratio = -59.22 \n" + ] + } + ], + "source": [ + "# (a) Amplifier type\n", + "# (b) Input resistance, Output resistance, Transfer ratio\n", + "\n", + "r_pi=1e3# # in ohms\n", + "gm=0.1# # in mho\n", + "\n", + "print \"Part (a)\"\n", + "print \"Q1 is a common collector and Q2 is common emitter stage. Hence the given circuit is cascade of cc and CE stages. As the Rin of a CC is high and the Ro of the CE is low, therefore, the given circuit approximates a voltage amplifier. If RL is chosen a low resistance, the amplifier can be considered a voltage-to-current converter.\"\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)\n", + " return c\n", + "\n", + "print \"Part (b)\"\n", + "# From the Fig. 11.42\n", + "RE1=3e3# # in ohms\n", + "RC2=0.6e3# # in ohms\n", + "btao=gm*r_pi#\n", + "Ri2=r_pi# # in ohms\n", + "Ri1=r_pi+(1+btao)*parallel(RE1,Ri2)# # Input resistance in ohms\n", + "Rout=RC2# # Output resistance (= ro of Q2)\n", + "AV1=(1+btao)*RE1/(r_pi+(1+btao)*RE1)#\n", + "Ro1=parallel(RE1,r_pi/(1+btao))# # in ohms\n", + "AV2=-btao*RC2/(Ro1+r_pi)#\n", + "AV=AV1*AV2#\n", + "Ri1=Ri1*1e-3# # in kilo-ohms\n", + "Rout=Rout*1e-3# # in kilo-ohms\n", + "print \"Input resistance = %0.2f Ω\"%Ri1\n", + "print \"Output resistance = %0.2f \"%Rout\n", + "print \"Transfer ratio = %0.2f \"%AV" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.15: Page No 625" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Small signal gain = -4.18 \n", + "Input resistance = 10.10 kΩ\n", + "Output resistance = 0.52 kΩ\n" + ] + } + ], + "source": [ + "#Small signal gain, Input resistance, Output resistance\n", + "\n", + "btao=100#\n", + "r_pi=1e3# # in ohms\n", + "ICQ=2.5e-3# # in amperes\n", + "VT=25e-3# # in volts\n", + "gm=ICQ/VT# # Transconductance in mho\n", + "r_pi=btao/gm# # Incremental resistance of emitter-base diode in ohms\n", + "# From ac model without feedback in Fig. 11.47\n", + "RS=10e3# # in ohms\n", + "RF=47e3# # in ohms\n", + "RC=4.7e3# # in ohms\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "AoL=-gm*parallel(RF,RC)*parallel(RS,parallel(RF,r_pi))# # in ohms\n", + "bta=1/RF#\n", + "T=-bta*AoL# # Return ratio\n", + "AF=AoL/(1+T)# # in ohms\n", + "AVF=AF/RS# # Small signal gain\n", + "RID=parallel(RF,r_pi)# # in ohms\n", + "RID_dash=parallel(RID,RS)# # in ohms\n", + "RIF_dash_I=RID_dash/(1+T)# # in ohms\n", + "RIF_I=RS*RIF_dash_I/(RS-RIF_dash_I)# # in ohms\n", + "RIF_dash_V=RS+RIF_I# # in ohms\n", + "RoD_dash=parallel(RF,RC)# # in ohms\n", + "RoF_dash=RoD_dash/(1+T)# # in ohms\n", + "RoF=RoF_dash*RC/(RC-RoF_dash)# # in ohms\n", + "RIF_dash_V=RIF_dash_V*1e-3# # in kilo-ohms\n", + "RoF=RoF*1e-3# # in kilo-ohms\n", + "print \"Small signal gain = %0.2f \"%AVF\n", + "print \"Input resistance = %0.2f kΩ\"%RIF_dash_V\n", + "print \"Output resistance = %0.2f kΩ\"%RoF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.16: Page No 631" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "AF = 57.10 \n", + "T = 9.68 \n", + "Part (b)\n", + "RIF = 204.81 kΩ\n", + "RoF = 79.01 Ω\n" + ] + } + ], + "source": [ + "# (a) AF, T\n", + "# (b) R1F, RoF\n", + "\n", + "btao=150#\n", + "ICQ=1.5e-3# # in amperes\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "# From circuit without feedback but with loading in Fig. 11.50\n", + "RS=2e3# # in ohms\n", + "RE1=0.1e3# # in ohms\n", + "RF=6.2e3# # in ohms\n", + "RC1=4.3e3# # in ohms\n", + "RC2=1.2e3# # in ohms\n", + "RL=4.7e3# # in ohms\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "\n", + "print \"Part (a)\"\n", + "gm=ICQ/VT# # Transconductance in mho\n", + "r_pi=btao/gm# # Incremental resistance of emitter-base diode in ohms\n", + "AV1=-btao*RC1/(RS+r_pi+(1+btao)*parallel(RE1,RF))#\n", + "AV2=-btao*parallel(RC2,parallel(RF+RE1,RL))/(RC1+r_pi)#\n", + "AoL=AV1*AV2#\n", + "bta=-RE1/(RE1+RF)#\n", + "T=-bta*AoL#\n", + "AF=AoL/(1+T)#\n", + "print \"AF = %0.2f \"%AF\n", + "print \"T = %0.2f \"%T\n", + "\n", + "print \"Part (b)\"\n", + "RID=r_pi+(1+btao)*parallel(RE1,RF)# # in ohms\n", + "RID_dash=RS+RID# # in ohms\n", + "RIF_dash=RID_dash*(1+T)# # in ohms\n", + "RIF=RIF_dash-RS# # in ohms\n", + "RoD=parallel(RC2,RF+RE1)# # in ohms\n", + "RoD_dash=parallel(RoD,RL)# # in ohms\n", + "RoF_dash=RoD_dash/(1+T)# # in ohms\n", + "RoF=RL*RoF_dash/(RL-RoF_dash)# # in ohms\n", + "RIF=RIF*1e-3# # in kilo-ohms\n", + "print \"RIF = %0.2f kΩ\"%RIF\n", + "print \"RoF = %0.2f Ω\"%RoF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.17: Page No 633" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "T = 0.93 \n", + "AoL = 20.66 \n", + "AF = 10.72 \n", + "Part (b)\n", + "RoF = 2.68 kΩ\n" + ] + } + ], + "source": [ + "#(a) T, AoL, AF\n", + "# (b) RoF\n", + "\n", + "gm=1e-3# # in mho\n", + "rd=20e3# # in ohms\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "\n", + "print \"Part (a)\"\n", + "# From the ac equivalent circuit in Fig. 11.52\n", + "RF=10e3# # in ohms\n", + "RD1=10e3# # in ohms\n", + "RL=10e3# # in ohms\n", + "ro=20e3# # in ohms\n", + "RS=parallel(0.47e3,RF)# # in ohms\n", + "RL2=parallel(ro,parallel(10.47e3,RL))# # in ohms\n", + "mu=rd*gm# # Amplification factor\n", + "AV1=-mu*RD1/(RD1+rd+(1+mu)*RS)#\n", + "AV2=-gm*RL2#\n", + "AoL=AV1*AV2#\n", + "bta=-0.47/(10+0.47)# # Feedback factor\n", + "T=-bta*AoL#\n", + "AF=AoL/(1+T)#\n", + "print \"T = %0.2f \"%T\n", + "print \"AoL = %0.2f \"%AoL\n", + "print \"AF = %0.2f \"%AF\n", + "\n", + "print \"Part (b)\"\n", + "RoD=parallel(ro,10.47e3)# # in ohms\n", + "TSC=0# # for RL=0, T=0\n", + "ToC=bta*AV1*gm*RoD#\n", + "# By Blackman's relation\n", + "RoF=RoD*(1+TSC)/(1+ToC)# # in ohms\n", + "RoF=RoF*1e-3# # in kilo-ohms\n", + "print \"RoF = %0.2f kΩ\"%RoF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.18: Page No 635" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T = 7.10 \n", + "AoL = 180.34 \n", + "AF = 22.26 \n" + ] + } + ], + "source": [ + "#T, AoL, AF\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "ICQ1=0.25e-3# # in amperes\n", + "ICQ2=-0.5e-3# # in amperes\n", + "bta1=200#\n", + "VA1=125# # in volts\n", + "bta2=150#\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "gm1=ICQ1/VT# # in mho\n", + "gm2=abs(ICQ2)/VT# # in mho\n", + "r_pi1=bta1/gm1# # in ohms\n", + "r_pi2=bta2/gm2# # in ohms\n", + "ro1=VA1/ICQ1# # in ohms\n", + "# From ac equivalent circuit in Fig. 11.56\n", + "RC1=20e3# # in ohms\n", + "RS=1e3# # in ohms\n", + "bta=-0.82/(20+0.82)# # Feedback factor\n", + "RL1=parallel(RC1,ro1)# # in ohms\n", + "Ib2_IC1=RL1/(RL1+r_pi2+(1+bta2)*parallel(20e3,0.82e3))# # Ib2/IC1\n", + "Ib1_IS=parallel(RS,20.82e3)/(r_pi1+parallel(RS,20.82e3))# # Ib1/IS\n", + "AoL=bta2*Ib2_IC1*bta1*Ib1_IS# # Current gain without feedback\n", + "T=-bta*AoL#\n", + "AF=AoL/(1+T)#\n", + "print \"T = %0.2f \"%T\n", + "print \"AoL = %0.2f \"%AoL\n", + "print \"AF = %0.2f \"%AF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.19: Page No 638" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "AIF = 2.24 \n", + "Part (b)\n", + "R1F = 56.89 Ω\n", + "Part (c)\n", + "A1F = 1.92 \n", + "Part (d)\n", + "AVF = 22.36 \n" + ] + } + ], + "source": [ + "# (a) AIF\n", + "# (b) R1F\n", + "# (c) A1F'\n", + "# (d) AVF\n", + "\n", + "btao=50#\n", + "r_pi=2e3# # in ohms\n", + "# From equivalent circuit without feedback but taking loading effect in Fig. 11.58\n", + "RS=1e3# # in ohms\n", + "Rf=15e3# # in ohms\n", + "RE2=10e3# # in ohms\n", + "RC1=10e3# # in ohms\n", + "RC2=10e3# # in ohms\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "\n", + "print \"Part (a)\"\n", + "RS_dash=parallel(RS,Rf+RE2)# # in ohms\n", + "gm=btao/r_pi# # in mho\n", + "RE2_dash=parallel(RE2,Rf)# # in ohms\n", + "Rx=r_pi+(1+btao)*RE2_dash# # in ohms\n", + "I2_IS=-gm*parallel(RS_dash,r_pi)*RC1/(RC1+Rx)# # I2/IS\n", + "AI=-btao*I2_IS# # Open loop\n", + "If_IS=(1+btao)*I2_IS*RE2/(RE2+Rf)# # If/IS\n", + "bta=If_IS/AI# # Feedback factor\n", + "T=-bta*AI#\n", + "AIF=AI/(1+T)#\n", + "print \"AIF = %0.2f \"%AIF\n", + "\n", + "print \"Part (b)\"\n", + "RID=parallel(RS,parallel(Rf+RE2,r_pi))#\n", + "R1F=RID/(1+T)# # in ohms\n", + "print \"R1F = %0.2f Ω\"%R1F\n", + "\n", + "print \"Part (c)\"\n", + "Ii_IS=RS/(RS+parallel(Rf+RE2,r_pi))# # Ii'/IS\n", + "AI_dash=AI*Ii_IS#\n", + "T=-bta*AI_dash#\n", + "A1F_dash=AI_dash/(1+T)#\n", + "print \"A1F = %0.2f \"%A1F_dash\n", + "\n", + "print \"Part (d)\"\n", + "AVF=AIF*RC2/RS#\n", + "print \"AVF = %0.2f \"%AVF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.20: Page No 641" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (b)\n", + "AIF = 59.99 \n", + "Part (a)\n", + "AVF = 59.99 \n", + "Part (c)\n", + "RIF = 158.17 Ω\n", + "Part (d)\n", + "ROF = 4.70 kΩ\n" + ] + } + ], + "source": [ + "#(a) AVF\n", + "# (b) AIF\n", + "# (c) RIF\n", + "# (d) ROF\n", + "\n", + "btao=50#\n", + "r_pi=1.1e3# # in ohms\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "# From equivalent circuit of amplifier without feedback in Fig. 11.60\n", + "RS=4.7e3# # in ohms\n", + "RF=15e3# # in ohms\n", + "RE2=0.1e3# # in ohms\n", + "RB1=parallel(91e3,10e3)# # in ohms\n", + "RC1=4.7e3# # in ohms\n", + "RC2=4.7e3# # in ohms\n", + "RB2=RB1# # in ohms\n", + "\n", + "print \"Part (b)\"\n", + "RL1=parallel(RS,parallel(RF+RE2,RB1))# # in ohms\n", + "I1_IS=RL1/(RL1+r_pi)# # I1/IS\n", + "IC1_IS=btao*I1_IS# # IC1/IS\n", + "Ri2=r_pi+(1+btao)*parallel(RE2,RF)# # in ohms\n", + "I2_IS=-IC1_IS*parallel(RC1,RB2)/(parallel(RC1,RB2)+Ri2)# # in ohms\n", + "IC2_IS=btao*I2_IS# # IC2/IS\n", + "AID=-IC2_IS/2# # Open loop\n", + "IF_IS=IC2_IS*RE2/(RE2+RF)# # IF/IS\n", + "bta=IF_IS/AID# # Feedback factor\n", + "T=-bta*AID#\n", + "AIF=AID/(1+T)#\n", + "print \"AIF = %0.2f \"%AIF\n", + "\n", + "print \"Part (a)\"\n", + "AVF=AIF*RC2/RS#\n", + "print \"AVF = %0.2f \"%AVF\n", + "\n", + "print \"Part (c)\"\n", + "RID=parallel(parallel(RS,RE2+RF),parallel(RB1,r_pi))# # in ohms\n", + "RIF=RID/(1+T)# # in ohms\n", + "print \"RIF = %0.2f Ω\"%RIF\n", + "\n", + "print \"Part (d)\"\n", + "ROF=RC2*1e-3# # in kilo-ohms\n", + "print \"ROF = %0.2f kΩ\"%ROF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.21: Page No 643" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (c)\n", + "T = 18.20 \n", + "AF = 0.29 \n", + "Part (d)\n", + "Voltage gain = -2835.20 \n" + ] + } + ], + "source": [ + "# (c) AF, T\n", + "# (d) Voltage gain\n", + "\n", + "ICQ1=0.25e-3# # in amperes\n", + "ICQ2=1e-3# # in amperes\n", + "ICQ3=0.5e-3# # in amperes\n", + "RC1=5e3# # in ohms\n", + "RC2=7.5e3# # in ohms\n", + "RC3=10e3# # in ohms\n", + "R1=0.2e3# # in ohms\n", + "R2=0.33e3# # in ohms\n", + "RS=0.6e3# # in ohms\n", + "RF=20e3# # in ohms\n", + "btao=200#\n", + "VA=125# # in volts\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "\n", + "print \"Part (c)\"\n", + "gm1=ICQ1/VT# # in mho\n", + "r_pi1=btao/gm1# # in ohms\n", + "ro1=VA/ICQ1# # in ohms\n", + "gm2=ICQ2/VT# # in mho\n", + "r_pi2=btao/gm2# # in ohms\n", + "ro2=VA/ICQ2# # in ohms\n", + "gm3=ICQ3/VT# # in mho\n", + "r_pi3=btao/gm3# # in ohms\n", + "ro3=VA/ICQ3# # in ohms\n", + "Rin1=r_pi1+(btao+1)*parallel(RF+R2,R1)# # in ohms\n", + "RL1=parallel(RC1,ro1)# # in ohms\n", + "RL2=parallel(RC2,ro2)# # in ohms\n", + "Rin2=r_pi2# # in ohms\n", + "Rin3=r_pi3+(btao+1)*parallel(R2,RF+R1)# # in ohms\n", + "Io_Ib3=btao# # Io/Ib3\n", + "Ib3_Ic2=-RL2/(RL2+Rin3)# # Ib3/Ic2\n", + "Ic2_Ib2=btao# # Ic2/Ib2\n", + "Ib2_Ic1=-RL1/(RL1+Rin2)# # Ib2/Ic1\n", + "Ic1_Ib1=btao# # Ic1/Ib1\n", + "Ib1_VS=1/(RS+Rin1)# # Ib1/VS in mho\n", + "AoL=Io_Ib3*Ib3_Ic2*Ic2_Ib2*Ib2_Ic1*Ic1_Ib1*Ib1_VS# # Open loop\n", + "bta=-R1*R2/(R1+R2+RF)# # Feedback factor\n", + "T=-bta*AoL#\n", + "AF=AoL/(1+T)#\n", + "print \"T = %0.2f \"%T\n", + "print \"AF = %0.2f \"%AF\n", + "\n", + "print \"Part (d)\"\n", + "Vo_VS=-AF*parallel(RC3,ro3)#\n", + "print \"Voltage gain = %0.2f \"%Vo_VS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.22: Page No 646" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AF = -92.84 \n", + "RoF = 214.70 Ω\n" + ] + } + ], + "source": [ + "#AF, RoF\n", + "\n", + "gm=2e-3# # in mho\n", + "rd=20e3# # in ohms\n", + "RD=12e3# # in ohms\n", + "RG=500e3# # in ohms\n", + "Rs=50# # in ohms\n", + "RF=5e3# # in ohms\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "Ro=parallel(RD,rd)# # in ohms\n", + "AV1=-gm*parallel(RD,parallel(rd,RG))#\n", + "AV2=AV1#\n", + "AV3=-gm*parallel(RD,rd)#\n", + "AV=AV1*AV2*AV3#\n", + "RG_dash=parallel(RG,RF)# # in ohms\n", + "Vi_Vs=RG_dash/(RG_dash+Rs)# # Vi/Vs\n", + "AoL=AV*Vi_Vs*RF/(RF+Ro)# # Vo/Vs (Open loop)\n", + "bta=1/RF# # Feedback factor\n", + "RM=AoL*Rs# # in ohms\n", + "T=-bta*RM# # Return ratio\n", + "AF=AoL/(1+T)#\n", + "RoD=parallel(Ro,RF)# # in ohms\n", + "RoF=RoD/(1+T)# # in ohms\n", + "print \"AF = %0.2f \"%AF\n", + "print \"RoF = %0.2f Ω\"%RoF" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch12_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch12_1.ipynb new file mode 100644 index 00000000..5164033e --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch12_1.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 12 : Oscillators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.1: Page No 664" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "RD = 9.67 kΩ \n", + "Part (b)\n", + "Product RC = 8.12 µs \n", + "Part (c)\n", + "Reasonable value of R = 50.00 kΩ \n", + "Reasonable value of C = 162.44 pF \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "# (a) RD\n", + "# (b) Product RC\n", + "# (c) Reasonable value of R and C\n", + "\n", + "fo=8e3# # in hertz\n", + "mu=59#\n", + "rd=10# # in kilo-ohms\n", + "\n", + "print \"Part (a)\"\n", + "RD=29*rd/(mu-29)# # in kilo-ohms\n", + "print \"RD = %0.2f kΩ \"%RD\n", + "\n", + "print \"Part (b)\"\n", + "RC=1/(2*pi*fo*sqrt(6))# # in seconds\n", + "RC=RC*1e6# # in micro-seconds\n", + "print \"Product RC = %0.2f µs \"%RC\n", + "\n", + "print \"Part (c)\"\n", + "R=50# # in kilo-ohms\n", + "C=RC/R# # in nano-farad\n", + "C=C*1e3# # in pico-farad\n", + "print \"Reasonable value of R = %0.2f kΩ \"%R\n", + "print \"Reasonable value of C = %0.2f pF \"%C" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.2: Page No 665" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R1 = 10.00 kΩ \n", + "R2 = 10.00 kΩ \n", + "R3 = 20.00 kΩ \n", + "R4 = 10.00 kΩ \n", + "C1 = 7.96 nF \n", + "C2 = 7.96 nF \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#Designing a Wein Bridge Oscillator\n", + "\n", + "fo=2e3# # in hertz\n", + "R=10# # in kilo-ohms\n", + "C=1/(2*pi*fo*R*1e3)# # in farads\n", + "C=C*1e9# # in nano-farads\n", + "print \"R1 = %0.2f kΩ \"%R\n", + "print \"R2 = %0.2f kΩ \"%R\n", + "print \"R3 = %0.2f kΩ \"%(2*R)\n", + "print \"R4 = %0.2f kΩ \"%R\n", + "print \"C1 = %0.2f nF \"%C\n", + "print \"C2 = %0.2f nF \"%C" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.3: Page No 669" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Minimum value of C = 1.81 pF \n", + "Maximum value of C = 7.24 pF \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#Range of capacitance\n", + "\n", + "L1=2e-3# # in henry\n", + "L2=1.5e-3# # in henry\n", + "fmin=1000e3# # in hertz\n", + "fmax=2000e3# # in hertz\n", + "Cmin=1/((2*pi*fmax)**2*(L1+L2))# # in farads\n", + "Cmax=1/((2*pi*fmin)**2*(L1+L2))# # in farads\n", + "Cmin=Cmin*1e12# # in pico-farads\n", + "Cmax=Cmax*1e12# # in pico-farads\n", + "print \"Minimum value of C = %0.2f pF \"%Cmin\n", + "print \"Maximum value of C = %0.2f pF \"%Cmax" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch13_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch13_1.ipynb new file mode 100644 index 00000000..0a0454a8 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch13_1.ipynb @@ -0,0 +1,282 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 13 : Power amplifiers and voltage regulators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.1: Page No 684" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dc input power = 8.30 W \n", + "ac output power = 0.64 W \n", + "Efficiency = 7.71 %\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#dc input power, ac output power, Efficiency\n", + "\n", + "Ib=5e-3# # Base current in amperes\n", + "# From Fig. 13.8\n", + "RB=1.5e3# # in ohms\n", + "RC=16# # in ohms\n", + "bta=40#\n", + "VCC=18# # in volts\n", + "VBE=0.7# # in volts\n", + "IBQ=(VCC-VBE)/RB# # in amperes\n", + "ICQ=bta*IBQ# # in amperes\n", + "Pi_dc=VCC*ICQ# # dc input power in watts\n", + "Ic=bta*Ib# # in amperes\n", + "Po_ac=Ic**2*RC# # ac output power\n", + "eta=Po_ac*100/Pi_dc# # Efficiency in percentage\n", + "print \"dc input power = %0.2f W \"%Pi_dc\n", + "print \"ac output power = %0.2f W \"%Po_ac\n", + "print \"Efficiency = %0.2f %%\"%eta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.2: Page No 685" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transformer turns ratio = 44.72 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi\n", + "#Transformer turns ratio\n", + "\n", + "def parallel(a,b):\n", + " c=a*b/(a+b)#\n", + " return c\n", + "RL=parallel(parallel(16,16),parallel(16,16))# # in ohms\n", + "RL_dash=8e3# # in ohms\n", + "TR=sqrt(RL_dash/RL)# # Transformer turns ratio\n", + "print \"Transformer turns ratio = %0.2f \"%TR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.3: Page No 685" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Efficiency = 37.04 %\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Efficiency\n", + "\n", + "P_ac=2# # in watts\n", + "ICQ=150e-3# # in amperes\n", + "VCC=36# # in volts\n", + "P_dc=VCC*ICQ# # in watts\n", + "eta=P_ac*100/P_dc# # Efficiency in percentage\n", + "print \"Efficiency = %0.2f %%\"%eta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.4: Page No 692" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum input power = 17.90 W \n", + "Maximum ac output power = 14.06 W \n", + "Maximum conversion efficiency = 78.54 % \n", + "Maximum power dissipated by each transistor = 2.85 W \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi,sqrt\n", + "#Maximum input power, Maximum ac output power, Maximum conversion efficiency, Maximum power dissipated by each transistor\n", + "\n", + "VCC=15# # in volts\n", + "RL=8# # in ohms\n", + "P_dc=2*VCC**2/(pi*RL)# # Maximum input power in watts\n", + "P_ac=VCC**2/(2*RL)# # Maximum ac output power in watts\n", + "eta=P_ac*100/P_dc# # Maximum efficiency in percentage\n", + "PD=2*VCC**2/(pi**2*RL)# # Maximum power dissipated in watts\n", + "PD_each=PD/2# # Maximum power dissipated by each transistor in watts\n", + "print \"Maximum input power = %0.2f W \"%P_dc\n", + "print \"Maximum ac output power = %0.2f W \"%P_ac\n", + "print \"Maximum conversion efficiency = %0.2f %% \"%eta\n", + "print \"Maximum power dissipated by each transistor = %0.2f W \"%PD_each" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.5: Page No 693" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Supply voltage = 22.89 V \n", + "Peak current drawn from each supply = 2.24 A \n", + "Total supply power = 32.58 W \n", + "Power conversion efficiency = 61.38 % \n", + "Maximum power that each transistor can dissipate safely = 6.64 W \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi,sqrt\n", + "#Supply voltage, Peak current drawn from each supply, Total supply power, Power conversion efficiency, Maximum power that each transistor can dissipate safely\n", + "\n", + "P_ac=20# # Average power delivered in watts\n", + "RL=8# # Load in ohms\n", + "Vm=sqrt(2*P_ac*RL)# # Peak output voltage in volts\n", + "VCC=Vm+5# # Supply voltage in volts\n", + "Im=Vm/RL# # Peak current drawn from each supply in amperes\n", + "P_dc=2*Im*VCC/pi# # Total supply power in watts\n", + "eta=P_ac*100/P_dc# # Power conversion efficiency in percentage\n", + "PD=2*VCC**2/(pi**2*RL)# # Maximum power dissipated in watts\n", + "PD_each=PD/2# # Maximum power dissipated by each transistor in watts\n", + "print \"Supply voltage = %0.2f V \"%VCC\n", + "print \"Peak current drawn from each supply = %0.2f A \"%Im\n", + "print \"Total supply power = %0.2f W \"%P_dc\n", + "print \"Power conversion efficiency = %0.2f %% \"%eta\n", + "print \"Maximum power that each transistor can dissipate safely = %0.2f W \"%PD_each" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.6: Page No 697" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Thermal resistance = 0.62 °C/mW \n", + "Power rating at 70 °C = 128.00 mW \n", + "Junction temperature at 100 mW = 112.50 °C \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi,sqrt\n", + "\n", + "#Thermal resistance, Power rating at 70°C, Junction temperature at 100 mW\n", + "\n", + "TAo=25# # in °C\n", + "PDo=200# # in mili-watts\n", + "Tj_max=150# # Maximum junction temperature in °C\n", + "T=70# # in °C\n", + "P=100# # in mili-watts\n", + "TA=50# # Ambient temperature in °C\n", + "theta=(Tj_max-TAo)/PDo# # Thermal resistance in °C per mili-watts\n", + "PR=(Tj_max-T)/theta# # Power rating at 70 °C in mili-watts\n", + "Tj=TA+theta*P# # Junction temperature at 100 mW in °C\n", + "print \"Thermal resistance = %0.2f °C/mW \"%theta\n", + "print \"Power rating at 70 °C = %0.2f mW \"%PR\n", + "print \"Junction temperature at 100 mW = %0.2f °C \"%Tj" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch1_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch1_1.ipynb new file mode 100644 index 00000000..94caa8a1 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch1_1.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 : Semiconductor Physics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.1: Page No 9" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Electon concentration = 4.375e+21 cm**-3\n" + ] + } + ], + "source": [ + "#Electron concentration\n", + "V=0.1 # Voltage in volts\n", + "I=5e-3 # Current in ampere\n", + "l_a=7e8 # Length to cross-sectional area ratio in metre inverse\n", + "mu=0.05 # Electron mobility in metre square per volt second\n", + "q=1.6e-19 # Charge on an electron in coulombs\n", + "n=(l_a*I)/(V*q*mu)# #Electron concentration in inverse metres cube\n", + "n=n*1e-6# #Electron concentration in inverse centimetres cube\n", + "print \"Electon concentration = %0.3e cm**-3\"%n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.2: Page No 12" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Electic field intensity = 9.20e+06 V/m\n", + "Voltage across the bar = 27600.00 V\n" + ] + } + ], + "source": [ + "#Electric field intensity, Voltage\n", + "l=3e-3 # Length of the bar in metres\n", + "a=50*10*1e-12 # Cross-sectional area in metres square\n", + "I=2e-6 # Current in amperes\n", + "rho=2.3e3 # Resistivity in ohm metres\n", + "E=I*rho/a # Electric field intensity in volt per metres\n", + "V=E*l # Voltage across the bar in volt\n", + "print \"Electic field intensity = %0.2e V/m\"%E\n", + "print \"Voltage across the bar = %0.2f V\"%V\n", + "# ans wrong in the book." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.3: Page No 17" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Electron concentration = 5e+14 cm**-3\n", + "Hole concentration = 4.20e+05 cm**-3\n", + "Conductivity of Si sample = 0.12 ohm**-1 cm**-1\n", + "Voltage across the bar = 0.10 V\n" + ] + } + ], + "source": [ + "#Electron concentration, Hole concentration, Conductivity, Voltage\n", + "\n", + "l=3e-3 # Length on Si sample in metres\n", + "a=5e-9 # Cross-sectional area of Si sample in metres square\n", + "ND=5e20 # Donor concentration in inverse metres cube\n", + "I=2e-6 # Current flowing through the bar in amperes\n", + "ni=1.45e16 # Intrinsic carrier concentration in inverse metres cube\n", + "mu_n=0.15 # Mobility of electrons in metres square per volt second\n", + "q=1.6e-19 # Charge on an electron in coulombs\n", + "n=ND # Electron concentration in inverese metres cube\n", + "p=ni*ni/n # Hole concentration in inverese metres cube\n", + "sigma=q*n*mu_n# # Conductivity of Si sample in inverse ohm metres\n", + "V=(I*l)/(a*sigma) # Voltage across the bar in volts\n", + "n=n*1e-6 # Electron concentration in inverese centimetres cube\n", + "p=p*1e-6 # Hole concentration in inverese centimetres cube\n", + "sigma=sigma*0.01 # Conductivity of Si sample in inverse ohm centimetres\n", + "print \"Electron concentration = %0.e cm**-3\"%n\n", + "print \"Hole concentration = %0.2e cm**-3\"%p\n", + "print \"Conductivity of Si sample = %0.2f ohm**-1 cm**-1\"%sigma\n", + "print \"Voltage across the bar = %0.2f V\"%V" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.4: Page No 25" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Contact difference of potential = 752.67 mV\n" + ] + } + ], + "source": [ + "from math import log\n", + "#Contact difference of potential\n", + "N=5e22 # Number of acceptor or donor atoms per metres cube of step graded p-n junction\n", + "ni=1.45e16 # Intrinsic carrier concentration in inverse metres cube\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "Vo=VT*log(N**2/ni**2) # Contact difference of potential in volts\n", + "Vo=Vo*1e3 # Contact difference of potential in milivolts\n", + "print \"Contact difference of potential = %0.2f mV\"%Vo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.7: Page No 28" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Contact difference of potential = 594.03 mV\n" + ] + } + ], + "source": [ + "from math import log\n", + "#Potential barrier\n", + "rho_p=0.05 # Resistivity of p side of step-graded junction in ohm metres\n", + "rho_n=0.025 # Resistivity of n side of step-graded junction in ohm metres\n", + "mu_p=475e-4 # Mobility of holes in metres square per volt second\n", + "mu_n=1500e-4 # Mobility of holes in metres square per volt second\n", + "ni=1.45e16 # Intrinsic carrier concentration in atoms per metres cube\n", + "q=1.6e-19 # Charge on an electron in coulombs\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "NA=1/(q*mu_p*rho_p) # Acceptor concentration in atoms per metres cube\n", + "ND=1/(q*mu_n*rho_n) # Donor concentration in atoms per metres cube\n", + "Vo=VT*log(NA*ND/ni**2) # Contact difference of potential in volts\n", + "Vo=Vo*1e3 # Contact difference of potential in milivolts\n", + "print \"Contact difference of potential = %0.2f mV\"%Vo" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch2_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch2_1.ipynb new file mode 100644 index 00000000..5e14f96e --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch2_1.ipynb @@ -0,0 +1,774 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 : The p-n junction diode" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.1: Page No 41" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Labelled current I = 0.38 mA\n", + "Labelled voltage Vo = 7.50 V\n", + "Part (b)\n", + "Labelled current I = 0.00 A\n", + "Labelled voltage Vo = -2.50 V\n" + ] + } + ], + "source": [ + "#(a) I,Vo\n", + "#(b) I,Vo\n", + "print \"Part (a)\"\n", + "# Applying Thevnin's theorem at XX', in Fig. 2.5(a)\n", + "Vth=15*20e3/(10e3+20e3)# # Thevnin equivalent voltage in volts\n", + "Zth=10e3*20e3/(10e3+20e3)# # Thevnin equivalent resistance in ohms\n", + "# From the figure 2.5(c)\n", + "I=Vth/(Zth+20e3)# # Labelled current in amperes\n", + "Vo=I*20e3# # Labelled voltage in volts\n", + "I=I*1e3# # Labelled current in miliamperes\n", + "print \"Labelled current I = %0.2f mA\"%I\n", + "print \"Labelled voltage Vo = %0.2f V\"%Vo\n", + "\n", + "print \"Part (b)\"\n", + "# Applying Thevnin's theorem at XX' and YY', in Fig. 2.5(b)\n", + "Vth1=15*10e3/(10e3+10e3)# # Thevnin equivalent voltage at XX' in volts\n", + "Zth1=10e3*10e3/(10e3+10e3)# # Thevnin equivalent resistance at YY' in ohms\n", + "Vth2=5# # Thevnin equivalent voltage at YY' in volts\n", + "Zth2=5e3# # Thevnin equivalent resistance at YY' in ohms\n", + "# From the figure 2.5(d)\n", + "I=0# # Labelled current in amperes\n", + "Vo=5-7.5# # Labelled voltage in volts\n", + "print \"Labelled current I = %0.2f A\"%I\n", + "print \"Labelled voltage Vo = %0.2f V\"%Vo\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.2: Page No 44" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Change in diode voltage (for Ge)= 67.70 mV\n", + "Change in diode voltage (for Si) = 135.40 mV\n" + ] + } + ], + "source": [ + "from math import log\n", + "#Change in diode voltage\n", + "ID1=1# # Let the initial diode current be 1 A\n", + "ID2=15*ID1# # Final diode current\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "eta=1# # for Ge\n", + "deltaVD=eta*VT*log(ID2/ID1)# # Change in diode voltage in volts\n", + "deltaVD=deltaVD*1e3# # Change in diode voltage in milivolts\n", + "print \"Change in diode voltage (for Ge)= %0.2f mV\"%deltaVD\n", + "eta=2# # for Si\n", + "deltaVD=eta*VT*log(ID2/ID1)# # Change in diode voltage in volts\n", + "deltaVD=deltaVD*1e3# # Change in diode voltage in milivolts\n", + "print \"Change in diode voltage (for Si) = %0.2f mV\"%deltaVD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.3: Page No 44" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Voltage = -59.55 mV\n", + "Part (b)\n", + "Ratio of current in forward bias to that in reverse bias = -6.91 \n", + "Part (c)\n", + "Forward current for 0.1 V = 467.83 μA\n", + "Forward current for 0.1 V = 22.82 mA\n", + "Forward current for 0.1 V (A) = 1.09 A\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp\n", + "#(a) Voltage\n", + "#(b) Ratio of current in forward bias to that in reverse bias\n", + "#(c) Forward current\n", + "print \"Part (a)\"\n", + "eta=1# # for Ge\n", + "T=300# # Room temperature in kelvins\n", + "VT=T/11600# # Voltage equivalent to temperatue at room temperature in volts\n", + "IS=1# # Let reverse saturation current be 1 A\n", + "I=-0.9*IS# # Reverse current\n", + "V=eta*VT*log(1+(I/IS))# # Voltagei in volts\n", + "V=V*1e3# # Voltage in milivolts\n", + "print \"Voltage = %0.2f mV\"%V\n", + "\n", + "print \"Part (b)\"\n", + "V=0.05# # Voltage in volts\n", + "If_Ir=(exp(V/(eta*VT))-1)/(exp(-V/(eta*VT))-1)# # Ratio of current in forward bias to that in reverse bias\n", + "print \"Ratio of current in forward bias to that in reverse bias = %0.2f \"%If_Ir\n", + "\n", + "print \"Part (c)\"\n", + "IS=10e-6# # Reverse saturation current in amperes\n", + "V=0.1# # Voltage in volts\n", + "ID=IS*(exp(V/(eta*VT))-1)# # Forward current for 0.1 V in amperes\n", + "ID=ID*1e6# # Forward current for 0.1 V in micro-amperes\n", + "print \"Forward current for 0.1 V = %0.2f μA\"%ID\n", + "V=0.2# # Voltage in volts\n", + "ID=IS*(exp(V/(eta*VT))-1)# # Forward current for 0.1 V in amperes\n", + "ID=ID*1e3# # Forward current for 0.1 V in miliamperes\n", + "print \"Forward current for 0.1 V = %0.2f mA\"%ID\n", + "V=0.3# # Voltage in volts\n", + "ID=IS*(exp(V/(eta*VT))-1)# # Forward current for 0.1 V in amperes\n", + "print \"Forward current for 0.1 V (A) = %0.2f A\"%ID\n", + "# ans is wrong in the book." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.4 : Page No 45" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Current = -10.00 μA\n", + "Part (b)\n", + "Current = -5.5067 μA\n", + "Part (c)\n", + "Current = 1.6275 A\n" + ] + } + ], + "source": [ + "from math import exp\n", + "from __future__ import division\n", + "# (a) Current\n", + "# (b) Current\n", + "# (C) Current\n", + "\n", + "IS=10e-6# # Reverse saturation current in amperes\n", + "eta=1# # for Ge\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "\n", + "print \"Part (a)\"\n", + "VD=-24# # Reverse bias in volts\n", + "ID=IS*(exp(VD/(eta*VT))-1)# # Current in amperes\n", + "ID=ID*1e6# # Current in micro-amperes\n", + "print \"Current = %0.2f μA\"%ID\n", + "\n", + "print \"Part (b)\"\n", + "VD=-0.02# # Reverse bias in volts\n", + "ID=IS*(exp(VD/(eta*VT))-1)# # Current in amperes\n", + "ID=ID*1e6# # Current in micro-amperes\n", + "print \"Current = %0.4f μA\"%ID\n", + "\n", + "print \"Part (c)\"\n", + "VD=0.3# # Forward bias in volts\n", + "ID=IS*(exp(VD/(eta*VT))-1)# # Current in amperes\n", + "print \"Current = %0.4f A\"%ID" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.5 : Page No 46" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Change in diode voltage (for Ge) = 60 mV\n", + "Change in diode voltage (for Si) = 119 mV\n" + ] + } + ], + "source": [ + "from math import log\n", + "#Change in diode voltage\n", + "\n", + "T=300# # Operating temperature in kelvins\n", + "VT=T/11600# # Voltage equivalent to temperatue at room temperature in volts\n", + "ID1=1# # Let the initial diode current be 1 A\n", + "ID2=10*ID1# # Final diode current\n", + "eta=1# # for Ge\n", + "deltaVD=eta*VT*log(ID2/ID1)# # Change in diode voltage in volts\n", + "deltaVD=deltaVD*1e3# # Change in diode voltage in milivolts\n", + "print \"Change in diode voltage (for Ge) = %0.f mV\"%deltaVD\n", + "eta=2# # for Si\n", + "deltaVD=eta*VT*log(ID2/ID1)# # Change in diode voltage in volts\n", + "deltaVD=deltaVD*1e3# # Change in diode voltage in milivolts\n", + "print \"Change in diode voltage (for Si) = %0.f mV\"%deltaVD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.6: Page No 47" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R = 20.81 Ω\n" + ] + } + ], + "source": [ + "from math import exp\n", + "## R\n", + "\n", + "# In the circuit given in Fig. 2.7\n", + "V=50e-3# # Output voltage\n", + "VD1=0.7# # Voltage across diode 1 in volts\n", + "I1=10e-3# # Current through diode 1 at 0.7 V in amperes\n", + "VD2=0.8# # Voltage across diode 2 in volts\n", + "I2=100e-3# # Current through diode 2 at 0.8 V in amperes\n", + "eta_VT=(VD2-VD1)/log(I2/I1)# # Product of η and VT\n", + "I=10e-3/(exp(V/eta_VT)+1)# # Current through diode 1 in amperes\n", + "R=V/I#\n", + "print \"R = %0.2f Ω\"%R" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.7: Page No 48" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Diode current = 4.3000 mA\n", + "Diode voltage = 0.7633 V\n" + ] + } + ], + "source": [ + "from math import exp\n", + "#Current, Diode voltage\n", + "VDD=5# # Applied voltage in volts\n", + "VD=0.7# # Diode voltage in volts\n", + "I1=1e-3# # Current in amperes at diode voltage = 0.7 V\n", + "R=1000# # R in ohms\n", + "deltaVD=0.1# # Change in diode voltage in volts for every decade change in current\n", + "ratioI=10# # Decade change in current\n", + "eta_VT=deltaVD/log(ratioI)# # Product of η and VT\n", + "ID=(VDD-VD)/R# # Diode current in amperes\n", + "VD2=VD+eta_VT*log(ID/I1)# # Diode voltage in volts\n", + "ID=ID*1e3# # Diode current in miliamperes\n", + "print \"Diode current = %0.4f mA\"%ID\n", + "print \"Diode voltage = %0.4f V\"%VD2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.8: Page No 55" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Output voltage = 5.00 V Part (b)\n", + "Output voltage = 0.864 V\n", + "Part (c)\n", + "Output voltage = 0.736 V\n" + ] + } + ], + "source": [ + "# (a) Output voltage\n", + "# (b) Output voltage\n", + "# (c) Output voltage\n", + "\n", + "\n", + "print \"Part (a)\"\n", + "# Since both the diodes are in OFF state\n", + "Vo=5# # Output voltage in volts\n", + "print \"Output voltage = %0.2f V\"%Vo,\n", + "\n", + "print \"Part (b)\"\n", + "#Since diode D1 is in OFF state and diode D2 is in ON state\n", + "# From Fig. 2.16(C)\n", + "I=(5-0.6)/(4.7e3+300)# # Current flowing through the diode D2 in amperes\n", + "Vo=5-I*4.7e3# # Output voltage in volts\n", + "print \"Output voltage = %0.3f V\"%Vo\n", + "\n", + "print \"Part (c)\"\n", + "# Since both diodes are in ON state\n", + "# Applying KVL in Fig. 2.16(d)\n", + "I=(5-0.6)/(2*4.7e3+300)# # Current flowing through diode D1 or diode D2 in amperes\n", + "Vo=5-2*I*4.7e3# # Output voltage in volts\n", + "print \"Output voltage = %0.3f V\"%Vo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.9 : Page No 57" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Output voltage = 2 V\n", + "Current through diode D1 = 0 A\n", + "Current through diode D2 = 0.62 mA \n", + "Part (b)\n", + "Output voltage = 4.00 V\n", + "Current through diode D1 = 0.63 mA\n", + "Current through diode D2 = 0.20 mA\n" + ] + } + ], + "source": [ + "# (a) Output voltage, Diode currents\n", + "# (b) Output voltage, Diode currents\n", + "\n", + "Vy=0.7# # Cut-in voltage in volts\n", + "# In the Fig. 2.17\n", + "R1=5e3#\n", + "R2=10e3#\n", + "\n", + "print \"Part (a)\"\n", + "# Since diode D1 is OFF and diode D2 is ON\n", + "ID2=(5-Vy-(-5))/(R1+R2)# # Current through diode D2 in amperes\n", + "Vo=5-ID2*R1# # Output voltage\n", + "ID2=ID2*1e3# # Current through diode D2 in miliamperes\n", + "print \"Output voltage = %0.f V\"%Vo\n", + "print \"Current through diode D1 = %0.f A\"%0\n", + "print \"Current through diode D2 = %0.2f mA \"%ID2\n", + "print \"Part (b)\"\n", + "# Since both the diodes are ON\n", + "VA=4-Vy# # In the fig.\n", + "Vo=VA+Vy# # Output voltage\n", + "ID2=(5-Vo)/R1# # Current through diode D2 in amperes\n", + "IR2=(VA-(-5))/R2# # Current through diode R2 in amperes\n", + "ID1=IR2-ID2# # Current through diode D1 in amperes\n", + "ID1=ID1*1e3# # Current through diode D1 in miliamperes\n", + "ID2=ID2*1e3# # Current through diode D2 in miliamperes\n", + "print \"Output voltage = %0.2f V\"%Vo\n", + "print \"Current through diode D1 = %0.2f mA\"%ID1\n", + "print \"Current through diode D2 = %0.2f mA\"%ID2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.11 : Page No 62" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Amplitude of alternating component of the voltage across load resistance = 0.20 V\n", + "Therefore, the alternating component of the voltage across load resistance is 0.199 sin ωt V\n", + "Part (b)\n", + "DC component of voltage across load resistance = 8.36 V\n", + "Therefore, total voltage across load resistance is (8.36 + 0.199 sin ωt) V\n", + "Part (C)\n", + "DC component of current across load resistance = 4.18 mA \n", + "Amplitude of alternating component of the current across load resistance = 0.10 mA\n", + "Therefore, total current across load resistance is (4.18 + 0.099 sin ωt) mA\n" + ] + } + ], + "source": [ + "# (a) Alternating component of voltage acroos load resistance\n", + "# (b) Total voltage across load resistance\n", + "# (c) Total current\n", + "\n", + "T=293# # Operating temperature in kelvins\n", + "VT=T/11600# # Voltage equivalent to temperatue at room temperature in volts\n", + "# In the Fig. 2.21(a)\n", + "VAA=9# # in volts\n", + "Vm=0.2# # in volts\n", + "RL=2e3# # Load resistance in ohms\n", + "Vy=0.6# # Cut-in voltage in volts\n", + "Rf=10# # Forward resistance of diode in ohms\n", + "eta=2#\n", + "\n", + "print \"Part (a)\"\n", + "# From DC model in Fig. 2.21(b)\n", + "IDQ=(VAA-Vy)/(RL+Rf)# # DC current through diode or load resistance in amperes\n", + "rd=eta*VT/IDQ# # Dynamic resistance in ohms\n", + "# This dynamic resistance is used in AC model in Fig. 2.21(c)\n", + "Vom=Vm*RL/(RL+rd)# # Amplitude of alternating component of the voltage across load resistance in volts\n", + "print \"Amplitude of alternating component of the voltage across load resistance = %0.2f V\"%Vom\n", + "print \"Therefore, the alternating component of the voltage across load resistance is 0.199 sin ωt V\"\n", + "\n", + "print \"Part (b)\"\n", + "VDQ=IDQ*RL# # DC component of voltage across load resistance in volts\n", + "print \"DC component of voltage across load resistance = %0.2f V\"%VDQ\n", + "print \"Therefore, total voltage across load resistance is (8.36 + 0.199 sin ωt) V\"\n", + "\n", + "print \"Part (C)\"\n", + "IDQ=IDQ*1e3# # DC current through load resistance in miliamperes\n", + "idm=Vm/(RL+rd)# # Amplitude of alternating component of the current across load resistance in amperes\n", + "idm=idm*1e3# # Amplitude of alternating component of the current across load resistance in miliamperes\n", + "print \"DC component of current across load resistance = %0.2f mA \"%IDQ\n", + "print \"Amplitude of alternating component of the current across load resistance = %0.2f mA\"%idm\n", + "print \"Therefore, total current across load resistance is (4.18 + 0.099 sin ωt) mA\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.12: Page No 64" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (b)\n", + "Vo for I= 1 mA = 0.476 mV\n", + "Vo for I= 0.1 mA = 3.33 mV\n", + "Vo for I= 1 μA = 9.804 mV\n", + "Part (c)\n", + "I = 50.00 μA\n" + ] + } + ], + "source": [ + "## (b) Vo\n", + "#(c) I\n", + "\n", + "\n", + "print \"Part (b)\"\n", + "# In the Fig. 2.22 (a)\n", + "vs=10e-3# # in volts\n", + "Rs=1e3# # in ohms\n", + "eta=2#\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "I=1e-3# # in amperes\n", + "Vo=vs*eta*VT/(eta*VT+I*Rs)# # in volts\n", + "Vo=Vo*1e3# # in milivolts\n", + "print \"Vo for I= 1 mA = %0.3f mV\"%Vo\n", + "I=0.1e-3# # in amperes\n", + "Vo=vs*eta*VT/(eta*VT+I*Rs)# # in volts\n", + "Vo=Vo*1e3# # in milivolts\n", + "print \"Vo for I= 0.1 mA = %0.2f mV\"%Vo\n", + "I=1e-6# # in amperes\n", + "Vo=vs*eta*VT/(eta*VT+I*Rs)# # in volts\n", + "Vo=Vo*1e3# # in milivolts\n", + "print \"Vo for I= 1 μA = %0.3f mV\"%Vo\n", + "\n", + "print \"Part (c)\"\n", + "Vo=vs/2# # in volts\n", + "I=eta*VT*(vs-Vo)/(Vo*Rs)# # in amperes\n", + "I=I*1e6# # in micro-amperes\n", + "print \"I = %0.2f μA\"%I" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.13: Page No 69" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Barrier capacitance = 70.74 pF\n" + ] + } + ], + "source": [ + "from math import pi\n", + "#Barrier capacitance\n", + "A=1e-3*1e-3# # Area of p-n junction in metres square\n", + "W=2e-6# # Space charge thickness in metres\n", + "E=16# # Dielectric constant of Ge\n", + "Eo=1/(36*pi*1e9)# # Absolute permittivity of air\n", + "C=E*Eo*A/W# # Barrier capacitance in farads\n", + "C=C*1e12# # Barrier capacitance in pico-farads\n", + "print \"Barrier capacitance = %0.2f pF\"%C" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.14: Page No 70" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Change in capacitance = -0.229 pF\n", + "Part (b)\n", + "Change in capacitance = 0.276 pF\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "# (a) Change in capacitance\n", + "# (b) Change in capacitance\n", + "C=4e-12# # Depletion capacitance in farads\n", + "V=4# # in volts\n", + "K=C*sqrt(V)# # a constant\n", + "\n", + "print \"Part (a)\"\n", + "V=4+0.5# # in volts\n", + "C_new=K/sqrt(V)# # in farads\n", + "deltaC=C_new-C# # Change in capacitande in farads\n", + "deltaC=deltaC*1e12# # Change in capacitande in pico-farads\n", + "print \"Change in capacitance = %0.3f pF\"%deltaC\n", + "\n", + "print \"Part (b)\"\n", + "V=4-0.5# # in volts\n", + "C_new=K/sqrt(V)# # in farads\n", + "deltaC=C_new-C# # Change in capacitande in farads\n", + "deltaC=deltaC*1e12# # Change in capacitande in pico-farads\n", + "print \"Change in capacitance = %0.3f pF\"%deltaC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.18: Page No 83" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Diffusion length = 2.60 cm\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Diffusion length\n", + "\n", + "I=1e-3# # Forward bias current in amperes\n", + "C=1e-6# # Diffusion capacitance in farads\n", + "Dp=13# # Diffusion constant for Si\n", + "eta=2# # for Si\n", + "VT=26e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "Lp=sqrt(C*Dp*eta*VT/I)# # Diffusion length in metres\n", + "Lp=Lp*1e2# # Diffusion length in centimetres\n", + "print \"Diffusion length = %0.2f cm\"%Lp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.19 : Page No 90" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Vd1 = 0.0180 V\n", + "Vd2 = 4.9820 V\n", + "Part (b)\n", + "Current in the circuit = 229 μA\n" + ] + } + ], + "source": [ + "from math import log,exp\n", + "# (a) Vd1 and Vd2\n", + "# (b) Current in the circuit\n", + "\n", + "eta_VT=0.026# # Product of η and VT\n", + "\n", + "print \"Part (a)\"\n", + "# From the Fig. 2.19(a)\n", + "Is=5e-6# # Reverse saturation current through diode D2 in amperes\n", + "Id1=Is# # Forward current through diode D1 in amperes\n", + "Vd1=eta_VT*log(1+(Id1/Is))# # in volts\n", + "Vd2=5-Vd1# # in volts\n", + "print \"Vd1 = %0.4f V\"%Vd1\n", + "print \"Vd2 = %0.4f V\"%Vd2\n", + "\n", + "print \"Part (b)\"\n", + "# From the Fig. 2.19(b)\n", + "Vz=4.9# # Zener voltage in volts\n", + "Vd1=5-Vz# # in volts\n", + "I=Is*(exp(Vd1/eta_VT)-1)# # Current in the circuit in amperes\n", + "I=I*1e6# # Current in the circuit in micro-amperes\n", + "print \"Current in the circuit = %0.f μA\"%I" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch3_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch3_1.ipynb new file mode 100644 index 00000000..31360872 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch3_1.ipynb @@ -0,0 +1,1724 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3 : Applications of diodes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.4: Page No 116" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "DC load current = 1.20 A\n", + "Part (b)\n", + "DC power in load = 41.789 W\n", + "Part (c)\n", + "Rectification efficiency = 0.7836 \n", + "Part (d)\n", + "Percentage regulation = 3.45 %\n", + "Part (e)\n", + "PIV for each diode = 113.14 V\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "from __future__ import division\n", + "# (a) DC load current\n", + "# (b) DC power in load\n", + "# (c) Rectification efficiency\n", + "# (d) Percentage regulation\n", + "# (e) PIV of each diode\n", + "Vrms=40# # Input in volts\n", + "Rf=1# # Forward conduction resistance of diodes in ohms\n", + "RL=29# # Load resistance in ohms\n", + "Vmax=Vrms*sqrt(2)# # in volts\n", + "Imax=Vmax/(Rf+RL)# # in amperes\n", + "\n", + "print \"Part (a)\"\n", + "Idc=2*Imax/pi# # DC load current in amperes\n", + "print \"DC load current = %0.2f A\"%Idc\n", + "\n", + "print \"Part (b)\"\n", + "Pdc=Idc**2*RL# # DC power in load in watts\n", + "print \"DC power in load = %0.3f W\"%Pdc\n", + "\n", + "print \"Part (c)\"\n", + "Pac=Vrms**2/(Rf+RL)# # AC power in load\n", + "eta=Pdc/Pac# # Rectification efficiency\n", + "print \"Rectification efficiency = %0.4f \"%eta\n", + "\n", + "print \"Part (d)\"\n", + "reg=Rf*100/RL# # Percentage regulation\n", + "print \"Percentage regulation = %0.2f %%\"%reg\n", + "\n", + "print \"Part (e)\"\n", + "PIV=2*Vmax# # in volts\n", + "print \"PIV for each diode = %0.2f V\"%PIV" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.5: Page No 118" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "DC voltage at load = 107.15 V\n", + "Part (b)\n", + "PIV rating of each diode = 169.71 V\n", + "Part (c)\n", + "Maximum current through each diode = 168.31 mA\n", + "Part (d)\n", + "Required power rating = 117.81 mW\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "from __future__ import division\n", + "\n", + "# (a) DC voltage at load\n", + "# (b) PIV rating of each diode\n", + "# (c) Maximum current through each diode\n", + "# (d) Required power rating\n", + "Vrms=120# # Input voltage in volts\n", + "RL=1e3# # Load resistance in ohms\n", + "Vy=0.7# # Cut-in voltage in volts\n", + "\n", + "print \"Part (a)\"\n", + "Vmax=Vrms*sqrt(2)# # in volts\n", + "Imax=(Vmax-2*Vy)/RL# # in amperes\n", + "Idc=2*Imax/pi# # in amperes\n", + "Vdc=Idc*RL# # in volts\n", + "print \"DC voltage at load = %0.2f V\"%Vdc\n", + "\n", + "print \"Part (b)\"\n", + "print \"PIV rating of each diode = %0.2f V\"%Vmax\n", + "\n", + "print \"Part (c)\"\n", + "Imax=Imax*1e3# # in miliamperes\n", + "print \"Maximum current through each diode = %0.2f mA\"%Imax\n", + "\n", + "print \"Part (d)\"\n", + "Pmax=Vy*Imax# # Required power rating in mili-watts\n", + "print \"Required power rating = %0.2f mW\"%Pmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.6: Page No 119" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Peak value of current = 0.2178 A\n", + "Part (b)\n", + "DC value of current = 0.13867 A\n", + "Part (C)\n", + "Ripple factor = 0.483 \n", + "Part (d)\n", + "Rectification efficiency = 0.803 \n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "from __future__ import division\n", + "\n", + "# (a) Peak value of current\n", + "# (b) DC value of current\n", + "# (c) Ripple factor\n", + "# (d) Rectification efficiency\n", + "# From the Fig. 2.16\n", + "RL=1e3# # Load resistance in ohms\n", + "rd=10# # Forward bias dynamic resistance of diodes in ohms\n", + "Vmax=220# # Amplitude of input voltage in volts\n", + "\n", + "print \"Part (a)\"\n", + "Imax=Vmax/(rd+RL)# # Peak value of current in amperes\n", + "print \"Peak value of current = %0.4f A\"%Imax\n", + "\n", + "print \"Part (b)\"\n", + "Idc=2*Imax/pi# # DC value of current in amperes\n", + "print \"DC value of current = %0.5f A\"%Idc\n", + "\n", + "print \"Part (C)\"\n", + "ripl=sqrt((Imax/(Idc*sqrt(2)))**2-1)#\n", + "print \"Ripple factor = %0.3f \"%ripl\n", + "\n", + "print \"Part (d)\"\n", + "eta=8/(pi**2*(1+(rd/RL)))# # Rectification efficiency\n", + "print \"Rectification efficiency = %0.3f \"%eta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.7: Page No 121" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Full-scale deflection = 5.5647 V\n" + ] + } + ], + "source": [ + "from math import pi, sqrt\n", + "#Full scale reading\n", + "Idc=1e-3# # in amperes\n", + "Rf=10# # in ohms\n", + "RL=5e3# # in ohms\n", + "Vrms=Idc*(RL+Rf)*pi/(2*sqrt(2))# # Full-scale deflection in volts\n", + "print \"Full-scale deflection = %0.4f V\"%Vrms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.8: Page No 122" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Full-scale deflection = 111.294 V\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "from __future__ import division\n", + "\n", + "#Full-scale reading\n", + "Idc=5e-3# # in amperes\n", + "Rf=40# # in ohms\n", + "RL=20e3# # in ohms\n", + "Vrms=Idc*(RL+Rf)*pi/(2*sqrt(2))# # Full-scale deflection in volts\n", + "print \"Full-scale deflection = %0.3f V\"%Vrms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.10: Page No 133" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Minimum value of zener diode current = 4.00 mA\n", + "Maximum value of zener diode current = 19.00 mA\n" + ] + } + ], + "source": [ + "#Minimum and maximum value of zener diode current\n", + "# From the Fig. 3.33\n", + "Vsmin=120# # in volts\n", + "Vsmax=170# # in volts\n", + "Vz=50# # in volts\n", + "Rs=5e3# # in ohms\n", + "RLmin=5e3# # in ohms\n", + "RLmax=10e3# # in ohms\n", + "ILmin=Vz/RLmax# # in amperes\n", + "ILmax=Vz/RLmin# # in amperes\n", + "Izmin=((Vsmin-Vz)/Rs)-ILmax# # Minimum value of zener diode current in amperes\n", + "Izmin=Izmin*1e3# # Minimum value of zener diode current in miliamperes\n", + "Izmax=((Vsmax-Vz)/Rs)-ILmin# # Maximum value of zener diode current in amperes\n", + "Izmax=Izmax*1e3# # Maximum value of zener diode current in miliamperes\n", + "print \"Minimum value of zener diode current = %0.2f mA\"%Izmin\n", + "print \"Maximum value of zener diode current = %0.2f mA\"%Izmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.11: Page No 134" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "V = 75.00 V\n", + "Part (b)\n", + "Vmin = 71.67 V\n", + "Vmax = 91.67 V\n" + ] + } + ], + "source": [ + "# (a) V\n", + "# (b) Voltage range of V\n", + "\n", + "Vz=50# # Zener voltage in volts\n", + "Izmin=1e-3# # in amperes\n", + "Izmax=5e-3# # in amperes\n", + "\n", + "print \"Part (a)\"\n", + "ILmin=0#\n", + "Rs=5e3# # in ohms\n", + "V=Vz+Rs*(Izmax+ILmin)# # in volts\n", + "print \"V = %0.2f V\"%V\n", + "\n", + "print \"Part (b)\"\n", + "IL=(50/15)*1e-3# # in amperes\n", + "Vmin=Vz+Rs*(Izmin+IL)# # in volts\n", + "Vmax=Vz+Rs*(Izmax+IL)# # in volts\n", + "print \"Vmin = %0.2f V\"%Vmin\n", + "print \"Vmax = %0.2f V\"%Vmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.12: Page No 135" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normal situation\n", + "Zener diode current = 22.00 mA\n", + "Power dissipation in zener diode = 149.60 mW\n", + "Power dissipation in resistor = 48.40 mW\n", + "Aberrant situation\n", + "Zener diode current = 82.00 mA\n", + "Power dissipation in zener diode = 557.60 mW\n", + "Power dissipation in resistor = 672.40 mW\n" + ] + } + ], + "source": [ + "#Zener diode current, Power dissipation in zener diode and resistor\n", + "# In the Fig. 3.35\n", + "Vz=6.8# # in volts\n", + "R=100# # in ohms\n", + "\n", + "print \"Normal situation\"\n", + "Vs=9# # in volts\n", + "I=(Vs-Vz)/R# # in amperes\n", + "Pzener=I*Vz# # in watts\n", + "Presistor=I**2*R# # in watts\n", + "I=I*1e3# # in miliamperes\n", + "Pzener=Pzener*1e3# # in miliwatts\n", + "Presistor=Presistor*1e3# # in miliwatts\n", + "print \"Zener diode current = %0.2f mA\"%I\n", + "print \"Power dissipation in zener diode = %0.2f mW\"%Pzener\n", + "print \"Power dissipation in resistor = %0.2f mW\"%Presistor\n", + "\n", + "print \"Aberrant situation\"\n", + "Vs=15# # in volts\n", + "I=(Vs-Vz)/R# # in amperes\n", + "Pzener=I*Vz# # in watts\n", + "Presistor=I**2*R# # in watts\n", + "I=I*1e3# # in miliamperes\n", + "Pzener=Pzener*1e3# # in miliwatts\n", + "Presistor=Presistor*1e3# # in miliwatts\n", + "print \"Zener diode current = %0.2f mA\"%I\n", + "print \"Power dissipation in zener diode = %0.2f mW\"%Pzener\n", + "print \"Power dissipation in resistor = %0.2f mW\"%Presistor" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.13: Page No 136" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ILmin = 52.63 mA\n", + "ILmax = 476.32 mA\n" + ] + } + ], + "source": [ + "#Range of load current\n", + "Vz=5# # in volts\n", + "Izmin=50e-3# # in amperes\n", + "Izmax=1# # in amperes\n", + "Vmin=7.5# # in volts\n", + "Vmax=10# # in volts\n", + "Rs=4.75# # in ohms\n", + "ILmin=((Vmax-Vz)/Rs)-Izmax# # in amperes\n", + "ILmin=ILmin*1e3# # in miliamperes\n", + "ILmax=((Vmin-Vz)/Rs)-Izmin# # in amperes\n", + "ILmax=ILmax*1e3# # in miliamperes\n", + "print \"ILmin = %0.2f mA\"%ILmin\n", + "print \"ILmax = %0.2f mA\"%ILmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.14: Page No 136" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ILmin = 0.00 A\n", + "ILmax = 3.10 mA\n", + "Redesigned Part\n", + "Series resistance = 410.26 Ω\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "from __future__ import division\n", + "\n", + "## Load-current range, Series resistance in redesigned circuit\n", + "# In Fig. 3.37\n", + "Vz=6.8# # in volts\n", + "Izk=0.1e-3# # in amperes\n", + "Vs=10# # in volts\n", + "Rs=1e3# # in ohms\n", + "ILmax=((Vs-Vz)/Rs)-Izk# # in amperes\n", + "ILmax=ILmax*1e3# # in miliamperes\n", + "print \"ILmin = %0.2f A\"%0\n", + "print \"ILmax = %0.2f mA\"%ILmax\n", + "\n", + "print \"Redesigned Part\"\n", + "RL=1e3# # in ohms\n", + "Izk=Izk*10# # in amperes\n", + "I=Izk+(Vz/RL)# # in amperes\n", + "R=(Vs-Vz)/I# # in ohms\n", + "print \"Series resistance = %0.2f Ω\"%R" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.15: Page No 137" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "Series resistance = 4.00 Ω\n", + "Part (b)\n", + "Power dissipation rating of zener diode = 6.00 W\n" + ] + } + ], + "source": [ + "# (a) Series resistance\n", + "# (b) Power dissipation rating of zener diode\n", + "# In Fig. 3.38\n", + "Vz=6# # in volts\n", + "ILmin=0#\n", + "ILmax=0.5# # in amperes\n", + "Vmin=8# # in volts\n", + "Vmax=10# # in volts\n", + "Izmin=0#\n", + "\n", + "print \"Part (a)\"\n", + "Rs=(Vmin-Vz)/(ILmax+Izmin)# # Series resistance in ohms\n", + "print \"Series resistance = %0.2f Ω\"%Rs\n", + "\n", + "print \"Part (b)\"\n", + "Izmax=((Vmax-Vz)/Rs)-ILmin# # in amperes\n", + "Pzmax=Vz*Izmax# # in watts\n", + "print \"Power dissipation rating of zener diode = %0.2f W\"%Pzmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.16: Page No 138" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Series resistance = 116.36 Ω\n", + "Maximum zener current = 110.00 mA\n" + ] + } + ], + "source": [ + "#Series resistance R, Maximum zener current\n", + "# In Fig. 3.39\n", + "Vz=7.2# # in volts\n", + "ILmin=12e-3# # in amperes\n", + "ILmax=100e-3# # in amperes\n", + "Vs=20# # in volts\n", + "Izmin=10e-3# # in amperes\n", + "Rs=(Vs-Vz)/(ILmax+Izmin)# # Series resistance in ohms\n", + "print \"Series resistance = %0.2f Ω\"%Rs\n", + "# For ILmin=0\n", + "Izmax=((Vs-Vz)/Rs)# # in amperes\n", + "Izmax=Izmax*1e3# # in miliamperes\n", + "print \"Maximum zener current = %0.2f mA\"%Izmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.17: Page No 139" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "R = 3.75 kΩ\n", + "Maximum possible value of load current = 35.00 mA\n", + "Part (b)\n", + "Minimum value of V = 162.50 V\n", + "Maximum value of V = 293.75 V\n" + ] + } + ], + "source": [ + "# (a) R, maximum possible value of load current\n", + "# (b) Range of V\n", + "Vz=50# # Diode voltage in volts\n", + "Izmin=5e-3# # in amperes\n", + "Izmax=40e-3# # in amperes\n", + "\n", + "print \"Part (a)\"\n", + "ILmin=0#\n", + "V=200# # Input voltage in volts\n", + "R=(V-Vz)/(Izmax-ILmin)# # in ohms\n", + "ILmax=((V-Vz)/R)-Izmin# # in amperes\n", + "Rk=R*1e-3# # in kilo-ohms\n", + "ILmax=ILmax*1e3# # in miliamperes\n", + "print \"R = %0.2f kΩ\"%Rk\n", + "print \"Maximum possible value of load current = %0.2f mA\"%ILmax\n", + "\n", + "print \"Part (b)\"\n", + "IL=25e-3#\n", + "Vmin=Vz+R*(Izmin+IL)# # in volts\n", + "Vmax=Vz+R*(Izmax+IL)# # in volts\n", + "print \"Minimum value of V = %0.2f V\"%Vmin\n", + "print \"Maximum value of V = %0.2f V\"%Vmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.18: Page No 140" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R = 400.00 Ω\n", + "ILmax = 30.00 mA\n", + "Power rating of zener diode = 240.00 mW\n" + ] + } + ], + "source": [ + "#R, ILmax, Power rating of zener diode\n", + "# In Fig. 3.41\n", + "Vz=6# # in volts\n", + "V=22# # in volts\n", + "Izmin=10e-3# # in amperes\n", + "Izmax=40e-3# # in amperes\n", + "ILmin=0#\n", + "R=(V-Vz)/(Izmax-ILmin)# # in ohms\n", + "ILmax=((V-Vz)/R)-Izmin# # in amperes\n", + "P=Izmax*Vz# # Power rating of zener diode in watts\n", + "ILmax=ILmax*1e3# # in miliamperes\n", + "P=P*1e3# # Power rating of zener diode in mili-watts\n", + "print \"R = %0.2f Ω\"%R\n", + "print \"ILmax = %0.2f mA\"%ILmax\n", + "print \"Power rating of zener diode = %0.2f mW\"%P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.19: Page No 141" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "VL = 10.00 V\n", + "IL = 55.56 mA\n", + "Iz = 12.63 mA\n", + "IR = 68.18 mA\n", + "Part (b)\n", + "RL for maximum power dissipation for zener diode = 354.84 Ω\n", + "Part (c)\n", + "Maximum value of RL for zener diode to remain ON = 155.81 Ω\n", + "If Izmin=0\n", + "Maximum value of RL for zener diode to remain ON = 147 Ω\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "from __future__ import division\n", + "# (a) VL,IL,Iz,IR\n", + "# (b) RL for maximum power dissipation for zener diode\n", + "# (c) Maximum value of RL for zener diode to remain ON\n", + "# From Fig. 3.42\n", + "Vs=25# # in volts\n", + "Rs=220# # in ohms\n", + "Vz=10# # in volts\n", + "Pzmax=400# # in mili-watts\n", + "Izmax=Pzmax/Vz# # in miliamperes\n", + "Izmin=Izmax*10/100# # in miliamperes\n", + "\n", + "print \"Part (a)\"\n", + "RL=180# # in ohms\n", + "VL=Vz# # in volts\n", + "IL=Vz/RL# # in amperes\n", + "IL=IL*1e3# # in miliamperes\n", + "IR=(Vs-Vz)/Rs# # in amperes\n", + "IR=IR*1e3# # in miliamperes\n", + "Iz=IR-IL# # in miliamperes\n", + "print \"VL = %0.2f V\"%VL\n", + "print \"IL = %0.2f mA\"%IL\n", + "print \"Iz = %0.2f mA\"%Iz\n", + "print \"IR = %0.2f mA\"%IR\n", + "\n", + "print \"Part (b)\"\n", + "RL=Vz*1e3/(IR-Izmax)# # in ohms\n", + "print \"RL for maximum power dissipation for zener diode = %.2f Ω\"%RL\n", + "\n", + "print \"Part (c)\"\n", + "RL=Vz*1e3/(IR-Izmin)# # in ohms\n", + "print \"Maximum value of RL for zener diode to remain ON = %0.2f Ω\"%RL\n", + "print \"If Izmin=0\"\n", + "RL=Vz*1e3/IR# # in ohms\n", + "print \"Maximum value of RL for zener diode to remain ON = %0.f Ω\"%RL" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.20: Page No 141" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rs <= 1.00 \n", + "Rs >= 3.33\n", + "To meet the load current variation from 1 A to 10 A a zener of specification Izmin = 0.01 A to Izmax = 5 A cannot meet the requirement for any value of Rs\n", + "Minimum value of Rs = 4.00 Ω\n", + "Maximum value of Rs = 500.00 Ω\n", + "Average wattage of Rs = 100.40 W\n" + ] + } + ], + "source": [ + "#Range and average watage of Rs\n", + "# From Fig. 3.43\n", + "Vsmin=20# # in volts\n", + "Vsmax=30# # in volts\n", + "RLmin=1# # in ohms\n", + "RLmax=10# # in ohms\n", + "Izmin=10e-3# # in amperes\n", + "Pzmax=50# # in watts\n", + "Vz=10# # in volts\n", + "ILmin=Vz/RLmax# # in amperes\n", + "ILmax=Vz/RLmin# # in amperes\n", + "Izmax=Pzmax/Vz# # in amperes\n", + "Rs1=(Vsmin-Vz)/(ILmax+Izmin)# # in ohms\n", + "Rs2=(Vsmax-Vz)/(ILmin+Izmax)# # in ohms\n", + "print \"Rs <= %0.2f \"%Rs1\n", + "print \"Rs >= %0.2f\"%Rs2\n", + "print \"To meet the load current variation from 1 A to 10 A a zener of specification Izmin = 0.01 A to Izmax = 5 A cannot meet the requirement for any value of Rs\"\n", + "# Let\n", + "RLmin=1e3# # in ohms\n", + "RLmax=10e3# # in ohms\n", + "ILmin=Vz/RLmax# # in amperes\n", + "ILmax=Vz/RLmin# # in amperes\n", + "Rsmin=(Vsmax-Vz)/(ILmin+Izmax)# # in ohms\n", + "Rsmax=(Vsmin-Vz)/(ILmax+Izmin)# # in ohms\n", + "print \"Minimum value of Rs = %0.2f Ω\"%Rsmin\n", + "print \"Maximum value of Rs = %0.2f Ω\"%Rsmax\n", + "Rs=4# # in ohms\n", + "W=Rs*(ILmax+Izmax)**2# # in watts\n", + "print \"Average wattage of Rs = %0.2f W\"%W" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.21: Page No 146" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7231628090>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n3W6OpzzBAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7231931e50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72317b75d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7226213fd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "from math import sin, pi\n", + "# (a) Transfer characteristics and output\n", + "# (b) Transfer characteristics and output\n", + "Vy=0.6# # in volts\n", + "Rf=100# # in ohms\n", + "\n", + "t=arange(-40,40,0.001)\n", + "vin=[]\n", + "for x in t:\n", + " vin.append(40*sin(2*pi*x/80)) # Input voltage in volts\n", + "\n", + "# Part (a)\n", + "# From Fig. 3.49(a)\n", + "# Sketching of transfer characteristics\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " \n", + " if vin[i]<5.6 :\n", + " vo.append(vin[i])# # in volts\n", + " else:\n", + " ID=(vin[i]-5.6)/(4.9e3+Rf)# # in amperes\n", + " vo.append(vin[i]-ID*4.9e3)# # in volts\n", + " \n", + "\n", + "plot(vin,vo)#\n", + "title(\"Part (a) - Transfer characteristics\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()\n", + "\n", + "\n", + "# Sketching of output\n", + "plot(t,vin,\"--\")\n", + "plot(t,vo)#\n", + "title(\"Part (a) - Output voltage and input voltage\")\n", + "xlabel(\"omega_t\")\n", + "ylabel(\"vo,vin\")\n", + "show()\n", + "\n", + "\n", + "\n", + "\n", + "# Part (b)\n", + "# From Fig. 3.49(b)\n", + "# Sketching of transfer characteristics\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " \n", + " if vin[i]>-0.6:\n", + " vo.append(vin[i])# # in volts\n", + " else:\n", + " ID=(vin[i]+0.6)/(9.9e3+Rf)# # in amperes\n", + " vo.append(vin[i]-ID*9.9e3)# # in volts\n", + " \n", + "plot(vin,vo)#\n", + "title(\"Part (b) - Transfer characteristics\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()\n", + "# Sketching of output\n", + "plot(t,vin,\"--\")\n", + "plot(t,vo)\n", + "title(\"Part (b) - Output voltage and input voltage\")\n", + "xlabel(\"omega_t\")\n", + "ylabel(\"vo,vin\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.22: Page No 148" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n1omZekl9Y/RyHjP1kvrIYj+PmXpJfeSc/QAz9ZImgTn7NTJTL2kSuEC7BmbqJfWZxR4z9ZL6z2kc\nzNRLmixO46yCmXpJ02Cqo5dm6iVNi6ku9mbqJU2LqZ2zN1MvaVKZs18BM/WSJpULtMtkpl7StOl0\nzj7J+5Jcm2Rrl+2sxFym/p3vNFMvaXp0vUD7fuCZHbexIiefDBs3wlFHjbonkjQ8nU7jVNV5SQ7u\nso2VMFMvaVpNTfTSTL2kaTbyBdotW7bcfntmZoaZmZlO2jFTL2lSzc7OMjs7u6Z9dB69bKdxPllV\nj1zguaFEL83US+qT1UQvp2IaZ/Nm2LTJQi9penUdvfww8GXgYUmuSnJsl+0tZC5T/7rXDbtlSRof\nvf4E7fbtzdn8qacatZTUH14uYR6vUy+pj7xcwgAz9ZJ0h14u0Jqpl6Q762WxN1MvSXfWuzl7M/WS\n+s4FWrxOvaT+m/oFWq9TL0kL602xn7tO/amnep16SZqvN9M4ZuolTYupncYxUy9JOzfx0Usz9ZK0\ntIkv9mbqJWlpEz1nb6Ze0jSaupy9mXpJ02iqFmjN1EvS8k1ksTdTL0krM5HTOGbqJU2zqZjGMVMv\nSSs3UdFLM/WStDoTVezN1EvS6kzMnL2Zeklq9Dpnb6Zekhq9XaA1Uy9JazP2xd5MvSSt3dhP45ip\nl6Q76900jpl6SVofYxu9NFMvSetnbIu9mXpJWj9jOWdvpl6SFtebnL2ZeklaXC8WaM3US9L6G6ti\nb6ZekroxVtM4ZuolaWkTPY1jpl6SujMW0Usz9ZLUrU6LfZJnJvl2ku8m+e+LbWemXpK61VmxT7IL\n8A7gmcC/B34nycPnb7dtG5x0Epx2WlPw+2R2dnbUXeiU45tsfR5fn8e2Wl2W18OB71XVFVX1C+Aj\nwG/N32jzZti0qZ8fnur7G87xTbY+j6/PY1utLhdoHwhcNXD/auAJ8zcyUy9J3evyzH5Zmc53vtNM\nvSR1rbOcfZKNwJaqemZ7/0RgR1W9eWCb0YX8JWmCjc21cZLsCvwjcCTwQ+B84Heq6rJOGpQkLaqz\nOfuqui3JccDZwC7AX1joJWk0Rnq5BEnScIws2b7cD1xNiiTvS3Jtkq0Dj+2b5LNJvpPkM0n2GWUf\nVyvJQUnOTfKtJJck+cP28b6M7x5JvprkoiSXJnlT+3gvxjcnyS5JLkzyyfZ+b8aX5IokF7fjO799\nrE/j2yfJx5Jc1r5Hn7DS8Y2k2C/3A1cT5v004xl0AvDZqnoYcE57fxL9AthcVYcCG4FXtt+vXoyv\nqn4GHFFVjwYOA45I8mR6Mr4BxwOXckdSrk/jK2Cmqh5TVYe3j/VpfG8H/q6qHk7zHv02Kx1fVQ39\nC3gi8OmB+ycAJ4yiL+s8roOBrQP3vw3cv729P/DtUfdxncZ5JvD0Po4P2AO4ADi0T+MDDgQ+BxwB\nfLJ9rE/juxy4z7zHejE+4F7A9xd4fEXjG9U0zkIfuHrgiPrSpftX1bXt7WuB+4+yM+shycHAY4Cv\n0qPxJdmQ5CKacZxbVd+iR+MD3gq8Btgx8FifxlfA55J8Lcmm9rG+jO/BwPVJ3p/kG0nek2RPVji+\nURX7qVsVrubH70SPO8lewMeB46vq5sHnJn18VbWjmmmcA4FfS3LEvOcndnxJjgauq6oLgQWz2ZM8\nvtaTquoxwLNophmfMvjkhI9vV+CxwDur6rHAvzBvymY54xtVsf8BcNDA/YNozu775tok+wMkOQC4\nbsT9WbUkd6Mp9KdX1Zntw70Z35yqugn4FPCr9Gd8/wH4zSSXAx8GnpbkdPozPqpqW/vv9cAZNNfm\n6sv4rgaurqoL2vsfoyn+16xkfKMq9l8DHprk4CS7Ac8HPjGivnTpE8BL2tsvoZnrnjhJAvwFcGlV\nvW3gqb6Mb7+5JEOS3YFfBy6kJ+OrqtdW1UFV9WDgGODvq+pF9GR8SfZIsnd7e0/gGcBWejK+qroG\nuCrJw9qHng58C/gkKxnfCBcdnkXzCdvvASeOehFkHcbzYZpPCt9Ksx5xLLAvzaLYd4DPAPuMup+r\nHNuTaeZ6L6IpghfSJI/6Mr5HAt9ox3cx8Jr28V6Mb95Ynwp8ok/jo5nTvqj9umSunvRlfO1YHkUT\nHPgm8Dc0i7YrGp8fqpKkKdCzPxciSVqIxV6SpoDFXpKmgMVekqaAxV6SpoDFXpKmgMVemifJAUn+\netT9kNaTOXtJmgKe2WuqJXlTklcM3N+S5FVzf4QmyUuT/E2Ss9o/EvHm0fVWWj2LvabdR4HnDdx/\nLs3lmwc9qt3mkcDzk/Txctzquc7+4Lg0CarqoiT3a68aeD/gBu78txYAzqn2ks5JLqX5IzU/GGpH\npTWy2Evw18BzaP7az0cWeP7nA7d/CewyjE5J68liLzVTOe8F7gP8GrD7Etsv+AdApHHmnL2mXlVd\nCuxF8wci5v7MWw38Oz+yZoRNE8fopSRNAc/sJWkKWOwlaQpY7CVpCljsJWkKWOwlaQpY7CVpCljs\nJWkKWOwlaQr8f7mTno9OLf9JAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72315bc8d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7230055890>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "\n", + "# (a) Transfer characteristics\n", + "# (b) Transfer characteristics\n", + "\n", + "t=arange(0,20,0.1) # in mili-seconds\n", + "vin=[]\n", + "for x in t:\n", + " vin.append(30*x/10)# Input voltage in volts\n", + "# From Fig. 3.52(b)\n", + "# Part {a}\n", + "# Sketching of transfer characteristics\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " if vin[i]>25:\n", + " vo.append(5)# in volts\n", + " else:\n", + " IL=vin[i]/(200+50)# # in amperes\n", + " vo.append(IL*50) #in volts\n", + " \n", + "\n", + "#plot2d(vin,vo,rect=[0,0,60,6])#\n", + "plot(vin,vo)\n", + "title(\"Part (a) - Transfer characteristics\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()\n", + "# Part (b)\n", + "# Sketching of transfer characteristics\n", + "Vy=0.5# # in volts\n", + "Rf=40# # in ohms\n", + "VA=5+0.5# # in volts\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " if vin[i]<27.5 :\n", + " IL=vin[i]/(200+50)# # in amperes\n", + " vo.append(IL*50)# # in volts\n", + " else:\n", + " IL=(vin[i]+27.5)/500# # in amperes\n", + " vo.append(IL*50)# # in volts\n", + " \n", + "\n", + "plot(vin,vo)#\n", + "title(\"Part (b) - Transfer characteristics\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.23: Page No 150" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7230095b50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72314c40d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Output voltage and transfer characteristic curve\n", + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "t=arange(-6,6,0.001)\n", + "vin=[]\n", + "for x in t:\n", + " vin.append(6*sin(2*pi*x/12)) #Input voltage in volts\n", + "# Sketching of output voltage\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " if vin[i]>=2:\n", + " # From Fig. 3.54(b), D1 ON and D2 OFF\n", + " I1=(vin[i]-2)/(10e3+10e3)# # in amperes\n", + " vo.append(vin[i]-I1*10e3) # in volts\n", + " elif vin[i]>=-4:\n", + " # both D1 and D2 OFF\n", + " vo.append(vin[i])#\n", + " else:\n", + " # From Fig. 3.54(c), D1 OFF and D2 ON \n", + " vo.append(-4)# # in volts\n", + " \n", + "\n", + "plot(t,vin,\"--\")\n", + "plot(t,vo)\n", + "title(\"Output voltage and input voltage\")\n", + "xlabel(\"omega_t\")\n", + "ylabel(\"vo,vin\")\n", + "show()\n", + "# Sketching of transfer characteristic curve\n", + "plot(vin,vo)\n", + "title(\"Transfer characteristic curve\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.24: Page No 152" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nmJOHmZlV7P8DzVRlD6v4PNkAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f723175fa50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "\n", + "#Voltage transfer characteristics\n", + "vin=arange(-2.5,2.5,0.25)# # Input voltage in volts\n", + "# Obtaining thevnin's equivalent circuit on LHS of XX'\n", + "V_th=[]\n", + "for v in vin:\n", + " V_th.append(v*7.5e3/(7.5e3+15e3))# # in volts\n", + " \n", + "R_th=15e3*7.5e3/(15e3+7.5e3)# # in ohms\n", + "# Sketching of voltage transfer characteristics\n", + "# From thevnin's equivalent circuit in Fig. 3.55(b)\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " if vin[i]>1.8:\n", + " I1=(V_th[i]-0.6)/(5e3+R_th)# # in amperes\n", + " vo.append(I1*5e3)# in volts\n", + " elif vin[i]>-1.8:\n", + " vo.append(0)#\n", + " else:\n", + " I2=(V_th[i]+0.6)/(4e3+R_th)# # in amperes \n", + " vo.append(I2*5e3)# # in volts\n", + " \n", + "\n", + "plot(vin,vo)#\n", + "title(\"Voltage transfer characteristics\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.25: Page No 153" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n3+SDCAkBUwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f722622dd10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7231298b10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "\n", + "# (a) Output voltage waveform\n", + "# (b) Transfer curve\n", + "t=arange(0,12,0.001)\n", + "vin=[]\n", + "for tt in t:\n", + " vin.append(15*sin(2*pi*tt/12)) # Input voltage in volts\n", + "# From Fig. 3.56(a)\n", + "\n", + "# Sketching of output voltage waveform\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " if vin[i]<16/3:\n", + " # D1 OFF and D2 ON\n", + " I2=(10-3)/(20e3+10e3)# # in amperes\n", + " vo.append(10-I2*20e3)# # in volts\n", + " elif vin[i]<=10:\n", + " # both D1 and D2 ON\n", + " vo.append(vin[i])#\n", + " else:\n", + " # D1 ON and D2 OFF \n", + " vo.append(10)# # in volts\n", + " \n", + "plot(t,vin,\"--\")\n", + "plot(t,vo)#\n", + "title(\"Output voltage and input voltage\")\n", + "xlabel(\"omega_t\")\n", + "ylabel(\"vo,vin\")\n", + "show()\n", + "# Sketching of transfer curve\n", + "plot(vin,vo)\n", + "title(\"Transfer characteristic curve\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.26: Page No 155" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72317dabd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72312a2690>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "#Transfer characteristics and output and input voltage\n", + "T=60# # Let T = 60 seconds\n", + "t=range(0,T)#\n", + "vin=[]\n", + "for tt in t:\n", + " vin.append(120*tt/T) # Input voltage in volts\n", + "# From Fig. 3.57(a)\n", + "# Sketching of transfer characteristics\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " if vin[i]<=15:\n", + " # Both D1 and D2 OFF\n", + " vo.append(15)# # in volts\n", + " elif vin[i]<=105:\n", + " # D1 OFF and D2 ON\n", + " I2=(vin[i]-15)/(100e3+200e3)# # in amperes\n", + " vo.append(vin[i]-I2*100e3)# # in volts\n", + " else :\n", + " # Both D1 and D2 ON\n", + " vo.append(75)# # in volts\n", + " \n", + "plot(vin,vo)#\n", + "title(\"Transfer characteristics\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()\n", + "# Sketching of output\n", + "plot(t,vin,\"--\")\n", + "plot(t,vo)#\n", + "title(\"Output voltage and input voltage\")\n", + "xlabel(\"omega_t\")\n", + "ylabel(\"vo,vin\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.27: Page No 156" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nrkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f723143c8d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "#vo vs vin\n", + "vin=range(0,500) # Input voltage in volts\n", + "# Sketching of vo vs vin\n", + "vo=[]\n", + "for i in range(0,len(vin)):\n", + " if vin[i]<3 :\n", + " # From Fig. 3.58(b), D1 ON, D2 and D3 OFF\n", + " I1=6/(5e3+5e3)# # in amperes\n", + " vo.append(I1*5e3) # in volts\n", + " elif vin[i]<9 :\n", + " # From Fig. 3.58(c), D1 and D3 ON, D2 OFF\n", + " # Applying Kirchoff's laws\n", + " vo.append(0.5*vin[i]+1.5) # in volts\n", + " elif vin[i]<30:\n", + " # From Fig. 3.58(d), D3 ON, D1 and D2 OFF\n", + " I3=vin[i]/(2.5e3+5e3) # in amperes \n", + " vo.append(I3*5e3) # in volts\n", + " else:\n", + " # From Fig. 3.58(e), D2 and D3 ON, D1 OFF\n", + " # Applying Kirchoff's laws\n", + " vo.append(4*vin[i]/7+20/7)# # in volts\n", + "\n", + "plot(vin,vo)#\n", + "title(\"Voltage transfer characteristics\")\n", + "xlabel(\"vin\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.28: Page No 164" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAG/5JREFUeJzt3Xu4XHV97/H3B5IgiULoCSUUSBOEWKAlQA9INeBwq4Tr\n05aCPaZSAghpMW25y1Nha23VI+ESQU4KQikgIHA8wjFgLWWExwaKEO6XQFIg4eYGY4goSsy3f6y1\nYWaYvffae8+atWbm83qe/WRmrd/85ju/JPPdv/Vba30VEZiZmQ3YqOgAzMysXJwYzMysjhODmZnV\ncWIwM7M6TgxmZlbHicHMzOo4MZgVSNJzkg4oOg6zWk4MVjqS/kLSo5LelPSypK9L2nwEr39O0v4t\njKel/TWI9AdJfZKuyel9zDJzYrBSkXQa8GXgNGAzYG/gt4HvSxqfsZsA1MKwWt2fWak5MVhpSNoM\n6ANOiYh/jYhfR8TzwNHAdGBu2u6fJf19zesqklalj68BpgG3SVon6XRJ0yVtkHSipBclvZQmIEbT\nX5O4n5R0aM3zcZL6Je2WPj9C0uOS1ki6S9LvNOnjYOCzwDHp+yxLtx8n6QlJb0haIenTDa87M/08\nqyWdkH7O7dN9m0g6X9Lzkl6RdJmk943gr8R6lBODlclHgPcB/7d2Y0S8CSwBDhrYlP68R0T8OfAC\ncFhEfCAizq/ZXQF2AP4QOKvm2P5o+xvwTeDPap5/HPhxRDwkaWa6fwEwJf0ct0ka1/A+dwD/CNyQ\nvs/u6a5XgUMjYjPgOOBCSbvDO8nkb4EDgB3Tz1fry+nnnZX+uQ1wbrPPaVbLicHKZArwWkRsaLLv\nFeB/1DwfzaGdz0fELyLiMeAq6r/Mx3Ko6JvAETW/jf8v4Pr08THA/4+IOyPi18D5wKYkSbCRGuOI\niCUR8V/p47uBfwX2SXcfDVwZEU9GxC+A897pSBJwInBqRPw0In4GfAn4xBg+p/UIJwYrk9eAKZKa\n/bvcOt0/FqtqHr8A/NYY+wMgIlYAT5Ikh4nA4STJApK4X6hpG2kc22TpW9IcSfdKel3SGuAQ3k2Q\nW1P/mVbXPN4SmAg8kB7CWgPcTpJ8zYbkxGBlshT4JfAntRslvR84GLgz3fQmyZfegKkN/Qx2y+Bp\nDY9fHGN/ta4nmYEcCTwRESvT7S+RLJ4D7/wmv13New/6PpI2AW4B/jfwmxGxBcmhqIFZxctpXwNq\nH78G/ALYOSK2SH8mp4ekzIbkxGClERFrgc8DX5P0cUnjJU0HvkXym/HAqZwPAYdI2kLSVOBvGrp6\nFfhgk7f4O0mbStoF+AvgxjH2V+sGkrWFk4HrarZ/CzhU0v7pWVWnAW8B/9Gkj1eA6WnyAJiQ/rwG\nbJA0h2R9pLbv4yT9TjpT+dzAjvRw3OXARZK2BJC0jaTa15s15cRgpRIRXwXOITkWvxa4F3geOCAi\n3k6bXQM8DDwH3EHypVz72/aXSJLAGkmn1mz/AfAs8G/AVyPi38bYX23cr5B82f8B7yYcImI5ydlU\nXwP6gUOBwyNifZNubkr/fF3SjyJiHcmi9beAn5DMSL5T0/cdwCLgLmA5yYwLklkXwFnp571X0lrg\n+8DMZvGb1VKehXokfYjkP9mA7YHPRcSimjafBM4kmR6vA+ZHxCO5BWU9J511rATGDbKw3RUk7QQ8\nCkzo5s9p+Rs3fJPRi4ingYFT6zYiOa767YZmK4F9I2JtevrdP5Fc1GRmw5D0RyTrDhOBrwC3OinY\nWLXzUNKBwIqIqD2LgohYmh5bBrgP2LaNMVnv6NYatp8mWQN5FngbmF9sONYNcp0xNPgE757CN5jj\nSX77MWuZiHgO2LjoOPIQEXOKjsG6T65rDO+8iTSB5DDSzhHRP0ib/YBLgY9GxJrcgzIzs6baNWOY\nAzwwRFLYleTUuoObJQVJ3XoYwMwsVxEx4qv627XG8Ge8e4uAOpKmkdwbZ25EPDtYBxFR+p/zzjuv\n8Bi6Jc5OiNFxOs6y/4xW7jMGSZNIFp5PrNl2EkBELCa5qdcWwGXpdT1vR8ReecdlZmbN5Z4YIrkz\n5pSGbYtrHp8AnJB3HGZmlo2vfG6hSqVSdAiZdEKcnRAjOM5Wc5zl0JazksZKUnRCnGZmZSKJKPHi\ns5mZdQgnBjMzq+PEYGZmdZwYzMysjhODmZnVcWIwM7M6TgxmZlbHicHMzOo4MZiZWR0nBjMzq+PE\nYGZmdZwYzMysjhODmZnVcWIwM7M6TgxmZlbHicHMzOo4MZiZWR0nBjMzq+PEYGZmdZwYzMysjhOD\nmZnVcWIwM7M6TgxmZlbHicHMzOo4MZiZWR0nBjMzq5NbYpD0IUnLan7WSlrQpN0iSc9IeljS7nnF\nY2Zm2YzLq+OIeBrYHUDSRsCLwLdr20g6BNghInaU9GHgMmDvvGIyM7PhtetQ0oHAiohY1bD9COBq\ngIi4D5gsaas2xWRmZk20KzF8Avhmk+3bALXJYjWwbVsiMjOzpnJPDJImAIcDNw3WpOF55BuRmVl3\ni4B580b/+tzWGGrMAR6IiP4m+14Etqt5vm267T36+vreeVypVKhUKq2L0MysC1SrVarVKs8/D7fe\nOvp+FJHvL+iSbgBuj4irm+w7BDglIg6RtDdwUUS8Z/FZUuQdp5lZtzjySJgzB+bPFxHReFRmWLkm\nBkmTgOeBGRGxLt12EkBELE6fXwIcDLwJHBcRDzbpx4nBzCyD5cth9mx47jmYNKmEiaFVnBjMzLKZ\nPx+23BK+8AWQnBjMzHpafz/MnAlPPQVbbTX6xOBbYpiZdYnLLoOjjkqSwlh4xmBm1gXeegumT4e7\n7oKddkq2ecZgZtbDrr0Wfv/3300KY9GO6xjMzCxHGzbABRfAJZe0pj/PGMzMOtwdd8Amm8B++7Wm\nPycGM7MOd/75cPrpoBGvJjTnxGBm1sGWLYNnnoGjj25dn04MZmYdbOFCWLAAxo9vXZ8+XdXMrEOt\nXg277gorV8Lkye/d79NVzcx6zKJFcOyxzZPCWHjGYGbWgd54A2bMgAceSC5sa8YzBjOzHvKNb8BB\nBw2eFMbCMwYzsw6zfj3ssAPcdBPsuefg7TxjMDPrEbfcAtOmDZ0UxsKJwcysg0Qkp6iedlp+7+HE\nYGbWQe65B376Uzj88Pzew4nBzKyDLFwIp54KG+X47e3FZzOzDlFbz3nixOHbe/HZzKzLXXghnHxy\ntqQwFp4xmJl1gMZ6zll4xmBm1sVaVc85C88YzMxKrlk95yw8YzAz61KtrOechWs+m5mVWKvrOWfh\nGYOZWYm1up5zFk4MZmYl1up6zlk4MZiZlVQe9ZyzcGIwMyupPOo5Z5Hr6aqSJgNXALsAAcyLiHtr\n9k8BrgWmkiyEnx8R/9ykH5+uamY9Zbh6zlmM9nTVvBPD1cAPIuJKSeOASRGxtmZ/H7BJRHw2TRJP\nA1tFxPqGfpwYzKynnHkmvP12chuM0RptYsjtdFVJmwP7RMSxAOmX/dqGZi8Du6aPNwNeb0wKZma9\n5o03ktKdDzxQzPvnucYwA+iXdJWkByVdLqnx1k+XA7tIegl4GPjrHOMxM+sIedZzziLPC9zGAXsA\np0TE/ZIuAs4Gzq1pcw7wUERUJH0Q+L6kWRGxrrGzvr6+dx5XKhUqlUqOoZuZFWP9erj44qSe80hV\nq1Wq1eqYY8htjUHSVGBpRMxIn88Gzo6Iw2raLAH+ISJ+mD6/EzgrIn7U0JfXGMysJ9x4I1x6Kdx9\n99j7Kt29kiLiFWCVpJnppgOBxxuaPZVuR9JWwIeAlXnFZGZWZu2o55xF3vdK+gxwnaQJwApgnqST\nACJiMfCPwFWSHiZJUmdGxE9yjsnMrJTaUc85C99228ysJI48EubMSaq0tUIpr2NoFScGM+t2I63n\nnEXp1hjMzCy7dtVzzsIzBjOzgo2mnnMWnjGYmXWodtZzzsIzBjOzAo22nnMWnjGYmXWgdtdzzsI1\nn83MClJEPecsPGMwMytIEfWcs3BiMDMrSBH1nLNwYjAzK0BR9ZyzcGIwMytAUfWcs/DpqmZmbdaK\nes5Z+HRVM7MOsWgRHHtsvklhLDxjMDNrozfegBkzknrOeZfu9IzBzKwDFF3POQvPGMzM2mT9ethh\nh6Se85575v9+njGYmZXcLbfAtGntSQpj4cRgZtYGZannnIUTg5lZG5SlnnMWTgxmZm2wcCGceips\n1AHful58NjPLWR71nLPw4rOZWUmVqZ5zFp4xmJnlKK96zlmMdsYwZKEeSeOBPwT2BaYDATwP3A18\nLyLWjzxUM7PeUbZ6zlkMOmOQ9DngT4ClwH8CL5Ecetoa2AvYG7g5Ir6Ye5CeMZhZB8qznnMWecwY\nHga+OMg38pWSNgIOG+kbmpn1ijLWc85i2DUGSX8aETcNty1PnjGYWafZsAF+93eTes77719MDHme\nlXROxm1mZpYqaz3nLAY9lCRpDnAIsI2kRcBA1vkA8HaWziVNBq4AdiFZuJ4XEfc2tKkAFwLjgdci\nojKyj2BmVj5lreecxVBrDC8BDwBHpn+K5Mt9HfC3Gfu/GFgSEUdJGgdMqt2ZJo5LgY9HxGpJU0YY\nv5lZ6ZS5nnMWWdYYJkTEr0bcsbQ5sCwith+izV8CUyPi3GH68hqDmXWMuXNh1iw444xi42j5GoOk\n70r6U5rMKiRNknSMpCVD9D0D6Jd0laQHJV0uqfG6vx2B35B0l6QfSfrzkX4AM7MyWb0aliyBE08s\nOpLRG+pQ0nHAKcDnJf0aeJnkcNLU9HU3AscO0/cewCkRcb+ki4CzgdrZwfi0zQHARGCppHsj4pnG\nzvr6+t55XKlUqFQqw302M7O2K7Kec7VapVqtjrmfTLfEkDQV+G2SNYYXIuKVjK9ZGhEz0uezgbMj\n4rCaNmcBm0ZEX/r8CuCOiLi5oS8fSjKz0mtnPecs8r6JXgC/mf5syPSCJHmskjQz3XQg8HhDs+8A\nsyVtnB5m+jDwRMaYzMxKpRPqOWeRZfH5aOCrwA/STfsCZ2S5wE3SLJLTVScAK4B5wDEAEbE4bXM6\nyWGrDcDlEbGoST+eMZhZqbW7nnMWo50xZEkMjwAHRsSP0+dbAndGxK6jinQUnBjMrOxuvBEuvRTu\nvrvoSN6V56EkAf01z1/n3YvdzMx6XifVc85iyNtup+4AvifpmyQJ4Rjg9lyjMjPrIJ1UzzmLLInh\nVeBaYLf0+eKI+HZ+IZmZdZZOquecRZbE8H6SxeE1JNcu/EeuEZmZdZDly2HpUrj++qIjaZ3MpT3T\nM4yOBo4CVkfEAXkG1vDeXnw2s1KaPx+23BK+8IWiI3mvXEp7Nvgx8ArJ4vOWI30jM7Nu098PN9yQ\n1HPuJsMeEZP0l5KqwJ3AFOCEdp6qamZWVp1YzzmLLDOG7YC/iYiH8g7GzKxTvPUWfP3rST3nbjNs\nYoiIz7YjEDOzTtKp9ZyzGMkag5mZkdRzvuCCpJ5zN+qSs27NzNqnk+s5Z+HEYGY2Qp1czzkLJwYz\nsxHo9HrOWTgxmJmNwMKFsGABjB9fdCT5yXzlc5F85bOZlcHq1bDrrrByZTGlO0cq7wpuZmY9r8h6\nzu3kGYOZWQZlq+echWcMZmY56pZ6zll4xmBmNowy1nPOwjMGM7Oc3HILTJvWWUlhLJwYzMyG0G31\nnLNwYjAzG0K31XPOwonBzGwI3VbPOQsvPpuZDWL5cpg9G557DiZOLDqakfPis5lZi114IZx8cmcm\nhbHwjMHMrIn+fpg5M6nn3KmlOz1jMDNroW6t55yFZwxmZg3eeiu5wvmuuzq7dGcpZwySJku6WdKT\nkp6QtPcg7faUtF7SH+cZj5lZFt1czzmLvGs+XwwsiYijJI0DJjU2kLQx8BXgDqBL6yGZWafo9nrO\nWeQ2Y5C0ObBPRFwJEBHrI2Jtk6afAW4G+vOKxcwsq9tv7+56zlnkeShpBtAv6SpJD0q6XFLdSV+S\ntgGOBC5LN3khwcwKtXBhd9dzziLPQ0njgD2AUyLifkkXAWcD59a0uQg4OyJCkhjiUFJfX987jyuV\nCpVKJY+YzayHdXo952q1SrVaHXM/uZ2VJGkqsDQiZqTPZ5MkgcNq2qzk3WQwBfg5cGJE3NrQl89K\nMrPczZ0Ls2bBGWcUHUlrjPaspNxmDBHxiqRVkmZGxHLgQODxhjbbDzyWdBVwW2NSMDNrh1WrYMmS\n3l50HpD3WUmfAa6TNAFYAcyTdBJARCzO+b3NzDLrlXrOWfgCNzPreZ1YzzmLUl7gZmbWCXqpnnMW\nnjGYWU/r1HrOWXjGYGY2Cr1WzzkLJwYz61kRcP75vVXPOQsnBjPrWffcA2vX9lY95yycGMysZ/Vi\nPecsvPhsZj2p0+s5Z+HFZzOzEejVes5ZeMZgZj2nG+o5Z+EZg5lZRr1czzkLzxjMrKd0Sz3nLDxj\nMDPLoNfrOWeR991VzcxKw/Wcs/GMwcx6hus5Z+PEYGY9w/Wcs3FiMLOe0On1nNvJicHMesLChbBg\nAYwfX3Qk5efTVc2s661aBbNmwcqVvVW606ermpkNwvWcR8YzBjPrat1azzkLzxjMzJpwPeeR84zB\nzLpWN9dzzsIzBjOzBq7nPDpODGbWlVzPefScGMysK7me8+g5MZhZV3I959Hz4rOZdZ1eqOechRef\nzcxSruc8NrnPGCRNBq4AdgECmBcR99bs/yRwJiBgHTA/Ih5p6MMzBjPLpFfqOWcx2hlDOwr1XAws\niYijJI0DJjXsXwnsGxFrJR0M/BOwdxviMrMu5HrOY5frjEHS5sCyiNg+Y/stgEcjYtuG7Z4xmNmw\neqmecxZlXWOYAfRLukrSg5IulzTUUb/jgSU5x2RmXcr1nFsj78QwDtgD+HpE7AG8CZzdrKGk/YB5\nwFk5x2RmXWignrMvaBu7vNcYVgOrI+L+9PnNNEkMknYFLgcOjog1zTrq6+t753GlUqFSqbQ6VjPr\nYK7nDNVqlWq1OuZ+2nFW0t3ACRGxXFIfsGlEnFWzfxrw78Dc2rOVGvrwGoOZDWn//eH44+GTnyw6\nkvIY7RpDOxLDLJLTVScAK0gOFx0DEBGLJV0B/BHwQvqStyNir4Y+nBjMbFDLlsERRyQV2ly6812l\nTQyt4MRgZkOZOzcp3XnGGUVHUi5ODGbWk3q1nnMWZT1d1cwsV67n3HqeMZhZx+rles5ZeMZgZj3H\n9Zzz4RmDmXWkXq/nnIVnDGbWU1zPOT9ODGbWcVzPOV9ODGbWcVzPOV9ODGbWcVzPOV9efDazjuJ6\nztl58dnMeoLrOefPMwYz6xiu5zwynjGYWddzPef28IzBzDqC6zmPnGcMZtbVXM+5ffIu7WlmNmYD\n9ZwvuaToSHqDZwxmVnqu59xeTgxmVnoLF8Lpp4NGfLTcRsOJwcxKbdkyeOYZOProoiPpHU4MZlZq\nCxfCggUwfnzRkfQOn65qZqXles5j49NVzazruJ5zMTxjMLNScj3nsfOMwcy6ius5F8czBjMrHddz\nbg3PGMysa7iec7GcGMysVFzPuXhODGZWKq7nXLxcE4OkyZJulvSkpCck7d2kzSJJz0h6WNLuecZj\nZuXnes7Fy3voLwaWRMROwK7Ak7U7JR0C7BAROwKfBi7LOZ5cVavVokPIpBPi7IQYwXG22jXXVFm6\nFD71qaIjGVqnjOdo5ZYYJG0O7BMRVwJExPqIWNvQ7Ajg6nT/fcBkSR1bm6lT/rF0QpydECM4zla7\n+OJqR9Rz7pTxHK08ZwwzgH5JV0l6UNLlkhr/urcBVtU8Xw1sm2NMZlZS/f3w2GPwV39VdCSWZ6Ge\nccAewCkRcb+ki4CzgXMb2jWeY9v0goVOWIh6+unkKs2y64Q4OyFGcJyt9NJLsPPOrudcBrld4CZp\nKrA0Imakz2cDZ0fEYTVt/g9QjYgb0udPAR+LiFcb+vLVbWZmozCaC9xymzFExCuSVkmaGRHLgQOB\nxxua3QqcAtyQnrH008akkPbl8hxmZm2S6y0xJM0CrgAmACuAecAxABGxOG1zCXAw8CZwXEQ8mFtA\nZmY2rI64V5KZmbVPqS4hkXSwpKfSC97OGqRNoRfEDRejpIqktZKWpT9/V0CMV0p6VdKjQ7Qp/MLC\n4eIsw1imcWwn6S5Jj0t6TNKCQdoV/W9z2DjLMKaS3ifpPkkPpRe+fmmQdkWP57BxlmE80zg2Tt//\ntkH2j2wsI6IUP8DGwLPAdGA88BCwU0ObQ0gumAP4MHBvCWOsALcWPJb7ALsDjw6yv9BxHEGchY9l\nGsdUYLf08fuBp8v2b3MEcZZlTCemf44D7gVml208M8ZZlvE8FbiuWSyjGcsyzRj2Ap6NiOci4m3g\nBuDIhjZFXxCXJUZ47ym4bRUR9wBrhmhS9DiSvvdwcULBYwnJiRQR8VD6+GckV/D/VkOzwsc0Y5xQ\njjH9efpwAskvXD9paFL4eKbvPVycUPB4StqW5Mv/ikFiGfFYlikxNLvYbZsMbdp5QVyWGAP4SDpl\nWyJp57ZFl13R45hV6cZS0nSSWc59DbtKNaZDxFmKMZW0kaSHgFeBuyLiiYYmpRjPDHGWYTwvBM4A\nNgyyf8RjWabEkHUVPNMFcTnJ8l4PAttFxCzga8D/yzekUStyHLMq1VhKej9wM/DX6W/k72nS8LyQ\nMR0mzlKMaURsiIjdSL6g9pVUadKs8PHMEGeh4ynpMODHEbGMoWcuIxrLMiWGF4Htap5vR5LZhmqz\nbbqtXYaNMSLWDUw/I+J2YLyk32hfiJkUPY6ZlGksJY0HbgGujYhm//lLMabDxVmmMU1jWAt8F/if\nDbtKMZ4DBouzBOP5EeAISf8FXA/sL+lfGtqMeCzLlBh+BOwoabqkCSTXO9za0OZW4FMAQ10QV2SM\nkraSpPTxXiSnBDc7Llmkoscxk7KMZRrDN4AnIuKiQZoVPqZZ4izDmEqaImly+nhT4CBgWUOzMozn\nsHEWPZ4RcU5EbBfJHSY+Afx7RDTem3bEY5nnvZJGJCLWSzoF+B7JIs83IuJJSSel+xdHxBJJh0h6\nlvSCuLLFCBwFzJe0Hvg5yV9WW0m6HvgYMEXSKuA8krOoSjGOWeOkBGOZ+igwF3hE0sAXwznANCjV\nmA4bJ+UY062BqyVtRPLL6TURcWeZ/q9njZNyjGetABjrWPoCNzMzq1OmQ0lmZlYCTgxmZlbHicHM\nzOo4MZiZWR0nBjMzq+PEYGZmdZwYrGdJ2lzS/CH2/7Cd8ZiVha9jsJ6V3mjutoj4vYJDMSsVzxis\nl30Z+GBa4OQrjTsl/Sz9syKpKukmSU9KurZZZ2mbCyTdn7bbU9K3JS2X9Pdpm0mSvquk+Mujko7O\n9ROajUJpbolhVoCzgF0iYrCKVrXT6d2AnYGXgR9K+mhENB5qCuCXEbGnkupp3yG59fUaYIWkC4H9\ngBcj4lAASZu17uOYtYZnDNbLRlJg5T8j4qVIjr0+RFLFr5mBmyo+BjwWEa9GxK+AlSR3tXwEOEjS\nlyXNjog3Rhm7WW6cGMyy+WXN418z+Gx7oN2GhtdsAMZFxDOk5UyBL0r6XKsDNRsrH0qyXrYO+EAb\n30+StgbWRMR1ktYCx7fx/c0ycWKwnhURr0v6oaRHSYqln9XYZJDHzZ6/p/tBXvN7wFclbQB+BQx6\nuqxZUXy6qpmZ1fEag5mZ1XFiMDOzOk4MZmZWx4nBzMzqODGYmVkdJwYzM6vjxGBmZnWcGMzMrM5/\nA37jeq9o8Ir9AAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7231474650>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "#Output voltage\n", + "t=range(0,5)# # in seconds\n", + "vs=[]\n", + "for tt in t:\n", + " vs.append(10*tt/5) # Input voltage in volts\n", + "# Output voltage\n", + "vo=[]\n", + "for i in range(0,len(vs)):\n", + " if vs[i]<6 :\n", + " # Diode is OFF\n", + " vo.append(6)# in volts\n", + " else:\n", + " # From Fig. 3.65(c), Diode is ON\n", + " I=(vs[i]-6)/(200+200)# # in amperes\n", + " vo.append(6+I*200)# in volts\n", + " \n", + "plot(t,vo)\n", + "title(\"Output voltage\")\n", + "xlabel(\"t in ms\")\n", + "ylabel(\"vo(t)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.29: Page No 165" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7231456890>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "#Output voltage\n", + "Vy=0.5# # in volts\n", + "Rf=50# # in ohms\n", + "t=range(0,5) # in seconds\n", + "vs=[]\n", + "for tt in t:\n", + " vs.append(10*tt/5) # Input voltage in volts\n", + "# Output voltage\n", + "vo=[]\n", + "for i in range(0,len(vs)):\n", + " if vs[i]<6.5:\n", + " # Diode is OFF\n", + " vo.append(6)# # in volts\n", + " else:\n", + " # From Fig. 3.66(a), Diode is ON\n", + " I=(vs[i]-6.5)/(200+Rf+200)# # in amperes\n", + " vo.append(6+I*2000) # in volts\n", + " \n", + "\n", + "plot(t,vo)\n", + "title(\"Output voltage\")\n", + "xlabel(\"t in ms\")\n", + "ylabel(\"vo(t)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.30: Page No 166" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7231377510>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f722614d390>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "\n", + "# (a) Output waveform\n", + "# (b) Output waveform\n", + "t=arange(0,12,0.001)\n", + "vin =[]\n", + "for tt in t:\n", + " vin.append(15*sin(2*pi*tt/12))# # Input voltage in volts\n", + "\n", + "# Part (a), From Fig. 3.67(a)\n", + "vo=[]\n", + "for v in vin:\n", + " vo.append(v-15)# # in volts\n", + "plot(t,vo)#\n", + "title(\"Part (a) - Output voltage\")\n", + "xlabel(\"t\")\n", + "ylabel(\"vo\")\n", + "show()\n", + "\n", + "# Part(b), From Fig. 3.67(b)\n", + "vo=[]\n", + "for v in vin:\n", + " vo.append(v-10)# # in volts\n", + "plot(t,vo)#\n", + "title(\"Part (b) - Output voltage\")\n", + "xlabel(\"t\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.31: Page No 167" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEZCAYAAABxbJkKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnX2wbXV53z/fyxWV+oIGA7cUQ5rGJs3EQmydtJp6QE0w\nRqKTCZaOLXF8a2LRGDP1ZdJwbpyp74RpZsp0KljEqDWxIsaoXBlOfCtanXv1CgRqAgrGe/EFCfjS\nIfD0j70WbM9ea6/ztu/63nO+n5kzd+219177tz7rOef5Pc/6nXNVVYQQQtiZ7Bp7ACGEEMYjSSCE\nEHYwSQIhhLCDSRIIIYQdTJJACCHsYJIEQghhB5MkEMIRRtItkp469jhCgCSBYIKk35B0UNJ3JX1d\n0n+V9Mh1vP8WSWdu4Xi29HirqOYLScuSLl/Q54QwSJJAGB1JrwTeALwSeATw88CPAfskPWiNhylA\nWzisrT5eCJYkCYRRkfQIYBn4D1V1VVXdW1VfAc4BTgWe17zuf0h63dT7liTd2mxfDjwW+KCkuyT9\nrqRTJd0n6UWSvibpb5pkw0aO1zHuGyQ9c+rxbknfkHRa8/hsSddJukPSNZJ+quMYZwGvAZ7bfM7+\nZv/zJV0v6W8l/ZWkF696339szuc2SS9szvMfNs89WNJbJH1F0iFJF0t6yDouSdhhJAmEsfmXwEOA\n/zW9s6q+C/w58PR2V/M1Q1X9W+CrwK9U1cOr6i1TTy8B/wj4ReBVU734jR6v5V3AuVOPfwm4vaoO\nSHpc8/zLgBOa8/igpN2rPucjwH8G3tN8zunNU4eBZ1bVI4DnA38o6XS4P3G8Angq8JPN+U3zhuZ8\n/2nz78nA73edZwiQJBDG5wTgm1V1X8dzh4AfmXq8kfbM3qr6flV9CXg7P/yDezPtnncBZ0/Nsv8N\n8O5m+7nAn1XV1VV1L/AW4KFMEt5qtHocVfXnVXVzs/1x4CrgF5qnzwEuraobqur7wAX3H0gS8CLg\nd6rqO1V1N/B64F9v4jzDNidJIIzNN4ETJHXF4p7m+c1w69T2V4G/v8njAVBVfwXcwCQRHAc8i0li\ngMm4vzr12mrGcfJaji3pGZKulfQtSXcAv8wDyXAPP3xOt01tPwY4Dvh804a6A/gwk0QbQidJAmFs\n/jfw/4Bfm94p6WHAWcDVza7vMvkB13LSquP0/Tncx67a/tomjzfNu5lUFr8KXF9Vf93s/xsmN7aB\n+2fop0x9du/nSHow8D7gTcCPVtWjmLST2mrh682xWqa3vwl8H/gnVfWo5uv4pq0UQidJAmFUqupO\nYC/wR5J+SdKDJJ0KvJfJjLddPnkA+GVJj5J0EvDbqw51GPiJjo/4PUkPlfQzwG8A/3OTx5vmPUzu\nBfx74I+n9r8XeKakM5vVTa8EfgB8uuMYh4BTm0QBcGzz9U3gPknPYHI/Y/rYz5f0U00F8p/aJ5qW\n2n8HLpL0GABJJ0uafn8IP0SSQBidqnoz8FomvfM7gWuBrwBPrap7mpddDnwBuAX4CJMfwNOz6Ncz\n+YF/h6Tfmdr/F8CXgY8Bb66qj23yeNPjPsTkB/u/4IHkQlXdxGRV0x8B3wCeCTyrqv6u4zB/0vz7\nLUmfq6q7mNxQfi/wbSaVxgemjv0R4L8A1wA3MamkYFJNAbyqOd9rJd0J7AMe1zX+EAC0qP9Uprlh\n9hfAg5nMbD5QVa+RtAy8kMk3B8BrmsAOYctoqom/Bnb33HTeFkj6aeAgcOx2Ps+wOHYPv2RjVNUP\nJJ1RVd9rlsZ9UtKTmcy2LqyqCxf12SFsZyQ9h8l9guOANwJXJgGEjbLQdlBVfa/ZPBY4BrijeZzf\nxAxHgu36f6e+mMk9iy8D9wC/Oe5wwtHMQpOApF2SDjAJ2Guq6rrmqfMlfUHSJZKOX+QYws6kqm6p\nqmO24wy5qp7RrPr5kar6tao6PPaYwtHLwu4J/NCHTP4Q2EeBVwPX88D9gNcBe6rqBQsfRAghhBkW\ndk9gmqq6U9KHgH9WVSvtfklvAz64+vWStmsZH0IIC6Wq1tVuX1g7SNIJbatH0kOZ/A2Y/c2a7Jbn\nMFnZMENVjf510UXF+edv/XEvuOCCDb3vzDOLj31sfC8331w89rFbf35u12kj5/f4xxf7949/jdZy\nnY7U9TvvvOLSS8f3MX1uTtdpK782wiIrgT3AZc2fA9gFXF5VV0t6R/OXFgu4GXjJAsewKSTYoNeF\nUDUZ09jESz9Obly8ODlpcXHjwCKXiB4Efq5j/79b1GduNW7B6xK48dKPkxsXL05OWlzcOJDfGJ7D\nrl1w3wLWliwtLW3offfdNxnT2Ax52ej5bZQj7WXe+S0qZjbCRr1s9fVzctKem8v3kgPRMIdFzWA2\n+k3mMnsZ8nKkk8CR9jLv/JxmvRv1stXXz8lJe24u30sOJAnMwSl4wSdw46UfJzcuXpyctLi4cSBJ\nYA67dnkFb5VHCRsv/Ti5cfHi5KTFxY0D0TAHyaeXCZOxOMxe4qUfJzcuXpyctLi4cSBJYA5uZaxL\nCRsv/Ti5cfHi5KTFxY0DSQJzcAtel8CNl36c3Lh4cXLS4uLGgSSBOTgtbQOfZW3x0o+TGxcvTk5a\nXNw4EA1zcJvBuMxe4qUfJzcuXpyctLi4cSBJYA5uwesSuPHSj5MbFy9OTlpc3DiQJDAHt6VtLsva\n4qUfJzcuXpyctLi4cSAa5uC2tM1lWVu89OPkxsWLk5MWFzcOJAnMwa2MdSlh46UfJzcuXpyctLi4\ncSBJYA5uwesSuPHSj5MbFy9OTlpc3DiQJDAHt6VtLsva3Lw49Xed3Lh4cXLS4uLGgWiYg9sMxmX2\n4ubFqb/r5MbFi5OTFhc3DiQJzMEteJMEunHxAl5uXLw4OWlxceNAksAc3Ja2uZSw8dKPkxsXL05O\nWlzcOBANc3Bb2uZSwsZLP05uXLw4OWlxceNAksAc3MpYlxI2XvpxcuPixclJi4sbB5IE5uAWvC6B\nGy/9OLlx8eLkpMXFjQNJAnNwW9rmtETU6Zvaqb/rFDMuXpyctLi4cSAa5uA2g3GZvbRjcHHj1N91\nihkXL05OWlzcOJAkMAe34HVJAi0ubpy8OMWMixcnJy0ubhxIEpiDW/A6Ba6Tm3jpxsWLk5MWFzcO\nJAnMwa2X6XJPALzcxEs3Ll6cnLS4uHEgGubgNoNxmr04uYmXbly8ODlpcXHjQJLAHNyC1ylwndzE\nSzcuXpyctLi4cWBhSUDSQyR9RtIBSddLen2z/9GS9km6SdJVko5f1Bg2i1sZ61TCOrlxWu4XL7M4\nOWlxcePAwjRU1Q+AM6rqNODxwBmSngy8GthXVY8Drm4eW+I2g3GavTi5cVruFy+zODlpcXHjwEJz\nYVV9r9k8FjgGuAM4G7is2X8Z8OxFjmEzuAVvkkA38dKNixcnJy0ubhxYaBKQtEvSAeAwcE1VXQec\nWFWHm5ccBk5c5Bg2g1vwOgWuk5t46cbFi5OTFhc3Duxe5MGr6j7gNEmPBD4q6YxVz5cks/B4ALde\nZu4JdOPU342XWZyctLi4cWChSaClqu6U9CHgCcBhSSdV1SFJe4Dbu96zvLx8//bS0hJLS0tHYqg/\nhNsMxmn24uTGqb8bL7M4OWlxcbNZVlZWWFlZ2dQxFpYEJJ0A/F1VfUfSQ4GnA3uBK4HzgDc2/17R\n9f7pJDAWbsGbJNBNvHTj4sXJyTQObjbL6gny3r17132MRVYCe4DLJO1icu/h8qq6WtJ+4L2SXgDc\nApyzwDFsivy1zH6c3MRLNy5enJzAA2PZDklgK1hYEqiqg8DPdez/NvC0RX3uVuL2PyI5lbBObuKl\nGxcvTk7Ax4sLBvMEX9zKWJfyHrzcxEs3Ll6cnICPFxeSBOaQ4O3HyU28dOPixckJ+HhxIUlgDm5L\n27JEtBuX3jfESxdOTsDHiwtRMYfMYPpxcuPU442XWZycgI8XF5IE5uAWvEkC3cRLNy5enJyAjxcX\nkgTm4Li0zaWMdXITL924eHFyAj5eXIiKOWRpWz9ObuKlGxcvTk7Ax4sLSQJzSBnbj5ObeOnGxYuT\nE/Dx4kKSwBwSvP04uYmXbly8ODkBHy8uJAnMwW1pW5aIduPU442XWZycgI8XF6JiDpnB9OPkxqnH\nGy+zODkBHy8uJAnMwS14kwS6iZduXLw4OQEfLy4kCcwhwduPk5t46cbFi5MT8PHiQpLAHJx6mW5/\n/tbNjUuPN15mcXICPl5ciIo5OM1g3GYvTm6cerzxMouTE/Dx4kKSwBycgjdJoB8nN/Eyi5MT8PHi\nQpLAHJzKWKfloeDlxqm8j5dZnJyAjxcXomIOTjMYt9mLkxun8j5eZnFyAj5eXEgSmINT8CYJ9OPk\nJl5mcXICPl5cSBKYg1PwugVu3HQTL7M4OQEfLy4kCczBqZeZewL9OPV442UWJyfg48WFqJiD0wzG\nbfbi5Mapxxsvszg5AR8vLiQJzMEpeJME+nFyEy+zODkBHy8uJAnMwamMTTuoH6fyPl5mcXICPl5c\niIo5OM1g3GYvTm6cyvt4mcXJCfh4cSFJYA5OwZsk0I+Tm3iZxckJ+HhxIUlgDk7B6xa4cdNNvMzi\n5AR8vLiQJDAHp15m7gn049TjjZdZnJyAjxcXomIOTjMYt9mLkxunHm+8zOLkBHy8uLCwJCDpFEnX\nSLpO0pckvazZvyzpNkn7m6+zFjWGzeIUvEkC/Ti5iZdZnJyAjxcXdi/w2PcAr6iqA5IeBnxe0j6g\ngAur6sIFfvaW4FTGph3Uj1N5Hy+zODkBHy8uLCwJVNUh4FCzfbekG4CTm6ePijzsNINxm73ETTfx\nMouTE/Dx4sIRyYeSTgVOB65tdp0v6QuSLpF0/JEYw0ZwCl63wHVy49TjjZdZnJyAjxcXFtkOAqBp\nBf0p8PKmIrgY+IPm6dcBbwVesPp9y8vL928vLS2xtLS06KHO4BS8SQL9OLmJl1mcnICPl61gZWWF\nlZWVTR1joUlA0oOA9wHvrKorAKrq9qnn3wZ8sOu900lgLJx6mbkn0I9TjzdeZnFyAj5etoLVE+S9\ne/eu+xiLXB0k4BLg+qq6aGr/nqmXPQc4uKgxbBanGYzb7MXJjVN5Hy+zODkBHy8uLLISeBLwPOCL\nkvY3+14LnCvpNCarhG4GXrLAMWwKp+BNEujHyU28zOLkBHy8uLDI1UGfpLvS+PCiPnOrcQpet8CN\nm27cvDi0PZycgFe8OGAQIr449TJzT6Aflx92EC9dODkBHy8uRMUcnGYwbrMXJzdOPd54mcXJCfh4\ncSFJYA5OwZsk0I+Tm3iZxckJ+HhxIUlgDk5lbNpB/TiV9/Eyi5MT8PHiQlTMwWkG4zZ7cXLjVN7H\nyyxOTsDHiwtJAnNwCt4kgX6c3MTLLE5OwMeLC0kCc3AKXrfAjZtu4mUWJyfg48WFJIE5OPUyc0+g\nH6ceb7zM4uQEfLy4EBVzcJotuM1enGZ3Tj3eeJnFyQn4eHEhSWAObaA4BHCSQD9ObuJlFicn4OPF\nhSSBASSPUjbtoH6cyvt4mcXJCfh4cSEqBnCZxbjNXly8gJebeJnFyQn4eHEhSWAAlwB2C1wXL+DV\n442XWZycgI8XF5IEBnAJ4CSBfpzcxMssTk7Ax4sLSQIDuPQzc0+gH6ceb7zM4uQEfLy4EBUDuMxi\n3GYvLl7Aq7yPl1mcnICPFxeSBAZwCeAkgX6c3MTLLE5OwMeLC0kCA7iUsmkH9eNU3sfLLE5OwMeL\nC1ExgMssxm324uIFvNzEyyxOTsDHiwtJAgO4BLBb4Lp4Aa8eb7zM4uQEfLy4kCQwgEsAJwn04+Qm\nXmZxcgI+XlxIEhjApZ+ZewL9OPV442UWJyfg48WFqBjAZRbjNntx8QJe5X28zOLkBHy8uJAkMIBL\nACcJ9OPkJl5mcXICPl5cSBIYwOmviDoFrosX8PqmjpdZnJyAjxcXkgQG2LXLYxbj1sd08QJebuJl\nFicn4OPFhagYwKWUdZu9uHgBryopXmZxcgI+XlxIEhjAJYCTBPpxchMvszg5AR8vLqwpCUg6SdKz\nJP2KpB9d43tOkXSNpOskfUnSy5r9j5a0T9JNkq6SdPxmTmDRuCxvyxLRfpzK+3iZxckJ+HhxYVCF\npHOAzwC/DpwDfFbSr6/h2PcAr6iqnwF+HnippJ8GXg3sq6rHAVc3j21xmcW4zV5cvICXm3iZxckJ\n+HhxYfcaXvN7wD+vqtsBJD2GyQ/vP5n3pqo6BBxqtu+WdANwMnA28JTmZZcBKxgnApcAdgtcFy/g\n1eONl1mcnICPFxfWUhQJ+MbU4281+9aMpFOB05lUFCdW1eHmqcPAies51pHGZXmbW+C6eAGvBBkv\nszg5AR8vLqylEvgI8FFJ72Lyw/+5wIfX+gGSHga8D3h5Vd2lKftVVZI65wjLy8v3by8tLbG0tLTW\nj9xSXJa3ufUxXbyAl5t4mcXJCfh42QpWVlZYWVnZ1DHWkgQOA+8ETmse/7eqev9aDi7pQUwSwOVV\ndUV7PEknVdUhSXuA27veO50ExsSllHWbvbh4Aa8qKV5mcXICPl62gtUT5L179677GGvJhw8DXgU8\nEbgZ+PRaDqzJlP8S4PqqumjqqSuB85rt84ArVr/XCZcAThLox8lNvMzi5AR8vLgwmASqarlZ4fNS\n4CTg45KuXsOxnwQ8DzhD0v7m6yzgDcDTJd0EnNk8tsVleVuWiPbjVN7HyyxOTsDHiwtraQe13M5k\ntc+3gMcMvbiqPkl/knnaOj53VFxmMW6zFycv4OPGxQv4xIyTE/Dx4sJafk/gtyStMFkWegLwwqp6\n/KIH5oJLALsFrpMXJ1y8gE/v28kJ+HhxYS2VwCnAb1fVgUUPxhGXAE4S6CZe+nFx4+QEfLy4MJgE\nquo1R2Igrrj0M3NPoBu3/q6LF/Bx4+QEfLy4EBUDuMxi3GYvLl7cSnsXL+DjxskJ+HhxIUlgAJcA\nThLoJl76cXHj5AR8vLiQJDCAy6+8u81eXLy4fUO7eAEfN05OwMeLC0kCA7j8yrtbHzNeunHxAj5u\nnJyAjxcXomIAl1LWbfbi4sWxQnLwAj5unJyAjxcXkgQGcAngJIFu4qUfFzdOTsDHiwtJAgO4LG/L\nEtFu3Ep7Fy/g4ybtIG+iYgCXWYzb7CVeunHxAj5u2jHEiydJAgO4fFO7Ba6LF7f+rosX8HMTL54k\nCQzgsrzNLXBdvDgmRwcv4OUmXnxJEhjApZ/p1seMl25cvICXm3jxJSoGcCnv3WYvLl4cKyQHL+Dl\nJl58SRIYwCV4kwS6iZd+nNzEiy9JAgO4LPnLEtFu3Ep7Fy/g5SZefImKAVxmMG6zl3jpxsULeLmJ\nF1+SBAZwCV63wHXx4tbfdfECXm7ixZckgQFclra5Ba6LF8fk6OAFvNzEiy9JAgO4LG1z62PGSzcu\nXsDLTbz4EhUDuJSxbrMXFy+OFZKDF/ByEy++JAkM4BK8SQLdxEs/Tm7ixZckgQFclrZliWg3bqW9\nixfwchMvvkTFAC4zGLfZS7x04+IFvNzEiy9JAgO4BK9b4Lp4cevvungBLzfx4kuSwAAuS9vcAtfF\ni2NydPACXm7ixZckgQFclra59THjpRsXL+DlJl58WagKSZdKOizp4NS+ZUm3SdrffJ21yDFsFpcy\n1m32Ei/duHgBLzfx4sui8+HbgdU/5Au4sKpOb74+suAxbAqX4HULXBcvjm0yBy/g5SZefFloEqiq\nTwB3dDx11FwCl16mW+C6eHFMjg5ewMtNvPgyVmfsfElfkHSJpONHGsOacOlluvUx46UbFy/g5SZe\nfNk9wmdeDPxBs/064K3AC1a/aHl5+f7tpaUllpaWjsDQZnEpY91mLy5eHCskBy/g5SZeFsPKygor\nKyubOsYRTwJVdXu7LeltwAe7XjedBMbEpYx1C1wXL47J0cELeLmJl8WweoK8d+/edR/jiBdFkvZM\nPXwOcLDvtQ64lLFuJWy8dOPiBbzcxIsvC60EJL0beApwgqRbgQuAJUmnMVkldDPwkkWOYbO4lLFu\ns5d46cbFC3i5iRdfFpoEqurcjt2XLvIztxqX4HULXBcvjm0yBy/g5SZefElRNIBLL9MtcF28OCZH\nBy/g5SZefEkSGMCll+nWx4yXbly8gJebePElKgZwKWPdZi8uXhwrJAcv4OUmXnxJEhjAJXiTBLqJ\nl36c3MSLL0kCA7j8j0j5n8W6cSvtXbyAl5t48SUqBnCZwbjNXuKlGxcv4OUmXnxJEhjAJXjdAtfF\ni1t/18ULeLmJF1+SBAZwWdrmFrguXhyTo4MX8HITL74kCQzgsrTNrY8ZL924eAEvN/HiS1QM4FLG\nus1e4qUbFy/g5SZefEkSGMAleN0C18WLY5vMwQt4uYkXX5IEBnBZ2pYlot24lfbtDxeHH3hOblzi\nBby8OBAVA7jMYFIJdOPoBeJmNS7xAl5eHEgSGMAleN0C18WLY2kfN7O4OAEvLw4kCQzgsrTNLXBd\nvLglR4ibLlycgJcXB5IEBnBZ2ubWx4yXfuJmFhcn4OXFgagYwKWMdZu9xEs/cTOLixPw8uJAksAA\nLsHrFrguXtzaZBA3Xbg4AS8vDiQJDODSy3QLXBcvbskR4qYLFyfg5cWBJIEBXHqZbn3MeOknbmZx\ncQJeXhyIigFcyli32YuLF7cKCeKmCxcn4OXFgSSBAVzKWLfAdfHilhwhbrpwcQJeXhxIEhjApYx1\nK2HjpZ+4mcXFCXh5cSAqBnApY91mL/HST9zM4uIEvLw4kCQwgEvwugWuixe3Nhl4uGk/38WNg5MW\nx5gZkySBAVx6mW6B6+LFLTmChxuXH7gtDk5aHGNmTJIEBnDpZbr1MeOlHwc3bl4cnLS4uRmbqBjA\npYx1m73ESz8Obty8ODhpcXMzNgtNApIulXRY0sGpfY+WtE/STZKuknT8IsewWVzK2LSDunHzAh5u\n3Lw4OGlxczM2i64E3g6ctWrfq4F9VfU44OrmsS0uZaxbCRsv/Ti4cfPi4KTFzc3YLFRFVX0CuGPV\n7rOBy5rty4BnL3IMm8WljHUrYeOlHwc3bl4cnLS4uRmbMfLhiVV1uNk+DJw4whjWjEvwugWuixfH\n0t7BjZsXByctbm7GZtSiqKoKMAmNblx6mW6B6+LFLTmChxs3Lw5OWtzcjM3uET7zsKSTquqQpD3A\n7V0vWl5evn97aWmJpaWlIzO6Vbj0Mt36mPHSj4MbNy8OTlrc3GyGlZUVVlZWNnWMMZLAlcB5wBub\nf6/oetF0EhgTlzLWbfYSL/04uHHz4uCkxc3NZlg9Qd67d++6j7HoJaLvBj4N/GNJt0p6PvAG4OmS\nbgLObB7b4lLGph3UjZsX8HDj5sXBSYubm7FZaCVQVef2PPW0RX7uVrJrF9x779ij8CthXcp7Ny/g\n4cbNi4OTFjc3YxMVA7iUsW4lbLz04+DGzYuDkxY3N2OTJDCAS/C6Ba6LF8fS3sGNmxcHJy1ubsYm\nSWAAl16mW+C6eHFLjuDhxs2Lg5MWNzdjkyQwgEsv062PGS/9OLhx8+LgpMXNzdhExQAuZazb7CVe\n+nFw4+bFwUmLm5uxSRIYwCV43QLXxYtbmww83Lh5cXDS4uZmbJIEBnDpZboFrosXt+QIHm7cvDg4\naXFzMzZJAgO49DLd+pjx0o+DGzcvDk5a3NyMTVQM4FLGus1e4qUfBzduXhyctLi5GZskgQFcyti0\ng7px8wIebty8ODhpcXMzNkkCA7iUsW4lbLz04+DGzYuDkxY3N2MTFQO4lLFuJWy89OPgxs2Lg5MW\nNzdjkyQwgEvwugWuixfH0t7BjZsXByctbm7GJklgAJdeplvgunhxS47g4cbNi4OTFjc3Y5MkMIBL\nL9Otjxkv/Ti4cfPi4KTFzc3YRMUALmWs2+wlXvpxcOPmxcFJi5ubsUkSGMCljE07qBs3L+Dhxs2L\ng5MWNzdjkyQwgEsZ61bCxks/Dm7cvDg4aXFzMzZRMYBLGetWwsZLPw5u3Lw4OGlxczM2SQIDuASv\nW+C6eHEs7R3cuHlxcNLi5mZskgQGcOllugWuixe35Agebty8ODhpcXMzNkkCA7j0Mt36mPHSj4Mb\nNy8OTlrc3IxNVAzgUsa6zV7ipR8HN25eHJy0uLkZmySBAVzK2LSDunHzAh5u3Lw4OGlxczM2SQID\nuJSxbiVsvPTj4MbNi4OTFjc3YxMVA7iUsW4lbLz04+DGzYuDkxY3N2OTJDCAS/C6BW689OPgxs2L\ng5MWNzdjkyQwgEsv062PGS/9OLhx8+LgpMXNzdjsHuuDJd0C/C1wL3BPVT1xrLHMw6WX6dbHjJd+\nHNy4eXFw0uLmZmzGVFHAUlWd7poAYDFl7MrKyrrf41bCzvOykfPbKGN4GTo/h9bHZrws4vo5OIHJ\nubl9L43N2PnQ/lIsoozdyDeZWwk7z8uRTAJjeFlLEhi79bEZL4tKAmM7gcm5uX0vjc3YlcDHJH1O\n0otGHMdcXGYwbrOXeOnHwY2bFwcnLW5uxma0ewLAk6rq65IeA+yT9JdV9YkRx9PJ7t3wqU/Bs561\ndce88Ub4/OfX955bb4Vjjtm6MWyWXbvg3nu7vWzk/DbKDTfAi198ZD5rrezeDcvLcPHF443h29/2\nipfdu+Ed74Brrx13HDfeCN/5jpebsVEZpGdJFwB3V9Vbm8fjDyqEEI5Cqmpddc4olYCk44Bjquou\nSX8P+EVgb/v8ek8ihBDCxhirHXQi8H5NGnO7gT+uqqtGGksIIexYLNpBIYQQxmHsJaIzSDpL0l9K\n+r+SXjX2eLYaSbdI+qKk/ZI+O/Z4NoukSyUdlnRwat+jJe2TdJOkqyQdP+YYN0rPuS1Luq25fvsl\nnTXmGDeDpFMkXSPpOklfkvSyZv92uX5957ctrqGkh0j6jKQDkq6X9Ppm/7qun1UlIOkY4EbgacDX\ngP8DnFtVN4w6sC1E0s3AE6rq22OPZSuQ9AvA3cA7qupnm31vAr5ZVW9qEvmjqurVY45zI/Sc2wXA\nXVV14aiD2wIknQScVFUHJD0M+DzwbOD5bI/r13d+57B9ruFxVfU9SbuBTwK/C5zNOq6fWyXwRODL\nVXVLVd0hw3f0AAAC+ElEQVQDvAf41ZHHtAi2zY3vZlnvHat2nw1c1mxfxuQb76ij59xgm1y/qjpU\nVQea7buBG4CT2T7Xr+/8YPtcw+81m8cCxzCJ13VdP7ckcDJw69Tj23jgom0XjopfktskJ1bV4Wb7\nMJOFANuJ8yV9QdIlR2urZDWSTgVOBz7DNrx+U+fX/qbCtriGknZJOsDkOl1TVdexzuvnlgR8elOL\n40lVdTrwDOClTcth21KTfuN2uq4XAz8OnAZ8HXjruMPZPE2r5H3Ay6vqrunntsP1a87vT5mc391s\no2tYVfdV1WnAPwD+laQzVj0/eP3cksDXgFOmHp/CpBrYNlTV15t/vwG8n0kLbLtxuOnHImkPcPvI\n49kyqur2agDexlF+/SQ9iEkCuLyqrmh2b5vrN3V+72zPb7tdQ4CquhP4EPAE1nn93JLA54CflHSq\npGOB5wJXjjymLUPScZIe3my3vyR3cP67jkquBM5rts8Drpjz2qOK5puq5TkcxddPk1/UuQS4vqou\nmnpqW1y/vvPbLtdQ0gltK0vSQ4GnA/tZ5/WzWh0EIOkZwEVMbnJcUlWvH3lIW4akH2cy+4cHfknu\nqD4/Se8GngKcwKT/+PvAB4D3Ao8FbgHOqarvjDXGjdJxbhcAS0zaCAXcDLxkqv96VCHpycDHgS/y\nQMvgNcBn2R7Xr+v8Xgucyza4hpJ+lsmN313N1+VV9WZJj2Yd188uCYQQQjhyuLWDQgghHEGSBEII\nYQeTJBBCCDuYJIEQQtjBJAmEEMIOJkkghBB2MEkCIawRSY+U9JtjjyOErSRJIIS18yjgt8YeRAhb\nSZJACGvnDcBPNP8RyRvHHkwIW0F+YziENSLpx4A/a/+DmRC2A6kEQlg72+I/IglhmiSBEELYwSQJ\nhLB27gIePvYgQthKkgRCWCNV9S3gU5IO5sZw2C7kxnAIIexgUgmEEMIOJkkghBB2MEkCIYSwg0kS\nCCGEHUySQAgh7GCSBEIIYQeTJBBCCDuYJIEQQtjB/H/EMRPrVkcDHAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72261a8790>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "from numpy import arange\n", + "from scipy.signal import square\n", + "#Output voltage\n", + "t=arange(0,9*pi,0.1)\n", + "vin =[]\n", + "for tt in t:\n", + " vin.append(15*square(tt)-5) # Input wave in volts\n", + "vo =[]\n", + "for v in vin:\n", + " vo.append(v+25) # in volts\n", + "plot(t,vo)\n", + "title(\"Output voltage\")\n", + "xlabel(\"t\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.32: Page No 168" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nKhdsAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72261cfb90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title\n", + "#Output voltage\n", + "\n", + "t1=range(0,20)\n", + "vin1=range(0,20)\n", + "t2=range(20,60)\n", + "vin2 =[]\n", + "for t in t2:\n", + " vin2.append(40-t)\n", + "\n", + "t3=range(60,80)\n", + "vin3 =[]\n", + "for t in t3:\n", + " vin3.append(-80+t)\n", + "t=t1+t2+t3#\n", + "vin=vin1+vin2+vin3# Input wave in volts\n", + "vo=[]\n", + "for x in vin:\n", + " vo.append(x+25) # in volts\n", + "\n", + "plot(t,vo)#\n", + "title(\"Output voltage\")\n", + "xlabel(\"t\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.33: Page No 169" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f72314c4a50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#vo\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title\n", + "from numpy import arange, sin, pi\n", + "t=arange(0,12,0.001)\n", + "vin =[]\n", + "for tt in t:\n", + " vin.append(10*sin(2*pi*tt/4)) # Input voltage in volts\n", + "# From Fig. 3.73\n", + "vint=[]\n", + "for v in vin:\n", + " vint.append(v+5)\n", + "vo =[]\n", + "for i in range(0,len(vint)):\n", + " if vint[i]>0 :\n", + " # Diode is OFF\n", + " vo.append(vint[i]) # in volts\n", + " else:\n", + " break#\n", + " \n", + "\n", + "for i in range(i,len(vint)):\n", + " if vint[i]==-5:\n", + " break#\n", + " else:\n", + " # Diode is ON\n", + " vo.append(0)#\n", + " \n", + "\n", + "for i in range(i,len(vint)):\n", + " # Capacitor is charged to 5 V\n", + " vo.append(vint[i]+5)# # in volts\n", + "\n", + "plot(t,vo)\n", + "title(\"Output voltage\")\n", + "xlabel(\"t\")\n", + "ylabel(\"vo\")\n", + "show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch4_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch4_1.ipynb new file mode 100644 index 00000000..fb235be8 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch4_1.ipynb @@ -0,0 +1,441 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 4 : Biplolar Junction Transistors(BJTs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.1: Page No 197" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New value of Ic = 1.10 mA\n" + ] + } + ], + "source": [ + "#New value of Ic\n", + "\n", + "VA=100# # Early voltage in volts\n", + "VCE_old=1# # in volts\n", + "Ic_old=1e-3# # in amperes\n", + "VCE_new=11# # in volts\n", + "ro=VA/Ic_old# # Output resistance in ohms\n", + "Ic_new=(VCE_new-VCE_old+Ic_old*ro)/ro# # in amperes\n", + "Ic_new=Ic_new*1e3# # in miliamperes\n", + "print \"New value of Ic = %0.2f mA\"%Ic_new" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.2: Page No 201" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let us assume that the transistor is in active region.\n", + "VC = 5.05 V\n", + "VE = 3.30 V\n", + "VB = 4.00 V\n", + "IC = 0.99 mA\n", + "IE = 1.00 mA\n", + "IB = 0.0099 mA\n", + "Since the base is at 4 V and the collector is at 5.05 V, so the collector junction is reverse biased by 1.05 V. The transistor is indeed in forward active region as assumed.\n" + ] + } + ], + "source": [ + "#Region of operation, All the node voltages and currents\n", + "\n", + "betaf=100# # Current gain\n", + "print \"Let us assume that the transistor is in active region.\"\n", + "VBE_active=0.7# # in volts\n", + "# From the equivalent circuit in Fig. 4.18(b)\n", + "VCC=10# # in volts\n", + "VBB=4# # in volts\n", + "RE=3.3e3# # in ohms\n", + "RC=5e3# # in ohms\n", + "VE=VBB-VBE_active# # in volts\n", + "# Writing KVL for base emitter loop and putting Ic= βF*Ib\n", + "IB=VE/((1+betaf)*RE)# # in amperes\n", + "IB=IB*1e3# # in miliamperes\n", + "IC=betaf*IB# # in miliamperes\n", + "IE=IB+IC# # in miliamperes\n", + "VC=VCC-IC*RC*1e-3# # in volts\n", + "print \"VC = %0.2f V\"%VC\n", + "print \"VE = %0.2f V\"%VE\n", + "print \"VB = %0.2f V\"%VBB\n", + "print \"IC = %0.2f mA\"%IC\n", + "print \"IE = %0.2f mA\"%IE\n", + "print \"IB = %0.4f mA\"%IB\n", + "print \"Since the base is at 4 V and the collector is at 5.05 V, so the collector junction is reverse biased by 1.05 V. The transistor is indeed in forward active region as assumed.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.3: Page No 203" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let us assume that the transistor is in active region.\n", + "VC = 7.15 V\n", + "VE = 2.88 V\n", + "VB = 5.00 V\n", + "IC = 1.42 mA\n", + "IE = 1.44 mA\n", + "IB = 0.01 mA\n", + "Since base voltage VB is 3.6 V and collector is at 7.2 V, so collector-base junction is reverse biased by 3.6 V. Thus our assumption that the transistor is in active region is valid.\n" + ] + } + ], + "source": [ + "#Region of operation, Node currents and voltages\n", + "\n", + "betaf=100# # Current gain\n", + "print \"Let us assume that the transistor is in active region.\"\n", + "VBE_active=0.7# # in volts\n", + "# From Fig. 4.19\n", + "VCC=10# # in volts\n", + "VBB=5# # in volts\n", + "RB=100e3# # in ohms\n", + "RE=2e3# # in ohms\n", + "RC=2e3# # in ohms\n", + "# Writing KVL to the base circuit and putting Ic= βF*Ib\n", + "IB=(VBB-VBE_active)/(RB+(1+betaf)*RE)# # in amperes\n", + "IB=IB*1e3# # in miliamperes\n", + "IC=betaf*IB# # in miliamperes\n", + "IE=IB+IC# # in miliamperes\n", + "VB=VBB-IB*RB*1e-3# # in volts\n", + "VE=IE*RE*1e-3# # in volts\n", + "VC=VCC-IC*RC*1e-3# # in volts\n", + "print \"VC = %0.2f V\"%VC\n", + "print \"VE = %0.2f V\"%VE\n", + "print \"VB = %0.2f V\"%VBB\n", + "print \"IC = %0.2f mA\"%IC\n", + "print \"IE = %0.2f mA\"%IE\n", + "print \"IB = %0.2f mA\"%IB\n", + "print \"Since base voltage VB is 3.6 V and collector is at 7.2 V, so collector-base junction is reverse biased by 3.6 V. Thus our assumption that the transistor is in active region is valid.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.4: Page No 203" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let us assume that the transistor is in saturation region.\n", + "Minimum IB required to saturate the transistor = 0.049 mA\n", + "IB in the circuit = 0.084 mA\n", + "Since IB in the circuit is calculated as 0.084 mA, so it is greater than IB,min. Thus the transistor is indeed in saturation mode.\n" + ] + } + ], + "source": [ + "#Region of operation\n", + "\n", + "betaf=100# # Current gain\n", + "print \"Let us assume that the transistor is in saturation region.\"\n", + "VBE_sat=0.8# # in volts\n", + "VCE_sat=0.2# # in volts\n", + "# From Fig. 4.21\n", + "VCC=10# # in volts\n", + "VBB=5# # in volts\n", + "RB=50e3# # in ohms\n", + "RC=2e3# # in ohms\n", + "# From the base loop\n", + "IB=(VBB-VBE_sat)/RB# # in amperes\n", + "IB=IB*1e3# # in miliamperes\n", + "IC_sat=(VCC-VCE_sat)/RC# # in amperes\n", + "IC_sat=IC_sat*1e3# # in miliamperes\n", + "IB_min=IC_sat/betaf# # in miliamperes\n", + "print \"Minimum IB required to saturate the transistor = %0.3f mA\"%IB_min\n", + "print \"IB in the circuit = %0.3f mA\"%IB\n", + "print \"Since IB in the circuit is calculated as 0.084 mA, so it is greater than IB,min. Thus the transistor is indeed in saturation mode.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.5: Page No 205" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Value of RB so as to drive the transistor into saturation = 2.14 kΩ\n" + ] + } + ], + "source": [ + "#Value of RB so as to drive the transistor into saturation\n", + "\n", + "bta=50# # Current gain\n", + "VBE_sat=0.8# # in volts\n", + "VCE_sat=0.2# # in volts\n", + "# From Fig. 4.22\n", + "VCC=10# # in volts\n", + "VBB=5# # in volts\n", + "RC=1e3# # in ohms\n", + "IC_sat=(VCC-VCE_sat)/RC# # in amperes\n", + "IB_min=IC_sat/bta# # Minimum base current in amperes to saturate the transistor\n", + "# Then base current can be taken as\n", + "IB=10*IB_min# # in amperes\n", + "RB=(VBB-VBE_sat)/IB# # in ohms\n", + "RB=RB*1e-3# # in kilo-ohms\n", + "print \"Value of RB so as to drive the transistor into saturation = %0.2f kΩ\"%RB" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.6: Page No 205" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let us assume that the transistor is in active region.\n", + "Vo1 = -1.36 V\n", + "Vo2 = 4.06 V\n", + "Voltage at base = 3.36 V\n", + "As base voltage, VB is 3.36 V and voltage at collector is -1.4 V, collector base junction is reverse biased. Thus the transistor is indeed in active region as assumed.\n" + ] + } + ], + "source": [ + "#Vo1, Vo2\n", + "\n", + "betaf=100# # Current gain\n", + "print \"Let us assume that the transistor is in active region.\"\n", + "VBE_active=-0.7# # in volts\n", + "# From Fig. 4.23\n", + "VCC=-10# # in volts\n", + "VEE=10# # in volts\n", + "VBB=2.5# # in volts\n", + "RE=6.8e3# # in ohms\n", + "RB=100e3# # in ohms\n", + "RC=10e3# # in ohms\n", + "# Writing KVL for base-emitter circuit and putting Ic= βF*Ib\n", + "IB=(VEE-VBB+VBE_active)/(RB+(1+betaf)*RE)# # in amperes\n", + "\n", + "IC=betaf*IB# # in amperes\n", + "IE=IB+IC# # in amperes\n", + "Vo1=VCC+IC*RC# # in volts\n", + "Vo2=VEE-IE*RE# # in volts\n", + "VB=VBB+IB*RB# # in volts\n", + "print \"Vo1 = %0.2f V\"%Vo1\n", + "print \"Vo2 = %0.2f V\"%Vo2\n", + "print \"Voltage at base = %0.2f V\"%VB\n", + "print \"As base voltage, VB is 3.36 V and voltage at collector is -1.4 V, collector base junction is reverse biased. Thus the transistor is indeed in active region as assumed.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.7: Page No 206" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let us assume that the transistor is in active region.\n", + "When current gain = 50\n", + "Value of RC to obtain VC = +5 V = 1.08 kΩ When current gain = 100\n", + "Collector voltage = 10.00 V\n", + "Since collector voltage is greater than the base voltage, the transistor goes into saturation as collector junction gets forward biased.\n" + ] + } + ], + "source": [ + "#Value of RC to obtain VC = +5 V\n", + "\n", + "betaf=50# # Current gain\n", + "print \"Let us assume that the transistor is in active region.\"\n", + "print \"When current gain = 50\"\n", + "VBE_active=-0.7# # in volts\n", + "# From Fig. 4.24\n", + "VC=5# # in volts\n", + "VEE=10# # in volts\n", + "RB=100e3# # in ohms\n", + "# Writing KVL for base circuit and putting Ic= βF*Ib\n", + "IB=(VEE+VBE_active)/RB# # in amperes\n", + "IC=IB*betaf# # in amperes\n", + "RC=VC/IC# # in ohms\n", + "RC=RC*1e-3# # in kilo-ohms\n", + "print \"Value of RC to obtain VC = +5 V = %0.2f kΩ\"%RC,\n", + "print \"When current gain = 100\"\n", + "IC=IB*100# # in amperes\n", + "VC=IC*RC*1e3# # in volts\n", + "print \"Collector voltage = %0.2f V\"%VC\n", + "print \"Since collector voltage is greater than the base voltage, the transistor goes into saturation as collector junction gets forward biased.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.8: Page No 207" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let us assume that the transistor is in active region.\n", + "IC = 0.85 mA\n", + "IE = 0.86 mA\n", + "IB = 0.01 mA\n", + "I1 = 0.04 mA\n", + "I2 = 0.04 mA\n", + "VC = -1.49 V\n", + "VE = 4.16 V\n", + "VB = 2.50 V\n" + ] + } + ], + "source": [ + "#:Labelled voltages and currents\n", + "\n", + "betaf=100# # Current gain\n", + "print \"Let us assume that the transistor is in active region.\"\n", + "VBE_active=-0.7# # in volts\n", + "# From Fig. 4.25(a)\n", + "VCC=-10# # in volts\n", + "VEE=10# # in volts\n", + "RE=6.8e3# # in ohms\n", + "RC=10e3# # in ohms\n", + "R1=300e3# # in ohms\n", + "R2=180e3# # in ohms\n", + "# Applying Thevnin's theorem at point B\n", + "R_th=R1*R2/(R1+R2)# # in ohms\n", + "V_th=VEE-(R2*(VEE-VCC)/(R1+R2))# # in volts\n", + "# From the Thevnin equivalent circuit in Fig. 4.25(b)\n", + "# Writing KVL for base-emitter circuit and putting Ic= βF*Ib\n", + "IB=(VEE-V_th+VBE_active)/(R_th+(1+betaf)*RE)# # in amperes\n", + "IB=IB*1e3# # in miliamperes\n", + "IC=betaf*IB# # in miliamperes\n", + "IE=IB+IC# # in miliamperes\n", + "VC=VCC+IC*RC*1e-3# # in volts\n", + "VE=VEE-IE*RE*1e-3# # in volts\n", + "VB=V_th+IB*R_th*1e-3# # in volts\n", + "I1=(VEE-VB)/R2# # in amperes\n", + "I1=I1*1e3# # in miliamperes\n", + "I2=I1+IB# # in miliamperes\n", + "print \"IC = %0.2f mA\"%IC\n", + "print \"IE = %0.2f mA\"%IE\n", + "print \"IB = %0.2f mA\"%IB\n", + "print \"I1 = %0.2f mA\"%I1\n", + "print \"I2 = %0.2f mA\"%I2\n", + "print \"VC = %0.2f V\"%VC\n", + "print \"VE = %0.2f V\"%VE\n", + "print \"VB = %0.2f V\"%VBB\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch5_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch5_1.ipynb new file mode 100644 index 00000000..33fa7d0e --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch5_1.ipynb @@ -0,0 +1,859 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 : BJT biasing (Q point) and stability" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.1: Page No 221" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RB = 282.50 kΩ \n", + "RC = 1.875 kΩ \n" + ] + } + ], + "source": [ + "#RB, RC\n", + "\n", + "IB=40e-6# # in amperes\n", + "VCE=6# # in volts\n", + "VCC=12# # in volts\n", + "betaf=80#\n", + "VBE=0.7# # in volts\n", + "RB=(VCC-VBE)/IB# # in ohms\n", + "RC=(VCC-VCE)/(betaf*IB)# # in ohms\n", + "RB=RB*1e-3# # in kilo-ohms\n", + "RC=RC*1e-3# # in kilo-ohms\n", + "print \"RB = %0.2f kΩ \"%RB\n", + "print \"RC = %0.3f kΩ \"%RC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.2: Page No 227" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VCEQ = 4.50 V \n", + "ICQ = 1.98 mA \n" + ] + } + ], + "source": [ + "#VCEQ, ICQ\n", + "\n", + "VBE=0.7# # in volts\n", + "betaf=50#\n", + "# From Fig. 5.11(a)\n", + "VCC=18# # in volts\n", + "R1=82e3# # in ohms\n", + "R2=22e3# # in ohms\n", + "RC=5.6e3# # in ohms\n", + "RE=1.2e3# # in ohms\n", + "# Using Thevnin's theorem to obtain equivalent circuit given in Fig. 5.11(b)\n", + "VBB=R2*VCC/(R1+R2)# # in volts\n", + "RB=R1*R2/(R1+R2)# # in ohms\n", + "IB=(VBB-VBE)/(RB+(1+betaf)*RE)# # in amperes\n", + "IC=betaf*IB# # in amperes\n", + "VCE=VCC-IC*(RC+RE)-IB*RE# # in volts\n", + "IC=IC*1e3# # in mili-amperes\n", + "print \"VCEQ = %0.2f V \"%VCE\n", + "print \"ICQ = %0.2f mA \"%IC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.3: Page No 228" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R1 = 80.00 kΩ \n", + "R2 = 40.00 kΩ \n", + "RC = 4.00 kΩ \n", + "RE = 3.30 kΩ \n" + ] + } + ], + "source": [ + "#R1, R2, RC, RE\n", + "\n", + "IC=1e-3# # in amperes\n", + "VCC=12# # in volts\n", + "betaf=100#\n", + "VBE=0.7# # in volts\n", + "# As suggested in the design constraints, allocate 1/3VCC to RC, another 1/3VCC to R2 leaving 1/3VCC for VCEQ.\n", + "VB=4# # in volts\n", + "VE=VB-VBE# # in volts\n", + "# Neglecting base current,\n", + "RE=VE/IC# # in ohms\n", + "# Select the current through R1R2 equal to 0.1IC\n", + "R1_plus_R2=VCC/(0.1*IC)# # in ohms\n", + "R2=VB*R1_plus_R2/VCC# # in ohms\n", + "R1=R1_plus_R2-R2# # in ohms\n", + "RC=VCC/(3*IC)# # in ohms\n", + "R1=R1*1e-3# # in kilo-ohms\n", + "R2=R2*1e-3# # in kilo-ohms\n", + "RC=RC*1e-3# # in kilo-ohms\n", + "RE=RE*1e-3# # in kilo-ohms\n", + "print \"R1 = %0.2f kΩ \"%R1\n", + "print \"R2 = %0.2f kΩ \"%R2\n", + "print \"RC = %0.2f kΩ \"%RC\n", + "print \"RE = %0.2f kΩ \"%RE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.4: Page No 231" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VCEQ = 4.52 V \n", + "ICQ = 3.735 mA \n" + ] + } + ], + "source": [ + "#VCEQ, ICQ\n", + "\n", + "VBE=0.7# # in volts\n", + "betaf=45#\n", + "# From Fig. 5.14\n", + "VEE=9# # in volts\n", + "RB=100e3# # in ohms\n", + "RC=1.2e3# # in ohms\n", + "# Applying KVL in the clockwise direction base emitter loop\n", + "IB=(VEE-VBE)/RB# # in amperes\n", + "IC=betaf*IB# # in amperes\n", + "# Writing KVL for the collector loop\n", + "VCE=VEE-IC*RC# # in volts\n", + "IC=IC*1e3# # in mili-amperes\n", + "print \"VCEQ = %0.2f V \"%VCE\n", + "print \"ICQ = %0.3f mA \"%IC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.5: Page No 232" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VCEQ = 20.84 V \n", + "ICQ = 4.24 mA \n" + ] + } + ], + "source": [ + "#VCEQ, ICQ\n", + "\n", + "VBE=0.7# # in volts\n", + "betaf=120#\n", + "# From Fig. 5.15\n", + "VCC=20# # in volts\n", + "VEE=20# # in volts\n", + "R1=8.2e3# # in ohms\n", + "R2=2.2e3# # in ohms\n", + "RC=2.7e3# # in ohms\n", + "RE=1.8e3# # in ohms\n", + "# Using Thevnin's theorem to obtain equivalent circuit given in Fig. 5.16(b)\n", + "RB=R1*R2/(R1+R2)# # in ohms\n", + "# From Fig. 5.16(a)\n", + "I=(VCC+VEE)/(R1+R2)# # in amperes\n", + "VBB=I*R2-VEE# # in volts\n", + "# Writing KVL for the base emitter loop and putting Ic= βF*Ib gives\n", + "IB=(VEE+VBB-VBE)/(RB+(1+betaf)*RE)# # in amperes\n", + "IC=betaf*IB# # in amperes\n", + "# KVL for the collector loop gives\n", + "VCE=VCC+VEE-IC*(RC+RE)-IB*RE# # in volts\n", + "IC=IC*1e3# # in mili-amperes\n", + "print \"VCEQ = %0.2f V \"%VCE\n", + "print \"ICQ = %0.2f mA \"%IC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.6: Page No 233" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RF so that IE=+2 mA = 106.53 kΩ \n" + ] + } + ], + "source": [ + "#RF so that IE=+2 mA\n", + "\n", + "IE=2e-3# # in amperes\n", + "VBE=0.7# # in volts\n", + "betaf=49#\n", + "# From Fig. 5.17\n", + "VCC=12# # in volts\n", + "RB=25e3# # in ohms\n", + "RC=2e3# # in ohms\n", + "I1=VBE/RB# # in amperes\n", + "IB=IE/(1+betaf)# # in amperes\n", + "# KVL for the indicated loop gives\n", + "RF=(VCC-RC*(I1+(1+betaf)*IB)-VBE)/(I1+IB)# # in ohms\n", + "RF=RF*1e-3# # in kilo-ohms\n", + "print \"RF so that IE=+2 mA = %0.2f kΩ \"%RF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.7: Page No 234" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RC = 0.587 kΩ \n", + "RE = 0.292 kΩ \n" + ] + } + ], + "source": [ + "#RCQ, RE\n", + "\n", + "VCEQ=3# # in volts\n", + "VBE=0.7# # in volts\n", + "betaf=200#\n", + "# From Fig. 5.18(a)\n", + "VCC=6# # in volts\n", + "VEE=6# # in volts\n", + "R1=90e3# # in ohms\n", + "R2=90e3# # in ohms\n", + "# Using Thevnin's theorem to obtain equivalent circuit given in Fig. 5.18(b)\n", + "RB=R1*R2/(R1+R2)# # in ohms\n", + "VBB=R2*(VCC+VEE)/(R1+R2)# # in volts\n", + "# In the output loop\n", + "x=VEE-VCEQ# # x = (IC+IB)RE in volts\n", + "# Applying KVL in the base emitter loop\n", + "IB=(VEE-VBE-x)/RB# # in amperes\n", + "IC=betaf*IB# # in amperes\n", + "# In the output loop\n", + "RC=VCC/IC# # in ohms\n", + "RE=x/(IC+IB)# # in ohms\n", + "RC=RC*1e-3# # in kilo-ohms\n", + "RE=RE*1e-3# # in kilo-ohms\n", + "print \"RC = %0.3f kΩ \"%RC\n", + "print \"RE = %0.3f kΩ \"%RE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.8: Page No 235" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VCEQ = -10.7 V \n" + ] + } + ], + "source": [ + "#VCEQ\n", + "\n", + "VBE=-0.7# # in volts\n", + "betaf=120#\n", + "# From Fig. 5.19(a)\n", + "VCC=18# # in volts\n", + "R1=47e3# # in ohms\n", + "R2=10e3# # in ohms\n", + "RC=2.4e3# # in ohms\n", + "RE=1.1e3# # in ohms\n", + "# Using Thevnin's theorem to obtain equivalent circuit given in Fig. 5.19(b)\n", + "VBB=R2*VCC/(R1+R2)# # in volts\n", + "RB=R1*R2/(R1+R2)# # in ohms\n", + "# Applying KVL in the base emitter loop and putting Ic= βF*Ib\n", + "IB=(VBB+VBE)/(RB+(1+betaf)*RE)# # in amperes\n", + "IC=betaf*IB# # in amperes\n", + "# In the collector emitter loop\n", + "VCE=-VCC+IC*(RC+RE)+IB*RE# # in volts\n", + "print \"VCEQ = %0.1f V \"%VCE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.9 : Page No 241" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (i)\n", + "RB = 121.19 kΩ \n", + "Part (ii)\n", + "Stability factor = 10.23 \n", + "Part (iii)\n", + "IC at 100°C = 1.77 mA \n" + ] + } + ], + "source": [ + "# (i) RB\n", + "# (ii) Stability factor\n", + "# (iii) IC at 100°C\n", + "\n", + "bta=50#\n", + "VBE=0.7# # in volts\n", + "VCE=5# # in volts\n", + "# From Fig. 5.21\n", + "VCC=24# # in volts\n", + "RC=10e3# # in ohms\n", + "RE=500# # in ohms\n", + "\n", + "print \"Part (i)\"\n", + "# Applying KVL to the collector emitter circuit and putting Ic= βF*Ib\n", + "IB=(VCC-VCE)/((RC+RE)*(bta+1))# # in amperes\n", + "IC=bta*IB# # at 25°C in amperes\n", + "RB=(VCE-VBE)/IB# # in ohms\n", + "RB=RB*1e-3# # in kilo-ohms\n", + "print \"RB = %0.2f kΩ \"%RB\n", + "\n", + "print \"Part (ii)\"\n", + "S=(1+bta)/(1+bta*(RC+RE)/(RC+RE+RB*1e3))# # Stability factor\n", + "print \"Stability factor = %0.2f \"%S\n", + "\n", + "print \"Part (iii)\"\n", + "# From Table 5.1\n", + "del_ICO=(20-0.1)*1e-9# # in amperes\n", + "del_IC=S*del_ICO# # in amperes\n", + "IC=IC+del_IC# # at 100°C in amperes\n", + "IC=IC*1e3# # at 100°C in mili-amperes\n", + "print \"IC at 100°C = %0.2f mA \"%IC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.10: Page No 242" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (i)\n", + "S(ICO) for RB/RE=10, 10.0\n", + "Change in IC = 0.199 μA \n", + "Part (ii)\n", + "S(VBE) for (RB = 240 kΩ, RE = 1 kΩ) = -2.933e-04 \n", + "Change in IC = 50 μA \n" + ] + } + ], + "source": [ + "# (i) S(ICO) for RB/RE=10 and change in IC\n", + "# (ii) S(VBE) for RB = 240 kΩ, RE = 1 kΩ and change in IC\n", + "\n", + "bta=100#\n", + "\n", + "print \"Part (i)\"\n", + "RB_RE=10# # RB/RE\n", + "S_ICO=(1+bta)*(1+RB_RE)/(1+bta+RB_RE)#\n", + "# From Table 5.1\n", + "del_ICO=(20-0.1)*1e-9# # in amperes\n", + "del_IC=S_ICO*del_ICO# # in amperes\n", + "del_IC=del_IC*1e6# # in micro-amperes\n", + "print \"S(ICO) for RB/RE=10, \",round(S_ICO,2)\n", + "print \"Change in IC = %0.3f μA \"%del_IC\n", + "\n", + "print \"Part (ii)\"\n", + "RB=240e3# # in kilo-ohms\n", + "RE=1e3# # in kilo-ohms\n", + "S_VBE=-bta/(RB+(1+bta)*RE)#\n", + "# From Table 5.1\n", + "del_VBE=0.48-0.65# # in volts\n", + "del_IC=S_VBE*del_VBE# # in amperes\n", + "del_IC=del_IC*1e6# # in micro-amperes\n", + "print \"S(VBE) for (RB = 240 kΩ, RE = 1 kΩ) = %0.3e \"%S_VBE\n", + "print \"Change in IC = %0.f μA \"%del_IC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.11: Page No 243" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "S(β) = 4.84e-06 \n", + "IC at 100°C = 2.145 mA \n" + ] + } + ], + "source": [ + "#S(β), IC at 100°C\n", + "\n", + "IC=2e-3# # at 25°C in amperes\n", + "# From Table 5.1\n", + "bta1=50# # at 25°C\n", + "bta2=80# # at 100°C\n", + "RB_RE=10# # RB/RE\n", + "S=IC*(1+RB_RE)/(bta1*(1+bta2+RB_RE))#\n", + "del_bta=bta2-bta1#\n", + "del_IC=S*del_bta# # in amperes\n", + "IC=IC+del_IC# # at 100°C in amperes\n", + "IC=IC*1e3# # at 100°C in mili-amperes\n", + "print \"S(β) = %0.2e \"%S\n", + "print \"IC at 100°C = %0.3f mA \"%IC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.12: Page No 244" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IC at -65°C = 1.803 mA \n", + "IC at 175°C = 2.15 mA \n" + ] + } + ], + "source": [ + "#Variation of IC over the temperature range -65°C to 175°C\n", + "\n", + "RB_RE=2# # RB/RE\n", + "RE=4.7e3# # in ohms\n", + "IC=2e-3# # at 25°C in amperes\n", + "# From Table 5.1\n", + "bta=50# # at 25°C\n", + "S_ICO=(1+bta)*(1+RB_RE)/(1+bta+RB_RE)#\n", + "S_VBE=-bta/(RE*(1+bta+RB_RE))#\n", + "# From Table 5.1\n", + "bta1=20# # at -65°C\n", + "bta2=120# # at 175°C\n", + "S_bta1=IC*(1+RB_RE)/(bta*(1+bta1+RB_RE))# # For 25°C to -65°C\n", + "S_bta2=IC*(1+RB_RE)/(bta*(1+bta2+RB_RE))# # For 25°C to 175°C\n", + "# From Table 5.1\n", + "\n", + "# For 25°C to -65°C\n", + "del_ICO=(0.2e-3-0.1)*1e-9# # in amperes\n", + "del_VBE=0.85-0.65# # in volts\n", + "del_bta=bta1-bta#\n", + "del_IC=S_ICO*del_ICO+S_VBE*del_VBE+S_bta1*del_bta# # in amperes\n", + "IC1=IC+del_IC# # at -65°C in amperes\n", + "IC1=IC1*1e3# # at -65°C in mili-amperes\n", + "print \"IC at -65°C = %0.3f mA \"%IC1\n", + "\n", + "# For 25°C to 175°C\n", + "del_ICO=(3.3e3-0.1)*1e-9# # in amperes\n", + "del_VBE=0.30-0.65# # in volts\n", + "del_bta=bta2-bta#\n", + "del_IC=S_ICO*del_ICO+S_VBE*del_VBE+S_bta2*del_bta# # in amperes\n", + "IC2=IC+del_IC# # at 175°C in amperes\n", + "IC2=IC2*1e3# # at 175°C in mili-amperes\n", + "print \"IC at 175°C = %0.2f mA \"%IC2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.13: Page No 247" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (i)\n", + "R1 = 9.15 kΩ \n", + "Part (ii)\n", + "R1 for (IC = 10 μA) = 915 kΩ \n" + ] + } + ], + "source": [ + "# (i) R1\n", + "# (ii) R1 for IC = 10 μA\n", + "\n", + "IC=1e-3# # in amperes\n", + "VCC=10# # in volts\n", + "bta=125#\n", + "VBE=0.7# # in volts\n", + "\n", + "print \"Part (i)\"\n", + "R1=bta*(VCC-VBE)/((bta+2)*IC)# # in ohms\n", + "R1=R1*1e-3# # in kilo-ohms\n", + "print \"R1 = %0.2f kΩ \"%R1\n", + "\n", + "print \"Part (ii)\"\n", + "IC=10e-6# # in amperes\n", + "R1=bta*(VCC-VBE)/((bta+2)*IC)# # in ohms\n", + "R1=R1*1e-3# # in kilo-ohms\n", + "print \"R1 for (IC = 10 μA) = %0.f kΩ \"%R1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.14: Page No 248" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R1 = 9.30 kΩ \n", + "RE = 11.51 kΩ \n" + ] + } + ], + "source": [ + "from math import log\n", + "#R1, RE\n", + "\n", + "Io=10e-6# # in amperes\n", + "VCC=10# # in volts\n", + "bta=125#\n", + "VBE=0.7# # in volts\n", + "VT=25e-3# # in volts\n", + "# Let\n", + "I_ref=1e-3# # in amperes\n", + "R1=(VCC-VBE)/I_ref# # in ohms\n", + "R1=R1*1e-3# # in kilo-ohms\n", + "RE=VT*log(I_ref/Io)/((1+1/bta)*Io)# # in ohms\n", + "RE=RE*1e-3# # in kilo-ohms\n", + "print \"R1 = %0.2f kΩ \"%R1\n", + "print \"RE = %0.2f kΩ \"%RE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.15: Page No 250" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IC1 = 0.270 mA \n", + "IC2 = 0.270 mA \n", + "IC3 = 0.0280 mA \n" + ] + } + ], + "source": [ + "from numpy import arange\n", + "#IC1, IC2, IC3\n", + "\n", + "bta=125#\n", + "VBE=0.7# # in volts\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "# From Fig. 5.27\n", + "VC=9# # in volts\n", + "RC=30# # in kilo-ohms\n", + "RE=1.94# # in kilo-ohms\n", + "I_ref=(VC-VBE)/RC# # in mili-amperes\n", + "IC=I_ref*bta/(3+bta)# # in mili-amperes\n", + "\n", + "for i in arange(0.01,0.5,0.001):\n", + " if abs(VT*log(IC/i)/(i*(1+1/bta))-RE)<=0.1:\n", + " break#\n", + " \n", + "\n", + "print \"IC1 = %0.3f mA \"%IC\n", + "print \"IC2 = %0.3f mA \"%IC\n", + "print \"IC3 = %0.4f mA \"%i" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.16: Page No 254" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Io = 0.46 mA \n" + ] + } + ], + "source": [ + "#Io\n", + "\n", + "bta=100#\n", + "VBE=0.7# # in volts\n", + "# From Fig. 5.30\n", + "# Writing KVL for the indicated loop\n", + "I_ref=(10-VBE)/10# # in mili-amperes\n", + "Io=bta*I_ref/(2*(1+bta))# # in mili-amperes\n", + "print \"Io = %0.2f mA \"%Io" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.17: Page No 254" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (i)\n", + "IC1 = 0.50 mA \n", + "IC2 = 0.50 mA \n", + "Part (ii)\n", + "RC so that (Vo = 6 V) = 12.04 kΩ \n" + ] + } + ], + "source": [ + "# (i) IC1 and IC2\n", + "# (ii) RC so that Vo = 6 V\n", + "\n", + "bta=200#\n", + "# From Fig. 5.31\n", + "\n", + "print \"Part (i)\"\n", + "I_ref=(12-0.7)/15# # in amperes\n", + "I1=0.7/2.8# # in amperes\n", + "IC=(I_ref-I1)*bta/(bta+2)# # in mili-amperes\n", + "print \"IC1 = %0.2f mA \"%IC\n", + "print \"IC2 = %0.2f mA \"%IC\n", + "\n", + "print \"Part (ii)\"\n", + "Vo=6# # in volts\n", + "RC=(12-Vo)/IC# # in kilo-ohms\n", + "print \"RC so that (Vo = 6 V) = %0.2f kΩ \"%RC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.18: Page No 255" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Emitter current in transistor Q3 = 0.98 mA \n" + ] + } + ], + "source": [ + "#Emitter current in transistor Q3\n", + "\n", + "bta=100#\n", + "VBE=0.75# # in volts\n", + "# From Fig. 5.32\n", + "I=(10-VBE)/4.7# # in mili-amperes\n", + "IE=I/2# # in mili-amperes\n", + "print \"Emitter current in transistor Q3 = %0.2f mA \"%IE" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch6_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch6_1.ipynb new file mode 100644 index 00000000..50ac03c1 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch6_1.ipynb @@ -0,0 +1,502 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6 : BJT amplifiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.2: Page No 275" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rπ = 3.29 kΩ \n", + "gm = 31.62 mA/V \n" + ] + } + ], + "source": [ + "#rπ, gm\n", + "\n", + "IBQ=7.6e-6 # in amperes\n", + "bta=104#\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "ICQ=IBQ*bta # in amperes\n", + "gm=ICQ/VT # in ampere per volt\n", + "gm=gm*1e3 # in mili-ampere per volt\n", + "r_pi=bta/gm # in kilo-ohms\n", + "print \"rπ = %0.2f kΩ \"%r_pi\n", + "print \"gm = %0.2f mA/V \"%gm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.3: Page No 287" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AI = -90.91 \n", + "Ri = 0.91 kΩ \n", + "AV = -500.00 \n", + "AVs = -238.10 \n", + "Ro = 100.00 kΩ \n", + "Ro'' = 4.76 kΩ \n" + ] + } + ], + "source": [ + "#AI, Ri, AV, AVs, Ro, Ro'\n", + "\n", + "hie=1e3 # in ohms\n", + "hfe=100#\n", + "hre=2e-4#\n", + "hoe=20e-6 # in amperes per volt\n", + "RC=5e3 # in ohms\n", + "Rs=1e3 # in ohms\n", + "# From Table 6.3\n", + "AI=-hfe/(1+hoe*RC)#\n", + "Ri=hie+hre*AI*RC # in ohms\n", + "AV=AI*RC/Ri#\n", + "AVs=AV*Ri/(Ri+Rs)#\n", + "Yo=hoe-hfe*hre/(hie+Rs) # in ohms inverse\n", + "Ro=1/Yo # in ohms\n", + "Ro_dash=Ro*RC/(Ro+RC) # in ohms\n", + "Ri=Ri*1e-3 # in kilo-ohms\n", + "Ro=Ro*1e-3 # in kilo-ohms\n", + "Ro_dash=Ro_dash*1e-3 # in kilo-ohms\n", + "print \"AI = %0.2f \"%AI\n", + "print \"Ri = %0.2f kΩ \"%Ri\n", + "print \"AV = %0.2f \"%AV\n", + "print \"AVs = %0.2f \"%AVs\n", + "print \"Ro = %0.2f kΩ \"%Ro\n", + "print \"Ro'' = %0.2f kΩ \"%Ro_dash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.4: Page No 288" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AI'' = -37.34 \n", + "AVs = -51.78 \n", + "Ri,eff = 1.61 kΩ \n", + "Ro = 57.97 kΩ \n", + "Ro'' = 4.60 kΩ \n" + ] + } + ], + "source": [ + "#AI', AVs, Ri,eff, Ro, Ro'\n", + "\n", + "hie=2e3 # in ohms\n", + "hfe=50#\n", + "hre=2e-4#\n", + "hoe=20e-6 # in amperes per volt\n", + "# From Fig. 6.22(a)\n", + "Rs=2e3 # in ohms\n", + "R1=90e3 # in ohms\n", + "R2=10e3 # in ohms\n", + "RC=5e3 # in ohms\n", + "# From the Table 6.3\n", + "RB=R1*R2/(R1+R2) # in ohms\n", + "AI=-hfe/(1+hoe*RC)#\n", + "Ri=hie+hre*AI*RC # in ohms\n", + "Ri_eff=RB*Ri/(RB+Ri) # in ohms\n", + "AI_dash=AI*RB/(RB+Ri)#\n", + "AVs=AI*RC*Ri_eff/(Ri*(Rs+Ri_eff))#\n", + "Rs_eff=Rs*RB/(Rs+RB) # in ohms\n", + "Yo=hoe-hfe*hre/(hie+Rs_eff) # in ohms inverse\n", + "Ro=1/Yo # in ohms\n", + "Ro_dash=Ro*RC/(Ro+RC) # in ohms\n", + "Ri_eff=Ri_eff*1e-3 # in kilo-ohms\n", + "Ro=Ro*1e-3 # in kilo-ohms\n", + "Ro_dash=Ro_dash*1e-3 # in kilo-ohms\n", + "print \"AI'' = %0.2f \"%AI_dash\n", + "print \"AVs = %0.2f \"%AVs\n", + "print \"Ri,eff = %0.2f kΩ \"%Ri_eff\n", + "print \"Ro = %0.2f kΩ \"%Ro\n", + "print \"Ro'' = %0.2f kΩ \"%Ro_dash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.5: Page No 295" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AI = -8.41 \n", + "AVs = -3.09 \n", + "Ri = 205.00 kΩ \n", + "Ro'' = 5.00 kΩ \n" + ] + } + ], + "source": [ + "#AI, AVs, Ri, Ro'\n", + "\n", + "hie=4e3 # in ohms\n", + "hfe=200#\n", + "# From Fig. 6.27(a)\n", + "Rs=5e3 # in ohms\n", + "R1=90e3 # in ohms\n", + "R2=10e3 # in ohms\n", + "RC=5e3 # in ohms\n", + "RE=1e3 # in ohms\n", + "# From Fig 6.27(b)\n", + "RB=R1*R2/(R1+R2) # in ohms\n", + "Ri=hie+(1+hfe)*RE # in ohms\n", + "Ri_eff=RB*Ri/(RB+Ri) # in ohms\n", + "AI=-hfe*RB/(RB+Ri)#\n", + "AVs=-hfe*RC*Ri_eff/(Ri*(Rs+Ri_eff))#\n", + "Ro_dash=RC # in ohms\n", + "Ri=Ri*1e-3 # in kilo-ohms\n", + "Ro_dash=Ro_dash*1e-3 # in kilo-ohms\n", + "print \"AI = %0.2f \"%AI\n", + "print \"AVs = %0.2f \"%AVs\n", + "print \"Ri = %0.2f kΩ \"%Ri\n", + "print \"Ro'' = %0.2f kΩ \"%Ro_dash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.6: Page No 305" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AI = -100.00 \n", + "Ri = 101.09 kΩ \n", + "AVs = -2.97 \n" + ] + } + ], + "source": [ + "#AI, Ri, AVs\n", + "\n", + "bta=100#\n", + "VBE=0.7 # Cut-in voltage in volts\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "# From Fig. 6.33\n", + "RB=100e3 # in ohms\n", + "RC=3e3 # in ohms\n", + "VBB=3 # in volts\n", + "\n", + "# DC analysis\n", + "# From dc equivalent circuit in Fig. 6.34(a)\n", + "IBQ=(VBB-VBE)/RB # in amperes\n", + "ICQ=bta*IBQ # in amperes\n", + "gm=ICQ/VT # in ampere per volt\n", + "r_pi=bta/gm # in ohms\n", + "\n", + "# AC analysis\n", + "# From ac equivalent circuit using approximate hybrid-π model in Fig. 6.34(b)\n", + "AI=-bta#\n", + "Ri=RB+r_pi # in ohms\n", + "AVs=-bta*RC/(RB+r_pi)#\n", + "Ri=Ri*1e-3 # in kilo-ohms\n", + "print \"AI = %0.2f \"%AI\n", + "print \"Ri = %0.2f kΩ \"% Ri\n", + "print \"AVs = %0.2f \"%AVs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.7: Page No 309" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (a)\n", + "RE = 3.96 kΩ \n", + "Part (b)\n", + "Ro = 52.08 Ω \n", + "Ro'' = 51.41 Ω \n" + ] + } + ], + "source": [ + "# (a) Load resistance RE to make Ri ≥ 500 kΩ\n", + "# (b) AV, Ro, Ro'\n", + "\n", + "IC=2e-3 # in amperes\n", + "Rs=5e3 # Source resistance in ohms\n", + "bta=125#\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "\n", + "print \"Part (a)\"\n", + "Ri=500e3 # in ohms\n", + "gm=IC/VT # in mho\n", + "r_pi=bta/gm # in ohms\n", + "RE=(Ri-r_pi)/(1+bta) # in ohms\n", + "REk=RE*1e-3 # in kilo-ohms\n", + "print \"RE = %0.2f kΩ \"%REk\n", + "\n", + "print \"Part (b)\"\n", + "AV=(1+bta)*RE/(Rs+Ri)#\n", + "Ro=(Rs+r_pi)/(1+bta) # in ohms\n", + "Ro_dash=Ro*RE/(Ro+RE) # in ohms\n", + "print \"Ro = %0.2f Ω \"%Ro\n", + "print \"Ro'' = %0.2f Ω \"%Ro_dash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.8: Page No 313" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ri = 28.2 kΩ \n", + "AVs = -20.7 \n" + ] + } + ], + "source": [ + "#Ri, AVs\n", + "\n", + "IC=0.2e-3 # in amperes\n", + "bta=125#\n", + "Rs=2e3 # in ohms\n", + "RE=100 # in ohms\n", + "RC=5e3 # in ohms\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "gm=IC/VT # in mho\n", + "r_pi=bta/gm # in ohms\n", + "Ri=r_pi+(1+bta)*RE # in ohms\n", + "AVs=-bta*RC/(Rs+r_pi+(1+bta)*RE)#\n", + "Ri=Ri*1e-3 # in kilo-ohms\n", + "print \"Ri = %0.1f kΩ \"%Ri\n", + "print \"AVs = %0.1f \"%AVs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.9: Page No 314" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rπ = 1.81 kΩ \n", + "AI = -200.00 \n", + "AVs = -218.41 \n", + "Ro = inf \n", + "Ro'' = 1.98 kΩ \n" + ] + } + ], + "source": [ + "from numpy import inf\n", + "#rπ, AI, Ri, AVs, Ro, Ro'\n", + "\n", + "bta=200#\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "# From Fig. 6.39\n", + "VBE=0.7 # Cut-in voltage in volts\n", + "VCC=9 # in volts\n", + "RB=200e3 # in ohms\n", + "RC=2e3 # in ohms\n", + "\n", + "# DC analysis\n", + "# From dc equivalent circuit in Fig. 6.40(a)\n", + "# Writing KVL from collector to base loop\n", + "IB=(VCC-VBE)/(RB+(1+bta)*RC) # in amperes\n", + "ICQ=bta*IB# # in amperes\n", + "gm=ICQ/VT # in mho\n", + "r_pi=bta/gm # in ohms\n", + "\n", + "# AC analysis\n", + "# From ac equivalent circuit using Miller's theorem in Fig. 6.40(b)\n", + "# Assuming AV >> 1\n", + "RL=RB*RC/(RB+RC) # Effective load resistance in ohms\n", + "# Using hybrid-π model and approximate resulta given in Table 6.5 for CE amplifier stage, we have\n", + "AI=-bta#\n", + "AV=-bta*RL/r_pi#\n", + "Ro=inf#\n", + "r_pi=r_pi*1e-3 # in kilo-ohms\n", + "RL=RL*1e-3 # in kilo-ohms\n", + "print \"rπ = %0.2f kΩ \"%r_pi\n", + "print \"AI = %0.2f \"%AI\n", + "print \"AVs = %0.2f \"%AV\n", + "print \"Ro = %0.2f \"%Ro\n", + "print \"Ro'' = %0.2f kΩ \"%RL" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.10: Page No 323" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ri,eff = 8.46 kΩ \n", + "Ro = inf \n", + "AI = -12.08 \n", + "AVs = -3.24 \n" + ] + } + ], + "source": [ + "#Ri,eff, Ro, AV, AI\n", + "\n", + "bta=200#\n", + "ro=50e3 # in ohms\n", + "VBE=0.7 # Cut-in voltage in volts\n", + "VT=25e-3 # Voltage equivalent to temperatue at room temperature in volts\n", + "# From Fig. 6.44\n", + "VCC=16 # in volts\n", + "R1=90e3 # in ohms\n", + "R2=10e3 # in ohms\n", + "RC=2.2e3 # in ohms\n", + "RE=0.68e3 # in ohms\n", + "\n", + "# DC analysis\n", + "# From the Thevnin's equivalent circuit in Fig. 6.45(a)\n", + "RB=R1*R2/(R1+R2) # in ohms\n", + "VBB=VCC*R2/(R1+R2) # in volts\n", + "# From the base loop\n", + "IB=(VBB-VBE)/(RB+(1+bta)*RE) # in amperes\n", + "IE=(1+bta)*IB # in amperes\n", + "re=VT/IE # in ohms\n", + "\n", + "# AC analysis\n", + "Ri=bta*re+(1+bta)*RE # in ohms\n", + "Ri_eff=RB*Ri/(RB+Ri) # in ohms\n", + "AI=-bta*RB/(RB+bta*(re+RE))#\n", + "AV=-RC/RE#\n", + "Ri_eff=Ri_eff*1e-3 # in kilo-ohms\n", + "print \"Ri,eff = %0.2f kΩ \"%Ri_eff\n", + "print \"Ro = %0.2f \"%inf\n", + "print \"AI = %0.2f \"%AI\n", + "print \"AVs = %0.2f \"%AV" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch7_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch7_1.ipynb new file mode 100644 index 00000000..8aaf7463 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch7_1.ipynb @@ -0,0 +1,504 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 7 : Field effect transistors - characteristics and biasing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.1: Page No 346" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f9925b9ecd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "\n", + "#Transfer curve\n", + "\n", + "IDSS=12# # in mili-amperes\n", + "VP=-5# # in volts\n", + "# Plotting transfer curve\n", + "VGS=arange(0, VP,-0.01) # Gate source voltage in volts\n", + "# Using Shockley's equation\n", + "ID=[]\n", + "for vgs in VGS:\n", + " ID.append(IDSS*(1-vgs/VP)**2) # Drain current in mili-amperes\n", + "\n", + "plot(VGS,ID)\n", + "title(\"Transfer Curve\")\n", + "xlabel(\"VGS (V)\")\n", + "ylabel(\"ID (mA)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.2: Page No 352" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VGS - VT = 1.00 V\n", + "Part (a)\n", + "VDS = 0.50 V \n", + "Since VDS < VGS - VT, therefore transistor is in ohmic region.\n", + "Part (b)\n", + "VDS = 1 V \n", + "Since VDS = VGS - VT, therefore transistor is in saturation region.\n", + "Part (c)\n", + "VDS 5 V \n", + "Since VDS > VGS - VT, therefore transistor is in saturation region.\n" + ] + } + ], + "source": [ + "# (a) Region of operation\n", + "# (b) Region of operation \n", + "# (c) Region of operation\n", + "\n", + "VT=2# # in volts\n", + "VGS=3# # in volts\n", + "print \"VGS - VT = %0.2f V\"%(VGS-VT)\n", + "\n", + "print \"Part (a)\"\n", + "print \"VDS = %0.2f V \"%(0.5)\n", + "print \"Since VDS < VGS - VT, therefore transistor is in ohmic region.\"\n", + "\n", + "print \"Part (b)\"\n", + "print \"VDS = %0.f V \"%1\n", + "print \"Since VDS = VGS - VT, therefore transistor is in saturation region.\"\n", + "\n", + "print \"Part (c)\"\n", + "print \"VDS %0.f V \"%5\n", + "print \"Since VDS > VGS - VT, therefore transistor is in saturation region.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.3: Page No 359" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IDQ = 4.7 mA \n", + "VDSQ = 6.38 V \n" + ] + } + ], + "source": [ + "#IDQ, VDSQ\n", + "\n", + "IDSS=12# # in mili-amperes\n", + "VP=-4# # in volts\n", + "# From Fig. 7.28\n", + "VDD=12# # in volts\n", + "RD=1.2# # in kilo-ohms\n", + "# Since IG=0\n", + "VGS=-1.5# # in volts\n", + "# Using Shockley's equation\n", + "ID=IDSS*(1-VGS/VP)**2# # Drain current in mili-amperes\n", + "VDS=VDD-ID*RD# # in volts\n", + "print \"IDQ = %0.1f mA \"%ID\n", + "print \"VDSQ = %0.2f V \"%VDS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.4: Page No 361" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\ncRzt6jqQasIAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f9903e14e10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VDSQ = 5.41 V \n", + "IDQ = 1.73 mA \n", + "VD = 8.19 V \n", + "VS = 2.77 V \n" + ] + } + ], + "source": [ + "from sympy import symbols, solve\n", + "from numpy import arange\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "\n", + "#VDSQ, IDSQ, VD, VS\n", + "\n", + "IDSS=6e-3# # in amperes\n", + "VP=-6# # in volts\n", + "# From Fig. 7.31\n", + "VDD=12# # in volts\n", + "RD=2.2e3# # in ohms\n", + "RS=1.6e3# # in ohms\n", + "# Plotting transfer characteristics\n", + "VGS=arange(0, VP, -0.01) # Gate source voltage in volts\n", + "# Using Shockley's equation\n", + "ID = []\n", + "for vgs in VGS:\n", + " ID.append(IDSS*(1-vgs/VP)**2*1e3) # Drain current in mA\n", + "\n", + "plot(VGS,ID)#\n", + "title(\"Transfer Characteristics\")\n", + "xlabel(\"VGS (V)\")\n", + "ylabel(\"ID (mA)\")\n", + "# Plotting bias line\n", + "# From gate source circuit\n", + "ID=[]\n", + "for vgs in VGS:\n", + " ID.append(-vgs/RS*1e3) # Source current in mA\n", + "plot(VGS,ID,\"RED\")\n", + "show()\n", + "\n", + "# Intersection of transfer characteristics with the bias curve\n", + "# Putting VGS = -ID*RS in Shockley's equation and solving, we get ID**2*RS**2 + (2*RS*VP - VP**2/IDSS)*ID + VP**2\n", + "# Solving the equation\n", + "ID = symbols('ID')\n", + "expr = ID**2*RS**2 + (2*RS*VP - VP**2/IDSS)*ID + VP**2\n", + "IDQ = solve(expr, ID)[0] # A\n", + "# Writing the KVL for the output loop\n", + "VDSQ=VDD-IDQ*(RD+RS)# # in volts\n", + "VS=IDQ*RS# # in volts\n", + "VD=VDSQ+VS# # in volts\n", + "IDQ=IDQ*1e3# # in mili-amperes\n", + "print \"VDSQ = %0.2f V \"%VDSQ\n", + "print \"IDQ = %0.2f mA \"%IDQ\n", + "print \"VD = %0.2f V \"%VD\n", + "print \"VS = %0.2f V \"%VS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.5: Page No 363" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VDSQ = 6.83 V \n", + "IDQ = 2.79 mA \n" + ] + }, + { + "data": { + "image/png": "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\nQB0AAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f9902f504d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "from sympy import symbols, solve\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "\n", + "#Operating point\n", + "\n", + "VP=-5# # in volts\n", + "IDSS=12e-3# # in amperes\n", + "# From Fig. 7.34(a)\n", + "VDD=18# # in volts\n", + "R1=400# # in kilo-ohms\n", + "R2=90# # in kilo-ohms\n", + "RD=2e3# # in ohms\n", + "RS=2e3# # in ohms\n", + "# Applying Thevnin's theorem to obtain simplified circuit in Fig. 7.34(b)\n", + "VGG=VDD*R2/(R1+R2)# # in volts\n", + "# Plotting transfer characteristics\n", + "VGS=arange(VGG, VP,-0.01) # Gate source voltage in volts\n", + "# Using Shockley's equation\n", + "ID=[]\n", + "for vgs in VGS:\n", + " ID.append(IDSS*(1-vgs/VP)**2*1e3) # Drain current in mA\n", + "plot(VGS,ID)\n", + "title(\"Transfer Characteristics\")\n", + "xlabel(\"VGS (V)\")\n", + "ylabel(\"ID (mA)\")\n", + "# Plotting bias line\n", + "# From the KVL for the gate-loop\n", + "ID=[]\n", + "for vgs in VGS:\n", + " ID.append((-vgs+VGG)/RS*1e3)# # Source current in mA\n", + "plot(VGS,ID,\"RED\")\n", + "# Intersection of transfer curve with the bias curve\n", + "# Putting VGS = VGG-ID*RS in Shockley's equation and solving, we get\n", + "# ID**2*RS**2 + (2*RS*VP - 2*VGG*RS - VP**2/IDSS)*ID + (VGG-VP)**2\n", + "# Solving the equation\n", + "ID = symbols('ID')\n", + "expr = ID**2*RS**2 + (2*RS*VP - 2*VGG*RS - VP**2/IDSS)*ID + (VGG-VP)**2\n", + "IDQ=solve(expr)[0] # in amperes\n", + "# Writing the KVL for the drain source loop\n", + "VDSQ=VDD-IDQ*(RD+RS)# # in volts\n", + "IDQ=IDQ*1e3# # in mili-amperes\n", + "print \"VDSQ = %0.2f V \"%VDSQ\n", + "print \"IDQ = %0.2f mA \"%IDQ" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.6: Page No 365" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VDSQ = 6.41 V \n", + "IDQ = 2.79 mA \n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEZCAYAAACervI0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu8lWPex/HPTzUpIgwdVBokMQ7hcRxmMw4ZpzHG0ITk\nFBKjZ8w4zEwHMyMRoafxSCVJNB1ITSqj7WkmpIhyakKN6ERJRYe99+/547o3q23v3d5rr7Xudfi+\nX6/1ah3v9btf1fVd93Vd93WbuyMiIoVnh7gLEBGReCgAREQKlAJARKRAKQBERAqUAkBEpEApAERE\nCpQCQAQws2Zm9n9m9qWZ3RN3PSKZoACQ2JnZBjNbH93KzOyrhMedM1TGNcAqd9/F3W9JxQbNbBcz\nG2RmS6N9WWxm95vZHqnYvkhdKQAkdu6+s7s3cfcmwFLg7PLH7j6m/H1mVj+NZewDvJvMByury8y+\nB/wD6ACcEe3bccBnwNGp+A6RulIASNYysyIzW2ZmvzWz5cAwM2tqZpPNbJWZrTGz58xs74TPFJtZ\nPzP7Z9SdM638F7eZ7WhmT5jZZ2a21szmmNleZvYYcBnw2+iX+ikW3Br9av/MzJ42s92i7bSNjlSu\nMLOlwAuVlH8Z0Bo4393fA3D31e7+Z3efGm2nzMz2Taj9MTO7s4p9H25m75jZWQnvr29mq83s8Ojx\nsWY2O9q3+Wb24xT+dUgeUgBItmsG7Aa0AboT/s0Oix63Ab4GBlf4TGfgcmAv4HvAb6LnuwK7AK2A\n3aPtfe3ulwOjgbujo44XgRuBc4GTgBbAWuB/KnzPScCBwBmV1H0qMNXdv6rFvnp0K5e479cAY6J9\nK3cGodtqfhSCk4F+7r5btM/jzez7tfh+KTAKAMl2ZUBvd9/q7pvcfY27T4zubwD+AiT+0nVghLsv\ndvdNwFjg8Oi1LcAeQDsP3nD39QmftYT73YHfu/un7r4V6Av8wswS/8/0cfev3X1zJXXvDixPYn8T\na9hm34EngXPNbMfo9V8RQgHgEuDv7v48gLu/AMwFfppEDVIgFACS7Va7+5byB2bW2Mz+18yWmNk6\n4CVgVzNLbDhXJNz/Gtg5uj8KmAY8ZWafmNnd1fSttwUmRt0pa4F3gBLCr/JyH1dT9+dAyxrsX3W2\n2Xd3/4AwTnGumTUGziGEAoQxjAvL641qPgFoXscaJI8pACTbVVyu9r+BA4Cj3X1Xwq9/Y9tfzpVv\nyL3E3fu5+8HA8cDZhL76yvwH6OTuuyXcGrt74q/66pbSfQE4I2qoq/IVkPh6iwrbrGz75d1A5wHv\nuPuHCfWOqlBvE3cfUM33S4FTAEiu2Znwq36dme0O9K7kPZWGgZmdbGaHmFk9YD2wFSit4jMPA38x\nszbRZ/c0s3NrUecowhHCeDNrb2Y7mNkeZna7mZ0ZvWc+0MXM6plZJ8KYwvY8Rej7v5YwblHuCeAc\nMzs92t6O0UDy3pVuRQQFgGS/ir+CBwGNCNMpZwNTK3lPxV/R5Y+bAX8D1hG6dIoJDXXF9wE8AEwC\nppvZl8DLbDt9s9oLaURdN6cC7wEzou98lTA28Er0tpsI3ThrCf35E6vZj/LtriDs93HA0wnPLyMc\nFdwOrCIcEfw3+j8u1bB0XRDGzFoDjxNmYjjwiLs/GP1qe5rQZ7kE+KW7f5GWIkREpErpDIDmQPNo\nitrOwDzgZ0A34DN3H2BmvwN2c/db01KEiIhUKW2Hh+6+wt3nR/c3EGYv7E2YWz0yettIQiiIiEiG\nZaR/0MzaAh0JfaDN3H1l9NJKtp1WJyIiGZL2AIi6f8YDN1U46QYP/U+6Kr2ISAzSusCUmTUgNP6j\n3P2Z6OmVZtbc3VeYWQvCjIWKn1MoiIgkwd23e05MubQdAURnZg4jnKwyKOGlSYQ1WYj+fKbiZwHc\nPW9vvXv3jr0G7Z/2rxD3L5/3zb32v5vTeQRwAmF9krfM7I3ouduA/sBYM7uSaBpoGmsQEZEqpC0A\n3P2fVH2EcWq6vldERGpGZwnGoKioKO4S0kr7l9vyef/yed+SkbYTwerCzDwb6xIRyVbLl0PLloZn\nwyCwiIhkzlVX1f4zCgARkRw3ZQosXlz7zykARERy2ObNcPPN8MADtf+sAkBEJIc98AC0bw+dOtX+\nsxoEFhHJUcuXwyGHwCuvwP77g1ntBoEVACIiOaprV2jZEu66KzyubQCkdS0gERFJj1degRdegPfe\nS34bGgMQEckxpaXQsyf07w9NmiS/HQWAiEiOefRR2HFHuOSSum1HYwAiIjnk88/hoINg+nQ47LBt\nX9MgsIhIHuveHRo2hAcf/O5rGgQWEclTr70GkybBu++mZnsaAxARyQFlZdCjRxj4bdo0NdtUAIiI\n5IBhw6BBA7j00tRtU2MAIiJZbs0a6NABpk2Dww+v+n0aBBYRyTPXXQf16sHgwdW/T4PAIiJ5ZO5c\nmDgxdQO/iTQGICKSpcrK4IYbwlo/u+2W+u0rAEREstSIEWAWFn1LB40BiIhkofKB36lT4YgjavYZ\nDQKLiOSB664Lv/6HDKn5ZzQILCKS4155BZ59Ft5+O73fozEAEZEsUlIC114L996bnoHfRAoAEZEs\n8uCDsOee0Llz+r9LYwAiIlni44+hY0d4+WVo1672n6/tGICOAEREssSNN4YrfSXT+CdDg8AiIllg\n0qQw6DtmTOa+UwEgIhKzjRvDr/9hw8KlHjNFYwAiIjH77W/h00/hiSfqth2dByAikkMWLIDHHgt/\nZpoGgUVEYlJWFq7xe+ed0KxZ5r9fASAiEpNhw8Adrr46nu/XGICISAxWrYIf/hBmzIDDDkvNNrUY\nnIhIDujSBVq2hHvuSd02NQgsIpLlpk4NZ/suXBhvHQoAEZEM2rAhLPU8dCg0bhxvLeoCEhHJoF//\nGr74Ikz9TDV1AYmIZKlXX4Wnn46/66ecpoGKiGTAli1w1VVw332wxx5xVxMoAEREMmDAAGjTBi6+\nOO5KvqUxABGRNHvvPfjRj+D110MIpIuuByAikkXKyuCaa6B37/Q2/slQAIiIpNHQoaH///rr467k\nu9QFJCKSJp98AocfDjNnhmUf0k1dQCIiWcAdevQIJ31lovFPRloDwMyGm9lKM1uQ8FwfM1tmZm9E\nt07prEFEJA7jxsH778Ptt8ddSdXS2gVkZicCG4DH3f2Q6LnewHp3v6+az6kLSERy1urVcOihMGEC\nHHdc5r43q7qA3H0WsLaSl2pcoIhIrunZM6z2mcnGPxlxjQH0NLM3zWyYmTWNqQYRkZSbMCHM97/z\nzrgr2b441gL6K9Avun8nMBC4suKb+vTp8839oqIiioqKMlCaiEjyPv8cbrgBxo6FRo3S/33FxcUU\nFxcn/fm0TwM1s7bAc+VjADV5TWMAIpKLunSBvfaC+++P5/uzfjVQM2vh7sujh+cDC6p7v4hILnj2\n2bDa51tvxV1JzaU1AMxsDPBj4Ptm9jHQGygys8MBBz4CuqezBhGRdFuzJpzpO2ZM/Bd5qQ2dCSwi\nUkddu8Iuu8BDD8VbR9Z3AYmI5JMpU2DWrNzq+imnABARSdIXX0D37jBqFOy8c9zV1J66gEREktSt\nW5juOWRI3JUE6gISEcmASZPgpZfgzTfjriR5OgIQEaml1avhsMPCBd5PPDHuar5V2yMABYCISC24\nwy9+AfvuC/fcE3c121IXkIhIGo0eHZZ5Hj067krqTkcAIiI1tGwZHHEETJsGHTvGXc13ZdVy0CIi\n+cIdrrgCbrwxOxv/ZCgARERq4K9/hXXr4NZb464kddQFJCKyHf/+d7i4y7/+Be3bx11N1dQFJCKS\nQiUlYa2f3r2zu/FPhgJARKQa99wTzvbt0SPuSlJPXUAiIlWYPx9OPx3mzoU2beKuZvvUBSQikgJf\nfQW/+hXcd19uNP7J0BGAiEglbrgB1q7NrRO+dCawiEgdTZ4cbvPnx11JeikAREQSrFwJV18NY8dC\n06ZxV5NeGgMQEYm4hzX+r7oqu1b5TBcFgIhIZPBg+Pxz+OMf464kMzQILCICLFwIJ58ML78M++8f\ndzXJ0TRQEZFa2rQpTPkcMCB3G/9k6AhARArezTeHpZ7HjgWr8e/n7KNpoCIitTBtGowbF67tm8uN\nfzIUACJSsFauDGv8jxoFu+8edzWZpzEAESlIZWVw2WUhAE45Je5q4qEAEJGCNGBAWO+nd++4K4mP\nuoBEpODMng333x9W+axfwK2gjgBEpKCsWROmfA4dCq1bx11NvDQNVEQKhjtccEFY3nnQoLirST1N\nAxURqcKQIbB0KYwZE3cl2UFHACJSEObPh9NOy+2lHrZHS0GIiFSwYQNcdBE88ED+Nv7JqNERgJnt\nBLQGHFjm7hvTWpSOAEQkRdyha1do0ACGDYu7mvRK2RiAmTUBrgYuBr4PrAQMaGZmnwOjgaHuvqFu\nJYuIpM/w4TBvHsyZE3cl2afKIwAz+wfwFDDJ3VdWeK05cC5wkbv/JOVF6QhARFKgvN9/1iw48MC4\nq0m/2h4BaBBYRPLSF1/AUUfBn/4EF18cdzWZkdYAMLP9gc7Axe5+cBL11fR7FAAikjR3+PnPoVUr\neOihuKvJnJTPAjKzvc2sl5m9BiwE6hHGBUREstLAgfDpp3DvvXFXkt2qGwPoTvi1vxcwDvgbYTzg\nB2kvSkcAIpKkWbPgF78Ig7777BN3NZmVyjOBBwPPAze5+5vlGxcRyVYrV0LnzvDYY4XX+CejugBo\nAVwIPGhm5UcBDTJSlYhILZWWhsa/Wzc488y4q8kNNT0RrDVwEaFLaCdggrvfnrai1AUkIrX0+9+H\nZR6mT4d69eKuJh5pnwZqZgcQZgH1q21xtfgOBYCI1NjkyXDttfD667DXXnFXE5+UrwZqZvWBs4C2\nhBlABqR1KQgRkZpatChc1vHZZwu78U9GTZaDfg74GlgAlKW3HBGRmlu/Hs4/H+68E447Lu5qcs92\nu4DM7C13PzRD9ZR/p7qARKRa7mG65+67wyOPgCYppmc56OlmdkaSxQw3s5VmtiDhud3NbIaZLTKz\n6WbWNJlti0hh698fPvkEBg9W45+smgTAbGCimW0ys/XR7csabn8E0KnCc7cCM9z9AOAf0WMRkRp7\n/vmwxMP48dCwYdzV5K6adAEtIaz8udDdaz0GYGZtgefc/ZDo8XvAj919ZbSqaLG7H1jhM+oCEpFK\nffABHH88jBsHJ54YdzXZJR1dQP8B3k6m8a9Cs4TlpVcCzVK0XRHJcxs3hkHfP/xBjX8q1GQW0EfA\nTDObCmyJnnN3v6+uX+7ubmaV/tTv06fPN/eLioooKiqq69eJSA5zhyuvhCOOgB494q4mOxQXF1Nc\nXJz052vSBdQnurvNG929b42+oPIuoCJ3X2FmLYCZ6gISke0ZMADGjg2LvTVqFHc12SnlJ4K5e586\nVfRdk4CuwN3Rn8+kePsikmcmTw4XdH/lFTX+qVTlGEA0hfO/qnn9GDMbUd3GzWwMYRZRezP72My6\nAf2B08xsEXBK9FhEpFILF4YF3saPh9at464mv1R3PYBDgFuAY4H3geWEZSCaA+0JDfu97r4w5UWp\nC0hEgM8+g6OPhr594dJL464m+6V8MTgzawh0BPYhjAMsBd509011KXQ736kAEClwW7bA6afDsceG\nk75k+3RReBHJee7QvTusWAHPPAM71GTCuqR+EFhEJNMGDw5r+8+ercY/nRQAIpJVpk+Hv/wlBECT\nJnFXk98UACKSNd5/Hy65JMz4ads27mryX7UHV2Z2uZm9bmZfRbe5ZtY1U8WJSOFYvRrOOisM+GqZ\nh8yo8gggauhvAnoBbxCmgHYE7okGaR/PTIkiku82bYKf/Qwuuihc3Usyo7rzAF4lXPv3owrPtwWe\ndvdj0laUZgGJFIyyMujcOazp/+STGvSti1TOAmpSsfEHcPclZqahGRFJiTvuCBd2eeEFNf6ZVl0A\nVHeiV9pOAhORwjF0aFjX/+WXYccd466m8FTXBfQ1sLiKz+3n7o3TVpS6gETy3vTpcNllYXXPdu3i\nriY/pLILqEMK6hER+Y4FC8J0zwkT1PjHqcoAcPclGaxDRArE8uVw9tlheecf/SjuagpbddNAN1Dh\nIjAJ3N13SU9JIpKvvvwSfvpTuOaaMPNH4qXF4EQkIzZvDo3/gQeGtX6sxj3VUlNaDVREsk75XP+S\nknBZx3r14q4oP2k1UBHJKu5w881haedp09T4ZxMFgIik1YAB8OKLYbqn5vpnFwWAiKTNyJEwZEhY\n179p07irkYoUACKSFlOnwu9+BzNnwt57x12NVEYBICIp9+qr4SzfSZOgg04pzVpaeklEUmrBAjj3\nXBgxAo47Lu5qpDoKABFJmcWLoVMnGDQonO0r2U0BICIpsWwZnHYa9O6ts3xzhQJAROps9erQ+F9/\nfVjmQXKDAkBE6mTdOjjjDLjgArjllrirkdrQUhAikrSvvgqNf8eOYXVPre8TL60FJCIZsXlzuJB7\ns2YwfLgu55gNFAAiknZbtsCFF0L9+vD00+FPiV9tA0CZLSK1snVrmOVjBmPGqPHPZfqrE5EaKymB\nLl1C98/48fC978VdkdSFAkBEaqS0NCzvsH49TJwIDRvGXZHUlQJARLartBS6dYPPPoNnn9WyzvlC\nASAi1Sorg6uvDmf6Tp4MjRrFXZGkigJARKpUVgbdu8MHH8Df/w6NG8ddkaSSAkBEKlVaCldeCR99\nBFOmwE47xV2RpJoCQES+o6QkDPiuWhV++avxz08KABHZxpYt8KtfwcaN8Nxz6vPPZwoAEfnG5s3h\nDF8zeOYZTfXMd9l7JvDdd8MLL8DatXFXIlIQvv4azjsvNPrjxqnxLwTZewSwfDn07Qvz58Nee8GR\nR2572223uCsUyRsbN4bLODZvDiNHanmHQpH9i8GVlsKiRTB3LsybF24KBZGUWbs2XL6xfXsYOhTq\n1Yu7IklWYawGqlAQSYnly8N6/j/5CQwcqCWdc11hBEBlFAoitfLhh3D66XD55XDHHbqYSz4o3ACo\njEJBpFILFsCZZ4aG/7rr4q5GUkUBsD0KBSlws2fD+eeHSzhefHHc1UgqKQCSoVCQAjFtGlx6KTz+\nOHTqFHc1kmo5EwBmtgT4EigFtrr70QmvxX9JSIWC5JnRo6FXr7CW//HHx12NpEMuBcBHwJHuvqaS\n1+IPgMooFCQHuUP//vDww2Fdn4MPjrsiSZdcC4Cj3P3zSl7LzgCojEJBslhJCfTsCS+/HBr/li3j\nrkjSKZcC4ENgHaEL6H/dfWjCa7kTAJVRKEgW2LgxXLx906awtMMuu8RdkaRbLgVAC3dfbmZ7AjOA\nnu4+K3rNe/fu/c17i4qKKCoqiqXOlFEoSAatWhXO7j3ooHB2b4MGcVck6VBcXExxcfE3j/v27Zsb\nAbBNEWa9gQ3uPjB6nNtHADWlUJA0WLQozPG/5BLo00cneBWSnDgCMLPGQD13X29mOwHTgb7uPj16\nvTACoDIKBamDmTPD3P4//xmuuiruaiTTciUAfgBMjB7WB0a7+10JrxduAFRGoSA18Mgj8Ic/wJgx\ncMopcVcjcciJANgeBUANKBQkUlICv/kNTJ0KkydDu3ZxVyRxUQAUMoVCwVm3Lsz02boVxo7VX2uh\nUwDIthQKeevDD+Gcc6CoCAYN0kwfUQBITSgUct6LL0KXLvD730OPHnFXI9lCASDJUSjkBPdw4ZaB\nA8PaPhrslUQKAEkdhUJW2bABrrwSPvgAJkyANm3irkiyjQJA0kuhEIvFi8Ma/kcdBUOGQKNGcVck\n2UgBIJmnUEirKVOgWzfo2xeuvVZn9krVFACSHRQKdVZaCv36wbBhYYqn1vCX7VEASPZSKNTY8uVh\nlg+Ewd4WLeKtR3KDAkByi0LhO2bMgK5d4ZprwtIO9erFXZHkCgWA5L4CDYWSktDPP3w4jBqlKZ5S\newoAyU95HgqffhqWdGjQAJ54Apo3j7siyUUKACkceRIKkyZB9+5w/fVw++3q8pHkKQCksOVQKGzc\nCL16hT7/UaPghBNiLUfygAJApKIsDIU5c8IVu447Dh56SNfrldRQAIjUREyhUFIC/fvDgw/C4MHw\ny1+mbNMiCgCRpKU5FP7973BGb8OGMHIktGqVhn2QgqYAEEml8lCYN+/bYKhlKJSWhl/8f/4z3HEH\n3HQT7LBDhvdDCoICQCTdahEK76/ajW7doH79ML9///3jLl7ymQJAJA4VQsHnzmPr3Pl8snUvSg49\nkv0uOpIdjsqO2UeSvxQAIjFbuBCuvhoaNyzlsdsX0XpV8t1HIrWhABCJycaNYfXO4cPhzjvDWj7f\n6etPwZiCSFUUACIxmDIFbrghLNk8cGAtl3JQKEiKKABEMmjZsjCr5623wpW6TjstRRtWKEgSFAAi\nGbBlSziD9667oEcPuO022HHHNH+pQkG2QwEgkkbuobunVy844IDQ3dO+fYwFKRQkgQJAJE3efRdu\nvhmWLIH774czz4y7oiooFAqWAkAkxdauDRdqGT06nMnbo0dYtz+nKBQKggJAJEW+/jos4XDvvfDz\nn8Of/gR77hl3VSmkUMg7CgCROiopgREjwq/+Y44Ja/gceGDcVWWIQiGnKQBEkuQOEyeGq3I1bx6W\nbT722LirygIKhZyhABCppfKZPf36hemdd90FnTqB1fi/UQFSKGQlBYBIDbmH6/H26wdbt8If/xj6\n+rVUc5IUCrFTAIhsR1kZPPNMaPjNQsN/3nlq+NNCoZBRCgCRKmzeHKZyDhwIjRqFhv+cc9TVk3EK\nhbRRAIhUsGYNPPxwuAbvYYfBb34Dp5yihj+rKBRSQgEgElm8OKzXM2pU6OLp1QsOOSTuqqTGFAq1\npgCQglZaGmb0DBkCr78OV1wBPXvC3nvHXZmkhEKhWgoAKUgrV8Kjj8Ijj4TG/rrr4MILM7BCp8RP\nofANBYAUjK1bYepUeOwxmDkzNPjXXQcdO8ZdmcSuQENBASB57803YeTIMKOnXTu4/PLQ+O+6a9yV\nSVYrgFBQAEhe+uAD+Nvf4Kmnwqyerl3hsstCAIgkLc9CQQEgeaO80R87Fj79NJyle+GF8OMf66Qt\nSaMcDgUFgOSs0lJ47bUwi2fyZFi+/NtG/6SToF69uCuUgpUjoaAAkJyydi1Mnx4a/eefD/+fzjor\n3E44QY2+ZLEsDAUFgGS1devgn/8Ms3Zmzgz/f0466dtGf5994q5QpA5iDoWcCAAz6wQMAuoBj7r7\n3RVeVwDkAXdYuhTmzIFXX4VZs+Cdd+Doo+Hkk8Ptv/4LGjaMu1KRNMpgKGR9AJhZPeB94FTgE+A1\noLO7v5vwnrwOgOLiYoqKiuIuI6Xc4T//gYULYfz4YlavLmLOnDBYe8wxodE/4YRwP9dPzsrHv79E\n+bx/WbNvaQqF2gZA/aSKr5ujgcXuvgTAzJ4CzgPere5D+SRr/hEmYdMmWLIkzNBZvDg0+AsXwttv\nQ5Mm8MMfwoYNxfTqVcSQIdCqVf4tupbLf381kc/7lzX7Vq8edOgQbpdcEp6rGAp9+6a9+yiOANgb\n+Djh8TLgmBjqkASbNsGXX4ZB2eXLYcWKbf9cuhQ+/BBWrYI2bWC//WDffcNZt5deCgcfDHvsEbbV\npw9ccEGsuyOSe2IIhTgCIH/7drLQSy/B3XeHZRMq3tavD43+unWhC2fXXaFpU2jRIlwTt0WLcOvQ\n4dtGv1UrzcwRyZjthcK8eduGQi3FMQZwLNDH3TtFj28DyhIHgs1MISEikoRsHwSuTxgE/gnwKTCH\nCoPAIiKSfhnvAnL3EjO7AZhGmAY6TI2/iEjmZeWJYCIikn5Zt6SWmXUys/fM7N9m9ru460klM2tt\nZjPN7G0zW2hmN8ZdU6qZWT0ze8PMnou7llQzs6ZmNs7M3jWzd6LxrLxhZrdF/zYXmNmTZpbTp+iZ\n2XAzW2lmCxKe293MZpjZIjObbmZN46yxLqrYv3uif59vmtkEM6t2kfSsCoDoJLHBQCfgIKCzmXWI\nt6qU2grc7O4HA8cCPfJs/wBuAt4hP2d7PQD83d07AIeSR+eumFlb4GrgCHc/hNA9e3GcNaXACEJb\nkuhWYIa7HwD8I3qcqyrbv+nAwe5+GLAIuK26DWRVAJBwkpi7bwXKTxLLC+6+wt3nR/c3EBqQlvFW\nlTpm1gr4KfAokFenf0W/pE509+EQxrLcfV3MZaXSl4QfKI2jiRqNCWfq5yx3nwWsrfD0ucDI6P5I\n4GcZLSqFKts/d5/h7mXRw1eBVtVtI9sCoLKTxPLyct7RL66OhL+kfHE/cAtQtr035qAfAKvNbISZ\nvW5mQ82scdxFpYq7rwEGAv8hzM77wt1fiLeqtGjm7iuj+yuBZnEWk2ZXAH+v7g3ZFgD52G3wHWa2\nMzAOuCk6Esh5ZnY2sMrd3yDPfv1H6gNHAEPc/QhgI7ndfbANM9sP+DXQlnBUurOZdYm1qDSLFhzL\nyzbHzO4Atrj7k9W9L9sC4BOgdcLj1oSjgLxhZg2A8cAT7v5M3PWk0PHAuWb2ETAGOMXMHo+5plRa\nBixz99eix+MIgZAvjgJmu/vn7l4CTCD8neablWbWHMDMWgCrYq4n5czsckJX7HYDPNsCYC7Qzsza\nmtn3gIuASTHXlDJmZsAw4B13HxR3Pank7re7e2t3/wFh8PBFd78s7rpSxd1XAB+b2QHRU6cCb8dY\nUqq9BxxrZo2if6enEgbz880koGt0vyuQTz/CypfavwU4z903be/9WRUA0S+P8pPE3gGezrOTxE4A\nLgFOjqZKvhH9heWjfDy07gmMNrM3CbOA/hJzPSnj7m8CjxN+hL0VPf1IfBXVnZmNAWYD7c3sYzPr\nBvQHTjOzRcAp0eOcVMn+XQE8BOwMzIjalyHVbkMngomIFKasOgIQEZHMUQCIiBQoBYCISIFSAIiI\nFCgFgIhIgVIAiIgUKAWAFAQze9HMTq/w3K/L50mbWTszm2xmi81sbvT+E6PXmkWvzY+WS55SxXc0\nNLOXzGwHM/sw4aSx8tcHmdlvzexQMxuWrn0VqSkFgBSKMXx3eeOLgCfNbEdgCvCwu+/v7kcRTvra\nN3pfP2BpV7NrAAACAUlEQVSaux8eLeVd1XUqugCTo9UYt/k+M9sBuAAY4+5vAfuZWe2v4i2SQgoA\nKRTjgbOipY7LV2Nt6e7/JDTc/3L3yeVvdve33b182eDmJCyN7O4Lq/iOzsCz0f0xhIApdxKw1N3L\nV7udClxYlx0SqSsFgBSEaLnjOYRFsiD8On86un8Q8Ho1H/8fYFjULXR7tIjYNqKLGf3Q3RdF37cQ\nKDOzQxO+L3FlxjmEUBCJjQJACklit8xF0eNy3yxhbWYTo8sijgdw9+mE7qChwIHAG2b2/Qrb/j6w\nvrLvi8LhPOBvCa8tJyy9LBIbBYAUkknAT8ysI9A4unYBhFU9v1na2d3PBy4Hdk94bq27j4lWOH2N\nyn+9V7wOwlPALwkra77l7qsrvFcLcUmsFABSMKKL78wkXEs1sTvmSeAEMzsn4bmdiBpoMzu5/Opf\nZtYE2A9YWmHznxFWYUz8vg+j5/tX+D6AFpVsQySjFABSaMYAh5DQ/ROtm342cK2ZfWBms4E7gD9F\nbzkSeC1aBno2MNTd5yVu1N1LgYVm1r6S72tPuMBKoqOB/0vNLokkR8tBi6RIdCWmZu5+dw3eWwz8\n0t3z7opUkjt0BCCSOk8SpppWe03kaGbQYjX+EjcdAYiIFCgdAYiIFCgFgIhIgVIAiIgUKAWAiEiB\nUgCIiBQoBYCISIH6f9p9xEIpR1BaAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f9902d9f350>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "from sympy import symbols, solve\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "\n", + "#VDSQ, IDQ\n", + "\n", + "ID=6e-3# # in amperes\n", + "VGS=8# # in volts\n", + "VT=3# # in volts\n", + "# From Fig. 7.37(a)\n", + "VDD=12# # in volts\n", + "RD=2e3# # in ohms\n", + "# Plotting transfer curve\n", + "k=ID/(VGS-VT)**2# # in amperes per volt square\n", + "from numpy import arange\n", + "VGS=arange(3, VDD,0.01) # Gate source voltage in volts\n", + "ID=[]\n", + "for x in VGS:\n", + " ID.append(k*(x-VT)**2*1e3) # Drain current in mA ............ (i)\n", + "plot(VGS,ID)#\n", + "title(\"Transfer Curve\")\n", + "xlabel(\"VGS (V)\")\n", + "ylabel(\"ID (mA)\")\n", + "# Plotting bias line\n", + "# From the simplified dc equivalent circuit in Fig. 7.37(b)\n", + "VGS=arange(0, VDD,0.01) # Gate source voltage in volts\n", + "ID=[]\n", + "for x in VGS:\n", + " ID.append((VDD-x)/RD*1e3)# # Source current in mA\n", + "plot(VGS,ID,\"RED\")\n", + "# Intersection of transfer curve with the bias curve\n", + "# Putting VGS = VDD-ID*RD in equation (i) and solving, we get ID**2*RD**2 + (2*RD*VT - 2*VDD*RD - 1/k)*ID + (VDD-VT)**2\n", + "# Solving the equation\n", + "from sympy import symbols, solve\n", + "ID = symbols('ID')\n", + "expr = ID**2*RD**2 + (2*RD*VT - 2*VDD*RD - 1/k)*ID + (VDD-VT)**2\n", + "IDQ=solve(expr, ID)[0]# in amperes\n", + "VGSQ=VDD-IDQ*RD# # in volts\n", + "IDQ=IDQ*1e3# # in mili-amperes\n", + "print \"VDSQ = %0.2f V \"%VGSQ\n", + "print \"IDQ = %0.2f mA \"%IDQ" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.7: Page No 367" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IDQ = 4.97 mA \n", + "VDSQ = 9.35 V \n", + "VGSQ = 5.99 V \n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f3e9fd00c90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "from sympy import symbols, solve\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n", + "\n", + "#IDQ, VDSQ, VGSQ\n", + "\n", + "ID=5e-3# # in amperes\n", + "VGS=6# # in volts\n", + "VT=3# # in volts\n", + "# From Fig. 7.39(a)\n", + "VDD=24# # in volts\n", + "R1=10# # in mega-ohms\n", + "R2=6.8# # in mega-ohms\n", + "RD=2.2e3# # in ohms\n", + "RS=0.75e3# # in ohms\n", + "# Applying Thevnin's theorem to obtain simplified circuit in Fig. 7.39(b)\n", + "VGG=VDD*R2/(R1+R2)# # in volts\n", + "# Plotting transfer characteristics\n", + "k=ID/(VGS-VT)**2# # in amperes per volt square\n", + "VGS=arange(3, VGG,0.01) # Gate source voltage in volts\n", + "ID=[]\n", + "for vgs in VGS:\n", + " ID.append(k*(vgs-VT)**2*1e3) # Drain current in mA ............ (i)\n", + "\n", + " \n", + "plot(VGS,ID)#\n", + "title(\"Transfer Characteristics\")\n", + "xlabel(\"VGS (V)\")\n", + "ylabel(\"ID (mA)\")\n", + "# Plotting bias line\n", + "VGS=arange(0, VGG,0.01)# # Gate source voltage in volts\n", + "# Writing KVL for the gate-source loop\n", + "ID=[]\n", + "for x in VGS:\n", + " ID.append((VGG-x)/RS*1e3)# # Source current in mA\n", + "plot(VGS,ID,\"RED\")\n", + "# Intersection of transfer curve with the bias curve\n", + "# Putting VGS = VGG-ID*RD in equation (i) and solving, we get ID**2*RS**2 + (2*RS*VT - 2*VGG*RS - 1/k)*ID + (VGG-VT)**2\n", + "# Solving the equation\n", + "ID = symbols('ID')\n", + "expr = ID**2*RS**2 + (2*RS*VT - 2*VGG*RS - 1/k)*ID + (VGG-VT)**2\n", + "IDQ=solve(expr,ID)[0] # in amperes\n", + "VGSQ=VGG-IDQ*RS# # in volts\n", + "# From the output circuit\n", + "VDSQ=VDD-IDQ*(RD+RS)# # in volts\n", + "IDQ=IDQ*1e3# # in mili-amperes\n", + "print \"IDQ = %0.2f mA \"%IDQ\n", + "print \"VDSQ = %0.2f V \"%VDSQ\n", + "print \"VGSQ = %0.2f V \"%VGSQ" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch8_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch8_1.ipynb new file mode 100644 index 00000000..65fd232b --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch8_1.ipynb @@ -0,0 +1,291 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 : FET Amplifiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.1: Page No 377" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gm = 3.36 mS\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#gm\n", + "\n", + "IDSS=12# # in mili-amperes\n", + "Vp=-5# # in volts\n", + "VGS=-1.5# # in volts\n", + "gmo=2*IDSS/abs(Vp)# # in mili-Siemens\n", + "gm=gmo*(1-VGS/Vp)# # in mili-Siemens\n", + "print \"gm = %0.2f mS\"%gm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.2: Page No 380" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Voltage gain = -6.7 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Voltage gain\n", + "\n", + "gm=2# # in mili-ampere per volt\n", + "rd=10# # in kilo-ohms\n", + "# From Fig. 8.7\n", + "RD_eff=10*10/(10+10)# # in kilo-ohms\n", + "AV=-gm*rd*RD_eff/(rd+RD_eff)# # Voltage gain\n", + "print \"Voltage gain = %0.1f \"%AV" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.3: Page No 384" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gm = 1.51 mA/V\n", + "µ = 75.56 \n", + "Ri = 1.00 MΩ\n", + "Ro = 3.22 kΩ\n", + "AV = -1.92 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#gm, µ, Ri, Ro, AV\n", + "\n", + "VGSQ=-2.6# # in volts\n", + "IDSS=8# # in mili-amperes\n", + "Vp=-6# # in volts\n", + "rd=50# # in kilo-ohms\n", + "# From Fig. 8.11\n", + "RD=3.3# # in kilo-ohms\n", + "RG=1# # in mega-ohms\n", + "RS=1# # in kilo-ohms\n", + "gmo=2*IDSS/abs(Vp)# # in mili-ampere per volt\n", + "gm=gmo*(1-VGSQ/Vp)# # in mili-ampere per volt\n", + "mu=rd*gm# # µ\n", + "Ro=(rd+(1+mu)*RS)*RD/(RD+rd+(1+mu)*RS)# # in kilo-ohms\n", + "AV=-mu*RD/(RD+rd+(1+mu)*RS)#\n", + "print \"gm = %0.2f mA/V\"%gm\n", + "print \"µ = %0.2f \"%mu\n", + "print \"Ri = %0.2f MΩ\"%RG\n", + "print \"Ro = %0.2f kΩ\"%Ro\n", + "print \"AV = %0.2f \"%AV" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.4: Page No 386" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AV = 0.83 \n", + "Ri = 10.00 MΩ\n", + "Ro = 0.347 kΩ\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#AV, Ri, Ro\n", + "\n", + "IDSS=16# # in mili-amperes\n", + "Vp=-4# # in volts\n", + "rd=40# # in kilo-ohms\n", + "# From Fig. 8.14\n", + "RS=2.2# # in kilo-ohms\n", + "# Using dc analysis\n", + "VGSQ=-2.8# # in volts\n", + "gmo=2*IDSS/abs(Vp)# # in mili-ampere per volt\n", + "gm=gmo*(1-VGSQ/Vp)# # in mili-ampere per volt\n", + "mu=rd*gm# # Amplification factor\n", + "AV=mu*RS/(rd+(1+mu)*RS)#\n", + "Ri=10# # in mega-ohms\n", + "Ro=rd*RS/(rd+(1+mu)*RS)# # in kilo-ohms\n", + "print \"AV = %0.2f \"%AV\n", + "print \"Ri = %0.2f MΩ\"%Ri\n", + "print \"Ro = %0.3f kΩ\"%Ro" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.5: Page No 389" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AV = 6.30 \n", + "Ri = 0.39 kΩ\n", + "Ro = 3.05 kΩ\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#AV, Ri, Ro\n", + "\n", + "VGSQ=-1.8# # in volts\n", + "rd=40# # in kilo-ohms\n", + "IDSS=8# # in mili-amperes\n", + "Vp=-2.8# # in volts\n", + "# From Fig. 8.16\n", + "RD=3.3# # in kilo-ohms\n", + "RS=1.5# # in kilo-ohms\n", + "gmo=2*IDSS/abs(Vp)# # in mili-Siemens\n", + "gm=gmo*(1-VGSQ/Vp)# # in mili-Siemens\n", + "mu=rd*gm# # Amplification factor\n", + "AV=(1+mu)*RD/(rd+RD)#\n", + "Ri_dash=(RD+rd)/(1+mu)# # in kilo-ohms\n", + "Ri=Ri_dash*RS/(Ri_dash+RS)# # in kilo-ohms\n", + "Ro=rd*RD/(rd+RD)#\n", + "print \"AV = %0.2f \"%AV\n", + "print \"Ri = %0.2f kΩ\"%Ri\n", + "print \"Ro = %0.2f kΩ\"%Ro" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.6: Page No 392" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gm = 3.00 mS\n", + "AV = -6.60 \n", + "Ri = 1.32 MΩ\n", + "Ro = 2.20 kΩ\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#gm, Ri, Ro, AV\n", + "\n", + "VGSQ=8# # in volts\n", + "VT=3# # in volts\n", + "k=0.3e-3#\n", + "# From Fig. 8.18\n", + "RF=10e6# # in ohms\n", + "RD=2.2e3# # in ohms\n", + "gm=2*k*(VGSQ-VT)# # in Siemens\n", + "Ri=RF/(1+gm*RD)# # in ohms\n", + "Ro=RF*RD/(RF+RD)# # in ohms\n", + "AV=-gm*Ro#\n", + "gm=gm*1e3# # in mili-Siemens\n", + "Ri=Ri*1e-6# # in mega-ohms\n", + "Ro=Ro*1e-3# # in kilo-ohms\n", + "print \"gm = %0.2f mS\"%gm\n", + "print \"AV = %0.2f \"%AV\n", + "print \"Ri = %0.2f MΩ\"%Ri\n", + "print \"Ro = %0.2f kΩ\"%Ro" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch9_1.ipynb b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch9_1.ipynb new file mode 100644 index 00000000..4f007e85 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch9_1.ipynb @@ -0,0 +1,466 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 9 : Multistage Amplifiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exmaple 9.1: Page No 402" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overall voltage gain = -79.61 \n", + "Overall current gain = -31.84 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Overall voltage gain, Overall current gain\n", + "\n", + "bta=100#\n", + "r_pi=0.5# # in kilo-ohms\n", + "# From Fig. 9.4\n", + "Rs=2# # in kilo-ohms\n", + "RC=2# # in kilo-ohms\n", + "RE=5# # in kilo-ohms\n", + "# As the first stage ia a CE amplifier stage\n", + "AV1=-bta*RC/(Rs+r_pi)# # Voltage gain of first amplifier\n", + "# The second stage is a CC amplifier\n", + "AV2=(1+bta)*RE/(Rs+r_pi+(1+bta)*RE)# # Voltage gain of second amplifier\n", + "AV=AV1*AV2# # Overall voltage gain\n", + "AI=Rs*AV/RE# # Overall current gain\n", + "print \"Overall voltage gain = %0.2f \"%AV\n", + "print \"Overall current gain = %0.2f \"%AI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.2: Page No 403" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overall voltage gain = 12119.79 \n", + "Overall current gain = 939.35 \n", + "Imput impedance = 0.78 kΩ \n", + "Output impedance = 1.67 kΩ \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Overall voltage gain, Current gain, Input impedance, Output impedance\n", + "\n", + "bta=100#\n", + "VBE=0.7# # in volts\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "# From Fig. 9.7\n", + "R1=22# # in kilo-ohms\n", + "R2=3.3# # in kilo-ohms\n", + "RC1=6# # in kilo-ohms\n", + "RE1=0.5# # in kilo-ohms\n", + "R3=16# # in kilo-ohms\n", + "R4=6.2# # in kilo-ohms\n", + "RC2=2# # in kilo-ohms\n", + "RE2=1# # in kilo-ohms\n", + "RL=10# # in kilo-ohms\n", + "\n", + "\n", + "# DC analysis\n", + "\n", + "# From simplified dc equivalent circuit for stage 1 in Fig. 9.8(a)\n", + "RB1=R1*R2/(R1+R2)# # in kilo-ohms\n", + "VBB1=15*R2/(R1+R2)# # in volts\n", + "IB1=(VBB1-VBE)/(RB1+(1+bta)*RE1)# # in mili-amperes\n", + "IC1=bta*IB1# # in mili-amperes\n", + "gm1=IC1/VT# # in mili-Siemens\n", + "r_pi1=bta/gm1# # in kilo-ohms\n", + "\n", + "# From simplified dc equivalent circuit for stage 2 in Fig. 9.8(b)\n", + "RB2=R3*R4/(R3+R4)# # in kilo-ohms\n", + "VBB2=15*R4/(R3+R4)# # in volts\n", + "IB2=(VBB2-VBE)/(RB2+(1+bta)*RE2)# # in mili-amperes\n", + "IC2=bta*IB2# # in mili-amperes\n", + "gm2=IC2/VT# # in mili-Siemens\n", + "r_pi2=bta/gm2# # in kilo-ohms\n", + "\n", + "\n", + "# AC analysis\n", + "\n", + "# Applying Thevnin theorem at 1-1' in ac equivalent circuit in Fig. 9.9 to obtain equivalent circuit of stage 1 in Fig. 9.10(a)\n", + "RL1=RC1*RB2/(RC1+RB2)# # Effective load for first stage in kilo-ohms\n", + "AV1=-bta*RL1/r_pi1# # Voltage gain of first stage\n", + "\n", + "# Using the Thevnin's equivalent of first stage the equivalent circuit of second stage is shown in Fig. 9.10(b)\n", + "RL2=RC2*RL/(RC2+RL)# # Effective load for second stage in kilo-ohms\n", + "AV2=-bta*RL2/(RL1+r_pi2)# # Voltage gain of second stage\n", + "\n", + "Io_Ic2=-RC2/(RC2+RL)# # Io/Ic2\n", + "Ic2_Ib2=-bta# # Ic2/Ib2\n", + "#From simplified diagram in Fig. 9.11\n", + "Ib2_Ic1=-RL1/(RL1+r_pi2)# # Ib2/Ic1\n", + "Ic1_Ib1=-bta# # Ic1/Ib1\n", + "Ib1_Ii=RB1/(RB1+r_pi1)# # Ib1/Ii\n", + "\n", + "AV=AV1*AV2# # Overall voltage gain\n", + "AI=Io_Ic2*Ic2_Ib2*Ib2_Ic1*Ic1_Ib1*Ib1_Ii# # Overall current gain\n", + "Ri=RB1*r_pi1/(RB1+r_pi1)# # Input impedance in kilo-ohms\n", + "Ro=RC2*RL/(RC2+RL)# # Output impedance in kilo-ohms\n", + "print \"Overall voltage gain = %0.2f \"%AV\n", + "print \"Overall current gain = %0.2f \"%AI\n", + "print \"Imput impedance = %0.2f kΩ \"%Ri\n", + "print \"Output impedance = %0.2f kΩ \"%Ro" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.3: Page No 407" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Voltage gain = -825.58 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Voltage gain\n", + "\n", + "bta=150#\n", + "VA=130# # in volts\n", + "IC=100# # in micro-amperes\n", + "Rs=50# # in kilo-ohms\n", + "RC=250# # in kilo-ohms\n", + "VT=25# # Voltage equivalent to temperatue at room temperature in mili-volts\n", + "gm=IC/VT# # in mili-Siemens\n", + "ro=VA/IC# # in Megaohms\n", + "ro=ro*1e3# # in kilo-ohms\n", + "r_pi=bta/gm# # in kilo-ohms\n", + "# From ac equivalent circuit of the first CC stage using hybrid-π model in Fig. 9.13(a)\n", + "# Voltage gain of CC stage\n", + "AV1=(1+bta)*ro/(Rs+r_pi+(1+bta)*ro)# # Voltage gain of first stage\n", + "Ro1=(Rs+r_pi)/(1+bta)# # in kilo-ohms\n", + "Ro1_dash=ro*Ro1/(ro+Ro1)# # in kilo-ohms\n", + "# From the ac equivalent circuit of second stage in Fig. 9.13(b)\n", + "RL=ro*RC/(ro+RC)# # Effective load for second stage in kilo-ohms\n", + "AV2=-bta*RL/(Ro1_dash+r_pi)# # Voltage gain of second stage\n", + "AV=AV1*AV2# # Overall voltage gain\n", + "print \"Voltage gain = %0.2f \"%AV" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.4: Page No 409" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (i)\n", + "Voltage gain = 30.25 \n", + "Input impedance = 3.00 MΩ \n", + "Output impedance = 2.20 kΩ \n", + "Part (ii)\n", + "Output voltage = 247.95 mV \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "# (i) Voltage gain, Input impedance, Output impedance\n", + "# (ii) Output voltage\n", + "\n", + "gm=2.5# # in mili-Siemens\n", + "# From Fig. 9.14(a)\n", + "RG=3# # in Mega-ohms\n", + "RD=2.2# # in kilo-ohms\n", + "\n", + "print \"Part (i)\"\n", + "AV1=-gm*RD# # Voltage gain of both individual stages\n", + "AV=AV1**2# # Overall voltage gain\n", + "print \"Voltage gain = %0.2f \"%AV\n", + "print \"Input impedance = %0.2f MΩ \"%RG\n", + "print \"Output impedance = %0.2f kΩ \"%RD\n", + "\n", + "print \"Part (ii)\"\n", + "Vi=10# # in mili-volts\n", + "RD_dash=RD*10/(RD+10)# # Effective load of secong stage in kilo-ohms\n", + "# Now the gain of second stage\n", + "AV2=-gm*RD_dash#\n", + "AV=AV1*AV2# # Overall voltage gain\n", + "Vo=Vi*AV# # Output voltage in mili-volts\n", + "print \"Output voltage = %0.2f mV \"%Vo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.5: Page No 410" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Part (i)\n", + "Voltage gain of first stage = -9.88 CS amplifier with RS1 \n", + "Voltage gain of second stage = -8.00 CS amplifier stage \n", + "Voltage gain of third stage = 0.82 CD amplifier stage \n", + "Part (ii)\n", + "Overall voltage gain = 64.50 \n", + "Part (iii)\n", + "Output resistance = 0.816 kΩ \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "## (i) Gain of each stage\n", + "# (ii) Overall voltage gain\n", + "# (iii) Output resistance Ro'\n", + "\n", + "gm=1 # in mili-mho\n", + "rd=40# # in kilo-ohms\n", + "# From Fig. 9.14(b)\n", + "RD1=40 # in kilo-ohms\n", + "RS1=2 # in kilo-ohms\n", + "RD2=10 # in kilo-ohms\n", + "RS3=5 # in kilo-ohms\n", + "mu=rd*gm# # Amplification factor\n", + "\n", + "print \"Part (i)\"\n", + "AV1=-mu*RD1/(rd+RD1+(1+mu)*RS1)# # Voltage gain of first stage (CS amplifier with RS1)\n", + "AV2=-mu*RD2/(rd+RD2)# # Voltage gain of second stage (CS amplifier stage)\n", + "AV3=mu*RS3/(rd+(1+mu)*RS3)# # Voltage gain of third stage (CD amplifier stage)\n", + "print \"Voltage gain of first stage = %0.2f CS amplifier with RS1 \"%AV1\n", + "print \"Voltage gain of second stage = %0.2f CS amplifier stage \"%AV2\n", + "print \"Voltage gain of third stage = %0.2f CD amplifier stage \"%AV3\n", + "\n", + "print \"Part (ii)\"\n", + "AV=AV1*AV2*AV3# # Overall voltage gain\n", + "print \"Overall voltage gain = %0.2f \"%AV\n", + "\n", + "print \"Part (iii)\"\n", + "# Last stage is a CD amplifier, therefore\n", + "Ro=rd/(1+mu)# # in kilo-ohms\n", + "Ro_dash=Ro*RS3/(Ro+RS3)# # in kilo-ohms\n", + "print \"Output resistance = %0.3f kΩ \"%Ro_dash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.6: Page No 412" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input impedance = 10.00 MΩ \n", + "Output impedance = 2.70 kΩ \n", + "Voltage gain = 647.33 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Input impedance, Output impedance, Voltage gain\n", + "\n", + "gm=2.5# # in mili-Siemens\n", + "r_pi=1.3# # in kilo-ohms\n", + "bta=200#\n", + "# From Fig. 9.14(c)\n", + "Ri2=15*4.7*1.3/(15*4.7+15*1.3+4.7*1.3)# # Input impedance of second stage in kilo-ohms\n", + "RD_dash=1.8*Ri2/(1.8+Ri2)# # Effective load for the first stage in kilo-ohms\n", + "AV1=-gm*RD_dash# # Voltage gain of the loaded 1st stage\n", + "AV2=-bta*2.7/r_pi# # Voltage gain of the 2nd stage\n", + "AV=AV1*AV2# # Overall voltage gain\n", + "print \"Input impedance = %0.2f MΩ \"%10\n", + "print \"Output impedance = %0.2f kΩ \"%2.70\n", + "print \"Voltage gain = %0.2f \"%AV" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.7: Page No 416" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AV = 0.93 \n", + "Ri = 12.02 MΩ \n", + "Ro = 30.64 kΩ \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#AV, Ri, Ro\n", + "\n", + "RE=0.5# # in kilo-ohms\n", + "Rs=50# # in kilo-ohms\n", + "Ic1=15e-3# # in mili-amperes\n", + "Ic2=1# # in mili-amperes\n", + "VA=100# # in volts\n", + "bta=150#\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "# For Q1\n", + "gm1=Ic1/VT# # in mili-mho\n", + "r_pi1=bta/gm1# # in kilo-ohms\n", + "ro1=VA/Ic1# # in kilo-ohms\n", + "# For Q2\n", + "gm2=Ic2/VT# # in mili-mho\n", + "r_pi2=bta/gm2# # in kilo-ohms\n", + "ro2=VA/Ic2# # in kilo-ohms\n", + "# From ac equivalent circuit in Fig. 9.17\n", + "RE2=ro2*RE/(ro2+RE)# # Effective load for stage Q2 in kilo-ohms\n", + "Ri2=r_pi2+(1+bta)*RE2# # Input resistance for second stage in kilo-ohms\n", + "AV2=(1+bta)*RE2/Ri2# # Voltage gain of the second stage\n", + "RE1=ro1*Ri2/(ro1+Ri2)# # Effective load for the first stage in kilo-ohms\n", + "Ri1=r_pi1+(1+bta)*RE1# # Input resistance for first stage in kilo-ohms\n", + "AV1=(1+bta)*RE1/Ri1# # Voltage gain of first stage\n", + "AV=AV1*AV2# # Overall voltage gain\n", + "Ro=ro2*(r_pi2+ro1)/(ro2*(1+bta)+r_pi2+ro1)# # Output resistance in kilo-ohms\n", + "Ri1=Ri1*1e-3# # in Mega-ohms\n", + "print \"AV = %0.2f \"%AV\n", + "print \"Ri = %0.2f MΩ \"%Ri1\n", + "print \"Ro = %0.2f kΩ \"%Ro" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.8 : Page 420" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gain = -240.00 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "IC=1# # in mili-amperes\n", + "bta=120#\n", + "VT=25e-3# # Voltage equivalent to temperatue at room temperature in volts\n", + "# From Fig. 9.20\n", + "RC=6# # in kilo-ohms\n", + "AV1=-1# # Voltage gain of CE stage (from Eqn. 9.35)\n", + "gm=IC/VT# # in mili-mho\n", + "AV2=gm*RC# # Voltage gain of CB stage\n", + "AV=AV1*AV2# # Overall voltage gain\n", + "print \"Gain = %0.2f \"%AV" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNip3_1.png b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNip3_1.png Binary files differnew file mode 100644 index 00000000..5fba4497 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNip3_1.png diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNipV3_1.png b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNipV3_1.png Binary files differnew file mode 100644 index 00000000..aee8da44 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNipV3_1.png diff --git a/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/transferChar3_1.png b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/transferChar3_1.png Binary files differnew file mode 100644 index 00000000..eabea8d1 --- /dev/null +++ b/Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/transferChar3_1.png diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter10_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter10_1.ipynb new file mode 100644 index 00000000..155135db --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter10_1.ipynb @@ -0,0 +1,788 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 10: Dielectric Properties" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.1, Page number 276" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "relative permittivity is 5.86\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "P=4.3*10**-8; #polarisation(per cm**2)\n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "E=1000; #electric field(V/m)\n", + "\n", + "#Calculations\n", + "epsilonr=1+(P/(epsilon0*E)); #relative permittivity\n", + "\n", + "#Result\n", + "print \"relative permittivity is\",round(epsilonr,2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.2, Page number 276" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electric displacement is 36 *10**-6 C/m**2\n", + "polarisation is 27 *10**-6 C/m**2\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "k=4;\n", + "epsilon0=9*10**-12; #relative permeability(F/m)\n", + "E=10**6; #electric field(V/m)\n", + "\n", + "#Calculations\n", + "D=k*epsilon0*E; #electric displacement(C/m**2)\n", + "P=epsilon0*E*(k-1); #polarisation(C/m**2)\n", + "\n", + "#Result\n", + "print \"electric displacement is\",int(D*10**6),\"*10**-6 C/m**2\"\n", + "print \"polarisation is\",int(P*10**6),\"*10**-6 C/m**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.3, Page number 277" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electric field is 0.113 N/C\n", + "polarisation is 4e-12 C/m**2\n", + "induced dipole moment is 2e-18 cm\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "k=5;\n", + "epsilon0=8.86*10**-12; #relative permeability(F/m)\n", + "D=5*10**-12; #electric displacement(C/m**2)\n", + "V=0.5*10**-6;\n", + "\n", + "#Calculations\n", + "E=D/(k*epsilon0); #electric field(N/C)\n", + "P=D*(1-(1/k)); #polarisation(C/m**2)\n", + "dm=P*V; #induced dipole moment(cm)\n", + "\n", + "#Result\n", + "print \"electric field is\",round(E,3),\"N/C\"\n", + "print \"polarisation is\",P,\"C/m**2\"\n", + "print \"induced dipole moment is\",dm,\"cm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example number 10.4, Page number 277" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dipole moment is 2.43 *10**-41 coul x metre\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "k=1.000074;\n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "E=1; #electric field(N/C)\n", + "n=2.69*10**25; #molecular density\n", + "\n", + "#Calculations\n", + "p=epsilon0*E*(k-1)/n; #dipole moment(coulx metre)\n", + "\n", + "#Result\n", + "print \"dipole moment is\",round(p*10**41,2),\"*10**-41 coul x metre\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.5, Page number 278" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dipole moment is 3.97 *10**-36 coul-metre\n", + "atomic polarizability is 4.4 *10**-41 coul-m**2/volt\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "k=1.000134;\n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "E=90000; #electric field(N/C)\n", + "N=6.023*10**26; #avagadro number\n", + "\n", + "#Calculations\n", + "n=N/22.4;\n", + "p=epsilon0*E*(k-1)/n; #dipole moment(coul-metre)\n", + "alpha=p/E; #atomic polarizability(coul-m**2/volt)\n", + "\n", + "#Result\n", + "print \"dipole moment is\",round(p*10**36,2),\"*10**-36 coul-metre\"\n", + "print \"atomic polarizability is\",round(alpha*10**41,1),\"*10**-41 coul-m**2/volt\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.6, Page number 278" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electric field is 1.43 *10**3 volt/m\n", + "electric displacement is 8.9e-08 C/m**2\n", + "dipole moment is 7.6 *10**-8 C/m**2\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "k=7;\n", + "epsilon0=8.9*10**-12; #relative permeability(F/m)\n", + "V0=100; #potential difference(V)\n", + "d=10**-2; #displacement(m)\n", + "\n", + "#Calculations\n", + "E0=V0/d; #electric field intensity(volt/m)\n", + "E=E0/k; #electric field(N/C)\n", + "D=k*E*epsilon0; #electric displacement(C/m**2)\n", + "p=epsilon0*E*(k-1); #dipole moment(coul-metre)\n", + "\n", + "#Result\n", + "print \"electric field is\",round(E/10**3,2),\"*10**3 volt/m\"\n", + "print \"electric displacement is\",D,\"C/m**2\"\n", + "print \"dipole moment is\",round(p*10**8,1),\"*10**-8 C/m**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.7, Page number 279" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dielectric constant is 5.0\n", + "permittivity is 44.25 *10**-12 coul**2/nt-m**2\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "chi=35.4*10**-12; #electric susceptibility(coul**2/nt-m**2)\n", + "\n", + "#Calculations\n", + "k=1+(chi/epsilon0); #dielectric constant\n", + "epsilon=epsilon0*k; #permittivity(coul**2/nt-m**2) \n", + "\n", + "#Result\n", + "print \"dielectric constant is\",k\n", + "print \"permittivity is\",round(epsilon*10**12,2),\"*10**-12 coul**2/nt-m**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.8, Page number 279" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dipole moment is 2.4437 *10**-41 C/m**2\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "E=100; #electric field(N/C)\n", + "epsilonr=1.000074; #dielectric constant\n", + "n=2.68*10**27; #density\n", + "\n", + "#Calculations\n", + "p=epsilon0*E*(epsilonr-1)/n; #dipole moment(coul-metre)\n", + "\n", + "#Result\n", + "print \"dipole moment is\",round(p*10**41,4),\"*10**-41 C/m**2\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.9, Page number 287" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electronic polarizability is 1.6557 *10**-41 Fm**2\n", + "relative permittivity is 1.0018\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "R=0.053*10**-9; #radius(nm)\n", + "N=9.8*10**26; #number of atoms\n", + "\n", + "#Calculations\n", + "alphae=4*math.pi*epsilon0*R**3; #electronic polarizability(Fm**2)\n", + "epsilonr=1+(4*math.pi*N*R**3); #relative permittivity\n", + "\n", + "#Result\n", + "print \"electronic polarizability is\",round(alphae*10**41,4),\"*10**-41 Fm**2\"\n", + "print \"relative permittivity is\",round(epsilonr,4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.10, Page number 288" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electronic polarizability is 2.242e-41 Fm**2\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "epsilonr=1.0000684; #dielectric constant\n", + "N=2.7*10**25; #number of atoms\n", + "\n", + "#Calculations\n", + "alphae=epsilon0*(epsilonr-1)/N; #electronic polarizability(Fm**2)\n", + "\n", + "#Result\n", + "print \"electronic polarizability is\",alphae,\"Fm**2\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.11, Page number 288" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dielectric constant is 1.339\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.854*10**-12; #relative permeability(F/m)\n", + "alphae=10**-40; #dielectric polarizability(Fm**2)\n", + "N=3*10**28; #number of atoms\n", + "\n", + "#Calculations\n", + "epsilonr=1+(N*alphae/epsilon0); #dielectric constant\n", + "\n", + "#Result\n", + "print \"dielectric constant is\",round(epsilonr,3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.12, Page number 288" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electronic polarizability is 7.9 *10**-40 Fm**2\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #relative permeability(F/m)\n", + "epsilonr=1.0024; #dielectric constant\n", + "N=2.7*10**25; #number of atoms\n", + "\n", + "#Calculations\n", + "alphae=epsilon0*(epsilonr-1)/N; #electronic polarizability(Fm**2)\n", + "\n", + "#Result\n", + "print \"electronic polarizability is\",round(alphae*10**40,1),\"*10**-40 Fm**2\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.13, Page number 289" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "radius of electron cloud is 5.86 *10**-11 m\n", + "displacement is 6.99987 *10**-17 m\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilonr=1.0000684; #dielectric constant\n", + "N=2.7*10**25; #number of atoms\n", + "X=1/(9*10**9);\n", + "E=10**6; #electric field(V/m)\n", + "Z=2; #atomic number\n", + "e=1.6*10**-19; #electron charge(coulomb)\n", + "\n", + "#Calculations\n", + "R=((epsilonr-1)/(4*math.pi*N))**(1/3); #radius of electron cloud(m)\n", + "x=X*E*R**3/(Z*e); #displacement(m)\n", + "\n", + "#Result\n", + "print \"radius of electron cloud is\",round(R*10**11,2),\"*10**-11 m\"\n", + "print \"displacement is\",round(x*10**17,5),\"*10**-17 m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.14, Page number 293" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dielectric constant is 1.38\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #dielectric constant\n", + "N=3*10**28; #number of atoms\n", + "alphae=10**-40; #dielectric polarizability(Fm**2)\n", + "\n", + "#Calculations\n", + "x=N*alphae/(3*epsilon0);\n", + "epsilonr=(1+(2*x))/(1-x); #dielectric constant\n", + "\n", + "#Result\n", + "print \"dielectric constant is\",round(epsilonr,2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.15, Page number 294" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dielectric constant is 3.8\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #dielectric constant\n", + "Na=6.023*10**26; #number of atoms\n", + "M=32; #atomic mass\n", + "alphae=3.28*10**-40; #dielectric polarizability(Fm**2)\n", + "rho=2.08*10**3; #density(kg/m**3)\n", + "\n", + "#Calculations\n", + "x=Na*rho*alphae/(M*3*epsilon0);\n", + "epsilonr=(1+(2*x))/(1-x); #dielectric constant\n", + "\n", + "#Result\n", + "print \"dielectric constant is\",round(epsilonr,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.16, Page number 294" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electronic polarizability is 3.29 *10**-40 Fm**2\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilon0=8.85*10**-12; #dielectric constant\n", + "Na=6.02*10**26; #number of atoms\n", + "epsilonr=3.75; #dielectric constant\n", + "M=32; #atomic mass\n", + "rho=2050; #density(kg/m**3)\n", + "gama=1/3; #internal field constant\n", + "\n", + "#Calculations\n", + "N=Na*rho/M; #number of atoms\n", + "alphae=((epsilonr-1)/(epsilonr+2))*(3*epsilon0/N); #electronic polarizability(Fm**2)\n", + "\n", + "#Result\n", + "print \"electronic polarizability is\",round(alphae*10**40,2),\"*10**-40 Fm**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.17, Page number 295" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ratio between electronic and ionic polarizability is 1.738\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilonr=4.94; #dielectric constant\n", + "n2=2.69;\n", + "\n", + "#Calculations\n", + "x=(epsilonr-1)/(epsilonr+2);\n", + "y=(n2-1)/(n2+2);\n", + "alpha=1/((x/y)-1); #ratio between electronic and ionic polarizability\n", + "\n", + "#Result\n", + "print \"ratio between electronic and ionic polarizability is\",round(alpha,3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 10.18, Page number 296" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "percentage of ionic polarizability is 51.4 %\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "epsilonr=5.6; #dielectric constant\n", + "n=1.5;\n", + "\n", + "#Calculations\n", + "x=(epsilonr+2)/(epsilonr-1);\n", + "y=(n**2-1)/(n**2+2);\n", + "alpha=(1-(x*y))*100; #percentage of ionic polarizability\n", + "\n", + "#Result\n", + "print \"percentage of ionic polarizability is\",round(alpha,1),\"%\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter11_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter11_1.ipynb new file mode 100644 index 00000000..a4448268 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter11_1.ipynb @@ -0,0 +1,417 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 11: Magnetic Properties" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.1, Page number 312" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "relative permeability is 318.3\n", + "susceptibility is 317.3\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "mew0=4*math.pi*10**-7;\n", + "B=0.2; #magnetic induction(web/m**2)\n", + "H=500; #magnetic field intensity(amp/m)\n", + "\n", + "#Calculation\n", + "mewr=B/(mew0*H); #relative permeability\n", + "chi=mewr-1; #susceptibility\n", + "\n", + "#Result\n", + "print \"relative permeability is\",round(mewr,1)\n", + "print \"susceptibility is\",round(chi,1)\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.2, Page number 312" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "relative permeability is 1.00000000948\n", + "absolute permeability is 1.257 *10**-6\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "mew0=4*math.pi*10**-7;\n", + "chi=948*10**-11; #susceptibility\n", + "\n", + "#Calculation\n", + "mewr=1+chi; #relative permeability\n", + "mew=mewr*mew0; #absolute permeability\n", + "\n", + "#Result\n", + "print \"relative permeability is\",mewr\n", + "print \"absolute permeability is\",round(mew*10**6,3),\"*10**-6\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.3, Page number 312" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "relative permeability is 2154\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "H=6.5*10**-4; #magnetizing force(amp/m)\n", + "M=1.4; #magnetic field(T)\n", + "\n", + "#Calculation\n", + "chi=M/H; \n", + "mewr=1+chi; #relative permeability\n", + "\n", + "#Result\n", + "print \"relative permeability is\",int(mewr)\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.4, Page number 312" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "relative permeability is 16\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "H=220; #magnetizing force(amp/m)\n", + "M=3300; #magnetic field(T)\n", + "\n", + "#Calculation\n", + "chi=(M/H)+1; #relative permeability\n", + "\n", + "#Result\n", + "print \"relative permeability is\",int(chi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.5, Page number 313" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "permeability of rod is 0.625 *10**-3 weber/amp.m\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "H=1600; #magnetizing force(amp/m)\n", + "phi=4*10**-4; #flux(weber)\n", + "A=4*10**-4; #area(m**2)\n", + "\n", + "#Calculation\n", + "B=phi/A;\n", + "mew=B/H; #permeability of rod(weber/amp.m)\n", + "\n", + "#Result\n", + "print \"permeability of rod is\",mew*10**3,\"*10**-3 weber/amp.m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.6, Page number 313" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "magnetisation of material is 1.5 *10**3 A/m\n", + "flux density is 1.259 T\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "H=10**6; #magnetizing force(amp/m)\n", + "mew0=4*math.pi*10**-7;\n", + "chi=1.5*10**-3; #susceptibility\n", + "\n", + "#Calculation\n", + "M=chi*H; #magnetisation of material(A/m)\n", + "B=mew0*(M+H); #flux density(T)\n", + "\n", + "#Result\n", + "print \"magnetisation of material is\",M/10**3,\"*10**3 A/m\"\n", + "print \"flux density is\",round(B,3),\"T\"\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.7, Page number 313" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "flux density is 2.0 *10**-2 weber/metre**2\n", + "magnetic intensity is 32 amp-turn/metre\n", + "permeability of ring is 6250.0 *10**-7 weber/amp-metre\n", + "relative permeability is 497.4\n", + "magnetic susceptibility is 496\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "mew0=4*math.pi*10**-7;\n", + "phi=2*10**-6; #flux(weber)\n", + "A=10**-4; #area(m**2)\n", + "N=300; #number of turns\n", + "l=30*10**-2; #length(m)\n", + "i=0.032; #current(ampere)\n", + "\n", + "#Calculation\n", + "B=phi/A; #flux density(weber/metre**2)\n", + "n=N/l;\n", + "H=n*i; #magnetic intensity(amp-turn/metre)\n", + "mew=B/H; #permeability of ring(weber/amp-metre)\n", + "mewr=mew/mew0; #relative permeability\n", + "chi=mewr-1; #magnetic susceptibility\n", + "\n", + "#Result\n", + "print \"flux density is\",B*10**2,\"*10**-2 weber/metre**2\"\n", + "print \"magnetic intensity is\",int(H),\"amp-turn/metre\"\n", + "print \"permeability of ring is\",mew*10**7,\"*10**-7 weber/amp-metre\"\n", + "print \"relative permeability is\",round(mewr,1)\n", + "print \"magnetic susceptibility is\",int(chi)\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.8, Page number 316" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "magnetic moment is 9.53 *10**-24 A-m**2\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "new=6.5*10**15; #frequency(Hz)\n", + "r=0.54*10**-10; #radius(m)\n", + "e=1.6*10**-19; #charge(coulomb)\n", + "\n", + "#Calculation\n", + "mew_m=e*new*math.pi*r**2; #magnetic moment(A-m**2)\n", + "\n", + "#Result\n", + "print \"magnetic moment is\",round(mew_m*10**24,2),\"*10**-24 A-m**2\"\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 11.9, Page number 317" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bohr's magneton is 9.29 *10**-24 J/T\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "e=1.6*10**-19; #charge(coulomb)\n", + "m=9.1*10**-31; #mass(kg)\n", + "h=6.64*10**-34; #plank's constant(Js)\n", + "\n", + "#Calculation\n", + "mewb=e*h/(4*math.pi*m); #bohr's magneton(J/T)\n", + "\n", + "#Result\n", + "print \"bohr's magneton is\",round(mewb*10**24,2),\"*10**-24 J/T\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter12_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter12_1.ipynb new file mode 100644 index 00000000..f764011f --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter12_1.ipynb @@ -0,0 +1,364 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 12: Lasers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.1, Page number 360" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy of photon is 1.96 eV\n", + "momentum of photon is 1.05 *10**-27 kg m/s\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "e=1.6*10**-19; #charge(coulomb)\n", + "c=3*10**8; #velocity of matter wave(m/s)\n", + "h=6.62*10**-34; #plank's constant(Js)\n", + "lamda=6328*10**-10; #wavelength(m)\n", + "\n", + "#Calculation\n", + "E=h*c/(lamda*e); #energy of photon(eV)\n", + "p=h/lamda; #momentum of photon(kg m/s)\n", + "\n", + "#Result\n", + "print \"energy of photon is\",round(E,2),\"eV\"\n", + "print \"momentum of photon is\",round(p*10**27,2),\"*10**-27 kg m/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.2, Page number 360" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy of laser pulse is 7.94 joule\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "c=3*10**8; #velocity of matter wave(m/s)\n", + "h=6.62*10**-34; #plank's constant(Js)\n", + "lamda=7000*10**-10; #wavelength(m)\n", + "n=2.8*10**19; #number of ions\n", + "\n", + "#Calculation\n", + "E=n*h*c/lamda; #energy of laser pulse(joule)\n", + "\n", + "#Result\n", + "print \"energy of laser pulse is\",round(E,2),\"joule\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.3, Page number 361" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of oscillations is 5 *10**4\n", + "coherence time is 9.82 *10**-11 s\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "c=3*10**8; #velocity of matter wave(m/s)\n", + "l=2.945*10**-2;\n", + "lamda=5890*10**-10; #wavelength(m)\n", + "\n", + "#Calculation\n", + "n=l/lamda; #number of oscillations\n", + "tow_c=l/c; #coherence time(s)\n", + "\n", + "#Result\n", + "print \"number of oscillations is\",int(n/10**4),\"*10**4\"\n", + "print \"coherence time is\",round(tow_c*10**11,2),\"*10**-11 s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.4, Page number 361" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "intensity of beam is 7.5 kW/m**2\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "P=10*10**-3; #power(W)\n", + "d=1.3*10**-3; #diameter(m)\n", + "\n", + "#Calculation\n", + "I=4*P/(math.pi*d**2); #intensity of beam(W/m**2)\n", + "\n", + "#Result\n", + "print \"intensity of beam is\",round(I/10**3,1),\"kW/m**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.5, Page number 361" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of ions is 3.49 *10**18\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "c=3*10**8; #velocity of matter wave(m/s)\n", + "h=6.62*10**-34; #plank's constant(Js)\n", + "lamda=6940*10**-10; #wavelength(m)\n", + "P=1; #power(J)\n", + "\n", + "#Calculation\n", + "n=P*lamda/(h*c); #number of ions\n", + "\n", + "#Result\n", + "print \"number of ions is\",round(n/10**18,2),\"*10**18\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.6, Page number 362" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "population ratio is e** -80\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "c=3*10**8; #velocity of matter wave(m/s)\n", + "h=6.62*10**-34; #plank's constant(Js)\n", + "lamda=6*10**-7; #wavelength(m)\n", + "e=1.6*10**-19; #charge(coulomb)\n", + "k=8.6*10**-5;\n", + "T=300; #temperature(K)\n", + "\n", + "#Calculation\n", + "E=h*c/(lamda*e); #energy(eV)\n", + "N=-E/(k*T); #population ratio\n", + "\n", + "#Result\n", + "print \"population ratio is e**\",int(N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.7, Page number 362" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coherence length is 11.36 km\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "lamda=10.66*10**-6; #wavelength(m)\n", + "delta_lamda=10**-5*10**-9; #line width(m)\n", + "\n", + "#Calculation\n", + "cl=lamda**2/delta_lamda; #coherence length(m)\n", + "\n", + "#Result\n", + "print \"coherence length is\",round(cl/10**3,2),\"km\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 12.8, Page number 362" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "areal speed is 0.117 *10**-8 m**2\n", + "intensity of image is 428.48 *10**5 watt/m**2\n", + "answer given in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "lamda=7000*10**-10; #wavelength(m)\n", + "d=5*10**-3; #aperture(m)\n", + "f=0.2; #focal length(m)\n", + "P=50*10**-3; #power(W)\n", + "\n", + "#Calculation\n", + "d_theta=1.22*lamda/d; #angular speed(radian)\n", + "A=(d_theta*f)**2; #areal speed(m**2)\n", + "I=P/A; #intensity of image(watt/m**2)\n", + "\n", + "#Result\n", + "print \"areal speed is\",round(A*10**8,3),\"*10**-8 m**2\"\n", + "print \"intensity of image is\",round(I/10**5,2),\"*10**5 watt/m**2\"\n", + "print \"answer given in the book is wrong\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter13_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter13_1.ipynb new file mode 100644 index 00000000..39a78620 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter13_1.ipynb @@ -0,0 +1,721 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 13: Fibre Optics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.1, Page number 375" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "numerical aperture is 0.24413\n", + "maximum entrance angle is 14.13 degrees\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "n1=1.5; #core refractive index\n", + "n2=1.48; #cladding refractive index\n", + "n=1;\n", + "\n", + "#Calculations\n", + "NA=math.sqrt(n1**2-n2**2); #numerical aperture\n", + "i0=math.asin(NA/n); #maximum entrance angle(radian)\n", + "i0=i0*180/math.pi; #maximum entrance angle(degrees)\n", + "\n", + "#Result\n", + "print \"numerical aperture is\",round(NA,5)\n", + "print \"maximum entrance angle is\",round(i0,2),\"degrees\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example number 13.2, Page number 376" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "core refractive index is 1.6025\n", + "acceptance angle is 8.6 degrees\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "n0=1.33; #water refractive index\n", + "n2=1.59; #cladding refractive index\n", + "NA=0.2; #numerical aperture\n", + "\n", + "#Calculations\n", + "n1=math.sqrt(NA**2+n2**2); #core refractive index \n", + "NA=math.sqrt(n1**2-n2**2)/n0; #numerical aperture\n", + "i0=math.asin(NA); #acceptance angle(radian)\n", + "i0=i0*180/math.pi; #acceptance angle(degrees)\n", + "\n", + "#Result\n", + "print \"core refractive index is\",round(n1,4)\n", + "print \"acceptance angle is\",round(i0,1),\"degrees\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.3, Page number 376" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "numerical aperture is 0.304\n", + "acceptance angle is 17.7 degrees\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "n1=1.36; #core refractive index\n", + "delta=0.025; #relative difference\n", + "\n", + "#Calculations\n", + "NA=n1*math.sqrt(2*delta); #numerical aperture\n", + "i0=math.asin(NA); #acceptance angle(radian)\n", + "i0=i0*180/math.pi; #acceptance angle(degrees)\n", + "\n", + "#Result\n", + "print \"numerical aperture is\",round(NA,3)\n", + "print \"acceptance angle is\",round(i0,1),\"degrees\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.4, Page number 376" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "numerical aperture is 0.3873\n", + "acceptance angle is 22.79 degrees\n", + "critical angle is 75.16 degrees\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "n1=1.5; #core refractive index\n", + "n2=1.45; #cladding refractive index\n", + "\n", + "#Calculations\n", + "delta=(n1-n2)/n1; #relative difference\n", + "NA=n1*math.sqrt(2*delta); #numerical aperture\n", + "i0=math.asin(NA); #acceptance angle(radian)\n", + "i0=i0*180/math.pi; #acceptance angle(degrees)\n", + "theta_c=math.asin(n2/n1); #critical angle(radian)\n", + "theta_c=theta_c*180/math.pi; #critical angle(degrees)\n", + "\n", + "#Result\n", + "print \"numerical aperture is\",round(NA,4)\n", + "print \"acceptance angle is\",round(i0,2),\"degrees\"\n", + "print \"critical angle is\",round(theta_c,2),\"degrees\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.5, Page number 377" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "core refractive index is 1.42\n", + "cladding refractive index is 1.407\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "NA=0.22; #numerical aperture\n", + "delta=0.012; #relative difference\n", + "\n", + "#Calculations\n", + "N=1-delta;\n", + "n1=math.sqrt(NA**2/(1-N**2)); #core refractive index\n", + "n2=N*n1; #cladding refractive index\n", + "\n", + "#Result\n", + "print \"core refractive index is\",round(n1,2)\n", + "print \"cladding refractive index is\",round(n2,3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.6, Page number 377" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "acceptance angle is 23.6 degrees\n", + "critical angle is 81.9 degrees\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "NA=0.40; #numerical aperture\n", + "delta=1/100; #relative difference\n", + "\n", + "#Calculations\n", + "i0=math.asin(NA); #acceptance angle(radians)\n", + "i0=i0*180/math.pi; #acceptance angle(degrees)\n", + "N=1-delta;\n", + "thetac=math.asin(N); #critical angle(radians)\n", + "thetac=thetac*180/math.pi; #critical angle(degrees)\n", + "\n", + "#Result\n", + "print \"acceptance angle is\",round(i0,1),\"degrees\"\n", + "print \"critical angle is\",round(thetac,1),\"degrees\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.7, Page number 378" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "core refractive index is 1.5\n", + "cladding refractive index is 1.3\n", + "numerical aperture is 0.75\n", + "answer for numerical aperture varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "vf=3*10**8; #velocity of light in free space(m/s)\n", + "vc=2*10**8; #velocity of light in core(m/s)\n", + "thetac=60*math.pi/180; #critical angle(radians)\n", + "\n", + "#Calculations\n", + "n1=vf/vc; #core refractive index\n", + "n2=n1*math.sin(thetac); #cladding refractive index\n", + "NA=math.sqrt(n1**2-n2**2); #numerical aperture\n", + "\n", + "#Result\n", + "print \"core refractive index is\",n1\n", + "print \"cladding refractive index is\",round(n2,1)\n", + "print \"numerical aperture is\",NA\n", + "print \"answer for numerical aperture varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.8, Page number 378" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "numerical aperture is 0.3905\n", + "acceptance angle is 23.0 degrees\n", + "critical angle is 75.4 degrees\n", + "number of reflections per metre is 5206\n", + "answer for number of reflections in the textbook is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "n1=1.55; #core refractive index\n", + "n2=1.50; #cladding refractive index\n", + "d=50*10**-6; #core diameter(micro m)\n", + "\n", + "#Calculations\n", + "NA=math.sqrt(n1**2-n2**2); #numerical aperture\n", + "i0=math.asin(NA); #acceptance angle(radians)\n", + "i0=i0*180/math.pi; #acceptance angle(degrees)\n", + "thetac=math.asin(n2/n1); #critical angle(radians)\n", + "theta_c=thetac*180/math.pi; #critical angle(degrees)\n", + "x=d*math.tan(thetac);\n", + "n=1/x; #number of reflections per metre \n", + "\n", + "#Result\n", + "print \"numerical aperture is\",round(NA,4)\n", + "print \"acceptance angle is\",round(i0),\"degrees\"\n", + "print \"critical angle is\",round(theta_c,1),\"degrees\"\n", + "print \"number of reflections per metre is\",int(n)\n", + "print \"answer for number of reflections in the textbook is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.9, Page number 379" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "numerical aperture is 0.375\n", + "critical angle is 75.93 degrees\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "delta=0.03; #relative difference\n", + "i0=22*math.pi/180; #acceptance angle(radians)\n", + "\n", + "#Calculations\n", + "NA=math.sin(i0); #numerical aperture\n", + "N=1-delta;\n", + "thetac=math.asin(N); #critical angle(radians)\n", + "theta_c=thetac*180/math.pi; #critical angle(degrees)\n", + "\n", + "#Result\n", + "print \"numerical aperture is\",round(NA,3)\n", + "print \"critical angle is\",round(theta_c,2),\"degrees\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.10, Page number 379" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "velocity of light in fibre core is 2.48 *10**8 m/s\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "delta=0.0045; #relative difference\n", + "i0=0.115; #acceptance angle(radians)\n", + "v=3*10**8; #velocity of light(m/s)\n", + "\n", + "#Calculations\n", + "NA=math.sin(i0); #numerical aperture\n", + "n1=NA/math.sqrt(2*delta); #core refractive index\n", + "vcore=v/n1; #velocity of light in fibre core(m/s)\n", + "\n", + "#Result\n", + "print \"velocity of light in fibre core is\",round(vcore/10**8,3),\"*10**8 m/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.11, Page number 381" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "diameter of core is 3.79 *10**-6 m\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "V=2.405; #V-number\n", + "lamda=8500*10**-10; #wavelength(m)\n", + "n1=1.48; #core refractive index\n", + "n2=1.47; #cladding refractive index\n", + "\n", + "#Calculations\n", + "d=V*lamda/(math.pi*math.sqrt(n1**2-n2**2)); #diameter of core(m)\n", + "\n", + "#Result\n", + "print \"diameter of core is\",round(d*10**6,2),\"*10**-6 m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.12, Page number 381" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum radius for fibre is 3.76 micro m\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "V=2.405; #V-number\n", + "lamda=1300*10**-3; #wavelength(micro m)\n", + "n1=1.466; #core refractive index\n", + "n2=1.46; #cladding refractive index\n", + "\n", + "#Calculations\n", + "r=V*lamda/(2*math.pi*math.sqrt(n1**2-n2**2)); #maximum radius for fibre(micro m)\n", + "\n", + "#Result\n", + "print \"maximum radius for fibre is\",round(r,2),\"micro m\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.13, Page number 381" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "diameter of fibre core is 91.5 micro m\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "lamda=1.3; #wavelength(micro m)\n", + "n1=1.5; #core refractive index\n", + "Nm=1100; #number of modes\n", + "delta=0.01; #refractive index difference\n", + "\n", + "#Calculations\n", + "d=lamda*math.sqrt(Nm/delta)/(math.pi*n1); #diameter of fibre core(micro m)\n", + "\n", + "#Result\n", + "print \"diameter of fibre core is\",round(d,1),\"micro m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.14, Page number 382" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of guided modes is 459.0\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "lamda=1.1*10**-6; #wavelength(m)\n", + "r=60/2*10**-6; #radius(m)\n", + "NA=0.25; #numerical aperture\n", + "\n", + "#Calculations\n", + "V=2*math.pi*r*NA/lamda; \n", + "Nm=V**2/4; #number of guided modes\n", + "\n", + "#Result\n", + "print \"number of guided modes is\",round(Nm)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.15, Page number 387" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fibre loss is 12.0412 dB/km\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "L=500/1000; #length(km)\n", + "P0byPi=25/100; #optical power\n", + "\n", + "#Calculations\n", + "dB=-10*math.log10(P0byPi)/L; #fibre loss(dB/km)\n", + "\n", + "#Result\n", + "print \"fibre loss is\",round(dB,4),\"dB/km\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 13.16, Page number 387" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "output power is 2.005 micro W\n", + "answer given in the textbook is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "L=10; #length(km)\n", + "dB=2.3; #fibre loss(dB/km)\n", + "Pi=400; #input power(micro W)\n", + "\n", + "#Calculations\n", + "P0=10**(-dB*L/10)*Pi; #output power(micro W)\n", + "\n", + "#Result\n", + "print \"output power is\",round(P0,3),\"micro W\"\n", + "print \"answer given in the textbook is wrong\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter14_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter14_1.ipynb new file mode 100644 index 00000000..c2a5b523 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter14_1.ipynb @@ -0,0 +1,226 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 14: Acoustics of Buildings and Acoustic Quieting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 14.1, Page number 399" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total absorption in hall is 825.0 OWU\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "V=7500; #volume(m**3)\n", + "T=1.5; #time(sec)\n", + "\n", + "#Calculations\n", + "aS=0.165*V/T; #total absorption in hall(OWU)\n", + "\n", + "#Result\n", + "print \"total absorption in hall is\",aS,\"OWU\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 14.2, Page number 399" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reverberation time when hall is empty is 2.08 sec\n", + "reverberation time with full capacity of audience is 0.362 sec\n", + "reverberation time with audience in cushioned chairs is 0.42 sec\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "V=1500; #volume(m**3)\n", + "A1=112; #area of plastered walls(m**2)\n", + "A2=130; #area of wooden floor(m**2)\n", + "A3=170; #area of plastered ceiling(m**2)\n", + "A4=20; #area of wooden door(m**2)\n", + "n=100; #number of cushioned chairs\n", + "A5=120; #area of audience(m**2)\n", + "C1=0.03; #coefficient of absorption in plastered walls\n", + "C2=0.06; #coefficient of absorption in wooden floor\n", + "C3=0.04; #coefficient of absorption in plastered ceiling\n", + "C4=0.06; #coefficient of absorption in wooden door\n", + "C5=1.0; #coefficient of absorption in cushioned chairs\n", + "C6=4.7; #coefficient of absorption in audience\n", + "\n", + "#Calculations\n", + "a1=A1*C1; #absorption due to plastered walls\n", + "a2=A2*C2; #absorption due to wooden floor\n", + "a3=A3*C3; #absorption due to plastered ceiling\n", + "a4=A4*C4; #absorption due to wooden door\n", + "a5=n*C5; #absorption due to cushioned chairs\n", + "a6=A5*C6; #absorption due to audience \n", + "aS=a1+a2+a3+a4+a5; #total absorption in hall\n", + "T1=0.165*V/aS; #reverberation time when hall is empty(sec)\n", + "T2=0.165*V/(aS+a6); #reverberation time with full capacity of audience(sec)\n", + "T3=0.165*V/((n*C6)+aS); #reverberation time with audience in cushioned chairs(sec)\n", + "\n", + "#Result\n", + "print \"reverberation time when hall is empty is\",round(T1,2),\"sec\"\n", + "print \"reverberation time with full capacity of audience is\",round(T2,3),\"sec\"\n", + "print \"reverberation time with audience in cushioned chairs is\",round(T3,2),\"sec\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 14.3, Page number 401" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "average sound absorption coefficient is 0.24\n", + "reverberation time is 1.8 sec\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "V=1200; #volume(m**3)\n", + "a1=220; #area of wall(m**2)\n", + "a2=120; #area of floor(m**2)\n", + "a3=120; #area of ceiling(m**2)\n", + "C1=0.03; #coefficient of absorption in wall\n", + "C2=0.80; #coefficient of absorption in floor\n", + "C3=0.06; #coefficient of absorption in ceiling\n", + "\n", + "#Calculations\n", + "A1=a1*C1; #absorption due to plastered walls\n", + "A2=a2*C2; #absorption due to wooden floor\n", + "A3=a3*C3; #absorption due to plastered ceiling\n", + "aS=a1+a2+a3; #total absorption in hall\n", + "abar=(A1+A2+A3)/aS; #average sound absorption coefficient\n", + "AS=abar*aS; #total absorption of room(metric sabines)\n", + "T=0.165*V/AS; #reverberation time(sec)\n", + "\n", + "#Result\n", + "print \"average sound absorption coefficient is\",round(abar,2)\n", + "print \"reverberation time is\",round(T,1),\"sec\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 14.4, Page number 401" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "acoustic power is 1.4e-06 watt\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "I0=10**-12; #standard intensity level(watt/m**2)\n", + "A=1.4; #area(m**2)\n", + "il=60; #intensity level(decibels)\n", + "\n", + "#Calculations\n", + "x=10**(il/10);\n", + "I=x*10**-12; #intensity level(watt/m**2)\n", + "Ap=I*A; #acoustic power(watt)\n", + "\n", + "#Result\n", + "print \"acoustic power is\",Ap,\"watt\"\n", + "print \"answer in the book is wrong\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter1_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter1_1.ipynb new file mode 100644 index 00000000..f898a33e --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter1_1.ipynb @@ -0,0 +1,164 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1: Bonding in Solids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 1.1, Page number 10" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "potential energy is -3.981 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "e=1.6*10**-19; #charge(coulomb)\n", + "x=9*10**9; \n", + "r0=2.81*10**-10; #equilibrium distance(m)\n", + "A=1.748; #madelung constant\n", + "n=9; #repulsive exponent value\n", + "\n", + "#Calculations\n", + "U0=-(x*A*e/r0)*(1-1/n); #potential energy(eV)\n", + "\n", + "#Result\n", + "print \"potential energy is\",round(U0/2,3),\"eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 1.2, Page number 10" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ionic cohesive energy is -6.45 eV\n", + "atomic cohesive energy is -6.17 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "e=1.6*10**-19; #charge(coulomb)\n", + "x=9*10**9; \n", + "r0=3.56*10**-10; #equilibrium distance(m)\n", + "A=1.763; #madelung constant\n", + "n=10.5; #repulsive exponent value\n", + "IE=3.89; #ionisation energy(eV)\n", + "EA=-3.61; #electron affinity(eV)\n", + "\n", + "#Calculations\n", + "U0=-(x*A*e/r0)*(1-1/n); #ionic cohesive energy(eV)\n", + "U=U0+IE+EA; #atomic cohesive energy(eV)\n", + "\n", + "#Result\n", + "print \"ionic cohesive energy is\",round(U0,2),\"eV\"\n", + "print \"atomic cohesive energy is\",round(U,2),\"eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 1.3, Page number 11" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "binding energy is 669 *10**3 kJ/kmol\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "N=6.02*10**26; #Avagadro Number\n", + "e=1.6*10**-19; #charge(coulomb)\n", + "x=9*10**9; \n", + "r0=0.324*10**-9; #equilibrium distance(m)\n", + "A=1.748; #madelung constant\n", + "n=9.5; #repulsive exponent value\n", + "\n", + "#Calculations\n", + "U0=(A*e*x/r0)*(1-1/n); \n", + "U=round(U0,2)*N*e*10**-3; #binding energy(kJ/kmol)\n", + "\n", + "#Result\n", + "print \"binding energy is\",int(U/10**3),\"*10**3 kJ/kmol\"\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter2_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter2_1.ipynb new file mode 100644 index 00000000..72d3a4a5 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter2_1.ipynb @@ -0,0 +1,1256 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2: Crystal Structure " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.1, Page number 27" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "volume density is 1249.04 kg/m**3\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "M=28; #atomic weight of Si\n", + "N=6.023*10**23; #avagadro number\n", + "a=5.3*10**-10; #lattice constant(m)\n", + "n=4;\n", + "\n", + "#Calculations\n", + "V=a**3; #volume(m**3)\n", + "m=M/(N*10**3); #mass(kg)\n", + "rho=n*m/V; #volume density(kg/m**3)\n", + "\n", + "#Result\n", + "print \"volume density is\",round(rho,2),\"kg/m**3\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.2, Page number 27" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of atoms per unit cell is 2\n", + "the lattice is BCC\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "M=55.85; #atomic weight\n", + "N=6.023*10**23; #avagadro number\n", + "a=2.9*10**-8; #lattice constant(m)\n", + "rho=7.87; #volume density(gm/cc)\n", + "\n", + "#Calculations\n", + "n=rho*N*a**3/M; #number of atoms per unit cell\n", + "\n", + "#Result\n", + "print \"number of atoms per unit cell is\",int(n)\n", + "print \"the lattice is BCC\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.3, Page number 28" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of unit cells is 5.019 *10**22\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "M=120; #atomic mass\n", + "N=6.023*10**23; #avagadro number\n", + "n=2;\n", + "g=20; #mass(gm)\n", + "\n", + "#Calculations\n", + "u=n*M/N; \n", + "nu=g/u; #number of unit cells\n", + "\n", + "#Result\n", + "print \"number of unit cells is\",round(nu/10**22,3),\"*10**22\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.4, Page number 33" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "miller indices are ( 2 1 0 )\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "from fractions import gcd\n", + "\n", + "#Variable declaration\n", + "a=1;\n", + "b=2;\n", + "c=float(\"inf\"); #intercepts\n", + "\n", + "#Calculation\n", + "lcm=a*b/gcd(a,b);\n", + "h=int(lcm/a);\n", + "k=int(lcm/b);\n", + "l=int(lcm/c); #miller indices\n", + "\n", + "#Result\n", + "print \"miller indices are (\",h,k,l,\")\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.5, Page number 33" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "miller indices are ( 3 2 1 )\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "from fractions import gcd\n", + "\n", + "#Variable declaration\n", + "a=2;\n", + "b=3;\n", + "c=6; #intercepts\n", + "\n", + "#Calculation\n", + "lcm_ab=a*b/gcd(a,b); #lcm of a and b\n", + "lcm=lcm_ab*c/gcd(lcm_ab,c); #lcm of a,b and c\n", + "h=int(lcm/a);\n", + "k=int(lcm/b);\n", + "l=int(lcm/c); #miller indices\n", + "\n", + "#Result\n", + "print \"miller indices are (\",h,k,l,\")\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.6, Page number 33" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "miller indices are ( 3 4 0 )\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "from fractions import gcd\n", + "\n", + "#Variable declaration\n", + "a=4;\n", + "b=3;\n", + "c=float(\"inf\"); #intercepts\n", + "\n", + "#Calculation\n", + "lcm=a*b/gcd(a,b);\n", + "h=int(lcm/a);\n", + "k=int(lcm/b);\n", + "l=int(lcm/c); #miller indices\n", + "\n", + "#Result\n", + "print \"miller indices are (\",h,k,l,\")\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.7, Page number 33" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ratio of intercepts is 6 -2 3\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "from fractions import gcd\n", + "\n", + "#Variable declaration\n", + "h=1;\n", + "k=-3;\n", + "l=2; #miller indices\n", + "\n", + "#Calculation\n", + "lcm_hk=h*k/gcd(h,k); #lcm of h and k\n", + "lcm=lcm_hk*l/gcd(lcm_hk,l); #lcm of h,k and l\n", + "l1=int(lcm/h);\n", + "l2=int(lcm/k);\n", + "l3=int(lcm/l); #intercepts\n", + "\n", + "#Result\n", + "print \"ratio of intercepts is\",l1,l2,l3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.8, Page number 34" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "intercept on Y axis is 1.2 angstrom\n", + "intercept on Z axis is 4.0 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "a=1.2;\n", + "b=1.8;\n", + "c=2.0; #crystal primitives\n", + "x=2;\n", + "y=3;\n", + "z=1; #intercepts \n", + "h=1.2; #intercept on X axis\n", + "\n", + "#Calculations\n", + "h1=a/x;\n", + "k1=b/y;\n", + "l1=c/z;\n", + "k=h*h1/k1; #intercept on Y axis\n", + "l=h*l1/h1; #intercept on Z-axis\n", + "\n", + "#Result\n", + "print \"intercept on Y axis is\",k,\"angstrom\"\n", + "print \"intercept on Z axis is\",l,\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.9, Page number 39" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interplanar spacing in 1st plane is 1.762 angstrom\n", + "interplanar spacing in 2nd plane is 1.246 angstrom\n", + "interplanar spacing in 3rd plane is 2.0347 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "r=1.246; #atomic radius(angstrom)\n", + "h1=2; #intercept on X axis\n", + "k1=0; #intercept on Y axis\n", + "l1=0; #intercept on Z-axis\n", + "h2=2; #intercept on X axis\n", + "k2=2; #intercept on Y axis\n", + "l2=0; #intercept on Z-axis\n", + "h3=1; #intercept on X axis\n", + "k3=1; #intercept on Y axis\n", + "l3=1; #intercept on Z-axis\n", + "\n", + "#Calculations\n", + "a=2*math.sqrt(2)*r; #lattice constant\n", + "d1=a/math.sqrt(h1**2+k1**2+l1**2); #interplanar spacing in 1st plane(angstrom)\n", + "d2=a/math.sqrt(h2**2+k2**2+l2**2); #interplanar spacing in 2nd plane(angstrom)\n", + "d3=a/math.sqrt(h3**2+k3**2+l3**2); #interplanar spacing in 3rd plane(angstrom)\n", + "\n", + "#Result\n", + "print \"interplanar spacing in 1st plane is\",round(d1,3),\"angstrom\"\n", + "print \"interplanar spacing in 2nd plane is\",d2,\"angstrom\"\n", + "print \"interplanar spacing in 3rd plane is\",round(d3,4),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.10, Page number 39" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interplanar spacing in 1st plane is a/math.sqrt( 2 ) angstrom\n", + "interplanar spacing in 2nd plane is a/math.sqrt( 2 ) angstrom\n", + "interplanar spacing in 3rd plane is a/math.sqrt( 6 ) angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h1=0; #intercept on X axis\n", + "k1=1; #intercept on Y axis\n", + "l1=1; #intercept on Z-axis\n", + "h2=1; #intercept on X axis\n", + "k2=0; #intercept on Y axis\n", + "l2=1; #intercept on Z-axis\n", + "h3=1; #intercept on X axis\n", + "k3=1; #intercept on Y axis\n", + "l3=2; #intercept on Z-axis\n", + "\n", + "#Calculations\n", + "d1=h1**2+k1**2+l1**2; #interplanar spacing in 1st plane(angstrom)\n", + "d2=h2**2+k2**2+l2**2; #interplanar spacing in 2nd plane(angstrom)\n", + "d3=h3**2+k3**2+l3**2; #interplanar spacing in 3rd plane(angstrom)\n", + "\n", + "#Result\n", + "print \"interplanar spacing in 1st plane is a/math.sqrt(\",d1,\") angstrom\"\n", + "print \"interplanar spacing in 2nd plane is a/math.sqrt(\",d2,\") angstrom\"\n", + "print \"interplanar spacing in 3rd plane is a/math.sqrt(\",d3,\") angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.11, Page number 40" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interplanar spacing is 1.12 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "a=4.2; #lattice constant(angstrom)\n", + "h=3; #intercept on X axis\n", + "k=2; #intercept on Y axis\n", + "l=1; #intercept on Z-axis\n", + "\n", + "#Calculations\n", + "d=a/math.sqrt(h**2+k**2+l**2); #interplanar spacing(angstrom)\n", + "\n", + "#Result\n", + "print \"interplanar spacing is\",round(d,2),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.12, Page number 40" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "miller indices in 1st case are ( 1 1 1 )\n", + "miller indices in 2nd case are ( 3 2 1 )\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "from fractions import gcd\n", + "\n", + "#Variable declaration\n", + "a1=1;\n", + "b1=1;\n", + "c1=1; #intercepts in 1st case\n", + "a2=2;\n", + "b2=3;\n", + "c2=6; #intercepts in 2nd case\n", + "\n", + "#Calculation\n", + "lcm_a1b1=a1*b1/gcd(a1,b1); #lcm of a1 and b1\n", + "lcm1=lcm_ab*c1/gcd(lcm_a1b1,c1); #lcm of a1,b1 and c1\n", + "h1=int(lcm1/a1);\n", + "k1=int(lcm1/b1);\n", + "l1=int(lcm1/c1); #miller indices in 1st case\n", + "lcm_a2b2=a2*b2/gcd(a2,b2); #lcm of a2 and b2\n", + "lcm2=lcm_a2b2*c2/gcd(lcm_a2b2,c2); #lcm of a2,b2 and c2\n", + "h2=int(lcm2/a2);\n", + "k2=int(lcm2/b2);\n", + "l2=int(lcm2/c2); #miller indices in 2nd case\n", + "\n", + "#Result\n", + "print \"miller indices in 1st case are (\",h1,k1,l1,\")\"\n", + "print \"miller indices in 2nd case are (\",h2,k2,l2,\")\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.14, Page number 47" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "density of crystal is 8.929 gm/cm**3\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "M=63.5; #atomic weight(gm/mol)\n", + "N=6.023*10**23; #avagadro number\n", + "r=1.278*10**-8; #atomic radius(cm)\n", + "n=4;\n", + "\n", + "#Calculations\n", + "m=M/N; #mass(g)\n", + "a=4*r/math.sqrt(2); #lattice constant(cm)\n", + "V=a**3; #volume(m**3)\n", + "rho=n*m/V; #density of crystal(g/cm**3)\n", + "\n", + "#Result\n", + "print \"density of crystal is\",round(rho,3),\"gm/cm**3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.15, Page number 47" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimum radius is 0.155 r\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "r=1; #assume\n", + "\n", + "#Calculations\n", + "a=4*r/math.sqrt(3); #lattice constant\n", + "R=(a-(2*r))/2; #minimum radius \n", + "\n", + "#Result\"\n", + "print \"minimum radius is\",round(R,3),\"r\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.16, Page number 48" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum radius is 0.414 r\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "r=1; #assume\n", + "\n", + "#Calculations\n", + "a=4*r/math.sqrt(2); #lattice constant\n", + "R=(a/2)-r; #maximum radius \n", + "\n", + "#Result\"\n", + "print \"maximum radius is\",round(R,3),\"r\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.17, Page number 48" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "percent volume change is 0.5 %\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "r1=1.258*10**-10; #atomic radius(m)\n", + "r2=1.292*10**-10; #atomic radius(m)\n", + "n1=2;\n", + "n2=4;\n", + "\n", + "#Calculations\n", + "a1=4*r1/math.sqrt(3); #lattice constant(m)\n", + "V1=a1**3/n1; #volume(m**3)\n", + "a2=2*math.sqrt(2)*r2; #lattice constant(m)\n", + "V2=a2**3/n2; #volume(m**3)\n", + "V=(V1-V2)*100/V1; #percent volume change\n", + "\n", + "#Result\"\n", + "print \"percent volume change is\",round(V,1),\"%\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.18, Page number 51" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of atoms is 1.77 *10**29\n", + "density of diamond is 3535.7 kg/m**3\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "a=0.356*10**-9; #cube edge(m)\n", + "M=12.01; #atomic weight\n", + "N=6.023*10**26; #avagadro number\n", + "\n", + "#Calculations\n", + "n=8/a**3; #number of atoms\n", + "m=M/N; #mass(kg)\n", + "rho=m*n; #density of diamond(kg/m**3)\n", + "\n", + "#Result\"\n", + "print \"number of atoms is\",round(n/10**29,2),\"*10**29\"\n", + "print \"density of diamond is\",round(rho,1),\"kg/m**3\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.19, Page number 54 Theoritical" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.20, Page number 55" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "volume of unit cell is 9.356 *10**-29 m**3\n", + "density of zinc is 6960 kg/m**3\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "a=0.27*10**-9; #lattice constant(m)\n", + "c=0.494*10**-9; #height of cell(m)\n", + "M=65.37; #atomic weight\n", + "N=6.023*10**26; #avagadro number\n", + "n=6; #number of atoms\n", + "\n", + "#Calculations\n", + "V=3*math.sqrt(3)*a**2*c/2; #volume of unit cell(m**3)\n", + "rho=n*M/(N*V); #density of zinc(kg/m**3)\n", + "\n", + "#Result\"\n", + "print \"volume of unit cell is\",round(V*10**29,3),\"*10**-29 m**3\"\n", + "print \"density of zinc is\",int(rho),\"kg/m**3\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.21, Page number 57" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "density of Si is 2.33 gm/cm**3\n", + "density of GaAs is 5.324 gm/cm**3\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "a1=5.43*10**-8; #lattice constant(cm)\n", + "M1=28.1; #atomic weight\n", + "N=6.023*10**23; #avagadro number\n", + "n1=8; #number of atoms\n", + "a2=5.65*10**-8; #lattice constant(cm)\n", + "M2=144.6; #atomic weight\n", + "n2=4; #number of atoms\n", + "\n", + "#Calculations\n", + "rho1=n1*M1/(N*a1**3); #density of Si(gm/cm**3)\n", + "rho2=n2*M2/(N*a2**3); #density of GaAs(gm/cm**3)\n", + "\n", + "#Result\"\n", + "print \"density of Si is\",round(rho1,2),\"gm/cm**3\"\n", + "print \"density of GaAs is\",round(rho2,3),\"gm/cm**3\"\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.22, Page number 58" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lattice constant is 4 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "rho=6250; #density(kg/m**3)\n", + "M=60.2; #molecular weight\n", + "N=6.02*10**26; #avagadro number\n", + "n=4; #number of atoms\n", + "\n", + "#Calculations\n", + "a=(n*M/(rho*N))**(1/3); #lattice constant(m)\n", + "\n", + "#Result\n", + "print \"lattice constant is\",int(a*10**10),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.23, Page number 58" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "density of copper is 8938 kg/m**3\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "r=1.278*10**-8; #atomic radius(cm)\n", + "M=63.54; #molecular weight\n", + "N=6.02*10**23; #avagadro number\n", + "n=4; #number of atoms\n", + "\n", + "#Calculations\n", + "a=4*r/math.sqrt(2); #lattice constant(cm)\n", + "rho=n*M*10**3/(N*a**3); #density(kg/m**3)\n", + "\n", + "#Result\n", + "print \"density of copper is\",int(rho),\"kg/m**3\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.24, Page number 58" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lattice constant is 2.867 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=7870; #density(kg/m**3)\n", + "M=55.8; #molecular weight\n", + "N=6.02*10**26; #avagadro number\n", + "n=2; #number of atoms\n", + "\n", + "#Calculations\n", + "a=(n*M/(rho*N))**(1/3); #lattice constant(m)\n", + "\n", + "#Result\n", + "print \"lattice constant is\",round(a*10**10,3),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.25, Page number 59" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "radius of atom is 1.414 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=6.23; #density(gm/cc)\n", + "M=60; #molecular weight\n", + "N=6.023*10**23; #avagadro number\n", + "n=4; #number of atoms\n", + "\n", + "#Calculations\n", + "a=(n*M/(rho*N))**(1/3); #lattice constant(cm)\n", + "r=a*math.sqrt(2)*10**8/4; #radius of atom(angstrom)\n", + "\n", + "#Result\n", + "print \"radius of atom is\",round(r,3),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.26, Page number 59" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "distance between ions is 3.8 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=2.48; #density(gm/cc)\n", + "M=58; #molecular weight\n", + "N=6.023*10**23; #avagadro number\n", + "n=4; #number of atoms\n", + "\n", + "#Calculations\n", + "a=(n*M/(rho*N))**(1/3); #lattice constant(cm)\n", + "r=a*math.sqrt(2)*10**8/4; #radius of atom(angstrom)\n", + "d=2*r; #distance between ions(angstrom)\n", + "\n", + "#Result\n", + "print \"distance between ions is\",round(d,1),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.27, Page number 59" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "distance between ions is 2.55 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=8.96; #density(gm/cc)\n", + "M=63.5; #molecular weight\n", + "N=6.02*10**23; #avagadro number\n", + "n=4; #number of atoms\n", + "\n", + "#Calculations\n", + "a=(n*M/(rho*N))**(1/3); #lattice constant(cm)\n", + "d=a/math.sqrt(2)*10**8; #distance between ions(angstrom)\n", + "\n", + "#Result\n", + "print \"distance between ions is\",round(d,2),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.28, Page number 60" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "packing factor is 0.68\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=5.96; #density(gm/cc)\n", + "M=50; #molecular weight\n", + "N=6.023*10**23; #avagadro number\n", + "n=2; #number of atoms\n", + "\n", + "#Calculations\n", + "a=(n*M/(rho*N))**(1/3); #lattice constant(cm)\n", + "r=a*math.sqrt(3)/4; #radius of atom(angstrom)\n", + "pf=n*(4/3)*math.pi*r**3/a**3; #packing factor\n", + "\n", + "#Result\n", + "print \"packing factor is\",round(pf,2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.29, Page number 61" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "packing fraction is 68 %\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "a=1; #assume\n", + "n=2; #number of atoms\n", + "\n", + "#Calculations\n", + "r=a*math.sqrt(3)/4; #radius of atom\n", + "V=4*math.pi*r**3/3; #volume\n", + "f=n*V*100/a**3; #packing fraction\n", + "\n", + "#Result\n", + "print \"packing fraction is\",int(f),\"%\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 2.30, Page number 61" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lattice constant is 3.22 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "Vd=3*10**22; #density(gm/cc)\n", + "n=8*(1/8); #number of atoms\n", + "\n", + "#Calculations\n", + "a=(n/Vd)**(1/3); #lattice constant(cm)\n", + "\n", + "#Result\n", + "print \"lattice constant is\",round(a*10**8,2),\"angstrom\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter3_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter3_1.ipynb new file mode 100644 index 00000000..e3374bfe --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter3_1.ipynb @@ -0,0 +1,655 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3: X-ray Diffraction" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example number 3.1, Page number 80" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength is 0.97938 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "d=2.82*10**-10; #lattice spacing(m)\n", + "theta=10; #glancing angle(degree)\n", + "n=1; #order\n", + "\n", + "#Calculation\n", + "theta=theta*math.pi/180; #angle(radian)\n", + "lamda=2*d*math.sin(theta)/n; #wavelength(m)\n", + "\n", + "#Result\n", + "print \"wavelength is\",round(lamda*10**10,5),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.2, Page number 80" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength is 1.262 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "d=3.035*10**-10; #lattice spacing(m)\n", + "theta=12; #glancing angle(degree)\n", + "n=1; #order\n", + "\n", + "#Calculation\n", + "theta=theta*math.pi/180; #angle(radian)\n", + "lamda=2*d*math.sin(theta)/n; #wavelength(m)\n", + "\n", + "#Result\n", + "print \"wavelength is\",round(lamda*10**10,3),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.3, Page number 81" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelengths are 1.464 angstrom and 1.6525 angstrom\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "d=2.81; #lattice spacing(angstrom)\n", + "theta1=15.1; #glancing angle(degree)\n", + "theta2=17.1; #glancing angle(degree)\n", + "\n", + "#Calculation\n", + "theta1=theta1*math.pi/180; #angle(radian)\n", + "lamda1=2*d*math.sin(theta1); #wavelength(angstrom)\n", + "theta2=theta2*math.pi/180; #angle(radian)\n", + "lamda2=2*d*math.sin(theta2); #wavelength(angstrom)\n", + "\n", + "#Result\n", + "print \"wavelengths are\",round(lamda1,3),\"angstrom and\",round(lamda2,4),\"angstrom\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.4, Page number 81" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "separation between lattice planes is 4.035 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "lamda=1.54; #wavelength(angstrom)\n", + "theta=11; #glancing angle(degree)\n", + "\n", + "#Calculation\n", + "theta=theta*math.pi/180; #angle(radian)\n", + "d=lamda/(2*math.sin(theta)); #separation between lattice planes(angstrom)\n", + "\n", + "#Result\n", + "print \"separation between lattice planes is\",round(d,3),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.5, Page number 81" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength is 1.84 angstrom\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "lamdaB=0.92; #wavelength(angstrom)\n", + "theta1=30; #glancing angle(degree)\n", + "theta2=60; #glancing angle(degree)\n", + "\n", + "#Calculation\n", + "theta1=theta1*math.pi/180; #angle(radian)\n", + "theta2=theta2*math.pi/180; #angle(radian)\n", + "lamdaA=2*lamdaB*math.sin(theta1)/math.sin(theta1); #wavelength of line A(angstrom)\n", + "\n", + "#Result\n", + "print \"wavelength is\",lamdaA,\"angstrom\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.6, Page number 81" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "debroglie wavelength is 0.7406 *10**-10 metre\n", + "velocity is 9.793 *10**6 m/sec\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "d=0.4086*10**-10; #lattice spacing(m)\n", + "theta=65; #glancing angle(degree)\n", + "h=6.6*10**-34; #plank's constant(Js)\n", + "m=9.1*10**-31; #mass(kg)\n", + "n=1;\n", + "\n", + "#Calculation\n", + "theta=theta*math.pi/180; #angle(radian)\n", + "lamda=2*d*math.sin(theta)/n; #debroglie wavelength(m)\n", + "v=h/(m*lamda); #velocity(m/sec)\n", + "\n", + "#Result\n", + "print \"debroglie wavelength is\",round(lamda*10**10,4),\"*10**-10 metre\"\n", + "print \"velocity is\",round(v/10**6,3),\"*10**6 m/sec\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.7, Page number 82" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "longest wavelength is 5.64 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "d=2.82*10**-10; #lattice spacing(m)\n", + "sintheta=1; \n", + "n=1;\n", + "\n", + "#Calculation\n", + "lamda_max=2*d*sintheta/n; #longest wavelength(m)\n", + "\n", + "#Result\n", + "print \"longest wavelength is\",lamda_max*10**10,\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.8, Page number 82" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "glancing angle is 26.599 degree\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "d=0.842*10**-10; #lattice spacing(m)\n", + "theta1=8+(35/60); #glancing angle(degree)\n", + "n1=1; #order\n", + "n2=3; #order\n", + "\n", + "#Calculation\n", + "theta1=theta1*math.pi/180; #angle(radian)\n", + "theta3=math.asin(n2*math.sin(theta1)); #glancing angle(radian)\n", + "theta3=theta3*180/math.pi; #glancing angle(degree)\n", + "\n", + "#Result\n", + "print \"glancing angle is\",round(theta3,3),\"degree\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.9, Page number 82" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interplanar spacing is 1.804 angstrom\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "lamda=0.58; #wavelength(angstrom)\n", + "theta1=6+(45/60); #glancing angle(degree)\n", + "theta2=9+(15/60); #glancing angle(degree)\n", + "theta3=13; #glancing angle(degree)\n", + "\n", + "#Calculation\n", + "theta1=theta1*math.pi/180; #angle(radian)\n", + "theta2=theta2*math.pi/180; #angle(radian)\n", + "theta3=theta3*math.pi/180; #angle(radian)\n", + "x1=lamda/(2*math.sin(theta1));\n", + "x2=lamda/(2*math.sin(theta2));\n", + "\n", + "#Result\n", + "print \"interplanar spacing is\",round(x2,3),\"angstrom\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.10, Page number 83" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lattice spacing is 2.7882 angstrom\n", + "avagadro number is 6.2337 *10**26 mol/k-mole\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "lamda=1.3922; #wavelength(angstrom)\n", + "n=1;\n", + "theta=14+(27/60)+(26/(60*60)); #glancing angle(degree)\n", + "M=58.454; #molecular weight\n", + "rho=2163; #density(kg/m**3)\n", + "\n", + "#Calculation\n", + "theta=theta*math.pi/180; #angle(radian)\n", + "d=n*lamda/(2*math.sin(theta)); #lattice spacing(angstrom)\n", + "d_m=d*10**-10; #lattice spacing(m)\n", + "N=M/(2*rho*d_m**3); #avagadro number(mol/k-mole)\n", + "\n", + "#Result\n", + "print \"lattice spacing is\",round(d,4),\"angstrom\"\n", + "print \"avagadro number is\",round(N/10**26,4),\"*10**26 mol/k-mole\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.11, Page number 84" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ratio of angles of incidence are 0.104 : 0.2108 : 0.3123 which is nothing but 1.0 : 2.0 : 3.0\n", + "angles of incidence should be 1st, 2nd and 3rd orders\n", + "spacing is 2.804 *10**-10 m\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "lamda=0.586*10**-10; #wavelength(m)\n", + "theta1=5+(58/60); #glancing angle(degree)\n", + "theta2=12+(10/60); #glancing angle(degree)\n", + "theta3=18+(12/60); #glancing angle(degree)\n", + "\n", + "#Calculation\n", + "theta1=theta1*math.pi/180; #angle(radian)\n", + "theta2=theta2*math.pi/180; #angle(radian)\n", + "theta3=theta3*math.pi/180; #angle(radian)\n", + "x1=math.sin(theta1);\n", + "x2=math.sin(theta2);\n", + "x3=math.sin(theta3);\n", + "d1=lamda/(2*math.sin(theta1)); #spacing for 1st order(m)\n", + "d2=2*lamda/(2*math.sin(theta2)); #spacing for 2nd order(m)\n", + "d3=3*lamda/(2*math.sin(theta3)); #spacing for 3rd order(m)\n", + "d=(d1+d2+d3)/3; #spacing(m)\n", + "\n", + "#Result\n", + "print \"ratio of angles of incidence are\",round(x1,3),\":\",round(x2,4),\":\",round(x3,4),\"which is nothing but\",round(x1,1)*10,\":\",round(x2,1)*10,\":\",round(x3,1)*10\n", + "print \"angles of incidence should be 1st, 2nd and 3rd orders\"\n", + "print \"spacing is\",round(d*10**10,3),\"*10**-10 m\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.12, Page number 84" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ratio of angles of incidence are 0 : 1.413 : 1.744\n", + "the crystal is a simple cubic crystal\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "theta1=5+(23/60); #glancing angle(degree)\n", + "theta2=7+(37/60); #glancing angle(degree)\n", + "theta3=9+(25/60); #glancing angle(degree)\n", + "\n", + "#Calculation\n", + "theta1=theta1*math.pi/180; #angle(radian)\n", + "theta2=theta2*math.pi/180; #angle(radian)\n", + "theta3=theta3*math.pi/180; #angle(radian)\n", + "x1=math.sin(theta1);\n", + "X1=1/(10*x1);\n", + "x2=math.sin(theta2)/x1;\n", + "x3=math.sin(theta3)/x1;\n", + "\n", + "#Result\n", + "print \"ratio of angles of incidence are\",int(x1),\":\",round(x2,3),\":\",round(x3,3)\n", + "print \"the crystal is a simple cubic crystal\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.13, Page number 85" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "spacing of crystal is 0.38 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "h=6.62*10**-34; #planck's constant(J sec)\n", + "e=1.6*10**-19; #charge(coulomb)\n", + "m=9*10**-31; #mass(kg) \n", + "E=344; #energy(volts)\n", + "n=1;\n", + "theta=60; #angle(degrees)\n", + "\n", + "#Calculation\n", + "lamda=h/math.sqrt(2*m*e*E); #wavelength(m)\n", + "theta=theta*math.pi/180; #angle(radian)\n", + "d=n*lamda*10**10/(2*math.sin(theta)); #spacing of crystal(angstrom)\n", + "\n", + "#Result\n", + "print \"spacing of crystal is\",round(d,2),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 3.14, Page number 85" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lattice parameter is 4.1 angstrom\n", + "radius of atom is 1.45 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "h=2;\n", + "k=2;\n", + "l=0;\n", + "n=1;\n", + "theta=32; #angle(degrees)\n", + "lamda=1.54*10**-10; #wavelength(m)\n", + "\n", + "#Calculation\n", + "theta=theta*math.pi/180; #angle(radian)\n", + "d=n*lamda*10**10/(2*math.sin(theta)); #spacing of crystal(angstrom)\n", + "a=d*math.sqrt(h**2+k**2+l**2); #lattice parameter(angstrom)\n", + "r=a/(2*math.sqrt(2)); #radius of atom(angstrom)\n", + "\n", + "#Result\n", + "print \"lattice parameter is\",round(a,1),\"angstrom\"\n", + "print \"radius of atom is\",round(r,2),\"angstrom\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter4_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter4_1.ipynb new file mode 100644 index 00000000..817c6470 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter4_1.ipynb @@ -0,0 +1,161 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4: Defects in Crystals" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example number 4.1, Page number 97" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fraction of vacancy sites at 1000 C is 8.4663 *10**-7\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T1=773; #temperature(K)\n", + "T2=1273; #temperature(K)\n", + "n=1*10**-10; #fraction of vacancy sites\n", + "\n", + "#Calculations\n", + "X=round(T1*math.log(n)/T2,3);\n", + "x=math.exp(X); #fraction of vacancy sites at 1000 C\n", + "\n", + "#Result\n", + "print \"fraction of vacancy sites at 1000 C is\",round(x*10**7,4),\"*10**-7\"\n", + "print \"answer varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 4.2, Page number 98" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy required is 1.971 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T=273+25; #temperature(K)\n", + "m=4; \n", + "n=5*10**11; #density(per m**3)\n", + "V=(2*2.82*10**-10)**3; #volume(m**3)\n", + "kB=8.625*10**-5;\n", + "\n", + "#Calculations\n", + "N=m/V;\n", + "Ep=2*kB*T*math.log(N/n);\n", + "\n", + "#Result\n", + "print \"energy required is\",round(Ep,3),\"eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 4.3, Page number 99" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ratio of frenkel defects is 2.802 *10**-3\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T1=273+20; #temperature(K)\n", + "T2=273+300; #temperature(K)\n", + "Ei=1.4; #energy(eV)\n", + "kB=8.625*10**-5;\n", + "\n", + "#Calculations\n", + "x=(1/(2*T1))-(1/(2*T2));\n", + "n=1/math.exp((Ei/(2.303*kB))*x); #ratio of frenkel defects\n", + "\n", + "#Result\n", + "print \"ratio of frenkel defects is\",round(n*10**3,3),\"*10**-3\"\n", + "print \"answer in the book is wrong\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter5_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter5_1.ipynb new file mode 100644 index 00000000..5cddae1e --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter5_1.ipynb @@ -0,0 +1,357 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5: Elements of Statistical Mechanics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.1, Page number 129" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "temperature is 5959 K\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "b=2.92*10**-3; #value of b(mK)\n", + "lamda=4900*10**-10; #wavelength(m)\n", + "\n", + "#Calculations\n", + "T=b/lamda; #temperature(K)\n", + "\n", + "#Result\n", + "print \"temperature is\",int(T),\"K\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.2, Page number 129" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "temperature is 5454 K\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T=1500; #temperature(K)\n", + "lamda=5500; #wavelength(m)\n", + "lamda_m=20000; #wavelength(m)\n", + "\n", + "#Calculations\n", + "T_dash=lamda_m*T/lamda; #temperature of sun(K)\n", + "\n", + "#Result\n", + "print \"temperature is\",int(T_dash),\"K\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.3, Page number 130" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength is 48283 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T=327+273; #temperature(K)\n", + "b=2.897*10**-3; #value of b(mK)\n", + "\n", + "#Calculations\n", + "lamda_m=b/T; #wavelength(m)\n", + "\n", + "#Result\n", + "print \"wavelength is\",int(lamda_m*10**10),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.4, Page number 130" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength is 2.92 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T=10**7; #temperature(K)\n", + "b=0.292; #value of b(cmK)\n", + "\n", + "#Calculations\n", + "lamda_m=b/T; #wavelength(cm)\n", + "\n", + "#Result\n", + "print \"wavelength is\",lamda_m*10**8,\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.5, Page number 130" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "temperature of moon is 200 K\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T=1127+273; #temperature(K)\n", + "lamda_m=2*10**-6; #wavelength(m)\n", + "lamda=14*10**-6; #wavelength(m)\n", + "\n", + "#Calculations\n", + "Tm=lamda_m*T/lamda; #temperature of moon(K)\n", + "\n", + "#Result\n", + "print \"temperature of moon is\",int(Tm),\"K\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.6, Page number 131" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "temperature of sun is 6097 K\n", + "temperature of moon is 207 K\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "lamda_m=4753*10**-10; #wavelength(m)\n", + "lamda=14*10**-6; #wavelength(m)\n", + "b=0.2898*10**-2; #value of constant(mK)\n", + "\n", + "#Calculations\n", + "Ts=b/lamda_m; #temperature of sun(K) \n", + "Tm=b/lamda; #temperature of moon(K)\n", + "\n", + "#Result\n", + "print \"temperature of sun is\",int(Ts),\"K\"\n", + "print \"temperature of moon is\",int(Tm),\"K\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.7, Page number 140" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum kinetic energy is 6.48 *10**4 K\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "e=1.6*10**-19; #charge(coulomb)\n", + "m=9*10**-31; #mass(kg)\n", + "h=6.624*10**-34; #plank's constant(Js)\n", + "n=5.86*10**28; #density(electrons/m**3)\n", + "k=8.6*10**-5;\n", + "\n", + "#Calculations\n", + "ef=(h**2/(8*m))*(3*n/math.pi)**(2/3); #energy(J)\n", + "ef=ef/e; #energy(eV)\n", + "theta_f=ef/k; #maximum kinetic energy(K)\n", + "\n", + "#Result\n", + "print \"maximum kinetic energy is\",round(theta_f/10**4,2),\"*10**4 K\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 5.8, Page number 140" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fermi energy is 3.187 eV\n", + "answer varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "e=1.6*10**-19; #charge(coulomb)\n", + "m=9*10**-31; #mass(kg)\n", + "h=6.62*10**-34; #plank's constant(Js)\n", + "rho=970; #density(kg/m**3)\n", + "N0=6.02*10**26; #avagadro number\n", + "A=23; #atomic weight\n", + "\n", + "#Calculations\n", + "n=rho*N0/A; #concentration(electrons/m**3)\n", + "ef=(h**2/(8*m))*(3*n/math.pi)**(2/3); #fermi energy(J)\n", + "ef=ef/e; #fermi energy(eV)\n", + "\n", + "#Result\n", + "print \"fermi energy is\",round(ef,3),\"eV\"\n", + "print \"answer varies due to rounding off errors\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter6_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter6_1.ipynb new file mode 100644 index 00000000..d39bb9e9 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter6_1.ipynb @@ -0,0 +1,1649 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 6: Principles of Quantum Mechanics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.1, Page number 157" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "de-broglie wavelength of ball is 6.625e-34 m\n", + "de-broglie wavelength of proton is 1.8 angstrom\n", + "de-broglie wavelength of electron is 2.27 *10**14 m\n", + "answer for de-broglie wavelength of electron in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.625*10**-34; #planck's constant(J-sec)\n", + "m=0.05; #mass(kg)\n", + "v=20; #velocity(m/sec)\n", + "mp=1.67*10**-27; #mass of proton(kg)\n", + "vp=2200; #velocity of proton(m/sec)\n", + "me=9.11*10**-31; #mass of electron(kg)\n", + "E=10*1.602*10**-19; #kinetic energy(J)\n", + "\n", + "#Calculations\n", + "lamda_ball=h/(m*v); #de-broglie wavelength of ball(m)\n", + "lamda_p=h*10**10/(mp*vp); #de-broglie wavelength of proton(angstrom)\n", + "lamda_e=h/(2*me*E); #de-broglie wavelength of electron(m)\n", + "\n", + "#Result\n", + "print \"de-broglie wavelength of ball is\",lamda_ball,\"m\"\n", + "print \"de-broglie wavelength of proton is\",round(lamda_p,2),\"angstrom\"\n", + "print \"de-broglie wavelength of electron is\",round(lamda_e/10**14,2),\"*10**14 m\"\n", + "print \"answer for de-broglie wavelength of electron in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.2, Page number 158" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "de-broglie wavelength in 1st case is 1.225 angstrom\n", + "de-broglie wavelength in 2nd case is 0.1225 angstrom\n", + "de-broglie wavelength in 3rd case is 0.153 angstrom\n", + "de-broglie wavelength in 4th case is 0.1225 angstrom\n", + "de-broglie wavelength in 5th case is 0.3963 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "m=1.673*10**-27; #mass of proton(kg)\n", + "v=10**4; #velocity of proton(m/sec)\n", + "V1=100; #potential difference in 1st case(V)\n", + "V2=10000; #potential difference in 2nd case(V)\n", + "V3=6400; #potential difference in 3rd case(V)\n", + "\n", + "\n", + "#Calculations\n", + "lamda1=12.25/math.sqrt(V1) #de-broglie wavelength in 1st case(angstrom)\n", + "lamda2=12.25/math.sqrt(V2) #de-broglie wavelength in 2nd case(angstrom)\n", + "lamda3=12.25/math.sqrt(V3) #de-broglie wavelength in 3rd case(angstrom)\n", + "lamda4=12.25/math.sqrt(V2) #de-broglie wavelength in 4th case(angstrom)\n", + "lamda5=h/(m*v); #de-broglie wavelength of proton(m)\n", + "\n", + "#Result\n", + "print \"de-broglie wavelength in 1st case is\",lamda1,\"angstrom\"\n", + "print \"de-broglie wavelength in 2nd case is\",lamda2,\"angstrom\"\n", + "print \"de-broglie wavelength in 3rd case is\",round(lamda3,3),\"angstrom\"\n", + "print \"de-broglie wavelength in 4th case is\",lamda4,\"angstrom\"\n", + "print \"de-broglie wavelength of proton is\",round(lamda5*10**10,4),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.3, Page number 158" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "de-broglie wavelength of proton is 2.64 *10**-14 m\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.62*10**-34; #planck's constant(J-sec)\n", + "m=1.67*10**-27; #mass of proton(kg)\n", + "vc=3*10**8; #velocity of light(m/sec)\n", + "\n", + "#Calculations\n", + "v=vc/20; #velocity of proton(m/sec)\n", + "lamda=h/(m*v); #de-broglie wavelength of proton(m)\n", + "\n", + "#Result\n", + "print \"de-broglie wavelength of proton is\",round(lamda*10**14,2),\"*10**-14 m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.4, Page number 159" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy of neutron is 8.13 *10**-2 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.60*10**-34; #planck's constant(J-sec)\n", + "m=1.674*10**-27; #mass of proton(kg)\n", + "lamda=10**-10; #de-broglie wavelength(m)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "\n", + "#Calculations\n", + "E=h**2/(2*m*lamda**2); #energy of neutron(J)\n", + "E=E/e; #energy of neutron(eV)\n", + "\n", + "#Result\n", + "print \"energy of neutron is\",round(E*10**2,2),\"*10**-2 eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.5, Page number 159" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy of electron is 167217.6 eV\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.62*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "lamda=3*10**-12; #de-broglie wavelength(m)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "\n", + "#Calculations\n", + "E=h**2/(2*m*lamda**2); #energy of electron(J)\n", + "E=E/e; #energy of electron(eV)\n", + "\n", + "#Result\n", + "print \"energy of electron is\",round(E,1),\"eV\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.6, Page number 159" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kinetic energy of electron is 4.34 *10**-6 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "lamda=5896*10**-10; #de-broglie wavelength(m)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "\n", + "#Calculations\n", + "K=h**2/(2*m*lamda**2); #energy of electron(J)\n", + "K=K/e; #kinetic energy of electron(eV)\n", + "\n", + "#Result\n", + "print \"kinetic energy of electron is\",round(K*10**6,2),\"*10**-6 eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.7, Page number 160" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "voltage is 934.9 V\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "lamda=0.4*10**-10; #de-broglie wavelength(m)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "\n", + "#Calculations\n", + "V=h**2/(2*m*e*lamda**2); #voltage(V)\n", + "\n", + "#Result\n", + "print \"voltage is\",round(V,1),\"V\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.8, Page number 160" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "velocity of neutron is 3.97 *10**3 m/sec\n", + "kinetic energy of neutron is 0.08225 eV\n", + "answer for kinetic energy in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "m=1.67*10**-27; #mass of neutron(kg)\n", + "lamda=10**-10; #de-broglie wavelength(m)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "\n", + "#Calculations\n", + "v=h/(m*lamda); #velocity of neutron(m/sec)\n", + "E=m*v**2/(2*e); #kinetic energy of neutron(eV)\n", + "\n", + "#Result\n", + "print \"velocity of neutron is\",round(v/10**3,2),\"*10**3 m/sec\"\n", + "print \"kinetic energy of neutron is\",round(E,5),\"eV\"\n", + "print \"answer for kinetic energy in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.9, Page number 161" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength of photon is 12.4 angstrom\n", + "wavelength of electron is 0.39 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "c=3*10**8; #velocity of light(m/sec)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "E=1000; #energy of electron(eV)\n", + "\n", + "#Calculations\n", + "lamda_p=h*c*10**10/(E*e); #wavelength of photon(angstrom)\n", + "lamda_e=h*10**10/math.sqrt(2*m*E*e); #wavelength of electron(angstrom)\n", + "\n", + "#Result\n", + "print \"wavelength of photon is\",round(lamda_p,1),\"angstrom\"\n", + "print \"wavelength of electron is\",round(lamda_e,2),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.10, Page number 161" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength of photo-electron is 0.1 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "c=3*10**8; #velocity of light(m/sec)\n", + "lamda=0.82*10**-10; #wavelength(m)\n", + "\n", + "#Calculations\n", + "E=h*c/lamda; #energy(J)\n", + "lamda=h*10**10/math.sqrt(2*m*E); #wavelength of photo-electron(angstrom)\n", + "\n", + "#Result\n", + "print \"wavelength of photo-electron is\",round(lamda,1),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.11, Page number 162" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength of electron is 0.0242 angstrom\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "c=3*10**8; #velocity of light(m/sec)\n", + "\n", + "#Calculations\n", + "lamda=h*10**10/(m*c); #wavelength of electron(angstrom)\n", + "\n", + "#Result\n", + "print \"wavelength of electron is\",round(lamda,4),\"angstrom\"\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.12, Page number 162" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "de-broglie wavelength of neutron is 2.86 *10**-18 m\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.625*10**-34; #planck's constant(J-sec)\n", + "m=1.675*10**-27; #mass of neutron(kg)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "E=10**14; #energy of neutron(eV)\n", + "\n", + "#Calculations\n", + "v=math.sqrt(2*E*e/m); #velocity(m/sec)\n", + "lamda=h/(m*v); #de-broglie wavelength of neutron(m)\n", + "\n", + "#Result\n", + "print \"de-broglie wavelength of neutron is\",round(lamda*10**18,2),\"*10**-18 m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.13, Page number 162" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "de-broglie wavelength of neutron is 7.998 *10**-15 m\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.625*10**-34; #planck's constant(J-sec)\n", + "m=1.675*10**-27; #mass of neutron(kg)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "E=12.8*10**6; #energy of neutron(eV)\n", + "\n", + "#Calculations\n", + "v=math.sqrt(2*E*e/m); #velocity(m/sec)\n", + "lamda=h/(m*v); #de-broglie wavelength of neutron(m)\n", + "\n", + "#Result\n", + "print \"de-broglie wavelength of neutron is\",round(lamda*10**15,3),\"*10**-15 m\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.14, Page number 163" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "de-broglie wavelength of proton is 0.0004 angstrom\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.62*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "mp=1836*m; #mass of photon(kg)\n", + "c=3*10**8; #velocity of light(m/sec)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "\n", + "#Calculations\n", + "E=m*c**2; #energy(J)\n", + "v=math.sqrt(2*E/mp); #velocity(m/sec)\n", + "lamda=h*10**10/(mp*v); #de-broglie wavelength of proton(angstrom)\n", + "\n", + "#Result\n", + "print \"de-broglie wavelength of proton is\",round(lamda,4),\"angstrom\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.15, Page number 163" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength of thermal neutron is 1.777 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.60*10**-34; #planck's constant(J-sec)\n", + "m=1.67*10**-27; #mass of neutron(kg)\n", + "k=8.6*10**-5; #boltzmann constant(eV/deg)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "T=300; #temperature(K)\n", + "\n", + "#Calculations\n", + "lamda=h*10**10/math.sqrt(2*m*k*e*T); #wavelength of thermal neutron(angstrom)\n", + "\n", + "#Result\n", + "print \"wavelength of thermal neutron is\",round(lamda,3),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.16, Page number 164" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interplanar spacing is 1.78 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.62*10**-34; #planck's constant(J-sec)\n", + "mn=1.67*10**-27; #mass of neutron(kg)\n", + "k=1.38*10**-23; #boltzmann constant(eV/deg)\n", + "T=300; #temperature(K)\n", + "\n", + "#Calculations\n", + "E=k*T; #energy(J)\n", + "p=math.sqrt(2*mn*E); #momentum\n", + "d=h*10**10/p; #interplanar spacing(angstrom)\n", + "\n", + "#Result\n", + "print \"interplanar spacing is\",round(d,2),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.17, Page number 164" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interplanar spacing is 0.38 angstrom\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.62*10**-34; #planck's constant(J-sec)\n", + "m=9*10**-31; #mass of neutron(kg)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "V=344; #potential difference(V)\n", + "theta=60*math.pi/180; #angle(radian)\n", + "\n", + "#Calculations\n", + "d=h*10**10/(2*math.sin(theta)*math.sqrt(2*m*e*V)); #interplanar spacing(angstrom)\n", + "\n", + "#Result\n", + "print \"interplanar spacing is\",round(d,2),\"angstrom\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.18, Page number 171" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "uncertainity in momentum is 1.65e-24 kg m/sec\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "deltax=4*10**-10; #uncertainity in position of electron(m)\n", + "\n", + "#Calculations\n", + "delta_px=h/deltax; #uncertainity in momentum(kg m/sec)\n", + "\n", + "#Result\n", + "print \"uncertainity in momentum is\",delta_px,\"kg m/sec\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.19, Page number 171" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "uncertainity in position of electron is 0.02418 m\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "v=600; #speed(m/sec)\n", + "a=0.005/100; #accuracy(%)\n", + "\n", + "#Calculations\n", + "deltav=v*a; #uncertainity in speed(kg m/sec)\n", + "delta_px=m*deltav; #uncertainity in momentum(kg m/sec)\n", + "deltax=h/delta_px; #uncertainity in position of electron(m)\n", + "\n", + "#Result\n", + "print \"uncertainity in position of electron is\",round(deltax,5),\"m\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.20, Page number 172 Theoritical " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.21, Page number 172" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "uncertainity in momentum is 6.63e-23 kg m/sec\n", + "uncertainity in velocity is 7.286 *10**7 m/sec\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "m0=9.1*10**-31; #mass of electron(kg)\n", + "deltax=0.1*10**-10; #uncertainity in position of electron(m)\n", + "\n", + "#Calculations\n", + "delta_p=h/deltax; #uncertainity in momentum(kg m/sec)\n", + "delta_v=delta_p/m0; #uncertainity in velocity(m/sec)\n", + "\n", + "#Result\n", + "print \"uncertainity in momentum is\",delta_p,\"kg m/sec\"\n", + "print \"uncertainity in velocity is\",round(delta_v/10**7,3),\"*10**7 m/sec\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.22, Page number 172" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "uncertainity in velocity is 1835\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "me=9.10*10**-31; #mass of electron(kg)\n", + "mp=1.67*10**-27; #mass of electron(kg)\n", + "\n", + "#Calculations\n", + "uv=mp/me; #uncertainity in velocity\n", + "\n", + "#Result\n", + "print \"uncertainity in velocity is\",int(uv)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.23, Page number 172" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "smallest possible uncertainity in position of electron is 0.019 angstrom\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.62*10**-34; #planck's constant(J-sec)\n", + "m0=9*10**-31; #mass of electron(kg)\n", + "v=3*10**7; #velocity of electron(m/sec)\n", + "c=3*10**8; #velocity of light(m/sec)\n", + "\n", + "#Calculations\n", + "deltax_min=h*10**10*math.sqrt(1-(v**2/c**2))/(4*math.pi*m0*v); #smallest possible uncertainity in position of electron(angstrom)\n", + "\n", + "#Result\n", + "print \"smallest possible uncertainity in position of electron is\",round(deltax_min,3),\"angstrom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.24, Page number 173" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimum uncertainity in velocity of electron is 7.3 *10**5 m/s\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "m=9*10**-31; #mass of electron(kg)\n", + "deltax_max=10*10**-10; #length of box(m)\n", + "\n", + "#Calculations\n", + "deltavx_min=h/(deltax_max*m); #minimum uncertainity in velocity of electron(m/s)\n", + "\n", + "#Result\n", + "print \"minimum uncertainity in velocity of electron is\",round(deltavx_min/10**5,1),\"*10**5 m/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.25 Page number 173" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time required is 1.9 *10**-8 second\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "dlamda=10**-4*10**-10; #width(m)\n", + "lamda=6000*10**-10; #wavelength(m)\n", + "c=3*10**8; #velocity of light(m/sec)\n", + "\n", + "#Calculations\n", + "delta_t=lamda**2/(2*math.pi*c*dlamda); #time required(second)\n", + "\n", + "#Result\n", + "print \"time required is\",round(delta_t*10**8,1),\"*10**-8 second\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.26 Page number 174" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "uncertainity in position of electron is 1.6903 *10**-8 m\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "v=3.5*10**7; #speed(cm/sec)\n", + "a=0.0098/100; #accuracy(%)\n", + "\n", + "#Calculations\n", + "deltav=v*a; #uncertainity in speed(kg m/sec)\n", + "delta_p=m*deltav; #uncertainity in momentum(kg m/sec)\n", + "deltax=h/(4*math.pi*delta_p); #uncertainity in position of electron(m)\n", + "\n", + "#Result\n", + "print \"uncertainity in position of electron is\",round(deltax*10**8,4),\"*10**-8 m\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.27 Page number 174" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "uncertainity in position of dust particle is 9.58 *10**-10 m\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.62*10**-34; #planck's constant(J-sec)\n", + "m=10**-6; #mass of electron(kg)\n", + "deltav=5.5*10**-20; #speed(m/sec)\n", + "\n", + "#Calculations\n", + "delta_p=m*deltav; #uncertainity in momentum(kg m/sec)\n", + "deltax=h/(4*math.pi*delta_p); #uncertainity in position of dust particle(m)\n", + "\n", + "#Result\n", + "print \"uncertainity in position of dust particle is\",round(deltax*10**10,2),\"*10**-10 m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.28 Page number 175" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "uncertainity in energy is 3.3 *10**-4 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "delta_t=10**-12; #life time(s)\n", + "hby2pi=1.054*10**-34; \n", + "e=1.6*10**-19; #charge of electron(c)\n", + "\n", + "#Calculations\n", + "deltaE=hby2pi/(2*e*delta_t); #uncertainity in energy(eV)\n", + "\n", + "#Result\n", + "print \"uncertainity in energy is\",round(deltaE*10**4,1),\"*10**-4 eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.29 Page number 175" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimum uncertainity in frequency is 8.0 *10**6 s-1\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "delta_t=10**-8; #life time(s)\n", + "\n", + "#Calculations\n", + "deltav=1/(4*math.pi*delta_t); #minimum uncertainity in frequency(s-1)\n", + "\n", + "#Result\n", + "print \"minimum uncertainity in frequency is\",round(deltav/10**6),\"*10**6 s-1\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.30 Page number 175" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimum energy is 13.18997 keV\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "delta_t=2.5*10**-14*10**-6; #life time(s)\n", + "\n", + "#Calculations\n", + "deltaE=h*10**-3/(4*math.pi*delta_t*e); #minimum energy(keV)\n", + "\n", + "#Result\n", + "print \"minimum energy is\",round(deltaE,5),\"keV\"\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.31 Page number 183" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "least energy is 37.649 eV\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "e=1.602*10**-19; #charge of electron(c)\n", + "L=10**-10; #width(m)\n", + "m=9.11*10**-31; #mass of electron(kg)\n", + "\n", + "\n", + "#Calculations\n", + "E1=h**2/(8*m*e*L**2); #least energy(eV)\n", + "\n", + "#Result\n", + "print \"least energy is\",round(E1,3),\"eV\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.32 Page number 184" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1st least energy is 6 eV\n", + "2nd least energy is 24 eV\n", + "3rd least energy is 54 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "L=2.5*10**-10; #width(m)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "n1=1;\n", + "n2=2;\n", + "n3=3;\n", + "\n", + "#Calculations\n", + "E=h**2/(8*m*e*L**2); #energy(eV)\n", + "E1=n1**2*h**2/(8*m*e*L**2); #1st least energy(eV)\n", + "E2=n2**2*h**2/(8*m*e*L**2); #2nd least energy(eV)\n", + "E3=n3**2*h**2/(8*m*e*L**2); #3rd least energy(eV)\n", + "\n", + "#Result\n", + "print \"1st least energy is\",int(E1),\"eV\"\n", + "print \"2nd least energy is\",int(E2),\"eV\"\n", + "print \"3rd least energy is\",int(E3),\"eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.33 Page number 184" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wavelength in 1st energy state is 20 angstrom\n", + "wavelength in 2nd energy state is 10 angstrom\n", + "wavelength in 3rd energy state is 6.67 angstrom\n", + "1st least energy is 0.38 eV\n", + "2nd least energy is 1.5095 eV\n", + "3rd least energy is 3.396 eV\n", + "answers for 2nd and 3rd least energies varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "L=10**-9; #width(m)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "n1=1;\n", + "n2=2;\n", + "n3=3;\n", + "\n", + "#Calculations\n", + "lamda1=2*L*10**10/n1; #wavelength in 1st energy state(angstrom)\n", + "lamda2=2*L*10**10/n2; #wavelength in 2nd energy state(angstrom)\n", + "lamda3=2*L*10**10/n3; #wavelength in 3rd energy state(angstrom)\n", + "E=h**2/(8*m*e*L**2); #energy(eV)\n", + "E1=n1**2*h**2/(8*m*e*L**2); #1st least energy(eV)\n", + "E2=n2**2*h**2/(8*m*e*L**2); #2nd least energy(eV)\n", + "E3=n3**2*h**2/(8*m*e*L**2); #3rd least energy(eV)\n", + "\n", + "#Result\n", + "print \"wavelength in 1st energy state is\",int(lamda1),\"angstrom\"\n", + "print \"wavelength in 2nd energy state is\",int(lamda2),\"angstrom\"\n", + "print \"wavelength in 3rd energy state is\",round(lamda3,2),\"angstrom\"\n", + "print \"1st least energy is\",round(E1,2),\"eV\"\n", + "print \"2nd least energy is\",round(E2,4),\"eV\"\n", + "print \"3rd least energy is\",round(E3,3),\"eV\"\n", + "print \"answers for 2nd and 3rd least energies varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.34 Page number 185" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1st least energy is 37.69 eV\n", + "2nd least energy is 150 eV\n", + "energy difference between ground state and 1st excited state is 113.08 eV\n", + "answer in the book varies due to rounding off errors\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.626*10**-34; #planck's constant(J-sec)\n", + "e=1.60*10**-19; #charge of electron(c)\n", + "L=10**-10; #width(m)\n", + "m=9.1*10**-31; #mass of electron(kg)\n", + "n1=1;\n", + "n2=2;\n", + "\n", + "#Calculations\n", + "E=h**2/(8*m*e*L**2); #energy(eV)\n", + "E1=n1**2*h**2/(8*m*e*L**2); #1st least energy(eV)\n", + "E2=n2**2*h**2/(8*m*e*L**2); #2nd least energy(eV)\n", + "Ed=E2-E1; #energy difference between ground state and 1st excited state(eV)\n", + "\n", + "#Result\n", + "print \"1st least energy is\",round(E1,2),\"eV\"\n", + "print \"2nd least energy is\",int(E2),\"eV\"\n", + "print \"energy difference between ground state and 1st excited state is\",round(Ed,2),\"eV\"\n", + "print \"answer in the book varies due to rounding off errors\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.35 Page number 185" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1st least energy is 3.4 *10**-45 eV\n", + "2nd least energy is 13.6 *10**-45 eV\n", + "3rd least energy is 30.6 *10**-45 eV\n", + "energy levels are so close to each other that the energy states cannot be observed\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.6*10**-34; #planck's constant(J-sec)\n", + "e=1.6*10**-19; #charge of electron(c)\n", + "L=10**-1; #width(m)\n", + "m=10**-2; #mass of electron(kg)\n", + "n1=1;\n", + "n2=2;\n", + "n3=3;\n", + "\n", + "#Calculations\n", + "E=h**2/(8*m*e*L**2); #energy(eV)\n", + "E1=n1**2*h**2/(8*m*e*L**2); #1st least energy(eV)\n", + "E2=n2**2*h**2/(8*m*e*L**2); #2nd least energy(eV)\n", + "E3=n3**2*h**2/(8*m*e*L**2); #3rd least energy(eV)\n", + "\n", + "#Result\n", + "print \"1st least energy is\",round(E1*10**45,1),\"*10**-45 eV\"\n", + "print \"2nd least energy is\",round(E2*10**45,1),\"*10**-45 eV\"\n", + "print \"3rd least energy is\",round(E3*10**45,1),\"*10**-45 eV\"\n", + "print \"energy levels are so close to each other that the energy states cannot be observed\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.36 Page number 186" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mass of particle is 9.3 *10**-31 kg\n", + "quantum state is 10.4\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "h=6.63*10**-34; #planck's constant(J-sec)\n", + "e=1.602*10**-19; #charge of electron(c)\n", + "L=0.2*10**-9; #width(m)\n", + "n5=5;\n", + "En=10**3; #energy(eV)\n", + "E5=230; #energy of particle(eV)\n", + "\n", + "#Calculations2\n", + "E5=230*e; #energy(J)\n", + "E1=E5/n5**2; #energy in 1st state(J)\n", + "m=h**2/(8*E1*L**2); #mass of particle(kg)\n", + "n=math.sqrt(En*e/E1); #quantum state\n", + "\n", + "#Result\n", + "print \"mass of particle is\",round(m*10**31,1),\"*10**-31 kg\"\n", + "print \"quantum state is\",round(n,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.37 Page number 186" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probability of finding the particle is 0.4\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "L=25*10**-10; #width(m)\n", + "deltax=5*10**-10; #interval(m)\n", + "\n", + "#Calculations2\n", + "P=2*deltax/L; #probability of finding the particle\n", + "\n", + "#Result\n", + "print \"probability of finding the particle is\",P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 6.38 Page number 187" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probability of finding the particle is 0.0161 a**2\n", + "expectation value of position of particle is 0.25 a**2\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "from scipy.integrate import quad\n", + "\n", + "#Variable declaration \n", + "a=1; #assume\n", + "\n", + "#Calculations2\n", + "def zintg(x):\n", + " return (a*x)**2 \n", + "\n", + "P=quad(zintg,0.35,0.45)[0] #probability of finding the particle\n", + "\n", + "def zintg(x):\n", + " return x*(a*x)**2 \n", + "\n", + "X=quad(zintg,0,1)[0] #expectation value of position of particle\n", + "\n", + "#Result\n", + "print \"probability of finding the particle is\",round(P,4),\"a**2\"\n", + "print \"expectation value of position of particle is\",X,\"a**2\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter8_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter8_1.ipynb new file mode 100644 index 00000000..f243c180 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter8_1.ipynb @@ -0,0 +1,518 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 8: Semiconductor Physics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.1, Page number 229" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ratio of density of electrons is 0.227\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "ni=2.5*10**19; #concentration(per m**3)\n", + "d=4.4*10**28; #density(per m**3)\n", + "n=4*10**8; #number of Ge atoms\n", + "\n", + "#Calculation\n", + "Na=d/n; #density of acceptor atoms\n", + "np=ni**2/Na; \n", + "npbyni=np/ni; #ratio of density of electrons\n", + "\n", + "#Result\n", + "print \"ratio of density of electrons is\",round(npbyni,3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.2, Page number 230" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hole concentration is 1.44e+16 holes/m**3\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "ni=2.4*10**19; #concentration(per m**3)\n", + "d=4*10**28; #density(per m**3)\n", + "n=10**6; #number of Ge atoms\n", + "\n", + "#Calculation\n", + "Nd=d/n; #density of acceptor atoms\n", + "np=ni**2/Nd; #hole concentration(holes/m**3)\n", + "\n", + "#Result\n", + "print \"hole concentration is\",np,\"holes/m**3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.3, Page number 230" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "density of holes and electrons is 3.352 *10**19 per m**3\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "me=9.1*10**-31; #mass of electron(kg)\n", + "kb=1.38*10**-23; #boltzmann constant\n", + "T=300; #temperature(K)\n", + "h=6.62*10**-34; #planck's constant\n", + "Eg=0.7; #band gap(eV)\n", + "e=1.6*10**-19; #charge(c)\n", + "\n", + "#Calculation\n", + "x=2*math.pi*me*kb*T/(h**2); \n", + "n=2*(x**(3/2))*math.exp(-Eg*e/(2*kb*T)); #density of holes and electrons(per m**3)\n", + "\n", + "#Result\n", + "print \"density of holes and electrons is\",round(n/10**19,3),\"*10**19 per m**3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.4, Page number 231" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "position of Fermi level is 0.35 eV\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "kb=1.38*10**-23; #boltzmann constant\n", + "T=300; #temperature(K)\n", + "m=6;\n", + "Eg=0.7; #band gap(eV)\n", + "\n", + "#Calculation\n", + "x=3*kb*T*math.log(m)/4;\n", + "EF=(Eg/2)+x; #position of Fermi level(eV)\n", + "\n", + "#Result\n", + "print \"position of Fermi level is\",EF,\"eV\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.5, Page number 231" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "position of Fermi level is 0.33 eV\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "T1=300; #temperature(K)\n", + "T2=330; #temperature(K)\n", + "E=0.3; #band gap(eV)\n", + "\n", + "#Calculation\n", + "Ec_Ef=T2*E/T1; #position of Fermi level(eV)\n", + "\n", + "#Result\n", + "print \"position of Fermi level is\",Ec_Ef,\"eV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.6, Page number 239" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hall coefficient is 3.045 *10**-4 m**3/C\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "n=2.05*10**22; #charge carrier density\n", + "e=1.602*10**-19; #charge of electron\n", + "\n", + "#Calculation\n", + "RH=1/(n*e); #hall coefficient(m**3/C)\n", + "\n", + "#Result\n", + "print \"hall coefficient is\",round(RH*10**4,3),\"*10**-4 m**3/C\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.7, Page number 239" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hall coefficient is -0.125 *10**-9 m**3/C\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "n=5*10**28; #charge carrier density\n", + "e=1.6*10**-19; #charge of electron\n", + "\n", + "#Calculation\n", + "RH=-1/(n*e); #hall coefficient(m**3/C)\n", + "\n", + "#Result\n", + "print \"hall coefficient is\",round(RH*10**9,3),\"*10**-9 m**3/C\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.8, Page number 240" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hall coefficient is -0.245 *10**-9 m**3/C\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "a=4.28*10**-10; #side(m)\n", + "e=1.6*10**-19; #charge of electron\n", + "\n", + "#Calculation\n", + "n=2/(a**3);\n", + "RH=-1/(n*e); #hall coefficient(m**3/C)\n", + "\n", + "#Result\n", + "print \"hall coefficient is\",round(RH*10**9,3),\"*10**-9 m**3/C\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.9, Page number 240" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hall coefficient is 2.7 *10**-4 m**3/C\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=9*10**-3; #resistivity(ohm m)\n", + "mew=0.03; #mobility(m**2/Vs)\n", + "\n", + "#Calculation\n", + "sigma=1/rho;\n", + "RH=mew/sigma; #hall coefficient(m**3/C)\n", + "\n", + "#Result\n", + "print \"hall coefficient is\",RH*10**4,\"*10**-4 m**3/C\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.10, Page number 240" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "density of charge carrier is 1.73611 *10**22 per m**3\n", + "mobility is 0.04 m**2/Vs\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=9*10**-3; #resistivity(ohm m)\n", + "RH=3.6*10**-4; #hall coefficient(m**3/C)\n", + "e=1.6*10**-19; #charge of electron\n", + "\n", + "#Calculation\n", + "sigma=1/rho;\n", + "rho=1/RH; \n", + "n=rho/e; #density of charge carrier(per m**3)\n", + "mew=sigma*RH; #mobility(m**2/Vs)\n", + "\n", + "#Result\n", + "print \"density of charge carrier is\",round(n/10**22,5),\"*10**22 per m**3\"\n", + "print \"mobility is\",mew,\"m**2/Vs\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.11, Page number 241" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "charge carrier concentration is 6.25e+22 m**-3\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "e=1.6*10**-19; #charge of electron\n", + "z=0.3*10**-3; #thickness(m)\n", + "VH=1*10**-3; #hall voltage(V)\n", + "Ix=10*10**-3; #current(A)\n", + "Bz=0.3; #magnetic field(T)\n", + "\n", + "#Calculation\n", + "n=Ix*Bz/(VH*z*e); #charge carrier concentration(m**-3)\n", + "\n", + "#Result\n", + "print \"charge carrier concentration is\",n,\"m**-3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 8.12, Page number 241" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hall angle is 1.0704 degrees\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration\n", + "rho=0.00912; #resistivity(ohm m)\n", + "RH=3.55*10**-4; #hall coefficient(m**3/C)\n", + "B=0.48; #flux density(Wb/m**2)\n", + "\n", + "#Calculation\n", + "sigma=1/rho;\n", + "theta_H=math.atan(sigma*B*RH); #hall angle(radian)\n", + "theta_H=theta_H*180/math.pi; #hall angle(degrees)\n", + "\n", + "#Result\n", + "print \"hall angle is\",round(theta_H,4),\"degrees\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter9_1.ipynb b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter9_1.ipynb new file mode 100644 index 00000000..86c59219 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter9_1.ipynb @@ -0,0 +1,242 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 9: Physics of Semiconductor Devices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 9.1, Page number 256" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "value of current is 120.73 micro A\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "I0=0.3; #current(micro A)\n", + "V=0.15; #voltage(V)\n", + "\n", + "#Calculations\n", + "I=I0*(math.exp(40*V)-1); #value of current(micro A)\n", + "\n", + "#Result\n", + "print \"value of current is\",round(I,2),\"micro A\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 9.2, Page number 256" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reverse saturation current is 5.043 nA\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "I=10*10**-3; #current(A)\n", + "V=0.75; #voltage(V)\n", + "T=300; #temperature(K)\n", + "eta=2;\n", + "\n", + "#Calculations\n", + "VT=T/11600;\n", + "I0=I*10**9/(math.exp(V/(eta*VT))-1); #reverse saturation current(nA)\n", + "\n", + "#Result\n", + "print \"reverse saturation current is\",round(I0,3),\"nA\"\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 9.3, Page number 256" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "voltage applied is 0.3336 V\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "J=10**5; #current density(amp/m**2)\n", + "T=300; #temperature(K)\n", + "eta=1;\n", + "J0=250*10**-3; #saturation current density(A/m**2)\n", + "\n", + "#Calculations\n", + "VT=T/11600;\n", + "x=(J/J0)+1;\n", + "V=math.log(x)*VT; #voltage applied(V)\n", + "\n", + "#Result\n", + "print \"voltage applied is\",round(V,4),\"V\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 9.4, Page number 257" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rectification ratio is 343\n", + "answer in the book is wrong\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "I0=4*10**-6; #current(A)\n", + "T=273+25; #temperature(K)\n", + "V=0.15; #voltage(V)\n", + "eta=1;\n", + "\n", + "#Calculations\n", + "VT=T/11600;\n", + "IF=I0*(math.exp(V/VT)-1); #forward current(A)\n", + "IR=I0*(math.exp(-V/VT)-1); #reverse current(A)\n", + "r=-IF/IR; #rectification ratio\n", + "\n", + "#Result\n", + "print \"rectification ratio is\",int(r)\n", + "print \"answer in the book is wrong\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example number 9.5, Page number 257" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "voltage applied is -0.06 Volt\n" + ] + } + ], + "source": [ + "#importing modules\n", + "import math\n", + "from __future__ import division\n", + "\n", + "#Variable declaration \n", + "T=300; #temperature(K)\n", + "eta=1;\n", + "I0=1;\n", + "I=-0.9*I0; #saturation current density(A/m**2)\n", + "\n", + "#Calculations\n", + "VT=T/11600;\n", + "x=(I/I0)+1;\n", + "V=math.log(x)*VT; #voltage applied(V)\n", + "\n", + "#Result\n", + "print \"voltage applied is\",round(V,2),\"Volt\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/1_1.png b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/1_1.png Binary files differnew file mode 100644 index 00000000..b0fae88e --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/1_1.png diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/2_1.png b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/2_1.png Binary files differnew file mode 100644 index 00000000..92eb18d4 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/2_1.png diff --git a/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/3_1.png b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/3_1.png Binary files differnew file mode 100644 index 00000000..5294c2c2 --- /dev/null +++ b/Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/3_1.png diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter10_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter10_1.ipynb new file mode 100644 index 00000000..65279f94 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter10_1.ipynb @@ -0,0 +1,168 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter10 - Optical Amplifiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.1 : Page 254" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "refrative index is : 3.75\n", + "spectral bandwidth = 2.09 GHz\n" + ] + } + ], + "source": [ + "from math import pi, asin, sqrt\n", + "from __future__ import division\n", + "#refractive index and bandwidth\n", + "#given data :\n", + "lamda=1.55*10**-6## in m\n", + "del_lamda=1*10**-9## in m\n", + "L=320*10**-6## in m\n", + "n=(lamda)**2/(2*del_lamda*L)#\n", + "Gs=10**(5/10)## 5 dB is equivalent to 3.16\n", + "R1=30/100#\n", + "R2=R1#\n", + "c=3*10**8## in m/s\n", + "del_v=(c/(pi*n*L))*asin((1-(Gs*sqrt(R1*R2)))/(sqrt(4*Gs*sqrt(R1*R2))))#\n", + "print \"refrative index is : %0.2f\"%n\n", + "print \"spectral bandwidth = %0.2f GHz\"%(del_v*10**-9)\n", + "#bandwidth is calculated wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.2 : Page 260" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "small signal gain of EDFA = 32.91 dB\n", + "maximum possible achievable gain = 84.71 dB\n" + ] + } + ], + "source": [ + "from math import log10, exp\n", + "#small-signal gain of EDFA and maximum pssible achievable gain\n", + "ts=0.80##\n", + "sa=4.6444*10**-25##in m**2\n", + "n12=6*10**24##m**-3\n", + "se=4.644*10**-25##m**2\n", + "n21=0.70##\n", + "l=7##in meter\n", + "x=((sa*n12*l*(((se/sa)+1)*n21-1)))##\n", + "G=ts*exp(x)##\n", + "Gdb=10*log10(G)##\n", + "Gmax=exp(se*n12*l)##\n", + "Gmaxdb=10*log10(Gmax)##\n", + "print \"small signal gain of EDFA = %0.2f dB\"%Gdb\n", + "print \"maximum possible achievable gain = %0.2f dB\"%Gmaxdb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.3 : Page 264" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "output signal power for forward pumping = 4.60 micro Watt\n", + "part (b)\n", + "overall gain = 6.63 dB\n" + ] + } + ], + "source": [ + "from math import log10, exp\n", + "#output signal power and overall gain\n", + "print \"part (a)\"\n", + "psin=1*10**-6##in watts\n", + "ppin=1##in watts\n", + "gr=5*10**-14##mW**-1\n", + "ap1=60*10**-12##m**2\n", + "l=2000##meter\n", + "asdb=0.15##dB/km\n", + "As=3.39*10**-5##m**-1\n", + "apdb=0.20##db/km\n", + "ap=4.50*10**-5##m**-1\n", + "z=(1-exp(-ap*l))/ap##\n", + "y=(gr/ap1)##\n", + "y1=z*y##\n", + "y2=y1-(As*l)##\n", + "psl=psin*exp(y2)##\n", + "print \"output signal power for forward pumping = %0.2f micro Watt\"%(psl*10**6)\n", + "print \"part (b)\"\n", + "y1=z*y##\n", + "y2=y1-(As*l)##\n", + "psl=psin*exp(y2)##\n", + "gfra=psl/(psin)##\n", + "Gdb=10*log10(gfra)##\n", + "print \"overall gain = %0.2f dB\"%Gdb" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter11_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter11_1.ipynb new file mode 100644 index 00000000..b7959d16 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter11_1.ipynb @@ -0,0 +1,145 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter11 - Wavelength-division multiplexing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.1 : Page 277" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interaction length = 0.785 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, asin\n", + "#interaction length \n", + "po=1##assume\n", + "p1=po/2##\n", + "p2=p1##\n", + "kl=asin(sqrt(p1))##in degree\n", + "print \"interaction length = %0.3f \"%kl\n", + "#answer is in the form of pi in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.2 : Page 279" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "output port positioned at 0.7492 mm with respect to the input port will gather signals at h1=1310nm\n", + "output port positioned at 0.6117 mm with respect to the input port will gather signals at h1=1550nm\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, asin\n", + "#position \n", + "a=8.2##in micro meter\n", + "n1=1.45##\n", + "n2=1.446##\n", + "h1=1.31##in micro meter\n", + "h2=1.55##/in micro meter\n", + "v1=((2*pi*a*sqrt(n1**2-n2**2))/h1)##\n", + "v2=((2*pi*a*sqrt(n1**2-n2**2))/h2)##\n", + "db=2.439##\n", + "Del=5.5096*10**-3##\n", + "k1=1.0483##mm**-1##\n", + "k2=1.2839#/m**-1\n", + "l1=((pi)/(4*k1))##in mm\n", + "l2=((pi)/(4*k2))##in mm\n", + "print \"output port positioned at %0.4f\"%(l1),\" mm with respect to the input port will gather signals at h1=1310nm\"\n", + "print \"output port positioned at %0.4f\"%(l2),\" mm with respect to the input port will gather signals at h1=1550nm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.4 : Page 286" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "required order of the arrayed waveguide, = 121.0\n" + ] + } + ], + "source": [ + "# ARRAYED GUIDE\n", + "#given data\n", + "c=3*10**8#\n", + "lamda_c=1.55*10**-6## in m\n", + "vc=c/lamda_c#\n", + "n=16## number of channel\n", + "f=100*10**9## in Hz\n", + "delV_FSR=n*f#\n", + "m=round(vc/delV_FSR)#\n", + "print \"required order of the arrayed waveguide, = \",m" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter12_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter12_1.ipynb new file mode 100644 index 00000000..e34608c5 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter12_1.ipynb @@ -0,0 +1,263 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter12 - Fiber-optic communiation systems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.1 : Page 299" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum possible link length = 8.00 km\n", + "total rise time of the system in ns is 30.0\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi\n", + "#link length and reise time\n", + "af=2.5##dB/km\n", + "ac=0.5##dB/splice\n", + "nc=1##\n", + "lc=1##dB\n", + "ncc=2##\n", + "plx=-10##dBm\n", + "prx=-42##dBm\n", + "Ms=6##dB\n", + "L=((plx-prx-Ms-(lc*ncc))/(af+ac))##\n", + "TTX=12##NS\n", + "TRX=11##NS\n", + "NS1=3##NS/KM\n", + "NS2=1##NS/KM\n", + "tmat=(NS1*L)##ns\n", + "tint=(NS2*L)##ns\n", + "tsys=sqrt((TTX**2+tmat**2+tint**2+TRX**2))##ns\n", + "print\"maximum possible link length = %0.2f km\"% L\n", + "print \"total rise time of the system in ns is\",round(tsys)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.2: Page 305" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "maximum possible link length = 4.71 km\n", + "part (b)\n", + "system bandwidth = 8.00 MHz\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi\n", + "## link length and bandwidth\n", + "print \"part (a)\"\n", + "af=3##dB/km\n", + "ac=0.5##dB/splice\n", + "nc=1##\n", + "lc=1##dB\n", + "ncc=1.5##\n", + "plx=0##dBm\n", + "prx=-25##dBm\n", + "Ms=7##dB\n", + "L=((plx-prx-Ms-(lc*ncc))/(af+ac))##\n", + "TTX=12##NS\n", + "TRX=11##NS\n", + "NS1=3##NS/KM\n", + "NS2=1##NS/KM\n", + "tmat=(NS1*L)##ns\n", + "tint=(NS2*L)##ns\n", + "tsys=sqrt((TTX**2+tmat**2+tint**2+TRX**2))##ns\n", + "print \"maximum possible link length = %0.2f km\"%L\n", + "print \"part (b)\"\n", + "af=3##dB/km\n", + "ac=0.5##dB/splice\n", + "nc=1##\n", + "lc=1##dB\n", + "ncc=1.5##\n", + "plx=-0##dBm\n", + "prx=-25##dBm\n", + "Ms=7##dB\n", + "L=((plx-prx-Ms-(lc*ncc))/(af+ac))##\n", + "TTX=1##NS\n", + "TRX=5##NS\n", + "NS1=9##NS/KM\n", + "NS2=2##NS/KM\n", + "tf=((NS1*L)**2+(NS2*L)**2)##\n", + "tsys=sqrt((TTX**2+tf+TRX**2))##ns\n", + "df=0.35/(tsys*10**-3)##\n", + "print \"system bandwidth = %0.2f MHz\"%round(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.3 : Page 310" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "no. of subscribers are 38.0\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi,log10\n", + "\n", + "#no. of subscribers\n", + "pt=1##mW\n", + "pn=-40##dBm\n", + "pn1=10**(pn/10)##\n", + "c=0.05##\n", + "d=0.11##\n", + "x=((pn1)/(pt*c))##\n", + "y=((log10(x))/(log10((1-d)*(1-c))))##\n", + "n=y+1##\n", + "print \"no. of subscribers are\",round(n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.4: Page 311" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total power, P_tot = 92.4 mW\n" + ] + } + ], + "source": [ + "# Total power\n", + "#given data :\n", + "L_eff=20## in km\n", + "del_lamdaC=125## in nm\n", + "gR=6*10**-14## m/W\n", + "A_eff=55*10**-12## in m**2#\n", + "del_lamdaS=0.8## in nm\n", + "N=32## number of channels\n", + "F=0.1## constant\n", + "P_tot=(4*F*del_lamdaC*A_eff)/(gR*del_lamdaS*L_eff*(N-1))#\n", + "print \"Total power, P_tot = %0.1f mW\"%P_tot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.5 : Page 312" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SBS threshold power for the worst case = 8.66 mW\n", + "SBS threshold power for the best possible case = 17.33 mW\n" + ] + } + ], + "source": [ + "#SBS threshold power\n", + "#given data :\n", + "gb=4*10**-11## in m/W\n", + "A_eff=55*10**-12## in m**2\n", + "L_eff=20## in km\n", + "lamda_p=1.55## micro-m\n", + "n=1.46## constant\n", + "Va=5960## for the silica fiber in m-s**-1\n", + "Vb=(2*n*Va)/lamda_p#\n", + "del_v=100*10**6## in Hz\n", + "del_Vb=20*10**6## in Hz\n", + "b1=1#\n", + "b2=2#\n", + "P_th=((21*b1*A_eff)/(gb*L_eff))*(1+(del_v/del_Vb))\n", + "P_th1=((21*b2*A_eff)/(gb*L_eff))*(1+(del_v/del_Vb))\n", + "print \"SBS threshold power for the worst case = %0.2f mW\"%P_th\n", + "print \"SBS threshold power for the best possible case = %0.2f mW\"%P_th1" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter13_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter13_1.ipynb new file mode 100644 index 00000000..0f45a4e0 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter13_1.ipynb @@ -0,0 +1,187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter13 - Fiber-optic sensors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.1: Page 327" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f105deb4d90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\np53mVDqWnESdRM2sy1RS6fTpKZWefLJTqY0dJ1GcRM26lVPp2HISdRI1sy7mVGpjzUkUJ1GzXuBU\nOvqcRJ0tvR97AAAPYklEQVREzaxHOJXaWHASxUnUrNc4lY4OJ1EnUTPrQU6lNlqcRHESNetlTqUj\n5yTqJGpmPa6SSvfYw6nUhs9JFCdRM0ucSofHSbQLkqikaZJmS7pH0hdrfL6PpFsl3SbpaklblFFO\nM2t/TqU2XB2dRCX1AXcDU4FHgBuAvSPirkI/2wN3RsTfJE0DZkbEdlXjcRI1s0U4lQ7NSbTzk+gU\n4N6IuD8iXgbOA2YUe4iIayPib/ntH4G1WlxGM+tATqXWjE5vRNcEHiq8fzh3q+dA4KIxLZGZdY2+\nPjjssNSYnnMO7Lor3Hdf2aWydrJU2QVYQk0fg5W0C/BhYIdan8+cOXPh6/7+fvr7+5ewaGbWLSqp\n9LvfhSlT4Kij4OMfh3GdHkOGaWBggIGBgbKL0VY6/ZzodqRznNPy+yOABRFxbFV/WwC/BKZFxL01\nxuNzombWlOK50lmzYL31yi5ReXxOtPMP594IbChpsqTxwF7ABcUeJK1DakD3rdWAmpkNR/Fc6ZQp\nPlfa6zo6iQJI2h04HugDZkXE0ZIOBoiIH0j6EfAu4ME8yMsRMaVqHE6iZjZsvZ5KnUS7oBEdDW5E\nzWyk5s9P50qPOab3zpW6EXUjCrgRNbMl14up1I1o558TNTNrCz5X2pucRHESNbPR1Sup1EnUSdTM\nbNQ5lfYOJ1GcRM1s7HRzKnUSdRI1MxtTTqXdzUkUJ1Eza41uS6VOok6iZmYt41TafZxEcRI1s9br\nhlTqJOokamZWCqfS7uAkipOomZWrU1Opk6iTqJlZ6ZxKO5eTKE6iZtY+OimVOok6iZqZtRWn0s7i\nJIqTqJm1p3ZPpU6iTqJmZm3LqbT9OYniJGpm7a8dU6mTqJOomVlHcCptT06iOImaWWcpptLTToN1\n1y2nHE6iTqJmZh2nmEq33daptExOojiJmlnnKjOVOok6iZqZdTSn0nI5ieIkambdodWp1EnUSdTM\nrGs4lbaekyhOombWfVqRSp1EnUTNzLqSU2lrOIniJGpm3W2sUqmTqJOomVnXcyodO06iOImaWe8Y\nzVTqJOokambWU5xKR5eTKE6iZtabljSVOok6iZqZ9Syn0iXnJIqTqJlZJZUut1x6XmkzqdRJ1EnU\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f10487627d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdQAAAEZCAYAAAAuUdQGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcHFW5//HPl7AjJEGQyJYoImuAgDeERRkBvQFUEBcE\ntyAg6uXiBnLxohm8P0UEL8QVBERcAEFBFmUnA8hqJEBYDUhYZFFJwqZcCXl+f5zTpNLpnulJerq6\np7/v12te07Wfqq6up+o8p6oUEZiZmdmyWa7sApiZmQ0HDqhmZmZN4IBqZmbWBA6oZmZmTeCAamZm\n1gQOqGZmZk3Q8oAq6XlJ45Zy2g9LuqK5JWpouTtJmp3L/p5WL7+dSVpF0iWS5kv6ZYuXfbekt7Vy\nmXm5Z0qaK+mWBsYdJ2mhpAF/a5KmSLqhOaVctrIMYRnOkbT3IKc5WtJp/Qxfpu0m6SeS/qfBcedI\n2m1pl9UMkt4r6TFJz0naplW/A0k9kh4bxPh9kg5qcNyFkt649KVbdpI+LenpvF3XLMYqSSdK+tRA\n8+j3hyXpcknH1ui/t6Qnl+aHGRGrR8Scgcar9eOPiF9ExL8PdplN8DXgO7nsF1cPlLSzpJtyUHlG\n0u8lvaWEcpbh/cDrgDUjYr+hWkitg15EbBkR1w/VMuuU463A7sC6ETFpiJe1TAeZfPDftUllWeZg\nLGkrYKuIuGgw00XEcRFxSLPKUWsR+W9Q40rqlfSzJpajUScCn4mINSLijjJ+Bw0azHZ91WBOcJpF\n0grAt4Hd8nadWxWrTgS+nMera6Cd8ifAR2r0/yjw84hYOIgCL9/ouNWTLuV0zbQhcG+tAZLWAC4F\npgGjgfWAY4H/a1npyjUW+NNg9oUONxaYExEvtWh5y7L/xzJOX8uyzO9Q4OdtUI5WzG9ISBL9HI9s\nqY0BVgbuqzUwIp4C7gf6r6GMiLp/wCrAfOCthX6jgX8C44GJwM3APOAJ4LvACoVxFwKfAWYDDxX6\nvTF/3guYCTwLPApMLUz7aB73eeA5YBIwBbihMM6OwB9yGW8DdigM6yNdWf4+T38F8Np+1vWQXM5n\ngIuA1+f+DwGvAP/I81mharq3APP6me9GwLXA34G/kQ4oIwvD5wBfBO7M63EusFJh+Jfytn0cOLi4\n/Wos60DSD+25XO5PFoatRQr88/I6Xg+oznym5e3/LDAD2LnOeJUTh3/l7+kTQC/ws8I443KZl2vk\newF2Bm7K5XwU+Hj+bv6Vl/U8cFFh2+2WP68EnAz8Jf+dBKyYh/Xk7fcF4Om8Paf0852tC1yct9Ns\n4ODc/yDSvr8gl2NqjWmXI53N/i1/B/9Rtf4jgTMK3+n/FIZNIe/f+ftZCLyQl/UBYFT+Dv8KzAUu\nAdarsw4/Y9F++zxwROG7+BjwSC7jlwvTCPgv4EHS/vpLYHSN3+PzwPYMsG/XKNNDwI6F7keAbfPn\nD+f5b1bY1hfmz73kfYrax4WPAzcAJ+Tt8mdgcj/lmADcnqc/FzgH+J/C8HcBd5D2wRuB8YVhDwO7\nApNZfN+f2cBv8CjgFmBE7v40cDd5Px3oj7SPv1DYL2ZX/w5qTNPfMXag/WEV0kXVXOAe4EjgsX7K\n9w5S0JlPigV9wEGF4Z/I22YucDmwYWHYQuCNwCep/Vuv7JfP5bLsk/uvSPqdblmY1+uAF+nneF9V\n7jcXtuvzwNXFMhXG+zLw437n1cDCfgScVug+FLg9f96WFFSXI5253wt8tmojXUE6EKxUXUhgF2CL\n/Hk88BSwd+4eS+FAVOOAsyZph/9wXv6H8hdVOQD0kQ6GbyKdeUwHjquzjrvmnWmb/AV9B7iu+kdU\nZ9rVSQeUn5B+ZKOrhm8E7AasQApq1wEnVc37FtIZ0ui8DQ/NwyYDTwKbkXbun5MOkvUC6p7AG/Ln\nt+WdapvcfRzwQ2BE/tupn+/8w7ksy5GC0JPU+dEDU4GfVnUPFFBrfi/5O38O2C+XcU1g6zzsTOBr\nVct+9XshBemb8jZei3Qg/Foe1gO8TDowjwD2yNum5sGfFMy+l/eFrUkB7O152McpnNTVmPZTpLPc\n9fI2nJ6/s8r6X5i/h1WAtYFbyQddljxhrP5Brwm8N2+31wDnkYNOnbIstt8WvotTSQfnrYCXgE3y\n8M/mbbguaX89BTi7n99jv/t2VVlWy9MXT57OAr5QOM7MBj6Vu39KPpaweECtd1z4FykIK38Hf6lT\njhVJweOzeV94X562sq9MIJ10/Vue18fydlyhxj632L7fz29wQu5W3kZTgY1Jx6utC9POJx3Tav19\nqZ/9or/jU3/H2IH2h2/m8o4C1icF/0frLGct0m9337xdP0f6zX0iD987f7+bkI4r/w3cWGudqP1b\nfz8wJn/+ICkArpO7vw98szDuZ1kUiDfsZ5vOAz7Uz35VvZ33Bf5Y7/cW0VhA3SkvuHK2fyOFoFk1\n7ueAC6oK1FM1Tn9XWCcD/1v1ZdcLqB8Fbqma/ibg4/nzdBY/2/o0cFmd5Z5R9YWsRvqRbTjQDpuH\nb5p3gsfyTnQR8Lo64+5DPiEpzPuAQvfxwA/z5x8DXy8M26i/7VdjWRcCh+fPxwK/ATZqZNqq+cyl\ncJZeNayXxQNodfdi32N/3wtwNPDrOss5k8JVRPX3Qjp7nVwY9k7g4fy5h3SlVtyXngYm1ljOBqQr\n0NUK/b4BnFm9D9Yp57UsflXyjsr6A+uQDlgrF4bvD1xba94DfdekE8C5/QyvF1DXLfS7Ffhg/nxf\n1fivJ/0Olqv+HhvZt6uGrZenX7HQ7xMsOvDdm7vPyd1zWHQy+Oo+VascebvNLnSvmsdZ4jdICnJ/\nqepXPPn6IUsezO8n19JV7XOvlquR32DuHku6oroXOGqwv8Va+0X19zzAtLWOsfX2h4eAdxaGHUKd\nK1TSicdNVf0eY1FAvazyOXcvRzrZ2KB6najxW6+xvJnAe/Ln7YFHCsNmAO8f5DattV9Vb+d3kGta\n6/0NmNiPiBtJV2DvlbQR6cztbABJb5Z0aW6g9CzwdeC1VbOo2ypM0vaSpkv6q6T5pKvf6unrWZdU\nhVH0SO5f8VTh8z9JZ/W1vD5PC0BEvEja6ddrpCARcX9EHBgRGwBb5jKcDCBpHUnnSno8b6OfseQ6\nVpdztUK5itvv8f7KIWkPSbfkhlHzSGfLlWWdQAo6V0p6SNJR/cznCEn35kZW80jVlGv1t+xBqve9\nbECqrlsa61L4Dkn7RnFfeCYWz/P+g9r7w7qkIPVi1bwa2hdY8jsr7qNjSVdzT0qal7ftKaQr1QFJ\nWlXSqbmx0bOkq4eROa82GMXtX9wOY4ELC2W7l3RysU6d8jSyb1fMz/9XL/S7HnirpDGkq5rzgZ0k\njSXVHtyxNOsUEf/IH+t9v3+p6lfcb8YCX6xsg7wd1mfxfamuAX6DRMQjpFqasaQrqyHV4DG23v6w\nLvX35WrrsuTxqTjtWGBaYZs+k/s39LuS9DFJMwvTb0lej4i4FfhnboW8KenCY4nGo02wOov245oa\nbSn3U9IZyEeAyyPib7n/D0k/ujdFxEjSZXz1PKOf+Z5NumpaPyJGkQ4ulen7mw7Sj2JsVb+xLPlj\nacQTpDMUACStRvqyBj2viHiAVJW1Ze71DVKV35Z5G32Uxrf7k6QgU7FBvRElrQT8GvgW6cx8NPA7\ncmOLiHghIo6IiI1IifUv1GoBmluxHgl8ICJG5fk8S/1GG9Xf0wukK4SKMf2sX7VHST+GRpZTbbHv\nkFTV88Qgll2cz5qSigfjDRngZKbgyTx+cdqKx0i5oddGxOj8NzIixjc47y+S8j0T8760C+l7afS7\nGcijpKv80YW/VSPiyTrzanjfzicoD5Gq/Cr9HiQdwP+TlGJ5nnRw/yQpJ1prPQa7TtWeZMmDePE4\n8iipVqi4DV4TEbVuCVusLAP9BvM4e5HyvteQcu3F6V/It2rU+vuvpVzf/o6xA+lvX672BIXjUz7J\nKx6vHiXV3BS362oRUevWs+rtOpaUEvgP0t0Eo0nVz8X9/ixSfPoocH5E/CtPu2E/2/R5SfsPsA2K\nNiPl1usaTEB9B6lRzFmF/q8hJXH/kc8MPj2IwlWmnxcR/5I0ETiARRvzb6RL7noH2MuAN0vaX9Ly\nkvYjVb1eWhin0TP3c4ADJW2dfxTfIFUn93dGlhYgbSLpC5LWy90bkKrxbi6s44vAc3mcIxsoT6Xc\n5+VybSppVeAr/UyzYv77O7BQ0h6kas9KOd8l6U15R3+OdCB8pcZ8Viddlfxd0oqSvgqs0UBZK+4A\n3iZpA0kjSdW4A01TcTawu6QP5O/0tZK2zsOeJjVaqOcc4BhJa0laC/gq6YppUCLiMVLq4DhJKynd\n6vEJGm+deh5wuKT1JI0mNaaozPtJ4ErgfyWtLmk5SRup/j2ET7P4/v8a0hX9s5LWJOXi+lM9/UBO\nAb4haUMASWtr0X3XtX6Pg923f0c6CSi6Djgs/4d09VbshsX3l4GOCwO5CVgg6XBJK0jal1TrVnEa\n8ClJE5WsJmmvqhOsiqeAcYUagoF+g2vl+R9EqqZ+dx4HgBy4V6/z982lXN/+jrEDOQ84WtIoSeuT\nTnzq+S2whdI9sssDh7P4yfQppNtONgeQNFLSB+rMq/q3vlou89+B5SQdyKILloqfk3KcHybFKwAi\n4tF+tunqEXHOANugaBdS3KmroYCaqyluJF15FC+ljyB9Qc+RziDOZeCzyWK/zwBfk/QcKVi8ehaY\nq22+DtyodBP99hTua4qIZ0it8b5I2tBHAO+KiLl1lhXU2ZEi4pq8/F+TzrTeQGrk1IhKi8dbJb1A\nCqR35XJByl1uS7rKuyQvo78duriOl5MaSE0H/sSiIL3ELTn57P5w0o9gLimoF+/3exNwVS7vTcD3\nI+K66vmQWt9dnpc3h3QA7+/EYrHtGhFXk77Hu0gtsC9hyfWt+b3kE5g9SdvuGVKeZKs83hnA5rnK\n54Ia5fh/pNzJXflvRu5Xa5kD2Z90tfsEcAHw1Yi4trq8dZxGaoh3Zy5D9ff9MdJBt9La8XwWHXiq\n590LnJXX+f2kNMIqpP39JtKPu7+yHEc6yZgn6QuFZdQzjfT7vjL/Jm8mNTqs9XucyOD37R+RDnhF\n15EO+tfX6a6UubKP9HtcqJpmCRHxMunAO4W0j30wl7sy/I+kXOH3SN/PbNJ3Vmt+5+f/z0ia0cBv\n8FTgNxFxeT5OHQScnk+8BmMw+3LdY2wD8zqWVB3+MOmY8NN64+fj8QdIDZn+Tjre/L4w/Dek9iHn\nKqUHZgHFZwoU57vYbz0i7iXdI3oz6SRmy+K88/wfI7XcXhgRiw0bhLr7kKTXk65Qf9PfDJSTrW1P\n0o9JTcD/Wq+KTNJ3SC04/0G6LWJm7j+ZdDAaAZweEce3ptTNJWkz0o64YnTPfZ82jEj6BXBeDPLh\nDmYDkXQGqcHZV4dg3icCD0bEKf2O10EB9a2k/NxPawVUSXsCh0XEnvmsdVpETJI0AniA9HSbv5Cu\nmvaPiJo38LYbSe8lVZWtSqpuXxAR+5ZbKjOz9qH0iMCZpJbhj/Q/9tDpmIfjR8QNpNt36nkPOb+b\nW32NUmo9OJF0ZjEnV/ecS7onqlN8kpRTeJB0S85g89RmZsOW0mMKZwHfKjOYAizt4wDb0XoseYvJ\neizZ9PtxUs6zI0TEHgOPZWbWnSLiK/TfYLNlOuYKtUEd8TxOMzMbfobTFepfWPy+p/VJV6MrsOS9\nnDXvKZTUGQllM7M2ExFdf0EznK5QLyY1b0fSJGB+RDxNunVhY6XXPq1Iek5s3adozJwZ7LJLMH58\ncPXVg38s2HD5mzp1aullaJc/bwtvC2+L/v8s6ZgrVEnnkG6sXUvpJbdTSVefRMSpEfE7SXtKepB0\ns/mBedgCSYeR7g0cAZwR/bTw3WYbmD4dLrwQDjkExo+HE0+EjTce4hU0M7OO1jEBNSIGfERURBxW\np/9lDPCEiyIJ9t0X9twTpk2DHXaAKVPgmGNg1KjGy2xmZt1jOFX5Nt3KK8NRR8Hdd8Ozz8Kmm8Kp\np8KCBWWXbOj19PSUXYS24W2xiLfFIt4WVq1jHuzQCpKiv+1xxx3wuc/B3Llw0kmw224tLJyZWZuS\nRLhRkgNq0UABFSAi5VePOML5VTMzcECtcJXvIFXyq/feCzvumPKrRxwB8/t9S56ZmQ13DqhLqZvz\nq2ZmtiRX+RY0UuVbj/OrZtatXOWbOKAWLEtABedXzaw7OaAmrvJtIudXzcy6lwPqEHB+1cys+7jK\nt2BZq3zrcX7VzIYzV/kmDqgFQxVQwflVMxu+HFATV/m2iPOrZmbDmwNqizm/amY2PLnKt2Aoq3zr\ncX7VzDqdq3wTB9SCMgIqOL9qZp3NATVxlW8bKOZXd9op5VePPDJVCZuZWWdwQG0jK68MX/pSyq/O\nnw+bbJLyq6+8UnbJzMxsIK7yLSiryreeYn715JNh113LLpGZ2ZJc5Zs4oBa0W0CFxfOrW20FJ5zg\n/KqZtRcH1MRVvm2umF/dYQfnV83M2pUDaoco3r/q/KqZWftxlW9BO1b51uP8qpm1C1f5Jg6oBZ0U\nUMH5VTNrDw6oSUdV+UqaLOl+SbMlHVVj+GhJF0q6U9KtkrYoDJsj6S5JMyXd1tqSDw3nV83M2kfH\nBFRJI4DvAZOBzYH9JW1WNdqXgdsjYmvgY8C0wrAAeiJiQkRMbEWZW8X5VTOz8nVMQAUmAg9GxJyI\neBk4F9i7apzNgOkAEfEAME7S2oXhw7pKYswYOO00uPxyOOccmDABrr227FKZmXWHTgqo6wGPFbof\nz/2K7gT2BZA0ERgLrJ+HBXC1pBmSDhnispZqm21g+nTo7YWDD4Z99oHZs8sulZnZ8LZ82QUYhEZa\nC30TmCZpJjALmAlUKj53jogn8hXrVZLuj4gbqmfQ29v76ueenh56enqWtdylqORX99wTpk1L+dUD\nD4RjjoGRI8sunZl1sr6+Pvr6+souRtvpmFa+kiYBvRExOXcfDSyMiOP7meZhYHxEvFDVfyrwQkR8\nu6p/R7XyHYynnoKvfAUuuQSOPTZduY4YUXapzGw4cCvfpJOqfGcAG0saJ2lFYD/g4uIIkkbmYeRq\n3esi4gVJq0paPfdfDXgn6Qq2azi/amY2tDrmChVA0h7AycAI4IyIOE7SoQARcaqkHYCfkKqH7wYO\niohnJb0BuDDPZnngFxFxXI35D9sr1CLfv2pmzeQr1KSjAupQ65aAWvHSSym/esIJzq+a2dJzQE06\nqcrXmsz3r5qZNY+vUAu67Qq1WvH5wCedBLvtVnaJzKwT+Ao1cUAt6PaACim/esEF6RGGzq+aWSMc\nUBNX+dpiJHjf+/x8YDOzwXJAtZqK+dV585xfNTMbiKt8C1zlW9/MmSm/Om+e379qZotzlW/igFrg\ngNo/51fNrBYH1MRVvtYw51fNzOpzQLVBc37VzGxJrvItcJXv0inmV33/qln3cZVv4oBa4IC69Ir5\n1fHj4cQTnV816xYOqImrfK0pivnVHXdM+dUjjkiPNDQz6wYOqNZU1c8H3nTTlF9dsKDskpmZDS1X\n+Ra4yrf5nF81G/5c5Zs4oBY4oA4N51fNhjcH1MRVvjbknF81s27ggGot4/yqmQ1nrvItcJVvazm/\najY8uMo3cUAtcEBtPedXzTqfA2riKl8rlfOrZjZcOKBaW6iVXz3lFOdXzaxzuMq3wFW+7cP5VbPO\n4SrfxAG1wAG1vTi/atYZHFCTjqrylTRZ0v2SZks6qsbw0ZIulHSnpFslbdHotNZ+nF81s07SMQFV\n0gjge8BkYHNgf0mbVY32ZeD2iNga+BgwbRDTWpvy/atm1gk6JqACE4EHI2JORLwMnAvsXTXOZsB0\ngIh4ABgn6XUNTmttbswYOP10uOwyOPts2HZbuOaasktlZpZ0UkBdD3is0P147ld0J7AvgKSJwFhg\n/QantQ4xYQL09cHUqXDIIbD33jB7dtmlMrNut3zZBRiERloLfROYJmkmMAuYCbzS4LQA9Pb2vvq5\np6eHnp6eQRXSWqOSX91rL5g2LeVXp0yBY46BUaPKLp3Z8NbX10dfX1/ZxWg7HdPKV9IkoDciJufu\no4GFEXF8P9M8DIwHtmxkWrfy7VxPPZWC6aWXwrHHwkEHwfKddLpo1sHcyjfppCrfGcDGksZJWhHY\nD7i4OIKkkXkYkg4BrouIFxqZ1jpbMb96zjnOr5pZ63XMOXxELJB0GHAFMAI4IyLuk3RoHn4qqQXv\nTyQFcDdwUH/TlrEeNrQmTIDp0+HCC1N+1fevmlmrtLTKN7e4/QDwNmAcKbf5CHA9cH5E/LVlhanB\nVb7Dy0svpfzqCSc4v2o2lFzlm7SsylfSGcB5wGuAU4CPAwcCpwKrA+dJOr1V5bHhr3j/6rPP+v5V\nMxtaLbtClbR1RNw5wDhbRcRdLSlQ7eX7CnUYu+OO9HzguXP9fGCzZvIVatIxrXxbwQF1+ItI+dUj\njnB+1axZHFCTVl6hzupncETEVi0pSD8cULuH86tmzeOAmrTytpl357/L8t8BwIeB3+Vus5ZxftXM\nmq3lVb6S7oiIbar6zYyICS0tSA2+Qu1ezq+aLT1foSZlPNhBknYudOwEdP0XYeXaZpt0/2pvr58P\nbGZLp4yA+gngB5IekfQI8IPcz6xUEuy7r9+/amZLp+UBNSL+mBsgbQVsHRFbR8TtrS6HWT3Or5rZ\n0mh5QJU0Jj/k4ZcRMV/S5pIOanU5zAYyZgycdhpcfrmfD2xmAyujUdLlwJnAf0fEVpJWAGZGxJYt\nLUgNbpRk9fj+VbP63CgpKSOHulZE/JL0nlIi4mXAlWnW1pxfNbOBlBFQX5D02kpHfs/psyWUw2zQ\nnF81s3rKqPLdDvgusAVwD7A28P6BnvPbCq7ytcHy/atmrvKtKOVZvjlvuknufCBX+5bOAdWWhvOr\n1u0cUJMyWvl+EFglIu4G3gv8UtK2rS6HWbM4v2pmUE4O9SsR8Vx+WtJuwI9J70c162jOr5p1tzIC\n6iv5/7uA0yLiUmCFEsphNiR8/6pZdyqjUdJvgb8A7wAmAC8Bt0bE1i0tSA3OoVqzFfOrW22VXhfn\n/KoNN86hJmVcoX4QuAJ4Z0TMB0YDR5ZQDrMhV8yv7rBD+jvyyFQlbGbDS8sCqqQ18seVgOnAM5LW\nBP4PmNGqcpiVoZhfnT8fNtkk5VdfeWXgac2sM7SsylfSbyNiL0lzgOqFRkS8sSUF6YerfK1Vivev\nnnwy7Lpr2SUyW3qu8k1KuQ+1XTmgWis5v2rDhQNq0soq3237+2twHpMl3S9ptqSjagxfS9Llku6Q\ndLekKYVhcyTdJWmmpNuauGpmS8X5VbPhpZVVvn0sWdX7qoh4+wDTjwAeAHYntRL+A7B/RNxXGKcX\nWCkijpa0Vh5/nYhYIOlhYLuImNvPMnyFaqV56in4ylfgkkvg2GPh4INhxIiyS2U2MF+hJsu3akER\n0bOMs5gIPBgRcwAknQvsDdxXGOdJ0ovLAdYAnomI4m31Xf+FW/uq3L9aya9+//vOr5p1kpYF1CJJ\n44HNgJUr/SLipwNMth7wWKH7cWD7qnFOA66V9ASwOukWnVcXAVwt6RXg1Ig4bSmLbzakttkGpk9P\n+dWDD3Z+1axTtDyg5mrZXUhvm/ktsAfwe2CggNpIXeyXgTsiokfSRsBVkraOiOeBnSLiSUlr5/73\nR8QN1TPo7e199XNPTw89PT0NLNasuSr51T33hGnTUn71wAPhmGNg5MiyS2fdrq+vj76+vrKL0XbK\neFLS3cDWwO0RsbWkdYBfRMTuA0w3CeiNiMm5+2hgYUQcXxjnd8DXI+LG3H0NcFREzKia11TghYj4\ndlV/51CtLTm/au3MOdSkjCcl/TMiXgEWSBoJ/BXYoIHpZgAbSxonaUVgP+DiqnHuJzVaIgfqTYA/\nS1pV0uq5/2rAO4FZTVkbsxaofj7whAlw7bVll8rMisrIof5B0mhSvnMG8CJw00AT5Za6h5EeWzgC\nOCMi7pN0aB5+KvAN4ExJd5JOFr4UEXMlvRG4QBKkdf5FRFw5BOtmNqScXzVrX6U+2EHSG4DVI+Ku\n0gpR4Cpf6yQvvZTyqyecAFOmpPzqqFFll8q6kat8kzKqfJG0taS9SW+b2VjSvmWUw6yT+f2rZu2l\njEZJZwLjgXuAhZX+EXFgSwtSg69QrZMVnw980kmw225ll8i6ha9QkzIC6r3AFu0YuRxQrdMVnw88\nfjyceKLzqzb0HFCTMqp8/wBsXsJyzYa94vOBd9wx3b96xBHplXFmNrTKCKhnAjdL+pOkWfmvLRol\nmQ0Xzq+atV4ZVb4PAZ8H7mbxHOqclhakBlf52nA1c2bKr86b5/yqNZ+rfJMyAurNEbFDSxfaIAdU\nG84i4IIL0ivinF+1ZnJATcqo8r1D0tmS9pf0vvzn22bMhpgE73uf86tmQ6WMgLoy8H+kx/+9K/+9\nu4RymHWlYn51/nznV82apaVVvvkl4d+KiC+2bKGD4Cpf60bOr9qycpVvUkYO9RZgh3aMXA6o1q2c\nX7Vl4YCalJJDBS6S9FHnUM3ag/OrZsuurBzqXGBXnEM1ayvOr5otvVLfNtNuXOVrtjjnV60RrvJN\nWn6FKmkDSRdK+lv++7Wk9VtdDjMb2IQJ0NcHvb1wyCGw994we3bZpTJrT2U9evBiYN38d0nuZ2Zt\nyM8HNmtMGQF17Yg4MyJezn8/AV5XQjnMbBCcXzXrXxkB9ZncwneEpOUlfQT4ewnlMLOlMGYMnH46\nXHYZnH02bLstXHNN2aUyK18Z96GOA74LTMq9bgL+MyIebWlBanCjJLPB8f2rBm6UVOFWvgUOqGZL\n56WXYNo0OOEEmDIFjjkGRo0qu1TWKg6oSRlXqK8DDgHGAcvn3hERn2hpQWpwQDVbNk89lYLppZfC\nscfCQQfB8ssPPJ11NgfUpJTXtwHXA39k0ftQIyJ+3dKC1OCAatYcvn+1uzigJmUE1DsiYpuWLrRB\nDqhmzeP8avdwQE3KaOV7qaS9lmZCSZMl3S9ptqSjagxfS9Llku6QdLekKY1Oa2bN5ecDW7cp4wr1\nBWBV4F/3EviUAAAVZUlEQVTAy7l3RMQaA0w3AngA2B34C/AHYP+IuK8wTi+wUkQcLWmtPP46QAw0\nbZ7eV6hmQ8T51eHLV6hJy69QI+I1EbFcRKwcEavnv36DaTYReDAi5kTEy8C5wN5V4zwJVOa1BvBM\nRCxocFozG0K+f9WGu5YFVEkbLeM46wGPFbofz/2KTgO2kPQEcCfw2UFMa2YtUHk+8NSpfj6wDS+t\nrHD5hqTVSM/xnUG6mhTweuAtwHuA54EP1Zm+kbrYLwN3RERPDs5XSdp6MIXs7e199XNPTw89PT2D\nmdzMGlDJr+61V7p/dYcd4MADU5XwyJFll84G0tfXR19fX9nFaDstzaFKehMpYO4EjM29HwF+D5wT\nEX/uZ9pJQG9ETM7dRwMLI+L4wji/A74eETfm7muAo0gnDv1Om/s7h2pWgur86sEHw4gRZZfKGuUc\natIxT0qStDypYdFuwBPAbSzZKOl/gWcj4lhJ65Dudd0KeG6gafP0DqhmJSrev3ryybDrrmWXyBrh\ngJp0TEAFkLQHcDIwAjgjIo6TdChARJyaW/aeCWxIyg8fFxFn15u2xvwdUM1KVrx/daut0uMMff9q\ne3NATToqoA41B1Sz9lF8PrDzq+3NATUp48EOZmYDKr5/dd482GST9P7VV14pu2RmtZXxYIftWLLF\n7rPAI/me0dL4CtWsfc2cCZ//PMyd6+cDtxtfoSZlBNRbgO2Au3Kv8cA9wEjg0xFxRUsLtHjZHFDN\n2pjzq+3JATUpo8r3CWCbiNguIrYDtgH+DLwD+FYJ5TGzDlF8PvAOO6S/I4+EZ58tu2Rm5QTUTSLi\nnkpHRNwLbBoRD9HYwxvMrMs5v2rtqIwq3/OAZ0jP0xXwQWBt4CPA7yPi31paoMXL5ipfsw7k+1fL\n5SrfpIyAuirwGdLTkgBuBH4AvASsFhHPt7RAi5fNAdWsQzm/Wh4H1MT3oRY4oJp1Pt+/2noOqEnL\nc6iSdpZ0VX7R98P5r+4zfM3MBsP5VStLGVW+DwCfA24HXt3FI+LvLS1IDb5CNRt+nF8der5CTcoI\nqLdGxPYtXWiDHFDNhifnV4eWA2pSxm0z0yWdIGkHSdtW/kooh5l1Cd+/aq1QxhVqHzXuN42It7e0\nIDX4CtWsO/j9q83lK9TErXwLHFDNuovzq83hgJqUElAlvQvYHFi50i8ivtbyglRxQDXrPs6vLjsH\n1KSM22ZOJT0d6XAWPSlpbKvLYWYGzq9a85TRKGnHiPgYMDcijgUmAZuUUA4zs1f5/lVbVmUE1H/m\n//+QtB6wABhTQjnMzJYwZgycfjpcdhmcfTZMmADXXlt2qawTlBFQL5E0GjiB9HCHOcA5JZTDzKyu\nCROgrw+mTk2tgPfZB2bPLrtU1s5KbeUraSVg5Yhoi2yFGyWZWS1+PnD/3CgpadkVqqSJkl5f6P44\ncD7wP5LWbFU5zMwGy/lVa0TLrlAlzQR2i4i5kt4G/BI4DJhAesH4+1tSkH74CtXMGuH7VxfnK9Sk\nlQH1zojYOn/+PvC3iOitHlYmB1Qza5TvX13EATVpZaOkEZJWyJ93B6YXhi3fyAwkTZZ0f37121E1\nhh8haWb+myVpgaRRedgcSXflYbct89qYWVfz/atWrZUB9RzgOkkXA/8AbgCQtDEwf6CJJY0AvgdM\nJj1laX9JmxXHiYgTI2JCREwAjgb6IqIy7wB68vCJzVopM+tuzq9aRcsCakR8HfgicCawc0QszIME\n/GcDs5gIPBgRcyLiZeBcYO9+xj+AJW/H6foqCTMbGr5/1Vp6H2pE3BwRF0bEi4V+f4qI2xuYfD3g\nsUL347nfEiStCvw78Ovi4oGrJc2QdMjgS29mNjDfv9q9GspdtonBtBZ6N/D7QnUvwE4R8aSktYGr\nJN0fETdUT9jb2/vq556eHnp6epayuGbWrSr51b32Svev7rDD8Lp/ta+vj76+vrKL0XY65vVtkiYB\nvRExOXcfDSyMiONrjHsh8MuIOLfOvKYCL0TEt6v6u5WvmTXdcH//qlv5JmU8enBpzQA2ljRO0orA\nfsDF1SNJGgm8Dbio0G9VSavnz6sB7wRmtaTUZtb1nF/tDh1T5RsRCyQdBlwBjADOiIj7JB2ah5+a\nR90HuCIi/lmYfB3gQkmQ1vkXEXFl60pvZrYov3rBBekqtdvvXx1uOqbKtxVc5WtmrTKcng/sKt+k\nk6p8zcyGDd+/Ovz4CrXAV6hmVpZOfj6wr1ATB9QCB1QzK1OnPh/YATVxla+ZWZuo9XzgI46A+QM+\nnNXagQOqmVmbKeZX58+HTTdN+dUFC8oumfXHVb4FrvI1s3ZUzK+edBLstlvZJVqcq3wTB9QCB1Qz\na1fF/Or48XDiie2TX3VATVzla2bWAYr51R13dH61HTmgmpl1EOdX25erfAtc5WtmnaYd8quu8k0c\nUAscUM2sE5WdX3VATVzla2bW4ZxfbQ8OqGZmw4Tzq+VylW+Bq3zNbDhpVX7VVb6JA2qBA6qZDTet\nyK86oCau8jUzG8acX20dB1Qzsy7g/OrQc5Vvgat8zaxbNDO/6irfxAG1wAHVzLpJs/KrDqiJq3zN\nzLqU86vN5YBqZtblnF9tDlf5FrjK18xs8PlVV/kmDqgFDqhmZslg8qsOqElHVflKmizpfkmzJR1V\nY/gRkmbmv1mSFkga1ci0Zma2iPOrg9cxAVXSCOB7wGRgc2B/SZsVx4mIEyNiQkRMAI4G+iJifiPT\nmpnZkpxfbVzHBFRgIvBgRMyJiJeBc4G9+xn/AOCcpZzWzMwKxoyB00+Hyy6Ds8+GbbeFa64pu1Tt\nZfmyCzAI6wGPFbofB7avNaKkVYF/Bz4z2GnNzKy+CROgry/lVw85JOVXLemkgDqY1kLvBn4fEZXa\n/oan7e3tffVzT08PPT09g1ismdnwd911fcya1ccBB8CsWWWXpn10TCtfSZOA3oiYnLuPBhZGxPE1\nxr0Q+GVEnDuYad3K18xs8NzKN+mkHOoMYGNJ4yStCOwHXFw9kqSRwNuAiwY7rZmZ2dLqmCrfiFgg\n6TDgCmAEcEZE3Cfp0Dz81DzqPsAVEfHPgaZt7RqYmdlw1jFVvq3gKl8zs8FzlW/SSVW+ZmZmbcsB\n1czMrAkcUM3MzJrAAdXMzKwJHFDNzMyawAHVzMysCRxQzczMmsAB1czMrAkcUM3MzJrAAdXMzKwJ\nHFDNzMyawAHVzMysCRxQzczMmsAB1czMrAkcUM3MzJrAAdXMzKwJHFDNzMyawAHVzMysCRxQzczM\nmsAB1czMrAkcUM3MzJrAAdXMzKwJOiqgSpos6X5JsyUdVWecHkkzJd0tqa/Qf46ku/Kw21pWaDMz\n6wodE1AljQC+B0wGNgf2l7RZ1TijgO8D746ILYH3FwYH0BMREyJiYouK3bH6+vrKLkLb8LZYxNti\nEW8Lq9YxARWYCDwYEXMi4mXgXGDvqnEOAH4dEY8DRMTfq4Zr6Is5PPhgsYi3xSLeFot4W1i1Tgqo\n6wGPFbofz/2KNgbWlDRd0gxJHy0MC+Dq3P+QIS6rmZl1meXLLsAgRAPjrABsC+wGrArcLOmWiJgN\n7BwRT0haG7hK0v0RccMQltfMzLqIIhqJU+WTNAnojYjJuftoYGFEHF8Y5yhglYjozd2nA5dHxK+q\n5jUVeCEivl3VvzM2hplZm4mIrk+pddIV6gxgY0njgCeA/YD9q8a5CPhebsC0ErA98L+SVgVGRMTz\nklYD3gkcW70A7xBmZra0OiagRsQCSYcBVwAjgDMi4j5Jh+bhp0bE/ZIuB+4CFgKnRcS9kt4IXCAJ\n0jr/IiKuLGdNzMxsOOqYKl8zM7N21kmtfIdMIw+M6AaSNsgtpO/JD8Y4vOwylU3SiPwwkEvKLkuZ\nJI2S9CtJ90m6N7dp6EqSjs6/kVmSzpa0UtllahVJP5b0tKRZhX5rSrpK0p8kXZmfB9CVuj6gNvLA\niC7yMvD5iNgCmAT8Rxdvi4rPAvfSWCvz4Wwa8LuI2AzYCriv5PKUIrfhOATYNiLGk9JPHyqzTC12\nJulYWfRfwFUR8Wbgmtzdlbo+oNLYAyO6QkQ8FRF35M8vkA6a65ZbqvJIWh/YEzidLn4oiKSRwFsj\n4seQ2jNExLMlF6ssz5FOPFeVtDzp9ry/lFuk1sm3Gs6r6v0e4Kz8+Sxgn5YWqo04oDb2wIiuk8/E\nJwC3lluSUp0EHElq4NbN3gD8TdKZkm6XdFpuOd91ImIu8G3gUdLdBvMj4upyS1W6dSLi6fz5aWCd\nMgtTJgdUV+UtQdJrgF8Bn81Xql1H0ruAv0bETLr46jRbnvTAlB9ExLbAi3RptZ6kjYDPAeNItTev\nkfThUgvVRiK1cu3aY6oDaqqu2aDQvQHpKrUrSVoB+DXw84j4TdnlKdGOwHskPQycA+wq6acll6ks\njwOPR8QfcvevSAG2G70FuCkinomIBcAFpH2lmz0taQyApNcDfy25PKVxQC08MELSiqQHRlxccplK\noXSj7hnAvRFxctnlKVNEfDkiNoiIN5AanVwbER8ru1xliIingMckvTn32h24p8Qilel+YJKkVfLv\nZXdSo7VudjHw8fz540DXnoh3zIMdhkq9B0aUXKyy7AR8BLhL0szc7+iIuLzEMrWLrq3Gyv4T+EU+\n6XwIOLDk8pQiIu7MNRUzSLn124EflVuq1pF0DrALsJakx4CvAt8EzpN0EDAH+GB5JSyXH+xgZmbW\nBK7yNTMzawIHVDMzsyZwQDUzM2sCB1QzM7MmcEA1MzNrAgdUMzOzJnBAtYZI2kfSQkmbDOEymvaY\nQ0k9lVeuSXr30r6Wr5llGkqStpa0R4Pj9knaroFxts2fv7wU5fmcpFUK3YPajpJ2kbTDUix3vKQf\n1xk2R9Kag51nnvZwSR9dmmmtezigWqP2By7N/4dKwzdFK2tophGXRMTxQ12mkk0gvRmnEY08b7U4\n/OilKM9nSW9iqTW/RrydpXuk35HAD+sMW5bv8kzSwy3M6nJAtQHlh+VvDxxGejRjpX9PvpI5P794\n+ueFYXvmfjMkfadwtdgr6YuF8e6WtGH18iRdLemPku6S9J7cf5ykBySdBcwC1q+abnJe5h+B9xb6\nT5H03fz5A/nF0HdI6isMvyi/XP1Pkr5aaxvUKlMe9jFJd+Z5/jT3W1vphdy35b8dC+t/lqTr8xXT\nvpJOzPO8LL8SDEnb5W07Q9LlhWel9kn6pqRb87bYOT9/+WvAfkovQ/9AVdlXkXSu0ovBLwCKV47v\nlHRTXq/zJK22+KT6JrBKnu/Pcs/f5HLdLemQGtvqcNKD46dLuqbQ///lbXSzpNfV206SxgKHAp/P\ny91Z0rsk3aL0tpurKtNXLXclYFLlmcOSXqv0wuu7JZ1G4SUHkj6St+FMSadIWi73Pyhv11uV3qrz\nXYCIeB54RtIW1cs1e1VE+M9//f4BHwZOyZ+vJ71cGaAHmE86eAq4iXRVsTLp9VZj83hnAxfnz1OB\nLxbmPQvYMH9+Pv8fAayeP68FzM6fxwGvABNrlLGyzI1y9y8Ly5wCfCd/vgt4ff68RmH4E8DoPJ9Z\nhXUcqExbAA8Aa+buUYV13il/3pD0fGSA3rwNR5Be1P0P4N/zsAtI7+JdIW/L1+b++5EeiQkwHTgh\nf96D9GJnSM9Q/U6d7+8LwOn583jS+zy3zetxHbBKHnYU8JXCchbbBoX5jc7/V8nbas0ay3y42J/0\nmL698ufjgf8eYDtNBb5QmH5U4fPBwIk1ljkJuKTQ/R3gmPx5z1yGNYHNSM+fHZGH/QD4KGk/fhgY\nRXos6/XFbQocC3y67N+j/9r3r+uf5WsN2Z/0blCA83P37bn7toh4AkDSHaR3Z/4D+HNEPJLHOQf4\n5CCWtxxwnKS3kg6C6xauSB6JiNtqTLMp8HBEPJS7f161zMrVyY3AWZLOIwWwiisjYl5ejwuAtxbW\nsV6Z1gF2Bc6L9J5MImJ+Hn93YDMtqpVePV/9BXBZRLwi6W5guYi4Io8zi3TS8GZSoL46Tz+CFPAr\nKuW+PY9fWb96VeBvBabl8s2SdFfuPwnYHLgpL2dFUiAfyGclVV4ivT6wMQO/N/dfEfHb/PmPwDvy\n53rbqbJOFRvk72xMLufDNZYxFniy0P1Wck1FRPxO0rw8z92A7YAZebkrA08B/wZcV/kOJZ1P+i4q\nngDeOMB6WhdzQLV+KTXieDuwpaQgHdyDlKsC+L/C6K+Q9qnqXFXxwLiAxVMNK9dY7IdJV0/b5sDz\ncGG8F+sUtb9lLhop4tOSJgJ7AX9U7cY5YsmXitcrU9RZloDtI+Jfi/VMB/B/5bIslPRyYfBC0vYT\ncE9E1MshVrZ5ZXs3orqMle6rIuKABueBpB5SQJoUES9Jmg6s1MCktdazUo5626nou6Sr0ksl7UK6\n0q9W67uod5JxVkQs1thK0t4DTCs6J6duJXAO1QbyfuCnETEuIt4QERsCD+crtVqCVAX6xpwLg1Rl\nWTkQzSG/S1OpFekbasxjDdLLvV+R9HbSlcdAHgDGSapcQdRsPCVpo4i4LSKmAn9jUR72HZJGK7VM\n3Zt0JTtQmQK4FvhAPvFA0ug8/pXA4YXlbt3AOhTXZW1Jk/K0K0jafIBpngNWrzPseuCAPK8tSVXN\nAdwC7KT00mwkrSZp4xrTv1zJ7ZK2w7wcTDclXeXW8nwedyDV22mbwvTF9VmDRVfpU+rM6xHSFWxF\ncb33IFXpB3AN8H5Ja+dhayrl8f8A7CJpVF7f97F4AH09af81q8kB1QbyIeDCqn6/JgWsmq1FI+Il\n4DPA5ZJmkA72zxWmXTNXd/4HKXi8Omn+/wvgLblq8qPAfTXGqbXMTwK/VWqU9HRh3GI5v6XUAGgW\ncGNE3JWH3ZbLdifwq4i4vTBt3TJFxL3A14HrcpX3t/P4h+fx75R0D6mRTa11qF6fiIiXSScyx+d5\nzgTq3UJSmX46sHmtRkmkVq+vkXQvKQ84Iy/o76TgdI6kO0nVvbVui/oR6ZV+PwMuB5bP8zoOuLlO\nuX5E+v4rjZKq17nSXb2dKtX0lwDvrTRKIl2Rnp/3p79Rez+4s6r8xwJvy/vae0kBl0ivZzwGuDKv\n95XAmJy6+AZpX/g9qVr5ucL8JgI31FlfM7++zYaGpNUi4sX8+fvAnyJiWsnFqknSFGC7iPBtER1O\n0k+AH0bEQDndetOvFhEv5ivUC0iNwS6StAZwTUT8WxOLa8OMr1BtqBySry7uIVXXnVp2gfrRyH2Z\n1hlOBD61DNP3SppJaiD254i4KPefQm7YZVaPr1DNzMyawFeoZmZmTeCAamZm1gQOqGZmZk3ggGpm\nZtYEDqhmZmZN4IBqZmbWBP8ftXlamgMlDP4AAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f1048641f10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, subplot, title, xlabel, ylabel, show\n", + "#plot\n", + "lod=[0, 20, 40, 60, 80, 100, 160] #in micro meter\n", + "slong=[1.0, 0.95, 0.92, 0.89, 0.86, 0.83, 0.80]\n", + "lad=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] #in micro meter\n", + "slat=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]\n", + "add=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + "sang=[0, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, .12]\n", + "\n", + "t=arange(0,201,20)\n", + "s1=arange(1.0,0.7,-0.03)\n", + "#subplot(131)\n", + "plot(t,s1)\n", + "title(\"Variation of Slong as a function of delta x (with deltay=fi and delta theta=fi) \")\n", + "xlabel(\"Longitudinal displacement delta x (micro meter)\")\n", + "ylabel(\"Slong (normalised)\")\n", + "show()\n", + "t1=arange(0,101,10)\n", + "s2=arange(1,-0.1,-0.1)\n", + "\n", + "#subplot(132)\n", + "plot(t1,s2)##\n", + "title(\"Variation of Slat as a function of delta y (with deltax=fi and delta theta=fi) \")\n", + "xlabel(\"Lateral displacement delta y (micro meter)\")\n", + "ylabel(\"Slat (normalised)\")\n", + "show()\n", + "t2=arange(0,11,1)\n", + "s3=arange(1.0,0.7,-0.03)\n", + "#subplot(133)\n", + "plot(t2,s3)##\n", + "title(\"Variation of Sang as a function of delta theta (with deltax=fi and deltay=fi) \")\n", + "xlabel(\"Angular displacement delta theta (deg)\")\n", + "ylabel(\"Sang (normalised)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.2: Page 332" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "phase change = 106.60 rad/m°C\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "#phase change\n", + "#given data :\n", + "n=1.45## index of core\n", + "a=10**-5## in C**-1\n", + "b=5.1*10**-7## in C**-1\n", + "lamda=.633*10**-6## in m\n", + "# formula:- (1/L)*(del_fi/del_T)=((2*PI)/lamda)[(n/L)*(del_L/del_T)+(del_n/del_T)]\n", + "#let we assume a=del_n/del_T, b=(1/L)*(del_L/del_T), c=(1/L)*(del_fi/del_T)\n", + "c=((2*pi)/lamda)*((n*b)+a)#\n", + "print \"phase change = %0.2f rad/m°C\"%c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.3: Page 335" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "phase shift, del_fi = 8.99e-05 rad\n" + ] + } + ], + "source": [ + "from math import pi,sqrt\n", + "#phase shift\n", + "#given data :\n", + "L=500## in m\n", + "D=0.1##in m\n", + "ohm=7.3*10**-5## in rad s**-1\n", + "lamda=0.85*10**-6## in m\n", + "c=3*10**8## in m/s\n", + "del_fi=(2*pi*L*D*ohm)/(c*lamda)#\n", + "print \"phase shift, del_fi = %0.2e rad\"%del_fi" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter14_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter14_1.ipynb new file mode 100644 index 00000000..2e777ad5 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter14_1.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter14 - Laser-based systems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.1 : Page 351" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "energy = 1.7 J cm**-2\n", + "part (b)\n", + "threshold energy = 113.9 J cm**-2\n" + ] + } + ], + "source": [ + "#energy and threshold electrical energy\n", + "print \"part (a)\"\n", + "no=1.9*10**19##cm**-3##\n", + "hc=6.6*10**-34##\n", + "v=5.45*10**14##Hz\n", + "av=2##\n", + "nv=1##\n", + "n2=no/2##\n", + "eng=((n2*hc*v)/(av*nv))## J cm**-2\n", + "print \"energy = %0.1f J cm**-2\"%eng\n", + "print \"part (b)\"\n", + "oe=0.50##\n", + "mr=0.15##\n", + "lr=0.20##\n", + "teng=eng/(oe*mr*lr)##\n", + "print \"threshold energy = %0.1f J cm**-2\"%teng\n", + "#electrical energy is calculated wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.3 : Page 360" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum power = 157028.23 MW\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log, exp\n", + "#output power\n", + "h=0.6943*10**-6##\n", + "lm=10##in cm\n", + "r1=1.0##\n", + "r2=0.8##\n", + "t1=0.98##\n", + "As=1##cm**2##\n", + "Ls=2##cm\n", + "gth=((1/(2*lm))*log((1/(r1*r2*(t1)**8))))+(As*Ls)/lm##\n", + "sg=1.5*10**-20##\n", + "ndth=gth/sg##cm**-3##\n", + "nth=ndth*As*lm##atoms\n", + "ni=5*nth##atoms\n", + "ng=1.78##\n", + "ns=2.7##\n", + "lair=2##\n", + "c=3*10**10##\n", + "trt=((2*ng*lm)/c)+((2*ns*Ls)/c)+((2*lair)/c)##seconds\n", + "npmax=((ni-nth)/2)-(nth/2)*log(ni/nth)##photons\n", + "L=14##cm\n", + "at=((As*Ls)/L)+((1/(2*L))*log(1/(r1*t1**8)))##\n", + "aext=((1/(2*L))*log(1/r2))##\n", + "tp=((trt)/(1-(r1*r2*t1**8*exp(-2*As*Ls))))##seconds\n", + "hc=6.6*10**-34##\n", + "pmax=((aext/at)*hc*c*npmax)/(h*tp)##in watts\n", + "print \"maximum power = %0.2f MW\"%(pmax*10**-6)\n", + "#answer is wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.4 : Page 365" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "pulse width,del_v = 0.67 ns\n", + "spatial length, Lp = 20.00 cm \n", + "part (b)\n", + "pulse width, del_v = 16.67 ps\n", + "spatial length, Lp = 5.00 mm\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#pulse width and spatial length \n", + "print \"part (a)\"\n", + "#given data :\n", + "del_v=1.5*10**9## in Hz\n", + "tau_p=1/del_v#\n", + "C=3*10**8## constant\n", + "print \"pulse width,del_v = %0.2f ns\"%(tau_p*10**9)\n", + "Lp=C*tau_p#\n", + "print \"spatial length, Lp = %0.2f cm \"%(Lp*10**2)\n", + "#spatial length is calculated wrong in the textbook\n", + "print \"part (b)\"\n", + "del_v=6*10**10## in Hz\n", + "tau_p=1/del_v#\n", + "C=3*10**8## constant\n", + "print \"pulse width, del_v = %0.2f ps\"%(tau_p*10**12)\n", + "Lp=C*tau_p*10**3#\n", + "print \"spatial length, Lp = %0.2f mm\"%(Lp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.5 : Page 366" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time difference is = 0.44 micro-seconds\n" + ] + } + ], + "source": [ + "#time difference\n", + "n=1.33##\n", + "x=2##\n", + "l=50##m\n", + "c=3*10**8##m/s\n", + "dt=((n*x*l)/c)##s\n", + "print \"time difference is = %0.2f micro-seconds\"%(dt*10**6)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter2_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter2_1.ipynb new file mode 100644 index 00000000..955478be --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter2_1.ipynb @@ -0,0 +1,245 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter2 - Ray propagation in optical fiber" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.1 : Page 21" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "numerical aperture is 0.244\n", + "part (b)\n", + "angle αm = 14.13 degree\n", + "angle Om = 9.37 degree\n", + "angle Φc = 80.63 degree\n", + "part (c)\n", + "pulse broadning per unit length = 6.76e-11 sm**-1\n" + ] + } + ], + "source": [ + "from math import degrees, asin, sqrt\n", + "#NA ,angles and pulse broadning\n", + "print \"part (a)\"\n", + "n1=1.5##core refrative index\n", + "n2=1.48##claddin refractive index\n", + "a=100/2##radius in micro meter\n", + "na=1##air refrative index\n", + "NA=sqrt(n1**2-n2**2)##numerical aperture\n", + "print \"numerical aperture is %0.3f\"%NA\n", + "print \"part (b)\"\n", + "am=(asin(NA))##\n", + "tm=asin(NA/n1)##\n", + "tc=asin(n2/n1)##\n", + "print \"angle αm = %0.2f degree\"%degrees(am)\n", + "print \"angle Om = %0.2f degree\"%degrees(tm)\n", + "print \"angle Φc = %0.2f degree\"%degrees(tc)\n", + "print \"part (c)\"\n", + "c=3*10**8##speed of light in m/s\n", + "dtl=((n1/n2)*(n1-n2)/c)##pulse broadning per unit length\n", + "print \"pulse broadning per unit length = %0.2e sm**-1\"%dtl" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.2 : Page 22" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "all other rays will suffer reflections between these two extremes of : 0 and 1650.0 m**-1\n" + ] + } + ], + "source": [ + "from math import tan,sqrt,asin\n", + "#minimum and maximum number of reflections\n", + "n1=1.5##core refrative index\n", + "n2=1.48##claddin refractive index\n", + "a=100/2##radius in micro meter\n", + "na=1##air refrative index\n", + "NA=sqrt(n1**2-n2**2)##numerical aperture\n", + "am=(asin(NA))##\n", + "tm=asin(NA/n1)##\n", + "tc=asin(n2/n1)##\n", + "L=((a*10**-6)/(tan(tm)))##length in meter\n", + "x=(1/(2*L))##maximum number of reflections per meter\n", + "print \"all other rays will suffer reflections between these two extremes of :\",(0),\" and \",round(x),\" m**-1\"\n", + "#answer is wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.3 : Page 27" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pulse broadning = 2.45 ns km**-1\n" + ] + } + ], + "source": [ + "#pulse broadning\n", + "h=0.85##WAVELENGTH IN MICRO METER\n", + "y=0.035##spectral width\n", + "c=0.021##constant\n", + "cl=3##speed of light in m/s\n", + "dtl=(y/cl)*c##\n", + "print \"pulse broadning = %0.2f ns km**-1\"%(dtl*10**4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.4 : Page 27" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "material dispersion = 253.20 ns when h=850nm\n", + "part (b)\n", + "material dispersion = 6.72 ns when h=1300nm\n" + ] + } + ], + "source": [ + "#pulse broadning\n", + "print \"part (a)\"\n", + "h=850##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=30##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m1*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.2f ns when h=850nm\"%t\n", + "print \"part (b)\"\n", + "h=1300##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=30##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m2*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.2f ns when h=1300nm\"%t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.5 : Page 28" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "material dispersion = 16.88 ns when h=850nm\n", + "part (b)\n", + "material dispersion = 0.448 ns when h=1300nm\n" + ] + } + ], + "source": [ + "# pulse broadning\n", + "print \"part (a)\"\n", + "h=850##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=2##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m1*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.2f ns when h=850nm\"%t\n", + "print \"part (b)\"\n", + "h=1300##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=2##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m2*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.3f ns when h=1300nm\"%t" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter3_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter3_1.ipynb new file mode 100644 index 00000000..46f8edc3 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter3_1.ipynb @@ -0,0 +1,226 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter3 - Wave propagation in planor waveguides" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.1 : Page 45" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "range of propagation constant is 1.10880e+07 to 1.1014e+07 m**-1\n", + "number of modes are 4.0\n" + ] + } + ], + "source": [ + "from math import pi, sqrt\n", + "#range of propagation constants and maximum no. of modes\n", + "n1=1.5##core refractive index\n", + "n2=1.49##cladding refrative index\n", + "t=9.83##thickness of guided layer in micro meter\n", + "h=0.85##wavelength in µm\n", + "b1=((2*pi*n1)/(h*10**-6))##phase propagation constant in m**-1\n", + "b2=((2*pi*n2)/(h*10**-6))##phase propagation constant in m**-1\n", + "m=((4*t)/h)*(sqrt(n1**2-n2**2))##number of modes\n", + "print \"range of propagation constant is %0.5e\"%(b1),\" to %0.4e\"%(b2),\" m**-1\"\n", + "print\"number of modes are\",round(m/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2 : Page 51" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "thicknes of the slab should not be greater than 0.794 µm\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#thickness\n", + "n1=3.6##core refractive index\n", + "n2=3.56##cladding refrative index\n", + "h=0.85##wavelength in µm\n", + "a=((h/(2*sqrt(n1**2-n2**2))))##thickness in µm\n", + "print \"thicknes of the slab should not be greater than %0.3f\"%(a),\" µm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.3 : Page 52" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "number of modes are : 5.0\n", + "part (b)\n", + "m \tuma(rad) \tum(m**-1) \twma(rad) \twm(m**-1) \tbm((wma/v)**2] \t\n", + "\n", + "0 1.30644 2.5845e+05 4.8263 9.5476e+05 0.93077\n", + "1 2.59574 5.1350e+05 4.27342 8.4538e+05 0.72974\n", + "2 3.83747 7.5914e+05 3.20529 6.3408e+05 0.41053\n", + "3 4.9063 9.7058e+05 0.963466 1.9060e+05 0.03709\n" + ] + } + ], + "source": [ + "from math import pi, sqrt\n", + "from numpy import nditer\n", + "#no. of modes\n", + "print \"part (a)\"\n", + "n1=1.5##core refractive index\n", + "n2=1.48##cladding refrative index\n", + "t=10.11##thickness of guided layer in micro meter\n", + "h=1.55##wavelength in µm\n", + "b1=((2*pi*n1)/(h*10**-6))##phase propagation constant in m**-1\n", + "b2=((2*pi*n2)/(h*10**-6))##phase propagation constant in m**-1\n", + "m=((2*pi*t)/h)*(sqrt(n1**2-n2**2))##number of modes\n", + "print \"number of modes are : \",round(m/2)\n", + "\n", + "print \"part (b)\"\n", + "t1=10.11##thickness of guided layer in micro meter\n", + "t=t1/2#\n", + "h=1.55##wavelength in µm\n", + "b1=((2*pi*n1)/(h*10**-6))##phase propagation constant in m**-1\n", + "b2=((2*pi*n2)/(h*10**-6))##phase propagation constant in m**-1\n", + "mo=(((2*pi*t1)/h)*(sqrt(n1**2-n2**2)))/2##number of modes\n", + "uma0=1.30644## for m=0 from the curve\n", + "uma1=2.59574## for m=1 from the curve\n", + "uma2=3.83747## for m=2 from the curve\n", + "uma3=4.9063## for m=3 from the curve\n", + "wma0=4.8263## for m=0 from the curve\n", + "wma1=4.27342## for m=1 from the curve\n", + "wma2=3.20529## for m=2 from the curve\n", + "wma3=0.963466## for m=3 from the curve\n", + "um0=uma0/(t*10**-6)##in m**-1\n", + "um1=uma1/(t*10**-6)##in m**-1\n", + "um2=uma2/(t*10**-6)##in m**-1\n", + "um3=uma3/(t*10**-6)##in m**-1\n", + "wm0=wma0/(t*10**-6)##in m**-1\n", + "wm1=wma1/(t*10**-6)##in m**-1\n", + "wm2=wma2/(t*10**-6)##in m**-1\n", + "wm3=wma3/(t*10**-6)##in m**-1\n", + "bm0=((wm0*t*10**-6)/mo)**2##for m=0 \n", + "bm1=((wm1*t*10**-6)/mo)**2##for m=1\n", + "bm2=((wm2*t*10**-6)/mo)**2##for m=2 \n", + "bm3=((wm3*t*10**-6)/mo)**2##for m=3\n", + "m0=sqrt((bm0*(b1**2-b2**2))+b2**2)##for m=0 in m**-1\n", + "m1=sqrt((bm1*(b1**2-b2**2))+b2**2)##for m=1 in m**-1\n", + "m2=sqrt((bm2*(b1**2-b2**2))+b2**2)##for m=2 in m**-1\n", + "m3=sqrt((bm3*(b1**2-b2**2))+b2**2)##for m=3 in m**-1\n", + "params = [\"m\", \"uma(rad)\", \"um(m**-1)\", \"wma(rad)\", \"wm(m**-1)\", \"bm((wma/v)**2]\" ]\n", + "for x in params:\n", + " print x,'\\t',\n", + "\n", + "print '\\n'\n", + "a = range(0,4)\n", + "b = [uma0, uma1, uma2, uma3]\n", + "c = [um0, um1, um2, um3]\n", + "d = [wma0, wma1, wma2, wma3]\n", + "e = [wm0, wm1, wm2, wm3]\n", + "f = [bm0, bm1, bm2, bm3]\n", + "for k,l,m,n,o,p in nditer([a,b,c,d,e,f]) :\n", + " print k,' ',l,' %0.4e'%m,' ',n,' %0.4e'%o,' %0.5f'%p\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.4 : Page 56" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "G factor is 0.5622\n" + ] + } + ], + "source": [ + "from math import sin, cos, pi\n", + "#G factor\n", + "d=0.793##in micro meter\n", + "v=pi/2##point of intersection\n", + "ua=0.934##\n", + "wa=1.262##\n", + "Y=(wa*(1+(sin(ua*pi/180))*(cos(ua*pi/180))/ua))\n", + "G=(1+((cos(ua*pi/180))**2)/Y)**(-1)\n", + "print \"G factor is %0.4f\"%G\n", + "#answer is wrong in the textbook" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter4_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter4_1.ipynb new file mode 100644 index 00000000..c5796425 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter4_1.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter4 - Wave propagation in cylindrical waveguides" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.1 : Page 70" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "normalised frequency parameter = 3.01\n", + "part (b)\n", + "propogation constants are Bo1 = 5.911e+06 and B11 = 5.885e+06\n", + "part (c)\n", + "phase velocity are (Vp)01 = 2.06e+08 ms**-1 and (Vp)11 = 2.07e+08 ms**-1 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#normalised frequency,propagation constants and phase velocity\n", + "print \"part (a)\"\n", + "n1=1.46#core refrative index\n", + "di=7.2#core diameter \n", + "n=1.46#core refrative index\n", + "d=1#relative differnce\n", + "h=1.55 # in micro meter\n", + "v=((2*pi*(di*10**-6)/2)*n*sqrt(2*(d/100)))/(h*10**-6)#normalised frequency parameter\n", + "print \"normalised frequency parameter = %0.2f\"%v\n", + "print \"part (b)\"\n", + "b1=(2*pi*n1)/(h*10**-6)# in m**-1\n", + "n2=n1-(d/100)#cladding refrative index\n", + "b2=(2*pi*n2)/(h*10**-6)# in m**-1\n", + "bo1=0.82#\n", + "b11=0.18#\n", + "B01=(b2**2+(bo1*(b1**2-b2**2)))**(1/2)#\n", + "B11=(b2**2+(b11*(b1**2-b2**2)))**(1/2)#\n", + "print \"propogation constants are Bo1 = %0.3e\"%(B01),\" and B11 = %0.3e\"%(B11)\n", + "#propogation constants are calculated wrong in the text bOOK\n", + "print \"part (c)\"\n", + "c=3*10**8# in ms**-1\n", + "vp1=(2*pi*c)/(h*10**-6*B01)#IN MS**-1\n", + "vp2=(2*pi*c)/(h*10**-6*B11)#IN MS**-1\n", + "print \"phase velocity are (Vp)01 = %0.2e \"%(vp1),\" ms**-1 and (Vp)11 = %0.2e\"%(vp2),\" ms**-1 \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.2 : Page 73" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "power for LP01 mode is = 11 %\n", + "power for LP11 mode is = 35 %\n" + ] + } + ], + "source": [ + "#frational power\n", + "p01=0.11#from the graph\n", + "p11=0.347#from the graph\n", + "print \"power for LP01 mode is = %0.f %%\"%(p01*100)\n", + "print \"power for LP11 mode is = %0.f %%\" %(p11*100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.3 : Page 76" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of modes : 1974\n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#Number of the modes\n", + "h= 0.85# Wavelenght in micrometers\n", + "a= 50# Core radius in micrometers\n", + "NA=0.17#\n", + "v1=(2*pi*a*NA)/h#\n", + "m2= round((v1**2)/2)#\n", + "print \"Number of modes : %d\"%m2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.4 : Page 76" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "core diameter = 62 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt,pi\n", + "#core diameter\n", + "d=0.02#difference\n", + "n1=1.5#core refrative index\n", + "m=1000# number of modes\n", + "h= 1.3# Wavelenght in micrometers\n", + "a=((h/(pi*n1))*(m/d)**(1/2))#core diamter in micro meter\n", + "print \"core diameter = %0.f micro meter\"%a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.5 : Page 76" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum core diameter = 4.82 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#core diameter\n", + "d=0.02#difference\n", + "a1=75#in micro meter\n", + "n1=1.45#core refrative index\n", + "m=700# number of modes\n", + "v=sqrt(4*m)#\n", + "h=((2*pi*(a1/2)*n1*sqrt(2*(d/100)))/v)#in micro meter\n", + "vc=2.405*sqrt(2)#for single mode fiber\n", + "a=((vc*h)/(pi*n1*sqrt(2*(d/100))))#core diamter in micro meter\n", + "print \"maximum core diameter = %0.2f micro meter\"%a" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter5_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter5_1.ipynb new file mode 100644 index 00000000..526b228b --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter5_1.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter5 - Single mode fibers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.1 : Page 86" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " w = 4.7086 and wp = 4.6184 micro meter when wavelength is 1.30 micro meter\n", + " w = 5.5109 and wp = 5.3570 micro meter when wavelength is 1.55 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#w and wp\n", + "n=1.46#core refractive index\n", + "d=0.003#differnce in core-cladding refrative index\n", + "a=4#core radius in micro meter\n", + "h1=1.30# inmicro meter\n", + "h2=1.55#in micro meter\n", + "v1=((2*pi*(a*10**-6))*n*sqrt(2*(d)))/(h1*10**-6)#normalised frequency parameter\n", + "v2=((2*pi*(a*10**-6))*n*sqrt(2*(d)))/(h2*10**-6)#normalised frequency parameter\n", + "w1=(a*10**-6)*(0.65+((1.619)/(v1)**(3/2))+(2.879/(v1)**6))#in meter\n", + "wp1=w1-(a*10**-6)*(0.016+((1.567)/(v1)**7))#in micro meter\n", + "w2=(a*10**-6)*(0.65+((1.619)/(v2)**(3/2))+(2.879/(v2)**6))#in meter\n", + "wp2=w2-(a*10**-6)*(0.016+((1.567)/(v2)**7))#in micro meter\n", + "print \" w = %0.4f\"%(w1*10**6),\"and wp = %0.4f\"%(wp1*10**6),\"micro meter when wavelength is 1.30 micro meter\"\n", + "print \" w = %0.4f\"%(w2*10**6),\"and wp = %0.4f\"%(wp2*10**6),\"micro meter when wavelength is 1.55 micro meter\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.2 : Page 88" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "difference between propogation constant = 62.83 m**-1\n", + "part (b)\n", + "modal birefringence = 1e-05\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#difference between propogation constant and modal birefringence\n", + "print \"part (a)\"\n", + "bl=10#beat length in cm\n", + "h=1#in micro meter\n", + "db=((2*pi)/(bl*10**-2))#in m**-1\n", + "print \"difference between propogation constant = %0.2f m**-1\"%db\n", + "print \"part (b)\"\n", + "mb=db*((h*10**-6)/(2*pi))#modal birefringence\n", + "print \"modal birefringence = %0.e\"%mb\n", + "#answer is approximately equal to the answer in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.3 : Page 93" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " waveguide dispersion factor = -3.149 ps nm**-1 km**-1 at wavelength 1.3 micro meter\n", + " waveguide dispersion factor = -5.537 ps nm**-1 km**-1 at wavelength 1.55 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#waveguide dispersion factor\n", + "n=1.45#core refractive index\n", + "d=0.003#differnce in core-cladding refrative index\n", + "n2=1.45*(1-d)#cladding refractive index\n", + "d1=8.2#core diameter in micro meter\n", + "a=d1/2#core radius in micro meter\n", + "h1=1.30# inmicro meter\n", + "h2=1.55#in micro meter\n", + "v1=(2*pi*a*n*sqrt(2*d))/h1#normalised frequency parameter\n", + "v2=((2*pi*(a))*n*sqrt(2*(d)))/(h2)#normalised frequency parameter\n", + "v1dv=0.080+0.549*(2.834-v1)**2#\n", + "v2dv=0.080+0.549*(2.834-v2)**2#\n", + "c=3*10**8# in m/s\n", + "dw1=-((n2*d*v1dv)/(c*h1))*10**12#waveguide dispersion factor in ps nm**-1 km**-1\n", + "dw2=-((n2*d*v2dv)/(c*h2))*10**12#waveguide dispersion factor in ps nm**-1 km**-1\n", + "print \" waveguide dispersion factor = %0.3f\"%(dw1),\"ps nm**-1 km**-1 at wavelength 1.3 micro meter\"\n", + "print \" waveguide dispersion factor = %0.3f\"%(dw2),\"ps nm**-1 km**-1 at wavelength 1.55 micro meter\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.4 : Page 95" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "diameter of the core = 7.10 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#diameter of the core\n", + "c=3*10**8#in m/s\n", + "dm=6#material dispersion in ps nm**-1 km**-1\n", + "h=1.55#in micro meter\n", + "n1=1.45#core refrative index\n", + "d=0.005#differnce\n", + "n2=n1*(1-d)#cladding refrative index\n", + "x=((-dm/(((-n2*d)/(c*h))*10**12))-0.080)/0.549#\n", + "v=-(sqrt(x)-2.834)#\n", + "d=((v*h)/(pi*n1*sqrt(2*d)))#diameter in micro meter\n", + "print \"diameter of the core = %0.2f micro meter\"%d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.5 : Page 100" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "splice loss = 0.20 dB when wavelength is 1.30 micro meter\n", + "splice loss = 0.15 dB when wavelength is 1.55 micro meter\n" + ] + } + ], + "source": [ + "#splice loss\n", + "h1=1.30#in micro meter\n", + "wp1=4.6155#in micro meter\n", + "h2=1.55#in micro meter\n", + "wp2=5.355#in micro meter\n", + "sl1=4.34*(1/wp1)**2#splice loss in dB\n", + "sl2=4.34*(1/wp2)**2#splice loss in dB\n", + "print \"splice loss = %0.2f dB when wavelength is 1.30 micro meter\"%sl1\n", + "print \"splice loss = %0.2f dB when wavelength is 1.55 micro meter\"%sl2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter6_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter6_1.ipynb new file mode 100644 index 00000000..8c800768 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter6_1.ipynb @@ -0,0 +1,252 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter6 - Optical fiber cables and connections" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.1 : Page 119" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "refractive index = 1.59\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from sympy import symbols, solve\n", + "#refractive index\n", + "l=0.47##in db\n", + "nf=10**((l/-10))##\n", + "\n", + "x=symbols(\"x\")\n", + "p=1+-2.22*x+x**2##\n", + "y=solve(p,x)##\n", + "print \"refractive index = %0.2F\"%y[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.2 : Page 121" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "insertion loss at the joint = 0.64 dB\n", + "part (b)\n", + "insertion loss at the joint = 0.286 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log10, acos, pi\n", + "#loss\n", + "print \"part (a)\"\n", + "dya=0.1##\n", + "n1=1.50##refrative index\n", + "na=1##\n", + "k1=n1/n1##\n", + "k2=1##\n", + "nf=((16*(n1)**2)/((n1+1)**4))##\n", + "nlat=(2/(3.14))*(acos(dya/2)-(dya/2)*(1-(dya/2)**2)**(1/2))##\n", + "nt=nf*nlat##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"insertion loss at the joint = %0.2f dB\"%lt\n", + "print \"part (b)\"\n", + "dya=0.1##\n", + "n1=1.50##refrative index\n", + "na=1##\n", + "k1=n1/n1##\n", + "k2=1##\n", + "nf=((16*(n1)**2)/((n1+1)**4))##\n", + "nlat=(2/(pi))*(acos(dya/2)-(dya/2)*(1-(dya/2)**2)**(1/2))#\n", + "nt=k2*nlat##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"insertion loss at the joint = %0.3f dB\"%lt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.3 : Page 122" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total loss = 0.75 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt,pi,acos,log10\n", + "#loss\n", + "d=100##micro meter\n", + "dx=0##\n", + "dy=3##in micro mete\n", + "dth=3##in degree\n", + "dthr=dth*(pi/180)##\n", + "dya=0.02##\n", + "n1=1.48##refrative index\n", + "na=1##\n", + "k1=n1/n1##\n", + "k2=1##\n", + "nf=((16*(n1)**2)/((n1+1)**4))##\n", + "nlat=(2/(pi))*(acos(dy/100)-(dy/100)*(1-(dy/100)**2)**(1/2))##\n", + "NA=n1*(sqrt(2*dya))##\n", + "nang=((1-(na*dthr)/(pi*NA)))##\n", + "nt=nf*nlat*nang##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"total loss = %0.2f dB\"%lt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.4 : Page 124" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total loss = 4.1260 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy import log10\n", + "#loss\n", + "d1=80##micro meter\n", + "na1=0.25##\n", + "alpha1=2##\n", + "d2=60##in micro meter\n", + "na2=0.21##\n", + "alpha2=1.9##\n", + "ncd=(d2/d1)**2##\n", + "nna=(na2/na1)**2##\n", + "nalpha=((1+(2/alpha1))/(1+((2/alpha2))))##\n", + "nt=ncd*nna*nalpha##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"total loss = %0.4f dB\"%lt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.5 : Page 125" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total loss forward direction = 3.52 dB\n", + "total loss backward direction = 0.217 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy import log10\n", + "#loss\n", + "d1=60##micro meter\n", + "na1=0.25##\n", + "alpha1=2.1##\n", + "d2=50##in micro meter\n", + "na2=0.20##\n", + "alpha2=1.9##\n", + "ncd=(d2/d1)**2##\n", + "nna=(na2/na1)**2##\n", + "nalpha1=1##\n", + "nalpha=((1+(2/alpha1))/(1+((2/alpha2))))##\n", + "ncd1=1##\n", + "nna1=1##\n", + "nt=ncd*nna*nalpha1##\n", + "ltf=(-10*log10(nt))##in dB\n", + "nt1=ncd1*nna1*nalpha##\n", + "ltb=(-10*log10(nt1))##in dB\n", + "print \"total loss forward direction = %0.2f dB\"%ltf\n", + "print \"total loss backward direction = %0.3f dB\"%ltb" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter7_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter7_1.ipynb new file mode 100644 index 00000000..61e58658 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter7_1.ipynb @@ -0,0 +1,338 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter7 - Optoelectronic sources" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.1: Page 153" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Intrinsic carrier concentration ,ni = 2.2e+12 m**-3\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, exp\n", + "#Intrinsic carrier\n", + "#given data :\n", + "m=9.11*10**-31## in kg\n", + "k=1.38*10**-23## in JK**-1\n", + "h=6.626*10**-34## in Js\n", + "ev=1.6*10**-19## in J\n", + "T=300## in K\n", + "me=0.07*m## in kg\n", + "mh=0.56*m## in kg\n", + "Eg=1.43*ev## in J\n", + "ni=2*((2*pi*k*T)/h**2)**(3/2)*(me*mh)**(3/4)*exp(-Eg/(2*k*T))#\n", + "print \"Intrinsic carrier concentration ,ni = %0.1e m**-3\"%ni" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.2: Page 155" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Diffusion potential, Vd = 1.234 V\n" + ] + } + ], + "source": [ + "#Diffusion potential\n", + "from math import log\n", + "#given data :\n", + "Na=5*10**23## in m**-3\n", + "Nd=5*10**21## in m**-3\n", + "T=300## in K\n", + "e=1.6*10**-19## in J\n", + "k=1.38*10**-23## in JK**-1\n", + "V=(k*T)/e#\n", + "ni=2.2*10**12## in m**-3\n", + "Vd=V*log((Na*Nd)/ni**2)#\n", + "print \"Diffusion potential, Vd = %0.3f V\"%Vd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.3: Page 161" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Injection efficiency, eta_inj = 0.8247\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Injection efficiency\n", + "#given data :\n", + "Na=10**23## in m**-3\n", + "Nd=10**21## in m**-3\n", + "T=300## in K\n", + "e=1.6*10**-19## in J\n", + "k=1.38*10**-23## in JK**-1\n", + "mue=0.85## in m**2V**-1s**-1\n", + "muh=0.04## in m**2V**-1s**-1\n", + "De=(mue*k*T)/e## in m**2s**-1\n", + "Dh=(muh*k*T)/e## in m**2s**-1\n", + "Le=1#\n", + "Lh=Le#\n", + "eta_inj=1/(1+((De/Dh)*(Lh/Le)*(Nd/Na)))#\n", + "print \"Injection efficiency, eta_inj = %0.4f\"%eta_inj" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.4: Page 171" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "Internal quantum efficiency = 0.50\n", + "part (b)\n", + "External quantum efficiency = 0.0337\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Internal and quantum efficiency\n", + "#given data :\n", + "print \"part (a)\"\n", + "tau_rr=1#\n", + "tau_nr=tau_rr#\n", + "eta_int=1/(1+(tau_rr/tau_nr))#\n", + "print \"Internal quantum efficiency = %0.2f\"%eta_int\n", + "print \"part (b)\"\n", + "ns=3.7#\n", + "na=1.5#\n", + "As=0#\n", + "eta_ext=eta_int*(1-As)*((2*na**3)/(ns*(ns+na)**2))#\n", + "print \"External quantum efficiency = %0.4f\"%eta_ext" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.5: Page 180" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The number of longitudinal modes excited = 1.001e-03 nm\n" + ] + } + ], + "source": [ + "#The number of longitudinal modes excited\n", + "#given data :\n", + "lamda=632.8*10**-9## in m\n", + "n=1#\n", + "L=20*10**-2## in m\n", + "del_lamda=((lamda)**2/(2*n*L))*10**9#\n", + "print \"The number of longitudinal modes excited = %0.3e nm\"%del_lamda" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.6: Page 183" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The reduction in threshold gain = 1.31 mm**-1\n", + "part (b)\n", + "Differential quantum efficiency = 0.42\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, exp,log\n", + "#The reduction and Differential quantum efficiency\n", + "#given data :\n", + "print \"part (a)\"\n", + "alfa_eff=1.5## in mm**-1\n", + "gama=0.8#\n", + "L=0.5## in mm\n", + "R1=0.35#\n", + "R2=R1#\n", + "R2a=1.0#\n", + "g_th1=(1/gama)*(alfa_eff+(1/(2*L))*log(1/(R1*R2)))#\n", + "g_th2=(1/gama)*(alfa_eff+(1/(2*L))*log(1/(R1*R2a)))#\n", + "del_gth=g_th1-g_th2#\n", + "print \"The reduction in threshold gain = %0.2f mm**-1\"%del_gth\n", + "print \"part (b)\"\n", + "eta_D=(gama*(g_th2-alfa_eff))/(g_th2)#\n", + "print \"Differential quantum efficiency = %0.2f\"%eta_D" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.7: Page 192" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The internal power efficiency = 0.48\n", + "part (b)\n", + "The external power efficiency = 0.012\n", + "part (c)\n", + "The overall source fiber power coupling efficiency = 8.51e-04\n", + "The optical loss = 30.70 dB\n" + ] + } + ], + "source": [ + "from math import log10\n", + "#Internal and external power efficiency\n", + "#given data :\n", + "print \"part (a)\"\n", + "As=0##\n", + "ns=3.7## assuming that the example 7.4\n", + "eta_int=0.50## internal efficiency\n", + "V=1.5## in V\n", + "I=120*10**-3## in A\n", + "IBYe=120*10**-3## \n", + "Eph=1.43## in eV\n", + "eta_int=0.50## internal efficiency\n", + "fi_int=eta_int*IBYe*Eph#\n", + "t_power=I*V#\n", + "P_int=fi_int/t_power#\n", + "print \"The internal power efficiency = %0.2f\"%P_int\n", + "print \"part (b)\"\n", + "eta_ext=eta_int*(1-As)*2/(ns*(ns+1)**2)#\n", + "fi_ext=eta_ext*IBYe*Eph#\n", + "t_power=I*V#\n", + "P_ext=fi_ext/t_power#\n", + "print \"The external power efficiency = %0.3f\"%P_ext\n", + "print \"part (c)\"\n", + "V=1.5## in V\n", + "I=120*10**-3## in A\n", + "IBYe=120*10**-3## \n", + "Eph=1.43## in eV\n", + "n1=1.5#\n", + "n2=1.48#\n", + "na=n1#\n", + "eta_ext=0.0337#\n", + "eta_T=eta_ext*((n1**2-n2**2)/na**2)#\n", + "fi_T=eta_T*IBYe*Eph#\n", + "t_power=I*V#\n", + "sfpc=fi_T/t_power#\n", + "O_loss=-10*log10(sfpc)#\n", + "print \"The overall source fiber power coupling efficiency = %0.2e\"%sfpc\n", + "print \"The optical loss = %0.2f dB\"%O_loss" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter8_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter8_1.ipynb new file mode 100644 index 00000000..d3376f8c --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter8_1.ipynb @@ -0,0 +1,381 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter8 - Optoelectronic detectors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.1 : Page 204" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The photon energy = 1.31 micro-m \n", + "part (b)\n", + "The optical power = 4.07 micro W \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The photon energy and optical power\n", + "#given data :\n", + "print \"part (a)\"\n", + "h=6.626*10**-34## in Js\n", + "c=3*10**8## in ms**-1\n", + "E=1.52*10**-19## in J\n", + "lamda=((h*c)/E)*10**6#\n", + "print \"The photon energy = %0.2f micro-m \"%lamda\n", + "print \"part (b)\"\n", + "e=1.6*10**-19## in J\n", + "Ip=3*10**6## in A\n", + "E=1.52*10**-19## in J\n", + "eta=70/100#\n", + "R=(eta*e)/E#\n", + "P_in=(Ip/R)*10**-6#\n", + "print \"The optical power = %0.2f micro W \"%P_in" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.2 : Page 205" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The quantum efficiency, eta = 50.00 %\n", + "part (b)\n", + "Maximum possible band gap energy,Eg = 1.46 eV \n", + "part (c)\n", + "The mean output, Ip = 3.42 micro A\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The quantum efficiency,Maximum possible band gap energy and mean output\n", + "#given data :\n", + "print \"part (a)\"\n", + "e=1## electron\n", + "p=2## photon\n", + "eta=(e/p)*100#\n", + "print \"The quantum efficiency, eta = %0.2f %%\"%eta\n", + "print \"part (b)\"\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda_c=0.85*10**-6## in m\n", + "Eg=((h*c)/lamda_c)/1.6*10**19#\n", + "print \"Maximum possible band gap energy,Eg = %0.2f eV \"%Eg\n", + "print \"part (c)\"\n", + "e=1## electron\n", + "p=2## photon\n", + "eta=(e/p)#\n", + "e=1.6*10**-19## in J\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda_c=0.85*10**-6## in m\n", + "Eg=((h*c)/lamda_c)#\n", + "P_in=10*10**-6## in W\n", + "Ip=((eta*e*P_in)/Eg)*10**6#\n", + "print \"The mean output, Ip = %0.2f micro A\"%Ip" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.3 : Page 205" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The quantum efficiency = 0.4\n", + "part (b)\n", + "The responsivity of the diode,R = 0.29 AW**-1\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The quantum efficiency and The responsivity of the diode\n", + "#given data :\n", + "print \"part (a)\"\n", + "e=2*10**10## in s**-1\n", + "p=5*10**10## in s**-1\n", + "eta=e/p#\n", + "print \"The quantum efficiency = \",eta\n", + "print \"part (b)\"\n", + "e=2*10**10## in s**-1\n", + "p=5*10**10## in s**-1\n", + "eta=e/p#\n", + "e=1.6*10**-19## in J\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda=0.90*10**-6## in m\n", + "R=(eta*e*lamda)/(h*c)#\n", + "print \"The responsivity of the diode,R = %0.2f AW**-1\"%R" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.4 : Page 210" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The multiplication factor,M = 47.8\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The multiplication\n", + "#given data :\n", + "eta=40/100##\n", + "e=1.6*10**-19## in J\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda=1.3*10**-6## in m\n", + "P_in=0.3*10**-6## in W\n", + "I=6*10**-6## in A\n", + "M=(I*h*c)/(P_in*eta*e*lamda)#\n", + "print \"The multiplication factor,M = %0.1f\"%M" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.5 : Page 210" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Photon incident rate = 1.74e+07 s**-1\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Photon rate\n", + "#given data :\n", + "e=1.6*10**-19## in J\n", + "M=800#\n", + "eta=90/100## quantum efficiency\n", + "I=2*10**-9## in A\n", + "P_rate=I/(e*eta*M)#\n", + "print \"Photon incident rate = %0.2e s**-1\"%P_rate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.6 : Page 212" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "the gain = 58.95\n", + "part (b)\n", + "The output photo-current, I = 2.313e-04 A\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "#Gain and The output photocurrent\n", + "#given data :\n", + "print \"part (a)\"\n", + "tf=6*10**-12## in s\n", + "del_f=450*10**6## in Hz\n", + "G=1/(2*pi*tf*del_f)#\n", + "print \"the gain = %0.2f\"%G\n", + "print \"part (b)\"\n", + "tf=6*10**-12## in s\n", + "del_f=450*10**6## in Hz\n", + "G=1/(2*pi*tf*del_f)#\n", + "eta=75/100#\n", + "P_in=5*10**-6## in W\n", + "e=1.6*10**-19## in J\n", + "lamda=1.3*10**-6#\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "I=(G*eta*P_in*e*lamda)/(h*c)#\n", + "print \"The output photo-current, I = %0.3e A\"%I" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.7 : Page 215" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "rms value of shot noise current is = 1.712 nA\n", + "rms value of dark current is = 0.20 nA\n", + "rms value of thermal noise current is = 20.35 nA \n", + "part (b)\n", + "S/N ratio = 321\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt\n", + "#rms value of shot noise ,dark noise and thermal noise current and S/N ratio\n", + "print \"part (a)\"\n", + "n=0.7##efficiency\n", + "e=1.6*10**-19##charge\n", + "h=1.3##in micro meter\n", + "hc=6.626*10**-34##plack constant\n", + "c=3*10**8##m/s\n", + "pin=500##nW\n", + "Ip=((n*e*h*10**-6*pin*10**-9)/(hc*c))##in amperes\n", + "df=25##Mhz\n", + "f1=1##\n", + "is2=(2*e*Ip*df*10**6*f1)##\n", + "Is=sqrt(is2)##in amperes\n", + "Id=5*10**-9##amperes\n", + "id2=(2*e*Id*df*10**6)##\n", + "Id=sqrt(id2)##in amperes\n", + "k=1.38*10**-23##\n", + "t=300##in kelvin\n", + "rl=1000##ohms\n", + "it2=((4*k*t*df*10**6)/rl)##\n", + "it=sqrt(it2)##in amperes\n", + "print \"rms value of shot noise current is = %0.3f nA\"%(Is*10**9)\n", + "print \"rms value of dark current is = %0.2f nA\"%(Id*10**9)\n", + "print \"rms value of thermal noise current is = %0.2f nA \"%(it*10**9)\n", + "print \"part (b)\"\n", + "n=0.7##efficiency\n", + "e=1.6*10**-19##charge\n", + "h=1.3##in micro meter\n", + "hc=6.626*10**-34##plack constant\n", + "c=3*10**8##m/s\n", + "pin=500##nW\n", + "Ip=((n*e*h*10**-6*pin*10**-9)/(hc*c))##in amperes\n", + "df=25##Mhz\n", + "f1=1##\n", + "is2=(2*e*Ip*df*10**6*f1)##\n", + "Is=sqrt(is2)##in amperes\n", + "Id=5*10**-9##amperes\n", + "id2=(2*e*Id*df*10**6)##\n", + "Id=sqrt(id2)##in amperes\n", + "k=1.38*10**-23##\n", + "t=300##in kelvin\n", + "rl=1000##ohms\n", + "it2=((4*k*t*df*10**6)/rl)##\n", + "it=sqrt(it2)##in amperes\n", + "itt2=is2+id2+it2##in A**2\n", + "ip2=Ip**2##\n", + "sn=ip2/itt2##\n", + "print \"S/N ratio = %d\"%sn\n", + "#S/N ratio is calculated wrong in the textbook" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter9_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter9_1.ipynb new file mode 100644 index 00000000..de261050 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter9_1.ipynb @@ -0,0 +1,243 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter9 - Optoelectronics modulators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.1 : Page 227" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thickness of the a quarter wave plate,x = 0.0164 mm\n" + ] + } + ], + "source": [ + "#The thickness\n", + "#given data :\n", + "lamda=589.3*10**-9## in m\n", + "ne=1.553#J\n", + "no=1.544#\n", + "x=(lamda/(4*(ne-no)))*10**3#\n", + "print \"The thickness of the a quarter wave plate,x = %0.4f mm\"%x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.2 : Page 228" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thickness of the a quarter wave plate,x = 0.0017 mm\n" + ] + } + ], + "source": [ + "#The thickness\n", + "#given data :\n", + "lamda=589.3*10**-9## in m\n", + "ne=1.486#\n", + "no=1.658#\n", + "x=(lamda/(2*(no-ne)))*10**3#\n", + "print \"The thickness of the a quarter wave plate,x = %0.4f mm\"%x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.3: Page 234" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "change in refrative index = 1.032\n", + "net phase shift = 2.065 \n", + "Vpi = 7.61 kV\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "#change in refractive index ,net phase shiftand Vpi\n", + "v=5##kV\n", + "l=1##cm\n", + "ez=(v*10**3)/(l*10**-2)##in V/m\n", + "no=1.51##\n", + "r63=10.5*10**-12##m/V\n", + "dn=((1/2)*no**3*r63*ez)##\n", + "h=550##nm\n", + "dfi=((2*pi*dn*l*10**-2)/(h*10**-9))##\n", + "fi=2*dfi##\n", + "vpi=((h*10**-9)/(2*no**3*r63))*10**-3##kV\n", + "print \"change in refrative index = %0.3f\"%dfi\n", + "print \"net phase shift = %0.3f \"%fi\n", + "print \"Vpi = %0.2f kV\"%vpi\n", + "#refractive index and phase shift is in the form of pi in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.4: Page 237" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "phase differnce = 1.371e+04\n", + "part (b)\n", + "additional phase differnce = 1.246\n", + "part (c)\n", + "Vpi = 504.25 V\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "#phase difference,additional phase difference and Vpi\n", + "print \"part (a)\"\n", + "h=550##nm\n", + "l=3##cm\n", + "no=1.51##\n", + "ne=1.47##\n", + "dfi=((2*pi*l*10**-2*(no-ne))/(h*10**-9))##\n", + "print \"phase differnce = %0.3e\"%dfi\n", + "#phase difference is in the form of pi in the textbook\n", + "print \"part (b)\"\n", + "no=1.51##\n", + "r63=26.4*10**-12##m/V\n", + "V=200##\n", + "d=0.25##cm\n", + "dfi=((pi*r63*no**3*(V)*(l*10**-2))/(h*10**-9*d*10**-2))##\n", + "print \"additional phase differnce = %0.3f\"%dfi\n", + "#additional phase difference is in the form of pi in the textbook\n", + "print \"part (c)\"\n", + "r63=26.4*10**-12##m/V\n", + "V=200##\n", + "d=0.25##cm\n", + "dfi=((pi*r63*no**3*(V)*(l*10**-2))/(h*10**-9*d*10**-2))##\n", + "vpi=((h*10**-9)/(no**3*r63))*(d/l)##V\n", + "print \"Vpi = %0.2f V\"%vpi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.5 : Page 239" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "angle = 0.09 degree\n", + "part (b)\n", + "The relative intensity = 0.246\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import asin,degrees\n", + "#angle and relative intensity\n", + "#given data :\n", + "print \"part (a)\"\n", + "m=1#\n", + "l=633*10**-9## in m\n", + "f=5*10**6## in Hz\n", + "v=1500##in m/s\n", + "n=1.33## for water\n", + "A=v/f#\n", + "theta=asin((l/(n*A)))#\n", + "print \"angle = %0.2f degree\"%degrees(theta)\n", + "print \"part (b)\"\n", + "del_n=10**-5#\n", + "L=1*10**-2## in m\n", + "lamda=633*10**-9## in m\n", + "eta=(pi**2*del_n**2*L**2)/lamda**2#\n", + "print \"The relative intensity = %0.3f\"%eta" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13AngularDisplacement.png b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13AngularDisplacement.png Binary files differnew file mode 100644 index 00000000..42e4e5be --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13AngularDisplacement.png diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LateralDisplacement.png b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LateralDisplacement.png Binary files differnew file mode 100644 index 00000000..a95c8de6 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LateralDisplacement.png diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LongitudinalDisplacement.png b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LongitudinalDisplacement.png Binary files differnew file mode 100644 index 00000000..cc78d8c9 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LongitudinalDisplacement.png diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch10_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch10_1.ipynb new file mode 100644 index 00000000..105b8aa5 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch10_1.ipynb @@ -0,0 +1,1368 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 10 - Vapour liquid equillibrium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.1 Page: 390" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.1 - Page: 390\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 10.1 on page 390 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 10.1 - Page: 390\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 10.1 on page number 390 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 10.1 on page 390 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.2 Page: 399" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.2 - Page: 399\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 10.2 on page 399 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 10.2 - Page: 399\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 10.2 on page number 399 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 10.2 on page 399 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.3 Page: 400" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.3 - Page: 400\n", + "\n", + "\n", + "The total pressure is 13.04 atm\n", + "\n", + "Mole fraction of ethylene in vapour phase is 0.7\n", + "\n", + "Mole fraction of propylene in the vapour phase is 0.3\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 10.3 - Page: 400\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "x1 = 0.6## [mole fraction of ethylene]\n", + "x2 = 0.4## [mole fraction of propylene]\n", + "T = 423## [K]\n", + "P1_sat = 15.2## [vapour pressure of ethylene, atm]\n", + "P2_sat = 9.8## [vapour pressure of propylene, atm]\n", + "#**************#\n", + "\n", + "P = x1*P1_sat + x2*P2_sat## [atm]\n", + "print \"The total pressure is %.2f atm\\n\"%(P)#\n", + "# In vapour phase:\n", + "y1 = x1*P1_sat/P## [mole fraction of ethylene]\n", + "y2 = x2*P2_sat/P## [mole fraction of propylene]\n", + "print \"Mole fraction of ethylene in vapour phase is %.1f\\n\"%(y1)#\n", + "print \"Mole fraction of propylene in the vapour phase is %.1f\\n\"%(y2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.4 Page: 400" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.4 - Page: 400\n", + "\n", + "\n", + "In Liquid phase\n", + "\n", + "The mole fraction of X is 0.701\n", + "\n", + "The mole fraction of Y is 0.299\n", + "\n", + "In Vapour phase\n", + "\n", + "The mole fraction of X is 0.796\n", + "\n", + "The mole fraction of Y is 0.204\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "from math import exp\n", + "print \"Example: 10.4 - Page: 400\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Temp = 77## [OC]\n", + "P = 75## [kPa]\n", + "#deff('[P1] = f1(T)','P1 = exp(14.35 - 2942/(T + 220))')#\n", + "#deff('[P2] = f2(T)','P2 = exp(14.25 - 2960/(T + 210))')#\n", + "def f1(T):\n", + " P1 = exp(14.35 - 2942/(T + 220))\n", + " return P1\n", + "\n", + "def f2(T):\n", + " P2 = exp(14.25 - 2960/(T + 210))\n", + " return P2\n", + "\n", + "\n", + "#*************#\n", + "\n", + "P1sat = f1(Temp)## [kPa]\n", + "P2sat = f2(Temp)## [kPa]\n", + "#deff('[y] = f3(x1)','y = P - (x1*P1sat) - (1 - x1)*P2sat')#\n", + "def f3(x1):\n", + " y = P - (x1*P1sat) - (1 - x1)*P2sat\n", + " return y\n", + "x1 = fsolve(f3,7)#\n", + "x2 = 1 - x1#\n", + "print \"In Liquid phase\\n\"\n", + "print \"The mole fraction of X is %.3f\\n\"%(x1)#\n", + "print \"The mole fraction of Y is %.3f\\n\"%(x2)#\n", + "\n", + "y1 = x1*P1sat/P#\n", + "y2 = 1 - y1#\n", + "print \"In Vapour phase\\n\"\n", + "print \"The mole fraction of X is %.3f\\n\"%(y1)#\n", + "print \"The mole fraction of Y is %.3f\\n\"%(y2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.5 Page: 401" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.5 - Page: 401\n", + "\n", + "\n", + "Solution (i)\n", + "\n", + "The mole fraction of acetone is 0.549\n", + "\n", + "The mole fraction of acetonitrile is 0.327\n", + "\n", + "The mole fraction of nitromethane is 0.124\n", + "\n", + "Solution (ii)\n", + "\n", + "The mole fraction of acetone is 0.216\n", + "\n", + "The mole fraction of acetonitrile is 0.371\n", + "\n", + "The mole fraction of nitromethane is 0.413\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp\n", + "print \"Example: 10.5 - Page: 401\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "#deff('[P1] = f1(T)','P1 = exp(14.3916 - 2795/(T + 230))')#\n", + "def f1(T):\n", + " P1 = exp(14.3916 - 2795/(T + 230))\n", + " return P1\n", + "\n", + "#deff('[P2] = f2(T)','P2 = exp(14.2724 - 2945.47/(T + 224))')#\n", + "def f2(T):\n", + " P2 = exp(14.2724 - 2945.47/(T + 224))\n", + " return P2\n", + "#deff('[P3] = f3(T)','P3 = exp(14.2043 - 2972.64/(T + 209))')#\n", + "def f3(T):\n", + " P3 = exp(14.2043 - 2972.64/(T + 209))\n", + " return P3\n", + "\n", + "#*************#\n", + "\n", + "# Solution (i)\n", + "\n", + "#*****Data******#\n", + "Temp = 75## [OC]\n", + "P = 75## [kPa]\n", + "x1 = 0.30#\n", + "x2 = 0.40#\n", + "#*************#\n", + "\n", + "x3 = 1 - (x1 + x2)#\n", + "P1sat = f1(Temp)## [kPa]\n", + "P2sat = f2(Temp)## [kPa]\n", + "P3sat = f3(Temp)## [kPa]\n", + "P = x1*P1sat + x2*P2sat + x3*P3sat## [kPa]\n", + "y1 = x1*P1sat/P#\n", + "y2 = x2*P2sat/P#\n", + "y3 = x3*P3sat/P#\n", + "print \"Solution (i)\\n\"\n", + "print \"The mole fraction of acetone is %.3f\\n\"%(y1)#\n", + "print \"The mole fraction of acetonitrile is %.3f\\n\"%(y2)#\n", + "print \"The mole fraction of nitromethane is %.3f\\n\"%(y3)#\n", + "\n", + "# Solution (ii)\n", + "\n", + "#*****Data*****#\n", + "Temp = 80## [OC]\n", + "y1 = 0.45#\n", + "y2 = 0.35#\n", + "#**************#\n", + "\n", + "y3 = 1 - (y1 + y2)#\n", + "P1sat = f1(Temp)## [kPa]\n", + "P2sat = f2(Temp)## [kPa]\n", + "P3sat = f3(Temp)## [kPa]\n", + "P = 1/((y1/P1sat) + (y2/P2sat) + (y3/P3sat))## [kPa]\n", + "x1 = y1*P/P1sat#\n", + "x2 = y2*P/P2sat#\n", + "x3 = y3*P/P3sat#\n", + "print \"Solution (ii)\\n\"\n", + "print \"The mole fraction of acetone is %.3f\\n\"%(x1)#\n", + "print \"The mole fraction of acetonitrile is %.3f\\n\"%(x2)#\n", + "print \"The mole fraction of nitromethane is %.3f\\n\"%(x3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.6 Page: 403" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.6 - Page: 403\n", + "\n", + "\n", + "In Vapour phase\n", + "\n", + "The mole fraction of methanol is 0.282\n", + "\n", + "The mole fraction of methyl acetate is 0.718\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp\n", + "print \"Example: 10.6 - Page: 403\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "#deff('[P1] = f1(T)','P1 = exp(16.5915 - 3643.31/(T - 33.424))')#\n", + "def f1(T):\n", + " P1 = exp(16.5915 - 3643.31/(T - 33.424))\n", + " return P1\n", + "#deff('[P2] = f2(T)','P2 = exp(14.2532 - 2665.54/(T - 53.424))')#\n", + "def f2(T):\n", + " P2 = exp(14.2532 - 2665.54/(T - 53.424))\n", + " return P2\n", + "#deff('[A] = f3(T)','A = 2.771 - 0.00523*T')#\n", + "def f3(T):\n", + " A = 2.771 - 0.00523*T\n", + " return A\n", + "\n", + "Temp = 318.15## [K]\n", + "x1 = 0.25#\n", + "#**************#\n", + "\n", + "P1sat = f1(Temp)## [kPa]\n", + "P2sat = f2(Temp)## [kPa]\n", + "A = f3(Temp)#\n", + "x2 = 1 - x1#\n", + "gama1 = exp(A*x2**2)#\n", + "gama2 = exp(A*x1**2)#\n", + "P = x1*gama1*P1sat + x2*gama2*P2sat#\n", + "y1 = x1*gama1*P1sat/P#\n", + "y2 = x2*gama2*P2sat/P#\n", + "print \"In Vapour phase\\n\"\n", + "print \"The mole fraction of methanol is %.3f\\n\"%(y1)#\n", + "print \"The mole fraction of methyl acetate is %.3f\\n\"%(y2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.7 Page: 408" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.7 - Page: 408\n", + "\n", + "\n", + "Azeotropic Composition\n", + "\n", + "The mole fraction of component 1 is 0.260\n", + "\n", + "The mole fraction of component 2 is 0.740\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp,log\n", + "print \"Example: 10.7 - Page: 408\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Temp = 30## [OC]\n", + "A = 0.625#\n", + "#**************#\n", + "\n", + "P1sat = exp(13.71 - 3800/Temp)## [kPa]\n", + "P2sat = exp(14.01 - 3800/Temp)## [kPa]\n", + "# At azeotropic point:\n", + "# P = gama1*P1sat + gama2*P2sat\n", + "# gama1/gama2 = P2sat/P1sat\n", + "# log(gama1) - log(gama2) = log(P2sat) - log(P1sat)\n", + "# Val = log(gama1) - gama2\n", + "Val = log(P2sat) - log(P1sat)#\n", + "# log(gama1) = (A*x2**2)\n", + "# log(gama2) = (A*x1**2)\n", + "# A(x2**2 - x1**2) = 0.625*(x2**2 - x1**2)..................... (1)\n", + "# x1 + x2 = 1............................................. (2)\n", + "# On simplifying, we get:\n", + "# A*(1 - (2*x1)) = Val\n", + "x1 = (1/2)*(1 - Val/A)#\n", + "x2 = 1 - x1#\n", + "print \"Azeotropic Composition\\n\"\n", + "print \"The mole fraction of component 1 is %.3f\\n\"%(x1)#\n", + "print \"The mole fraction of component 2 is %.3f\\n\"%(x2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.8 Page: 410" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.8 - Page: 410\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 10.8 on page 410 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 10.8 - Page: 410\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 10.8 on page number 410 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 10.8 on page 410 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.9 Page: 412" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.9 - Page: 412\n", + "\n", + "\n", + "Van Laar Constants\n", + "\n", + "A = -5.008\n", + "\n", + "B = 0.275\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp,log\n", + "\n", + "print \"Example: 10.9 - Page: 412\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "x1 = 0.42#\n", + "x2 = 0.58#\n", + "P = 760## [mm of Hg]\n", + "P1sat = 786## [mm of Hg]\n", + "P2sat = 551## [mm of Hg]\n", + "#***************#\n", + "\n", + "gama1 = P/P1sat#\n", + "gama2 = P/P2sat#\n", + "A = log(gama1)*(1 + (x2*log(gama2))/(x1*log(gama1)))**2#\n", + "B = log(gama2)*(1 + (x1*log(gama1))/(x2*log(gama2)))**2#\n", + "print \"Van Laar Constants\\n\"\n", + "print \"A = %.3f\\n\"%(A)#\n", + "print \"B = %.3f\\n\"%(B)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.10 Page: 412" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.10 - Page: 412\n", + "\n", + "\n", + "Activity Coeffecient\n", + "\n", + "gama1 = 1.086\n", + "\n", + "gama2 = 1.002\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp,log\n", + "print \"Example: 10.10 - Page: 412\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P = 101.3## [kPa]\n", + "P1sat = 100.59## [kPa]\n", + "P2sat = 99.27## [kPa]\n", + "x1 = 0.532#\n", + "#****************#\n", + "\n", + "x2 = 1 - x1#\n", + "gama1 = P/P1sat#\n", + "gama2 = P/P2sat#\n", + "A = log(gama1)*(1 + (x2*log(gama2))/(x1*log(gama1)))**2#\n", + "B = log(gama2)*(1 + (x1*log(gama1))/(x2*log(gama2)))**2#\n", + "\n", + "# For solution containing 10 mol percent benzene:\n", + "x1 = 0.10#\n", + "x2 = 1 - x1#\n", + "gama1 = exp(A/(1 + (A*x1/(B*x2))**2))#\n", + "gama2 = exp(B/(1 + (B*x2/(A*x1))**2))#\n", + "print \"Activity Coeffecient\\n\"\n", + "print \"gama1 = %.3f\\n\"%(gama1)#\n", + "print \"gama2 = %.3f\\n\"%(gama2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.11 Page: 413" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.11 - Page: 413\n", + "\n", + "\n", + "Equilibrium Composition\n", + "\n", + "Acetone Composition = 4.98 %\n", + "\n", + "Chloform composition = 95.02 %\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp,log\n", + "print \"Example: 10.11 - Page: 413\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P = 760## [mm of Hg]\n", + "P1sat = 995## [mm of Hg]\n", + "P2sat = 885## [mm of Hg]\n", + "x1 = 0.335#\n", + "T = 64.6## [OC]\n", + "#****************#\n", + "\n", + "x2 = 1 - x1#\n", + "gama1 = P/P1sat#\n", + "gama2 = P/P2sat#\n", + "A = log(gama1)*(1 + (x2*log(gama2))/(x1*log(gama1)))**2#\n", + "B = log(gama2)*(1 + (x1*log(gama1))/(x2*log(gama2)))**2#\n", + "\n", + "# For solution containing 11.1 mol percent acetone:\n", + "x1 = 0.111#\n", + "x2 = 1 - x1#\n", + "gama1 = exp((A*x2**2)/(x2 + (A*x1/(B))**2))#\n", + "gama2 = exp((B*x1**2)/(x1 + (B*x2/(A))**2))#\n", + "y1 = 1/(1 + (gama2*x2*P2sat/(gama1*x1*P1sat)))#\n", + "y2 = 1 - y1#\n", + "print \"Equilibrium Composition\\n\"\n", + "print \"Acetone Composition = %.2f %%\\n\"%(y1*100)#\n", + "print \"Chloform composition = %.2f %%\\n\"%(y2*100)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.12 Page: 414" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.12 - Page: 414\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 10.12 on page 414 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 10.12 - Page: 414\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 10.12 on page number 414 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 10.12 on page 414 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.13 Page: 418" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.13 - Page: 418\n", + "\n", + "\n", + "Wilson equation\n", + "\n", + "Activity Coeffecient of iso - butanol is 2.270\n", + "\n", + "Activity Coeffecient of iso - propanol is 1.265\n", + "\n", + "\n", + "\n", + "NTRL equation\n", + "\n", + "Activity Coeffecient of iso - butanol is 2.160\n", + "\n", + "Activity Coeffecient of iso - propanol is 1.269\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp,log\n", + "print \"Example: 10.13 - Page: 418\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# 1: iso - butanol\n", + "# 2: iso - propanol\n", + "T = 50 + 273## [K]\n", + "x1 = 0.3#\n", + "V1 = 65.2## [cubic cm/mol]\n", + "V2 = 15.34## [cubic cm/mol]\n", + "# For Wilson equation:\n", + "a12 = 300.55## [cal/mol]\n", + "a21 = 1520.32## [cal/mol]\n", + "# For NTRL equation:\n", + "b12 = 685.21## [cal/mol]\n", + "b21 = 1210.21## [cal/mol]\n", + "alpha = 0.552#\n", + "R = 2## [cal/mol K]\n", + "#******************#\n", + "\n", + "x2 = 1 - x1#\n", + "# A: Estimation of activity coeffecient using Wilson equation:\n", + "# From Eqn. 10.65:\n", + "A12 = (V2/V1)*exp(-a12/(R*T))#\n", + "# From Eqn. 10.66:\n", + "A21 = (V1/V2)*exp(-a21/(R*T))#\n", + "# From Eqn. 10.67:\n", + "gama1 = exp(-log(x1 + A12*x2) + x2*((A12/(x1 + A12*x2)) - (A21/(A21*x1 + x2))))#\n", + "# From Eqn. 10.68:\n", + "gama2 = exp(-log(x2 + A21*x1) - x1*((A12/(x1 + A12*x2)) - (A21/(A21*x1 + x2))))#\n", + "print \"Wilson equation\\n\"\n", + "print \"Activity Coeffecient of iso - butanol is %.3f\\n\"%(gama1)#\n", + "print \"Activity Coeffecient of iso - propanol is %.3f\\n\"%(gama2)#\n", + "print \"\\n\"\n", + "\n", + "# A: Estimation of activity coeffecient using NTRL equation:\n", + "t12 = b12/(R*T)#\n", + "t21 = b21/(R*T)#\n", + "G12 = exp(-alpha*t12)#\n", + "G21 = exp(-alpha*t21)#\n", + "# From Eqn. 10.70:\n", + "gama1 = exp((x2**2)*(t21*(G21/(x1 + x2*G21))**2 + (t12*G12/(x2 + x1*G12)**2)))#\n", + "# From Eqn. 10.71:\n", + "gama2 = exp((x1**2)*(t12*(G12/(x2 + x1*G12))**2 + (t21*G21/(x1 + x2*G21)**2)))#\n", + "print \"NTRL equation\\n\"\n", + "print \"Activity Coeffecient of iso - butanol is %.3f\\n\"%(gama1)#\n", + "print \"Activity Coeffecient of iso - propanol is %.3f\\n\"%(gama2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.14 Page: 426" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.14 - Page: 426\n", + "\n", + "\n", + "Bubble Temperature is 9 OC\n", + "\n", + "Composition of the vapour bubble:\n", + " y1 = 0.70\n", + " y2 = 0.30\n" + ] + } + ], + "source": [ + "print \"Example: 10.14 - Page: 426\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "x1 = 0.4## [mole fraction of ethane in vapour phase]\n", + "x2 = 0.6## [mole fraction of propane in vapour phase]\n", + "P = 1.5## [MPa]\n", + "#***************#\n", + "\n", + "# Assume T = 10 OC\n", + "T = 10## [OC]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 1.8#\n", + "K2 = 0.5#\n", + "# From Eqn. 10.83:\n", + "y1 = K1*x1#\n", + "y2 = K2*x2#\n", + "# Since y1 + y2 > 1, so we assume another value of T = 9 OC.\n", + "T = 9## [OC]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 1.75#\n", + "K2 = 0.5#\n", + "# From Eqn. 10.83:\n", + "y1 = K1*x1#\n", + "y2 = K2*x2#\n", + "# Since y1 + y2 = 1. Therefore:\n", + "print \"Bubble Temperature is %d OC\\n\"%(T)#\n", + "print \"Composition of the vapour bubble:\\n y1 = %.2f\\n y2 = %.2f\"%(y1,y2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.15 Page: 428" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.15 - Page: 428\n", + "\n", + "\n", + "Dew Pressure is 2.15 MPa\n", + "\n", + "Composition of the liquid drop:\n", + " x1 = 0.0247\n", + " x2 = 0.1648\n", + " x3 = 0.8065\n" + ] + } + ], + "source": [ + "print \"Example: 10.15 - Page: 428\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "y1 = 0.20## [mole fraction of methane in vapour phase]\n", + "y2 = 0.30## [mole fraction of ethane in vapour phase]\n", + "y3 = 0.50## [mole fraction of propane in vapour phase]\n", + "T = 30## [OC]\n", + "#*************#\n", + "\n", + "# Assume P = 2.0 MPa\n", + "P = 2.0## [MPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 8.5#\n", + "K2 = 2.0#\n", + "K3 = 0.68#\n", + "# From Eqn. 10.83:\n", + "x1 = y1/K1#\n", + "x2 = y2/K2#\n", + "x3 = y3/K3#\n", + "# Since x1 + x2 +x3 < 1, so we assume another value of P = 2.15 MPa at 30 OC.\n", + "P = 2.15## [MPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 8.1#\n", + "K2 = 1.82#\n", + "K3 = 0.62#\n", + "# From Eqn. 10.83:\n", + "x1 = y1/K1#\n", + "x2 = y2/K2#\n", + "x3 = y3/K3#\n", + "# Since x1 + x2 +x3 = 1. Therefore:\n", + "print \"Dew Pressure is %.2f MPa\\n\"%(P)#\n", + "print \"Composition of the liquid drop:\\n x1 = %.4f\\n x2 = %.4f\\n x3 = %.4f\"%(x1,x2,x3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.16 Page: 429" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.16 - Page: 429\n", + "\n", + "\n", + "Dew Pressure is 870 kPa\n", + "\n", + "Composition of the liquid drop:\n", + " x1 = 0.0063\n", + " x2 = 0.0755\n", + " x3 = 0.9186\n", + "\n", + "\n", + "\n", + "Bubble Pressure is 2656 kPa\n", + "\n", + "Composition of the vapour bubble:\n", + " y1 = 0.5490\n", + " y2 = 0.2200\n", + " y3 = 0.2310\n" + ] + } + ], + "source": [ + "print \"Example: 10.16 - Page: 429\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# Dew point Pressure\n", + "#*****Data******#\n", + "y1 = 0.10## [mole fraction of methane in vapour phase]\n", + "y2 = 0.20## [mole fraction of ethane in vapour phase]\n", + "y3 = 0.70## [mole fraction of propane in vapour phase]\n", + "T = 10## [OC]\n", + "#*************#\n", + "\n", + "# Assume P = 690 kPa\n", + "P = 690## [kPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 20.0#\n", + "K2 = 3.25#\n", + "K3 = 0.92#\n", + "# From Eqn. 10.83:\n", + "x1 = y1/K1#\n", + "x2 = y2/K2#\n", + "x3 = y3/K3#\n", + "# Since x1 + x2 +x3 < 1, so we assume another value of P = 10135 kPa at 10 OC.\n", + "P = 10135## [kPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 13.20#\n", + "K2 = 2.25#\n", + "K3 = 0.65#\n", + "# From Eqn. 10.83:\n", + "x1 = y1/K1#\n", + "x2 = y2/K2#\n", + "x3 = y3/K3#\n", + "# Since x1 + x2 +x3 > 1, so we assume another value of P = 870 kPa at 10 OC.\n", + "P = 870## [kPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 16.0#\n", + "K2 = 2.65#\n", + "K3 = 0.762#\n", + "# From Eqn. 10.83:\n", + "x1 = y1/K1#\n", + "x2 = y2/K2#\n", + "x3 = y3/K3#\n", + "# Since x1 + x2 +x3 = 1. Therefore:\n", + "print \"Dew Pressure is %d kPa\\n\"%(P)#\n", + "print \"Composition of the liquid drop:\\n x1 = %.4f\\n x2 = %.4f\\n x3 = %.4f\\n\"%(x1,x2,x3)#\n", + "print \"\\n\"\n", + "\n", + "# Bubble point Pressure\n", + "#*****Data******#\n", + "x1 = 0.10## [mole fraction of methane in vapour phase]\n", + "x2 = 0.20## [mole fraction of ethane in vapour phase]\n", + "x3 = 0.70## [mole fraction of propane in vapour phase]\n", + "T = 10## [OC]\n", + "#*************#\n", + "\n", + "# Assume P = 2622 kPa\n", + "P = 2622## [kPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 5.60#\n", + "K2 = 1.11#\n", + "K3 = 0.335#\n", + "# From Eqn. 10.83:\n", + "y1 = K1*x1#\n", + "y2 = K2*x2#\n", + "y3 = K3*x3#\n", + "# Since x1 + x2 +x3 > 1, so we assume another value of P = 2760 kPa at 10 OC.\n", + "P = 2760## [kPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 5.25#\n", + "K2 = 1.07#\n", + "K3 = 0.32#\n", + "# From Eqn. 10.83:\n", + "y1 = K1*x1#\n", + "y2 = K2*x2#\n", + "y3 = K3*x3#\n", + "# Since x1 + x2 +x3 < 1, so we assume another value of P = 2656 kPa at 10 OC.\n", + "P = 2656## [kPa]\n", + "# From Fig. 10.14 (Pg 426):\n", + "K1 = 5.49#\n", + "K2 = 1.10#\n", + "K3 = 0.33#\n", + "# From Eqn. 10.83:\n", + "y1 = K1*x1#\n", + "y2 = K2*x2#\n", + "y3 = K3*x3#\n", + "# Since x1 + x2 +x3 = 1. Therefore:\n", + "print \"Bubble Pressure is %d kPa\\n\"%(P)#\n", + "print \"Composition of the vapour bubble:\\n y1 = %.4f\\n y2 = %.4f\\n y3 = %.4f\"%(y1,y2,y3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.17 Page: 432" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.17 - Page: 432\n", + "\n", + "\n", + " L = 3.154304e-08 mol\n", + "\n", + " V = 1.000000e+00 mol\n", + "\n", + " y1 = 0.4500\n", + " y2 = 0.3500\n", + " y3 = 0.2000\n", + "\n", + " x1 = 0.2334\n", + " x2 = 0.3631\n", + " x3 = 0.4035\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "from math import exp,log\n", + "print \"Example: 10.17 - Page: 432\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# 1: acetone 2: acetonitrile 3: nitromethane\n", + "z1 = 0.45#\n", + "z2 = 0.35#\n", + "z3 = 0.20#\n", + "P1sat = 195.75## [kPa]\n", + "P2sat = 97.84## [kPa]\n", + "P3sat = 50.32## [kPa]\n", + "#***************#\n", + "\n", + "# Bubble Point Calculation:\n", + "Pbubble = z1*+P1sat + z2*P2sat +z3*P3sat## [kPa]\n", + "\n", + "# Dew Point Calculation:\n", + "Pdew = 1/((z1/P1sat) + (z2/P2sat) + (z3/P3sat))## [kPa]\n", + "K1 = P1sat/Pdew#\n", + "K2 = P2sat/Pdew#\n", + "K3 = P3sat/Pdew#\n", + "# Overall Material balance:\n", + "# For 1 mol of the feed.\n", + "# L + V = 1......................................... (1)\n", + "# F*zi = L*xi + V*yi ............................... (2)\n", + "# zi = (1 - V)*xi + V*yi ........................... (3)\n", + "# Substituting xi = yi/K in eqn. (3)\n", + "# yi = zi*Ki/(1 + V*(Ki - 1))\n", + "# Since, Sum(yi) = 1.\n", + "#deff('[y] = f(V)','y = (z1*K1/(1 + V*(K1 - 1))) + (z2*K2/(1 + V*(K2 - 1))) + (z3*K3/(1 + V*(K3 - 1))) - 1')#\n", + "def f(V):\n", + " y = (z1*K1/(1 + V*(K1 - 1))) + (z2*K2/(1 + V*(K2 - 1))) + (z3*K3/(1 + V*(K3 - 1))) - 1\n", + " return y\n", + "\n", + "V = fsolve(f,0.8)#\n", + "L = 1 - V#\n", + "y1 = z1*K1/(1 + V*(K1 - 1))#\n", + "y2 = z2*K2/(1 + V*(K2 - 1))#\n", + "y3 = z3*K3/(1 + V*(K3 - 1))#\n", + "# From Eqn. 10.83:\n", + "x1 = y1/K1#\n", + "x2 = y2/K2#\n", + "x3 = y3/K3#\n", + "print \" L = %e mol\\n\"%(L)#\n", + "print \" V = %e mol\\n\"%(V)#\n", + "print \" y1 = %.4f\\n y2 = %.4f\\n y3 = %.4f\\n\"%(y1,y2,y3)#\n", + "print \" x1 = %.4f\\n x2 = %.4f\\n x3 = %.4f\\n\"%(x1,x2,x3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.18 Page: 433" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.18 - Page: 433\n", + "\n", + "\n", + " L = 0.1615 mol\n", + "\n", + " V = 0.8385 mol\n", + "\n", + " y1 = 0.8205\n", + " y2 = 0.1795\n", + "\n", + " x1 = 0.7555\n", + " x2 = 0.2445\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "from math import exp\n", + "print \"Example: 10.18 - Page: 433\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# 1: Benzene 2: Toulene\n", + "z1 = 0.81#\n", + "Temp = 60## [OC]\n", + "P = 70## [kPa]\n", + "# Antonine Constants:\n", + "A1 = 14.2321#\n", + "B1 = 2773.61#\n", + "C1 = 220.13#\n", + "A2 = 15.0198#\n", + "B2 = 3102.64#\n", + "C2 = 220.02#\n", + "#******************#\n", + "\n", + "#deff('[P1] = f1(T)','P1 = exp(A1 - B1/(T + C1))')#\n", + "def f1(T):\n", + " P1 = exp(A1 - B1/(T + C1))\n", + " return P1\n", + "\n", + "P1sat = f1(Temp)## [kPa]\n", + "#deff('[P2] = f2(T)','P2 = exp(A2 - B2/(T + C2))')#\n", + "def f2(T):\n", + " P2 = exp(A2 - B2/(T + C2))\n", + " return P2\n", + "\n", + "P2sat = f2(Temp)## [kPa]\n", + "# P = x1*P1sat + x2*P2sat#\n", + "# x2 = 1 - x1#\n", + "#deff('[y] = f3(x1)','[y] = P - (x1*P1sat + (1 - x1)*P2sat)')#\n", + "def f3(x1):\n", + " y= P - (x1*P1sat + (1 - x1)*P2sat)\n", + " return y\n", + "\n", + "x1 = fsolve(f3,7)#\n", + "y1 = x1*P1sat/P#\n", + "x2 = 1 - x1#\n", + "y2 = 1 - y1#\n", + "\n", + "# Basis: 1 mol of feed stream.\n", + "F = 1## [mol]\n", + "# F*zi = L*xi + V*yi = L*xi + (1 - L)*yi\n", + "#deff('[y] = f4(L)','[y] = F*z1 - (L*x1 + (1 - L)*y1)')#\n", + "def f4(L):\n", + " y = F*z1 - (L*x1 + (1 - L)*y1)\n", + " return y\n", + "\n", + "L = fsolve(f4,7)## [mol]\n", + "V = 1 - L## [mol]\n", + "print \" L = %.4f mol\\n\"%(L)#\n", + "print \" V = %.4f mol\\n\"%(V)#\n", + "print \" y1 = %.4f\\n y2 = %.4f\\n\"%(y1,y2)#\n", + "print \" x1 = %.4f\\n x2 = %.4f\\n\"%(x1,x2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 10.19 Page: 413" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 10.19 - Page: 436\n", + "\n", + "\n", + "The data is not consistent thermodynamically\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fd0b8eb9350>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from math import exp, log\n", + "from numpy import nditer, shape, zeros,mat \n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, grid\n", + "\n", + "print \"Example: 10.19 - Page: 436\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# (1): acetone (2): carbon tetrachloride\n", + "T = 45## [OC]\n", + "# Data = [P (torr), x1, y1]\n", + "\n", + "Data = mat([[315.32, 0.0556, 0.2165],[339.70, 0.0903, 0.2910],[397.77, 0.2152, 0.4495],[422.46, 0.2929, 0.5137],[448.88, 0.3970, 0.5832],[463.92, 0.4769, 0.6309],[472.84, 0.5300, 0.6621],[485.16, 0.6047, 0.7081],[498.07, 0.7128, 0.7718],[513.20, 0.9636, 0.9636]])\n", + "#*************#\n", + "\n", + "# From the standard data (Pg 531):\n", + "# For Acetone:\n", + "A1 = 14.2342#\n", + "B1 = 2691.46#\n", + "C1 = 230.00#\n", + "# For carbon tetrachloride:\n", + "A2 = 13.6816#\n", + "B2 = 2355.82#\n", + "C2 = 220.58#\n", + "P1sat = exp(A1 - B1/(T + C1))## [kPa]\n", + "P2sat = exp(A2 - B2/(T + C2))## [kPa]\n", + "P1sat = P1sat*760/101.325## [torr]\n", + "P2sat = P2sat*760/101.325## [torr]\n", + "P = Data[:,0]#\n", + "x1 = Data[:,1]#\n", + "y1 = Data[:,2]#\n", + "x2 = 1 - x1#\n", + "y2 = 1 - y1#\n", + "\n", + "gama1 = zeros(x1.shape)\n", + "i=0\n", + "for a,b,c in nditer([y1,P,x1]):\n", + " gama1[i]=(a*b/c)\n", + " i+=1\n", + "\n", + " \n", + "gama2 = zeros(x2.shape)\n", + "i=0\n", + "for a,b,c in nditer([y2,P,x2]):\n", + " gama2[i]=(a*b/c)\n", + " i+=1\n", + "\n", + "Value = zeros(gama1.shape)\n", + "i=0 \n", + "for x,y in nditer([gama1, gama2]):\n", + " Value[i]=(log(x/y))\n", + " i+=1\n", + "plot(x1,Value)\n", + "grid()#\n", + "xlabel(\"x1\")\n", + "ylabel(\"ln(y1/y2)\")\n", + "# Since the whole area is above X - axis:\n", + "print \"The data is not consistent thermodynamically\\n\"\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch11_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch11_1.ipynb new file mode 100644 index 00000000..f5b09f12 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch11_1.ipynb @@ -0,0 +1,363 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 11 - Additional topics in phase equillibrium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 11.1 Page: 458" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 11.1 - Page: 458\n", + "\n", + "\n", + "Molecular Formula of Sulphur is S8\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 11.1 - Page: 458\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "a = 2.423## [g]\n", + "b = 100## [g]\n", + "Lf = 35.7## [cal/g]\n", + "Tf = 353.1## [cal/g]\n", + "delta_Tf = 0.64## [OC]\n", + "R = 2## [cal/mol K]\n", + "Mw = 32## [Molecular wt. of Sulphur, g/mol]\n", + "#*************#\n", + "\n", + "M2 = ((R*Tf**2/(1000*Lf))*(a*1000/(b)))/delta_Tf## [g/mol]\n", + "n = M2/Mw#\n", + "print \"Molecular Formula of Sulphur is S%d\"%(round(n))#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 11.2 Page: 459" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 11.2 - Page: 459\n", + "\n", + "\n", + "Molal Freezing point is 5.10 kg/kmol\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 11.2 - Page: 459\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Tf = 5 + 273## [K]\n", + "Lf = 9830## [J/mol]\n", + "R = 8.314## [J/mol K]\n", + "M1 = 78## [kg/kmol]\n", + "#**************#\n", + "\n", + "Kf = R*Tf**2*M1/(1000*Lf)## [kg/kmol]\n", + "print \"Molal Freezing point is %.2f kg/kmol\\n\"%(Kf)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 11.3 Page: 458" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 11.3 - Page: 458\n", + "\n", + "\n", + "Latent Heat of Fusion of phenol is 26.54 cal/g\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 11.3 - Page: 458\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "T_melting = 40## [OC]\n", + "Tf = T_melting + 273## [K]\n", + "a = 0.172## [g]\n", + "b = 12.54## [g]\n", + "T_new = 39.25## [OC]\n", + "M2 = 135## [Molecular wt. of acetanilide, g/mol]\n", + "R = 2## [cal/mol K]\n", + "#**************#\n", + "\n", + "delta_T = T_melting - T_new## [OC]\n", + "Kf = delta_T*b*M2/(1000*a)#\n", + "Lv = ((R*Tf**2/(1000)))/Kf## [cal/g]\n", + "print \"Latent Heat of Fusion of phenol is %.2f cal/g\\n\"%(Lv)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 11.4 Page: 461" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 11.4 - Page: 461\n", + "\n", + "\n", + "Molecular weight of anthracene is 178 kg/kmol\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 11.4 - Page: 461\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "T_boiling = 118.24## [OC]\n", + "Tb = T_boiling + 273## [K]\n", + "a = 0.4344## [g]\n", + "b = 44.16## [g]\n", + "Lv = 121## [cal/g]\n", + "T_new = 118.1## [OC]\n", + "R = 2## [cal/mol K]\n", + "#**************#\n", + "\n", + "delta_Tb = T_boiling - T_new## [OC]\n", + "M2 = (R*Tb**2/(1000*Lv))*(a*1000/(b*delta_Tb))#\n", + "print \"Molecular weight of anthracene is %d kg/kmol\"%(round(M2))#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 11.5 Page: 462" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 11.5 - Page: 462\n", + "\n", + "\n", + "Molar Latent Heat of Vaporisation is 31638 J/mol\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 11.5 - Page: 462\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "delta_Tb = 2.3## [K]\n", + "w1 = 100## [g]\n", + "M1 = 78## [g/mol]\n", + "w2 = 13.86## [g]\n", + "M2 = 154## [g/mol]\n", + "Tb = 353.1## [K]\n", + "R = 8.314## [J/mol K]\n", + "#****************#\n", + "\n", + "# Molality:\n", + "m = w2*1000/(w1*M2)## [mol/kg]\n", + "# Molal Elevation Constant:\n", + "Kb = delta_Tb/m## [K kg/mol]\n", + "# Molar Latent Heat of Vaporisation:\n", + "Lv = R*Tb**2*M1/(1000*Kb)## [J/mol]\n", + "print \"Molar Latent Heat of Vaporisation is %d J/mol\"%(Lv)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 11.6 Page: 465" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 11.6 - Page: 465\n", + "\n", + "\n", + "Osmotic Pressure is 594.38 kPa\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 11.6 - Page: 465\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Temp = 50 + 273## [K]\n", + "w2 = 60## [g]\n", + "w1 = 1500## [g]\n", + "M1 = 18## [g/mol]\n", + "M2 = 180## [g/mol]\n", + "Vl = 18*10**(-6)## [Molar Volume of water, cubic m/mol]\n", + "R = 8.314## [J/mol K]\n", + "#***************#\n", + "\n", + "# Mole fraction of glucose:\n", + "x2 = (w2/M2)/((w2/M2) + (w1/M1))#\n", + "# Applying Eqn. (11.45):\n", + "P = R*Temp*x2/Vl## [N/square m]\n", + "P = P/1000## [kPa]\n", + "print \"Osmotic Pressure is %.2f kPa\\n\"%(P)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 11.7 Page: 465" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 11.7 - Page: 465\n", + "\n", + "\n", + "Osmotic Pressure of the solution is 4.92 atm\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 11.7 - Page: 465\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "w2 = 0.6## [g]\n", + "w3 = 1.8## [g]\n", + "Temp = 27 + 273## [K]\n", + "V1 = 100## [cubic cm]\n", + "M2 = 60## [g/mol]\n", + "M3 = 180## [g/mol]\n", + "R = 0.082## [L.atm/mol.K]\n", + "#****************#\n", + "\n", + "V1 = V1/1000## [litre]\n", + "# C: Concentration per litre\n", + "C = ((w2/M2) + (w3/M3))/V1## [mol/litre]\n", + "P = C*R*Temp## [atm]\n", + "print \"Osmotic Pressure of the solution is %.2f atm\"%(P)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch12_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch12_1.ipynb new file mode 100644 index 00000000..7a08e97a --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch12_1.ipynb @@ -0,0 +1,1331 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter12 - Chemical reaction equillibria" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.1 Page: 471" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.1 - Page: 471\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 12.1 on page 471 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 12.1 - Page: 471\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 12.1 on page number 471 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 12.1 on page 471 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.2 Page: 473" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.2 - Page: 473\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 12.2 on page 473 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 12.2 - Page: 473\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 12.2 on page number 473 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 12.2 on page 473 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.3 Page: 479" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.3 - Page: 479\n", + "\n", + "\n", + "Reaction is feasible\n", + "\n", + "Equilibium Constant is 7.964e+32\n" + ] + } + ], + "source": [ + "from math import exp\n", + "from __future__ import division\n", + "print \"Example: 12.3 - Page: 479\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: C2H5OH(g) + (1/2)O2(g) = CH3CHO(g) + H2O(g)\n", + "Temp = 298## [K]\n", + "G_CH3CHO = -133.978## [kJ]\n", + "G_H2O = -228.60## [kJ]\n", + "G_C2H5OH = -174.883## [kJ]\n", + "R = 8.314## [J/mol K]\n", + "#***************#\n", + "\n", + "G_O2 = 0## [kJ]\n", + "G_rkn = G_CH3CHO + G_H2O -(G_C2H5OH + G_O2)## [kJ]\n", + "G_rkn = G_rkn*1000## [J]\n", + "if G_rkn < 0 :\n", + " print \"Reaction is feasible\\n\"\n", + " K = exp(-(G_rkn/(R*Temp)))#\n", + " print \"Equilibium Constant is %.3e\"%(K)#\n", + "else:\n", + " print \"Reaction is not feasible\\n\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.4 Page: 479" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.4 - Page: 479\n", + "\n", + "\n", + "Vaporisation of liquid water is not spontaneous\n", + "\n" + ] + } + ], + "source": [ + "print \"Example: 12.4 - Page: 479\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# H2O(l) = H2O(g)\n", + "deltaH = 9710## [cal]\n", + "deltaS = 26## [e.u.]\n", + "Temp = 27 + 273## [K]\n", + "P = 1## [atm]\n", + "#**************#\n", + "\n", + "deltaG = deltaH - Temp*deltaS## [cal]\n", + "if deltaG > 0:\n", + " print \"Vaporisation of liquid water is not spontaneous\\n\"\n", + "else:\n", + " print \"Vaporisation of liquid water is spontaneous\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.5 Page: 481" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.5 - Page: 481\n", + "\n", + "\n", + "Standard Gibbs free energy change is -33.5 kJ/mol\n", + "\n", + "Equilibrium constant is 7.45e+05\n" + ] + } + ], + "source": [ + "from math import exp\n", + "from __future__ import division\n", + "print \"Example: 12.5 - Page: 481\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: N2(g) + 3H2(g) = 2NH3(g)\n", + "Temp = 298## [K]\n", + "G_NH3 = -16.750## [kJ/mol]\n", + "R = 8.314## [J/mol K]\n", + "#***************#\n", + "\n", + "G_N2 = 0## [kJ/mol]\n", + "G_H2 = 0## [kJ/mol]\n", + "G_rkn = 2*G_NH3 - G_N2 - 3*G_H2## [kJ/mol]\n", + "print \"Standard Gibbs free energy change is %.1f kJ/mol\\n\"%(G_rkn)#\n", + "G_rkn = G_rkn*1000## [J/mol]#\n", + "K = exp(-(G_rkn/(R*Temp)))#\n", + "print \"Equilibrium constant is %.2e\"%(K)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.6 Page: 481" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.6 - Page: 481\n", + "\n", + "\n", + "Equilibrium Constant is 1.005e+05\n" + ] + } + ], + "source": [ + "from math import exp\n", + "from __future__ import division\n", + "print \"Example: 12.6 - Page: 481\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: CO(g) + H2O(g) = CO2(g) + H2(g)\n", + "G_CO = -32.8## [kcal]\n", + "G_H2O = -54.64## [kcal]\n", + "G_CO2 = -94.26## [kcal]\n", + "Temp = 273 + 25## [K]\n", + "R = 1.987## [cal/mol.K]\n", + "#***************#\n", + "\n", + "G_H2 = 0## [kcal]\n", + "G_rkn = G_CO2 + G_H2 - (G_CO + G_H2O)## [kcal]\n", + "G_rkn = G_rkn*1000## [cal]\n", + "K = exp(-(G_rkn/(R*Temp)))#\n", + "print \"Equilibrium Constant is %.3e\"%(K)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.7 Page: 485" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.7 - Page: 485\n", + "\n", + "\n", + "Equilibrium constant at 1000 K is 0.9190\n" + ] + } + ], + "source": [ + "from math import exp\n", + "from __future__ import division\n", + "print \"Example: 12.7 - Page: 485\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: CO(g) + H2O(g) = CO2(g) + H2(g)\n", + "T1 = 298## [K]\n", + "T2 = 1000## [K]\n", + "P = 1## [bar]\n", + "K1 = 1.1582*10**5#\n", + "H_CO = -110.532## [kJ]\n", + "H_H2O = -241.997## [kJ]\n", + "H_CO2 = -393.978## [kJ]\n", + "R = 8.314## [J/mol.K]\n", + "#***************#\n", + "\n", + "H_H2 = 0## [kJ]\n", + "H_rkn = H_CO2 + H_H2 - (H_CO + H_H2O)## [kJ]\n", + "H_rkn = H_rkn*1000## [J]\n", + "# From Van't Hoff Equation,\n", + "K2 = K1*exp((H_rkn/R)*((1/T1) - (1/T2)))#\n", + "print \"Equilibrium constant at 1000 K is %.4f\"%(K2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.8 Page: 485" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.8 - Page: 485\n", + "\n", + "\n", + "Equilibrium constant at 700 K is 3.8878e-04\n" + ] + } + ], + "source": [ + "from math import exp\n", + "from __future__ import division\n", + "print \"Example: 12.8 - Page: 485\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: N2(g) + 3H2(g) = 2NH3(g)\n", + "T1 = 298## [K]\n", + "T2 = 700## [K]\n", + "H_NH3 = -46.1## [kJ]\n", + "G_NH3 = -16.747## [kJ]\n", + "R = 8.314## [J/mol.K]\n", + "#**************#\n", + "\n", + "H_N2 = 0## [kJ]\n", + "H_H2 = 0## [kJ]\n", + "G_N2 = 0## [kJ]\n", + "G_H2 = 0## [kJ]\n", + "H_rkn = 2*H_NH3 - (H_N2 + 3*H_H2)## [kJ]\n", + "G_rkn = 2*G_NH3 - (G_N2 + 3*G_H2)## [kJ]\n", + "H_rkn = H_rkn*1000## [J]\n", + "G_rkn = G_rkn*1000## [J]\n", + "K1 = exp(-(G_rkn/(R*T1)))#\n", + "K2 = K1*exp((H_rkn/R)*((1/T1) - (1/T2)))#\n", + "print \"Equilibrium constant at 700 K is %.4e\"%(K2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.9 Page: 486" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.9 - Page: 486\n", + "\n", + "\n", + "Standard Gibbs free energy at 1000 K -6.055 kJ\n", + "\n", + "Standard Equilibrium Constant is 2.1\n" + ] + } + ], + "source": [ + "from math import exp,log\n", + "from __future__ import division\n", + "\n", + "print \"Example: 12.9 - Page: 486\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: CO(g) + H2O(g) ----> CO2(g) + H2(g)\n", + "T1 = 298## [K]\n", + "T2 = 1000## [K]\n", + "deltaH_298 = -41450## [J/mol]\n", + "deltaGf_298 = -28888## [J/mol]\n", + "alpha_CO2 = 45.369## [kJ/kmol K]\n", + "alpha_H2 = 27.012## [kJ/kmol K]\n", + "alpha_CO = 28.068## [kJ/kmol K]\n", + "alpha_H2O = 28.850## [kJ/kmol K]\n", + "beeta_CO2 = 8.688*10**(-3)## [kJ/kmol square K]\n", + "beeta_H2 = 3.509*10**(-3)## [kJ/kmol square K]\n", + "beeta_CO = 4.631*10**(-3)## [kJ/kmol square K]\n", + "beeta_H2O = 12.055*10**(-3)## [kJ/kmol square K]\n", + "R = 8.314## [J/mol K]\n", + "#*************#\n", + "\n", + "delta_alpha = alpha_CO2 + alpha_H2 - (alpha_CO + alpha_H2O)#\n", + "delta_beeta = beeta_CO2 + beeta_H2 - (beeta_CO + beeta_H2O)#\n", + "# To obtain the standard heat of reaction:\n", + "deltaH_0 = deltaH_298 - (delta_alpha*T1 + (delta_beeta*T1**2)/2)## [kJ/mol]\n", + "# From Eqn. 12.52:\n", + "IR = (deltaH_0 - delta_alpha*T1*log(T1) - (delta_beeta*T1**2)/2 - deltaGf_298)/T1## [kJ/mol K]\n", + "# Substituting T = T2 and IR in Eqn. 12.51:\n", + "deltaG_1000 = deltaH_0 - delta_alpha*T2*log(T2) - (delta_beeta*T2**2)/2 - IR*T2## [kJ/mol]\n", + "print \"Standard Gibbs free energy at 1000 K %.3f kJ\\n\"%(deltaG_1000/1000)#\n", + "\n", + "# Standard Equilibrium Constant at 1000 K\n", + "K_1000 = exp(-(deltaG_1000)/(R*T2))#\n", + "print \"Standard Equilibrium Constant is %.1f\"%(K_1000)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.10 Page: 489" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.10 - Page: 489\n", + "\n", + "\n", + "Composition of the gas leaving the mixture\n", + "\n", + "yCO = yH20 = 0.2247\n", + "\n", + "yCO2 = yH2 = 0.2753\n", + "\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "print \"Example: 12.10 - Page: 489\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: CO(g) + H2O(g) ------> CO2(g) + H2(g)\n", + "P = 10## [bar]\n", + "T = 1000## [K]\n", + "K_1000 = 1.5#\n", + "#***********#\n", + "\n", + "# Moles in feed:\n", + "nCO_feed = 1#\n", + "nH20_feed = 1#\n", + "# Let e be the degree of completion at equilibrium.\n", + "# Moles at Equilibrium:\n", + "# nCO_eqb = 1 - e#\n", + "# nH20_eqb = 1 - e#\n", + "# nCO2_eqb = e#\n", + "# nH2_eqb = e#\n", + "# Total moles at equilibrium = 1 - e + 1 - e + e + e = 2\n", + "# Mole Fractions at Equilibrium:\n", + "# yCO_eqb = (1 - e)/2#\n", + "# yH20_eqb = (1 - e)/2#\n", + "# yCO2_eqb = e/2#\n", + "# yH2_eqb = e/2#\n", + "# Sum of stoichometric coeffecient:\n", + "v = 1 + 1 - 1 - 1#\n", + "K = K_1000*P**v#\n", + "#deff('[y] = f(e)','y = K - (e/2)*(e/2)/(((1 - e)/2)*(1 - e)/2)')#\n", + "def f(e):\n", + " y = K - (e/2)*(e/2)/(((1 - e)/2)*(1 - e)/2)\n", + " return y\n", + "e = fsolve(f, 0.5)#\n", + "print \"Composition of the gas leaving the mixture\\n\"\n", + "print \"yCO = yH20 = %.4f\\n\"%((1 - e)/2)#\n", + "print \"yCO2 = yH2 = %.4f\\n\"%(e/2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.11 Page: 489" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.11 - Page: 489\n", + "\n", + "\n", + "Molar Composition of the gases\n", + "\n", + "yN2 = 0.1103\n", + "\n", + "yH2 = 0.7207\n", + "\n", + "yNH3 = 0.1690\n", + "\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "print \"Example: 12.11 - Page: 489\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: N2(g) + 3H2(g) --------> 2NH3\n", + "nN2_feed = 1#\n", + "nH2_feed = 5#\n", + "T = 800## [K]\n", + "P = 250## [bar]\n", + "K = 1.106*10**(-5)#\n", + "#**************#\n", + "\n", + "# Let e be the degree of completion at equilibrium.\n", + "# Moles at Equilibrium:\n", + "# nN2_eqb = 1 - e#\n", + "# nH2_eqb = 5 - 3*e#\n", + "# nNH3_eqb = 2*e#\n", + "# Total moles at equilibrium = 1 - e + 5 - 3*e + 2*e = 2*(3 - e)\n", + "# Mole Fractions at Equilibrium:\n", + "# yN2_eqb = (1 - e)/(2*(3 - e))#\n", + "# yH2_eqb = (5 - 3*e)/(2*(3 - e))#\n", + "# yNH3_eqb = 2*e/(2*(3 - e))#\n", + "# Sum of stoichometric coeffecient:\n", + "v = 2 - 3 - 1#\n", + "Ky = K*P**(-v)#\n", + "def f(e):\n", + " y = Ky - ((2*e/(2*(3 - e)))**2)/(((1-e)/((2*(3 - e))))*((5 - 3*e)/(2*(3 - e)))**3)\n", + " return y\n", + "e = fsolve(f, 0.5)#\n", + "print \"Molar Composition of the gases\\n\"\n", + "print \"yN2 = %.4f\\n\"%((1 - e)/(2*(3 - e)))#\n", + "print \"yH2 = %.4f\\n\"%((5 - 3*e)/(2*(3 - e)))#\n", + "print \"yNH3 = %.4f\\n\"%((2*e)/(2*(3 - e)))#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.12 Page: 490" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.12 - Page: 490\n", + "\n", + "\n", + "Molar Composition of the gases\n", + "\n", + "nSO2 = 0.52\n", + "\n", + "nO2 = 3.26\n", + "\n", + "nSO3 = 9.48\n", + "\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "print \"Example: 12.12 - Page: 490\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: SO2(g) + (1/2)O2 ------> SO3(g)\n", + "P = 1## [bar]\n", + "T = 750## [K]\n", + "K = 74#\n", + "#************#\n", + "\n", + "# Moles in Feed:\n", + "nSO2 = 1#\n", + "nO2 = 0.5#\n", + "# Let e be the degree of completion at equilibrium.\n", + "# Moles at Equilibrium:\n", + "# nSO2_eqb = 10 - e#\n", + "# nO2_eqb = 8 - 0.5*e#\n", + "# nSO3_eqb = e#\n", + "# Total no. of moles = 10 - e + 8 - 0.5*e + e = 18 -0.5*e#\n", + "# Mole fraction at Equilibrium:\n", + "# ySO2_eqb = (10 - e)/(18 - 0.5*e)#\n", + "# yO2_eqb = (8 - 0.5*e)/(18 - 0.5*e)#\n", + "# ySO3_eqb = e/(18 - 0.8*e)#\n", + "# Sum of stoichometric coeffecient:\n", + "v = 1 - 1 -0.5#\n", + "Ky = K*P**(-v)#\n", + "def f(e):\n", + " y = Ky - (e*(18 - (0.5*e)))/((10 - e)*(8 - 0.5*e))\n", + " return y\n", + "e = fsolve(f, 7)#\n", + "print \"Molar Composition of the gases\\n\"\n", + "print \"nSO2 = %.2f\\n\"%((10 - e))#\n", + "print \"nO2 = %.2f\\n\"%((8 - 0.5*e))#\n", + "print \"nSO3 = %.2f\\n\"%(e)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.13 Page: 492" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.13 - Page: 492\n", + "\n", + "\n", + "Total Pressure Required for 50 % conversion of PCl5 is 5.4 atm\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "print \"Example: 12.13 - Page: 492\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: PCl5 = PCl3 + Cl2\n", + "T = 250## [OC]\n", + "Kp = 1.8#\n", + "e = 0.5#\n", + "#**************#\n", + "\n", + "# Basis: 1 mol of PCl5\n", + "# At Equilibrium:\n", + "n_PCl5 = 1 - e#\n", + "n_PCl3 = e#\n", + "n_Cl2 = e#\n", + "n_total = n_PCl5 + n_PCl3 + n_Cl2#\n", + "# Patrial Pressures:\n", + "# P_PCl5 = (n_PCl5/n_total)*P\n", + "# P_PCl3 = (n_PCl3/n_total)*P\n", + "# P_Cl2 = (n_Cl2/n_total)*P\n", + "def f(P):\n", + " y = Kp - ((n_PCl3/n_total)*P)*((n_Cl2/n_total)*P)/((n_PCl5/n_total)*P)\n", + " return y\n", + "P = fsolve(f, 7)## [atm]\n", + "print \"Total Pressure Required for 50 %% conversion of PCl5 is %.1f atm\"%(P)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.14 Page: 494" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.14 - Page: 494\n", + "\n", + "\n", + "Degree of Conversion is 0.802\n", + "\n", + "Equilibrium Composition of the reaction Mixture\n", + "\n", + "ySO2 = 0.0639\n", + "\n", + "yO2 = 0.0319\n", + "\n", + "ySO3 = 0.2588\n", + "\n", + "yAr = 0.6454\n", + "\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "print \"Example: 12.14 - Page: 494\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: SO2(g) + (1/2)O2(g) -------> SO3(g)\n", + "# Moles in Feed:\n", + "nSO2_feed = 1#\n", + "nO2_feed = 0.5#\n", + "nAr_feed = 2#\n", + "P = 30## [bar]\n", + "T = 900## [K]\n", + "K = 6#\n", + "#*************#\n", + "\n", + "# Let e be the degree of completion at equilibrium.\n", + "# nSO2_eqb = 1 - e#\n", + "# nO2_eqb = 0.5*(1 - e)#\n", + "# nSO3_eqb = e#\n", + "# nAr_eqb = 2#\n", + "# Total moles at equilibrium = 1 - e + 0.5*(1 - e) + e + 2 = (7 - e)/2\n", + "# Mole fractions:\n", + "# ySO2_eqb = 2*(1 - e)/(7 - e)\n", + "# yO2_eqb = (1 - e)/(7 - e)\n", + "# ySO3_eqb = 2*e/(7 - e)\n", + "# yAr_eqb = 4/(7 - e)\n", + "# Sum of Stoichiometric Coeffecient:\n", + "v = 1 - 1 - 1/2#\n", + "Ky = K*P**(-v)#\n", + "e = 0.8#\n", + "err = 1#\n", + "while err > 0.2:\n", + " Ky_new = (2*e/(7 - e))/(((2*(1 - e))/(7 - e))*(((1 - e)/(7 - e))**0.5))#\n", + " err = abs(Ky - Ky_new)#\n", + " Ky = Ky_new#\n", + " e = e + 0.001#\n", + "print \"Degree of Conversion is %.3f\\n\"%(e)#\n", + "ySO2_eqb = 2*(1 - e)/(7 - e)#\n", + "yO2_eqb = (1 - e)/(7 - e)#\n", + "ySO3_eqb = 2*e/(7 - e)#\n", + "yAr_eqb = 4/(7 - e)#\n", + "print \"Equilibrium Composition of the reaction Mixture\\n\"\n", + "print \"ySO2 = %.4f\\n\"%(ySO2_eqb)#\n", + "print \"yO2 = %.4f\\n\"%(yO2_eqb)#\n", + "print \"ySO3 = %.4f\\n\"%(ySO3_eqb)#\n", + "print \"yAr = %.4f\\n\"%(yAr_eqb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.15 Page: 498" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.15 - Page: 498\n", + "\n", + "\n", + "Mole fraction of ethyl acetate is 0.639\n" + ] + } + ], + "source": [ + "from math import exp\n", + "print \"Example: 12.15 - Page: 498\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: CH3COOH(l) + C2H5OH(l) --------> CH3COOC2H5(l) + H2O(l)\n", + "T = 373.15## [K]\n", + "nCH3COOH_feed = 1#\n", + "nC2H5OH_feed = 1#\n", + "deltaHf_CH3COOH = -484.5## [kJ]\n", + "deltaHf_C2H5OH = -277.69## [kJ]\n", + "deltaHf_CH3COOC2H5 = -480## [kJ]\n", + "deltaHf_H2O = -285.83## [kJ]\n", + "deltaGf_CH3COOH = -389.9## [kJ]\n", + "deltaGf_C2H5OH = -174.78## [kJ]\n", + "deltaGf_CH3COOC2H5 = -332.2## [kJ]\n", + "deltaGf_H2O = -237.13## [kJ]\n", + "R = 8.314## [J/mol K]\n", + "#******************#\n", + "\n", + "deltaH_298 = deltaHf_CH3COOC2H5 + deltaHf_H2O - deltaHf_CH3COOH - deltaHf_C2H5OH## [kJ]\n", + "deltaG_298 = deltaGf_CH3COOC2H5 + deltaGf_H2O - deltaGf_CH3COOH - deltaGf_C2H5OH## [kJ]\n", + "T0 = 298## [K]\n", + "K_298 = exp(-(deltaG_298*1000/(R*T0)))#\n", + "K_373 = K_298*exp((deltaH_298*1000/R)*((1/T0) - (1/T)))#\n", + "# Let e be the degree of completion at equilibrium.\n", + "# nCH3COOH_eqb = 1 - e#\n", + "# nC2H5OH_eqb = 1 - e#\n", + "# nCH3COOC2H5_eqb = e#\n", + "# nH2O_eqb = e#\n", + "# Total moles at equilibrium = 1 - e + 1 - e + e + e = 2\n", + "# Mole fractions:\n", + "# ySO2_eqb = (1 - e)/2\n", + "# yO2_eqb = (1 - e)/2\n", + "# ySO3_eqb = e/2\n", + "# yAr_eqb = e/2\n", + "# Sum of Stoichiometric Coeffecient:\n", + "v = 1 + 1 - 1 - 1#\n", + "def f(e):\n", + " y = K_373 - ((e/2)*(e/2))/(((1 - e)/2)*((1 - e)/2))\n", + " return y\n", + "e = fsolve(f, 0.5)#\n", + "print \"Mole fraction of ethyl acetate is %.3f\"%(e/2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.16 Page: 501" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.16 - Page: 501\n", + "\n", + "\n", + "The decomposition pressure of limestone is 0.0493 bar at 1000 K\n" + ] + } + ], + "source": [ + "from math import exp\n", + "from __future__ import division\n", + "print \"Example: 12.16 - Page: 501\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: CaCO3(s) = CaO(s) + CO2(g)\n", + "T = 1000## [K]\n", + "deltaH_1000 = 1.7533*10**5## [J]\n", + "deltaS_1000 = 150.3## [J/mol K]\n", + "R = 8.314## [J/mol K]\n", + "#****************#\n", + "\n", + "deltaG_1000 = deltaH_1000 - T*deltaS_1000## [J]\n", + "K_1000 = exp(-(deltaG_1000/(R*T)))## [bar]\n", + "P = K_1000#\n", + "print \"The decomposition pressure of limestone is %.4f bar at 1000 K\"%(P)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.17 Page: 501" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.17 - Page: 501\n", + "\n", + "\n", + "The decomposition pressure is 0.0093 bar at 400 K\n", + "\n", + "The decomposition pressure is 343.20 bar at 700 K\n", + "\n", + "The decomposition temperature is 493.450 K\n" + ] + } + ], + "source": [ + "from math import exp,log\n", + "from __future__ import division\n", + "\n", + "print \"Example: 12.17 - Page: 501\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Reaction: A(s) ---------> B(s) + C(g)\n", + "def f1(T):\n", + " deltaG = 85000 - 213.73*T + 6.71*T*log(T) - 0.00028*T**2\n", + " return deltaG\n", + "T1 = 400## [K]\n", + "T2 = 700## [K]\n", + "Pc = 1## [bar]\n", + "R = 8.314## [J/mol K]\n", + "#**************#\n", + "\n", + "deltaG_400 = f1(400)## [J]\n", + "deltaG_700 = f1(700)## [J]\n", + "K_400 = exp(-(deltaG_400/(R*T1)))## [bar]\n", + "K_700 = exp(-(deltaG_700/(R*T2)))## [bar]\n", + "print \"The decomposition pressure is %.4f bar at 400 K\\n\"%(K_400)#\n", + "print \"The decomposition pressure is %.2f bar at 700 K\\n\"%(K_700)#\n", + "\n", + "# Equilibrium constant for solid - gas reaction is:\n", + "# K = aB*aC/aA = aC = fC = Pc\n", + "def f2(T):\n", + " y = Pc - exp(-f1(T)/(R*T))\n", + " return y\n", + "T = fsolve(f2,900)## [K]\n", + "print \"The decomposition temperature is %.3f K\"%(T)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.18 Page: 502" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.18 - Page: 502\n", + "\n", + "\n", + "Equilibrium Composition\n", + "\n", + "yH2 = 0.34\n", + "\n", + "y_H2O = 0.66\n", + "\n" + ] + } + ], + "source": [ + "print \"Example: 12.18 - Page: 502\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "T = 875## [K]\n", + "K = 0.514#\n", + "P = 1## [bar]\n", + "#*************#\n", + "\n", + "# Reaction: Fe(s) + H2O(g) --------->FeO(s) + H2(g)\n", + "# K = a_FeO*a_H2/(a_Fe*a_H2O)\n", + "# Since the activities of the solid components Fe & FeO at equilibrium may be taken as unity.\n", + "# a_Fe = a_FeO = 1\n", + "# Ka = a_H2/a_H2O#\n", + "# Feed:\n", + "nH2O_feed = 1#\n", + "nH2feed = 0#\n", + "# Let e be the degree of completion at equilibrium.\n", + "# Moles at Equilibrium:\n", + "# nH2O_eqb = 1 - e#\n", + "# nH2_eqb = e#\n", + "# Total moles at equilibrium = 1 - e + e = 1\n", + "# Mole Fractions at Equilibrium:\n", + "# yH20_eqb = 1 - e#\n", + "# yH2_eqb = e#\n", + "# Sum of stoichometric coeffecient:\n", + "v = 1 - 1#\n", + "Ky = K*P**(-v)#\n", + "# Ky = e/(1 - e)\n", + "e = Ky/(Ky + 1)#\n", + "yH2_eqb = e#\n", + "yH2O_eqb = 1 - e#\n", + "print \"Equilibrium Composition\\n\"\n", + "print \"yH2 = %.2f\\n\"%(yH2_eqb)#\n", + "print \"y_H2O = %.2f\\n\"%(yH2O_eqb)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.19 Page: 503" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.19 - Page: 503\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 12.19 on page 503 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 12.19 - Page: 503\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 12.19 on page number 503 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 12.19 on page 503 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.20 Page: 505" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.20 - Page: 505\n", + "\n", + "\n", + "No. of independent reaction that occur is 2\n", + "\n", + "No. of Degree of freedom is 4\n" + ] + } + ], + "source": [ + "print \"Example: 12.20 - Page: 505\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#Reactions:\n", + "# CO + (1/2)O2 ------------> CO2 ......................................(1)\n", + "# C + O2 ------------------> CO2 ......................................(2)\n", + "# H2 + (1/2)O2 ------------> H2O ......................................(3)\n", + "# C + 2H2 -----------------> CH4 ......................................(4)\n", + "\n", + "# Elimination of C:\n", + "# Combining Eqn. (2) with (1):\n", + "# CO + (1/2)O2 ------------> CO2 ......................................(5)\n", + "# Combining Eqn. (2) with (4):\n", + "# CH4 + O2 ----------------> 2H2 + CO2 ................................(6)\n", + "\n", + "# Elimination of O2:\n", + "# Combining Eqn. (3) with (4):\n", + "# CO2 + H2 ----------------> CO + H2O .................................(7)\n", + "# Combining Eqn. (3) with (6):\n", + "# CH4 + 2H2O -------------> CO2 + 4H2 .................................(8)\n", + "\n", + "# Equations 7 & 8 are independent sets. Hence\n", + "r = 2## [No. of independent rkn.]\n", + "C = 5## [No. of component]\n", + "P = 1## [No. of phases]\n", + "s = 0## [No special constraint]\n", + "# Applying Eqn. 12.81\n", + "F = C - P + 2 - r - s## [Degree of freedom]\n", + "print \"No. of independent reaction that occur is %d\\n\"%(r)#\n", + "print \"No. of Degree of freedom is %d\"%(F)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.21 Page: 506" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.21 - Page: 506\n", + "\n", + "\n", + "No. of Degree of freedom is 1\n" + ] + } + ], + "source": [ + "print \"Example: 12.21 - Page: 506\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# Reaction: CaCO3 -----------> CaO + CO2\n", + "r = 1## [No. of independent rkn.]\n", + "C = 3## [No. of component]\n", + "P = 3## [No. of phases, solid CaO, solid CaCO3, gaseous CO2]\n", + "s = 0## [No special constraint]\n", + "# Applying Eqn. 12.81\n", + "F = C - P + 2 - r - s## [Degree of freedom]\n", + "print \"No. of Degree of freedom is %d\"%(F)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 12.22 Page: 508" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 12.22 - Page: 508\n", + "\n", + "\n", + "At Equilibrium\n", + "\n", + "yC4H10 = 0.0009\n", + "\n", + "yC2H4 = 0.0535\n", + "\n", + "yC2H6 = 0.0535\n", + "\n", + "yC3H6 = 0.4461\n", + "\n", + "yCH4 = 0.4461\n", + "\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "print \"Example: 12.22 - Page: 508\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*********Data*********#\n", + "# Reaction: \n", + "# C4H10 -----------> C2H4 + C2H6 ....................................(A)\n", + "# C4H10 -----------> C3H6 + CH4 .................................... (B)\n", + "T = 750## [K]\n", + "P = 1.2## [bar]\n", + "Ka = 3.856#\n", + "Kb = 268.4#\n", + "#************************#\n", + "\n", + "# Let\n", + "# ea = Degree of conversion of C4H10 in reaction (A)\n", + "# eb = Degree of conversion of C4H10 in reaction (B)\n", + "\n", + "# Moles in Feed:\n", + "nC4H10_feed = 1#\n", + "nC2H4_feed = 0#\n", + "nC2H6_feed = 0#\n", + "nC3H6_feed = 0#\n", + "nCH4_feed = 0#\n", + "\n", + "# Moles at Equilibrium:\n", + "# nC4H10_eqb = 1 - ea - eb\n", + "# nC2H4_eqb = ea\n", + "# nC2H6_eqb = ea\n", + "# nC3H6_eqb = eb\n", + "# nCH4_eqb = eb\n", + "\n", + "# Total moles at equilibrium = 1 - ea - eb + ea + eb + eb = 1 + ea + eb\n", + "\n", + "# Mole Fraction:\n", + "# yC4H10_eqb = (1 - ea - eb)/(1 + ea + eb)\n", + "# yC2H4_eqb = ea/(1 + ea + eb)\n", + "# yC2H6_eqb = ea/(1 + ea + eb)\n", + "# yC3H6_eqb = eb/(1 + ea + eb)\n", + "# yCH4_eqb = eb/(1 + ea + eb)\n", + "\n", + "# Sum of the stoichometric coeffecient:\n", + "va = 1 + 1 - 1#\n", + "vb = 1 + 1 - 1#\n", + "\n", + "# e = [ea eb]\n", + "# Solution of simultaneous equation\n", + "def F(e):\n", + " f1 = (((e[0]/(1 + e[0] + e[1]))*(e[0]/(1 + e[0] + e[1])))/((1 - e[0] - e[1])/(1 + e[0] + e[1])))*P**va - Ka#\n", + " f2 = (((e[1]/(1 + e[0] + e[1]))*(e[1]/(1 + e[0] + e[1])))/((1 - e[0] - e[1])/(1 + e[0] + e[1])))*P**vb - Kb#\n", + " return [f1, f2]\n", + "\n", + "# Initial guess:\n", + "e = [0.1, 0.8]#\n", + "y = fsolve(F, e)#\n", + "ea = y[0]#\n", + "eb = y[1]#\n", + "yC4H10_eqb = (1 - ea - eb)/(1 + ea + eb)#\n", + "yC2H4_eqb = ea/(1 + ea + eb)#\n", + "yC2H6_eqb = ea/(1 + ea + eb)#\n", + "yC3H6_eqb = eb/(1 + ea + eb)#\n", + "yCH4_eqb = eb/(1 + ea + eb)#\n", + "\n", + "print \"At Equilibrium\\n\"\n", + "print \"yC4H10 = %.4f\\n\"%(yC4H10_eqb)#\n", + "print \"yC2H4 = %.4f\\n\"%(yC2H4_eqb)#\n", + "print \"yC2H6 = %.4f\\n\"%(yC2H6_eqb)#\n", + "print \"yC3H6 = %.4f\\n\"%(yC3H6_eqb)#\n", + "print \"yCH4 = %.4f\\n\"%(yCH4_eqb)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch1_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch1_1.ipynb new file mode 100644 index 00000000..0f8a17eb --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch1_1.ipynb @@ -0,0 +1,649 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 - Introduction and basic concepts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.1 Page: 4" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.1 - Page: 4\n", + "\n", + "\n", + "Weight of the man on the moon is 260.43 N\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "# Soltion\n", + "\n", + "print \"Example: 1.1 - Page: 4\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "g_Earth = 9.83 # [m/square s]\n", + "F_Earth = 800 # [N]\n", + "g_Moon = 3.2 # [m/square s]\n", + "#************#\n", + "\n", + "# From the expression of force, the force on the man on the Eath's surface is given by:\n", + "# F = m*g_Earth\n", + "m = F_Earth/g_Earth # [kg]\n", + "\n", + "# On the moon, the weight of the mass is equal to the force acting on the mass on the moon and is given by\n", + "F_Moon = m*g_Moon # [N]\n", + "\n", + "print \"Weight of the man on the moon is %0.2f N\\n\"%(F_Moon)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.2 Page: 5" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.2 - Page: 5\n", + "\n", + "\n", + "Gravitational force on the body is 16.68 N\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "print \"Example: 1.2 - Page: 5\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "m1 = 1.5 # [mass of the body, kg]\n", + "m2 = 6*10**(24) # [mass of the Earth, kg]\n", + "G = 6.672*10**(-11) # [N.square m/square.kg]\n", + "r = 6000*10**(3) # [m]\n", + "#************#\n", + "\n", + "# According to Newton's universal law of gravity:\n", + "F = G*m1*m2/r**2 # [N]\n", + "print \"Gravitational force on the body is %.2f N\\n\"%(F)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.3 Page: 5" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.3 - Page: 5\n", + "\n", + "\n", + "Mass of 1 kg will weigh 6.92 kg on moon\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "print \"Example: 1.3 - Page: 5\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "r_Moon = 0.3 # [km]\n", + "r_Earth = 1 # [km]\n", + "m2 = 1 # [mass of body, kg]\n", + "mMoon_By_mEarth = 0.013 # [kg/kg]\n", + "#***************#\n", + "\n", + "# According to the Newton's universal law of gravitation:\n", + "Fe_By_Fm = (1/mMoon_By_mEarth)*(r_Moon/r_Earth)**2#\n", + "print \"Mass of 1 kg will weigh %.2f kg on moon\\n\"%(Fe_By_Fm)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.4 Page: 6" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.4 - Page: 6\n", + "\n", + "\n", + "The absolute pressure is 54.914 kPa\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "print \"Example: 1.4 - Page: 6\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "h = 40 # [cm]\n", + "density = 14.02 # [g/cubic cm]\n", + "g = 9.792 # [m/square s]\n", + "#*************#\n", + "\n", + "P = h*density*g/1000 # [N/square cm]\n", + "P = P*10 # [kPa]\n", + "\n", + "print \"The absolute pressure is %.3f kPa\\n\"%(P)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.5 Page: 7" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.5 - Page: 7\n", + "\n", + "\n", + "The absolute pressure within the container is 119.299 kPa\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "print \"Example: 1.5 - Page: 7\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "Patm = 112 # [kPa]\n", + "density = 1200 # [kg/cubic m]\n", + "g = 9.81 # [m/sqaure s]\n", + "h = 0.62 # [m]\n", + "#**************#\n", + "\n", + "P = Patm + (density*g*h/1000) # [kPa]\n", + "\n", + "print \"The absolute pressure within the container is %.3f kPa\\n\"%(P)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.6 Page: 9" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.6 - Page: 9\n", + "\n", + "\n", + "Work done by the system is 1500 J\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "print \"Example: 1.6 - Page: 9\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "F = 150 # [N]\n", + "Displacement = 10 # [m]\n", + "#**************#\n", + "\n", + "W = F*Displacement # [J]\n", + "\n", + "print \"Work done by the system is %d J\\n\"%(W)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.7 Page: 9" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.7 - Page: 9\n", + "\n", + "\n", + "Actual Work done by the system is 9.1e+05 J\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "print \"Example: 1.7 - Page: 9\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "P = 560*10**3 # [Pa]\n", + "Vinit = 3 # [cubic m]\n", + "Vfinal = 5 # [cubic m]\n", + "Wext = 210*10**3 # [J]\n", + "#*************#\n", + "\n", + "W = P*(Vfinal - Vinit) # [J]\n", + "# Again the system receives 210 kJ of work from the external agent.\n", + "W = W - Wext # [J]\n", + "\n", + "print \"Actual Work done by the system is %.1e J\\n\"%(W)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.8 Page: 11" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.8 - Page: 11\n", + "\n", + "\n", + "Change in potential Energy is 981 J\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "print \"Example: 1.8 - Page: 11\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "g = 9.81 # [m/square s]\n", + "Z = 100 # [m]\n", + "#***************#\n", + "\n", + "# Basis: 1 kg of water\n", + "m = 1 # [kg]\n", + "Ep = m*g*Z # [J]\n", + "print \"Change in potential Energy is %d J\\n\"%(Ep)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.9 Page: 11" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.9 - Page: 11\n", + "\n", + "\n", + "The velocity of the metal block is 15.34 m/s\n", + "\n", + "The final Kinetic Energy is 1765.8 J\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "# Solution\n", + "\n", + "print \"Example: 1.9 - Page: 11\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "m = 15# # [kg]\n", + "g = 9.81 # [m/square s]\n", + "V1 = 0 # [m/square s]\n", + "Z1 = 12 # [m]\n", + "Z2 = 0 # [m]\n", + "#***************#\n", + "\n", + "# At initial condition, V1 = 0, so kinetic energy is zero.\n", + "# At final condition, Z2 = 0, so potential energy is zero.\n", + "# Ep1 + Ek1 = Ep2 + Ek2\n", + "#deff('[y] = f(V2)','y = ((1/2)*m*V1**2) + (m*g*Z1) - (((1/2)*m*V2**2) + (m*g*Z2))')#\n", + "def f(V2):\n", + " y = ((1/2)*m*V1**2) + (m*g*Z1) - (((1/2)*m*V2**2) + (m*g*Z2))\n", + " return y\n", + "from scipy.optimize import fsolve\n", + "V2 = fsolve(f,7)#\n", + "\n", + "print \"The velocity of the metal block is %.2f m/s\\n\"%(V2)#\n", + "\n", + "Ek2 = (1/2)*m*V2**2 # [J]\n", + "print \"The final Kinetic Energy is %.1f J\\n\"%(Ek2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.10 Page: 12" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.10 - Page: 12\n", + "\n", + "\n", + "Power required is 7.64 kW\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "# Solution\n", + "\n", + "print \"Example: 1.10 - Page: 12\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "m = 1200 # [kg]\n", + "v1 = 10 # [km/h]\n", + "v2 = 100 # [km/h]\n", + "time = 1 # [min]\n", + "#***************#\n", + "\n", + "v1 = 10*1000/3600 # [m/s]\n", + "v2 = 100*1000/3600 # [m/s]\n", + "W = (1/2)*m*(v2**2 - v1**2) # [J]\n", + "time = time*60 # [s]\n", + "P = W/time # [W]\n", + "print \"Power required is %.2f kW\\n\"%(P/1000)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.11 Page: 13" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.11 - Page: 13\n", + "\n", + "\n", + "Total Force eacting upon the gas is 8139.7 N\n", + "\n", + "Pressure exerted is 115.153 kPa\n", + "\n", + "\n", + "Work due to expansion by the gas is 4.070 kJ\n", + "\n", + "\n", + "Change in Potential Energy is 489.6 J\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 1.11 - Page: 13\\n\\n\"\n", + "\n", + "#*****Data*****#\n", + "dia = 0.3 # [m]\n", + "m = 100 # [kg]\n", + "P_atm = 1.013*10**5 # [N/square m]\n", + "g = 9.792 # [m/square s]\n", + "#**************#\n", + "\n", + "Area = (pi/4)*dia**2 # [square m]\n", + "#Solution (a)(i)\n", + "# Force exerted by the atmosphere:\n", + "F_atm = P_atm*Area # [N]\n", + "# Force exerted by piston & metal block:\n", + "F_mass = m*g # [N]\n", + "# Total force acting upon the gas:\n", + "F = F_atm + F_mass # [N]\n", + "print \"Total Force eacting upon the gas is %.1f N\\n\"%(F)#\n", + "\n", + "# Solution (a)(ii)\n", + "Pressure = F/Area # [N/square m]\n", + "print \"Pressure exerted is %.3f kPa\\n\\n\"%(Pressure/1000)#\n", + "\n", + "# Solution (b)\n", + "# The gas expands on application of heat, the volume of the gas goes on increasing and the piston moves upward.\n", + "Z = 0.5 # [m]\n", + "# Work done due to expansion of gas:\n", + "W = F*Z # [J]\n", + "print \"Work due to expansion by the gas is %.3f kJ\\n\\n\"%(W/1000)#\n", + "\n", + "# Solution (c)\n", + "# Change in potential energy of piston and weight after expansion process:\n", + "Ep = m*g*Z # [J]\n", + "print \"Change in Potential Energy is %.1f J\\n\"%(Ep)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.12 Page: 24" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.12 - Page: 24\n", + "\n", + "\n", + "The temperature which has the same value on both the centigrade and Fahrenheit scales is -40 degree Celsius or -40 degree Fahrenheit\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 1.12 - Page: 24\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# The relation is:\n", + "# (C/5) = ((F - 32)/9)\n", + "# For C = F\n", + "C = - (32*5/4)# # [degree Celsius]\n", + "print \"The temperature which has the same value on both the centigrade and Fahrenheit scales is %d degree Celsius or %d degree Fahrenheit\\n\"%(C,C)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 1.13 Page: 24" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 1.13 - Page: 24\n", + "\n", + "\n", + "The rise in temperature in the Kelvin scale is 30 K\n", + "\n", + "The rise in temperature in the Rankine scale is 54 R\n", + "\n", + "The rise in temperature in the Fahrenheit scale is 54 OF\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 1.13 - Page: 24\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "delta_T_C = 30 # [OC]\n", + "#*************#\n", + "\n", + "# The relation between the Kelvin temperature scale and the Celsius temperature scale:\n", + "# T(K) = T(OC) + 273.15\n", + "# Here, the temperature rise is to be expressed in terms of K, but the difference in temperature will be the same in the Kelvin and Celsius scales of temperature:\n", + "delta_T_K = delta_T_C # [K]\n", + "print \"The rise in temperature in the Kelvin scale is %d K\\n\"%(delta_T_K)#\n", + "# The emperical relationship between the Rankine and Kelvin scales is given by:\n", + "delta_T_R = 1.8*delta_T_K # [R]\n", + "print \"The rise in temperature in the Rankine scale is %d R\\n\"%(delta_T_R)#\n", + "delta_T_F = delta_T_R # [OF]\n", + "print \"The rise in temperature in the Fahrenheit scale is %d OF\\n\"%(delta_T_F)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch2_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch2_1.ipynb new file mode 100644 index 00000000..571f1177 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch2_1.ipynb @@ -0,0 +1,1292 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 - First law of thermodynamics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.1 Page: 39" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.1 - Page: 39\n", + "\n", + "\n", + "The work done during the process is -9486.67 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from sympy.mpmath import quad\n", + "\n", + "print \"Example: 2.1 - Page: 39\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "#deff('[E] = f1(T)','E = 50 + 25*T + 0.05*T**2')## [J]\n", + "#deff('[Q] = f2(T)','Q = 4000 + 10*T')## [J]\n", + "\n", + "def f1(T):\n", + " E = 50 + 25*T + 0.05*T**2\n", + " return E\n", + "\n", + "def f2(T):\n", + " Q = 4000 + 10*T\n", + " return Q\n", + "Ti = 400## [K]\n", + "Tf = 800## [K]\n", + "#*************#\n", + "\n", + "# From the first law of thermodynamics:\n", + "# W = Q - delta_E\n", + "# W = f2 -f1\n", + "\n", + "W = quad(lambda T:(4000 + 10*T) - (50 + (25*T) + (0.05*T**2)),[Ti,Tf])#\n", + "print \"The work done during the process is %.2f kJ\\n\"%(W/1000)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.2 Page: 40" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.2 - Page: 40\n", + "\n", + "\n", + "The final internal energy of the fluid is 500 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.2 - Page: 40\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "U1 = 1000## [kJ]\n", + "Q = -600# # [kJ]\n", + "W = -100## [kJ]\n", + "#************#\n", + "\n", + "# The system is considered to be a closed system. No mass transfer takes place across the system. The tank is rigid. \n", + "# So, the kinetic and the potential energies is zero.\n", + "# Therefore:\n", + "# delta_E = delta_U + delta_PE + delta_KE\n", + "# delta_E = delta_U\n", + "# From the first law of thermodynamics:\n", + "# Q = delta_U + W\n", + "# delta_U = Q - W\n", + "# U2 - U1 = Q - W\n", + "U2 = U1 + Q - W## [kJ]\n", + "print \"The final internal energy of the fluid is %d kJ\\n\"%(U2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.3 Page: 40" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.3 - Page: 40\n", + "\n", + "\n", + "The change in the internal energy of the system would be 1125.99 J/s\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.3 - Page: 40\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "W = -3## [hp]\n", + "Q = -4000## [kJ/h]\n", + "#**************#\n", + "\n", + "# The work done by the stirrer on the system is given by\n", + "W = W*745.7## [W]\n", + "# The amount of heat transferred to the suroundings can be expressed in terms of J/s:\n", + "Q = Q*1000/3600## [J/s]\n", + "# From the first law of thermodynamics:\n", + "# Q = delta_U - W\n", + "delta_U = Q - W## [J/s]\n", + "print \"The change in the internal energy of the system would be %.2f J/s\\n\"%(delta_U)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.4 Page: 41" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.4 - Page: 41\n", + "\n", + "\n", + "The amount of heat transferred from the system to the surroundings during process B-3-A is 95 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.4 - Page: 41\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "# From Fig. 2.4 (Page: 41)\n", + "# For process A-1-B:\n", + "Q1 = 60## [kJ]\n", + "W1 = 35## [kJ]\n", + "# For process A-2-B:\n", + "W2 = 50## [kJ]\n", + "# For process B-3-A:\n", + "W3 = -70## [kJ]\n", + "#************#\n", + "\n", + "# For process A-1-B:\n", + "# The internal energy of the process A-1-B can be estimated as:\n", + "# Q = delta_U + W\n", + "delta_U = Q1 - W1## [kJ]\n", + "# For process A-2-B:\n", + "Q2 = delta_U + W2## [kJ]\n", + "# For process B-3-A:\n", + "Q3 = -delta_U + W3## [kJ]\n", + "print \"The amount of heat transferred from the system to the surroundings during process B-3-A is %d kJ\\n\"%(-Q3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.5 Page: 41" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.5 - Page: 41\n", + "\n", + "\n", + "Change in Internal Energy for process 1-2 is 50 kJ\n", + "\n", + "Change in Internal Energy for process 2-3 is 80 kJ\n", + "\n", + "Change in Internal Energy for process 3-1 is -130 kJ\n", + "\n", + "The work done during the adiabatic process is 130 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.5 - Page: 41\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "# For constant pressure process 1-2:\n", + "W12 = -100## [kJ]\n", + "Q12 = -50## [kJ]\n", + "# For constant volume process 2-3:\n", + "Q23 = 80## [kJ]\n", + "# process 3-1: Adiabatic process\n", + "#**************#\n", + "\n", + "# The internal energy of process 1-2 can be calculated as:\n", + "delta_U12 = Q12 - W12## [kJ]\n", + "print \"Change in Internal Energy for process 1-2 is %d kJ\\n\"%(delta_U12)#\n", + "# For the process 2-3:\n", + "# As the process is constant volume process:\n", + "W23 = 0## [kJ]\n", + "delta_U23 = Q23 - W23## [kJ]\n", + "print \"Change in Internal Energy for process 2-3 is %d kJ\\n\"%(delta_U23)#\n", + "\n", + "# For process 3-1:\n", + "# Since the process is adiabatic, ther is no heat transfer between the system and the surrounding.\n", + "Q31 = 0## [kJ]\n", + "# For a cyclic process, the internal energy change is zero.\n", + "# delta_U12 + delta_U23 + delta_U31 = 0\n", + "delta_U31 = -(delta_U12 + delta_U23)## [kJ]\n", + "# Putting the value of delta_U31:\n", + "W31 = Q31 - delta_U31## [kJ]\n", + "print \"Change in Internal Energy for process 3-1 is %d kJ\\n\"%(delta_U31)#\n", + "print \"The work done during the adiabatic process is %d kJ\\n\"%(W31)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.6 Page: 44" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.6 - Page: 44\n", + "\n", + "\n", + "Change in Internal Energy is 2087.59 kJ\n", + "\n", + "Change in enthalpy is 2257 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.6 - Page: 44\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m = 1## [kg]\n", + "Temp = 373## [K]\n", + "P = 101325## [N/square m]\n", + "V_Liquid = 1.04*10**(-3)## [cubic m/kg]\n", + "V_Vapour = 1.673## [cubic m/kg]\n", + "Q = 2257## [kJ]\n", + "#**************#\n", + "\n", + "# Work done due to expansion:\n", + "Wexpansion = P*(V_Vapour - V_Liquid)## [N-m]\n", + "deltaU = Q - Wexpansion/1000## [kJ]\n", + "deltaH = deltaU + Wexpansion/1000## [kJ]\n", + "\n", + "print \"Change in Internal Energy is %.2f kJ\\n\"%(deltaU)#\n", + "print \"Change in enthalpy is %d kJ\\n\"%(deltaH)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.7 Page: 45" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.7 - Page: 45\n", + "\n", + "\n", + "Change in Internal Energy is 26705.16 J\n", + "\n", + "Change in Enthalpy is 29640 J\n", + "\n", + "Amount of Heat supplied is 29640 J\n", + "\n", + "Work done is 2934.84 J\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.7 - Page: 45\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "n = 1## [mol]\n", + "Temp = 353## [K]\n", + "P = 1## [atm]\n", + "Hv = 380## [J/g]\n", + "Mwt = 78## [g/mol]\n", + "R = 8.314## [J/K mol]\n", + "#*************#\n", + "\n", + "Q = Hv*Mwt## [J/mol]\n", + "# Since Vv >> Vl:\n", + "# P*(Vv - Vl) = P*Vv =n*R*Temp\n", + "Wexpansion = n*R*Temp## [J]\n", + "# By first law of thermodynamics:\n", + "deltaU = Q - Wexpansion## [J]\n", + "deltaH = deltaU + Wexpansion## [J]\n", + "\n", + "print \"Change in Internal Energy is %.2f J\\n\"%(deltaU)#\n", + "print \"Change in Enthalpy is %d J\\n\"%(deltaH)#\n", + "print \"Amount of Heat supplied is %d J\\n\"%(Q)#\n", + "print \"Work done is %.2f J\\n\"%(Wexpansion)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.8 Page: 45" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.8 - Page: 45\n", + "\n", + "\n", + "Change in enthalpy is 589.48 cal\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.8 - Page: 45\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "deltaU = 200## [cal]\n", + "Vinit = 10## [L]\n", + "Vfinal = 50## [L]\n", + "#deff('[P] = f(V)','P = 10/V')#\n", + "def f(V):\n", + " P=10/V\n", + " return P\n", + "#**************#\n", + "\n", + "# By definition of enthalpy:\n", + "# deltaQ = deltaU + PdV\n", + "deltaQ = deltaU + quad(f,[Vinit,Vfinal])*24.2## [cal]\n", + "print \"Change in enthalpy is %.2f cal\\n\"%(deltaQ)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.9 Page: 48" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.9 - Page: 48\n", + "\n", + "\n", + "Rise in Temperature is 58.67 K\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.9 - Page: 48\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m_water = 1## [kg]\n", + "Cv = 4.18## [kJ/kg K]\n", + "m_stirrer = 40## [kg]\n", + "h = 25## [m]\n", + "g = 9.81## [m/square s]\n", + "#***************#\n", + "\n", + "# Since the system is thermally insulated:\n", + "# Q = 0\n", + "# From the first law of thermodynamics:\n", + "# dQ = dE + dW\n", + "# As E = U + Ek +Ep and Ek = Ep = 0\n", + "# dQ = dU + dW\n", + "dT = g*h/Cv## [K]\n", + "print \"Rise in Temperature is %.2f K\\n\"%(dT)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.10 Page: 53" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.10 - Page: 53\n", + "\n", + "\n", + "The final temperature is 753.6 K\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.10 - Page: 53\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "T1 = 300## [K]\n", + "V1 = 30## [L]\n", + "V2 = 3## [L]\n", + "Cv = 5## [cal/mol]\n", + "R = 2## [cal/K mol]\n", + "#*************#\n", + "\n", + "Cp = Cv + R## [cal/mol]\n", + "gama = Cp/Cv#\n", + "# The relation between temperature and volume of ideal gas undergoing adiabatic change is given by:\n", + "# (T2/T1) = (V1/V2)**(gama - 1)\n", + "T2 = T1 * (V1/V2)**(gama - 1)## [K]\n", + "print \"The final temperature is %.1f K\\n\"%(T2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.11 Page: 53" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.11 - Page: 53\n", + "\n", + "\n", + "The final volme is 7.44 L\n", + "\n", + "The final temperature is 226.80 K\n", + "\n", + "Adiabatic work done is 35.72 L-atm\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.11 - Page: 53\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "n = 2## [mol]\n", + "T1 = 293## [K]\n", + "P1 = 15##[atm]\n", + "P2 = 5## [atm]\n", + "Cp = 8.58## [cal/degree mol]\n", + "#**************#\n", + "\n", + "R = 2## [cal/degree mol]\n", + "Cv = Cp - R## [cal /degree mol]\n", + "gama = Cp/Cv#\n", + "R = 0.082## [L atm/degree K]\n", + "# Since the gas is ideal:\n", + "V1 = n*R*T1/P1## [L]\n", + "# Under adiabatic conditions:\n", + "# (V2/V1) = (P1/P2)**(1/gama)\n", + "V2 = V1*(P1/P2)**(1/gama)## [L]\n", + "print \"The final volme is %.2f L\\n\"%(V2)#\n", + "\n", + "# To determine the final temperature:\n", + "# (T2/T1) = (V1/V2)**(gama - 1)#\n", + "T2 = T1*(V1/V2)**(gama - 1)## [K]\n", + "print \"The final temperature is %.2f K\\n\"%(T2)#\n", + "\n", + "# Adiabatic Work done can be calculated as:\n", + "W = (P1*V1 - P2*V2)/(gama - 1)#\n", + "print \"Adiabatic work done is %.2f L-atm\\n\"%(W)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.12 Page: 57" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.12 - Page: 57\n", + "\n", + "\n", + "Adiabatic Process \n", + "\n", + "Final Pressure is 0.84 atm\n", + "\n", + "Final Temperature is 169.673696 K\n", + "\n", + "Adiabatic Work done is 31.432 L-atm\n", + "\n", + "\n", + "\n", + "Isothermal Process\n", + "\n", + "Final temperature is 323 K\n", + "\n", + "Final pressure is 1.6 atm\n", + "\n", + "Work done during the isothermal process is 42.63 L-atm\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 2.12 - Page: 57\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m = 1## [kg]\n", + "P1 = 8## [atm]\n", + "T1 = 50 + 273## [K]\n", + "# V1 = V## [L]\n", + "# V2 = 5V## [L]\n", + "V1_by_V2 = 1/5#\n", + "gama = 1.4#\n", + "R = 0.082## [L-atm]\n", + "#***************#\n", + "\n", + "# Adiabatic process:\n", + "print \"Adiabatic Process \\n\"\n", + "P2 = P1*V1_by_V2**gama## [atm]\n", + "print \"Final Pressure is %.2f atm\\n\"%(P2)#\n", + "T2 = T1*V1_by_V2**(gama - 1)## [K]\n", + "print \"Final Temperature is %f K\\n\"%(T2)#\n", + "Wad = R*(T2 - T1)/(1 - gama)## [L-atm]\n", + "print \"Adiabatic Work done is %.3f L-atm\\n\"%(Wad)#\n", + "print \"\\n\"\n", + "\n", + "# Isothermal Process:\n", + "print \"Isothermal Process\\n\"\n", + "# In an isothermal Process, the temperature remans constant:\n", + "T2 = T1## [K]\n", + "print \"Final temperature is %d K\\n\"%(T2)#\n", + "# From the ideal gas:\n", + "# (P2*V2/T2) = (P1*V1/T1)\n", + "# Since T2 = T1\n", + "# P2*V2 = P1*V1\n", + "P2 = P1*V1_by_V2## [atm]\n", + "print \"Final pressure is %.1f atm\\n\"%(P2)#\n", + "W = R*T1*log(1/V1_by_V2)## [L-atm]\n", + "print \"Work done during the isothermal process is %.2f L-atm\\n\"%(W)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.13 Page: 58" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.13 - Page: 58\n", + "\n", + "\n", + "Isochoric Process\n", + "\n", + "Change in Internal Energy is 716.55 kJ\n", + "\n", + "Heat Supplied is 716.55 kJ\n", + "\n", + "Work done is 0 kJ\n", + "\n", + "Change in Enthalpy is 1003.24 kJ\n", + "\n", + "\n", + "\n", + "Isobaric Process\n", + "\n", + "Change in Internal Energy is 716.76 kJ\n", + "\n", + "Heat Supplied is 1003.45 kJ\n", + "\n", + "Work done is 286.69 kJ\n", + "\n", + "Change in Enthalpy is 1003.45 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.13 - Page: 58\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m = 5## [kg]\n", + "M = 29## [kg/mol]\n", + "T1 = 37 + 273## [K]\n", + "P1 = 101.33## [kPa]\n", + "T2 = 237 + 273## [K]\n", + "Cp = 29.1## [J/mol K]\n", + "Cv = 20.78## [J/mol K]\n", + "R = 8.314## [J/K mol]\n", + "#*****************#\n", + "\n", + "n = m/M#\n", + "# From ideal gas equation:\n", + "V1 = n*R*T1/P1## [cubic m]\n", + "\n", + "# Isochoric Process:\n", + "print \"Isochoric Process\\n\"\n", + "# Volume = constant\n", + "V2 = V1## [cubic m]\n", + "deltaU = n*Cv*(T2 - T1)## [kJ]\n", + "# Since Volume is constant\n", + "W = 0#\n", + "Q = deltaU + W## [kJ]\n", + "# deltaH = deltaU + P*deltaV\n", + "# deltaH = deltaU + n*R*deltaT\n", + "deltaH = deltaU + n*R*(T2 - T1)## [kJ]\n", + "print \"Change in Internal Energy is %.2f kJ\\n\"%(deltaU)#\n", + "print \"Heat Supplied is %.2f kJ\\n\"%(Q)#\n", + "print \"Work done is %d kJ\\n\"%(W)#\n", + "print \"Change in Enthalpy is %.2f kJ\\n\"%(deltaH)#\n", + "print \"\\n\"\n", + "\n", + "# Isobaric Process\n", + "print \"Isobaric Process\\n\"\n", + "# Since Pressure is constant.\n", + "P2 = P1## [kPa]\n", + "deltaH = n*Cp*(T2 - T1)## [kJ]\n", + "Qp = deltaH## [kJ]\n", + "# deltaU = deltaH - P*deltaV\n", + "# From ideal gas equation:\n", + "deltaU = deltaH - n*R*(T2 - T1)## [kJ]\n", + "W = Qp - deltaU## [kJ]\n", + "print \"Change in Internal Energy is %.2f kJ\\n\"%(deltaU)#\n", + "print \"Heat Supplied is %.2f kJ\\n\"%(Qp)#\n", + "print \"Work done is %.2f kJ\\n\"%(W)#\n", + "print \"Change in Enthalpy is %.2f kJ\\n\"%(deltaH)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.14 Page: 60" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.14 - Page: 60\n", + "\n", + "\n", + "Step 1: Isothermal Expansion Of Ideal Gas\n", + "\n", + "delta_E for Step 1 is 0 J/mol\n", + "\n", + "Q for step 1 is 11679.76 J/mol\n", + "\n", + "W for step 1 is 11679.76 J/mol\n", + "\n", + "\n", + "\n", + "Step 2: Adiabatic Expansion of ideal gas\n", + "\n", + "delta_E for Step 2 is -6234 J/mol\n", + "\n", + "Q for step 2 is 0.00 J/mol\n", + "\n", + "W for step 2 is 6234.00 J/mol\n", + "\n", + "\n", + "\n", + "Step 3: Isothermal Compression Of Ideal Gas\n", + "\n", + "delta_E for Step 3 is 0 J/mol\n", + "\n", + "Q for step 3 is -5935.61 J/mol\n", + "\n", + "W for step 3 is -5935.61 J/mol\n", + "\n", + "\n", + "\n", + "Step 4: Adiabatic Compression of ideal gas\n", + "\n", + "delta_E for Step 4 is 6234 J/mol\n", + "\n", + "Q for step 4 is 0.00 J/mol\n", + "\n", + "W for step 4 is -6234.00 J/mol\n", + "\n", + "\n", + "\n", + "Net Work done for the complete cycle is 5744.14 J/mol\n", + "\n", + "The efficiency of the cycle is 0.49\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log10\n", + "print \"Example: 2.14 - Page: 60\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "n = 1## [mol]\n", + "T1 = 610## [K]\n", + "P1 = 10**6## [N/square m]\n", + "T2 = 310## [K]\n", + "P2 = 10**5## [N/square m]\n", + "Cv = 20.78## [J/mol K]\n", + "#*************#\n", + "\n", + "R = 8.314## [J/K mol]\n", + "\n", + "# Step 1: Isothermal Expansion Of Ideal Gas:\n", + "print \"Step 1: Isothermal Expansion Of Ideal Gas\\n\"\n", + "T1 = 610## [K]\n", + "P1 = 10**6## [N/square m]\n", + "P2 = 10**5## [N/square m]\n", + "# Work done:\n", + "W1 = 2.303*n*R*T1*log10(P1/P2)## [J/mol]\n", + "# For isothermal expansion:\n", + "delta_E1 = 0## [J/mol]\n", + "# From first law of thermodynamics:\n", + "Q1 = delta_E1 + W1## [J/mol]\n", + "print \"delta_E for Step 1 is %d J/mol\\n\"%(delta_E1)#\n", + "print \"Q for step 1 is %.2f J/mol\\n\"%(Q1)#\n", + "print \"W for step 1 is %.2f J/mol\\n\"%(W1)#\n", + "print \"\\n\"\n", + "\n", + "# Step 2: Adiabatic Expansion of ideal gas:\n", + "print \"Step 2: Adiabatic Expansion of ideal gas\\n\"\n", + "Q2 = 0## [J/mol]\n", + "delta_E2 = Cv*(T2 - T1)## [J/mol]\n", + "# From first law of thermodynamics:\n", + "W2 = Q2 - delta_E2## [J/mol]\n", + "print \"delta_E for Step 2 is %d J/mol\\n\"%(delta_E2)#\n", + "print \"Q for step 2 is %.2f J/mol\\n\"%(Q2)#\n", + "print \"W for step 2 is %.2f J/mol\\n\"%(W2)#\n", + "print \"\\n\"\n", + "\n", + "# Step 3: Isothermal Compression Of Ideal Gas:\n", + "print \"Step 3: Isothermal Compression Of Ideal Gas\\n\"\n", + "T2 = 310## [K]\n", + "P1 = 10**5## [N/square m]\n", + "P2 = 10**6## [N/square m]\n", + "# Work done:\n", + "W3 = 2.303*n*R*T2*log10(P1/P2)## [J/mol]\n", + "# For isothermal expansion:\n", + "delta_E3 = 0## [J/mol]\n", + "# From first law of thermodynamics:\n", + "Q3 = delta_E3 + W3## [J/mol]\n", + "print \"delta_E for Step 3 is %d J/mol\\n\"%(delta_E3)#\n", + "print \"Q for step 3 is %.2f J/mol\\n\"%(Q3)#\n", + "print \"W for step 3 is %.2f J/mol\\n\"%(W3)#\n", + "print \"\\n\"\n", + "\n", + "# Step 4: Adiabatic Compression of ideal gas:\n", + "print \"Step 4: Adiabatic Compression of ideal gas\\n\"\n", + "T1 = 310## [K]\n", + "T2 = 610## [K]\n", + "Q4 = 0## [J/mol]\n", + "delta_E4 = Cv*(T2 - T1)## [J/mol]\n", + "# From first law of thermodynamics:\n", + "W4 = Q4 - delta_E4## [J/mol]\n", + "print \"delta_E for Step 4 is %d J/mol\\n\"%(delta_E4)#\n", + "print \"Q for step 4 is %.2f J/mol\\n\"%(Q4)#\n", + "print \"W for step 4 is %.2f J/mol\\n\"%(W4)#\n", + "print \"\\n\"\n", + "\n", + "# Net work done for the complete cycle:\n", + "W = W1 + W2 + W3 + W4## [J/mol]\n", + "print \"Net Work done for the complete cycle is %.2f J/mol\\n\"%(W)#\n", + "\n", + "# The efficiency of the cycle is given by:\n", + "eta = 1- T1/T2#\n", + "print \"The efficiency of the cycle is %.2f\\n\"%(eta)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.15 Page: 61" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.15 - Page: 61\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 2.15 on page 61 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 2.15 - Page: 61\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 2.15 on page number 61 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 2.15 on page 61 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.16 Page: 62" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.16 - Page: 62\n", + "\n", + "\n", + "First Process\n", + "\n", + "Change in Internal Energy is -2223.97 kJ\n", + "\n", + "Change in Enthalpy is -5612.22 kJ\n", + "\n", + "Heat Requirement is -2246.40 kJ\n", + "\n", + "\n", + "\n", + "Second Process\n", + "\n", + "Change in Internal Energy is -22441.57 kJ\n", + "\n", + "Change in Enthalpy is -56122.20 kJ\n", + "\n", + "Heat Requirement is -22464.00 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.16 - Page: 62\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "P1 = 1## [bar]\n", + "T1 = 300##[K]\n", + "V1 = 24.92## [cubic m/kmol]\n", + "P2 = 10## [bar]\n", + "T2 = 300## [K]\n", + "Cp = 29.10## [kJ/kmol K]\n", + "Cv = 20.78## [kJ/kmol K]\n", + "R = 8.314## [J/mol K]\n", + "#**************#\n", + "\n", + "# Basis: 1 kmol of ideal gas:\n", + "n = 1#\n", + "V2 = P1*V1/P2## [cubic m]\n", + "\n", + "# First Process:\n", + "print \"First Process\\n\"\n", + "# In the first step of the first process, the cooling of ga takes place at constant pressure.\n", + "# Here the volume is reduced appreciably and consequently the temperature decreases.\n", + "T_prime = T1*V2/V1## [K]\n", + "# Heat Requirement:\n", + "Q1 = n*Cp*(T_prime - T1)## [kJ]\n", + "deltaH1 = Q1## [kJ]\n", + "deltaU1 = deltaH1 - P1*(V2 - V1)## [kJ]\n", + "# In the second step, the gas is heated at constant Volume:\n", + "# V = constant\n", + "Q2 = n*Cv*(T2 - T_prime)## [kJ]\n", + "deltaU2 = Q2## [kJ]\n", + "deltaH2 = n*R*(T2 - T_prime)## [kJ]\n", + "deltaU = deltaU1 + deltaU2## [kJ]\n", + "deltaH = deltaH1 + deltaH2## [kJ]\n", + "Q = Q1 + Q2## [kJ]\n", + "print \"Change in Internal Energy is %.2f kJ\\n\"%(deltaU)#\n", + "print \"Change in Enthalpy is %.2f kJ\\n\"%(deltaH)#\n", + "print \"Heat Requirement is %.2f kJ\\n\"%(Q)#\n", + "print \"\\n\"\n", + "\n", + "# Second Process:\n", + "print \"Second Process\\n\"\n", + "# In the first step of the second process, the gas is heated at constant volume.\n", + "T_prime = T1*P2/P1## [K]\n", + "# Heat Requirement:\n", + "Q1 = n*Cv*(T_prime - T1)## [kJ]\n", + "deltaU1 = Q1## [kJ]\n", + "deltaH1 = n*R*(T_prime - T1)## [kJ]\n", + "# In the second step, the gas is cooled at constant presure:\n", + "# V = constant\n", + "Q2 = n*Cp*(T2 - T_prime)## [kJ]\n", + "deltaH2 = Q2## [kJ]\n", + "deltaU2 = deltaH2 - P1*(V2 - V1)## [kJ]\n", + "deltaU = deltaU1 + deltaU2## [kJ]\n", + "deltaH = deltaH1 + deltaH2## [kJ]\n", + "Q = Q1 + Q2## [kJ]\n", + "print \"Change in Internal Energy is %.2f kJ\\n\"%(deltaU)#\n", + "print \"Change in Enthalpy is %.2f kJ\\n\"%(deltaH)#\n", + "print \"Heat Requirement is %.2f kJ\\n\"%(Q)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.17 Page: 62" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.17 - Page: 64\n", + "\n", + "\n", + "Workdone by the gas is 251.33 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 2.17 - Page: 64\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "D1 = 1## [m]\n", + "P1 = 120## [kPa]\n", + "P2 = 360## [kPa]\n", + "# P = k*D**3\n", + "#***************#\n", + "\n", + "k = P1/D1**3## [proportionality constant]\n", + "D2 = (P2/k)**(1/3)## [m]\n", + "# Work done by the gas inside the balloon can be estimated as:\n", + "# W = integral(P*dV)#\n", + "# W = integral((k*D**3)*d((4/3)*pi*r**3)#\n", + "# W = (pi*k/6)*integral((D**3)*d(D**3))#\n", + "# W = (pi*k/12)*(D2**6 - D1**6)#\n", + "W = (pi*k/12)*(D2**6 - D1**6)## [kJ]\n", + "print \"Workdone by the gas is %.2f kJ\\n\"%(W)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.18 Page: 65" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.18 - Page: 65\n", + "\n", + "\n", + "Change in Inernal Enrgy is 1040.65 kJ\n", + "\n", + "Change in Enthalpy is 1456.35 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.18 - Page: 65\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "P1 = 10*100## [kPa]\n", + "T1 = 250## [K]\n", + "P2 = 1*100## [kPa]\n", + "T2 = 300## [K]\n", + "R = 8.314## [J/mol K]\n", + "Cv = 20.78## [kJ/kmol K]\n", + "Cp = 29.10## [kJ/kmol K]\n", + "#**********#\n", + "\n", + "V1 = R*T1/P1## [cubic m]\n", + "V2 = R*T2/P2## [cubic m]\n", + "\n", + "# Calculation based on First Process:\n", + "# In this constant-volume process, the initial pressure of 10 bar is reduced to a final pressure of 1 bar and consequently the temperature decreases.\n", + "T_prime = P2*V1/R## [K]\n", + "deltaU1 = Cv*(T_prime - T1)## [kJ]\n", + "deltaH1 = deltaU1 + V1*(P2 -P1)## [kJ]\n", + "# Since V = constant\n", + "W1 = 0##[kJ]\n", + "# By first law of thermodynamics:\n", + "Q = W1 + deltaU1## [kJ]\n", + "\n", + "# Calculation based on second process:\n", + "# In this process, the gas is heated at constant pressure to the final temperature of T2.\n", + "deltaH2 = Cp*(T2 - T_prime)## [kJ]\n", + "deltaU2 = deltaH2 - P2*(V2 - V1)## [kJ]\n", + "Q = deltaH2## [kJ]\n", + "W2 = Q - deltaU2## [kJ]\n", + "\n", + "deltaU = deltaU1 + deltaU2## [kJ]\n", + "deltaH = deltaH1 + deltaH2## [kJ]\n", + "print \"Change in Inernal Enrgy is %.2f kJ\\n\"%(deltaU)#\n", + "print \"Change in Enthalpy is %.2f kJ\\n\"%(deltaH)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 2.19 Page: 69" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 2.19 - Page: 69\n", + "\n", + "\n", + "Tempertaure of water in the second tank is 312.86 K\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 2.19 - Page: 69\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "T1 = 273## [K]\n", + "T2 = 273 + 67## [K]\n", + "m_dot = 20000## [kg/h]\n", + "Ws = -1.5## [hp]\n", + "Q = -38000## [kJ/min]\n", + "Z = 20## [m]\n", + "Cp = 4.2## [kJ/kg K]\n", + "g = 9.81## [m/second square]\n", + "#***************#\n", + "\n", + "Q = Q*60/m_dot## [kJ/kg]\n", + "Ws = Ws*0.7457*3600/m_dot## [kJ/kg]\n", + "PE = g*Z*10**(-3)## [kJ/kg]\n", + "# KE is assumed to be negligible.\n", + "# For Steady Flow process: dE/dt = 0\n", + "# From Eqn. 2.47:\n", + "deltaH = Q - Ws - PE## [kJ/kg]\n", + "H1 = Cp*(T2 - T1)## [kJ/kg]\n", + "H2 = H1 + deltaH## [kJ/kg]\n", + "\n", + "# Now, the temperature of the tank can be determined as:\n", + "T = (H2/Cp) + T1## [K]\n", + "print \"Tempertaure of water in the second tank is %.2f K\\n\"%(T)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch3_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch3_1.ipynb new file mode 100644 index 00000000..4a38a1a5 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch3_1.ipynb @@ -0,0 +1,553 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3 - Properties of pure substances" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.1 Page: 88" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.1 - Page: 88\n", + "\n", + "\n", + "Molar Volume of the gas is 1.29e-02 cubic metres\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 3.1 - Page: 88\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "P = 2*10**5## [Pa]\n", + "T = 273 + 37## [K]\n", + "R = 8.314## [J/mol K]\n", + "#****************\n", + "# Since the gas behaves ideally:\n", + "V = R*T/P## [cubic metres]\n", + "print \"Molar Volume of the gas is %.2e cubic metres\"%(V)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.2 Page: 89" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.2 - Page: 89\n", + "\n", + "\n", + "The pressure of air after compression is 1200 kPa\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 3.2 - Page: 89\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "V1 = 8## [cubic m]\n", + "P1 = 300## [kPa]\n", + "V2 = 2## [cubic m]\n", + "#**************\n", + "# Apptying the ideal gas Eqn. & since the Temperature remains constant:\n", + "P2 = P1*V1/V2## [kPa]\n", + "print \"The pressure of air after compression is %d kPa\\n\"%(P2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.3 Page: 89" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.3 - Page: 89\n", + "\n", + "\n", + "The pressure of the remaining air is 400 kPa\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 3.3 - Page: 89\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "V1 = 6## [cubic m]\n", + "P1 = 500## [kPa]\n", + "R = 0.287## [kJ/kg K]\n", + "#*************\n", + "# Applying the charectarstic equation to the gas initially:\n", + "# P1*V1 = m1*R*T1.......................................(i)\n", + "# Applying the charectarstic equation to the gas which was left in the vessel after one-fifth of the gas has been removed:\n", + "# P2*V2 = m2*R*T2.......................................(ii)\n", + "# V2 = V1# T2 = T1# m2 = (4/5)*m1# Eqn (ii) becomes:\n", + "# P2*V1 = (4/5)*m1*R*T1..................................(iii)\n", + "# Dividing eqn (i) by eqn (iii), we get:\n", + "P2 = (4/5)*P1## [kPa]\n", + "print \"The pressure of the remaining air is %d kPa\\n\"%(P2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.4 Page: 90" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.4 - Page: 90\n", + "\n", + "\n", + "Final Temperature of the air when the piston reaches stop is 361.5 K\n", + "\n", + "Pressure of air inside the cylinder is 2.51 bar\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 3.4 - Page: 90\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "T1 = 450 + 273## [K]\n", + "P1 = 3## [bar]\n", + "#***************\n", + "# Soluton(a)\n", + "# From Fig. 3.7, (Page 90)\n", + "# Since the weight remains the same, therefore, the final pressure is equal to the initial pressure.\n", + "# Therefore it is a constant pressure process.\n", + "P2 = P1## [bar]\n", + "# Volumetric Ratio:\n", + "V2_by_V1 = 2.5/(2.5 + 2.5)# Applying ideal gas law & P1 = P2\n", + "T2 = T1*V2_by_V1## [K]\n", + "print \"Final Temperature of the air when the piston reaches stop is %.1f K\\n\"%(T2)\n", + "# Solution (b)\n", + "# When the piston rests ot the stops, the pressure exerted by the weight, air & the atmosphere will be different. But there will beno further decrease in volume.\n", + "# This is a constant volume process.\n", + "T3 = 273 + 30## [K]\n", + "# Applying ideal gas law & V2 = V3\n", + "P3 = T3*P2/T2## [bar]\n", + "print \"Pressure of air inside the cylinder is %.2f bar\\n\"%(P3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.5 Page: 95" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.5 - Page: 95\n", + "\n", + "\n", + "The temperature at which ammonia exists in the cylinder is 321.5 K\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 3.5 - Page: 95\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "m = 1.373## [kg]\n", + "P = 1.95*10**(6)## [Pa]\n", + "V = 0.1## [cubic m]\n", + "a = 422.546*10**(-3)## [cubic m/square mol]\n", + "b = 37*10**(-6)## [cubic m/mol]\n", + "M = 17*10**(-3)## [kg/mol]\n", + "R = 8.314## [J/mol K]\n", + "#****************\n", + "n = m/M## [moles]\n", + "Vm = V/n## [molar volume, cubic m]\n", + "# Applying Van der Waals equation of state:\n", + "T = (P + (a/Vm**2))*((Vm - b)/R)## [K]\n", + "print \"The temperature at which ammonia exists in the cylinder is %.1f K\\n\"%(T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.6 Page: 96" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.6 - Page: 96\n", + "\n", + "\n", + "Ideal Equation of State\n", + "\n", + "Molar Volume of the gas is 4.284e-03 cubic m/mol\n", + "\n", + "\n", + "\n", + "Van der Wall Equation of State\n", + "\n", + "Molar Volume of the gas is 4.292e-03 cubic m/mol\n", + "\n", + "\n", + "\n", + "Virial Equation of State\n", + "\n", + "Molar Volume of the gas is 7.000e+00 cubic m/mol\n", + "\n", + "\n", + "\n", + "Redlich Kwong Equation of State\n", + "\n", + "Molar Volume of the gas is 7.500e+00 cubic m/mol\n", + "\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "from __future__ import division\n", + "\n", + "print \"Example: 3.6 - Page: 96\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "P = 15*10**5## [Pa]\n", + "T = 773## [K]\n", + "R = 8.314## [J/mol K]\n", + "#**************\n", + "# Solution (a)\n", + "print \"Ideal Equation of State\\n\"\n", + "# Applying ideal Eqn. of State:\n", + "Vm = R*T/P## [cubic m/mol]\n", + "print \"Molar Volume of the gas is %.3e cubic m/mol\\n\"%(Vm)\n", + "print \"\\n\"\n", + "\n", + "# Solution (b)\n", + "print \"Van der Wall Equation of State\\n\"\n", + "a = 0.2303## [Nm**4/square mol]\n", + "b = 4.3073*10**(-5)## [cubic m/mol]\n", + "#deff('[y] = f1(Vm)','y = P - (R*T/(Vm-b)) + (a/Vm**2)')\n", + "def f1(Vm):\n", + " y = P - (R*T/(Vm-b)) + (a/Vm**2)\n", + " return y\n", + "Vm = fsolve(f1,Vm)## [cubic m/mol]\n", + "print \"Molar Volume of the gas is %.3e cubic m/mol\\n\"%(Vm)\n", + "print \"\\n\"\n", + "\n", + "#Solution (c)\n", + "print \"Virial Equation of State\\n\"\n", + "# Z = 1 + B/V\n", + "# (P*V/(R*T)) = (1 + B/V)\n", + "# V**2 - V*R*T/P - B*R*T/P = 0\n", + "B = 1.3697*10**(-5)## [cubic m/mol]\n", + "#deff('[y] f2(Vm)','y = Vm**2 - (Vm*R*T/P) - (B*R*T/P)')\n", + "def f2(vm):\n", + " y = Vm**2 - (Vm*R*T/P) - (B*R*T/P)\n", + " return y\n", + "Vm = fsolve(f2,7)## [cubic m/mol]\n", + "print \"Molar Volume of the gas is %.3e cubic m/mol\\n\"%(Vm)\n", + "print \"\\n\"\n", + "\n", + "# Solution (d)\n", + "print \"Redlich Kwong Equation of State\\n\"\n", + "Tc = 190.6## [K]\n", + "Pc = 45.99*10**5## [Pa]\n", + "a = 0.4278*R**2*Tc**2.5/Pc## [N/m**4 square mol]\n", + "b = 0.0867*R*Tc/Pc## [cubic m/mol]\n", + "#deff('[y] = f3(Vm)','y = P - (R*T/(Vm - b)) + (a/((T**0.5)*Vm*(Vm+b)))')\n", + "def f3(vm):\n", + " y = P - (R*T/(Vm - b)) + (a/((T**0.5)*Vm*(Vm+b)))\n", + " return y\n", + "\n", + "Vm = fsolve(f3,Vm+0.5)## [cubic m/mol]\n", + "print \"Molar Volume of the gas is %.3e cubic m/mol\\n\"%(Vm)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.8 Page: 101" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.8 - Page: 101\n", + "\n", + "\n", + "Ideal Equation of State\n", + "\n", + "Molar Volume of gas is 5.196e-04 cubic m/mol\n", + "\n", + "\n", + "\n", + "Virial Equation of State\n", + "\n", + "Molar Volume of gas is 5.20e-04 cubic m/mol\n", + "\n" + ] + } + ], + "source": [ + "from scipy.optimize import fsolve\n", + "from __future__ import division\n", + "print \"Example: 3.8 - Page: 101\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "T = 500## [K]\n", + "P = 8*10**6## [Pa]\n", + "R = 8.314## [J/mol K]\n", + "#*************\n", + "# Solution (a)\n", + "# By ideal gas equation of state:\n", + "print \"Ideal Equation of State\\n\"\n", + "Vm = R*T/P## [cubic m/mol]\n", + "print \"Molar Volume of gas is %.3e cubic m/mol\\n\"%(Vm)\n", + "print \"\\n\"\n", + "\n", + "# Solution (b)\n", + "# By Virial Equation of State:\n", + "print \"Virial Equation of State\\n\"\n", + "B = -0.265*10**(-3)## [cubic m/mol]\n", + "C = 0.3025*10**(-7)## [m**6/square mol]\n", + "#deff('[y] = f(Vm)','y = (P*Vm/(R*T)) - 1 -(B/Vm) - (C/Vm**2)')\n", + "def f(vm):\n", + " y = (P*Vm/(R*T)) - 1 -(B/Vm) - (C/Vm**2)\n", + " return y\n", + "Vm = fsolve(f,Vm)\n", + "print \"Molar Volume of gas is %.2e cubic m/mol\\n\"%(Vm)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.10 Page: 103" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.10 - Page: 103\n", + "\n", + "\n", + "Value of derivative is 23.98 bar/OC\n", + "\n", + "The pressure generated by heating at constant Volume is 240.84 Pa\n", + "\n", + "The change in Volume is -0.038 cubic cm/g\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp\n", + "print \"Example: 3.10 - Page: 103\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "beeta = 1.487*10**(-3)## [1/OC]\n", + "alpha = 62*10**(-6)## [1/bar]\n", + "V1 = 1.287## [cubic cm /g]\n", + "#************\n", + "# Solution (a)\n", + "# The value of derivative (dP/dT) at constant V:\n", + "# dV/V = beeta*dT - alpha*dP\n", + "# dV = 0\n", + "# dP/dT = beeta/alpha\n", + "# Value = dP/dT\n", + "Value = beeta/alpha## [bar/OC]\n", + "print \"Value of derivative is %.2f bar/OC\\n\"%(Value)\n", + "# Solution (b)\n", + "P1 = 1## [bar]\n", + "T1 = 20## [OC]\n", + "T2 = 30## [OC]\n", + "# Applying the same equation:\n", + "P2 = P1 +(beeta/alpha)*(T2 - T1)## [bar]\n", + "print \"The pressure generated by heating at constant Volume is %.2f Pa\\n\"%(P2)\n", + "# Solution (c)\n", + "T2 = 0## [OC]\n", + "T1 = 20## [OC]\n", + "P2 = 10## [bar]\n", + "P1 = 1## [bar]\n", + "# The change in Volume can be obtained as:\n", + "V2 = V1*exp((beeta*(T2 - T1)) - alpha*(P2 - P1))## [cubic cm/g]\n", + "deltaV = V2 - V1## [cubic cm/g]\n", + "print \"The change in Volume is %.3f cubic cm/g\\n\"%(deltaV)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 3.11 Page: 107" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 3.11 - Page: 107\n", + "\n", + "\n", + "Acentric factor is 0.6447\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log10\n", + "print \"Example: 3.11 - Page: 107\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****\n", + "Tc = 513.9## [K]\n", + "Pc = 61.48*10**5## [Pa]\n", + "#************\n", + "Tr = 0.7\n", + "T = Tr*Tc - 273.15## [OC]\n", + "P_sat = 10**(8.112 - (1592.864/(T + 226.184)))## [mm Hg]\n", + "P_sat = P_sat*101325/760## [Pa]\n", + "Pr_sat = P_sat/Pc## [Pa]\n", + "omega = -1 - log10(Pr_sat)## [Acentric factor]\n", + "print \"Acentric factor is %.4f\"%(omega)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch4_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch4_1.ipynb new file mode 100644 index 00000000..d466d33f --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch4_1.ipynb @@ -0,0 +1,567 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 4 - Heat effects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.1 Page: 118" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.1 - Page: 118\n", + "\n", + "\n", + "Value of Qv is -326.40 kcal\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.1 - Page: 118\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Qp = -327## [kcal]\n", + "T = 27 + 273## [K]\n", + "R = 2*10**(-3)## [kcal/K mol]\n", + "#*************#\n", + "\n", + "# The reaction involved is:\n", + "# C2H5OH(l) + 3O2(g) = 2CO2(g) + 3H2O(l)\n", + "deltan = 2 - 3#\n", + "Qv = Qp - deltan*R*T## [kcal]\n", + "print \"Value of Qv is %.2f kcal\\n\"%(Qv)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.2 Page: 119" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.2 - Page: 119\n", + "\n", + "\n", + "Heat produced in the reaction is -1019.9 kcal\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.2 - Page: 119\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "# Mg + (1/2)O2 = MgO ...............(1)\n", + "deltaH1 = -610.01## [kcal]\n", + "# 2Fe + (3/2)O2 = Fe2O3 ............(2)\n", + "deltaH2 = -810.14## [kcal]\n", + "#*************#\n", + "\n", + "# 3Mg + Fe2O3 = 3MgO + 2Fe .........(3)\n", + "# Multiplying (1) by 3 and substracting from (2), we get (3):\n", + "deltaH = 3*deltaH1 - deltaH2## [kcal]\n", + "print \"Heat produced in the reaction is %.1f kcal\\n\"%(deltaH)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.3 Page: 121" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.3 - Page: 121\n", + "\n", + "\n", + "The standard heat of formation of methane is -74.75 kJ/gmol\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.3 - Page: 121\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "# 2H2(g) + O2(g) ---------------> 2H2O .....................(1)\n", + "deltaH1 = -241.8*2## [kJ/gmol H2]\n", + "# C(graphite) + O2(g) =---------> CO2(g) ...................(2)\n", + "deltaH2 = -393.51## [kJ/gmol C]\n", + "# CH4(g) + 2O2(g) ---------------> CO2(g) + 2H2O(l) ........(3)\n", + "deltaH3 = -802.36## [kJ/mol CH4]\n", + "#*************#\n", + "\n", + "# For standard heat of formation of methane, (a) + (b) - (c)\n", + "# C + 2H2 ------------------------> CH4\n", + "deltaHf = deltaH1 + deltaH2 - deltaH3## [kJ/gmol]\n", + "print \"The standard heat of formation of methane is %.2f kJ/gmol\\n\"%(deltaHf)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.4 Page: 122" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.4 - Page: 122\n", + "\n", + "\n", + "Energy supplied by reaction A is -69.2 kJ\n", + "\n", + "Energy supplied by reaction B is -2802.8 kJ\n", + "\n", + "Reaction B supplies more energy to the organism\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.4 - Page: 122\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "deltaH_C6H12O6 = -1273## [kcal]\n", + "deltaH_C2H5OH = -277.6## [kcal]\n", + "deltaH_CO2 = -393.5## [kcal]\n", + "deltaH_H2O = -285.8## [kcal]\n", + "#**************#\n", + "\n", + "# C6H12O6(s) = 2C2H5OH(l) + 2CO2(g) ..........................(A)\n", + "deltaH_A = 2*deltaH_C2H5OH + 2*deltaH_CO2 - deltaH_C6H12O6## [kJ]\n", + "# C6H12O6(s) + 6O2(g) = 6CO2(g) + 6H2O(l) ...................(B)\n", + "deltaH_B = 6*deltaH_CO2 + 6*deltaH_H2O - deltaH_C6H12O6## [kJ]\n", + "print \"Energy supplied by reaction A is %.1f kJ\\n\"%(deltaH_A)#\n", + "print \"Energy supplied by reaction B is %.1f kJ\\n\"%(deltaH_B)#\n", + "if deltaH_A < deltaH_B:\n", + " print \"Reaction A supplies more energy to the organism\\n\"\n", + "else:\n", + " print \"Reaction B supplies more energy to the organism\\n\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.5 Page: 122" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.5 - Page: 122\n", + "\n", + "\n", + "Heat of formation of ZnSO4 is -233.48 kcal/kmol\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.5 - Page: 122\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "# Zn + S = ZnS ....................................................(A)\n", + "deltaH_A = -44## [kcal/kmol]\n", + "# ZnS + 3O2 = 2ZnO + 2SO2 .........................................(B)\n", + "deltaH_B = -221.88## [kcal/kmol]\n", + "# 2SO2 + O2 = 2SO3 ................................................(C)\n", + "deltaH_C = -46.88## [kcal/kmol]\n", + "# ZnO + SO3 = ZnSO4 ...............................................(D)\n", + "deltaH_D = -55.10## [kcal/kmol]\n", + "#***************#\n", + "\n", + "# Multiplying (A) by 2 & (D) by (2) and adding (A), (B), (C) & (D)\n", + "# Zn + S + 2O2 = ZnSO4\n", + "deltaH = 2*deltaH_A + deltaH_B + deltaH_C + 2*deltaH_D## [kcal/kmol for 2 kmol of ZnSO4]\n", + "print \"Heat of formation of ZnSO4 is %.2f kcal/kmol\\n\"%(deltaH/2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.6 Page: 124" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.6 - Page: 124\n", + "\n", + "\n", + "Standard Heat of formation of NH3 is -11.8 kcal\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.6 - Page: 124\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "# HC : Heat of Combustion\n", + "HC_NH3 = -90.6## [kcal]\n", + "HC_H2 = -68.3## [kcal]\n", + "#*************#\n", + "\n", + "# Heat of combustion of NH3:\n", + "# 2NH3 + 3O = N2 + 3H2O ............................ (A)\n", + "# Heat of combustion of H2:\n", + "# H2 + O = H2O ..................................... (B)\n", + "# Multiplying (B) by 3 & substracting from (A), we get:\n", + "# 2NH3 = N2 + 3H2 .................................. (C)\n", + "# Hf : Heat of Formation\n", + "Hf_NH3 = -(2*HC_NH3 - 3*HC_H2)/2## [kcal]\n", + "print \"Standard Heat of formation of NH3 is %.1f kcal\"%(Hf_NH3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.7 Page: 125" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.7 - Page: 125\n", + "\n", + "\n", + "The maximum attainable temperature is 2566.2 K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "print \"Example: 4.7 - Page: 125\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "# HC : Heat of Combustion\n", + "HC_C2H2 = -310600# # [cal]\n", + "#**************#\n", + "\n", + "# C2H2 + (5/2)O2 = 2CO2 + H2O\n", + "Q = -HC_C2H2## [cal]\n", + "# The gases present in the flame zone after combustion are carbon dioxide, water vapor and the unreacted nitrogen of the air.\n", + "# Since (5/2) mole of oxygen were required for combustion, nitrogen required would be 10 mol.\n", + "# Hence the composition of the resultant gas would be 2 mol CO2, 1 ol H2 & 10 mol N2.\n", + "# Q = integrate('Cp(T)','T',T,298)#\n", + "# On integrating we get:\n", + "# Q = 84.52*(T - 298) + 18.3*10**(-3)*(T**2 - 298**2)\n", + "#deff('[y] = f(T)','y = Q - 84.52*(T - 298) - 18.3*10**(-3)*(T**2 - 298**2)')#\n", + "def f(T):\n", + " y = Q - 84.52*(T - 298) - 18.3*10**(-3)*(T**2 - 298**2)\n", + " return y\n", + "\n", + "T = fsolve(f,7)## [K]\n", + "print \"The maximum attainable temperature is %.1f K\"%(T)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.8 Page: 126" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.8 - Page: 126\n", + "\n", + "\n", + "The theoretical temperature of combustion is 1906 degree Celsius\n" + ] + } + ], + "source": [ + "print \"Example: 4.8 - Page: 126\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Cp_CO2 = 54.56## [kJ/mol K]\n", + "Cp_O2 = 35.20## [kJ/mol K]\n", + "Cp_steam = 43.38## [kJ/mol K]\n", + "Cp_N2 = 33.32## [kJ/mol K]\n", + "# 2C2H6(g) + 7O2(g) = 4CO2(g) + 6H2O(g)\n", + "deltaH_273 = -1560000## [kJ/kmol]\n", + "#************#\n", + "\n", + "# Since the air is 25% in excess of the amount required,the combustion may be written as:\n", + "# C2H6(g) + (7/2)O2(g) = 2CO2(g) + 3H2O(g)\n", + "# 25% excess air is supplied.\n", + "# Since the air contains N2 = 79% and O2 = 21%\n", + "# C2H6(g) + 3.5O2(g) + 0.25*3.5O2(g) + (4.375*(79/21))N2 = 2CO2 + 3H2O + 0.875O2 + 16.46N2 .................. (A)\n", + "# Considering the reaction (A),\n", + "# Amount of O2:\n", + "O2 = 3.5 + 3.5*0.25## [mol]\n", + "# Amount of N2 required:\n", + "N2 = 4.375*(79/21)## [mol]\n", + "# Let the initial temperature of ethane and air be 0 OC and the temperature of products of combustion be T OC\n", + "# Since heat librated by combustion = heat accumulated by combustion products\n", + "Q = -deltaH_273## [kJ/mol K]\n", + "T = Q/(2*Cp_CO2 + 3*Cp_steam + 0.875*Cp_O2 + N2*Cp_N2)## [OC]\n", + "print \"The theoretical temperature of combustion is %d degree Celsius\"%(T)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.9 Page: 129" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.9 - Page: 129\n", + "\n", + "\n", + "Laten heat of ice at -20 OC is 1266 cal/mol\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.9 - Page: 129\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "T1 = 273## [K]\n", + "T2 = 253## [K]\n", + "deltaH_273 = 1440## [cal/mol]\n", + "Cp = 8.7## [cal/mol]\n", + "#**************#\n", + "\n", + "deltaH_253 = deltaH_273 + Cp*(T2 - T1)## [cal/mol]\n", + "print \"Laten heat of ice at -20 OC is %d cal/mol\\n\"%(deltaH_253)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.10 Page: 129" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.10 - Page: 129\n", + "\n", + "\n", + "Heat of formation at 1273 K is -11172 cal\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.10 - Page: 129\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "T2 = 1273## [K]\n", + "T1 = 300## [K]\n", + "deltaH_300 = -11030## [cal/mol]\n", + "#*************#\n", + "\n", + "# The chemical reaction involved is:\n", + "# N2 + 3H2 = 2NH3\n", + "# (1/2)N2 + (3/2)H2 = NH3\n", + "# deltaH_1273 = deltaH_300 + integrate('Cp_NH3(T) - (1/2)*Cp_N2(T) - (1/2)*Cp_H2(T)','T',1273,300)#\n", + "from sympy.mpmath import quad\n", + "deltaH_1273 = deltaH_300 + quad(lambda T:(6.2 + 7.8*10**(-3)*T - 7.2*10**(-6)*T**2) - (1/2)*(6.45 + 1.4*10**(-3)*T) - (1/2)*(6.94 - 0.2*10**(-3)*T),[1273,300])## [cal]\n", + "print \"Heat of formation at 1273 K is %d cal\"%(deltaH_1273)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 4.11 Page: 130" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 4.11 - Page: 130\n", + "\n", + "\n", + "Percent of excess air supplied is 39.9 %\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 4.11 - Page: 130\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "CO2 = 13.4## [percent by volume]\n", + "N2 = 80.5## [percent by volume]\n", + "O2 = 6.1## [percent by volume]\n", + "#*************#\n", + "\n", + "# Basis : 100 cubic m of flue gas.\n", + "Vol_N2_flue = N2## [Volume of Nitrogen in flue gas, cubic m]\n", + "Vol_O2_flue = O2## [Volume of O2 in flue gas, cubic m]\n", + "Vol_Air = N2/0.79## [Volume of air supplied, cubic m]\n", + "Vol_O2 = Vol_Air*0.21## [Volume of O2 in air supply, cubic m]\n", + "Vol_O2_cumbustion = Vol_O2 - Vol_O2_flue## [Volume of O2 used up in cumbustion of the fuel, cubic m]\n", + "Excess_Air = Vol_O2_flue/Vol_O2_cumbustion * 100## [percent of excess air supplied]\n", + "print \"Percent of excess air supplied is %.1f %%\"%(Excess_Air)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch5_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch5_1.ipynb new file mode 100644 index 00000000..8180e281 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch5_1.ipynb @@ -0,0 +1,1284 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 - Second law of themodynamics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.1 Page: 150" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.1 - Page: 150\n", + "\n", + "\n", + "The theoretical efficiency of heat engine is 63.5 %\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.1 - Page: 150\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Th = 550 + 273## [K]\n", + "Tl = 27 + 273## [K]\n", + "#************#\n", + "\n", + "# The theoretical efficiency of a heat engine is given by:\n", + "# eta = Net Work Output/Net Work Input\n", + "# eta = Wnet/Qin\n", + "# eta = (Qin - Qout)/Qin = (Th - Tl)/Th\n", + "eta = (Th - Tl)/Th#\n", + "print \"The theoretical efficiency of heat engine is %.1f %%\"%(eta * 100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.2 Page: 150" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.2 - Page: 150\n", + "\n", + "\n", + "(a) The efficiency of the heat engine is 63.0 %\n", + "\n", + "(b) The efficiency of the heat engine is 78.0 %\n", + "\n", + "(c) The efficiency of the heat engine is 57.5 %\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.2 - Page: 150\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Th = 810## [K]\n", + "Tl = 300## [K]\n", + "#*************#\n", + "\n", + "# Solution (a)\n", + "eta = (Th - Tl)/Th#\n", + "print \"(a) The efficiency of the heat engine is %.1f %%\\n\"%(eta*100)#\n", + "\n", + "# Solution (b)\n", + "Th = 1366## [K]\n", + "Tl = 300## [K]\n", + "eta = (Th - Tl)/Th#\n", + "print \"(b) The efficiency of the heat engine is %.1f %%\\n\"%(eta*100)#\n", + "\n", + "# Solution (c)\n", + "Th = 810## [K]\n", + "Tl = 344## [K]\n", + "eta = (Th - Tl)/Th#\n", + "print \"(c) The efficiency of the heat engine is %.1f %%\\n\"%(eta*100)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.3 Page: 151" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.3 - Page: 151\n", + "\n", + "\n", + "(a) The efficiency of the Carnot engine is 67.2 %\n", + "\n", + "(b) Heat released to cold reservoir is 192 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.3 - Page: 151\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Th = 650 + 273## [K]\n", + "Tl = 30 + 273## [K]\n", + "Qh = 585## [kJ/cycle]\n", + "#*************#\n", + "\n", + "# Solution (a)\n", + "# From Eqn. (5.9)\n", + "eta = (Th - Tl)/Th#\n", + "print \"(a) The efficiency of the Carnot engine is %.1f %%\\n\"%(eta*100)#\n", + "\n", + "# Soluton (b)\n", + "# From the knowledge of the ratio of heat and temperature between the two regions:\n", + "Ql = Qh*Tl/Th## [kJ]\n", + "print \"(b) Heat released to cold reservoir is %d kJ\\n\"%(Ql)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.4 Page: 151" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.4 - Page: 151\n", + "\n", + "\n", + "Minimum Work requirement is 27 kJ\n", + "\n", + "Amount of heat released to the surrounding is 362 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.4 - Page: 151\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m = 1## [kg]\n", + "Tl = 273## [K]\n", + "Th = 295## [K]\n", + "Ql = 335## [kJ/kg]\n", + "#*************#\n", + "\n", + "# Solution (a)\n", + "# The coeffecient of performance of refrigerating machine is:\n", + "# COP = Ql/Wnet = Tl/(Th - Tl)\n", + "Wnet = Ql*(Th - Tl)/Tl## [kJ]\n", + "print \"Minimum Work requirement is %d kJ\\n\"%(round(Wnet))#\n", + "\n", + "# Solution (b)\n", + "# Amount of heat released:\n", + "# Wnet = Qh - Ql\n", + "Qh = Wnet + Ql## [kJ]\n", + "print \"Amount of heat released to the surrounding is %d kJ\\n\"%(round(Qh))#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.5 Page: 152" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.5 - Page: 152\n", + "\n", + "\n", + "Minimum Work Required is 13.1 kJ\n", + "\n", + "The efficiency of Heat Engine is 0.263\n", + "\n", + "Amount of Heat released is 36.9 kJ\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.5 - Page: 152\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Th = 373## [K]\n", + "Tl = 275## [K]\n", + "Qh = 50## [kJ]\n", + "#*************#\n", + "\n", + "# Solution (a)\n", + "# Theral Efficiency of the engine can be given as:\n", + "# eta_HE = Wnet/Qh#\n", + "# Wnet = Qh*COP = Qh*(Th - Tl)/Th#\n", + "Wnet = Qh*(Th - Tl)/Th## [kJ]\n", + "print \"Minimum Work Required is %.1f kJ\\n\"%(Wnet)#\n", + "\n", + "# Solution (b)\n", + "eta = (Th - Tl)/Th#\n", + "print \"The efficiency of Heat Engine is %.3f\\n\"%(eta)#\n", + "\n", + "# Solution (c)\n", + "# Amount of heat released can be calculated as:\n", + "# eta = Net Work Output/Net Work Input#\n", + "# eta = Wnet/Qin#\n", + "# eta = (Qin - Qout)/Qin#\n", + "Qin = Qh## [kJ]\n", + "Qout = Qin*(1 - eta)#\n", + "print \"Amount of Heat released is %.1f kJ\\n\"%(Qout)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.6 Page: 153" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.6 - Page: 153\n", + "\n", + "\n", + "Claim is not Valid\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.6 - Page: 153\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "W = 5## [hp]\n", + "Q = 7000## [J/s]\n", + "Th = 400 + 273## [K]\n", + "Tl = 24 + 273## [K]\n", + "#*************#\n", + "\n", + "W = 5*745.7## [W]\n", + "thermal_eta = W/Q#\n", + "theoretical_eta = (Th - Tl)/Th#\n", + "\n", + "if theoretical_eta <= thermal_eta:\n", + " print \"Claim is Valid\"\n", + "else:\n", + " print \"Claim is not Valid\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.7 Page: 162" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.7 - Page: 162\n", + "\n", + "\n", + "Change in Entropy is 23.81 J/mol K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.7 - Page: 162\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "n = 1## [mol]\n", + "deltaH_fusion = 6500## [J/mol]\n", + "T_Tr = 273## [transition temperature, K]\n", + "P = 1## [atm]\n", + "#************#\n", + "\n", + "# By Eqn. (9.40)\n", + "deltaS_fusion = deltaH_fusion/T_Tr## [J/mol K]\n", + "print \"Change in Entropy is %.2f J/mol K\"%(deltaS_fusion)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.8 Page: 164" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.8 - Page: 164\n", + "\n", + "\n", + "Change in Entropy is 22.876 eu\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 5.8 - Page: 164\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "V1 = 5## [L]\n", + "V2 = 50## [L]\n", + "n = 5## [moles]\n", + "R = 1.987## [cal/mol K]\n", + "#**************#\n", + "\n", + "# Change in entropy for an isothermal change for an ideal gas:\n", + "# deltaS = n*R*log(P1/P2) = n*R*log(V2/V1)\n", + "deltaS = n*R*log(V2/V1)## [cal/degree]\n", + "print \"Change in Entropy is %.3f eu\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.9 Page: 164" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.9 - Page: 164\n", + "\n", + "\n", + "deltaS is 115.26 J/K\n", + "Change in Entropy is 115.257 eu\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 5.9 - Page: 164\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "n = 8## [mol]\n", + "R = 8.314## [J/mol K]\n", + "T2 = 700## [K]\n", + "T1 = 350## [K]\n", + "Cp = (5/2)*R## [J/mol K]\n", + "#*************#\n", + "\n", + "deltaS = n*Cp*log(T2/T1)## [J/K]\n", + "print \"deltaS is %.2f J/K\"%(deltaS)#\n", + "\n", + "R*log(V2/V1)#// [cal/degree]\n", + "print \"Change in Entropy is %.3f eu\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.10 Page: 164" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.10 - Page: 164\n", + "\n", + "\n", + "Change in Entropy is -19.179548 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 5.10 - Page: 164\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "n = 5## [moles]\n", + "T1 = 300## [K]\n", + "T2 = 400## [K]\n", + "P1 = 3## [bars]\n", + "P2 = 12## [bars]\n", + "Cp = 26.73## [J/mol K]\n", + "R = 8.314## [K/mol K]\n", + "#*************#\n", + "\n", + "deltaS = n*((Cp*log(T2/T1)) + (R*log(P1/P2)))## [kJ/K]\n", + "print \"Change in Entropy is %f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.11 Page: 166" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.11 - Page: 166\n", + "\n", + "\n", + "Entropy Change is 4.27 kJ/kmol K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 5.11 - Page: 166\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "N = 1## [kmol]\n", + "xA = 0.21## [for Oxygen]\n", + "xB = 0.79## [for Nitrogen]\n", + "R = 8.314## [kJ/kmol K]\n", + "#*************#\n", + "\n", + "deltaS = - (N*R*(xA*log(xA) + xB*log(xB)))## [kJ/mol K]\n", + "print \"Entropy Change is %.2f kJ/kmol K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.12 Page: 167" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.12 - Page: 167\n", + "\n", + "\n", + "Change in Entropy is 1.117 cal/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 5.12 - Page: 167\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Vol_O2 = 5.6## [L]\n", + "Vol_H2 = 16.8## [L]\n", + "R = 1.987## [cal/mol K]\n", + "#*************#\n", + "\n", + "xA = Vol_O2/22.4## [mole fraction O2]\n", + "xB = Vol_H2/22.4## [mle fraaction H2]\n", + "N = xA + xB## [total number of moles]\n", + "# From Eqn. 5.21:\n", + "deltaS = - (N*R*(xA*log(xA) + xB*log(xB)))## [cal/K]\n", + "print \"Change in Entropy is %.3f cal/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.13 Page: 168" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.13 - Page: 168\n", + "\n", + "\n", + "Entropy Change is 0.319 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 5.13 - Page: 168\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m = 80## [mass of Argon, g]\n", + "T1 = 300## [K]\n", + "T2 = 500## [K]\n", + "Cv = 0.3122## [kJ/kg K]\n", + "#**************#\n", + "\n", + "Mw = 40## [Molecular Weight of Argon]\n", + "n = m/Mw## [moles]\n", + "deltaS = n*Cv*log(T2/T1)## [kJ/K]\n", + "print \"Entropy Change is %.3f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.14 Page: 168" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.14 - Page: 168\n", + "\n", + "\n", + "The upper temperature of the process is 864.929 K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log,exp\n", + "print \"Example: 5.14 - Page: 168\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "deltaS = 1## [kJ/kg K]\n", + "Cv = 0.918## [kJ/kg K]\n", + "T1 = 273 + 18## [K]\n", + "#*************#\n", + "\n", + "# Let the upper temperature be T.\n", + "# deltaS = integrate('Cv/T','T',T1,T)# \n", + "# deltaS = Cv*log(T/T1)\n", + "T = T1*exp(deltaS/Cv)## [K]\n", + "print \"The upper temperature of the process is %.3f K\"%(T)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.15 Page: 169" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.15 - Page: 169\n", + "\n", + "\n", + "Change in Entropy is -5.450 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "from sympy.mpmath import quad\n", + "\n", + "\n", + "print \"Example: 5.15 - Page: 169\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m1 = 5## [kg]\n", + "m2 = 20## [kg]\n", + "C = 4.2## [kJ/kg K]\n", + "T1 = 350## [K]\n", + "T2 = 250## [K]\n", + "#**************#\n", + "\n", + "# Suppose the final temperature is T\n", + "#deff('[y] = f(T)','y = m1*C*(T1 - T) - m2*C*(T - T2)')#\n", + "def f(T):\n", + " y = m1*C*(T1 - T) - m2*C*(T - T2)\n", + " return y\n", + "\n", + "T = fsolve(f, 7)[0]## [K]\n", + "# Change in entropy of Hot Water:\n", + "deltaS1 = m1*C*quad(lambda T:(1/T),[T1,T])## [kJ/K]\n", + "# Change in Entopy of Hot Water:\n", + "deltaS2 = m2*C*quad('(1/T)','T',T2,T)## [kJ/K]\n", + "deltaS = deltaS1 + deltaS2## [kJ/K]\n", + "print \"Change in Entropy is %.3f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.16 Page: 169" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.16 - Page: 169\n", + "\n", + "\n", + "Change in Entropy is 0.540 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "from sympy.mpmath import quad\n", + "\n", + "print \"Example: 5.16 - Page: 169\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m = 12## [g]\n", + "T1 = 294## [K]\n", + "T2 = 574## [K]\n", + "T = 505## [melting point, K]\n", + "H_fusion = 4.5## [cal/K]\n", + "C_solid = 0.052## [cal/g K]\n", + "C_liquid = 0.062## [cal/g K]\n", + "#*************#\n", + "\n", + "# Entropy Change in heating 12 g of metal from T1 to T\n", + "deltaS1 = m*C_solid*quad(lambda T:(1/T),[T1,T])## [kJ/K]\n", + "# Entropy Change in fusion of metal:\n", + "deltaS2 = m*H_fusion/T## [kJ/K]\n", + "# Entropy Change in heating liquid metal from 505 K to 574 K\n", + "deltaS3 = m*C_liquid*quad(lambda T:(1/T),[T,T2])## [kJ/K]\n", + "deltaS = deltaS1 + deltaS2 + deltaS3## [kJ/K]\n", + "print \"Change in Entropy is %.3f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.17 Page: 170" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.17 - Page: 170\n", + "\n", + "\n", + "Change in Entropy is 9.165 cal/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "from sympy.mpmath import quad\n", + "print \"Example: 5.17 - Page: 170\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "#deff('[y] = Cp(T)','y = 7.25 + 2.28*10**(-3)*T')#\n", + "def Cp(T):\n", + " y = (7.25 + 2.28*10**(-3)*T)/T\n", + " return y\n", + "T1 = 273 + 137## [K]\n", + "T2 = 273 + 877## [K]\n", + "#************#\n", + "\n", + "deltaS = quad(Cp,[T1,T2])## [cal/K]\n", + "print \"Change in Entropy is %.3f cal/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.18 Page: 170" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.18 - Page: 170\n", + "\n", + "\n", + "Total Entropy Change is 7.68 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy.optimize import fsolve\n", + "from sympy.mpmath import quad\n", + "from math import log\n", + "print \"Example: 5.18 - Page: 170\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "m_iron = 40## [kg]\n", + "T1 = 625## [K]\n", + "m_water = 160## [kg]\n", + "T2 = 276## [K]\n", + "C_iron = 0.45## [kJ/kg K]\n", + "C_water = 4.185## [kJ/kg K]\n", + "#**************#\n", + "\n", + "#deff('[y] = f(T)','y = m_iron*C_iron*(T1 - T) - m_water*C_water*(T - T2)')#\n", + "def f(T):\n", + " y = m_iron*C_iron*(T1 - T) - m_water*C_water*(T - T2)\n", + " return y\n", + "\n", + "T = fsolve(f, 7)## [K]\n", + "# Change in Entropy of the iron casting can be estimated as:\n", + "deltaS1 = m_iron*C_iron*log(T/T1)## [kJ/K]\n", + "# Change in Entropy of Water is given by:\n", + "deltaS2 = m_water*C_water*log(T/T2)## [kJ/K]\n", + "deltaS = deltaS1 + deltaS2## [kJ/K]\n", + "print \"Total Entropy Change is %.2f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.19 Page: 172" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.19 - Page: 172\n", + "\n", + "\n", + "Entropy at 500 K is 160.73 J/kmol\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 5.19 - Page: 172\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "Cp = 21## [J/kmol]\n", + "T1 = 300## [K]\n", + "T2 = 500## [K]\n", + "S1 = 150## [Entropy at T1, J/kmol]\n", + "#*************#\n", + "\n", + "# This is a constant Entropy process. Therefore:\n", + "deltaS = Cp*log(T2/T1)## [J/kmol]\n", + "S2 = S1 + deltaS## [J/kmol]\n", + "print \"Entropy at 500 K is %.2f J/kmol\"%(S2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.20 Page: 173" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.20 - Page: 173\n", + "\n", + "\n", + "Total Entropy Change is 369.49 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.20 - Page: 173\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "T1_oil = 273 + 150## [K]\n", + "T2_oil = 50 +273## [K]\n", + "m_water = 4000## [kg]\n", + "T1_water = 273 + 20## [K]\n", + "T2_water = 273 + 130## [K]\n", + "C_water = 4.185## [kJ/kg K]\n", + "C_oil = 2.5## [kJ/kg K]\n", + "#***************#\n", + "\n", + "# For oil:\n", + "deltaT_oil = T1_oil - T2_oil## [K]\n", + "# For water:\n", + "deltaT_water = T2_water - T1_water## [K]\n", + "# The mass flow rate of oil can be measured by the enthalpy balance over the process:\n", + "m_oil = m_water*C_water*deltaT_water/(deltaT_oil*C_oil)## [kg]\n", + "# Change in the Entropy of oil:\n", + "deltaS_oil = m_oil*C_oil*log(T2_oil/T1_oil)## [kJ/K]\n", + "# Change in Entropy of water:\n", + "deltaS_water = m_water*C_water*log(T2_water/T1_water)## [kJ/K]\n", + "deltaS = deltaS_oil + deltaS_water## [kJ/K]\n", + "print \"Total Entropy Change is %.2f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.21 Page: 174" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.21 - Page: 174\n", + "\n", + "\n", + "Change in Entropy is 1.49 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.21 - Page: 174\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "t = 20*60## [s]\n", + "P = 650## [W]\n", + "T = 273 + 250## [K]\n", + "#*************#\n", + "\n", + "Q = P*t/1000## [kJ]\n", + "deltaS = Q/T## [kJ/K]\n", + "print \"Change in Entropy is %.2f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.22 Page: 174" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.22 - Page: 174\n", + "\n", + "\n", + "Change in Entropy of the gas is 0.5199 kJ/K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 5.22 - Page: 174\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data*****#\n", + "T1 = 400## [K]\n", + "P1 = 300## [kPa]\n", + "V1 = 1## [cubic m]\n", + "V2 =2## [cubic m]\n", + "R = 8.314## [kJ/kmol K]\n", + "#**************#\n", + "\n", + "# Since the system is well insulated, there is no scope of transferring heat between system & surrounding.\n", + "deltaQ = 0## [kJ]\n", + "deltaW = 0## [kJ]\n", + "# By first law of thermodynamics:\n", + "deltaU =deltaQ - deltaW## [kJ]\n", + "# As the internal energy of the gas depends only on temperature,\n", + "deltaT = 0## [K]\n", + "T2 = T1 + deltaT## [K]\n", + "P2 = (P1*V1/T1)*(T2/V2)## [kPa]\n", + "n = P1*V1/(R*T1)## [kmol]\n", + "deltaS_system = n*R*log(P1/P2)## [kJ/K]\n", + "# Since process is adiabatic:\n", + "deltaS_surrounding = 0## [kJ/K]\n", + "deltaS = deltaS_system + deltaS_surrounding## [kJ/K]\n", + "print \"Change in Entropy of the gas is %.4f kJ/K\"%(deltaS)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.23 Page: 174" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.23 - Page: 174\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 5.23 on page 174 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 5.23 - Page: 174\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 5.23 on page number 174 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 5.23 on page 174 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.24 Page: 182" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.24 - Page: 182\n", + "\n", + "\n", + "Work lost is 2119.67 kJ\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from sympy.mpmath import quad\n", + "from scipy.optimize import fsolve\n", + "print \"Example: 5.24 - Page: 182\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# From Example 5.18 (Pg: 170)\n", + "#*****Data*****#\n", + "m_iron = 40## [kg]\n", + "T1 = 625## [K]\n", + "m_water = 160## [kg]\n", + "T2 = 276## [K]\n", + "C_iron = 0.45## [kJ/kg K]\n", + "C_water = 4.185## [kJ/kg K]\n", + "#**************#\n", + "\n", + "#deff('[y] = f(T)','y = m_iron*C_iron*(T1 - T) - m_water*C_water*(T - T2)')#\n", + "def f(T):\n", + " y = m_iron*C_iron*(T1 - T) - m_water*C_water*(T - T2)\n", + " return y\n", + "T = fsolve(f, 7)[0]## [K]\n", + "# Change in Entropy of the iron casting can be estimated as:\n", + "deltaS1 = m_iron*C_iron*quad(lambda T:(1/T),[T1,T])## [kJ/K]\n", + "# Change in Entropy of Water is given by:\n", + "deltaS2 = m_water*C_water*quad(lambda T:(1/T),[T2,T])## [kJ/K]\n", + "deltaS = deltaS1 + deltaS2## [kJ/K]\n", + "# By Eqn. 5.63:\n", + "W_lost = T2 * deltaS## [kJ]\n", + "print \"Work lost is %.2f kJ\"%(W_lost)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 5.25 Page: 182" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 5.25 - Page: 182\n", + "\n", + "\n", + "Total Entropy Change is 1831.74 kJ/K\n", + "\n", + "Since deltaS is a positive quantity, process is irreversible\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from sympy.mpmath import quad\n", + "from scipy.optimize import fsolve\n", + "print \"Example: 5.25 - Page: 182\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "m_oil = 4750## [kg]\n", + "T1_oil = 515## [K]\n", + "T2_oil = 315## [K]\n", + "m_water = 9500## [kg]\n", + "T1_water = 290## [K]\n", + "Cp_oil = 3.2## [kJ/kg K]\n", + "Cp_water = 4.185## [kJ/kg K]\n", + "#*****************#\n", + "\n", + "# From enthalpy Balance:\n", + "#def('[y] = f(T2_water)','y = m_oil*Cp_oil*(T1_oil - T2_oil) - m_water*Cp_water*(T2_water - T1_water)')#\n", + "def f(T2_water):\n", + " y = m_oil*Cp_oil*(T1_oil - T2_oil) - m_water*Cp_water*(T2_water - T1_water)\n", + " return y\n", + "T2_water = fsolve(f, 7)[0]## [K]\n", + "# Change in the Entropy of oil:\n", + "deltaS_oil = m_oil*Cp_oil*quad(lambda T : (1/T),[T1_oil,T2_oil])## [kJ/K]\n", + "# Change in Entropy of water:\n", + "deltaS_water = m_water*Cp_water*quad(lambda T: (1/T),[T1_water,T2_water])## [kJ/K]\n", + "deltaS = deltaS_oil + deltaS_water## [kJ/K]\n", + "print \"Total Entropy Change is %.2f kJ/K\\n\"%(deltaS)#\n", + "if deltaS > 0:\n", + " print \"Since deltaS is a positive quantity, process is irreversible\\n\"\n", + "else:\n", + " print \"Since deltaS is a negative quantity, process is reversible\\n\"\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch6_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch6_1.ipynb new file mode 100644 index 00000000..c4bdf051 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch6_1.ipynb @@ -0,0 +1,953 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6 - Thermodynamic property relations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.1 Page: 197" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.1 - Page: 197\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.1 on page 197 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.1 - Page: 197\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.1 on page number 197 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.1 on page 197 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.2 Page: 205" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.2 - Page: 205\n", + "\n", + "\n", + "Increase in pressure of 1 atm lowers the freezing point by 0.0072 K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 6.2 - Page: 205\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "density_water = 0.998## [g/cubic cm]\n", + "density_ice = 0.9168## [g/cubic cm]\n", + "Hf = 335## [J/g]\n", + "T = 0 + 273## [K]\n", + "#*****************#\n", + "\n", + "V_water = 1/density_water## [cubic cm/g]\n", + "V_ice = 1/density_ice## [cubic cm/g]\n", + "# From Eqn. 6.56:\n", + "# dP/dT = deltaS/(V2 - V1) = deltaH/(T*(V2 - V1))\n", + "# Substituting these values in Eqn. 6.58\n", + "deltaP_By_deltaT = (Hf/(T*(V_water - V_ice)))*10## [atm/K]\n", + "deltaT_By_deltaP = 1/deltaP_By_deltaT## [K/atm]\n", + "if deltaT_By_deltaP > 0:\n", + " print \"Increase in pressure of 1 atm increases the freezing point by %.4f K\"%(abs(deltaT_By_deltaP))#\n", + "else:\n", + " print \"Increase in pressure of 1 atm lowers the freezing point by %.4f K\"%(abs(deltaT_By_deltaP))#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.3 Page: 206" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.3 - Page: 206\n", + "\n", + "\n", + "Enthalpy of Vaporisation is 2125 kJ/kg\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 6.3 - Page: 206\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "P1 = 361.3## [kPa]\n", + "T1 = 140 + 273## [K]\n", + "P2 = 617.8## [kPa]\n", + "T2 = 160 + 273## [K]\n", + "T = 150 + 273## [K]\n", + "Vg = 0.3917## [cubic m/kg]\n", + "#****************#\n", + "\n", + "# From Eqn. 6.56\n", + "# dP/dT = deltaH/(T*(Vg - V1)) = deltaH/(T*Vg)\n", + "deltaP = P2 - P1## [kPa]\n", + "deltaT = T2 - T1## [K]\n", + "deltaH = T*Vg*deltaP/deltaT## [kJ/kg]\n", + "print \"Enthalpy of Vaporisation is %d kJ/kg\\n\"%(round(deltaH))#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.4 Page: 206" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.4 - Page: 206\n", + "\n", + "\n", + "Saturation pressure of the refrigerant is 39.48 kPa\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp\n", + "print \"Example: 6.4 - Page: 206\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "T1 = -40 + 273## [K]\n", + "T2 = -45 + 273## [K]\n", + "P1 = 51.25## [kPa]\n", + "R = 0.0815## [kJ/kg K]\n", + "Hv = 225.86## [kJ/kg]\n", + "#****************#\n", + "\n", + "# From Eqn. 6.61:\n", + "P2 = P1*exp((Hv/R)*((1/T1) - (1/T2)))## [kPa]\n", + "print \"Saturation pressure of the refrigerant is %.2f kPa\"%(P2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.5 Page: 206" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.5 - Page: 206\n", + "\n", + "\n", + "The enthalpy of vaporisation is 13.85 kJ/mol\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log10, exp\n", + "print \"Example: 6.5 - Page: 206\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "Tb = -103.9 + 273## [K]\n", + "def f1(T):\n", + " P = 10**(-(834.13/T) + 1.75*log10(T) - 8.375*10**(-3)*T + 5.324)\n", + " return P\n", + "R = 8.314## [J/mol K]\n", + "#***************#\n", + "\n", + "# From Eqn. 6.60, we get:\n", + "# d(ln(P))/dT = deltaH/(R*T**2)\n", + "def f2(T):\n", + " P = exp(2.303*log10(f1(T)))\n", + " return P\n", + "# Differentiating it with respect to T\n", + "# d(ln(P))/dT = (834.13*2.303/Tb**2 + 1.75/Tb - 2.303*8.375*10**(-3))\n", + "deltaH = R*Tb**2*(834.13*2.303/Tb**2 + 1.75/Tb - 2.303*8.375*10**(-3))/1000## [kJ/mol]\n", + "print \"The enthalpy of vaporisation is %.2f kJ/mol\\n\"%(deltaH)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.6 Page: 214" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.6 - Page: 214\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.6 on page 214 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.6 - Page: 214\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.6 on page number 214 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.6 on page 214 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.7 Page: 215" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.7 - Page: 215\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.7 on page 215 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.7 - Page: 215\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.7 on page number 215 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.7 on page 215 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.8 Page: 217" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.8 - Page: 217\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.8 on page 217 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.8 - Page: 217\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.8 on page number 217 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.8 on page 217 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.9 Page: 217" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.9 - Page: 217\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.9 on page 217 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.9 - Page: 217\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.9 on page number 217 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.9 on page 217 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.10 Page: 218" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.10 - Page: 218\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.10 on page 218 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.10 - Page: 218\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.10 on page number 218 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.10 on page 218 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.11 Page: 219" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.11 - Page: 219\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.11 on page 219 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.11 - Page: 219\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.11 on page number 219 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.11 on page 219 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.12 Page: 219" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.12 - Page: 219\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.12 on page 219 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.12 - Page: 219\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 6.12 on page number 219 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.12 on page 219 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.13 Page: 220" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.13 - Page: 220\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.13 on page 220 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.13 - Page: 220\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 6.13 on page number 220 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.13 on page 220 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.14 Page: 221" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.14 - Page: 221\n", + "\n", + "\n", + "Percentage error is 4.77 %\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 6.14 - Page: 221\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "alpha = 0.837*10**(-11)## [square m/N]\n", + "beeta = 54.2*10**(-6)## [1/K]\n", + "T = 227 + 273## [K]\n", + "V = 7.115*10**(-3)## [cubic m/kmol]\n", + "Cp = 26.15## [J/mol K]\n", + "#*****************#\n", + "\n", + "Cv = Cp - (T*V*beeta**2/alpha)/1000## [J/mol K]\n", + "# Percentage error if Cp is assumed to Cv.\n", + "err = ((Cp - Cv)/Cp)*100#\n", + "print \"Percentage error is %.2f %%\"%(err)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.15 Page: 221" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.15 - Page: 221\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.15 on page 221 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.15 - Page: 221\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 6.15 on page number 221 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.15 on page 221 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.16 Page: 222" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.16 - Page: 222\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.16 on page 222 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.16 - Page: 222\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 6.16 on page number 222 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.16 on page 222 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.17 Page: 222" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.17 - Page: 222\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.17 on page 222 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.17 - Page: 222\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 6.17 on page number 222 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.17 on page 222 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.18 Page: 223" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.18 - Page: 223\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.18 on page 223 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.18 - Page: 223\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 6.18 on page number 223 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.18 on page 223 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.19 Page: 227" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.19 - Page: 227\n", + "\n", + "\n", + "Inversion of temperature is 2036.3 K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 6.19 - Page: 227\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "a = 3.59## [square L atm /square mol]\n", + "b = 0.043## [L/mol]\n", + "R = 0.082## [J/mol K]\n", + "#***************#\n", + "\n", + "# From Eqn. 6.122:\n", + "Ti = 2*a/(R*b)## [K]\n", + "print \"Inversion of temperature is %.1f K\"%(Ti)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.20 Page: 227" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.20 - Page: 227\n", + "\n", + "\n", + " This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "\n", + "\n", + " For prove refer to this example 6.20 on page 227 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 6.20 - Page: 227\\n\\n\"\n", + "\n", + "# This problem involves proving a relation in which no mathematics and no calculations are involved.\n", + "# For prove refer to this example 6.20 on page number 227 of the book.\n", + "\n", + "print \" This problem involves proving a relation in which no mathematics and no calculations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 6.20 on page 227 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.23 Page: 239" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.23 - Page: 239\n", + "\n", + "\n", + "Residual Entropy is -0.3116 J/mol K\n", + "\n", + "Residual Enthalpy is -108.9010 J/mol K\n", + "\n", + "Residual Internal Energy is -56.3290 J/mol K\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "print \"Example: 6.23 - Page: 239\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "T = 298## [K]\n", + "P = 10*10**5## [Pa]\n", + "Tc = 126.2## [K]\n", + "Pc = 34*10**5## [bar]\n", + "R = 8.314## [J/mol K]\n", + "#****************#\n", + "\n", + "a = 27*R**2*Tc**2/(64*Pc)## [Pa.m**6/square mol]\n", + "b = R*Tc/(8*Pc)## [cubic m/mol]\n", + "V = 2.425*10**(-3)## [cubic m/mol]\n", + "# From Eqn. 6.173:\n", + "Sr = R*log(P*(V - b)/(R*T))## [J/mol K]\n", + "print \"Residual Entropy is %.4f J/mol K\\n\"%(Sr)#\n", + "# From Eqn. 6.174:\n", + "Hr = P*V - R*T - (a/V)## [J/mol]\n", + "print \"Residual Enthalpy is %.4f J/mol K\\n\"%(Hr)#\n", + "Ur = -(a/V)## [J/mol]\n", + "print \"Residual Internal Energy is %.4f J/mol K\\n\"%(Ur)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 6.24 Page: 244" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 6.24 - Page: 244\n", + "\n", + "\n", + "Fugacity of iso-butane is 12.10 atm\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp\n", + "print \"Example: 6.24 - Page: 244\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "B = -4.28*10**(-4)## [cubic m/mol]\n", + "P = 15*10**5## [Pa]\n", + "T = 273 + 87## [K]\n", + "R = 8.314## [J/atm K]\n", + "#****************#\n", + "\n", + "# Z = 1 + (B*P/(R*T))\n", + "# (Z - 1)/P = B/(R*T)\n", + "# From Eqn. 6.192 (b)\n", + "# ln(f/P) = integral('(Z - 1)/P','P',0,P) = B*P/(R*T)\n", + "f = P*exp(B*P/(R*T))## [Pa]\n", + "print \"Fugacity of iso-butane is %.2f atm\"%(f/10**5)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch7_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch7_1.ipynb new file mode 100644 index 00000000..acf2dd3d --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch7_1.ipynb @@ -0,0 +1,614 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 7 - Thermodynamics to flow processes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.1 Page: 256" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.1 - Page: 256\n", + "\n", + "\n", + "Flow rate is 0.1237 m/s\n", + "\n", + "Velocity of water at the outlet is 3.938 m/s\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 7.1 - Page: 256\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# *****Data******#\n", + "d1 = 0.15## [inlet dia, m]\n", + "d2 = 0.20## [outlet dia, m]\n", + "U1 = 7## [inlet velocity, m/s]\n", + "#****************#\n", + "\n", + "# From Fig. 7.2 (Pg 256)\n", + "# At the inlet:\n", + "A1 = (pi/4)*d1**2## [square m]\n", + "# At the outlet:\n", + "A2 = (pi/4)*d2**2## [square m]\n", + "Q = A1*U1## [cubic m/s]\n", + "print \"Flow rate is %.4f m/s\\n\"%(Q)#\n", + "# Using Continuity Eqn.\n", + "# density1*U1*A1 = Density2*U2*A2\n", + "# For water: Density1 = Density2. Therefore:\n", + "U2 = A1*U1/A2#\n", + "print \"Velocity of water at the outlet is %.3f m/s\"%(U2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.2 Page: 257" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.2 - Page: 257\n", + "\n", + "\n", + "Discharge through the 10 cm pipe is 0.0942 cubic m/sec\n", + "\n", + "Average velocity in the 15 cm pipe is 6.38 m/s\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 7.2 - Page: 257\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "d1 = 0.2## [m]\n", + "d2 = 0.15## [m]\n", + "d3 = 0.1## [m]\n", + "U1 = 3## [m/s]\n", + "U2 = 2.5## [m/s]\n", + "#**************#\n", + "\n", + "# From Fig. 7.3 (Pg: 257)\n", + "# For pipe I:\n", + "A1 = (pi/4)*d1**2## [square m]\n", + "Q1 = A1*U1## [cubic m/s]\n", + "# For pipe II:\n", + "A2 = (pi/4)*d2**2## [square m]\n", + "Q2 = A2*U2## [cubic m/s]\n", + "# For pipe III:\n", + "A3 = (pi/4)*d3**2## [square m]\n", + "# From continuity Eqn.:\n", + "Q3 = Q1 - Q2## [cubic m/s]\n", + "U3 = Q3/A3## [m/s]\n", + "print \"Discharge through the 10 cm pipe is %.4f cubic m/sec\\n\"%(Q1)#\n", + "print \"Average velocity in the 15 cm pipe is %.2f m/s\"%(U3)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.3 Page: 262" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.3 - Page: 262\n", + "\n", + "\n", + "Pressure at section 2 is 5.20 bar\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 7.3 - Page: 262\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "d1 = 0.3## [m]\n", + "d2 = 0715##[m]\n", + "Q = 40/1000## [cubic m/s]\n", + "Z1 = 8## [m]\n", + "Z2 = 6## [m]\n", + "P1 = 5*10**5## [Pa]\n", + "density = 1000## [kg/cubic m]\n", + "g = 9.81## [m/square s]\n", + "#*************#\n", + "\n", + "# From Fig. 7.3 (Pg: 262)\n", + "A1 = (pi/4)*d1**2## [square m]\n", + "A2 = (pi/4)*d2**2## [square m]\n", + "U1 = Q/A1## [m/s]\n", + "U2 = Q/A2## [m/s]\n", + "# Applying Bernoulli's equations at sections 1 & 2:\n", + "P2 = ((U1**2/(2*g) + Z1 + P1/(density*g)) - (U2**2/(2*g) + Z2))*(density*g)## [Pa]\n", + "print \"Pressure at section 2 is %.2f bar\"%(P2/10**5)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.4 Page: 268" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.4 - Page: 268\n", + "\n", + "\n", + "Power Requirement of the compressor is 3.79 kW\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 7.4 - Page: 268\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P1 = 100## [kPa]\n", + "T1 = 320## [K]\n", + "P2 = 600## [kPa]\n", + "T2 = 430## [K]\n", + "m_dot = 0.03## [kg/s]\n", + "Qout = 15## [kJ/kg]\n", + "#*************#\n", + "\n", + "# The energy balance around the compressor:\n", + "# dE_System/dt = Ein - Eout\n", + "# Since it is a steady state process:\n", + "# dE_Sysytem/dt = 0\n", + "# Ein = Eout\n", + "# Win + m_dot*H1 = Qout + m_dot*H2\n", + "# Since, Qout = Qout/m\n", + "# Win = m_dot*(Qout + (H2 - H1))\n", + "# From enthalpy chart of air:\n", + "H1 = 320.20## [Enthalpy of air at 320 K, kJ/kg]\n", + "H2 = 431.43## [Enthalpy of air at 430 K, kJ/kg]\n", + "Win = m_dot*(Qout + (H2 - H1))## [kW]\n", + "print \"Power Requirement of the compressor is %.2f kW\"%(Win)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.5 Page: 269" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.5 - Page: 269\n", + "\n", + "\n", + "Work done by reversible adiabatic compression when gama = 1.4 is -96.53 J/g\n", + "\n", + "Work done by isothermal compression is -76.03 J/g\n", + "\n", + "Work done in single stage compression is -19.49 kW\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi,log\n", + "print \"Example: 7.5 - Page: 269\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P1 = 100## [kPa]\n", + "T1 = 250## [K]\n", + "Q = 0.1## [cubic m/s]\n", + "P2 = 500## [kPa]\n", + "M = 44## [g/mol]\n", + "R = 8.314## [J/mol K]\n", + "#****************#\n", + "\n", + "# Solution (a)\n", + "# Work done by reversible adiabatic compression, gama = 1.4#\n", + "gama = 1.4#\n", + "T2 = T1*(P2/P1)**((gama - 1)/gama)## [K]\n", + "Wad = (gama*R/(gama - 1))*(T1 - T2)## [J/mol]\n", + "Wad = Wad/M## [J/g]\n", + "print \"Work done by reversible adiabatic compression when gama = 1.4 is %.2f J/g\\n\"%(Wad)#\n", + "\n", + "# Solution (b)\n", + "# Work done by isothermal compression:\n", + "Wiso = - (R*T1)*log(P2/P1)## [J/mol]\n", + "Wiso = Wiso/M## [J/g]\n", + "print \"Work done by isothermal compression is %.2f J/g\\n\"%(Wiso)#\n", + "\n", + "# Solution (c)\n", + "# Work done in single stage compression, gama = 1.3:\n", + "gama = 1.3#\n", + "V1 = Q## [cubic m]\n", + "Wsingle_stage = (gama*P1*V1/(gama - 1))*(1-(P2/P1)**((gama - 1)/gama))## [kW]\n", + "print \"Work done in single stage compression is %.2f kW\"%(Wsingle_stage)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.7 Page: 274" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.7 - Page: 274\n", + "\n", + "\n", + "The mass flow rate of water is 448.70 kg/min\n", + "\n", + "The rate of heat transfer is 18777.00 kJ/min\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 7.7 - Page: 274\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "T_steam1 = 50## [OC]\n", + "T_steam2 = 30## [OC]\n", + "msteam_dot = 10## [kg/min]\n", + "T_water1 = 15## [OC]\n", + "T_water2 = 25## [OC]\n", + "#***************#\n", + "\n", + "# Solution (a)\n", + "# From the Stem Table:\n", + "H1 = 2645.9## [kJ/kg, At 50 OC]\n", + "H2 = 768.2## [kJ/kg, At 30 OC]\n", + "H3 = 62.982## [kJ/kg, At 15 OC]\n", + "H4 = 104.83## [kJ/kg, At 25 OC]\n", + "# The mass & Energy balance of the above flow gives:\n", + "mwater_dot = msteam_dot*(H1 - H2)/(H4 - H3)## [kg/min]\n", + "print \"The mass flow rate of water is %.2f kg/min\\n\"%(mwater_dot)#\n", + "\n", + "# Solution (b)\n", + "Qdot = mwater_dot*(H4 - H3)## [kJ/min]\n", + "print \"The rate of heat transfer is %.2f kJ/min\"%(Qdot)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.8 Page: 279" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.8 - Page: 279\n", + "\n", + "\n", + "Outlrt velocity is 603.3 m/s\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi,sqrt\n", + "print \"Example: 7.8 - Page: 279\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P1 = 500## [kPa]\n", + "T1 = 623## [K]\n", + "mdot = 12## [kg/s]\n", + "P2 = 500## [kPa]\n", + "T2 = 523## [K]\n", + "Qdot = -120## [kW]\n", + "H1 = 3168## [kJ/kg]\n", + "H2 = 2976## [kJ/kg]\n", + "#************#\n", + "\n", + "Q = Qdot/mdot## [kJ/kg]\n", + "# By energy balance:\n", + "# (deltaU**2/2) + g*deltaZ + deltaH = Q - Ws\n", + "# Considering negligible change in P.E., deltaZ = 0 & Ws = 0.\n", + "# (U2**2 - U1**2)/2 + deltaH = Q\n", + "deltaH = H2 - H1## [kJ/kg]\n", + "# Neglecting inlet velocity.\n", + "U2 = sqrt(2*(Q - deltaH)*1000)## [m/s]\n", + "print \"Outlrt velocity is %.1f m/s\\n\"%(U2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.9 Page: 279" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.9 - Page: 279\n", + "\n", + "\n", + "Critical Ratio is 0.53\n", + "\n", + "The discharge velocity is 1174.46 m/s\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi,sqrt\n", + "\n", + "print \"Example: 7.9 - Page: 279\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Pin = 1000## [kPa]\n", + "Tin = 600## [K]\n", + "Uin = 50## [m/s]\n", + "gama = 1.4#\n", + "M = 17## [g/mol]\n", + "R = 8314## [kJ/mol K]\n", + "MachNumber = 2#\n", + "#***************#\n", + "\n", + "# Solution (i)\n", + "# Using Eqn. (7.36):\n", + "Critical_Ratio = (2/(gama + 1))**(gama/(gama - 1))#\n", + "print \"Critical Ratio is %.2f\\n\"%(Critical_Ratio)#\n", + "\n", + "# Solution (ii)\n", + "PV_in = R*Tin/M## [square m]\n", + "Uthroat = sqrt(Uin**2 + (2*gama*PV_in/(gama - 1))*(1-(Critical_Ratio)**((gama - 1)/gama)))## [m/s]\n", + "Uout = MachNumber*Uthroat## [m/s]\n", + "print \"The discharge velocity is %.2f m/s\"%(Uout)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.10 Page: 280" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.10 - Page: 280\n", + "\n", + "\n", + "(a) Final Velocity is 901.11 m/s\n", + "\n", + "(b) Final Velocity is 1553.06 m/s\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi,sqrt\n", + "print \"Example: 7.10 - Page: 280\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P1 = 800## [kPa]\n", + "T1 = 773## [K]\n", + "H1 = 3480## [kJ/kg]\n", + "P2 = 100## [kPa]\n", + "T2 = 573## [K]\n", + "H2 = 3074## [kJ/kg]\n", + "#***************#\n", + "\n", + "# Solution (a)\n", + "# Velocity of the fluid exiting the nozzle:\n", + "# U2 = sqrt(U1**2 + 2*(H1 - H2))\n", + "# Neglecting initial velocity:\n", + "U2 = sqrt(2*(H1 - H2)*1000)## [m/s]\n", + "print \"(a) Final Velocity is %.2f m/s\\n\"%(U2)#\n", + "\n", + "# Solution (b)\n", + "U1 = 40## [m/s]\n", + "U2 = sqrt((U1**2 + 2*(H1 - H2))*1000)## [m/s]\n", + "print \"(b) Final Velocity is %.2f m/s\\n\"%(U2)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 7.11 Page: 281" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 7.11 - Page: 281\n", + "\n", + "\n", + "Mass flow rate of the steam is 17.50 kg/s\n", + "\n", + "The temperature of the steam leaving the outlet is 393.38 K\n", + "\n", + "Area of diffuser outlet is 0.28 square m\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "print \"Example: 7.11 - Page: 281\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P1 = 100## [kPa]\n", + "T1 = 200## [OC]\n", + "U1 = 190## [m/s]\n", + "A1 = 2000/10**4## [square m]\n", + "U2 = 70## [m/s]\n", + "P2 = 200## [kPa]\n", + "Qdot = 100## [kW]\n", + "V1 = 2.172## [cubic m/kg]\n", + "H1 = 2875.3## [kJ/kg]\n", + "#***************#\n", + "\n", + "# Solution (a)\n", + "mdot = U1*A1/V1## [kg/s]\n", + "print \"Mass flow rate of the steam is %.2f kg/s\\n\"%(mdot)#\n", + "\n", + "# Solution (b)\n", + "# Amount of heat transferred to the surrounding per unit steam:\n", + "Q = Qdot/mdot## [kJ/kg]\n", + "# The Enthalpy at the diffuser outlet can be estimated as:\n", + "H2 = Q + H1 + (U1**2 - U2**2)/2## [kJ/kg]\n", + "# From the steam table:\n", + "T2 = 393.38## [K]\n", + "V2 = 1.123## [cubic m/kg]\n", + "print \"The temperature of the steam leaving the outlet is %.2f K\\n\"%(T2)#\n", + "\n", + "# Solution (c)\n", + "A2 = V2*mdot/U2## [square m]\n", + "print \"Area of diffuser outlet is %.2f square m\\n\"%(A2)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch8_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch8_1.ipynb new file mode 100644 index 00000000..def9777a --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch8_1.ipynb @@ -0,0 +1,589 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 - Refrigeration and liquifaction processes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.1 Page: 297" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.1 - Page: 297\n", + "\n", + "\n", + "The coeffecient of performance of the cycle is 7.91\n", + "\n", + "The power required is 3.79 kW\n", + "\n", + "The rate of heat rejection in the room is 33.79 kW\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.1 - Page: 297\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Tl = 273 - 4## [K]\n", + "Th = 273 + 30## [K]\n", + "Ql = 30## [kW]\n", + "#*************\n", + "\n", + "# Solution (a)\n", + "COP = Tl/(Th - Tl)#\n", + "print \"The coeffecient of performance of the cycle is %.2f\\n\"%(COP)\n", + "\n", + "# Solution (b)\n", + "Wnet = Ql/COP## [kW]\n", + "print \"The power required is %.2f kW\\n\"%(Wnet)\n", + "\n", + "# Solution (c)\n", + "Qh = Wnet + Ql## [kW]\n", + "print \"The rate of heat rejection in the room is %.2f kW\"%(Qh)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.2 Page: 298" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.2 - Page: 298\n", + "\n", + "\n", + "The power consumption is 0.735 kW\n", + "\n", + "Cooling Effect produced is 2.862 kW\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.2 - Page: 298\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Tl = -10 + 273## [K]\n", + "Th = 45 + 273## [K]\n", + "Ql = 1## [ton]\n", + "#*************\n", + "\n", + "# Solution (a)\n", + "COP = Tl/(Th - Tl)#\n", + "Wnet = Ql*3.516/COP## [kW]\n", + "print \"The power consumption is %.3f kW\\n\"%(Wnet)\n", + "\n", + "# Solution (b)\n", + "Tl = -20 + 273## [K]\n", + "Th = 45 + 273## [K]\n", + "COP = Tl/(Th - Tl)#\n", + "Ql = Wnet*COP## [kW]\n", + "print \"Cooling Effect produced is %.3f kW\\n\"%(Ql)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.3 Page: 298" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.3 - Page: 298\n", + "\n", + "\n", + "Increase in percentage of work output is 22.97 %\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.3 - Page: 298\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "# From Example 8.2:\n", + "\n", + "# For refrigerated space:\n", + "# Wnet = Ql/4.78 = 0.209*Ql\n", + "\n", + "# For freezer box.\n", + "# Wnet = Ql/3.89 = 0.257*Ql\n", + "\n", + "percent = ((0.257 - 0.209)/0.209)*100#\n", + "print \"Increase in percentage of work output is %.2f %%\"%(percent)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.4 Page: 299" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.4 - Page: 299\n", + "\n", + "\n", + "Coeffecient of performance of Carnot Heat Pump is 12.38\n", + "\n", + "Power input can be estimated as 2.02 kW\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.4 - Page: 299\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Th = 273 + 24## [K]\n", + "Tl = 0 + 273## [K]\n", + "Qh = 25## [kW]\n", + "#*************\n", + "\n", + "COP = Th/(Th - Tl)#\n", + "Wnet = Qh/COP## [kW]\n", + "print \"Coeffecient of performance of Carnot Heat Pump is %.2f\\n\"%(COP)#\n", + "print \"Power input can be estimated as %.2f kW\\n\"%(Wnet)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.5 Page: 299" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.5 - Page: 299\n", + "\n", + "\n", + "Minimum Power input required is 1.669 kW\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.5 - Page: 299\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Tl = -2 + 273## [K]\n", + "Th = 20 + 273## [K]\n", + "Qh = 80000## [kJ/h]\n", + "#*************\n", + "\n", + "Ql = Qh*Tl/Th## [kJ/h]\n", + "Wnet = Qh - Ql## [kJ/h]\n", + "print \"Minimum Power input required is %.3f kW\\n\"%(Wnet/3600)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.6 Page: 303" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.6 - Page: 303\n", + "\n", + "\n", + "Enthalpy of saturated vapour is 6.65\n", + "\n", + "Refrigerating Effect is 113 kJ/kg\n", + "\n", + "The COP of an ideal Carnot refrigerator is 6.83\n", + "\n", + "Work done by the compression is 17.00 kJ/kg\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.6 - Page: 303\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Tl = 273## [K]\n", + "Th = 313## [K]\n", + "H1 = 187## [Enthalpy of saturated vapour at 273 K, kJ/kg]\n", + "H3 = 74## [Enthalpy of saturated liquid at 313 K,kJ/kg]\n", + "H4 = H3## [kJ/kg]\n", + "H2 = 204## [Enthalpy of Supersaturated Vapour at 273 K, kJ/kg]\n", + "#****************\n", + "\n", + "# Solution (i)\n", + "# COP = Ql/Wnet#\n", + "COP = ((H1 - H4)/(H2 - H1))#\n", + "print \"Enthalpy of saturated vapour is %.2f\\n\"%(COP)\n", + "\n", + "# Solution (ii)\n", + "Ref_Effect = H1 - H4## [kJ/kg]\n", + "print \"Refrigerating Effect is %d kJ/kg\\n\"%(Ref_Effect)\n", + "\n", + "# Solution (iii)\n", + "COP = Tl/(Th - Tl)#\n", + "print \"The COP of an ideal Carnot refrigerator is %.2f\\n\"%(COP)\n", + "\n", + "# Solution (iv)\n", + "W = H2 - H1## [kJ/kg]\n", + "print \"Work done by the compression is %.2f kJ/kg\\n\"%(W)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.7 Page: 304" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.7 - Page: 304\n", + "\n", + "\n", + "Amount of heat removed from cold space is 9.18 kW\n", + "\n", + "THe power input required is 1.92 kW\n", + "\n", + "COP of refrigeration of cycle is 4.77\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.7 - Page: 304\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "P1 = 0.18## [MPa]\n", + "T1 = -10 + 273## [K]\n", + "mdot = 0.06## [kg/s]\n", + "P2 = 1## [MPa]\n", + "T2 = 45 + 273## [K]\n", + "T = 273 + 29## [K]\n", + "P = 0.75## [MPa]\n", + "H1 = 245.16## [Enthalpy of superheated vapour at -10 OC & 0.18 MPa, kJ/kg]\n", + "H2 = 277.2## [Enthalpy of superheated vapour at 45 OC & 1 MPa, kJ/kg]\n", + "H3 = 92.22## [Enthalpy of saturated liquid at 29 OC & 0.75 MPa, kJ/kg]\n", + "H4 = H3## [kJ/kg]\n", + "#*************\n", + "\n", + "# Solution (a)\n", + "Ql = mdot*(H1 - H4)## [kW]\n", + "print \"Amount of heat removed from cold space is %.2f kW\\n\"%(Ql)\n", + "\n", + "# Solution (b)\n", + "Wnet = mdot*(H2 - H1)## [kW]\n", + "print \"THe power input required is %.2f kW\\n\"%(Wnet)\n", + "\n", + "# Solution (c)\n", + "COP = Ql/Wnet#\n", + "print \"COP of refrigeration of cycle is %.2f\\n\"%(COP)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.8 Page: 305" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.8 - Page: 305\n", + "\n", + "\n", + "Mass flow rate of the refrigerant is 0.1546 kg/s\n", + "\n", + "Power consumption in the compression is 4.57 kW\n", + "\n", + "The amount of heat rejected in the condenser is 22.15 kW\n", + "\n", + "Relative COP is 0.78\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.8 - Page: 305\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Ql = 5## [tons]\n", + "Tl = -10 + 273## [K]\n", + "Th = 35 + 273## [K]\n", + "eta = 0.85#\n", + "H1 = 183.2## [Enthalpy of saturated vapour at 263 K, kJ/kg]\n", + "H2 = 208.3## [Enthalpy of superheated vapour, kJ/kg]\n", + "H3 = 69.5## [Enthalpy of saturated vapour at 308 K, kJ/kg]\n", + "H4 = H3## [kJ/kg]\n", + "#***************\n", + "\n", + "# Solution (a)\n", + "# Mass flow rate:\n", + "Ql = Ql*3.516## [kW]\n", + "mdot = Ql/(H1 - H4)## [kW]\n", + "print \"Mass flow rate of the refrigerant is %.4f kg/s\\n\"%(mdot)\n", + "\n", + "# Solution (b)\n", + "W = H2 - H1## [kJ/kg]\n", + "Wnet = W*mdot/eta## [kW]\n", + "print \"Power consumption in the compression is %.2f kW\\n\"%(Wnet)\n", + "\n", + "# Solution (c)\n", + "Qh = Ql + Wnet## [kW]\n", + "print \"The amount of heat rejected in the condenser is %.2f kW\\n\"%(Qh)\n", + "\n", + "# Solution (d)\n", + "COP_VapourCompression = (H1 - H4)/(H2 - H1)#\n", + "COP_Carnot = Tl/(Th - Tl)#\n", + "COP_relative = COP_VapourCompression/COP_Carnot#\n", + "print \"Relative COP is %.2f\\n\"%(COP_relative)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.9 Page: 308" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.9 - Page: 308\n", + "\n", + "\n", + "Claim is Valid and reasonable\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.9 - Page: 308\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Th = 273 + 125## [K]\n", + "Tl = 273 - 5## [K]\n", + "Ts = 273 + 28## [K]\n", + "COP = 2#\n", + "#*************\n", + "\n", + "COP_absorption = (Tl/(Ts - Tl))*((Th - Ts)/Th)#\n", + "if ((COP - 0.1) < COP_absorption) or ((COP + 0.1) > COP_absorption):\n", + " print \"Claim is Valid and reasonable\"\n", + "else:\n", + " print \"Claim is not Valid\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 8.10 Page: 313" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 8.10 - Page: 313\n", + "\n", + "\n", + "COP of Air Refrigeration System is 2.06\n", + "\n", + "Mass flow rate of the refrigerant is 1279.07 kg/h\n", + "\n", + "The work of Compression is 26.13 kW\n", + "\n", + "The work of expansion is 17.58 kW\n", + "\n", + "Net work of the system is 8.55 kW\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 8.10 - Page: 313\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Q = 5## [tons]\n", + "T1 = 253## [Temperature of the working fluid leaving the evaporator, K]\n", + "T2 = 303## [Temperature of the working fluid leaving the evaporator, K]\n", + "T3 = 303## [K]\n", + "Pressure_Ratio = 4#\n", + "C = 1.008## [kJ/kg]\n", + "gama = 1.4#\n", + "#**************\n", + "\n", + "# Solution (a)\n", + "T2 = T1*((Pressure_Ratio)**((gama - 1)/gama))## [K]\n", + "T2 = T1*(Pressure_Ratio)**((gama - 1)/gama)## [K]\n", + "T4 = T3/((Pressure_Ratio)**((gama - 1)/gama))## [K]\n", + "COP = T1/(T2 - T1)#\n", + "print \"COP of Air Refrigeration System is %.2f\\n\"%(COP)\n", + "\n", + "# Solution (b)\n", + "mdot = Q*12660/(C*(T1 - T4))## [kg/h]\n", + "print \"Mass flow rate of the refrigerant is %.2f kg/h\\n\"%(mdot)\n", + "\n", + "# Solution (c)\n", + "Wcompression = mdot*C*(T2 - T3)## [kJ/h]\n", + "print \"The work of Compression is %.2f kW\\n\"%(Wcompression/3600)\n", + "\n", + "# Solution (d)\n", + "Wexpansion = mdot*C*(T1 - T4)## [kJ/h]\n", + "print \"The work of expansion is %.2f kW\\n\"%(Wexpansion/3600)\n", + "\n", + "# Solution (e)\n", + "Wnet = Wcompression - Wexpansion## [kJ/h]\n", + "print \"Net work of the system is %.2f kW\\n\"%(Wnet/3600)#" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch9_1.ipynb b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch9_1.ipynb new file mode 100644 index 00000000..944b1ab1 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch9_1.ipynb @@ -0,0 +1,1105 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 9 - Solutoin thermodynamic properties" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.1 Page: 338" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.1 - Page: 338\n", + "\n", + "\n", + "Partial molar volume of water is 2.76e-05 cubic m/mol\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 9.1 - Page: 338\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "V1_bar = 52.37*10**(-6)## [partial molar volume of ethanol, cubic m/mol]\n", + "y1 = 0.5## [mole fraction of ethanol]\n", + "Density = 800.21## [kg/cubic m]\n", + "M1 = 46*10**(-3)## #[Molecular wt. of ethanol,kg/mol]\n", + "M2 = 18*10**(-3)## [Molecular wt. of water,kg/cmol]\n", + "#*************#\n", + "\n", + "y2 = 1 - y1## [mole fraction of water]\n", + "M = y1*M1 + y2*M2## [Molecular wt. of mixture, kg/mol]\n", + "V = M/Density## [Volume of mixture, cubic m/mol]\n", + "# From Eqn. 9.9:\n", + "V2_bar = (V - y1*V1_bar)/y2## [partial molar volume of water, cubic m/mol]\n", + "print \"Partial molar volume of water is %.2e cubic m/mol\\n\"%(V2_bar)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.2 Page: 338" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.2 - Page: 338\n", + "\n", + "\n", + "Volume of alcohol required is 1.223 cubic m while volume of water required is 0.842 cubic m\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 9.2 - Page: 338\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Vol = 2## [Volume of the mixture, cubic m/mol]\n", + "y1 = 0.4## [mole fraction of alcohol, cubic m/mol]\n", + "V1_bar = 38.3*10**(-6)## [partial molar volume of alcohol, cubic m/mol]\n", + "V2_bar = 17.2*10**(-6)## [partial molar volume of water, cubic m/mol]\n", + "V1 = 39.21*10**(-6)## [molar volume of alcohol, cubic m/mol]\n", + "V2 = 18*10**(-6)## [molar volume of water, cubic m/mol]\n", + "#*************#\n", + "\n", + "# From Eqn. 9.9:\n", + "V = y1*V1_bar + (1 - y1)*V2_bar## [molar volume of the solution]\n", + "n = Vol/V## [number of moles of solution]\n", + "n1 = y1*n## [number of moles of alcohol required]\n", + "n2 = (1 - y1)*n## [number of moles of water required]\n", + "V_alcohol = V1*n1## [Volume of alcohol required, cubic m]\n", + "V_water = V2*n2## [Volume of water required, cubic m]\n", + "print \"Volume of alcohol required is %.3f cubic m while volume of water required is %.3f cubic m\\n\"%(V_alcohol,V_water)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.3 Page: 339" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.3 - Page: 339\n", + "\n", + "\n", + "Mass of water added is 1138 g\n", + "\n", + "The volume of vodka obtained after conversion is 3047 cubic cm\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example: 9.3 - Page: 339\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Vol = 2000## [cubic cm]\n", + "y1_1 = 0.96## [mass fraction of ethanol in laboratory alcohol]\n", + "y2_1 = 0.04## [mass fraction of water in laboratory alcohol]\n", + "y1_2 = 0.56## [mass fracion of ethanol in vodka]\n", + "y2_2 = 0.44## [mass fraction of water in vodka]\n", + "Vbar_water1 = 0.816## [cubic cm/g]\n", + "Vbar_ethanol1 = 1.273## [cubic cm/g]\n", + "Vbar_water2 = 0.953## [cubic cm/g]\n", + "Vbar_ethanol2 = 1.243## [cubic cm/g]\n", + "Density_water = 0.997## [cubic cm/g]\n", + "#***************#\n", + "\n", + "# Solution (i)\n", + "# From Eqn 9.9\n", + "Va = y1_1*Vbar_ethanol1 + y2_1*Vbar_water1## [Volume of laboratory alcohol, cubic cm/g]\n", + "mass = Vol/Va## [g]\n", + "# Let Mw be the mass of water added in laboratory alcohol.\n", + "# Material balance on ethanol:\n", + "Mw = mass*y1_1/y1_2 - mass## [g]\n", + "Vw = Mw/Density_water## [Volume of water added, cubic cm]\n", + "print \"Mass of water added is %d g\\n\"%(Mw)#\n", + "\n", + "# Solution (ii)\n", + "Mv = mass + Mw## [Mass of vodka, g]\n", + "Vv = y1_2*Vbar_ethanol2 + y2_2*Vbar_water2## [Volume of ethanol, cubic cm/g]\n", + "V_vodka = Vv*Mv## [Volume of vodka obtained after conversion, cubic cm]\n", + "print \"The volume of vodka obtained after conversion is %.d cubic cm\\n\"%(V_vodka)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.4 Page: 339" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.4 - Page: 339\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 9.4 on page 339 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 9.4 - Page: 339\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 9.4 on page number 339 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 9.4 on page 339 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.5 Page: 340" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.5 - Page: 340\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 9.5 on page 340 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 9.5 - Page: 340\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 9.5 on page number 340 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 9.5 on page 340 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.6 Page: 341" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example - 9.6 and Page number - 341\n", + "\n", + "\n", + "The expression for the partial molar volume of methanol(2) is\n", + "V2_bar = V2 + a*x_1**(2) [cubic cm/mol]\n", + "\n", + "\n", + "The partial molar volume of methanol at infinite dilution is 37.5 cubic cm/mol\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "print \"Example - 9.6 and Page number - 341\\n\\n\"\n", + "\n", + "#Given\n", + "T = 25+273.15## [K]\n", + "P = 1## [atm]\n", + "# Component 1 = water\n", + "# Component 2 = methanol\n", + "a = -3.2## [cubic cm/mol] A constant\n", + "V2 = 40.7## [cubic cm/mol] Molar volume of pure component 2 (methanol)\n", + "# V1_bar = 18.1 + a*x_2**(2)\n", + "\n", + "# From Gibbs-Duhem equation at constant temperature and pressure we have\n", + "# x_1*dV1_bar + x_2*dV2_bar = 0\n", + "# dV2_bar = -(x_1/x_2)*dV1_bar = -(x_1/x_2)*a*2*x_2*dx_2 = -2*a*x_1*dx_2 = 2*a*x_1*dx_1\n", + "\n", + "# At x_1 = 0: x_2 = 1 and thus V2_bar = V2\n", + "# Integrating the above equation from x_1 = 0 to x_1 in the RHS, and from V2_bar = V2 to V2 in the LHS, we get\n", + "# V2_bar = V2 + a*x_1**(2) - Molar volume of component 2(methanol) in the mixture \n", + "\n", + "print \"The expression for the partial molar volume of methanol(2) is\\nV2_bar = V2 + a*x_1**(2) [cubic cm/mol]\\n\\n\"\n", + "\n", + "# At infinite dilution, x_2 approach 0 and thus x_1 approach 1, therefore\n", + "x_1 = 1## Mole fraction of component 1(water) at infinite dilution\n", + "V2_bar_infinite = V2 + a*(x_1**(2))##[cubic cm/mol]\n", + "\n", + "print \"The partial molar volume of methanol at infinite dilution is %.1f cubic cm/mol\"%(V2_bar_infinite)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.7 Page: 342" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.7 - Page: 342\n", + "\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f6e31740890>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For X1 = 0.5\n", + "\n", + "Partial molar volume of component 1 is 3.38e-05 cubic m/mol\n", + "\n", + "Partial molar volume of component 2 is 1.70e-05 cubic m/mol\n", + "\n", + "\n", + "\n", + "For X2 = 0.75\n", + "\n", + "Partial molar volume of component 1 is 3.66e-05 cubic m/mol\n", + "\n", + "Partial molar volume of component 2 is 1.24e-05 cubic m/mol\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\nrkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f6e316a6190>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import mat\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, title, xlabel, ylabel, show, grid\n", + "\n", + "\n", + "print \"Example: 9.7 - Page: 342\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "# Data = [X1 V*10**6(cubic m/mol)]#\n", + "\n", + "Data = mat([[0, 20],[0.2, 21.5],[0.4, 24.0],[0.6, 27.4],[0.8, 32.0],[1, 40]])\n", + "#************#\n", + "plot(Data[:,0],Data[:,1])\n", + "title(\"Example 9.7\")\n", + "xlabel(\"Mole fraction\")\n", + "ylabel(\"Molar Volume*10**(6)\")\n", + "grid()#\n", + "show()\n", + "# Solution (i)\n", + "print \"For X1 = 0.5\\n\"\n", + "# A tangent is drawn to the curve at X1 = 0.5.\n", + "# The intercept at X2 = 0 or X1 = 1, gives V1_bar.\n", + "V1_bar1 = 33.8*10**(-6)## [cubic m/mol]\n", + "# The intercept at X2 = 1 or X1 = 0, gives V2_bar.\n", + "V2_bar1 = 17*10**(-6)## [cubic m/mol]\n", + "print \"Partial molar volume of component 1 is %.2e cubic m/mol\\n\"%(V1_bar1)#\n", + "print \"Partial molar volume of component 2 is %.2e cubic m/mol\\n\"%(V2_bar1)#\n", + "print \"\\n\"\n", + "\n", + "# Solution (ii)\n", + "print \"For X2 = 0.75\\n\"\n", + "# A tangent is drawn to the curve at X1 = 0.75.\n", + "# The intercept at X2 = 0 or X1 = 1, gives V1_bar.\n", + "V1_bar2 = 36.6*10**(-6)## [cubic m/mol]\n", + "# The intercept at X2 = 1 or X1 = 0, gives V2_bar.\n", + "V2_bar2 = 12.4*10**(-6)## [cubic m/mol]\n", + "point1 = mat([[0, V1_bar1],[ 1 ,V2_bar1]])\n", + "point2 = mat([[0, V1_bar2],[1, V2_bar2]])\n", + "plot(point1[:,0],point1[:,1],point2[:,0],point2[:,1])\n", + "#legend(\"X1 = 0.5\"%(\"X1 = 0.75\"\n", + "xlabel(\"Mole fraction\")\n", + "ylabel(\"Molar Volume\")\n", + "print \"Partial molar volume of component 1 is %.2e cubic m/mol\\n\"%(V1_bar2)\n", + "print \"Partial molar volume of component 2 is %.2e cubic m/mol\\n\"%(V2_bar2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.8 Page: 352" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.8 - Page: 352\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 9.8 on page 352 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 9.8 - Page: 352\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 9.8 on page number 352 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 9.8 on page 352 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.9 Page: 352" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.9 - Page: 352\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 9.9 on page 352 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 9.9 - Page: 352\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 9.9 on page number 352 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 9.9 on page 352 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.10 Page: 354" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.10 - Page: 354\n", + "\n", + "\n", + "Fugacity of the gaseous mixture is 40.095 bar\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "print \"Example: 9.10 - Page: 354\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "x1 = 0.3## [mole fraction of component 1 in the mixture]\n", + "x2 = 0.7## [mole fraction of component 2 in the mixture]\n", + "phi1 = 0.7## [fugacity coeffecient of component 1 in the mixture]\n", + "phi2 = 0.85## [fugacity coeffecient of component 2 in the mixture]\n", + "P = 50## [bar]\n", + "T = 273 + 100## [K]\n", + "#*************#\n", + "\n", + "phi = exp(x1*log(phi1) + x2*log(phi2))## [fugacity coeffecient of the mixture]\n", + "f = phi*P## [bar]\n", + "print \"Fugacity of the gaseous mixture is %.3f bar\"%(f)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.11 Page: 354" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.11 - Page: 354\n", + "\n", + "\n", + "Fugacity of the gaseous mixture is 45.479 bar\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "print \"Example: 9.11 - Page: 354\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "x1 = 0.3## [mole fraction of hydrogen in the mixture]\n", + "x2 = 0.25## [mole fraction of nitrogen in the mixture]\n", + "x3 = 0.45## [mole fraction of oxygen in the mixture]\n", + "phi1 = 0.7## [fugacity coeffecient of oxygen in the mixture]\n", + "phi2 = 0.85## [fugacity coeffecient of nitrogen in the mixture]\n", + "phi3 = 0.75## [fugacity coeffecient of oxygen in the mixture]\n", + "P = 60## [bar]\n", + "T = 273 + 150## [K]\n", + "#***********#\n", + "\n", + "phi = exp(x1*log(phi1) + x2*log(phi2) + x3*log(phi3))## [fugacity coeffecient of the mixture]\n", + "f = phi*P## [bar]\n", + "print \"Fugacity of the gaseous mixture is %.3f bar\"%(f)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.12 Page: 356" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.12 - Page: 356\n", + "\n", + "\n", + "Fugacity of liquid water is 1.0012 bar\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "print \"Example: 9.12 - Page: 356\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "T = 372.12## [K]\n", + "Psat = 100## [kPa]\n", + "P = 300# #[kPa]\n", + "Vspecific = 1.043*10**(-3)##[cubic m/kg]\n", + "M = 18*10**(-3)## [molecular weight of water, kg/mol]\n", + "R = 8.314## [J/mol K]\n", + "#***************#\n", + "\n", + "Psat = Psat/100## [bar]\n", + "P = P/100## [bar]\n", + "Vl = Vspecific*M## [cubic m/mol]\n", + "# Vapour is assumed to be like an ideal gas.\n", + "phi = 1#\n", + "fsat = Psat*phi## [bar]\n", + "fl = fsat*exp(Vl*(P - Psat)*10**5/(R*T))## [bar]\n", + "print \"Fugacity of liquid water is %.4f bar\"%(fl)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.13 Page: 357" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.13 - Page: 357\n", + "\n", + "\n", + "The fugacity of the liquid water is 4.2051 bar\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "print \"Example: 9.13 - Page: 357\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Vl = 90.45*10**(-6)## [molar volume of liquid butadiene, cubic m/mol]\n", + "fsat = 4.12## [bar]\n", + "P = 10## [bar]\n", + "Psat = 4.12## [bar]\n", + "T = 313## [K]\n", + "R = 8.314## [J/mol K]\n", + "#************#\n", + "\n", + "fl = fsat*exp(Vl*(P - Psat)*10**5/(R*T))## [bar]\n", + "print \"The fugacity of the liquid water is %.4f bar\"%(fl)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.14 Page: 357" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.14 - Page: 357\n", + "\n", + "\n", + "The fugacity of the gas is 1411 atm \n", + "\n", + "The fugacity coeffecient of the gas is 1.411 atm\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "from sympy.mpmath import quad\n", + "print \"Example: 9.14 - Page: 357\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "b = 0.0391## [cubic dm/mol]\n", + "P1 = 1000## [atm]\n", + "T = 1000 + 273## [K]\n", + "R = 0.0892## [L bar/K mol]\n", + "#deff('[Vreal] = f1(P)','Vreal = R*T/P + b')#\n", + "#deff('[Videal] = f2(P)','Videal = R*T/P')#\n", + "def f1(P):\n", + " Vreal = R*T/P + b\n", + " return Vreal\n", + "\n", + "def f2(P):\n", + " Videal = R*T/P\n", + " return Videal\n", + "\n", + "def f(P):\n", + " f12 = f1(P)-f2(P)\n", + " return f12\n", + "\n", + "#**************#\n", + "\n", + "# We know that:\n", + "# RTlog(f/P) = integral('Vreal - Videal',P,0,P)\n", + "\n", + "\n", + "f = P1*exp((1/(R*T))*quad(f,[0,P1]))## [atm]\n", + "phi = f/P1#\n", + "print \"The fugacity of the gas is %d atm \\n\"%(f)#\n", + "print \"The fugacity coeffecient of the gas is %.3f atm\"%(phi)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.15 Page: 359" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.15 - Page: 359\n", + "\n", + "\n", + "Fugacity of liquid butadiene at 313 K & 10 bar is 8.109 bar\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "print \"Example: 9.15 - Page: 359\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "Vl = 73*10**(-6)## [cubic m/mol]\n", + "P = 275## [bar]\n", + "Psat = 4.360## [bar]\n", + "T = 110 + 273## [K]\n", + "R = 8.314## [J/mol K]\n", + "#**************#\n", + "\n", + "# Acetone vapour is assumed to behave like ideal gas.\n", + "phi = 1#\n", + "fsat = Psat## [bar]\n", + "fl = fsat*exp(Vl*(P - Psat)*10**5/(R*T))## [bar]\n", + "print \"Fugacity of liquid butadiene at 313 K & 10 bar is %.3f bar\"%(fl)# " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.16 Page: 362" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.16 - Page: 362\n", + "\n", + "\n", + "The entropy change of mixiong is 0.749 cal/K mol\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "print \"Example: 9.16 - Page: 362\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "V1 = 2.8## [Volume of Oxygen, L]\n", + "V2 = 19.6## [Volume of hydrogen, L]\n", + "R = 1.987## [cal/K mol]\n", + "#**************#\n", + "\n", + "n1 = V1/22.4## [moles of Oxygen]\n", + "n2 = V2/22.4## [moles of Hydrogen]\n", + "n = n1 + n2## [total number of moles]\n", + "x1 = n1/n## [mole fraction of Oxygen]\n", + "x2 = n2/n## [mole fraction of Hydrogen]\n", + "# From Eqn. 9.88:\n", + "deltaS_mix = - (R*(x1*log(x1) + x2*log(x2)))## [cal/K mol]\n", + "print \"The entropy change of mixiong is %.3f cal/K mol\"%(deltaS_mix)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.17 Page: 363" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.17 - Page: 363\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 9.17 on page 363 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 9.17 - Page: 363\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 9.17 on page number 363 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 9.17 on page 363 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.18 Page: 364" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.18 - Page: 364\n", + "\n", + "\n", + "The free energy change of mixing is -1513.46 J\n", + "\n", + "The enthalpy change of mixing is 0 J\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "\n", + "print \"Example: 9.18 - Page: 364\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "n1 = 0.7## [moles of helium]\n", + "n2 = 0.3## [moles of argon]\n", + "R = 8.314## [J/mol K]\n", + "T = 273 + 25## [K]\n", + "#******************#\n", + "\n", + "n = n1 + n2## [total moles]\n", + "x1 = n1/n## [mole fraction of helium]\n", + "x2 = n2/n## [mole fraction of argon]\n", + "deltaG_mix = n*R*T*(x1*log(x1) + x2*log(x2))## [J]\n", + "print \"The free energy change of mixing is %.2f J\\n\"%(deltaG_mix)#\n", + "\n", + "# Since the gases are ideal:\n", + "deltaH_mix = 0## [J]\n", + "print \"The enthalpy change of mixing is %d J\\n\"%(deltaH_mix)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.19 Page: 364" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.19 - Page: 364\n", + "\n", + "\n", + "Free Energy change of mixing is -15.37 J\n", + "\n", + "Enthalpy change in mixing is 0.00 J\n", + "\n", + "Entropy Change in mixing is 0.052 J/K\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import exp, log\n", + "\n", + "print \"Example: 9.19 - Page: 364\\n\\n\"\n", + "\n", + "# Solution\n", + "\n", + "#*****Data******#\n", + "V = 20## [Volume of vessel, L]\n", + "V1 = 12## [Volume of Hydrogen, L]\n", + "V2 = 10## [Volume of Nitrogen, L]\n", + "P = 1## [atm]\n", + "T = 298## [K]\n", + "P1 = 1## [atm]\n", + "P2 = 1## [atm]\n", + "R = 0.082## [L atm/K mol]\n", + "#************#\n", + "\n", + "n1 = P1*V1/(R*T)## [number of moles of Hydrogen]\n", + "n2 = P2*V2/(R*T)## [number of moles of Nitrogen]\n", + "n = n1 + n2## [total number of moles]\n", + "Pfinal = n*R*T/V## [atm]\n", + "p1 = Pfinal*n1## [partial pressure of Hydrogen, atm]\n", + "p2 = Pfinal*n2## [partial pressure of Nitrogen, atm]\n", + "deltaG_mix = R*T*(n1*log(p1/P1) + n2*log(p2/P2))## [J]\n", + "print \"Free Energy change of mixing is %.2f J\\n\"%(deltaG_mix)#\n", + "\n", + "# Since mixing is ideal:\n", + "deltaH_mix = 0## [J]\n", + "print \"Enthalpy change in mixing is %.2f J\\n\"%(deltaH_mix)#\n", + "\n", + "deltaS_mix = - (deltaG_mix/T)## [J/K]\n", + "print \"Entropy Change in mixing is %.3f J/K\\n\"%(deltaS_mix)#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.20 Page: 367" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.20 - Page: 367\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 9.20 on page 367 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 9.20 - Page: 367\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 9.20 on page number 367 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 9.20 on page 367 of the book.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example: 9.21 Page: 373" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example: 9.21 - Page: 373\n", + "\n", + "\n", + " Mathematics is involved in proving but just that no numerical computations are involved.\n", + "\n", + "\n", + " For prove refer to this example 9.21 on page 373 of the book.\n" + ] + } + ], + "source": [ + "print \"Example: 9.21 - Page: 373\\n\\n\"\n", + "\n", + "# Mathematics is involved in proving but just that no numerical computations are involved.\n", + "# For prove refer to this example 9.21 on page number 373 of the book.\n", + "\n", + "print \" Mathematics is involved in proving but just that no numerical computations are involved.\\n\\n\"\n", + "print \" For prove refer to this example 9.21 on page 373 of the book.\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9MolFracNMolVol_1.png b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9MolFracNMolVol_1.png Binary files differnew file mode 100644 index 00000000..7c3c13e4 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9MolFracNMolVol_1.png diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9_molarFracNMolVol_1.png b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9_molarFracNMolVol_1.png Binary files differnew file mode 100644 index 00000000..51237d39 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9_molarFracNMolVol_1.png diff --git a/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/ch10_consistency_1.png b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/ch10_consistency_1.png Binary files differnew file mode 100644 index 00000000..c8c54b38 --- /dev/null +++ b/Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/ch10_consistency_1.png diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_1.ipynb new file mode 100644 index 00000000..2ea27f9a --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_1.ipynb @@ -0,0 +1,227 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 10 ACTIVE MICROWAVE CIRCUITS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:10.1 page.no:554" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the equivalent noise temperature in kelwin = 170.074792027\n", + "the total noise power out of the amplifier in dBm will be = -60.6767683732\n" + ] + } + ], + "source": [ + "# program to determine the equivalent noise temperature of the amplifier .\n", + "from math import log10\n", + "\n", + "T1=290;P1=-62;G=100;B=10**9;k=1.38*10**-23;\n", + "T2 =77; P2 = -64.7; Ts =450;\n", + "Y=P1-P2; # Yfactor in db.\n", + "Y=10**0.27;\n", + "Te=(T1-Y*T2)/(Y-1);\n", + "Po=G*k*B*(Ts+Te);\n", + "Po=10*log10(Po/0.001); #/ converting in to dBm.\n", + "print \"the equivalent noise temperature in kelwin = \",Te\n", + "print \"the total noise power out of the amplifier in dBm will be = \",Po" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:10.2 page.no:557" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the dynamic range in dB = 67.467\n" + ] + } + ], + "source": [ + "# program to find the dynamic range of the amplifier .\n", + "from math import log10\n", + "\n", + "G=20;F=3.5; # in db.\n", + "k=1.38*10**-23;To=290;B=2*10**9;\n", + "# output noise power => No=G⇤F⇤k⇤To⇤B.so in dbm it will be\n", + "No=20+3.5+10*log10((k*To*B)/0.001);\n", + "DR=10-No;\n", + "print \"the dynamic range in dB = %.3f\"%DR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:10.3 page.no:558" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the noise figure of the cascade in dB = 2.0\n", + "the noise figure of the amplifier in dB = 0.0\n", + "the noise figure of the line in dB = 2.0\n" + ] + } + ], + "source": [ + "# program to calculate the noise figure ig anteena is replaced by amplifier .\n", + "from math import log10\n", + "\n", + "L=10**0.2;T=300;To=290;Te=150;\n", + "Fl=1+(L-1.)*(T/To);\n", + "Fld=10.*log10(Fl); # converting in to dBm.\n", + "Fa=1.+(Te/To)\n", + "Fad=10.*log10(Fa);# converting in to dBm.\n", + "Fcas=Fl+L*(Fa-1.);\n", + "Fcasd=10*log10(Fcas);# converting in to dBm.\n", + "print \"the noise figure of the cascade in dB = \",Fcasd\n", + "print \"the noise figure of the amplifier in dB = \",Fad\n", + "print \"the noise figure of the line in dB = \",Fld" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:10.4 page.no:562" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "junction resistance for Io=0, in ohm = 250000.0\n", + "junction resistance for Io=0, in ohm = 415.973\n" + ] + } + ], + "source": [ + "#program to calculate the impedence of the diode. 70\n", + "\n", + "Cp=0.1e-12;Lp=2e-9;Cj=0.15e-12;Rs=10.;Is =0.1e-6;\n", + "Io1=0.;Io2=60e-6;alpha=0.04e3;\n", + "R1j=1./(alpha*(Io1+Is)); # for Io=0.\n", + "R2j=1./(alpha*(Io2+Is)); # for Io=60 mA.\n", + "print \"junction resistance for Io=0, in ohm = \",R1j \n", + "print \"junction resistance for Io=0, in ohm = %.3f\"%R2j" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:10.5 page.no:579" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for series circuit = 0.49\n", + "for series circuit = 10.16\n", + "for shunt circuit = 0.03\n", + "for shunt circuit = 7.62\n" + ] + } + ], + "source": [ + "# program to obtain the greatest ratio of off to on attenuation .\n", + "from math import pi,log10\n", + "from sympy import I\n", + "\n", + "Cj=0.1*10**-12;Rr=1;Rf=5;\n", + "Li=0.4*10**-9;f=5*10**9;Zo=50;\n", + "w=2*pi*f;\n", + "Zr=Rr+I*((w*Li)-(1/(w*Cj)));\n", + "Zf=Rf+(I*w*Li);\n", + "# for series circuit .\n", + "ILon=-20*log10(abs((2*Zo)/(2*Zo+Zf)));\n", + "ILoff=-20*log10(abs((2*Zo)/(2*Zo+Zr)));\n", + "# for shunt circuit .\n", + "ILon1=-20*log10(abs((2*Zr)/(2*Zr+Zo)));\n", + "ILoff1=-20*log10(abs((2*Zf)/(2*Zf+Zo)));\n", + "print \"for series circuit = %.2f\"%ILon\n", + "print \"for series circuit = %.2f\"%ILoff\n", + "print \"for shunt circuit = %.2f\"%ILon1\n", + "print \"for shunt circuit = %.2f\"%ILoff1" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_1.ipynb new file mode 100644 index 00000000..14dcac47 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_1.ipynb @@ -0,0 +1,264 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 12 INTRODUCTION TO MICROWAVE SYSTEMS" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.1 page.no:660" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the radiation intensity is given by = Io*ko*l*no*r*exp(-I*ko*r)*exp(I*conjugate(ko)*conjugate(r))*sin(theta)*sin(conjugate(theta))*conjugate(Io)*conjugate(ko)*conjugate(l)/(16*pi*conjugate(pi)*conjugate(r))\n", + "directivity is given by = 3/2\n", + "the effective area of the dipole = 3*lamda**2/(8*pi)\n" + ] + } + ], + "source": [ + "#program to compute directivity , radiation intensity,F,the effective area.\n", + "from sympy import symbols,conjugate,integrate,sin,I,exp\n", + "\n", + "Etheta,Hphi,ko,no,Io,l,r,pi,theta,C,phi,lamda=symbols('Etheta,Hphi,ko,no,Io,l,r,pi,theta,C,phi,lamda')\n", + "Etheta=((I*ko*no*Io*l)/(4*pi*r))*sin(theta)*exp(-I*ko*r);\n", + "Hphi=((I*ko*Io*l)/(4*pi*r))*sin(theta)*exp(-I*ko*r);\n", + "F=(r**2)*(Etheta*conjugate(Hphi));\n", + "Prad=C*integrate(integrate(sin(theta)**3,(theta,0,pi)),(phi,0,2*pi));\n", + "Prad=8*pi*C/3; \n", + "D=4*pi*C/Prad;\n", + "Ac=((lamda**2)*D)/(4*pi);\n", + "print \"the radiation intensity is given by = \",F\n", + "print \"directivity is given by = \",D\n", + "print \"the effective area of the dipole = \",Ac" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.2 page.no:666" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "received power in dBm will be = -75.31\n" + ] + } + ], + "source": [ + "# program to find the reactive power in dbm.\n", + "from math import pi,log10\n", + "\n", + "Pt=120;f=6*10**9;\n", + "Gt =10**4.2; Gr =10**3.1;\n", + "lamda=0.05;R=3.59*10**7;\n", + "Pr=(Pt*Gt*Gr*(lamda**2))/((4*pi*R)**2);\n", + "Pr=10*log10(Pr/0.001);\n", + "print \"received power in dBm will be = %.2f\"%Pr" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.3 page.no:669" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "input SNR in dB = 35.38\n", + "output SNR in dB = 29.78\n" + ] + } + ], + "source": [ + "# program to calculate the input and output SNR.\n", + "from math import log10\n", + "\n", + "f=4*10**9;B=1*10**6;Grf=10**2;Gif=10**3;\n", + "Lt=10**0.15;Lm=10**0.6;To=290;\n", + "Fm=10**0.7;Tm=(Fm-1)*To;Tp=300;Tb=200;eta=0.9;\n", + "Frf=10**0.3;Fif=10**0.11;k=1.38*10**-23;\n", + "Trf=(Frf-1)*To;\n", + "Tif=(Fif-1)*To;\n", + "Trec=Trf+(Tm/Grf)+((Tif*Lm)/Grf);\n", + "Ttl=(Lt-1)*Tp;\n", + "Ta=eta*Tb+(1-eta)*Tp;\n", + "Ni=k*B*Ta;\n", + "Ni=10*log10(Ni/0.001); # converting in to dBm.\n", + "si=-80; # in dBm.\n", + "SNRi=si-Ni; # input SNR.\n", + "Tsys=Ta+Ttl+Lt*Trec;\n", + "SNRo=si-10*log10((k*B*Tsys)/0.001);\n", + "print \"input SNR in dB = %.2f\"%SNRi\n", + "print \"output SNR in dB = %.2f\"%SNRo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 11.4 page.no:675" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the maximum range of the radar in meter = 8113.46\n" + ] + } + ], + "source": [ + "# program to find the maximum range of radar.\n", + "from math import pi\n", + "\n", + "G=10**2.8;Pt=2000;sigma=12;\n", + "Pmin =10**-12; lamda =0.03;\n", + "Rmax=((Pt*(G**2)*sigma*(lamda**2))/(((4*pi)**3)*Pmin))**(0.25);\n", + "print \"the maximum range of the radar in meter = %.2f\"%Rmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.5 page.no:693" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "THE J/S ration for the SSJ case in dB is = 16.50\n", + "THE J/S ratio for the SOJ case in dB is = 0.01\n" + ] + } + ], + "source": [ + "# program to find the J/S ratio.\n", + "from math import pi,log10\n", + "\n", + "Gr=3162;Pj=1000.;R=3000.;Br=1e6;Bj=20e6;\n", + "Gj=10.;lamda=0.03;Pt=1e5;sigma=4.;Rj=10000.;\n", + "x=(Pj/Pt)*((4.*pi*(R**2)*Gj)/(sigma*Gr))*(Br/Bj); #x=J/S\n", + "x=10.*log10(x);\n", + "Grsl=10**(3.5-2);# radar anteena gain in its sidelobe region .\n", + "x1=(Pj/Pt)*(((R**4)*Gj*Grsl)/((Gr**2)*(Rj**2)))*(Br/Bj) ;\n", + "#x1=10*log10(x1);\n", + "print \"THE J/S ration for the SSJ case in dB is = %.2f\"%x\n", + "print \"THE J/S ratio for the SOJ case in dB is = %.2f\"%x1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.6 page.no:695" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the power density in the main beam of the anteena at a distance of 20 m in mw/cmˆ2 = 1.0\n" + ] + } + ], + "source": [ + "# program to calculate the power density of 20 m from the anteena .\n", + "from math import pi\n", + "\n", + "G=10**4;Pin=5;R=20;\n", + "S=(Pin*G)/(4*pi*(R**2))*0.1;\n", + "print \"the power density in the main beam of the anteena at a distance of 20 m in mw/cmˆ2 = %.1f\"%S" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_1.ipynb new file mode 100644 index 00000000..3e2ab10a --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_1.ipynb @@ -0,0 +1,308 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 ELECTROMAGNETIC THEORY" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example 1.1,page no.17" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "phase velocity in meter per second= 6.54e+07 \n", + "wavelength in meter= 2.18e-02 \n", + "wave impedence in ohm= 2.47e+02 \n" + ] + } + ], + "source": [ + "# program to calculate wavelength , phase velocity and wave impedence .\n", + "from math import pi,sqrt\n", + "\n", + "f=3*10**9;\n", + "mur =3;\n", + "muo =4*pi*10**-7;\n", + "eipsilao =8.854*10**-12;\n", + "eipsilar =7;\n", + "mue=muo*mur;\n", + "eipsila=eipsilao*eipsilar;\n", + "Vp=sqrt(1/(mue*eipsila));\n", + "lamda=Vp/f;\n", + "eta=sqrt(mue/eipsila);\n", + "#Result\n", + "print\"phase velocity in meter per second= %.2e \"%Vp;\n", + "# phase velocity .\n", + "print\"wavelength in meter= %.2e \"%lamda # wavelength.\n", + "print\"wave impedence in ohm= %.2e \"%eta # wave impedence ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.2 page no.−20" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "skin depth of aluminium in meter=8.15e-07 \n", + "skin depth of copper in meter= 6.60e-07\n", + "skin depth of gold in meter= 7.86e-07\n", + "skin depth of silver in meter= 6.41e-07\n" + ] + } + ], + "source": [ + "# progarm to find out skin depth of aluminium, copper , gold and silver at frequency 10GHZ.\n", + "from math import sqrt\n", + "\n", + "f=10*10**9;\n", + "muo=4*pi*10**-7; # permeability in free space.\n", + "omega=2*pi*f;\n", + "sigma_aluminium =3.816*10**7;\n", + "sigma_copper =5.813*10**7;\n", + "sigma_gold =4.098*10**7;\n", + "sigma_silver =6.173*10**7;\n", + "delta1=sqrt(2/(omega*muo*sigma_aluminium));\n", + "delta2=sqrt(2/(omega*muo*sigma_copper));\n", + "delta3=sqrt(2/(omega*muo*sigma_gold));\n", + "delta4=sqrt(2/(omega*muo*sigma_silver));\n", + "#result\n", + "print\"skin depth of aluminium in meter=%.2e \"%delta1; # skin depth of aluminium\n", + "print\"skin depth of copper in meter= %.2e\"%delta2; # skin depth of copper .\n", + "print\"skin depth of gold in meter= %.2e\"%delta3; #skin depth of gold .\n", + "print\"skin depth of silver in meter= %.2e\"%delta4; # skin depth of silver ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.3 page no.−24" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for z<0, E1= A*N*x*exp(I*ko*z)\n", + "for z<0, H1= -A*N*y*exp(I*ko*z)\n", + "for z>0, E2= B*N*x*exp(-I*ko*z)\n", + "for z>0, H2= B*N*y*exp(-I*ko*z)\n", + "Matrix([[-Jo/2], [-Jo/2]])\n" + ] + } + ], + "source": [ + "#program to find the resulting fields by assuming plane waves on either side of the current sheet and enforcing the boundary conditions.\n", + "from sympy import symbols,Matrix,exp,I\n", + "\n", + "E,x,E1,E2,H1,H2,z,Jo,A,B,N,n,ko,y,l,m = symbols('E,x,E1,E2,H1,H2,z,Jo,A,B,N,n,ko,y,l,m');\n", + "E1=A*N*exp(I*ko*z)*x; # x component of elec tricfield (region z<0).\n", + "H1=A*N*exp(I*ko*z)*(-y); # y component of magnetic field (region z<0).\n", + "E2=B*N*exp(-I*ko*z)*x;# x component of electric field (region z>0).\n", + "H2=B*N*exp(-I*ko*z)*y; # y component of electric field (region z>0).\n", + "print \"for z<0, E1=\",E1\n", + "print \"for z<0, H1=\",H1\n", + "print \"for z>0, E2=\",E2\n", + "print \"for z>0, H2=\",H2\n", + "#from boundary conditions\n", + "c=Matrix([[-1,-1],[1,-1]]);\n", + "d=Matrix([[A],[B]]);\n", + "d=c.inv()*Matrix([[Jo],[0]]);\n", + "print d;\n", + "#result\n", + "# A=−Jo/2; B=−Jo/2." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.4 page no.−38." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "skin depth in meter= 2.087e-06\n", + "propagation comstant = 479049.101381194 + 479049.101381194*I\n", + "intrinsic impedence in ohm= 0.00824099606711155 + 0.00824099606711155*I\n", + "reflection coefficient= (-376.991759003933 + 0.00824099606711155*I)/(377.008240996067 + 0.00824099606711155*I)\n", + "transmission coefficient= (0.0164819921342231 + 0.0164819921342231*I)/(377.008240996067 + 0.00824099606711155*I)\n" + ] + } + ], + "source": [ + "# program to compute propagation constan , impedence , skin depth , reflection and transmission coefficient\n", + "from sympy import I\n", + "from numpy import pi,sqrt\n", + "\n", + "f=1*10**9;\n", + "omega=2*pi*f;\n", + "sigma=5.813*10**7; # for copper .\n", + "mue=4*pi*10**-7; # permeability in free space.\n", + "delta=sqrt(2/(mue*sigma*omega)); # skin depth .\n", + "gama=((1+I)/delta); # propagation constant .\n", + "eta=gama/sigma; # impedence\n", + "etao=377; # intrinsic impedence in free space .\n", + "tao=((eta-etao)/(eta+etao)); # reflection coefficient .\n", + "t=(2*eta)/(eta+etao); # transmission coefficient\n", + "# result\n", + "print \"skin depth in meter= %.3e\"%delta\n", + "print \"propagation comstant =\",gama\n", + "print \"intrinsic impedence in ohm=\",eta\n", + "print \"reflection coefficient=\",tao\n", + "print \"transmission coefficient= \",t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.5 page no.−42." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The wave impendaces are 377 ohm , 236 ohm\n" + ] + }, + { + "data": { + "image/png": "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\nfzl2Kjb4AAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x10627da90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# example:−2.7.page no.−50.\n", + "# program to plot the reflection coefficients for parallel and perpendicular polarized plane waves incident from free space on to a dielectric region with Er=2.55,versus incidence angle.\n", + "\n", + "from pylab import plot,subplot,title,xlabel,ylabel\n", + "from sympy import acos,asin\n", + "import numpy as n\n", + "import math as m\n", + "\n", + "Er=2.55; # relaitve permittivity of dielectric medium .\n", + "N1=377.; # intrinsic impedence\n", + "N2=N1/m.sqrt(Er); # intrinsic impedence of dielectric medium.\n", + "xb=asin(m.sqrt(1./(1.+1/2.55)));# brewster angle valid only in case of parallel polarization.\n", + "xt=acos(m.sqrt(1.-(1./Er)**2.*m.sin(xb))); # angle of transmission .\n", + "xi=n.arange(0,m.pi/2,0.05); # incidence\n", + "print \"The wave impendaces are %d ohm , %d ohm\"%(N1,N2)\n", + "# for parallel polarization angle .\n", + "N2=N2*m.cos(xt);\n", + "N1=N1*n.cos(xi);\n", + "Tpar=(N2-N1)/(N2+N1);\n", + "w=abs(Tpar);\n", + "\n", + "# result\n", + "subplot(121)\n", + "title ('parallel polarization');\n", + "xlabel('xi(incidence angle)');\n", + "ylabel('Tpar(reflection coefficient)');\n", + "plot(xi,w)\n", + "# for perpendicular polarization .\n", + "#NOTE:− in case of this polarization . there is no brewster angle .\n", + "xt=acos(n.sqrt(1-(1/Er)**2.*m.sin(xb)));\n", + "n1=377.*m.cos(xt);\n", + "n2=(377/m.sqrt(Er))*n.cos(xi);\n", + "Tper=(n2-n1)/(n1+n2);\n", + "z=abs(Tper);\n", + "#result\n", + "subplot(122)\n", + "\n", + "title ('perpendicular polarization');\n", + "xlabel('xi(incidence angle)');\n", + "#ylabel('Tper(reflection coefficient)');\n", + "plot(xi,z);" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_1.ipynb new file mode 100644 index 00000000..7b9a8161 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_1.ipynb @@ -0,0 +1,466 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 TRANSMISSION LINE THEORY" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import pylab as plb\n", + "import numpy as npy\n", + "from matplotlib.patches import Circle\n", + "\n", + "def smith(smithR=1, chart_type = 'z',ax=None):\n", + " if ax == None:\n", + " ax1 = plb.gca()\n", + " else:\n", + " ax1 = ax\n", + "\n", + " contour = []\n", + " rHeavyList = [0,1]\n", + " xHeavyList = [1,-1]\n", + "\n", + " rLightList = plb.logspace(3,-5,30,base=.5)\n", + " xLightList = plb.hstack([plb.logspace(2,-5,15,base=.5), -1*plb.logspace(2,-5,15,base=.5)]) \n", + " if smithR > 1:\n", + " rMax = (1.+smithR)/(1.-smithR)\n", + " rLightList = plb.hstack([ plb.linspace(0,rMax,11) , rLightList ])\n", + " if chart_type is 'y':\n", + " y_flip_sign = -1\n", + " else:\n", + " y_flip_sign = 1\n", + " for r in rLightList:\n", + " center = (r/(1.+r)*y_flip_sign,0 ) \n", + " radius = 1./(1+r)\n", + " contour.append( Circle( center, radius, ec='blue',fc = 'none'))\n", + " for x in xLightList:\n", + " center = (1*y_flip_sign,1./x)\n", + " radius = 1./x\n", + " contour.append( Circle( center, radius, ec='green',fc = 'none'))\n", + " for r in rHeavyList:\n", + " center = (r/(1.+r)*y_flip_sign,0 )\n", + " radius = 1./(1+r)\n", + " contour.append( Circle( center, radius, ec= 'blue', fc = 'none'))\n", + " for x in xHeavyList:\n", + " center = (1*y_flip_sign,1./x)\n", + " radius = 1./x\t\n", + " contour.append( Circle( center, radius, ec='green',fc = 'none'))\n", + " ax1.axhline(0, color='red')\n", + " ax1.axvline(1*y_flip_sign, color='red')\n", + " ax1.grid(0)\n", + " ax1.axis('equal')\n", + " ax1.axis(smithR*npy.array([-1., 1., -1., 1.]))\n", + " plb.title('Smith chart')\n", + " plb.xlabel('Tao real')\n", + " plb.ylabel('Tao imaginary') \n", + " for currentContour in contour:\n", + " ax1.add_patch(currentContour)\n", + " \n", + "# function for input impedence .\n", + "from sympy import I\n", + "def input_impedence(tao,b,l,Zo):\n", + " Zin=Zo*((1+(tao*exp(-2*I*b*l)))/(1-(tao*exp(-2*I*b*l))))\n", + " return Zin;\n", + "\n", + "#”Tao Real”,”Tao Imaginary””Tao Real”,”Tao Imaginary” \n", + "# function for reflection coefficient .\n", + "def reflection_coefficient(Zl,Zo): \n", + " tao=(Zl-Zo)/(Zl+Zo);\n", + " return tao;\n", + "\n", + "def VSWR(tao):\n", + " SWR=(1+tao)/(1-tao)\n", + " return SWR;" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:2.1 page.no:61" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "self inductance in H/m = mue*(-log(a) + log(b))/(4*pi)\n", + "capacitance in F/m = 2*pi*eipsila/(-log(a) + log(b))\n", + "resistance in Ohm/m = Rs*(2*pi/b + 2*pi/a)/(4*pi**2)\n", + "shunt conductance in S/m = 2*pi*eipsila*w/(-log(a) + log(b))\n" + ] + } + ], + "source": [ + "#example:3.1,page no.72.\n", + "# program to determine transmission line parameters\n", + "\n", + "from sympy import symbols,I,conjugate,log,exp,integrate,pi\n", + "\n", + "E,H,Vo,P,a,b,Io,mue,y,z,Q,p,i,L,eipsila,G,C,R,Rs,w=symbols('E,H,Vo,P,a,b,Io,mue,y,z,Q,p,i,L,eipsila,G,C,R,Rs,w');\n", + "E=(Vo/(P*log(b/a)))*exp(-I*y*z); # in radial direction .\n", + "H=(Io/(2*pi*P))*exp(-I*y*z); # in phi direction .\n", + "H=H*conjugate(H)*P;\n", + "Io=2*pi\n", + "E=E*conjugate(E)*P;\n", + "Vo=log(b)-log(a)\n", + "E=1/P**2\n", + "L=(mue/((Io)**2))*integrate(integrate((1/P),(P,a,b)),(Q,pi,2*pi));# surface integral in culindrical coordinate system\n", + "C=(eipsila/(Vo**2))*integrate(integrate(E*P,(P,a,b)),(Q,0,2*pi)); # surface integral in culindrical coordinate systemR=\n", + "R=(Rs/(Io**2))*(integrate((1/a),(Q,0,2*pi))+integrate((1/b),(Q,0,2*pi)))\n", + "G=((w*eipsila)/(Vo**2))*integrate(integrate(1/P,(P,a,b)),(Q,0,2*pi)); # surface integral in culindrical coordinate system\n", + "# result\n", + "print \"self inductance in H/m =\",L\n", + "print \"capacitance in F/m =\",C\n", + "print \"resistance in Ohm/m =\",R\n", + "print \"shunt conductance in S/m =\",G" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.3 page no:77" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reflection coefficient = 0.367607311047\n", + "standing wave ratio = 2.1625919068\n", + "return loss in dB = 8.69231719731\n" + ] + }, + { + "data": { + "image/png": "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\nitggAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x1062afb50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# program to find out return loss in dB,SWR and reflection coefficient .\n", + "from math import log10\n", + "\n", + "Zl=80-40j; # load impedence .\n", + "Zo=50; # characteristic impedence .\n", + "z=Zl/Zo; # normalized impedence .\n", + "tao=reflection_coefficient(Zl,Zo);\n", + "SWR=VSWR(abs(tao));\n", + "Rl=-20*log10(abs(tao));\n", + "print \"reflection coefficient = \",abs(tao)\n", + "print \"standing wave ratio = \",SWR\n", + "print \"return loss in dB = \",Rl\n", + "smith();\n", + "# when analyse with the help of smith chart . see the angle from x=0 axis i.e Tao real axis.if it is above this axis take angle anticlockwise and if it is below this axis . take angle clockwise from Tao  real axis below ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.4 page no:80" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "load impedence = 50*(1 + 0.2*exp(2.48*I*pi))/(1 - 0.2*exp(2.48*I*pi))\n" + ] + }, + { + "data": { + "image/png": "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\n0WaODf96lHS+hOnT5XCOr2/a+jr77Czzzs1LFx+XtAlKgg47O3D2pdl6ldl1d1euv70+9m+Vijx0\niGzXThyAmTOLrzZHDjks1qmTRAetWCFRJHFrZQxwGsBii4rF/h0SIknv/vyTHD+e7NGDrFlTnMaK\nQpqYSPRYo0aS7C08jn8zKDyIuWfn5uuPr3W+p/HjpaBRSo7diAhxOF+85c95l+fRYakDrWZZsdnm\nZvzl1C/c83APZ6x8xn7fxnHuR//2olRRfOj7kPNPb6Z5559Yb0M95piRg9XXVOeG2xsYGvH5OP7p\n0+Ks1jZEddMmCfF1SuGM2Kmnp1hxZUW9BR9km5aNW+9v1YusEcdG6D0jQp/9fTjhzIRUX//y5T8g\nuokpK4nWAI5G/78WgGtJtEv1G/VfxNnLmfnn5+e0C9MS/aBWrCBLltQubl4btt7bygILCug1SiQG\nj3cezDM7Dx/7P9abzC33trDNlo5ctIh0dBSlkCmTKM3+/SX2/9Mn7WQNOTKEhRcW1qqtSkVevCgK\np0YN0sxMFEeJElKoac6p9ey4s2Oq7kmtFrk1ayafOuWG5w1WntyPWSZasNe+Xrz86nKi78eRI2TL\nuEdVEvz29uwh27aV/0eponjY/TBbb2tN6znWHH1iND3ePWa1apJ1NSWiosiff5ZcTi5arDNUahUd\nljroLVOs2VQz7nmYMO2t7qjVahZbXEyn3FopceLJCRZaWIgfwz6mSc4XryQA7ADgBSAC4nv4DsAg\nAIPitFkG4AkkBLZqEnLS9Eb9F3kT+IY11tZgtz3dYlMKnzkjYa5Pn+q3rwVXFrD0stLJ1tpNi+z6\nG+rr5eDgkSNk+cqfiGzvmM08io0akdu3p7729LhT42g71zbV47l4kezcWXYayBxM6yLeXLgwdeNR\nq6WeeK9eic+4uPq5sv6G+iyyqAjHH5lFC3tffkxi7rl9W+LvY0nw2xs3TkrTJuTp+6cce3Isc021\noeWAr+kdmHzR6w8fRBk1bap9JUNS8jp9e+Bb7S9IBtM/THnmWTIx31ri4uPCQgsL6W2H8zHsIwst\nLMQTT06kWdYXryT09TAqidTxKfITe+/rzSqrqvDve6+YNy959mz69DX25FjWWldL66Rs2hKlimLd\n9XW5+NriVF0fEiKrVSsrMffUq0fWnt0vnskptWy4vYHm083TLOdN4BvmmliYXbpGMWtWMmtWSez2\n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\nZGRkNPL/f73qscY1aEcAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x106f5d9d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# NOTE:-this example is a method for calculating unknown load impedence of slotted line section. all data are given and preassumed.\n", + "# program to determine unknown load impedence.\n", + "from sympy import I,oo\n", + "\n", + "Zl=0;Zo=50; # for short circuitting the load.\n", + "SWR=oo\n", + "# short circuit is removed and replace with unknown load .\n", + "SWR =1.5; lamda =0.04;\n", + "lmin =4.2 -2.72;\n", + "tao=(1.5-1)/(1.5+1);\n", + "theta=(pi+((4*pi)/4)*1.48);\n", + "tao=abs(tao)*exp(I*theta);\n", + "Zl=50*((1+tao)/(1-tao));\n", + "# result\n", + "print \"load impedence = \",Zl\n", + "smith(2,y)\n", + "# when analyse with the help of smith chart . see angle from x=0 axis i.e Tao real axis.if it is above this axis take angle anticlockwise and if it is below this axis . take angle clockwise from Tao  real axis below ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.5 page no:84" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "characteristic impedence of the matching section= 70.7106781187\n" + ] + }, + { + "data": { + "text/plain": [ + "<matplotlib.text.Text at 0x11090bbd0>" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x106f22a90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# program to find out characteristic impedence and plot the magnitude of reflection coefficient versus normalized frequency .\n", + "from sympy import symbols,I\n", + "from pylab import arange,plot,title,xlabel,ylabel,axis\n", + "from math import pi\n", + "from numpy import sin,cos,sqrt,real,imag\n", + "\n", + "Zl=100;# load impedence\n", + "Zi=50;#impedence of line which is to be matched\n", + "#as it is a quarter wave transformer so , Zi=(Zo)ˆ2/zl;\n", + "Zo=sqrt(Zi*Zl);\n", + "print \"characteristic impedence of the matching section= \",Zo\n", + "f,fo,x=symbols('f,fo,x');\n", + "x=f/fo;\n", + "x=arange(0,4,0.001)\n", + "y=(pi/2)*(x);\n", + "Zin=Zo*(((Zl*cos(y))+(Zo*I*sin(y)))/((Zo*cos(y))+(Zl*I*sin(y))))\n", + "tao=((Zin-Zo)/(Zin+Zo));\n", + "tao=abs(tao)\n", + "plot(x,tao)\n", + "axis([0,4,0,1])\n", + "title (\"reflection coefficient versus normalized frequency for quarter wave transformer\")\n", + "xlabel(\"f/fo\")\n", + "ylabel(\"tao(reflection coefficient)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.6 page no:92" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "attenuation constant = Rs*sqrt(eipsila*pi**2/(mue*log(b/a)**2))*(1/b + 1/a)/(2*pi) + eipsilac*pi*w*sqrt(mue*log(b/a)**2/(eipsila*pi**2))/(2*log(b/a))\n" + ] + } + ], + "source": [ + "# program to calculate attenuation constant.\n", + "from sympy import symbols,sqrt,log\n", + "\n", + "alpha,R,Rs,L,G,C,eta,a,b,w,pi,eipsila,eipsilac,mue,eta=symbols('alpha,R,Rs,L,G,C,eta,a,b,w,pi,eipsila,eipsilac,mue,eta')\n", + "eta=sqrt(mue/eipsila);\n", + "L=(mue/(2*pi))*(log(b/a));\n", + "C=(2*pi*eipsila)/log(b/a);\n", + "R=(Rs/(2*pi))*((1/a)+(1/b));\n", + "G=(2*pi*w*eipsilac)/log(b/a);\n", + "alpha=(R*sqrt(C/L)+G*sqrt(L/C))/2;\n", + "print \"attenuation constant = \",alpha" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.7 page no:95" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "power flowing on the lossless line = Vo**2/(2*Zo) \n", + "\n", + "conductor loss = Rs*Vo*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))/(4*P*Zo*conjugate(Zo)*conjugate(pi)) \n", + "\n", + "dielectric loss = Vo*eipsila*pi*w*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))*Integral(1/conjugate(P), (P, a, b))/((log(a) - log(b))*(conjugate(log(a)) - conjugate(log(b)))) \n", + "\n", + "attenuation constant = Zo*(Vo*eipsila*pi*w*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))*Integral(1/conjugate(P), (P, a, b))/((log(a) - log(b))*(conjugate(log(a)) - conjugate(log(b)))) + Rs*Vo*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))/(4*P*Zo*conjugate(Zo)*conjugate(pi)))/Vo**2 \n", + "\n" + ] + } + ], + "source": [ + "# program to find ht eattenuation constant of coaxial line .\n", + "from sympy import symbols,log,I,integrate,conjugate\n", + "\n", + "E,H,Vo,Zo,P,a,b,B,z,pi,Po,Q,Rs,Plc,alpha,Pld,w,eipsila=symbols('E,H,Vo,Zo,P,a,b,B,z,pi,Po,Q,Rs,Plc,alpha,Pld,w,eipsila')\n", + "#Zo=(eta/(2⇤pi))⇤log(b/a);\n", + "E=(Vo/(P*(log(b)-log(a))))*exp(-I*B*z);\n", + "H=(Vo/(2*pi*P*Zo))*exp(-I*B*z);\n", + "H=conjugate(H)*P; # for defining E cross H⇤.\n", + "Po=(1/2)*integrate(integrate((E*H),(P,0,2*pi)),(Q,a,b));\n", + "Po=Vo**2/(2*Zo)\n", + "print \"power flowing on the lossless line = \",Po,\"\\n\"\n", + "H=(H*conjugate(H))/P; # for defining |H|ˆ2(;)\n", + "Plc=(Rs/2)*integrate(integrate(H,(z,0,1)),(Q,0,2*pi));\n", + "print \"conductor loss = \",Plc,\"\\n\"\n", + "E=E*conjugate(E)*P;\n", + "Pld=((w*eipsila)/2)*integrate(integrate(integrate(E,(P,a,b)),(Q,0,2*pi)),(z,0,1));\n", + "print \"dielectric loss = \",Pld,\"\\n\"\n", + "alpha=(Pld+Plc)/(2*Po); # attenuation\n", + "#B=beta . constant .\n", + "print \"attenuation constant = \",alpha,\"\\n\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.8 page no:97" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "attenuation due to conductor loss = Rs*(1/b + 1/a)/(2*eta*pi*log(b/a)) \n", + "\n", + "attenuation corrected for surface roughness = Rs*(1 + 2*atan(0.7*sqrt(2)*delta/sqrt(1/(mue*sigma*w)))/pi)*(1/b + 1/a)/(2*eta*pi*log(b/a))\n" + ] + } + ], + "source": [ + "# program to calculate attenuaton due to conductor loss of a coaxial line using incremental inductance rule .\n", + "from sympy import symbols,sqrt,log,diff,atan\n", + "\n", + "Zo,eta,pi,a,b,Rs,l,alpha,alpha_c,alpha_dash,delta,alpha_c_dash,sigma,w,mue=symbols('Zo,eta,pi,a,b,Rs,l,alpha,alpha_c,alpha_dash,delta,alpha_c_dash,sigma,w,mue')\n", + "sd=sqrt(2/(w*mue*sigma))\n", + "Zo=(eta*log(b/a))/(2*pi);\n", + "alpha_c=(Rs/(4*Zo*pi**2))*(diff(log(b/a),b)-diff(log(b/a),a));\n", + "print \"attenuation due to conductor loss = \",alpha_c,\"\\n\"\n", + "alpha_c_dash=alpha_c*(1+((2/pi)*atan((1.4*delta)/sd)));\n", + "print \"attenuation corrected for surface roughness = \",alpha_c_dash" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_1.ipynb new file mode 100644 index 00000000..0c9527a2 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_1.ipynb @@ -0,0 +1,367 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3 TRANSMISSION LINE AND WAVEGUIDES" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.1 page no.127" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cut off frequency for TE01 mode in GHZ= 14.7637795276\n", + "cut off frequency for TE10 mode in GHZ= 6.56167979003\n", + "cut off frequency for TE20 mode in GHZ= 13.1233595801\n", + "cut off frequency for TE11 mode in GHZ= 16.1562627982\n", + "surface resistance in ohm= 0.0260895069422\n", + "attenuation constant in dB/m= 0.108405591329\n" + ] + } + ], + "source": [ + "# program to find the cut off frequency fo the first four propagating modes .\n", + "\n", + "from math import pi,sqrt,log10,e\n", + "\n", + "a=0.02286;\n", + "b=0.01016;\n", + "f=10*10**9;\n", + "k=209.44;\n", + "sigma =5.8*10**7;\n", + "mue =4*pi*10**-7;\n", + "c=3*10**8;\n", + "m=0;n=1;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2); \n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE01 mode in GHZ=\",fc\n", + "m=1;n=0;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2); \n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE10 mode in GHZ=\",fc \n", + "m=2;n=0;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2); \n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE20 mode in GHZ=\",fc \n", + "m=1;n=1;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2);\n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE11 mode in GHZ=\",fc\n", + "B=sqrt(k**2-(pi/a)**2) # for TE10 mode\n", + "Rs=sqrt(((2*pi*f)*mue)/(2*sigma)); # surface resistance .\n", + "print \"surface resistance in ohm=\",Rs\n", + "ac=(Rs/(a**3*b*B*k*377))*((2*b*pi**2)+(a**3*k**2)) # attenuation constant .\n", + "ac=-20*(-ac)*log10(e);\n", + "print \"attenuation constant in dB/m=\",ac" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.2 page no.138." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cut off frequency for TE11 mode in GHZ= 11.7201700093\n", + "cut off frequency for TE01 mode in GHZ= 15.3107055254\n", + "k in m1= 408.407044967\n", + "propagation constant of TE11 mode = 176.706180929\n", + "total attenuation factor in dB= 2.37559081601\n" + ] + } + ], + "source": [ + "#program to find the cut off frequency of two propagating modes of a circular waveguide .\n", + "\n", + "from math import pi,sqrt,e,log10\n", + "\n", + "a=0.005;eipsilar=2.25;f=13*10**9;c=3*10**8;d=0.001; sigma=6.17*01**7;muo=4*pi*10**-7;\n", + "m=1;n=1;\n", + "p11 =1.841; p01 =2.405;\n", + "fc=(p11*c)/(2*pi*a*sqrt(eipsilar));\n", + "kc=p11/a;\n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE11 mode in GHZ=\",fc\n", + "m=0;n=1;\n", + "fc=(p01*c)/(2*pi*a*sqrt(eipsilar));\n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE01 mode in GHZ=\",fc\n", + "# so ,TE01 can ’ t be propagating mode. only TE11 will be.\n", + "k=(2*pi*f*sqrt(eipsilar))/c;\n", + "print \"k in m1=\",k\n", + "B=sqrt(k**2-kc**2);\n", + "print \"propagation constant of TE11 mode =\",B\n", + "ac=(k**2*d)/(2*B);\n", + "Rs=sqrt((2*pi*f*muo)/(2*sigma)); # surface resistance .\n", + "acm=(Rs/(a*k*377*B))*(kc**2+((k**2)/(p11**2-1)));\n", + "a=ac+acm;\n", + "a=-20*(-0.547*0.5)*log10(e);\n", + "print \"total attenuation factor in dB=\",a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.3 page no.145" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum usable frequency in GHZ= 16.1677560714\n" + ] + } + ], + "source": [ + "#program to find out the highest usable frequency.\n", + "from math import sqrt,pi\n", + "\n", + "a=0.000889;b=0.0029464;eipsilar=2.2;c=3*10**8;\n", + "# here (b/a)=3.3,so for this kc⇤a=0.47\n", + "kc=0.47/a;\n", + "fc=(c*kc)/(2*pi*sqrt(eipsilar))\n", + "fc=fc/(10**9);\n", + "fmax=0.95*fc;\n", + "print \"maximum usable frequency in GHZ=\",fmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.4 page no.153" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x1049112d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# program to calculate and plot the propagation constant of first three propagating surface wave mode .\n", + "%matplotlib inline\n", + "from pylab import plot,title,xlabel,ylabel,legend,xlim,ylim\n", + "from numpy import arange,sqrt,seterr\n", + "\n", + "old_settings = seterr(all='ignore')\n", + "eipsilar=2.55;c=3*10**8; # x=d/lamdao ;\n", + "x=arange(0.001,1.2,0.01);\n", + "for n in range(0,4):\n", + " y=sqrt(eipsilar -((n**2)/(4.*(x**2)*(eipsilar -1))));# y=beta/lamdao;\n", + " plot(x,y)\n", + "x=arange(0.001,1.2,0.01);\n", + "for n in range(1,4):\n", + " y=sqrt(eipsilar -((((2.*n)-1)**2)/(16.*(x**2)*(eipsilar -1)))) \n", + " plot(x,y)\n", + "title ('plot of propagation constant of first 4 mode');\n", + "xlabel('d/lamdao');\n", + "ylabel('beta/Ko'); \n", + "xlim(0,1)\n", + "ylim(1,1.6);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.5 page no.157." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "width of copper strip line conductor is 0.00266m\n", + "wave number= 310.648995795\n", + "dielectric aattenuation= 0.155324497897\n", + "conductor attenuation= 0.121743652883\n", + "total attenuation constant= 2.4065833799\n", + "attenuation in dB/lamda= 0.048675545512\n" + ] + } + ], + "source": [ + "# program to find width of a copper strip line conductor .\n", + "from math import pi,e,sqrt,log10\n", + "\n", + "eipsilar=2.20;\n", + "Zo=50;b=0.0032;d=0.001;f=10**10;t =0.00001;\n", + "c=3*10**8;Rs=0.026;A=4.74;\n", + "x=(30*pi)/(sqrt(eipsilar)*Zo);\n", + "x=x-0.441;\n", + "w=b*x;\n", + "if ((sqrt(eipsilar)*Zo)<120):\n", + " print \"width of copper strip line conductor is 0.00266m\"\n", + "K=(2*pi*f*sqrt(eipsilar))/c;\n", + "ad=(K*d)/2;\n", + "ac=(2.7*(10**-3)*Rs*eipsilar*Zo*A)/(30*pi*(b-t));\n", + "a=ac+ad;\n", + "a=20*a*log10(e);\n", + "lamda=c/(sqrt(eipsilar)*f);\n", + "alamda=lamda*a;\n", + "print \"wave number=\",K\n", + "print \"dielectric aattenuation=\",ad\n", + "print \"conductor attenuation=\",ac\n", + "print \"total attenuation constant=\",a\n", + "print \"attenuation in dB/lamda=\",alamda" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.7 page no.163" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "width in centi meter= 0.391287\n", + "length of microstrip in centi meter= 2.19381727238\n" + ] + } + ], + "source": [ + "#program to calculate the width and length of microstrip line .\n", + "from math import sqrt,pi,e\n", + "\n", + "eipsilae=1.87;# effective dielectric constant .\n", + "Zo=50;q=pi/2;c=3*10**8;\n", + "f=2.5*10**9;\n", + "ko=(2*pi*f)/c;\n", + "d=0.00127;\n", + "eipsilar =2.20;\n", + "# for w/d>2;\n", + "B=7.985;\n", + "w=3.081*d*100;\n", + "print \"width in centi meter=\",w\n", + "l=(q*100)/(sqrt(eipsilae)*ko);\n", + "print \"length of microstrip in centi meter=\",l" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.9 page no.173" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "group velocity= c**2*sqrt(-kc**2 + w**2/c**2)/w\n", + "phase velocity= w/sqrt(-kc**2 + w**2/c**2)\n", + "conclusion:since B<ko,we have that vg<c<vp, which indicates that the phase velocity of a waveguide mode may be greater than the speed of light.but the group velocity will be lesser than the speed of light .\n" + ] + } + ], + "source": [ + "#program to calculate the group velocity.\n", + "from sympy import symbols,sqrt,diff\n", + "\n", + "w,c,v,B,ko,kc=symbols('w,c,v,B,ko,kc');\n", + "ko=w/c;\n", + "B=sqrt(ko**2-kc**2);\n", + "v=diff(B,w);\n", + "vg=v**(-1);\n", + "vg=(c*B)/ko;\n", + "vp=w/B;\n", + "print \"group velocity=\",vg\n", + "print \"phase velocity=\",vp\n", + "print \"conclusion:since B<ko,we have that vg<c<vp, which indicates that the phase velocity of a waveguide mode may be greater than the speed of light.but the group velocity will be lesser than the speed of light .\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_1.ipynb new file mode 100644 index 00000000..1ace60c4 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_1.ipynb @@ -0,0 +1,308 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 4 MICROWAVE NETWORK ANALYSIS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.1 page.no:187" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matrix([[sqrt(2)*sqrt(a*b)/2], [sqrt(2)*Zte*sqrt(a*b)/2]])\n", + "which completes the transmission line equivalence for the TE10 mode \n" + ] + } + ], + "source": [ + "#program to find the equivalent voltages and current .\n", + "from sympy import symbols,sqrt,Matrix\n", + "\n", + "a,b,A,Zte,V,I,C1,C2,P=symbols('a,b,A,Zte,V,I,C1,C2,P');\n", + "P=(a*b*A**2)/(4*Zte);\n", + "c=(1/2)*V*I;\n", + "d=(1/2)*(A**2)*C1*C2;\n", + "C1=sqrt((a*b)/2); # on comparision .\n", + "C2=sqrt((a*b)/2)*Zte; # on comparision .\n", + "c=Matrix([C1,C2]);\n", + "print c;\n", + "print \"which completes the transmission line equivalence for the TE10 mode \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.2 page.no:188" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reflection coefficient -0.627245765824\n" + ] + } + ], + "source": [ + "#program to compute reflection coefficient .\n", + "from math import pi,sqrt\n", + "\n", + "a=0.03485;b=0.01580;eipsilao=8.854*10**-12;muo=4*pi*10** -7;\n", + "f=4.5*10**9;\n", + "w=2*pi*f; # angular frequency .\n", + "# for z<0 region air filled.\n", + "eipsilar=2.56; # for z>0 region .\n", + "ko=w*sqrt(muo*eipsilao);\n", + "k=ko*sqrt(eipsilar);\n", + "Ba=sqrt(ko**2-(pi/a)**2); # propagation constant in air region z<0.\n", + "Bd=sqrt(k**2-(pi/a)**2); # propagation constant in dielectric region z>0.\n", + "Zoa=(ko*377)/Ba;\n", + "Zod=(ko*377)/Bd;\n", + "tao=(Zod-Zoa)/(Zod+Zoa);\n", + "print \"reflection coefficient\",tao" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.3 page.no:195" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z-parameter of two port network = Matrix([[Za + Zc, Zc], [Zc, Zb + Zc]])\n" + ] + } + ], + "source": [ + "# program to find the z parameter of the two port network .\n", + "from sympy import symbols,Matrix\n", + "\n", + "Z11,Z12,Z22,Z21,Za,Zb,Zc=symbols('Z11,Z12,Z22,Z21,Za,Zb,Zc');\n", + "Z11=Za+Zc; # for I2=0.\n", + "Z12=(Zc/(Zb+Zc))*(Zb+Zc); #for I1=0.\n", + "Z21=(Zc/(Za+Zc))*(Za+Zc); # for I2=0.\n", + "Z22=Zb+Zc; #for I1=0.\n", + "Z=Matrix([[Z11,Z12],[Z21,Z22]]); # z_parameter matrix.\n", + "print \"Z-parameter of two port network = \",Z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.4 page.no:198" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "S-parameter of 3db attenuator circuit is =\n", + "[[ 4.43981086e-05 7.07663252e-01]\n", + " [ 7.07663252e-01 4.43981086e-05]]\n" + ] + } + ], + "source": [ + "# program to find the s-parameter of 3-dB attenuator circuit .\n", + "from numpy import matrix\n", + "\n", + "Za=8.56;Zb=8.56;Zc=141.8;Zo=50.;\n", + "S11=(((((Zo+Zb)*Zc)/(Zo+Zb+Zc))+Za)-Zo)/(((((Zo+Zb)*Zc)/(Zo+Zb+Zc))+Za)+Zo); # reflection coefficient seen at port 1.\n", + "S22=(((((Zo+Za)*Zc)/(Zo+Za+Zc))+Zb)-Zo)/(((((Zo+Za)* Zc)/(Zo+Za+Zc))+Zb)+Zo); # reflection coefficient seen at port 2.\n", + "S12=(((1/((((Zo+Za)*Zc)/(Zo+Za+Zc))+Zb))*(((Zo+Za)* Zc)/(Zo+Za+Zc)))*(Zo/(Zo+Za))); # transmission coefficient from port 2 to 1.\n", + "S21=(((1/((((Zo+Zb)*Zc)/(Zo+Zb+Zc))+Za))*(((Zo+Zb)* Zc)/(Zo+Zb+Zc)))*(Zo/(Zo+Zb))); # transmission coefficient from port 1 to 2.\n", + "S=matrix([[S11,S12],[S21,S22]]); # sparameter matrix.\n", + "print \"S-parameter of 3db attenuator circuit is =\"\n", + "print S" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.5 page.no:202" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the network is reciprocal .\n", + "the network is lossy .\n", + "return loss at port 1 in dB= 3.967\n" + ] + } + ], + "source": [ + "#program to determine the reciprccity and lossless of two port network and find return loss.\n", + "from sympy import symbols,I\n", + "from numpy import matrix\n", + "from math import log10\n", + "\n", + "Rl,tao=symbols('Rl,tao');\n", + "S=matrix([[0.1,0.8*I],[0.8*I,0.2]]); # s-parameter matrix.\n", + "if (S[0,1]==S[1,0]):\n", + " print \"the network is reciprocal .\"\n", + "else:\n", + " print \"the network is not reciprocal .\"\n", + "if (S[0,0]**2+S[0,1]**2==1):\n", + " print \"the network is lossless .\"\n", + "else:\n", + " print \"the network is lossy .\"\n", + "tao=S[0,0]-(S[0,1]*S[1,0])/(1+S[1,1]); #input reflection coefficient .\n", + "Rl=-20*log10(abs(tao)); # return loss in dB.\n", + "#result\n", + "print \"return loss at port 1 in dB= %.3f\"%Rl" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.6 page.no:208" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "abcd parameter\n", + "Matrix([[1, Z], [0, 1]])\n" + ] + } + ], + "source": [ + "#program to find the ABCD parameter of a two-port network .\n", + "from sympy import symbols,Matrix\n", + "\n", + "A,B,C,D,V1,V2,I1,I2,Z=symbols('A,B,C,D,V1,V2,I1,I2,Z');\n", + "#A=V1/V2; #for i2=0;\n", + "A=1;\n", + "B=V1/(V1/Z);\n", + "C=0;\n", + "D=I1/I1;\n", + "ABCD=Matrix([[A,B],[C,D]]);\n", + "#result\n", + "print \"abcd parameter\"\n", + "print ABCD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.7 page.no:226" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "admittance matrix for bridge-T network=\n", + "Matrix([[1/(Z1 + Z2) + 1/Z3 + Z2**2/(Z1*(Z1 + Z2)*(Z1 + 2*Z2)), -1/Z3 - Z2/(Z1*(Z1 + 2*Z2))], [-1/Z3 - Z2/(Z1*(Z1 + 2*Z2)), 1/Z3 + (Z1 + Z2)/(Z1*(Z1 + 2*Z2))]])\n" + ] + } + ], + "source": [ + "# program to find the admittance matrix for bridge-T network.\n", + "from sympy import symbols,Matrix\n", + "\n", + "Za,Z1,Z2,Z3,Y,Ya,Yb,D=symbols('Za,Z1,Z2,Z3,Y,Ya,Yb,D');\n", + "Za=Matrix([[Z1+Z2,Z2],[Z2,Z1+Z2]]);\n", + "Yb=Matrix([[1/Z3,-1/Z3],[-1/Z3,1/Z3]]);\n", + "Y1=1/Z1;Y2=1/Z2;\n", + "Ya=Za**-1\n", + "Y=Ya+Yb;\n", + "D=((Z2+Z1)**2-Z2**2);\n", + "# result\n", + "print \"admittance matrix for bridge-T network=\"\n", + "print Y" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_1.ipynb new file mode 100644 index 00000000..cb7340f4 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_1.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 IMPEDENCE MATCHING AND TUNNING" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.1 page no:254" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "inductor of first circuit in nH = 38.985\n", + "capacitor of the first circuit in pF = 0.923\n", + "inductor of second circuit in nH = 46.139\n", + "capacitor of the second circuit in pF = 2.599\n", + "\"NOTE:−for above specific problem Rl>Zo, positive X implies inductor , negative X implies capacitor , positive B implies capacitor and negative B implies inductor .\"\n" + ] + } + ], + "source": [ + "#program to design an L section matching network\n", + "from math import pi,sqrt\n", + "from sympy import I\n", + "\n", + "# program to design an L section matching network to match a series RC load.\n", + "Zl=200-I*100; # load impedence .\n", + "Rl=200;Xl=-100;f=500*10**6;Zo=100;\n", + "B1=(Xl+sqrt(Rl/Zo)*sqrt(Rl**2+Xl**2-(Rl*Zo)))/(Rl**2+Xl**2);\n", + "B2=(Xl-sqrt(Rl/Zo)*sqrt(Rl**2+Xl**2-(Rl*Zo)))/(Rl**2+Xl**2);\n", + "C1=(B1/(2*pi*f))*10**12;\n", + "L2=(-1/(B2*2*pi*f))*10**9;\n", + "X1=(1/B1)+((Xl*Zo)/Rl)-(Zo/(B1*Rl));\n", + "X2=(1/B2)+((Xl*Zo)/Rl)-(Zo/(B2*Rl));\n", + "L1=(X1/(2*pi*f))*10**9;\n", + "C2=(-1/(X2*2*pi*f))*10**12;\n", + "print\"inductor of first circuit in nH = %.3f\"%L1\n", + "print\"capacitor of the first circuit in pF = %.3f\"%C1\n", + "print\"inductor of second circuit in nH = %.3f\"%L2\n", + "print\"capacitor of the second circuit in pF = %.3f\"%C2 \n", + "print\"\\\"NOTE:−for above specific problem Rl>Zo, positive X implies inductor , negative X implies capacitor , positive B implies capacitor and negative B implies inductor .\\\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.5 page no:275" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "charecteristic impedence of matching section = 22.36\n", + " fractional bandwidth = 0.29\n" + ] + } + ], + "source": [ + "#design quarter wave matching transformer\n", + "from math import sqrt,pi,acos\n", + "\n", + "#program to design a single section quarter wave matching transformer .\n", + "Zl=10; # load impedence .\n", + "Zo=50; # characteristic impedence .\n", + "fo=3*10**9;swr=1.5; # maximum limit of swr.\n", + "Z1=sqrt(Zo*Zl); # characteristic impedence of the matching section .\n", + "taom=(swr-1)/(swr+1);\n", + "frac_bw=2-(4/pi)*acos((taom/sqrt(1-taom**2))*(2*sqrt(Zo*Zl)/abs(Zl-Zo))); # fractional bandwidth .\n", + "print \"charecteristic impedence of matching section = %.2f\"%Z1\n", + "print \" fractional bandwidth = %.2f\"%frac_bw" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.6 page no:280" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z1 = 91.70\n", + "Z2 = 84.09\n", + "Z3 = 77.11\n" + ] + } + ], + "source": [ + "#design three section binomial transformer\n", + "from math import pi,acos\n", + "\n", + "Zl=50.;Zo=100.;N=3;taom=0.05;\n", + "A=(2**-N)*abs((Zl-Zo)/(Zl+Zo));\n", + "frac_bw=2.-(4/pi)*acos(0.5*(taom/A)**2);\n", + "c=1.\n", + "Z1=Zo*((Zl/Zo)**((2.**-N)*(c**N)));\n", + "print \"Z1 = %.2f\"%Z1\n", + "c=3.**(1/3)\n", + "Z2=Z1*((Zl/Zo)**((2.**-N)*(c**N)));\n", + "print \"Z2 = %.2f\"%Z2\n", + "c=3.**(1/3)\n", + "Z3=Z2*((Zl/Zo)**((2.**-N)*(c**N)));\n", + "print \"Z3 = %.2f\"%Z3\n", + "# answers may vary due to round off errors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.7 page no:288" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the characteristic impedences are = 57.27 ,69.84 ,87.30\n" + ] + } + ], + "source": [ + "#design three section chebysev transfomer\n", + "from math import pi,cosh\n", + "from sympy import asec,acosh\n", + "\n", + "Zl=100.;Zo=50.;taom=0.05;N=3;A=0.05;\n", + "thetam=asec(cosh((1/N)*acosh((1/taom)*abs((Zl-Zo)/(Zl+Zo)))))*(180/pi);\n", + "x=(cosh((1./N)*acosh((1./taom)*abs((Zl-Zo)/(Zl+Zo)))))\n", + "tao_o=A*(x**3)/2;\n", + "tao_1=(3*A*(x**3-x))/2; # from symmetry tao 3=tao \n", + "Z1=Zo*((1+tao_o)/(1-tao_o));\n", + "Z2=Z1*((1+tao_1)/(1-tao_1));\n", + "Z3=Zl*((1-tao_o)/(1+tao_o));\n", + "print \"the characteristic impedences are = %.2f ,%.2f ,%.2f\"%(Z1,Z2,Z3)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_1.ipynb new file mode 100644 index 00000000..e6a37416 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_1.ipynb @@ -0,0 +1,328 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6 MICROWAVE RESONATORS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.1 page.no:309" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Qair = 2379.5\n", + "Qteflon = 1217.7\n", + "conclusion: Qair is almost twice that of Qteflon\n" + ] + } + ], + "source": [ + "#program to compare the Q of an air filled and teflon filled coaxial line resonator .\n", + "from math import pi,sqrt,log\n", + "\n", + "sigma=5.813*10**7;muo=4*pi*10**-7;f=5*10**9;eta=377;a =1*10**-3;b=4*10**-3;\n", + "omega=2*pi*f;ko=104.7;B=104.7;alpha=0.022;\n", + "Rs=sqrt((omega*muo)/(2*sigma));\n", + "alphaca=(Rs/(2*eta*log(b/a)))*((1/a)+(1/b)); # attenuation due to conductor loss for air filled line .\n", + "eipsilar=2.08;tandelta=0.0004; # for teflon filled line .\n", + "alphact=((Rs*sqrt(2.08)*0.01)/(2*eta*log(b/a)))*((1/ a)+(1/b)); # attenuation due to conductor loss for teflon filled line .\n", + "alphada=0; # for air filled line .\n", + "alphadt=ko*(sqrt(eipsilar)/2)*tandelta;\n", + "Qair=B/(2*alpha);\n", + "B=B*sqrt(eipsilar);\n", + "alpha =0.062;\n", + "Qteflon=B/(2*alpha);\n", + "print \"Qair = %.1f\"%Qair\n", + "print \"Qteflon = %.1f\"%Qteflon\n", + "print \"conclusion: Qair is almost twice that of Qteflon\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.2 page.no:312" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "length of the line in meter = 0.0219\n", + "Q of the resonator = 525.9\n" + ] + } + ], + "source": [ + "# program to compute the length of the line for resonance at 5 GHZ and the Q of the resonator .\n", + "from math import sqrt,pi\n", + "\n", + "W=0.0049;c=3*10**8;f=5*10**9;Zo=50;eipsilar=2.2;ko =104.7;tandelta =0.001;\n", + "Rs=0.0184; # taken from example 7.1.\n", + "eipsilae=1.87; # effective permittivity .\n", + "l=c/(2*f*sqrt(eipsilae)); # resonator length .\n", + "B=(2*pi*f*sqrt(eipsilae))/c;\n", + "alphac=Rs/(Zo*W);\n", + "alphad=(ko*eipsilar*(eipsilae -1)*tandelta)/(2*sqrt(eipsilae)*(eipsilar -1));\n", + "alpha=alphac+alphad;\n", + "Q=B/(2*alpha);\n", + "print \"length of the line in meter = %.4f\"%l\n", + "print \"Q of the resonator = %.1f\"%Q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.3 page.no:317" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d in meter = 0.0465\n", + "Q1 = 1437\n", + "Q2 = 1518\n" + ] + } + ], + "source": [ + "# program to find required length ,d and Q for l=1 and l=2 resonator mode.\n", + "from math import sqrt,pi\n", + "\n", + "a=0.04755;b=0.02215;eipsilar=2.25;tandelta=0.0004;f =5*10**9;c=3*10**8;\n", + "k=(2*pi*f*sqrt(eipsilar))/c # wave number .\n", + "for l in range(1,2):\n", + " d=(l*pi)/sqrt((k**2)-((pi/b)**2)); # m=1 & n=0 mode .\n", + " print \"d in meter = %.4f\"%d\n", + "eta=377/sqrt(eipsilar);\n", + "Qc1=3380.;# l=1.\n", + "Qc2=3864.;# l=2.\n", + "Qd=2500.; # Q due to dielectric loss only .\n", + "Q1=((1./Qc1)+(1./Qd))**-1; # for l =1.\n", + "Q2=((1./Qc2)+(1./Qd))**-1; # for l =2.\n", + "print \"Q1 = %.0f\"%Q1\n", + "print \"Q2 = %.0f\"%Q2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.4 page.no:323" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a in meter = 0.0395\n", + "Qc = 42364.227\n" + ] + } + ], + "source": [ + "# program to find dimension and Q;\n", + "from math import pi,sqrt\n", + "\n", + "f=5.*10**9;c=3.*10**8;p01=3.832;sigma=5.813*10**7;muo=4.*pi*10** -7;\n", + "eipsilar =2.25;\n", + "# mode TE011 . and d=2a .\n", + "omega=2*pi*f;\n", + "eta =377.;\n", + "lamda=c/f;\n", + "k=(2.*pi)/lamda;\n", + "# f=(c/(2⇤pi))⇤sqrt((p01/a)ˆ2+(%pi/(2⇤a))ˆ2); as d=2a given\n", + "a=sqrt((p01)**2+(pi/2)**2)/k;\n", + "Rs=sqrt((omega*muo)/(2.*sigma))\n", + "Qc=(k*a*eta)/(2.*Rs); # for m=l =1,n=0 and d=2a .\n", + "print \"a in meter = %.4f\"%a\n", + "print \"Qc = %.3f\"%Qc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.5 page.no:309" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "f1 in GHZ= 2.853\n", + "f2 in GHZ= 27.804\n", + "approx. value of Q due to dielectric loss = 1000\n" + ] + } + ], + "source": [ + "# program to find the resonant frequency and Q for TE01delta mode .\n", + "from math import sqrt,pi,tan\n", + "\n", + "delta=0.001;eipsilar=95.;a=0.413;L=0.008255;c=3.*10**8;\n", + "#tan((B⇤L)/2)=alpha/beta.\n", + "ko=2.405\n", + "alpha=(sqrt((2.405/a)**2-(ko)**2));\n", + "B=sqrt((eipsilar*(ko)**2) -(2.405/a)**2); # beta\n", + "f1=((c*2.405)/(2*pi*sqrt(eipsilar)*a))*10**-7;\n", + "f2=((c*2.405)/(2*pi*a))*10**-7;\n", + "print \"f1 in GHZ= %.3f\"%f1\n", + "print \"f2 in GHZ= %.3f\"%f2\n", + "Q=1/tan(delta);\n", + "print \"approx. value of Q due to dielectric loss = %.0f\"%Q" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:6.6 page.no:336" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coupling capacitor in pF = 433773.991\n", + "frequency in GHZ= 3.66602230334e-07\n" + ] + } + ], + "source": [ + "# program to find the value of the coupling capacitor required for critical coupling .\n", + "from math import pi,sqrt,atan\n", + "\n", + "l=0.02175;Zo=50;eipsilae=1.9;c=3*10^8;\n", + "fo=c/(2*l*sqrt(eipsilae)); # first resonant frequency will occur when the resonator ia about l=lamdag/2 in length .\n", + "lamdag=c/fo;\n", + "alpha=1/8.7; # in Np/m.\n", + "Q=pi/(2*l*alpha);\n", + "bc=sqrt(pi/(2*Q));\n", + "C=bc/(2*pi*fo*Zo)*10**12;\n", + "print \"coupling capacitor in pF = \",C\n", + "C=bc/(2*pi*fo*Zo);\n", + "w1=atan(2*pi*fo*C*Zo)*c/(l*sqrt(eipsilae)); # from equation tan (B⇤l) =bc ;\n", + "w1=w1*10**-8;\n", + "print \"frequency in GHZ= \",w1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.7 page.no:342" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "on taking sin (2⇤pi )=0 ,w becomes= A**2*a*c*d*t/4\n", + "fractional change in resonant frequency= 2*(-A**2*a*b*d*eo/2 + A**2*a*c*d*t/4)/(A**2*a*b*d*eo)\n" + ] + } + ], + "source": [ + "# program to derive an expression for the change in resonant frequency .\n", + "from sympy import symbols,sin,cos,integrate,limit\n", + "from math import pi\n", + "\n", + "Ey,Hx,Hz,A,Zte,n,a,p,i,x,z,d,j,k,t,y,er,eo,c,wo,w,b=symbols('Ey,Hx,Hz,A,Zte,n,a,p,i,x,z,d,j,k,t,y,er,eo,c,wo,w,b')\n", + "Ey=A*sin((pi*x)/a)*sin((pi*z)/d);\n", + "Hx=((-j*A)/Zte)*sin((pi*x)/a)*cos((pi*z)/d);\n", + "Hz=((j*pi*A)/(k*n*a))*cos((pi*x)/a)*sin((pi*z)/d); \n", + "Ey=Ey**2; #c=(er1)⇤eo;\n", + "w=c*integrate(integrate(integrate(Ey,(z,0,d)),(y,0,t)),(x,0,a));\n", + "# as sin (2⇤ pi )=0; then last term of above result will be:\n", + "w=(c*A**2*a*t*d)/4;\n", + "print \"on taking sin (2⇤pi )=0 ,w becomes= \",w\n", + "wo=((a*b*d*eo)/2)*A**2;\n", + "deltaw=(w-wo)/wo;\n", + "print \"fractional change in resonant frequency= \",deltaw" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_1.ipynb new file mode 100644 index 00000000..c4e96869 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_1.ipynb @@ -0,0 +1,401 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 7 POWER DIVIDERS DIRECTIONAL COUPLERS AND HYBRIDS" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def parallel_impedence(Z1,Z2):\n", + " return (Z1*Z2)/(Z1+Z2);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.1 page.no:360" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "not matched\n", + "reflection coefficient looking at 150 ohm line = -0.71\n", + "reflection coefficient looking at 75 ohm line = -0.14\n" + ] + } + ], + "source": [ + "# program to compute the reflection coefficients seen looking in to the output port.\n", + "# as the power is divided in to 2:1 ratio. and Pin=(1/2)⇤Voˆ2/Zo;\n", + "# so,P1=(1/3)⇤Pin;and P2=(2/3)⇤Pin ............( i)\n", + "Zo =50.;\n", + "Z1=3.*Zo; # from above condition .............( i)\n", + "Z2=(3/2)*Zo;\n", + "Zin=parallel_impedence(Z1,Z2); # input impedence to the junction .\n", + "if Zin==Zo:\n", + " print \"input is matched to the 50 ohm sources\"\n", + "else:\n", + " print \"not matched\"\n", + "Zin1=parallel_impedence(Zo,Z2); # looking in to the 150 ohm source.\n", + "Zin2=parallel_impedence(Zo,Z1); # looking in to the 75 ohm source.\n", + "tao1=(Zin1-Z1)/(Zin1+Z1);\n", + "tao2=(Zin2-Z2)/(Zin2+Z2);\n", + "print \"reflection coefficient looking at 150 ohm line = %.2f\"%tao1\n", + "print \"reflection coefficient looking at 75 ohm line = %.2f\"%tao2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.2 page.no:365" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the shunt resistance value should be in ohm= 100\n", + "the quarter wave transmission line in the divide should have a characteristic impedence in ohm = 70.7106781187\n" + ] + } + ], + "source": [ + "# program to design an equisplit wilkinson power divider for 50 ohm system impedence .\n", + "from math import sqrt\n", + "\n", + "Zo =50;\n", + "Z=sqrt(2)*Zo; # impedence of quarter wave transmission line .\n", + "R=2*Zo; # shunt resistor .\n", + "print \"the shunt resistance value should be in ohm= \",R\n", + "print \"the quarter wave transmission line in the divide should have a characteristic impedence in ohm = \",Z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.3 page.no:372" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the aperture position in mm = 9.72\n", + "the aperture size in mm = 1000.0\n", + "NOTE:the above shown results completes the design of the betha hole coupler \n" + ] + } + ], + "source": [ + "# program to design bethe-hole coupler for x-band wave guide .\n", + "from math import pi,asin\n", + "\n", + "f=9*10**9;C=20;a=0.02286;b=0.01016;\n", + "Ko=188.5;B=129;Z10 =550.9;\n", + "P10=4.22*10**-7;lamdao=0.0333;\n", + "uo=4*pi*10**-7;eo=8.854*10**-12;w=2*pi*f;\n", + "s=(a/pi)*asin(lamdao/sqrt(2*(lamdao**2-a**2)))*10**3; \n", + "# a=10⇤b;# as C=20db; # take x=a/b; so x=10;\n", + "ro=(P10/((10*w)*((((2*eo/3)+(4*uo)/(3*Z10**2))*0.944)-((4*pi**2*uo*0.056)/(3*B**2*a**2*Z10**2)))))**(1/3)*10**3;\n", + "print \"the aperture position in mm = %.2f\"%s\n", + "print \"the aperture size in mm = \",ro\n", + "print \"NOTE:the above shown results completes the design of the betha hole coupler \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.4 page.no:378" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kf = 394835.06\n", + "kb = 345030.82\n", + "thetam in degree = 70.59\n", + "ro in mm= 3009.49\n", + "r1 in mm= 1000.00\n" + ] + } + ], + "source": [ + "# program to design a four hole chebysev coupler in xband wave guide using round aperture located at s=a/4.\n", + "from math import pi\n", + "from mpmath import cosh,acosh,sin,cos,asec\n", + "\n", + "a=0.02286;b=0.01016;lamdao=0.0333;\n", + "ko=188.5;bta=129; Z10=550.9;\n", + "P10=4.22*10**-7;f=9*10**9;no=377;N=3;\n", + "s=a/4;\n", + "kf=((2*ko)/(3*no*P10))*((sin(pi*s/a)**2) -(2*(bta**2)/(ko**2))*((sin(pi*s/a)**2)+((pi**2)/((bta**2)*(a**2)))*(cos(pi*s/a)**2)));\n", + "kf=abs(kf)\n", + "kb=((2*ko)/(3*no*P10))*((sin(pi*s/a)**2)+(2*(bta**2) /(ko**2))*((sin(pi*s/a)**2)-((pi**2)/((bta**2)*(a **2)))*(cos(pi*s/a)**2)));\n", + "kb=abs(kb)\n", + "x=cosh(acosh(100)/3); # x=sec(thetam).\n", + "thetam=asec(x)*180/pi; # so , thetam=70.6 and at the band edge .\n", + "k=10**(-171.94/20);\n", + "ro=(((k/2)**(1/3))*x)*1000;\n", + "r1=(1.5*k*((x**3)-x))**(1/3)*1000;\n", + "print \"kf = %.2f\"%kf\n", + "print \"kb = %.2f\"%kb\n", + "print \"thetam in degree = %.2f\"%thetam\n", + "print \"ro in mm= %.2f\"%ro\n", + "print \"r1 in mm= %.2f\"%r1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.5 page.no:382" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the branch line impedence in ohm will be = 35.36\n" + ] + } + ], + "source": [ + "#program to design a 50 ohm branchline quadrature hybrid junction \n", + "from math import sqrt\n", + "\n", + "Zo =50.;\n", + "Z=Zo/sqrt(2)\n", + "print \"the branch line impedence in ohm will be = %.2f\"%Z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.6 page.no:387" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Zoe = sqrt(eo*er*uo)/(W*eo*er/(b/2 + s/2) + W*eo*er/(b/2 - s/2)) zoo = sqrt(eo*er*uo)/(W*eo*er/(b/2 + s/2) + W*eo*er/(b/2 - s/2) + 2*W*eo*er/s)\n" + ] + } + ], + "source": [ + "# program to determine the even and odd mode characteristic impedence.\n", + "from sympy import symbols,sqrt\n", + "\n", + "C,A,d,W,C11,C12,Ce,Co,v,eo,er,s,b,uo,Zoe,Zoo,eipsila=symbols('C,A,d,W,C11,C12,Ce,Co,v,eo,er,s,b,uo,Zoe,Zoo,eipsila');\n", + "C=A*eipsila/d;\n", + "C11=(eo*er*W)/((b-s)/2)+(eo*er*W)/((b+s)/2);\n", + "C12=er*eo*W/s;\n", + "Ce=C11;\n", + "Co=C11+2*C12\n", + "v=1/sqrt(er*eo*uo);\n", + "Zoe=1/(v*C11); # as Ce=C11; \n", + "Zoo=1/(v*Co);\n", + "print \"Zoe = \",Zoe,\" zoo = \",Zoo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.7 page.no:394" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "conductor width in cm = 0.114\n", + "conductor seperation in cm = 0.054\n" + ] + } + ], + "source": [ + "#design a 20 db single section coupled line coupler in stripline .\n", + "from math import sqrt\n", + "\n", + "C=10**(-20/20);f=3*10**9;eipsila=2.56;Zo=50;b=0.00158; \n", + "Zoe=Zo*sqrt((1+C)/(1-C));\n", + "Zoo=Zo*sqrt((1-C)/(1+C));\n", + "Zoe=eipsila*Zoe;\n", + "Zoo=eipsila*Zoo; \n", + "x=0.72; #x=w/b. \n", + "y=0.34; # y=s/b.\n", + "w=0.72*b*100;\n", + "s=0.34*b*100;\n", + "print \"conductor width in cm = %.3f\"%w\n", + "print \"conductor seperation in cm = %.3f\"%s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.8 page.no:396" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for a maximally flat response for a three= section coupler doupble derivative of C will be zero\n", + "the even and odd mode characteristic impedences for each section are :\n", + "Zoe1 = 50.63 \n", + "Zoo1= 49.38 \n", + "Zoe2= 56.69 \n", + "Zoo2= 56.69 \n", + "Zoe3= 50.63 \n", + "Zoo3= 49.38\n" + ] + } + ], + "source": [ + "# design a three section 20 db coupler with a binomial response .\n", + "from sympy import symbols,sqrt\n", + "\n", + "Zo=50;f=3*10**9;N=3;\n", + "C,C1,C2,theta=symbols('C,C1,C2,theta')\n", + "C=10**(-20/20);\n", + "print \"for a maximally flat response for a three= section coupler doupble derivative of C will be zero\"\n", + "C1=0.0125;C2=0.125;C3=0.0125;\n", + "Zoe1=Zo*sqrt((1+C1)/(1-C1));\n", + "Zoe3=Zo*sqrt((1+C3)/(1-C3));\n", + "Zoo1=Zo*sqrt((1-C1)/(1+C1));\n", + "Zoo3=Zo*sqrt((1-C1)/(1+C1));\n", + "Zoe2=Zo*sqrt((1+C2)/(1-C2));\n", + "Zoo2=Zo*sqrt((1+C2)/(1-C2));\n", + "print \"the even and odd mode characteristic impedences for each section are :\"\n", + "print \"Zoe1 = %.2f\"%Zoe1,\"\\nZoo1= %.2f\"%Zoo1,\"\\nZoe2= %.2f\"%Zoe2,\"\\nZoo2= %.2f\"%Zoo2,\"\\nZoe3= %.2f\"%Zoe3,\"\\nZoo3= %.2f\"%Zoo3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.9 page.no:407" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the characteristic impedence of the ring transmission line in ohm is = 70.71\n" + ] + } + ], + "source": [ + "#design a 180 deg. ring hybrid for a 50 ohm system impedence .\n", + "from math import sqrt\n", + "\n", + "Zo =50;\n", + "Z=sqrt(2)*Zo;\n", + "print \"the characteristic impedence of the ring transmission line in ohm is = %.2f\"%Z" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_1.ipynb new file mode 100644 index 00000000..a3c869cc --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_1.ipynb @@ -0,0 +1,459 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 MICROWAVE FILTERS" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.1 page.no:429" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nfwObl9idx5jvAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x1038efe10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# program to compute the propagation constant , phase velocity and bloch impedence .\n", + "from pylab import arange,plot,axis,title,xlabel,ylabel,subplot\n", + "from numpy import cos,sin,pi,arccos,seterr\n", + "from mpmath import acos\n", + "\n", + "Co=2.666*10**-12;\n", + "d=0.01;c=3*10**8;\n", + "Zo=50.;f=3*10**9;\n", + "p=(Co*Zo*c)/(2*d); # constant of equation given below .\n", + "y=arange(0,0.96,0.001)\n", + "x=arccos(cos(y)-p*y*sin(y)); # x=ko⇤d; and y=beta⇤d;\n", + "subplot(121)\n", + "plot(x,y)\n", + "plot(-x,y)\n", + "axis([-3,3,0,1])\n", + "title (\"k-beta diagram for first pass band \")\n", + "xlabel (\"beta-d\")\n", + "ylabel (\"ko-d\")\n", + "y=arange(3,4,0.001)\n", + "seterr(all='ignore')\n", + "x=arccos(cos(y)-p*y*sin(y)); # x=ko⇤d; and y=beta⇤d ;\n", + "subplot(122)\n", + "plot(x,y)\n", + "axis([0,3,3,4]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.2 page.no:441" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "design parameter for m=0.2195 ==> 1.3101e-06 4.6582e-10 1.2939e-05 \n", + "\n", + "design parameter for m=0.6 ==> 3.5810e-06 6.3662e-10 6.3662e-06 \n", + "\n" + ] + } + ], + "source": [ + "# program to design a low pass composite filter with cutoff frequency of 2 MHZ.\n", + "from math import sqrt\n", + "\n", + "fc=2*10**6;f=2.05*10**6;Ro=75;\n", + "L=(2*Ro)/(2*pi*fc);\n", + "C=2/(Ro*2*pi*fc);\n", + "m=sqrt(1-(fc/f)**2)\n", + "x=m*L/2;\n", + "y=m*C;\n", + "z=((1-m**2)/(4*m))*L; # x,y,z are design parameter assumed .\n", + "print \"design parameter for m=0.2195 ==> %.4e %.4e %.4e \\n\"%(x,y,z)\n", + "m=0.6\n", + "x=m*L/2;\n", + "y=m*C/2;\n", + "z=((1-m**2)/(2*m))*L; # x,y,z are design parameter assumed .\n", + "print \"design parameter for m=0.6 ==> %.4e %.4e %.4e \\n\"%(x,y,z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.3 page.no:449" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "from table we see that an attenuation of 20 db at this frequency requires that N>=8 for x = 0.375\n" + ] + } + ], + "source": [ + "# program to find out number of filter elements required .\n", + "from math import pi\n", + "\n", + "fc=8*10**9;f=11*10**9;\n", + "w=2*pi*f;\n", + "wc=2*pi*fc;\n", + "x=abs(w/wc)-1;\n", + "print \"from table we see that an attenuation of 20 db at this frequency requires that N>=8 for x = \",x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.4 page.no:447" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g1 = 0.618\n", + "g2 = 1.618\n", + "g3 = 2.0\n", + "g4 = 1.618\n", + "g5 = 0.618\n" + ] + } + ], + "source": [ + "# program to design a maximum flat low pass filter with cut off frequency of 2 GHZ.\n", + "from math import pi\n", + "\n", + "fc=2*10**9;f=3*10**9;\n", + "w=2*pi*f;\n", + "wc=2*pi*fc;\n", + "x=abs(w/wc)-1;\n", + "# from table we can see that N=5 will be sufficient .\n", + "# then prototype element values are:\n", + "g1 =0.618; g2 =1.618; g3 =2.000; g4 =1.618; g5 =0.618;\n", + "print \"g1 = \",g1\n", + "print \"g2 = \",g2\n", + "print \"g3 = \",g3\n", + "print \"g4 = \",g4\n", + "print \"g5 = \",g5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.5 page.no:460" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L1- 1.27e-16\n", + "L2- 7.26e-01\n", + "L3- 1.27e-16\n", + "C1- 1.99e-04\n", + "C2- 3.49e-20\n", + "C3- 1.99e-04\n" + ] + } + ], + "source": [ + "# design a band pass filter having a 0.5 db equal ripple respnse with N=3.\n", + "from math import pi\n", + "\n", + "N=3;Zo=50;f=1*10**9;delta=1*10**8;\n", + "L1 =1.596; L3 =1.5963; C2 =1.0967; Rl =1.000;\n", + "L_1=(L1*Zo)/(2*pi*f*delta);\n", + "C_1=delta/(2*pi*f*L1*Zo);\n", + "L_2=(delta*Zo)/(2*pi*f*C2);\n", + "C_2=C2/(2*pi*f*delta*Zo);\n", + "L_3=(L3*Zo)/(2*pi*f*delta); \n", + "C_3=delta/(2*pi*f*L3*Zo);\n", + "print \"L1- %.2e\"%L_1\n", + "print \"L2- %.2e\"%L_2\n", + "print \"L3- %.2e\"%L_3\n", + "print \"C1- %.2e\"%C_1\n", + "print \"C2- %.2e\"%C_2\n", + "print \"C3- %.2e\"%C_3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.6 page.no:466" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "from table , the normalized low pass prototype element values are = \n", + "3.3487\n", + "1.0\n", + "0.7117\n", + "3.3487\n", + "1.299\n" + ] + } + ], + "source": [ + "# design a low pass filter for fabrication using micrstrip lines .\n", + "print \"from table , the normalized low pass prototype element values are = \"\n", + "L1 =3.3487; C2 =0.7117; L3 =3.3487; Rl =1.0000;\n", + "n=1+(1/3.3487);\n", + "print(L1)\n", + "print(Rl)\n", + "print(C2)\n", + "print(L3)\n", + "print \"%.3f\"%n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.7 page.no:472" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5.92438360165\n", + "27.0054107438\n", + "22.1390892039\n", + "36.8984820064\n", + "16.2032464463\n", + "9.87397266942\n" + ] + } + ], + "source": [ + "# design a steppedimpedence low pass filter having a maximally flat response and a cutoff frequency of 2.5 GHZ.\n", + "from math import pi\n", + "\n", + "w=4*10**9;wc=2.5*10**9;Zh=150;Ro=50;Zl=10; 62\n", + "C1 =0.517; L2 =1.414; C3 =1.932; L4 =1.932; C5 =1.414; L6 =0.517;\n", + "# above values are taken from table.\n", + "# for finding electrical lengths .\n", + "x1=(C1*Zl/Ro)*(180/pi);\n", + "x2=(L2*Ro/Zh)*(180/pi);\n", + "x3=(C3*Zl/Ro)*(180/pi);\n", + "x4=(L4*Ro/Zh)*(180/pi);\n", + "x5=(C5*Zl/Ro)*(180/pi);\n", + "x6=(L6*Ro/Zh)*(180/pi);\n", + "print(x1)\n", + "print(x2)\n", + "print(x3)\n", + "print(x4)\n", + "print(x5)\n", + "print(x6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.8 page.no:486" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "attenuation in db = 20\n" + ] + } + ], + "source": [ + "# design a coupled line band pass filter with N=3.\n", + "\n", + "delta=0.1;f=1.8*10889;fo=2*10889;Zo=50;fc=1;\n", + "f=(1/delta)*((f/fo)-(fo/f));\n", + "x=abs(f/fc)-1; # the value on the horizontal scale.\n", + "attntn=20; # from above values .\n", + "print \"attenuation in db = \",attntn" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.9 page.no:489" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the cahracteristic impedence of a bandpass filter is = 265.87\n", + "for a bandpass filter using short circuited stub resonators , the corresponding result is = 3.69\n" + ] + } + ], + "source": [ + "# design a bandpass filter using three quarter wave open circuit stubs .\n", + "from math import pi\n", + "\n", + "f=2*10**9;delta=0.15;Zo=50;N=3;gn=1.5963; 63\n", + "Zon=4*Zo/(pi*gn*delta);\n", + "Z_on=(pi*Zo*delta)/(4*gn);\n", + "print \"the cahracteristic impedence of a bandpass filter is = %.2f\"%Zon\n", + "print \"for a bandpass filter using short circuited stub resonators , the corresponding result is = %.2f\"%Z_on" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.10 page.no:429" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "thetao in degree = 155.813419985\n", + "the coupling capacitor value in PF = 0.553745271333\n" + ] + } + ], + "source": [ + "# design a bandpass filter using capacitive coupled resonators , with a 0.5 db equal passband haracteristic .\n", + "from math import pi,sqrt,atan\n", + "\n", + "fo=2*10**9;delta=0.1;Zo=50;\n", + "f=2.2*10**9;g1=1.5963;\n", + "g2 =1.0967;g3=1.5963;g4=1;\n", + "f=(1/delta)*((f/fo)-(fo/f));\n", + "x=abs(f/fo)-1; # the value on the horizontal scale.\n", + "x0=sqrt((pi*delta)/(2*g1))/Zo; # x0=ZoJ1 ;\n", + "x1=((pi*delta)/(2*sqrt(g1*g2)))/Zo; # x0=ZoJn ;\n", + "B0=x0/(1-(Zo*x0)**2)\n", + "B1=x1/(1-(Zo*x1)**2)\n", + "theta0=(pi-0.5*(atan(2*Zo*B0)+atan(2*Zo*B1)))*(180/ pi);\n", + "C0=(B0/(2*pi*fo))*10**12;\n", + "print \"thetao in degree = \",theta0\n", + "print \"the coupling capacitor value in PF = \",C0" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_1.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_1.ipynb new file mode 100644 index 00000000..77872af2 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_1.ipynb @@ -0,0 +1,151 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 9 THEORY AND DESIGN OF FERRIMAGNETIC COMPONENTS" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:9.2 page.no:525" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for total reverse attenuation of 20 db,the length of the slab in cm must be = 2.41935483871\n", + "for total reverse attenuation to be at least 27 db, alpha in db/cm be > 11.16\n" + ] + } + ], + "source": [ + "# program to design an e plane resonance isolatorin x band waveguide .\n", + "\n", + "er =13; revatt =30;\n", + "deltaH=200;x=1700; # x=4⇤pi⇤Ms.\n", + "f=10*10**9;alpha_=12.4; # from graph 10.13.\n", + "L=revatt/alpha_;\n", + "alpha_1=27/L;\n", + "print \"for total reverse attenuation of 20 db,the length of the slab in cm must be = \",L\n", + "print \"for total reverse attenuation to be at least 27 db, alpha in db/cm be > \",alpha_1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:9.3 page.no:528" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the slab length required for 30db total reverse attenuation in cm = 15\n", + "cut-off wave number in m-1 = 137.428\n", + "propagation constant = 158.046\n" + ] + } + ], + "source": [ + "# program to design a resonance isolator using the H-plane ferrite slab geometry in x-band.\n", + "from mpmath import atan\n", + "from math import pi,sqrt\n", + "\n", + "f=10*10**9;delta_sbys=0.01;forpims=1700;deltaH=200;\n", + "revatt=30;ko=(2*pi*f)/(3*10**8);\n", + "Ho=f/(2.8*10**9);\n", + "# for x-band waveguide , a=2.286 cm.\n", + "a=2.286;\n", + "kc=(pi*100)/a;\n", + "betao=sqrt(ko**2-kc**2);\n", + "x=(1/pi)*atan(kc/betao); # x=c/a .\n", + "L=revatt/2;\n", + "print \"the slab length required for 30db total reverse attenuation in cm = \",L\n", + "print \"cut-off wave number in m-1 = %.3f\"%kc\n", + "print \"propagation constant = %.3f\"%betao" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:9.4 page.no:532" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the ferrite length required for the 180 deg phase shift section in cm = 3.75\n", + "the ferrite length required for the 90 deg phase shift section in cm = 1.875\n" + ] + } + ], + "source": [ + "# program to design a two slab remanent phase shifter .\n", + "from math import pi\n", + "\n", + "forpims=1786;er=13;f=10*10**9;\n", + "uo=4*pi*10**-7;ko=(2* pi*f)/(3*10**10);\n", + "fm=2.8;s=0.1;# s and a in cm.\n", + "x=(2*pi*fm*forpims)/(2*pi*f);# x=wm/w = k/uo. 6 a=2.286; # for x-band.\n", + "t=.274; #from figure 10.19;\n", + "diffphaseshift=0.4*ko*(180/pi); # differential phase shift .\n", + "L_1=180/diffphaseshift;\n", + "L_2=90/diffphaseshift;\n", + "print \"the ferrite length required for the 180 deg phase shift section in cm = \",L_1\n", + "print \"the ferrite length required for the 90 deg phase shift section in cm = \",L_2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.04_pm.png b/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.04_pm.png Binary files differnew file mode 100644 index 00000000..dc6accb5 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.04_pm.png diff --git a/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.33_pm.png b/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.33_pm.png Binary files differnew file mode 100644 index 00000000..02b3a2bf --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.33_pm.png diff --git a/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_2.00.38_pm.png b/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_2.00.38_pm.png Binary files differnew file mode 100644 index 00000000..70e74442 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_2.00.38_pm.png diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter11_Control_of_DC_Motors_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter11_Control_of_DC_Motors_1_1.ipynb new file mode 100644 index 00000000..b51d7703 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter11_Control_of_DC_Motors_1_1.ipynb @@ -0,0 +1,407 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter11 Control of DC Motors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example11.1,Pg.no.30"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rated motor current=Idc= 434.8 amps\n",
+ "Hence AC voltage for six pulse configuration= 408.89 volts\n",
+ "AC rating of field converter = 170.37 V\n",
+ "DC power= 2300.0 Watts\n",
+ "AC power= 2415.0 Watts\n",
+ "Field converter shall be locked at an angle of A= 35.61 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi \n",
+ "Idc=(200.0/460.0)*(1000.0) #Rated motor current in amps\n",
+ "Idc=round(Idc,1)\n",
+ "print 'Rated motor current=Idc=',Idc,'amps' #Thus the main armature converter will be having dc side rating of 500Amps and 460 volts \n",
+ "Ac=552.0/1.35\n",
+ "Ac=round(Ac,2)\n",
+ "print 'Hence AC voltage for six pulse configuration=',Ac,'volts' #Hence a 3phase ,415v AC supply will be adequate for armature control\n",
+ "AC=230.0/1.35\n",
+ "AC=round(AC,2)\n",
+ "print 'AC rating of field converter =',AC,'V'\n",
+ "DCp=230.0*10.0\n",
+ "print 'DC power=',DCp,'Watts'\n",
+ "ACp=1.05*2300\n",
+ "print 'AC power=',ACp,'Watts'\n",
+ "Edca=(170+170/10)*1.35 #available voltage in volts\n",
+ "Edc=1.35*230\n",
+ "A=math.acos(Edca/Edc)*180/pi\n",
+ "A=round(A,2)\n",
+ "print 'Field converter shall be locked at an angle of A=',A,'degrees'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example11.2,Pg.no.31"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Required voltage after allowing 10 percent drop=Edca= 484.0 volts\n",
+ "Cosine of the locked angle=C= 0.86\n",
+ "Converter shall be locked at an angle of A = 30.68 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi \n",
+ "Vdc=440.0 #Rated dc voltage in volts\n",
+ "Edca=Vdc+Vdc/10.0 #Required voltage after allowing 10 % drop\n",
+ "print 'Required voltage after allowing 10 percent drop=Edca=',Edca,'volts'\n",
+ "Edc=1.35*415.0\n",
+ "C=Edca/Edc\n",
+ "C=round(C,2)\n",
+ "print 'Cosine of the locked angle=C=',C\n",
+ "A=math.acos(C)*180/pi #locked angle in degrees\n",
+ "A=round(A,2)\n",
+ "print 'Converter shall be locked at an angle of A =',A,'degrees'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example11.3,Pg.no.32"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eb1= 210.0 volts\n",
+ "Eb2= 105.0 volts\n",
+ "Edca2= 145.0 volts\n",
+ "Cosine of the firing angle corresponding to 500 rpm load=C2= 0.63\n",
+ "firing angle corresponding to 500 rpm load A= 50.95 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi\n",
+ "Edca1=230.0\n",
+ "N1=1000.0\n",
+ "N2=500.0\n",
+ "Eb1=210.0\n",
+ "Eb1=Edca1-20.0\n",
+ "print 'Eb1=',Eb1,'volts'\n",
+ "Eb2=Eb1*N2/N1\n",
+ "print 'Eb2=',Eb2,'volts'\n",
+ "V=40.0 #motor armature drop at rated load in volts\n",
+ "Edca2=Eb2+V\n",
+ "print 'Edca2=',Edca2,'volts'\n",
+ "C1=1.0 #cosine of the firing angle corresponding to 1000 rpm load\n",
+ "C2=C1*Edca2/Edca1 #cosine of the firing angle corresponding to 500 rpm load\n",
+ "C2=round(C2,2)\n",
+ "print 'Cosine of the firing angle corresponding to 500 rpm load=C2=',C2\n",
+ "A=math.acos(C2)*180/pi #firing angle corresponding to 500 rpm load in degrees\n",
+ "A=round(A,2)\n",
+ "print 'firing angle corresponding to 500 rpm load A=',A,'degrees'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example11.4,Pg.np.32"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rated output voltage from the converter= Edca1= 506.0 volts\n",
+ "Cosine of the triggering angle=C2= 0.6 Triggering angle=A2= 34.38 degrees\n",
+ "Powerfactor=PF2= 0.59\n",
+ "Reactive power at 75 percent load=RP2= 71.12 KVAR\n",
+ "Sixth harmonic ripple current=I6= 16 Amps\n",
+ "Inductance required in dc circuit=L= 4.06 mH\n",
+ "Cosine of the triggering angle=C1= 0.9\n",
+ "Triggering angle=A1= 51.57 degrees\n",
+ "Powerfactor=PF1= 0.9\n",
+ "Reactive power at 75 percent load=RP1= 51.2 KVAR\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "Edca1=1.15*440.0 #Rated output voltage from the converter for rated speed of750rpm\n",
+ "print 'Rated output voltage from the converter= Edca1=',Edca1,'volts'\n",
+ "N1=750.0\n",
+ "N2=500.0\n",
+ "Edca2=Edca1*N2/N1\n",
+ "E2=415.0\n",
+ "C2=Edca2/(1.35*E2)\n",
+ "C2=round(C2,2)\n",
+ "print 'Cosine of the triggering angle=C2=',C2,\n",
+ "A2=C2*180/pi\n",
+ "A2=round(A2,2)\n",
+ "print 'Triggering angle=A2=',A2,'degrees'\n",
+ "PF2=C2*(1+math.cos(15.0*pi/180.0))/2\n",
+ "PF2=round(PF2,2)\n",
+ "print 'Powerfactor=PF2=',PF2\n",
+ "Id=200 #dc current in amps\n",
+ "I2=0.75*0.817*Id #Current at 75 percent load in amps\n",
+ "RP2=sqrt(3)*E2*I2*sqrt(1-PF2**2)/1000 #Reactive power drawn at 75% load\n",
+ "RP2=round(RP2,2)\n",
+ "print 'Reactive power at 75 percent load=RP2=',RP2,'KVAR'\n",
+ "h=6\n",
+ "Wv=24.17 #maximum voltage ripple in percent\n",
+ "Wi=8 #maximum permissible current ripple in percent\n",
+ "I6=Wi*Id/100\n",
+ "print 'Sixth harmonic ripple current=I6=',I6,'Amps'\n",
+ "W=314\n",
+ "L=(Wv*Edca1*10)/(I6*h*W)\n",
+ "L=round(L,2)\n",
+ "print 'Inductance required in dc circuit=L=',L,'mH'\n",
+ "C1=Edca1/(1.35*E2)\n",
+ "C1=round(C1,2)\n",
+ "print 'Cosine of the triggering angle=C1=',C1\n",
+ "A1=C1*180/pi\n",
+ "A1=round(A1,2)\n",
+ "print 'Triggering angle=A1=',A1,'degrees'\n",
+ "PF1=C1*(1+math.cos(15*pi/180))/2\n",
+ "PF1=round(PF1,1)\n",
+ "print 'Powerfactor=PF1=',PF1\n",
+ "I1=0.817*Id # Current at 75 percent load in amps\n",
+ "RP1=sqrt(3)*E2*I1*sqrt(1-PF1**2)/1000.0 #Reactive power drawn at 75% load\n",
+ "RP1=round(RP1,1)\n",
+ "print 'Reactive power at 75 percent load=RP1=',RP1,'KVAR'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example11.5,Pg.no.34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Cosine of the triggering angle=C= 0.82\n",
+ "Triggering angle=A= 47.0 degrees\n",
+ "Cosine of the triggering angle=C10= 0.1\n",
+ "Triggering angle=A10= 5.7 degrees\n",
+ "Active power drawn from the system at rated speed=AP= 104.5 KW\n",
+ "Reactive power drawn from the system=RP= 72.9 KVAR\n",
+ "Activepower drawn from thesystem at 10 percentrated speed=AP10= 12.7 KW\n",
+ "Reactive power drawn from the system=RP10= 126.8 KVAR\n",
+ "P= 1.7\n",
+ "Thus reactive power has increased by 74.589 percent due to reduction in motor speed\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "Edca=460\n",
+ "E2=415\n",
+ "C=Edca/(1.35*E2)\n",
+ "C=round(C,2)\n",
+ "print 'Cosine of the triggering angle=C=',C\n",
+ "A=C*180/pi\n",
+ "A=round(A,1)\n",
+ "print 'Triggering angle=A=',A,'degrees'\n",
+ "Edca10=0.1*460\n",
+ "C10=Edca10/(1.35*E2)\n",
+ "C10=round(C10,1)\n",
+ "print 'Cosine of the triggering angle=C10=',C10\n",
+ "A10=C10*180/pi\n",
+ "A10=round(A10,1)\n",
+ "print 'Triggering angle=A10=',A10,'degrees'\n",
+ "Id=10**5/Edca #dc current in amps\n",
+ "I2=0.817*Id #Current at rated speed in amps\n",
+ "AP=sqrt(3)*E2*I2*C/1000\n",
+ "AP=round(AP,1)\n",
+ "print 'Active power drawn from the system at rated speed=AP=',AP,'KW'\n",
+ "RP=sqrt(3)*E2*I2*sqrt(1-C**2)/1000 #Reactive power drawn from the system\n",
+ "RP=round(RP,1)\n",
+ "print 'Reactive power drawn from the system=RP=',RP,'KVAR'\n",
+ "AP10=sqrt(3)*E2*I2*C10/1000\n",
+ "AP10=round(AP10,1)\n",
+ "print 'Activepower drawn from thesystem at 10 percentrated speed=AP10=',AP10,'KW'\n",
+ "RP10=sqrt(3)*E2*I2*sqrt(1-C10**2)/1000 #Reactive power drawn from the system\n",
+ "RP10=round(RP10,1)\n",
+ "print 'Reactive power drawn from the system=RP10=',RP10,'KVAR'\n",
+ "P=RP10/RP\n",
+ "P=round(P,1)\n",
+ "print 'P=',P\n",
+ "print 'Thus reactive power has increased by 74.589 percent due to reduction in motor speed'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example11.6,Pg.no.35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Reactive power at rated speed and rated load =72.79KVAR\n",
+ "Reactive power at rated speed and 10 percent load= 7.279 KVAR\n",
+ "reactive power at 10 percent speed and 10 percent load= 12.708 KVAR\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "#given\n",
+ "Rp=72.79\n",
+ "Rp1=0.1*72.79 #Reactive power at rated speed and 10 percent load \n",
+ "Rp2=0.1*127.08 #reactive power at 10 percent speed and 10 percent load\n",
+ "print 'Reactive power at rated speed and rated load =72.79KVAR'\n",
+ "print 'Reactive power at rated speed and 10 percent load=',Rp1,'KVAR'\n",
+ "print 'reactive power at 10 percent speed and 10 percent load=',Rp2,'KVAR'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example11.7,Pg.no.35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Eb2= 328 volts\n",
+ "Ia= 227.0 Amps\n",
+ "Ra= 0.1 ohms\n",
+ "Terminal voltage of dc motor at 500 rpm and 75 percent load=Edca= 345.0 volts\n",
+ "Cosine of the triggering angle of the converter=C2= 0.6\n",
+ "triggering angle of the converter A= 53.1 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi\n",
+ "N1=500\n",
+ "N2=400\n",
+ "Eb1=410\n",
+ "Eb2=Eb1*N2/N1\n",
+ "print 'Eb2=',Eb2,'volts'\n",
+ "V=440 #operating voltage of dc motor in volts\n",
+ "P=100 #input power of dc motor in KW\n",
+ "Ia=P*1000/V\n",
+ "Ia=round(Ia,1)\n",
+ "print 'Ia=',Ia,'Amps'\n",
+ "Ra=(V-Eb1)/Ia;\n",
+ "Ra=round(Ra,1)\n",
+ "print 'Ra=',Ra,'ohms'\n",
+ "E2=415\n",
+ "Edca=Eb2+(0.75*Ia*Ra) #terminal voltage of dc motor at 500 rpm and 75% load\n",
+ "Edca=round(Edca,1)\n",
+ "print 'Terminal voltage of dc motor at 500 rpm and 75 percent load=Edca=',Edca,'volts'\n",
+ "C=Edca/(1.35*E2) #cosine of the triggering angle of the converter\n",
+ "C=round(C,1)\n",
+ "print 'Cosine of the triggering angle of the converter=C2=',C\n",
+ "A=math.acos(C)*180/pi #triggering angle of the converter in degrees\n",
+ "A=round(A,1)\n",
+ "print 'triggering angle of the converter A=',A,'degrees'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter12_Controllers_and_Their_Optimisation_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter12_Controllers_and_Their_Optimisation_1_1.ipynb new file mode 100644 index 00000000..243eefa2 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter12_Controllers_and_Their_Optimisation_1_1.ipynb @@ -0,0 +1,362 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 12 Controllers and Their Optimisation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.1,Pg.no.37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "permanent Error of P controller=P= 2 percent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "V=40 #gain of the controller in volts\n",
+ "P=100/(1+V) #permanent error of p controller in percent\n",
+ "print 'permanent Error of P controller=P=',P,'percent'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.2,Pg.no.37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "gain of the controller=V= 54.6 volts\n",
+ "Motor armature time constant=T1= 873.6 milliseconds\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "P=1.8 #permanent error of p controller in percent\n",
+ "V=100/1.8-1 #gain of the controller in volts\n",
+ "V=round(V,1)\n",
+ "print 'gain of the controller=V=',V,'volts'\n",
+ "G=8 #sum of all time constants in milliseconds \n",
+ "T1=2*G*V #motor armature time constant\n",
+ "T1=round(T1,1)\n",
+ "print 'Motor armature time constant=T1=',T1,'milliseconds'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.3,Pg.no.38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "time constant for the current loop=t1= 1 ms\n",
+ "Smaller time constant=G= 2.5 ms\n",
+ "Time constant of the controller in AVO=Tn= 30 ms\n",
+ "Gain of the control system=V= 6.0\n",
+ "Gain of the PI controller=Vr= 0.43\n",
+ "R1= 25.6 Kiloohms\n",
+ "C1= 1.2 microfarads\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "f=50 #frequency in hz\n",
+ "p=6 #pulse number\n",
+ "t1=1000/(2*f*p) #time constant for the current loop in ms\n",
+ "print 'time constant for the current loop=t1=',t1,'ms'\n",
+ "t2=1.5 #time constant of feedback channel in ms\n",
+ "G=t1+t2 #smaller time constant in ms\n",
+ "print 'Smaller time constant=G=',G,'ms'\n",
+ "T1=30 #bigger time constant in ms\n",
+ "Tn=T1 #time constant of the controller in ms\n",
+ "print 'Time constant of the controller in AVO=Tn=',Tn,'ms'\n",
+ "V=T1/(2*G) #gain of the control system\n",
+ "print 'Gain of the control system=V=',V\n",
+ "Vg=14 #gain of the regulating current link\n",
+ "Vr=V/Vg #gain of the PI controller\n",
+ "Vr=round(Vr,2)\n",
+ "print 'Gain of the PI controller=Vr=',Vr\n",
+ "R2=11 #R2 in KiloOhms\n",
+ "R1=R2/Vr #R1 in kiloohms\n",
+ "R1=round(R1,1)\n",
+ "print 'R1=',R1,'Kiloohms'\n",
+ "C1=Tn/R1 #C1 in microfarads\n",
+ "C1=round(C1,1)\n",
+ "print 'C1=',C1,'microfarads'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.4,Pg.no.39"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Time constant of the controller in SO=Tn= 80.0 ms\n",
+ "Gain of the control system=V= 8.75\n",
+ "Gain of the PI regulator=Vr= 8.75\n",
+ "R2= 96.25 Kiloohms\n",
+ "C2= 0.8 microfarads\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "G=20.0 #smaller time constant in ms\n",
+ "T1=350.0 #bigger time constant in ms\n",
+ "Tn=4*G #time constant of the controller in ms\n",
+ "print 'Time constant of the controller in SO=Tn=',Tn,'ms'\n",
+ "V=T1/(2*G) #gain of the control system\n",
+ "print 'Gain of the control system=V=',V\n",
+ "Vg=1.0 #gain of the regulating current link\n",
+ "Vr=V/Vg #gain of the PI regulator\n",
+ "print 'Gain of the PI regulator=Vr=',Vr\n",
+ "R1=11.0 #R1 in KiloOhms\n",
+ "R2=R1*Vr #R2 in kiloohms\n",
+ "print 'R2=',R2,'Kiloohms'\n",
+ "C2=Tn/R2 #C1 in microfarads\n",
+ "C2=round(C2,1)\n",
+ "print 'C2=',C2,'microfarads'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.5,Pg.no.39"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Time constant of the controller=Tn= 80 ms\n",
+ "Gain of the control system=V= 6\n",
+ "Natural frequency of the system=Wn= 0.118 rad/ ms\n",
+ "time taken by the system to achieve its desired value=Tf= 28.2 ms\n",
+ "Maximum overshoot for a symmetrically optimised system is 4.3 percent\n",
+ "Time at which maximum overload will occur= Tmax= 37.44 ms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "G=6 #smaller time constant in ms\n",
+ "T1=80 #bigger time constant in ms\n",
+ "Tn=T1 #time constant of the controller in ms\n",
+ "print 'Time constant of the controller=Tn=',Tn,'ms'\n",
+ "V=T1/(2*G) #gain of the control system\n",
+ "print 'Gain of the control system=V=',V\n",
+ "Wn=1/(sqrt(2)*G) #Natural frequency of the system in rad/ms\n",
+ "Wn=round(Wn,3)\n",
+ "print 'Natural frequency of the system=Wn=',Wn,'rad/ ms'\n",
+ "Tf=4.7*G #time taken by the system to achiecve i t s desired output for firsttime \n",
+ "print 'time taken by the system to achieve its desired value=Tf=',Tf,'ms'\n",
+ "print 'Maximum overshoot for a symmetrically optimised system is 4.3 percent'\n",
+ "Tmax=6.24*G #time at which maximum overload will occur in ms\n",
+ "print 'Time at which maximum overload will occur= Tmax=',Tmax,'ms'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.6,Pg.no.40"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "time constant of the controller=Tn= 80 ms\n",
+ "Gain of the control system=V= 4\n",
+ "time taken by the system to achieve its final value=Tf= 62.0 ms\n",
+ "Maximum overshoot for a symmetrically optimised system is 43 percent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "G=20 #smaller time constant in ms\n",
+ "Tn=4*G #time constant of the controller in ms\n",
+ "print 'time constant of the controller=Tn=',Tn,'ms'\n",
+ "T1=170 #bigger time constant in ms\n",
+ "V=T1/(2*G) #gain of the control system\n",
+ "print 'Gain of the control system=V=',V\n",
+ "Tf=3.1*G #time taken by the system to achiecve its final value on step input\n",
+ "print 'time taken by the system to achieve its final value=Tf=',Tf,'ms'\n",
+ "print 'Maximum overshoot for a symmetrically optimised system is 43 percent'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.7,Pg.no.40"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "time taken by the system to achieve its final value=Tf= 47.0 ms\n",
+ "Maximum overshoot for a symmetrically optimised system is 4.3 percent\n",
+ "Time at which maximum overshoot will occur =Tmax= 62.4 ms\n",
+ "Settling time=Ts= 84.0 ms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "G=10 #smaller time constant in ms\n",
+ "Tf=4.7*G #time taken by the system to achiecve its final output for firsttime\n",
+ "print 'time taken by the system to achieve its final value=Tf=',Tf,'ms'\n",
+ "print 'Maximum overshoot for a symmetrically optimised system is 4.3 percent'\n",
+ "Tmax=6.24*G #time at which maximum overshoot will occur in ms\n",
+ "print 'Time at which maximum overshoot will occur =Tmax=',Tmax,'ms'\n",
+ "Ts=8.4*G #settling time in ms\n",
+ "print 'Settling time=Ts=',Ts,'ms'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example12.8,Pg.no.41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Response for an AVO system:\n",
+ "time taken by the system to achieve its final value=Tf= 47.0 ms\n",
+ "Maximum overshoot for a symmetrically optimised system is 4.3 percent\n",
+ "Settling time=Ts= 84.0 ms\n",
+ "Response for an SO system:\n",
+ "time taken by the system to achieve its final value=Tf= 31.0 ms\n",
+ "Settling time=Ts= 166.0 ms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "print 'Response for an AVO system:'\n",
+ "G=10 #smaller time constant in ms\n",
+ "Tf=4.7*G #time taken by the system to achiecve its f i n a l output for firsttime\n",
+ "print 'time taken by the system to achieve its final value=Tf=',Tf,'ms'\n",
+ "print 'Maximum overshoot for a symmetrically optimised system is 4.3 percent'\n",
+ "Ts=8.4*G #settling time in ms\n",
+ "print 'Settling time=Ts=',Ts,'ms'\n",
+ "print 'Response for an SO system:'\n",
+ "G=10 #smaller time constant in ms\n",
+ "Tf=3.1*G #time taken by the system to achiecve its f i n a l output for firsttime\n",
+ "print 'time taken by the system to achieve its final value=Tf=',Tf,'ms'\n",
+ "Ts=16.6*G #settling time in ms\n",
+ "print 'Settling time=Ts=',Ts,'ms'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter13_Choppers_and_Transportation_system_Application_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter13_Choppers_and_Transportation_system_Application_1_1.ipynb new file mode 100644 index 00000000..ae3f361a --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter13_Choppers_and_Transportation_system_Application_1_1.ipynb @@ -0,0 +1,306 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter13 Choppers and Transportation system Application"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.1,Pg.no.43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "time constant=t= 4.0 milliseconds\n",
+ "Discontinuous condition starts from Td= 332.5 microseconds\n",
+ "Output voltage=Eo= 88.0 volts\n",
+ "Average current=Iav= 264.0 amp\n",
+ "Maximum current=Imax= 330.85 amp\n",
+ "Minimum current=Imin= 199.87 amp\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import exp\n",
+ "E=220.0 #dc supply voltage in volts\n",
+ "El=22.0 #Load voltage in volts\n",
+ "Ton=1000.0 #conducting period in microseconds\n",
+ "T=2500.0 #Total timeperiod in microseconds\n",
+ "L=1.0 #inductance in milliHenry\n",
+ "R=0.25 #resistance in ohms\n",
+ "t=L/R #time constant in milliseconds\n",
+ "print 'time constant=t=',t,'milliseconds'\n",
+ "A=0.133\n",
+ "Td=A*T #Discontinuous condition starts at\n",
+ "print 'Discontinuous condition starts from Td=',Td,'microseconds'\n",
+ "Eo=0.4*E #output voltage in volts\n",
+ "print 'Output voltage=Eo=',Eo,'volts'\n",
+ "Iav=(Eo-El)/R #Average current in amps\n",
+ "print 'Average current=Iav=',Iav,'amp'\n",
+ "Imax=((E*(1-exp(-Ton/(t*1000))))/(R*(1-exp(-T/(t*1000)))))-(El/R)\n",
+ "Imax=round(Imax,2)\n",
+ "print 'Maximum current=Imax=',Imax,'amp'\n",
+ "Imin=((E*(exp(Ton/(t*1000))-1))/(R*(exp(T/(t*1000))-1)))-(El/R)\n",
+ "Imin=round(Imin,2)\n",
+ "print 'Minimum current=Imin=',Imin,'amp'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.2,Pg.no.44"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Conduction period=Ton= 0.75 ms\n",
+ "Total time period=T= 1.0 ms\n",
+ "Blocking period=Toff= 0.25 ms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "f=1.0 #operating frequency in KHZ\n",
+ "E=220.0 #dc supply voltage in volts\n",
+ "El=165.0 #Load voltage in volts\n",
+ "Ton=El/(E*f) #conduction period in ms\n",
+ "print 'Conduction period=Ton=',Ton,'ms'\n",
+ "T=1/f #total time period in ms\n",
+ "print 'Total time period=T=',T,'ms'\n",
+ "Toff=T-Ton #blocking period in ms\n",
+ "print 'Blocking period=Toff=',Toff,'ms'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.3,Pg.no.44"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Load capacitance required for optimum frequency=C= 75.0 microfarad\n",
+ "Inductance parameters=L1=L2= 0.53 milliHenry\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi\n",
+ "E=220.0 #dc supply voltage in volts\n",
+ "Toff=200.0 #blocking period in microseconds\n",
+ "Il=50.0 #load current in amps\n",
+ "C=pi*Toff*Il/(2*E) #capacitance for optimum frequency in microfarad\n",
+ "C=75.0\n",
+ "print 'Load capacitance required for optimum frequency=C=',C,'microfarad'\n",
+ "L1=Toff**2*10**-3/C #inductance required in milliHenry\n",
+ "L2=L1\n",
+ "L1=round(L1,2)\n",
+ "print 'Inductance parameters=L1=L2=',L1,'milliHenry'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.4,Pg.no.45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Conduction period=Ton= 200.0 microseconds\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "E=220.0 #dc supply voltage in volts\n",
+ "El=660.0 #Load voltage in volts\n",
+ "Toff=100.0 #blocking period in microseconds\n",
+ "Ton=(El/E-1)*Toff #Conduction period in microseconds\n",
+ "print 'Conduction period=Ton=',Ton,'microseconds'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.5,Pg.no.45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Average voltage in the circuit=Eav= 53.0 volts\n",
+ "Conduction period=Ton= 1.2 ms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "f=200.0 #chopper frequency in HZ\n",
+ "E=220.0 #dc supply voltage in volts\n",
+ "Iav=100.0 #Average current in the circuit in amps\n",
+ "Ra=0.02 #Armature resistance in ohms\n",
+ "Rf=0.01 #Field resistance in ohms\n",
+ "Ebav=50 #Average value of the Back emf in volts\n",
+ "Eav=Iav*(Ra+Rf)+Ebav #Average voltage in the circuit in volts\n",
+ "print 'Average voltage in the circuit=Eav=',Eav,'volts'\n",
+ "Ton=Eav*1000/(E*f) #conduction period in ms\n",
+ "Ton=round(Ton,2)\n",
+ "print 'Conduction period=Ton=',Ton,'ms'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.6,Pg.no.46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rotor resistance referred to stator=R= 5.2 ohms\n",
+ "Motor torque=MT= 662.4 Snc . Watts\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "f=200.0 #chopper frequency in HZ\n",
+ "T=1000/f #total time period in ms\n",
+ "Toff=4.0 #Blocking period in ms\n",
+ "Ton=T-Toff #conduction period in ms\n",
+ "R1=2.0 #R1 in ohms\n",
+ "R2=4.0 #R2 in ohms\n",
+ "R=((R1*Ton)+(R1+R2)*Toff)/T #rotor resistance referred to stator in ohms\n",
+ "print 'Rotor resistance referred to stator=R=',R,'ohms'\n",
+ "V=415.0 #stator voltage in volts\n",
+ "s=0.02 #slip of the motor\n",
+ "MT=V**2*s/R #motor torque in Syn . Watts\n",
+ "MT=round(MT,2)\n",
+ "print 'Motor torque=MT=',MT,'Snc . Watts'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 13.7,Pg.no.46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "R2=1.5*R1\n",
+ "the above condition satisfies when Ton= Toff\n",
+ "Chopper frequency=f= 250.0 hz\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "#R1=rotor resistance before introduction of control\n",
+ "#R2=rotor resistance after introduction of control \n",
+ "print 'R2=1.5*R1'\n",
+ "R2=((R1*Ton)+(R1+R1)*Toff)/T #rotor resistance referred to stator in ohms\n",
+ "print 'the above condition satisfies when Ton= Toff'\n",
+ "T=4 #total time period in ms\n",
+ "f=1000/T #chopper frequency in hz\n",
+ "f=round(f,1)\n",
+ "print 'Chopper frequency=f=',f,'hz'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter15_The_AC_motor_control_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter15_The_AC_motor_control_1_1.ipynb new file mode 100644 index 00000000..bbd84f60 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter15_The_AC_motor_control_1_1.ipynb @@ -0,0 +1,629 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 15 The AC motor control"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.1,Pg.no.48"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of slip of motor=S2= 50.0 percentage\n",
+ "value of new stator current=I2= 250.0 Amp\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "S1=2.0 #value of slip in percentage of slip ring induction motor\n",
+ "Ns=1000.0 #value of stator speed in rpm\n",
+ "Nr=500.0 #value of rotor speed in rpm\n",
+ "S2=(Ns-Nr)*100/Ns #valu of slip in percentage of motor\n",
+ "print 'value of slip of motor=S2=',S2,'percentage'\n",
+ "I1=50.0 #stator current in amps\n",
+ "I2=I1*sqrt(S2/S1)\n",
+ "print 'value of new stator current=I2=',I2,'Amp'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.2,Pg.no.48"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of converter rated current=Icr= 75.0 amp\n",
+ "value of converter rated ac voltage=Vac= 74.07 volts\n",
+ "KVA rating of transformer=Pkva= 7.875 KVA\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "Imr=50.0 #motor field rating in amp//\n",
+ "Icr=1.5*Imr #converter rated current in amp\n",
+ "print 'value of converter rated current=Icr=',Icr,'amp'\n",
+ "Vdc=100.0 #converter dc rating in volts\n",
+ "Vac=Vdc/1.35 #converter ac rating voltage required\n",
+ "Vac=round(Vac,2)\n",
+ "print 'value of converter rated ac voltage=Vac=',Vac,'volts'\n",
+ "Pkva=(1.05*100*75)/1000 #KVA rating of the transformer\n",
+ "print 'KVA rating of transformer=Pkva=',Pkva,'KVA'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.3,Pg.no.49"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of speed N1= 1440.0 rpm\n",
+ "value of f= 0.3\n",
+ "value of new torque developed=T2= 6666.7 Watts\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "S1=0.04 #value of slip in of induction motor\n",
+ "Ns=1500.0 #value of initial speed in rpm\n",
+ "N2=1300.0 #value of speed reduced to in rpm\n",
+ "N1=Ns*(1-S1) #value of speed N1 in rpm\n",
+ "print 'value of speed N1=',N1,'rpm'\n",
+ "f=(Ns-N1)/(Ns-N2)\n",
+ "print 'value of f=',f\n",
+ "T1=2000.0 #developing torque in induction motor in watts\n",
+ "T2=T1/f #new value of torque developed by the motor in watts\n",
+ "T2=round(T2,1)\n",
+ "print 'value of new torque developed=T2=',T2,'Watts'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.4,Pg.no.49"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of new torque developed=Tb= 1000.0 Watts\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "f1a=50.0 #initial frequency in hertz\n",
+ "f1b=75.0 #value of frequency increased to in hertz\n",
+ "Ta=1500.0 #developing torque in induction motor in watts\n",
+ "Tb=Ta*f1a/f1b #new value of torque developed by the motor in watts\n",
+ "print 'value of new torque developed=Tb=',Tb,'Watts'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.5,Pg.no.50"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "torque developed by motor=T= 6889.0 watts\n",
+ "value of rotor frequency=f2= 3.0 hertz\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "V=415.0 #operating input voltage of induction motor in volts\n",
+ "S=0.04 #input slip\n",
+ "r2=1.0 #rotor resistance referred to stator in ohms\n",
+ "T=(S*V**2)/r2 #torque developed by motor in watts\n",
+ "print 'torque developed by motor=T=',T,'watts'\n",
+ "f1=75.0 #input stator frequency in hertz\n",
+ "f2=S*f1 #rotor frequency in hertz\n",
+ "print 'value of rotor frequency=f2=',f2,'hertz'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.6,Pg.no.50"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of input voltage to the motor=Vb= 249.0 volts\n",
+ "value of input power to the motor=Pb= 60.0 KVA\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "f1a=50.0 #intial frequency in hertz\n",
+ "f1b=30.0 #value of frequency reduced to in hertz\n",
+ "Va=415.0 #operating voltage of induction motor in volts\n",
+ "Vb=Va*f1b/f1a #input voltage to the motor in volts\n",
+ "print 'value of input voltage to the motor=Vb=',Vb,'volts'\n",
+ "Pa=100.0 #operating power of induction motor in KVA\n",
+ "Pb=Pa*f1b/f1a #input power to the motor in KVA\n",
+ "print 'value of input power to the motor=Pb=',Pb,'KVA'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.7,Pg.no.51"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of frequency changed to f1b= 30.0 hz\n",
+ "speed at 4 percent slip=Nb= 864.0 rpm\n",
+ "value of stator voltage to the motor=Vb= 243.75 volts\n",
+ "torque if stator drop is negligible=T= 1592.36 watts\n",
+ "rotor copper loss=P2= 6.0 KVA\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "f1a=40.0 #intial frequency in hertz\n",
+ "Pa=200.0 #input power of squirrel cage motor in KVA\n",
+ "Pb=150.0 #input power to the motor after change in speed in KVA\n",
+ "f1b=f1a*Pb/Pa #frequency changed to in hertz\n",
+ "print 'value of frequency changed to f1b=',f1b,'hz'\n",
+ "Nsa=1200.0 #motor initial syncronous speed in rpm\n",
+ "Nsb=Nsa*f1b/f1a\n",
+ "Sb=0.04\n",
+ "Nb=Nsb*(1-Sb) #speed in rpm at 4% slip\n",
+ "print 'speed at 4 percent slip=Nb=',Nb,'rpm'\n",
+ "Va=325 #operating voltage of induction motor in volts\n",
+ "Vb=Va*f1b/f1a #stator voltage to the motor in volts\n",
+ "print 'value of stator voltage to the motor=Vb=',Vb,'volts'\n",
+ "Pag=150.0 #power transferred from stator to rotor at 30 hz in KVA\n",
+ "Ws=2*3.14*Nsb/60\n",
+ "T=Pag*1000/Ws #torque if stator drop is negligible in watts\n",
+ "T=round(T,2)\n",
+ "print 'torque if stator drop is negligible=T=',T,'watts'\n",
+ "P2=Sb*Pag #rotor copper loss in KVA\n",
+ "print 'rotor copper loss=P2=',P2,'KVA'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.8,Pg.no.52"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of stator frequency increased to f1b= 57.74 hertz\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "f1a=50.0 #i n t i a l input frequency in hertz\n",
+ "Ta=2000.0 #developing torque in induction motor in watts\n",
+ "Tb=1500.0 #new value of torque reduced to in watts\n",
+ "f1b=f1a*sqrt(Ta/Tb) #value of stator frequency increased to in hertz\n",
+ "f1b=round(f1b,2)\n",
+ "print 'value of stator frequency increased to f1b=',f1b,'hertz'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.9,Pg.no.52"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "firing angle starts from A1= 84.0 degrees\n",
+ "firing angle ends at A2= 65.2 degrees\n",
+ "input power factor=IPF= 0.0591\n",
+ "distortion factor=Mh= 0.3379\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "Vom1=sqrt(2)*41.5 #starting rms value of output voltage\n",
+ "Vom2=sqrt(2)*166 #ending rms value of output voltage\n",
+ "V=415.0 #operating voltage of cyclo converter\n",
+ "A1=(math.acos(Vom1/(1.35*V)))*180/pi #firing angle starts from\n",
+ "A1=round(A1,1)\n",
+ "print 'firing angle starts from A1=',A1,'degrees'\n",
+ "A2=(math.acos(Vom2/(1.35*V)))*180/pi #f i r i n g angle ends at \n",
+ "A2=round(A2,1)\n",
+ "print 'firing angle ends at A2=',A2,'degrees'\n",
+ "PFl=0.8 #load power factor\n",
+ "IPF=math.cos(pi*7/15)*PFl/sqrt(2) #input power factor\n",
+ "DF=0.7 #input displacement factor\n",
+ "IPF=round(IPF,4)\n",
+ "print 'input power factor=IPF=',IPF\n",
+ "Mh=math.cos(pi*0.3627)*PFl/(sqrt(2)*DF)\n",
+ "Mh=round(Mh,4)\n",
+ "print 'distortion factor=Mh=',Mh"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.10,Pg.no.53"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "trigger angle ranges fromA5= 83.99 degrees\n",
+ "trigger angle ranges upto A51= 96.01 degrees\n",
+ "highest value of input power factor=HIPF= 0.2\n",
+ "lowest value of input power factor=LIPF= 0.07\n",
+ "highest value of distortion factor=HDF= 0.27\n",
+ "lowest value of distortion factor=LDF= 0.09\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt,pi\n",
+ "Vo5m=sqrt(2)*41.5 #rms value of output voltage\n",
+ "V=415.0 #operating voltage of cyclo converter\n",
+ "A5=(math.acos(Vo5m/(1.35*V)))*180/pi #trigger angle ranges from\n",
+ "A5=round(A5,2)\n",
+ "print 'trigger angle ranges fromA5=',A5,'degrees'\n",
+ "A51=180.0-A5 #trigger angle ranges upto\n",
+ "A51=round(A51,2)\n",
+ "print 'trigger angle ranges upto A51=',A51,'degrees'\n",
+ "LPF=0.9 #load power factor\n",
+ "CA15=0.3132 #maximum cosine value corresponding to operating frequency 15hz\n",
+ "HIPF=CA15*LPF/sqrt(2) #highest value of input power factor\n",
+ "HIPF=round(HIPF,2)\n",
+ "print 'highest value of input power factor=HIPF=',HIPF\n",
+ "LIPF=math.cos(A5*pi/180)*LPF/sqrt(2) #lowest value of input power factor\n",
+ "LIPF=round(LIPF,2)\n",
+ "print 'lowest value of input power factor=LIPF=',LIPF\n",
+ "IDF=0.75 #input displacement factor\n",
+ "HDF=CA15*LPF/(sqrt(2)*IDF) #highest value of distortion factor\n",
+ "HDF=round(HDF,2)\n",
+ "print 'highest value of distortion factor=HDF=',HDF\n",
+ "LDF=HDF*math.cos(A5*pi/180)/CA15 #lowest value of distortion factor\n",
+ "LDF=round(LDF,2)\n",
+ "print 'lowest value of distortion factor=LDF=',LDF"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.11,Pg.no.54"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "highest value of cosAm= 0.866\n",
+ "laod power factor of cyclo converter= 0.817\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "PFm=0.5 #highest value of input factor\n",
+ "Am=3.14/6 #highest value of input powerfactor occurs at 30 degrees\n",
+ "A=math.cos(Am) #highest value of cosAm if firingangle ranging from 30 to 150\n",
+ "A=round(A,3)\n",
+ "print 'highest value of cosAm=',A\n",
+ "PFl=(sqrt(2)*PFm)/A\n",
+ "PFl=round(PFl,3)\n",
+ "print 'laod power factor of cyclo converter=',PFl"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.12,Pg.no.54"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "input displacement factor= 0.857\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "PFi=0.6 #input powerfactor\n",
+ "DF=0.7 #distortion factor\n",
+ "IDF=PFi/DF #input displacement factor\n",
+ "IDF=round(IDF,3)\n",
+ "print 'input displacement factor=',IDF"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.13,Pg.no.54"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "firing angle of cyclo converter drive=A= 81.0 degrees\n",
+ "distortion factor=DF= 0.143\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "PFi=0.1 #input powerfactor\n",
+ "PFl=0.9 #load powerfactor\n",
+ "A=(math.acos(sqrt(2)*PFi/PFl))*180/3.14 #firing angle indegrees\n",
+ "A=round(A,2)\n",
+ "print 'firing angle of cyclo converter drive=A=',A,'degrees'\n",
+ "IDF=0.7 #leading input displacement factor\n",
+ "DF=PFi/IDF #distortion factor\n",
+ "DF=round(DF,3)\n",
+ "print 'distortion factor=DF=',DF"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.14,Pg.no.55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "triggering angle of negative group=An= 150.0 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "Ap=30.0 #triggering angle of positive group in degrees\n",
+ "An=180-Ap #triggering angle of negative group in degrees\n",
+ "print 'triggering angle of negative group=An=',An,'degrees'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.15,Pg.no.55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "input current to the converter=I= 100.362 amp\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "V=415.0 #input operating voltage of cycloconverter in volts\n",
+ "Pi=50.0 #input power of the cycloconverter in KVA\n",
+ "PF=0.8 #input power factor\n",
+ "A=0.785 #firing angle in radians \n",
+ "I=(Pi*1000*sqrt(2))/(3*V*PF*math.cos(A)) #input current to the converter in amp\n",
+ "I=round(I,3)\n",
+ "print 'input current to the converter=I=',I,'amp'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 15.16,Pg.no.56"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "load power factor of motor=PF= 0.83\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "Vo=200.0 #input operating voltage of cycloconverter in volts\n",
+ "Po=50*10**3 #input power of the cycloconverter in VA\n",
+ "Io=100.0 #drawing current from motor in amp\n",
+ "PF=Po/(3*Vo*Io) #load power factor\n",
+ "PF=round(PF,2)\n",
+ "print 'load power factor of motor=PF=',PF"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter16_Faults_and_Protection_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter16_Faults_and_Protection_1_1.ipynb new file mode 100644 index 00000000..665e6a39 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter16_Faults_and_Protection_1_1.ipynb @@ -0,0 +1,284 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter16 Faults and Protection"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example16.1,Pg.no.57"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "peak inverse voltage of the device=PIV= 2969.71 Volts\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "V=415.0 #AC input voltage\n",
+ "Vf=2.53 #voltage safety factor\n",
+ "PIV=2*sqrt(2)*V*Vf #peak inverse voltage of the device\n",
+ "PIV=round(PIV,2)\n",
+ "print 'peak inverse voltage of the device=PIV=',PIV,'Volts'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example16.2,Pg.no.57"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "voltage safety factor of the device=Vf= 2.3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "V=415.0 #AC input voltage in volts\n",
+ "PIV=1350.0 #peak inverse voltage of the device in volts\n",
+ "Vf=PIV/(sqrt(2)*V) #voltage safety factor of the device\n",
+ "Vf=round(Vf,2)\n",
+ "print 'voltage safety factor of the device=Vf=',Vf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example16.3,Pg.no.58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "choke power of the converter=Pc= 8.0 KVA\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "P=100.0 #input power in KVA\n",
+ "Xt=0.04 #limiting ac reactance value\n",
+ "Fov=2.0 #current ovarload factor\n",
+ "Pc=Xt*P*Fov #choke power of the converter in KVA\n",
+ "print 'choke power of the converter=Pc=',Pc,'KVA'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example16.4,Pg.no.58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "capacitance in snubber circuit=C= 625.0 nanofarads\n",
+ "Resistance in snubber circuit=R= 3.58 Kilo Ohms\n",
+ "Permissible dv/dt of the circuit= 30.0 MV/s\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "Ls=0.1 #stray inductance in the circui t in milli Henry\n",
+ "L=2*Ls #inductance required for the snubber ckt for protection in mH\n",
+ "Im=250.0 #mean value of current in amp\n",
+ "C=2.5*Im #capacitance required for the snubber ckt in nano Farads\n",
+ "print 'capacitance in snubber circuit=C=',C,'nanofarads'\n",
+ "R=2*100*sqrt(L/C) #resistance in snubber circ uit in Kilo Ohms\n",
+ "R=round(R,2)\n",
+ "print 'Resistance in snubber circuit=R=',R,'Kilo Ohms'\n",
+ "Pdif=1*30.0 #permissible dv/dt of the circuit\n",
+ "print 'Permissible dv/dt of the circuit=',Pdif,'MV/s'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example16.5,Pg.no.59"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "number of plates in series in the circuit=N= 9.6\n",
+ "So,we will use 10 plates in the circuit\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "V=240.0 #dc input voltage in volts\n",
+ "Vh=25.0 #each selenium plate handling voltage in volts\n",
+ "N=V/Vh #number of plates in series in the circuit\n",
+ "print 'number of plates in series in the circuit=N=',N\n",
+ "print 'So,we will use 10 plates in the circuit'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example16.6,Pg.no.59"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "number of plates in series in each direction =N= 9.0\n",
+ "total number of plates in series in both directions=Nt= 18.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "V=230.0 #ac input voltage in volts\n",
+ "Vh=30.0 #each selenium plate handling voltage in volts\n",
+ "N=(V/Vh)+1 #number of plates in series in each direction in the ckt\n",
+ "N=round(N,0)\n",
+ "print 'number of plates in series in each direction =N=',N\n",
+ "Nt=2*N #total number of plates in series in the circuit\n",
+ "Nt=round(Nt,0)\n",
+ "print 'total number of plates in series in both directions=Nt=',Nt"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example16.7,Pg.no.59"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "number of plates in each branch=N= 15.0\n",
+ "total number of plates=Nt= 45.0\n",
+ "Armature circuit inductance=L= 5.25 mH\n",
+ "Energy stored in armature circuit=Es= 48.55 wattsec\n",
+ "Energy dissipated per plate=Ed= 3.24 wattsec\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "V=415.0 #ac input voltage in volts\n",
+ "Vdc=440.0 #supplied voltage to dc motor in volts\n",
+ "Vh=30.0 #each selenium plate handling voltage in volts\n",
+ "N=Vdc/Vh #number of plates in series in each direction in the ckt\n",
+ "N=15.0\n",
+ "print 'number of plates in each branch=N=',N\n",
+ "Nt=3*N #total number of plates in series in the circuit\n",
+ "Nt=round(Nt,0)\n",
+ "print 'total number of plates=Nt=',Nt\n",
+ "Ipa=136.0 #peak armature current in amperes\n",
+ "T=30.0 #time constant in milliseconds\n",
+ "R=0.175 #Armature resistance in Ohms\n",
+ "L=T*R #Armature circuit Inductance in milliHenry\n",
+ "L=round(L,2)\n",
+ "print 'Armature circuit inductance=L=',L,'mH'\n",
+ "Es=0.5*L*Ipa**2*10**-3 #Energy stored in armature circuit in wattsec\n",
+ "Es=round(Es,2)\n",
+ "print 'Energy stored in armature circuit=Es=',Es,'wattsec'\n",
+ "Ed=Es/N #Energy dissipated per plate in wattsec\n",
+ "Ed=round(Ed,2)\n",
+ "print 'Energy dissipated per plate=Ed=',Ed,'wattsec'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter3_Fabrication_and_Thermal_characteristics_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter3_Fabrication_and_Thermal_characteristics_1_1.ipynb new file mode 100644 index 00000000..375cee34 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter3_Fabrication_and_Thermal_characteristics_1_1.ipynb @@ -0,0 +1,213 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter3 Fabrication and Thermal characteristics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.1, Pg.no 10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of junction temperature= 72.5 c\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "Xa=50 #Ambient temperature\n",
+ "P=150 #on state power loss in Watts\n",
+ "Rjc=0.02 #junction case thermal resistance\n",
+ "Rcs=0.05 #case sink thermal resistance\n",
+ "Rsa=0.08 #sink atmosphere thermal resistance\n",
+ "Xj=Xa+P*(Rjc+Rcs+Rsa) #junction temperature \n",
+ "Xj=round(Xj,1)\n",
+ "print 'value of junction temperature=',Xj,'c'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2,Pg.no 10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of time period of one cycle= 248 s\n",
+ "value of junction temperature= 54.75 c\n",
+ "power required to cool down= 325 watts\n",
+ "value of maximum junction temperature= 106.01 c\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import exp\n",
+ "Xa=50 #Ambient temperature\n",
+ "P20=25 #on state power loss at 20%load in Watts\n",
+ "P200=350 #on state power loss at 200%load in Watts\n",
+ "Rjc=0.02 #junction case thermal resistance\n",
+ "Rcs=0.05 #case sink thermal resistance\n",
+ "Rsa=0.12 #sink atmosphere thermal resistance at 20% load cycle\n",
+ "T1=60 #time period for the supply of 200% load\n",
+ "T=((200**2-202)*T1)/(100**2-20**2) #time period of one cycle\n",
+ "print 'value of time period of one cycle=',T,'s'\n",
+ "Ts=140 #thermal time constant for heat sink\n",
+ "Xj20=Xa+P20*(Rjc+Rcs+Rsa) #junction temperature\n",
+ "print 'value of junction temperature=',Xj20,'c'\n",
+ "P=P200 -P20 #power required to cool down from 200 %load cycle to 20% load cycle\n",
+ "print 'power required to cool down=',P,'watts'\n",
+ "Rsa200=((Rsa)*(1-exp(-T1/Ts)))/(1-exp(-T/Ts)) #sink atmosphere thermal resistance at 200% load cycle\n",
+ "Xj200=Xj20+(P*(Rjc+Rcs+Rsa200)) #maximum junction temperature\n",
+ "Xj200=round(Xj200,2)\n",
+ "print 'value of maximum junction temperature=',Xj200,'c'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.3 ,Pg.no11"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of junction temperature= 62.0 c\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "Xa=35 #Ambient temperature\n",
+ "P=150 #on state power loss in Watts\n",
+ "Rjc=0.01 #junction case thermal resistance\n",
+ "Rcs=0.08 #case sink thermal resistance\n",
+ "Rsa=0.09 #sink atmosphere thermal resistance\n",
+ "Xj=Xa+P*(Rjc+Rcs+Rsa) #junction temperature\n",
+ "print 'value of junction temperature=',Xj,'c'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.4,Pg.no 12"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of on state power loss= 416.67 watts\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "Xa=45 #Ambient temperature \n",
+ "Rjs=0.1 #junction sink thermal resistance \n",
+ "Rsa=0.08 #sink atmosphere thermal resistance \n",
+ "Xj=120 #junction temperature\n",
+ "P=(Xj-Xa)/(Rjs+Rsa) #on state power loss\n",
+ "P=round(P,2)\n",
+ "print 'value of on state power loss=',P,'watts'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.5,Pg.no 12"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of case sink thermal resistance= -0.115 c/w\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "Xa=40 #Ambient temperature\n",
+ "P=300 #on state power loss in Watts\n",
+ "Rjc=0.015 #junction case thermal resistance\n",
+ "Rsa=0.1 #sink atmosphere thermal resistance\n",
+ "Xj=105 #junction temperature\n",
+ "Rcs=((Xj-Xa)/(P))-(Rjc+Rsa) #case sink thermal resistance\n",
+ "print 'value of case sink thermal resistance=',Rcs,'c/w'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter4_Series_and_Parallel_Connection_of_Thyristors_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter4_Series_and_Parallel_Connection_of_Thyristors_1_1.ipynb new file mode 100644 index 00000000..6a939497 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter4_Series_and_Parallel_Connection_of_Thyristors_1_1.ipynb @@ -0,0 +1,106 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter4 Series and Parallel Connection of Thyristors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.1,Pg.no 13"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of Devices in Series= 5.0\n",
+ "Number of Devices in Parallel= 3.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "Vc=3500 #voltage rating of circuit\n",
+ "Vt=750 #voltage rating of each thyristor\n",
+ "Ic=1500 #current rating of circuit\n",
+ "It=500 #current rating of each thyristor\n",
+ "DF=0.1 #Derating factor of circuit\n",
+ "Ns=Vc/(Vt*(1-DF)) #number of devices in series\n",
+ "Ns=round(Ns,0)\n",
+ "print 'Number of Devices in Series=',Ns\n",
+ "Np=Ic/(It*(1-DF)) #number of devices in parallel\n",
+ "Np=round(Np,0)\n",
+ "print 'Number of Devices in Parallel=',Np"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.2,Pg.no 13"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of equivalent resistance=R= 20000.0 ohms\n",
+ "value of equivalent capacitance=C1= 0.5 microfarads\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "Ed=20.0 #permissible difference in voltage across devices in Volts\n",
+ "Id=1*10**-3 #maximum difference in latching current across devices in Amperes\n",
+ "Qd=10.0 #difference in recovery charge in Micro coloumbs\n",
+ "Vd=20.0 #permissible difference in blocking voltage in Volts\n",
+ "R=Ed/Id #equivalent resistance in Ohms\n",
+ "R1=R\n",
+ "print 'value of equivalent resistance=R=',R1,'ohms'\n",
+ "C1=Qd/Vd #equivalent capacitance in Micro farads\n",
+ "print 'value of equivalent capacitance=C1=',C1,'microfarads'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter5_Line_Commutated_converters_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter5_Line_Commutated_converters_1_1.ipynb new file mode 100644 index 00000000..5c63d3fd --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter5_Line_Commutated_converters_1_1.ipynb @@ -0,0 +1,352 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter5 Line Commutated converters"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.1,Pg.no15"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "cosine of the firing angle=C= 0.79\n",
+ "firing angle of the converter=A= 37.81 degrees\n",
+ "AC terminal power=Pac= 58.83 KW\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi\n",
+ "Edc=440 #dc terminal voltage of the thyristor in volts\n",
+ "E2=415 #input voltage of the thyristor in volts\n",
+ "Id=100 #dc motor current in amps\n",
+ "C=Edc/(1.35*E2)\n",
+ "C=round(C,2)\n",
+ "print 'cosine of the firing angle=C=',C\n",
+ "A=math.acos(C)*180/pi\n",
+ "A=round(A,2)\n",
+ "print 'firing angle of the converter=A=',A,'degrees'\n",
+ "Pac=1.05*1.35*E2*Id/1000 #Ac terminal power in Kilo watts\n",
+ "Pac=round(Pac,2)\n",
+ "print 'AC terminal power=Pac=',Pac,'KW'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.2,Pg.no15"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "AC line current of the thyristor=I2= 163.4 amperes\n",
+ "effective reactance of the thyristor=Xt= 0.15 ohms\n",
+ "cosine value of the commutational angle=C= 0.96\n",
+ "commutation angle=CA= 16.2602047083 degrees\n",
+ "Inductive voltage regulation=IVR= 0.02\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "Id=200 #rated dc current in amperes\n",
+ "I2=0.817*Id #AC line current in amperes\n",
+ "print 'AC line current of the thyristor=I2=',I2,'amperes'\n",
+ "E2=415 #AC line voltage in volts\n",
+ "Xt=0.06*E2/I2 #effective reactance of the thyristor in ohms\n",
+ "Xt=round(Xt,2)\n",
+ "print 'effective reactance of the thyristor=Xt=',Xt,'ohms'\n",
+ "C=1-((Id*Xt)/(E2*sqrt(3))) #cosine value of the commutational angle\n",
+ "C=round(C,2)\n",
+ "print 'cosine value of the commutational angle=C=',C\n",
+ "CA=math.acos(C)*180/pi\n",
+ "print 'commutation angle=CA=',CA,'degrees'\n",
+ "IVR=(1-C)/2 #inductive voltage regulation\n",
+ "IVR=round(IVR,3)\n",
+ "print 'Inductive voltage regulation=IVR=',IVR"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.3,Pg.no16"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "maximum value of dc voltage=Emax2= 586.9 volts\n",
+ "rms current through the device=Irms= 56.82 amps\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt,pi\n",
+ "E2=415 #input voltage in volts\n",
+ "Edc=1.17*E2 #dc terminal voltage in volts \n",
+ "Emax2=sqrt(2)*E2 #maximum value of dc voltage\n",
+ "Z=2 #total impedance in ohms\n",
+ "Emax2=round(Emax2,2)\n",
+ "print 'maximum value of dc voltage=Emax2=',Emax2,'volts'\n",
+ "Irms=Emax2*sqrt(pi/3+sqrt(3)/4)/(2*pi*Z)\n",
+ "Irms=round(Irms,2)\n",
+ "print 'rms current through the device=Irms=',Irms,'amps'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.4,Pg.no 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "cosine of the firing angle=C= 0.82\n",
+ "firing angle of the converter=A= 34.92 degrees\n",
+ "dc power delivered by the converter=Pdc= 92 KW\n",
+ "AC terminal power=Pac= 96.6 KVA\n",
+ "AC line current=Iac= 134.39 amps\n",
+ "Branch current through the device=Ib= 116.0 amps\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt,pi\n",
+ "Edc=460 #dc terminal voltage of the thyristor in volts\n",
+ "E2=415 #input voltage of the thyristor in volts\n",
+ "Id=200 #dc motor current in amps\n",
+ "C=Edc/(1.35*E2)\n",
+ "C=round(C,2)\n",
+ "print 'cosine of the firing angle=C=',C\n",
+ "A=math.acos(C)*180/pi\n",
+ "A=round(A,2)\n",
+ "print 'firing angle of the converter=A=',A,'degrees'\n",
+ "Pdc=Edc*Id/1000 #dc power delivered by the converter in kilo Watts\n",
+ "print 'dc power delivered by the converter=Pdc=',Pdc,'KW'\n",
+ "Pac=1.05*Pdc #Ac terminal power in KVA\n",
+ "print 'AC terminal power=Pac=',Pac,'KVA'\n",
+ "Iac=Pac*1000/(sqrt(3)*E2)\n",
+ "Iac=round(Iac,2)\n",
+ "print 'AC line current=Iac=',Iac,'amps'\n",
+ "Ib=0.58*Id #Branch current through the device in amps\n",
+ "print 'Branch current through the device=Ib=',Ib,'amps'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.5,Pg.no 17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "cosine value of the commutational angle=C= 0.96\n",
+ "effective reactance of the thyristor=Xt= 0.19 ohms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "Id=150 #rated dc current in amperes\n",
+ "E2=415 #AC line voltage in volts\n",
+ "Emax=sqrt(2)*E2\n",
+ "C=math.cos(16*pi/180) #cosine value of the commutational angle\n",
+ "C=round(C,2)\n",
+ "print 'cosine value of the commutational angle=C=',C\n",
+ "Xt=(1-C)*E2*sqrt(3)/Id #effective reactance of the thyristor in ohms\n",
+ "Xt=round(Xt,2)\n",
+ "print 'effective reactance of the thyristor=Xt=',Xt,'ohms'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.6,Pg.no 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "AC load current=Id= 63.81 amps\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt,pi\n",
+ "E2=230 #AC line voltage in volts\n",
+ "Emax=sqrt(2)*E2 \n",
+ "C=math.cos(13*pi/180) #cosine value of the commutational angle\n",
+ "Xt=0.16 #effective reactance of the thyristor in ohms\n",
+ "Id=(1-C)*E2*sqrt(3)/Xt #AC load current in amperes\n",
+ "Id=round(Id,2)\n",
+ "print 'AC load current=Id=',Id,'amps'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.7,Pg.no 18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Average value of dc voltage=Edc= 96.6 volts\n",
+ "Effective value of voltage=Eeff= 160.27 volts\n",
+ "Load current=Id= 9.66 amps\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt,pi\n",
+ "E2=230 #input voltage in volts\n",
+ "Emax=sqrt(2)*E2 #maximum value of dc voltage\n",
+ "A=pi/6\n",
+ "Edc=Emax*(1+math.cos(A))/(2*pi)\n",
+ "Edc=round(Edc,2)\n",
+ "print 'Average value of dc voltage=Edc=',Edc,'volts'\n",
+ "Eeff=Emax*sqrt((pi-A)/(4*pi)+(math.sin(2*A)/(8*pi)))\n",
+ "Eeff=round(Eeff,2)\n",
+ "print 'Effective value of voltage=Eeff=',Eeff,'volts'\n",
+ "R=10 #total impedance in ohms\n",
+ "Id=Edc/R\n",
+ "Id=round(Id,2)\n",
+ "print 'Load current=Id=',Id,'amps'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.8,Pg.no 19"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "dc output voltage=Edc= 161.79 volts\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt,pi\n",
+ "E2=415 #input voltage in volts\n",
+ "Emax=sqrt(2)*E2 #maximum value of dc voltage\n",
+ "A=pi/6 #triggering angle in degrees\n",
+ "Edc=Emax*math.cos(A)/pi #dc output voltage in volts\n",
+ "Edc=round(Edc,2)\n",
+ "print 'dc output voltage=Edc=',Edc,'volts'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter7_Inverter_Circuits_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter7_Inverter_Circuits_1_1.ipynb new file mode 100644 index 00000000..69992bf8 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter7_Inverter_Circuits_1_1.ipynb @@ -0,0 +1,140 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter7 Inverter Circuits"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 7.1,Pg.no.20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of w= 24494.9 rad/sec\n",
+ "value of the Output Frequency=F= 3047.0 Hertz\n",
+ "value of the Attenuation Factor=AF= 0.0014\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt,exp\n",
+ "L=10*10**-3 #Inductance of s e r i e s inverter cir cui t in Henry\n",
+ "C=0.1*10**-6 #Capacitance of s e r i e s inverter ci rcu it in Farads\n",
+ "R=400 #Load Resistance in Ohms\n",
+ "Toff=0.2*10**-3 #Off time of Duty cycle in sec\n",
+ "w=sqrt((1/(L*C))-(R**2/(4*L**2))) #Angular Frequency in rad/ sec\n",
+ "w=round(w,1)\n",
+ "print 'value of w=',w,'rad/sec'\n",
+ "F=w/(3.14+(w*Toff)) #Output Frequency in Hertz\n",
+ "F=round(F,1)\n",
+ "print 'value of the Output Frequency=F=',F,'Hertz'\n",
+ "T=1/F #Time period of Output in sec\n",
+ "AF=exp((-R/(2*L))*T) #Attenuation Factor\n",
+ "AF=round(AF,4)\n",
+ "print 'value of the Attenuation Factor=AF=',AF"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 7.2,Pg.no.21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of Inductance at resonance=L= 0.04 Henry\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "C=1*10**-6 #Capacitance of series inverter circuit in Farads\n",
+ "f=5*10**3 #operating Frequency of series Inverter in Hertz\n",
+ "L=1/(C*(f**2)) #value of Inductance under Resonance condition in Henry\n",
+ "print 'value of Inductance at resonance=L=',L,'Henry'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 7.3,Pg.no.21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of resistance=R1= -12401.01 Ohms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "L=5*10**-3 #Inductance of series inverter circuit in Henry\n",
+ "C=1*10**-6 #Capacitance of series inverter circuit in Farads\n",
+ "Rl=400 #Load Resistance in Ohms\n",
+ "R2=10**4 #value of the second resistance in Ohms\n",
+ "DF=0.7 #Damping Factor value of LC filter\n",
+ "R1=(2*(DF)*(sqrt(L/C)))-R2 -(1/(Rl*C)) #value of the first resistance in Ohms\n",
+ "R1=round(R1,2)\n",
+ "print 'value of resistance=R1=',R1,'Ohms'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter8_Harmonic_and_PowerFactor_with_the_converter_system_1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter8_Harmonic_and_PowerFactor_with_the_converter_system_1_1.ipynb new file mode 100644 index 00000000..a214650a --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter8_Harmonic_and_PowerFactor_with_the_converter_system_1_1.ipynb @@ -0,0 +1,464 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter8 Harmonic and PowerFactor with the converter system"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.1,Pg.no.22"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of AC converter power=Pc= 5.06 MVAR\n",
+ "value of the capacitance of shunt filter=C = 0.4 millifarads\n",
+ "Inductance of filter=L= 1.08 milliHenry\n",
+ "Resistance of filter=R= 33.91 milliOhms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "I5=0.2 #amplitude of 5th harmonic current in Kilo Amperes\n",
+ "Vp= 11/(sqrt(3)) #Input supply phase voltage in Kilo Volts\n",
+ "P=5 #supply power per phase of filter in MVAR\n",
+ "Pc=P+((Vp**2*I5**2)/(5*P)) #AC Converter power per phase in MVAR\n",
+ "Pc=round(Pc,2)\n",
+ "print 'value of AC converter power=Pc=',Pc,'MVAR'\n",
+ "C=(Pc*10**3*3) /(11**2*314) #capacitance of the ShuntFilter in milliFarad\n",
+ "C=round(C,2)\n",
+ "print 'value of the capacitance of shunt filter=C =',C,'millifarads'\n",
+ "L=(106*10**6)/(400*4*25*250*3.14**2) #inductance of filter in mHenry\n",
+ "L=round(L,2)\n",
+ "print 'Inductance of filter=L=',L,'milliHenry'\n",
+ "Q=50 #value of Q\n",
+ "W5=2*3.14*5*50 #angular frequency of 5th harmonic\n",
+ "R=(W5*L)/Q #Resistance of filter in milliOhms\n",
+ "R=round(R,2)\n",
+ "print 'Resistance of filter=R=',R,'milliOhms'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.2,Pg.no.23"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "For six pulse converter most effective harmonic is 6th and for worst case a=90 degree\n",
+ "voltage ripple=Wv= 24.1 percent\n",
+ "Harmonic current for 6th harmonic=I6= 10.0 amp\n",
+ "additional inductance required=L= 4.93 milliHenry\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "print 'For six pulse converter most effective harmonic is 6th and for worst case a=90 degree'\n",
+ "Wv=24.1 #voltage ripple in percentage\n",
+ "print 'voltage ripple=Wv=',Wv,'percent'\n",
+ "Id=200.0\n",
+ "I6=(5*Id)/100 #Harmonic current for 6th harmonic in amp\n",
+ "I6=round(I6,1)\n",
+ "print 'Harmonic current for 6th harmonic=I6=',I6,'amp'\n",
+ "Edc=460.0 #dc voltage in volts\n",
+ "W=2*3.14*50\n",
+ "La=1.0 #inductance already present in the circuit in milliHenry\n",
+ "L=((Wv*Edc*10)/(I6*6*W))-La #additional inductance required in milliHenry\n",
+ "L=5.93-1.0\n",
+ "L=round(L,2)\n",
+ "print 'additional inductance required=L=',L,'milliHenry'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.3,Pg.no.24"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "AC line current of the thyristor=I2= 163.4 amperes\n",
+ "effective reactance of the thyristor=Xt= 0.1 ohms\n",
+ "cosine value of the commutational angle=C= 0.97\n",
+ "commutation angle=CA= 14.07 degrees\n",
+ "cosine value of the firing value=F= 0.72\n",
+ "firing angle=FA= 43.95 degrees\n",
+ "AC line current=I2= 163.4 amps\n",
+ "Current through each device=Ied= 116.0 amps\n",
+ "power factor=PF= 0.71\n",
+ "active power drawn from the mains=AP= 83390.99 Watts\n",
+ "Reactive power drawn=RP= 82709.96 VAR\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt,pi\n",
+ "Id=200 #rated dc current in amperes\n",
+ "I2=0.817*Id #AC line current in amperes\n",
+ "print 'AC line current of the thyristor=I2=',I2,'amperes'\n",
+ "E2=415 #AC line voltage in volts\n",
+ "Edc=400 #dc terminal voltage in volts\n",
+ "Xt=0.04*E2/I2 #effective reactance of the thyristor in ohms\n",
+ "Xt=round(Xt,2)\n",
+ "print 'effective reactance of the thyristor=Xt=',Xt,'ohms'\n",
+ "C=1-((Id*Xt)/(E2*sqrt(3))) #cosine value of the commutational angle\n",
+ "C=round(C,2)\n",
+ "print 'cosine value of the commutational angle=C=',C\n",
+ "CA=math.acos(C)*180/pi\n",
+ "CA=round(CA,2)\n",
+ "print 'commutation angle=CA=',CA,'degrees'\n",
+ "F=Edc/(1.35*E2*(1+C)/2) #cosine value of the firing angle\n",
+ "F=round(F,2)\n",
+ "print 'cosine value of the firing value=F=',F\n",
+ "FA=math.acos(F)*180/pi\n",
+ "FA=round(FA,2)\n",
+ "print 'firing angle=FA=',FA,'degrees'\n",
+ "I2=0.817*Id #AC line current in amps\n",
+ "print 'AC line current=I2=',I2,'amps'\n",
+ "Ied=0.58*Id #current through each device in amps\n",
+ "print 'Current through each device=Ied=',Ied,'amps'\n",
+ "PF=F*(1+C)/2 #power factor\n",
+ "PF=round(PF,2)\n",
+ "print 'power factor=PF=',PF\n",
+ "AP=sqrt(3)*E2*I2*PF #active power drawn from the mains in Watts\n",
+ "AP=round(AP,2)\n",
+ "print 'active power drawn from the mains=AP=',AP,'Watts'\n",
+ "RP=sqrt(3)*E2*I2*sqrt(1-PF**2) #reactive power in VAR\n",
+ "RP=round(RP,2)\n",
+ "print 'Reactive power drawn=RP=',RP,'VAR'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.4,Pg.no.25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "AC line current of the thyristor=I2= 81.7 amperes\n",
+ "power factor=PF= 0.69\n",
+ "Reactive power to be supplied by shunt compensator=RP= 23557.8 VAR\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "Id=100 #rated dc current in amperes\n",
+ "I2=0.817*Id #AC line current in amperes\n",
+ "I2=round(I2,2)\n",
+ "print 'AC line current of the thyristor=I2=',I2,'amperes'\n",
+ "E2=230 #AC line voltage in volts\n",
+ "Edc=200 #dc terminal voltage in volts\n",
+ "PF=math.cos(pi/4)*(1+math.cos(pi/10))/2 #power factor\n",
+ "PF=round(PF,2)\n",
+ "print 'power factor=PF=',PF\n",
+ "RP=sqrt(3)*E2*I2*sqrt(1-PF**2) #reactive power to be supplied by shunt compensator in VAR\n",
+ "RP=round(RP,2)\n",
+ "print 'Reactive power to be supplied by shunt compensator=RP=',RP,'VAR'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.5,Pg.no.25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of MVAR rating of the capacitor=Pc= 7.68 MVAR\n",
+ "value of the capacitance of shunt filter=C = 606.41 microfarads\n",
+ "Inductance of filter=L= 0.01 milliHenry\n",
+ "Resistance of filter=R= 0.99 milliOhms\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "I11=400/11 #amplitude of 11th harmonic current in Amperes\n",
+ "V1= 11/(sqrt(3)) #Input supply phase voltage in Kilo Volts\n",
+ "P=7 #supply power per phase of f i l t e r in MVAR/\n",
+ "Pc=P+((V1**2*I11**2*10**-3)/(11*P)) #AC Converter MVAR rating of the capacitor\n",
+ "Pc=round(Pc,2)\n",
+ "print 'value of MVAR rating of the capacitor=Pc=',Pc,'MVAR'\n",
+ "W=2*3.14*50\n",
+ "C=(Pc*10**6)/(V1**2*W) #capacitance of the ShuntFilter in microFarad\n",
+ "C=round(C,2)\n",
+ "print 'value of the capacitance of shunt filter=C =',C,'microfarads'\n",
+ "W11=11*W\n",
+ "L=10**8/(C*W11**2) #inductance of filter in mHenry\n",
+ "L=round(L,2)\n",
+ "print 'Inductance of filter=L=',L,'milliHenry'\n",
+ "Q=35 #value of Q\n",
+ "R=(W11*L)/Q #Resistance of filter in milliOhms\n",
+ "R=round(R,2)\n",
+ "print 'Resistance of filter=R=',R,'milliOhms'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.6,Pg.no.26"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "For six pulse converter most effective harmonic is 6th and for worst case a=90 degree\n",
+ "voltage ripple=Wv= 24.1 percent\n",
+ "Harmonic current for 6th harmonic=I6= 9.81 amp\n",
+ "max. value of current ripple=Wi= 3.27 percent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "print 'For six pulse converter most effective harmonic is 6th and for worst case a=90 degree'\n",
+ "h=6.0\n",
+ "Wv=24.1 #voltage ripple in percentage\n",
+ "print 'voltage ripple=Wv=',Wv,'percent'\n",
+ "Edc=460.0 #dc voltage in volts\n",
+ "W=2*3.14*50\n",
+ "Ldc=6.0 #total dc circuit inductance in milliHenry\n",
+ "I6=Wv*Edc*10/(Ldc*h*W) #Harmonic current for 6th harmonic in amp\n",
+ "I6=round(I6,2)\n",
+ "print 'Harmonic current for 6th harmonic=I6=',I6,'amp'\n",
+ "Id=300.0\n",
+ "Wi=100*I6/Id #maximum value of current ripple in percentage\n",
+ "Wi=round(Wi,2)\n",
+ "print 'max. value of current ripple=Wi=',Wi,'percent'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.7,Pg.no.27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "voltage ripple of the 6th harmonic=Wv= 17.38 percent\n",
+ "For six pulse converter most effective harmonic is 6th and for worst case A=90degrees\n",
+ "maximum voltage ripple=Wv6= 24.24 percent\n",
+ "voltage ripple of the 12th harmonic=Wv= 8.42 percent\n",
+ "maximum voltage ripple=Wv12= 11.87 percent\n",
+ "percentage reduction in max. voltage ripple=PR= 51.03 percent\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "#given\n",
+ "A=pi/4\n",
+ "h=6\n",
+ "#calculations\n",
+ "Wv=sqrt(2)*sqrt(h**2-math.cos(A)**2*(h**2-1))*100/(h**2-1)\n",
+ "Wv=round(Wv,2)\n",
+ "print 'voltage ripple of the 6th harmonic=Wv=',Wv,'percent'\n",
+ "print 'For six pulse converter most effective harmonic is 6th and for worst case A=90degrees'\n",
+ "A=pi/2\n",
+ "Wv6=sqrt(2)*sqrt(h**2-math.cos(A)**2*(h**2-1))*100/(h**2-1) #maximum voltage ripple in percentage\n",
+ "Wv6=round(Wv6,2)\n",
+ "print 'maximum voltage ripple=Wv6=',Wv6,'percent'\n",
+ "A=pi/4\n",
+ "h=12\n",
+ "Wv=sqrt(2)*sqrt(h**2-math.cos(A)**2*(h**2-1))*100/(h**2-1)\n",
+ "Wv=round(Wv,2)\n",
+ "print 'voltage ripple of the 12th harmonic=Wv=',Wv,'percent'\n",
+ "A=pi/2\n",
+ "Wv12=sqrt(2)*sqrt(h**2-math.cos(A)**2*(h**2-1))*100/(h**2-1) #maximum voltage ripple in percentage\n",
+ "Wv12=round(Wv12,2)\n",
+ "print 'maximum voltage ripple=Wv12=',Wv12,'percent'\n",
+ "PR=(Wv6-Wv12)*100/Wv6 #percentage reduction in max. voltage ripple\n",
+ "PR=round(PR,2)\n",
+ "print 'percentage reduction in max. voltage ripple=PR=',PR,'percent'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.8,Pg.no.28"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "cosine of triggering angle=C= 0.65\n",
+ "triggering angle of the device=A= 49.46 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import sqrt\n",
+ "#givem\n",
+ "Wv=18.6\n",
+ "h=6 \n",
+ "#calculations\n",
+ "C=sqrt(14.68/35) #cosine of triggering angle\n",
+ "C=round(C,2)\n",
+ "print 'cosine of triggering angle=C=',C\n",
+ "A=math.acos(C)*180/pi\n",
+ "A=round(A,2)\n",
+ "print 'triggering angle of the device=A=',A,'degrees'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example8.9,Pg.no.29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "cosine of the triggering angle=C= 0.75\n",
+ "triggering angle of the device=A= 41.41 degrees\n",
+ "power factor=PF= 0.74\n",
+ "Reactive power to be supplied by shuntcompensator=RP= 79.0 KVAR\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "from math import pi,sqrt\n",
+ "E2=415 #AC line voltage in volts\n",
+ "Edc=380 #dc terminal voltage in volts\n",
+ "C=1.1*Edc/(1.35*E2)\n",
+ "C=round(C,2)\n",
+ "print 'cosine of the triggering angle=C=',C\n",
+ "A=math.acos(C)*180/pi\n",
+ "A=round(A,2)\n",
+ "print 'triggering angle of the device=A=',A,'degrees'\n",
+ "PF=C*(1+math.cos(pi/12))/2 #power factor\n",
+ "PF=round(PF,2)\n",
+ "print 'power factor=PF=',PF\n",
+ "Id=200\n",
+ "I2=0.817*Id\n",
+ "RP=sqrt(3)*E2*I2*sqrt(1-PF**2)/1000 #reactive power to be supplied by shunt compensator in KVAR\n",
+ "RP=round(RP,2)\n",
+ "print 'Reactive power to be supplied by shuntcompensator=RP=',RP,'KVAR'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter_2_The_Device__1_1.ipynb b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter_2_The_Device__1_1.ipynb new file mode 100644 index 00000000..e5e56c13 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter_2_The_Device__1_1.ipynb @@ -0,0 +1,250 @@ +{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 2 The Device"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.1,Page number 7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of voltage safety factor= 2.56\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "from math import pi,sqrt\n",
+ "Vpiv=1500 # peak inverse voltage\n",
+ "V=415 # main supply\n",
+ "Vf=Vpiv/(sqrt(2)*V) # voltage safety factor\n",
+ "Vf=round(Vf,2)\n",
+ "print 'value of voltage safety factor=',Vf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.2,Page number 7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of peak inverse voltage= 683.07 volts\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "from math import pi,sqrt\n",
+ "Vf=2.1 # voltage safety factor \n",
+ "V=230 # main supply\n",
+ "Vpiv=sqrt(2)*Vf*V # peak inverse voltage\n",
+ "Vpiv=round(Vpiv,2)\n",
+ "print 'value of peak inverse voltage=',Vpiv,'volts'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.3,Page number 8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of capacitive current= 0.0045 Amp\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "C=30*10**-12 # equivalent capacitance \n",
+ "diffV=150*10**6 # dv/dt value of capacitor\n",
+ "Ic=C*(diffV) # capacitive current\n",
+ "print 'value of capacitive current=',Ic,'Amp'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.4,Page number 8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of equivalent capacitance= 28.57 pico farad\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "Ic=5.0 # capacitive current in milli amperes\n",
+ "difV=175.0 # dv/dt value in mega V/s\n",
+ "C=Ic/(difV)*10**3 # equivalent capacitance in pico farad\n",
+ "C=round(C,2)\n",
+ "print 'value of equivalent capacitance=',C,'pico farad'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.5,Page number 8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of dv/dt= 240.0 Mv/s\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "Ic=6*10**-3 # capacitive current\n",
+ "C=25*10**-12 # equivalent capacitance\n",
+ "diffV=Ic/C # dv/dt value of capacitor\n",
+ "diffV=diffV/10**6\n",
+ "print 'value of dv/dt=',diffV,'Mv/s'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.6,Page number 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of dv/dt that can trigger the device= 142 V/microseconds\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "Ic=5 # capacitive current in milli amperes\n",
+ "C=35 # equivalent capacitance in pico farad\n",
+ "difV=Ic*10**3/C # value of dv/dt that can trigger the device in V/ microseconds\n",
+ "print 'value of dv/dt that can trigger the device=',difV,'V/microseconds'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.7,Page number 9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of voltage safety factor= 2.3 v\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "from math import sqrt\n",
+ "Vpiv=1350 # peak inverse voltage in volts\n",
+ "V=415 # main supply in volts\n",
+ "Vf=Vpiv/(sqrt(2)*V) # voltage safety factor\n",
+ "Vf=round(Vf,2)\n",
+ "print 'value of voltage safety factor=',Vf,'v'"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/11.PNG b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/11.PNG Binary files differnew file mode 100644 index 00000000..60b5f232 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/11.PNG diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/15.PNG b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/15.PNG Binary files differnew file mode 100644 index 00000000..5297be11 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/15.PNG diff --git a/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/8.PNG b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/8.PNG Binary files differnew file mode 100644 index 00000000..7c153a53 --- /dev/null +++ b/Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/8.PNG |