diff options
28 files changed, 7077 insertions, 0 deletions
diff --git a/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter10_sxtQrwj.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter10_sxtQrwj.ipynb new file mode 100644 index 00000000..f6183fac --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter10_sxtQrwj.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter No 10 - Propagation of radio waves" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example10.1 PageNo 412" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Field strength will reduce by 5.23 dBs\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, log10\n", + "#Given\n", + "Pt1=100#Radiated power\n", + "Pt2=30# Reduced Power \n", + "r=1#assume distance to be unity for easeof calculation\n", + "E1=300*sqrt(100)/r\n", + "E2=300*sqrt(30)/r\n", + "E=20*log10((E2/E1))# Reduction in field strength in dBs\n", + "print 'Field strength will reduce by %0.2f dBs'%(-E)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example10.2 PageNo 413" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The field strength at distance 20km is 190.53 uV/m\n" + ] + } + ], + "source": [ + "#Given\n", + "P=3#Transmitter power\n", + "ht=100# Antenna height\n", + "G=5#Antenna gain\n", + "d=20e3#distance\n", + "lamda=1\n", + "hr=1#assumed\n", + "E=((88*G*ht*hr*P**0.5)/(lamda*d**2))#field strength\n", + "print 'The field strength at distance 20km is %0.2f uV/m'%(E*1e6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example10.3 PageNo 413" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Direct ray coverage is possible over 63.03 km\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "ht=152.5\n", + "hr=9.15 # Antenna height\n", + "d=4100*(sqrt(ht)+sqrt(hr)) #distance\n", + "print 'Direct ray coverage is possible over %0.2f km'%(d*1e-3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example10.4 PageNo 414" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max possible distance for efective point to point\n", + " communication is 514.48 km\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "#b\n", + "ht=3e3\n", + "hr=5e3 # Antenna height\n", + "d=4100*(sqrt(ht)+sqrt(hr))#distance\n", + "print 'Max possible distance for efective point to point\\n communication is %0.2f km'%(d*1e-3)" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter11_vLz31KG.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter11_vLz31KG.ipynb new file mode 100644 index 00000000..b8b0be75 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter11_vLz31KG.ipynb @@ -0,0 +1,68 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter No 11 - Broadband Communication" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example11.1, page no 435" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The total no of samples per second is:\n", + "160000 samples/second\n" + ] + } + ], + "source": [ + "#Given\n", + "c=20# no of signal channels\n", + "s=8e3# Channel sampling rate\n", + "t=1/s# time interval over which ll channels are sampled once\n", + "#b\n", + "g=5e-6# guaed time for each channel sample\n", + "s_duration=t-g# duration of each sample\n", + "#c\n", + "samples_sec=c*s#\n", + "print 'The total no of samples per second is:\\n%d samples/second'%samples_sec" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter15_NAUVEiD.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter15_NAUVEiD.ipynb new file mode 100644 index 00000000..d6efc4c4 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter15_NAUVEiD.ipynb @@ -0,0 +1,153 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter No 15 - Basic Information theory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example15.1, page no 533" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The source entropy is: 1.50 bits/symbol\n" + ] + } + ], + "source": [ + "from math import log\n", + "#Given\n", + "P_A=0.5# probability of producing symbol 'A'\n", + "P_B=0.25# probability of producing symbol 'B'\n", + "P_C=0.25# probability of producing symbol 'C'\n", + "def log2(x):\n", + " return log(x,2)\n", + "H=P_A*log2(1/P_A)+P_B*log2(1/P_B)+P_C*log2(1/P_C)# the source entropy\n", + "print 'The source entropy is: %0.2f bits/symbol'%(H)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example15.2, page no 535" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The source entropy is: 1.94 bits/symbol\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "#Given\n", + "P_A=0.5\n", + "P_B=0.25\n", + "P_C=1/32\n", + "P_D=1/8\n", + "P_E=1/16\n", + "P_F=1/32# probabilities of producing respective symbol\n", + "H=(P_A*log2(1/P_A))+(P_B*log2(1/P_B))+(P_C*log2(1/P_C))+(P_D*log2(1/P_D))+(P_E*log2(1/P_E))+(P_F*log2(1/P_F))# Source Entropy\n", + "n=6\n", + "T=1\n", + "print 'The source entropy is: %0.2f bits/symbol'%(round(1000*H)/1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example15.3, page no 536" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a)\n", + " Channel capacity is: 20 Kbits/sec\n", + " Bandwidth: 5 KHz\n", + "b)\n", + " SNR for 3KHz bandwidth: 100.59\n" + ] + } + ], + "source": [ + "from math import log\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "#Given\n", + "#a\n", + "B1=4e3#Channel Bandwidth\n", + "SNR1=31#Channel SNR\n", + "C1=B1*log2(1+SNR1)#Channel Capacity\n", + "SNR2=14#Reduced SNR\n", + "B2=round(C1/log2(1+SNR2))#Bandwidth for reduced SNR with same Channel capacity\n", + "\n", + "#b\n", + "B3=3e3#Reduced Bandwidth\n", + "SNR3=(2**(C1/B3))-1#Signal Power for reduced bandwidth\n", + "print 'a)\\n Channel capacity is: %d Kbits/sec\\n Bandwidth: %d KHz\\nb)\\n SNR for 3KHz bandwidth: %0.2f'%(C1*1e-3,B2*1e-3,SNR3)\n", + "# the Answer in the book is wrong.It is printed as 90.4 for SNR3 but it should be 100.59" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter1_WSG4yVY.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter1_WSG4yVY.ipynb new file mode 100644 index 00000000..a15d86ff --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter1_WSG4yVY.ipynb @@ -0,0 +1,1411 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 : Signals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example1,page no12" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The value of the above integral is:C=0\n", + " Since C=0, the two functions: \n", + " f(t)=sin(n*wo*t)\n", + " g(t)=cos(n*wo*t) are Orthogonal\n" + ] + } + ], + "source": [ + "from numpy.random import randint\n", + "from numpy import pi, arange\n", + "from mpmath import quad, sin, cos\n", + "#Given:\n", + "n=round(randint(1000))#any integers\n", + "m=round(randint(1000))#any integers\n", + "wo=2*(n+m)*pi#Angular Freq\n", + "t=arange(0,2*pi/wo,0.01)\n", + "to=0;t1=2*pi/wo\n", + "C= quad(lambda t:sin(n*wo*t)*cos(m*wo*t),[to,t1])# integrating sin(n*wo*t)*cos(m*wo*t) function\n", + "print \"The value of the above integral is:C=%d\\n Since C=%d, the two functions: \\n f(t)=sin(n*wo*t)\\n g(t)=cos(n*wo*t) are Orthogonal\"%(C,C)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2,page no 12" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The optimum value of C to minimise the mean square error is:\n", + " C= 1.273240\n" + ] + } + ], + "source": [ + "from numpy import arange,pi\n", + "from mpmath import quad, sin\n", + "#Given:\n", + "# Curve on page no 9....fig 1.6\n", + "t=arange(0,2*pi,0.1)\n", + "t0=0\n", + "t1=2*pi\n", + "C=((quad(lambda t: sin(t),[t0,t1/2])-quad(lambda t: sin(t),[t1/2,t1]))/quad(lambda t :(sin(t))**2,[t0,t1]))\n", + "\n", + "print \"The optimum value of C to minimise the mean square error is:\\n C= %f\"%(C)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3,page no12" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a) The value of constants Cn are:\n", + "1.273237 for n= 1\n", + "\n", + "0.000000 for n= 2\n", + "\n", + "0.424406 for n= 3\n", + "\n", + "0.000000 for n= 4\n", + "\n", + "0.254636 for n= 5\n", + "\n", + "0.000000 for n= 6\n", + "\n", + "0.181874 for n= 7\n", + "\n", + "b) Mean Square error is\n", + "epsi(1) = 0.190000\n", + "\n", + "epsi(3) = 0.100000\n", + "\n", + "epsi(5) = 0.070000\n", + "\n", + "epsi(7) = 0.050000\n", + "\n" + ] + } + ], + "source": [ + "from numpy import arange\n", + "from mpmath import quad\n", + "from math import pi,sin\n", + "#Given:\n", + "#a # Referance Figure on page no 9.. (1.6d)\n", + "\n", + "t=range(0,int(2*3.14+1))\n", + "t0=0\n", + "t1=2*3.14\n", + "print 'a) The value of constants Cn are:'\n", + "C=[] \n", + "for i in range(1,8):\n", + " C.append((quad(lambda t:sin(i*t),[t0,t1/2])-quad(lambda t:sin(i*t),[t1/2,t1]))/quad(lambda t:(sin(i*t))**2,[t0,t1]))\n", + " if C[i-1] <= 0.01:\n", + " C[i-1]=0\n", + " \n", + " print '%f for n= %d\\n'%(C[i-1],i)\n", + "\n", + "#b Mean Square error\n", + "\n", + "int1=quad(lambda t:(1)**2,[t0,t1])\n", + "for n in range(1,8):\n", + " if (n%2) == 0:\n", + " C[n-1] = 0\n", + " else:\n", + " C[n-1]=4.0/(n*pi)\n", + "\n", + "\n", + "K=[]\n", + "for n in range(1,8):\n", + " \n", + " K.append(quad(lambda t:(sin(n*t))**2,[t0,t1]))\n", + " \n", + "K[n-1]=pi\n", + "S=[0]\n", + "for n in range(1,8):\n", + " S.append(S[n-1]+(((C[n-1])**2)*K[n-1]))\n", + "#Mean Square error\n", + "epsi=[]\n", + "for n in range(1,8):\n", + " epsi.append((1.0/(t1-t0)*(int1-S[n])))\n", + "\n", + "print 'b) Mean Square error is'\n", + "for n in arange(1,2+7,2):\n", + " print 'epsi(%d) = %f\\n'%(n,round(100*epsi[n-1])/100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example4,page no12" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P0 = 1\n", + "P1 = t\n", + "P2 = 1.5*t**2 - 0.5\n", + "P3 = 2.5*t**2 - 1.5\n", + "\n", + "The Constant coeff (Cn) values are :\n", + "C0 = 0.0\n", + "C1 = -1.5\n", + "C2 = 0.0\n", + "C3 = 0.875\n", + "\n", + "f(t)= 0*P0 + -1.500000*P1 + 0*P2 + 0.875000*P3\n" + ] + } + ], + "source": [ + "from sympy import symbols,solve\n", + "from mpmath import quad\n", + "from numpy import arange\n", + "#Given:\n", + "t=arange(-1,1.01,0.01)\n", + "t0=-1\n", + "t1=1\n", + "# Legendre Polynomial\n", + "t=symbols(\"t\")\n", + "P0=1\n", + "P1=t\n", + "P2=-0.5+1.5*t**2\n", + "P3=-1.5+2.5*t**2\n", + "print \"P0 =\",P0\n", + "print \"P1 =\",P1\n", + "print \"P2 =\",P2\n", + "print \"P3 =\",P3\n", + "#The Constant coeff (Cn)\n", + "C0=0.5*(quad(lambda t:1,[-1,0])+quad(lambda t:-1,[0,1]))\n", + "C1=1.5*(quad(lambda t:t,[-1,0])+quad(lambda t:-t,[0,1]))\n", + "C2=2.5*(quad(lambda t:(1.5*t**2)-0.5,[-1,0])+quad(lambda t:-(1.5*t**2)+0.5,[0,1]))\n", + "C3=3.5*(quad(lambda t:(2.5*t**3)-(1.5*t),[-1,0])+quad(lambda t:-(2.5*t**3)+(1.5*t),[0,1]))\n", + "print \"\\nThe Constant coeff (Cn) values are :\"\n", + "print \"C0 =\",C0\n", + "print \"C1 =\",C1\n", + "print \"C2 =\",C2\n", + "print \"C3 =\",C3\n", + "print \"\\nf(t)= %d*%s + %f*%s + %d*%s + %f*%s\"%(C0,\"P0\",C1,\"P1\",C2,\"P2\",C3,\"P3\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5, page no 19" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The value of a0 is: 0.500000\n", + "\n", + "The values of a(n): (upto n=10)\n", + "0\n", + "0\n", + "0\n", + "0\n", + "0\n", + "0\n", + "0\n", + "0\n", + "0\n", + "0\n", + "The values of b(n): (upto n=10)\n", + "-0.318308838986\n", + "-0.159152848691\n", + "-0.106100153783\n", + "-0.0795732827116\n", + "-0.0636567411629\n", + "-0.0530453643632\n", + "-0.0454655102642\n", + "-0.0397803578398\n", + "-0.0353583398512\n", + "-0.0318205159538\n", + "The trigonometric Fourier series for given function\n", + " can be written as:\n", + "\n", + "f(t)=-0.318309-0.159153sin(2*pi*t)-0.106100sin(4*pi*t)\n", + "-0.079573sin(6*pi*t)-0.063657sin(8*pi*t)-0.053045sin(10*pi*t)\n", + "-0.045466sin(12*pi*t)-0.039780sin(14*pi*t).......\n" + ] + } + ], + "source": [ + "from math import pi,cos,sin\n", + "from numpy import arange,trapz\n", + "#given\n", + "T=1\n", + "t0=0\n", + "wo=2*pi\n", + "P=1\n", + "t=arange(0,1.001,0.001)\n", + "f=P*t\n", + "#The trigonometric Fourier series coeff for given function\n", + "a0=(1/T)*trapz(t,f)\n", + "a=[]\n", + "a.append(0)\n", + "for n in range(1,11):\n", + " f1=[]\n", + " for tt in t:\n", + " f1.append((P*tt)*cos(wo*n*tt))\n", + " a.append((2/T)*trapz(t,f1))\n", + " \n", + " if a[(n)]<2.01:\n", + " a[(n)]=0\n", + " \n", + "b=[]\n", + "b.append(0)\n", + "for n in range(1,11):\n", + " f2=[]\n", + " for tt in t:\n", + " f2.append((P*tt)*sin(2*pi*(1/T)*n*tt))\n", + " b.append(-(2/T)*trapz(t,f2))\n", + "\n", + "# Displaying trigonometric Fourier series coeff\n", + "print \"The value of a0 is: %f\\n\"%(a0)\n", + "print \"The values of a(n): (upto n=10)\"\n", + "for n in range(1,11):\n", + " print a[(n)]\n", + "\n", + "print \"The values of b(n): (upto n=10)\"\n", + "for n in range(1,11):\n", + " print b[(n)]\n", + "\n", + "print \"The trigonometric Fourier series for given function\\n can be written as:\\n\"\n", + "print \"f(t)=%f%fsin(2*pi*t)%fsin(4*pi*t)\\n%fsin(6*pi*t)%fsin(8*pi*t)%fsin(10*pi*t)\\n%fsin(12*pi*t)%fsin(14*pi*t).......\"%(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6, page no 21" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Exponential Fourier coeff(Fn) are:for n=-5 to 5\n", + "-0.05j \n", + "\n", + "(1+0j) \n", + "\n", + "-0.0981305252753j \n", + "\n", + "(1+0j) \n", + "\n", + "-0.315687575734j \n", + "\n", + "(0.5+0j) \n", + "\n", + "0j \n", + "\n", + "(1-0.153884176859j) \n", + "\n", + "0j \n", + "\n", + "(1-0.0688190960236j) \n", + "\n", + "0j \n", + "\n", + "\n", + "The given function in Expo Fourier series can be represented as \n", + "\n", + "f(t)= 0.500000+jP/2*pi* ∑1/n *exp(j2*pi*t)\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import nditer,trapz, arange\n", + "from math import cos,sin,pi\n", + "#given\n", + "\n", + "t0=1\n", + "T=1\n", + "w0=2*3.14/T\n", + "P=1\n", + "t=arange(0,0.1+1,0.1)\n", + "f=[P*tt for tt in t]# function f(t)=P*t, 0<t<1\n", + "a=1\n", + "print 'The Exponential Fourier coeff(Fn) are:for n=-5 to 5'\n", + "Fr=[];Fi=[]\n", + "for n in range(-5,6): # Calculating the fourier coeff\n", + " fr=[ff*cos(pi*n*tt/T) for ff,tt in nditer([f,t])]\n", + " #Fr(a)=inttrap(t,fr)\n", + " Fr.append(trapz(t,fr))\n", + " fi=[ff*sin(pi*n*tt/T) for ff,tt in nditer([f,t])]\n", + " Fi.append(trapz(t,fi))\n", + " if Fr[a-1] < 0.01:\n", + " Fr[a-1]=0\n", + " \n", + " if Fi[a-1] < 0.01:\n", + " Fi[a-1]=0\n", + " \n", + " print Fr[a-1]-1J*Fi[a-1],'\\n'\n", + " a=a+1\n", + "\n", + "print '\\nThe given function in Expo Fourier series can be represented as \\n'\n", + "print 'f(t)= %f+jP/2*pi* ∑1/n *exp(j2*pi*t)'%(P/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7, page no 22" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Expo fourier series coeff are: for n=-5 to 5\n", + "(2.77555756156e-17-1.37737043993e-15j) \n", + "\n", + "(0.127481160803+3.12250225676e-16j) \n", + "\n", + "(-1.9567680809e-15-1.47624967806e-15j) \n", + "\n", + "(0.636776885598+6.54858112181e-16j) \n", + "\n", + "(-1.69309011255e-15-0.5j) \n", + "\n", + "(-1.90970223489+0j) \n", + "\n", + "(-1.69309011255e-15+0.5j) \n", + "\n", + "(0.636776885598-6.54858112181e-16j) \n", + "\n", + "(-1.9567680809e-15+1.47624967806e-15j) \n", + "\n", + "(0.127481160803-3.12250225676e-16j) \n", + "\n", + "(2.77555756156e-17+1.37737043993e-15j) \n", + "\n", + "The given function in Expo Fourier series can be represented as \n", + "\n", + "f(t)= 2V/pi -2V*exp(j2*pi*t)/3*pi -2V*exp(j2*pi*t)/15*pi\n", + " -2V*exp(j2*pi*t)/35*pi ...\n", + " -2V*exp(-j2*pi*t)/3*pi -2V*exp(-j2*pi*t)/15*pi...\n" + ] + }, + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fefd18f9f10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange,sin,pi,cos,trapz,nditer,zeros\n", + "%matplotlib inline \n", + "from matplotlib.pyplot import plot,subplot,title,legend,xlabel,ylabel,show\n", + "\n", + "#given\n", + "V=1\n", + "t0=1\n", + "T=1\n", + "w0=2*3.14/T\n", + "P=1\n", + "t=arange(0,0.01+3,0.01)\n", + "f=[V*abs(sin(pi*tt)) for tt in t]\n", + "#The Expo fourier series coeff\n", + "print 'The Expo fourier series coeff are: for n=-5 to 5'\n", + "a=1\n", + "Fr=[];Fi=[];mag=[]\n", + "for n in range(-5,6):\n", + " fr=[ff*cos(pi*n*tt/T) for ff,tt in nditer([f,t])]\n", + " Fr.append(trapz(t,fr))\n", + " fi=[ff*sin(pi*n*tt/T) for ff,tt in nditer([f,t])] \n", + " Fi.append(trapz(t,fi))\n", + " mag.append(abs(Fr[a-1]+1J*Fi[a-1]))\n", + "\n", + " print Fr[a-1]-(1J*Fi[a-1]),'\\n'\n", + " x=zeros(len(t))\n", + " #x=x+((Fr(a))-1J*Fi(a)).*(cos(pi*n*t/T)+1J*sin(pi*n*t/T))\n", + " x=x+((Fr[a-1])-1J*Fi[a-1])*(cos(pi*n*t/T)+1J*sin(pi*n*t/T))\n", + " a=a+1\n", + "\n", + "print 'The given function in Expo Fourier series can be represented as \\n'\n", + "print 'f(t)= 2V/pi -2V*exp(j2*pi*t)/3*pi -2V*exp(j2*pi*t)/15*pi\\n -2V*exp(j2*pi*t)/35*pi ...\\n -2V*exp(-j2*pi*t)/3*pi -2V*exp(-j2*pi*t)/15*pi...'\n", + "n=range(-5,6)\n", + "subplot(2,1,1)\n", + "plot(t,f) # Rectified sine function Plot\n", + "xlabel(\"t\")\n", + "ylabel(\"sin(t)\")\n", + "legend([\"sin(pi*t)\"])\n", + "subplot(2,1,2)\n", + "plot(n,mag) #Plot of the magnitude of the Fourier coeff\n", + "xlabel(\"w\")\n", + "ylabel(\"Fn\")\n", + "legend([\"Expo Fourier Coeff\"])\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8, page no 24" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fourier series coeff Fn are:\n", + "(-0.185792520964+0j) \n", + "\n", + "(-0.121542879381+6.93889390391e-18j) \n", + "\n", + "(-0.0695370407613+0j) \n", + "\n", + "(-0.0312803786267+0j) \n", + "\n", + "(-0.00787673751141+1.73472347598e-18j) \n", + "\n", + "(1+0j) \n", + "\n", + "(-0.00787673751141+1.73472347598e-18j) \n", + "\n", + "(-0.00787673751141-1.73472347598e-18j) \n", + "\n", + "(-0.0312803786267+0j) \n", + "\n", + "(-0.0695370407613+0j) \n", + "\n", + "(-0.121542879381-6.93889390391e-18j) \n", + "\n", + "(-1.23107341487-2.77555756156e-17j) \n", + "\n", + "(-0.86361423984-2.77555756156e-17j) \n", + "\n", + "(-0.520835737317-2.77555756156e-17j) \n", + "\n", + "(-0.243085758762+2.77555756156e-17j) \n", + "\n", + "(-0.0625607572533+0j) \n", + "\n", + "(1+0j) \n", + "\n", + "(-0.0625607572533+0j) \n", + "\n", + "(-0.0625607572533+0j) \n", + "\n", + "(-0.243085758762-2.77555756156e-17j) \n", + "\n", + "(-0.520835737317+2.77555756156e-17j) \n", + "\n", + "(-0.86361423984+2.77555756156e-17j) \n", + "\n" + ] + }, + { + "data": { + "image/png": "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\nqKpadaBKF36+UB+Y84AO/b+h2u7+dnrd5Ot09rrZae+s9qvqQJVOXjFZv/ncN7XNfW30iDee1h+/\nO1GXb10et44VlRU6/ZPpOnD6P7XbP6/Trg921duKbtPlW5f7Lr/fvHm6ZPfhzUr1GbZ4sb55SJtQ\nbHv379WJiyfq+U+dr63+t0DbvPqq3vjHv+r7K+P3dazbXKp3Pv2y9nrm73riJb/R449X/d3vVL84\nvJUvul27XId1Vf1/J4eorlZt00Z12zZfm2/erPrHP7r2+bM7rtRtrXvoSy+5E2U8GzeqPjtht1Y0\nztf27ap06FDVCRNUE/w40urjj1XvvFO1e3c34OCOO1SnTYvfZFZd7d776KOqF1/s/ksvvVT1pZdi\nNPPlgGQDR8wVAEVksaoO8u6/oKoJDDj3R0Qu4OBw3CdU9b6aRZzUW5dDRP4MjAb2Aler6qIo+9FY\nx5Ht9lXto+iTIorWFDHt02msK11H78Le9CnsQ8eWHWuHx27Zu4XVO1azpmQN3dp0Y3jP4YzoNYKv\n9PkKzRsHfN0doNKKUi5fPIedpcv5YsU49uzfUzs8tl1ztzxrtVazYfcGVu9YzWc7P+O4Dsexrvcv\nuadzG67rd27CTXqXLl3Ktzt04HI/OZk8Hd95h0WnnEIXn+lGary/agM/mPkGrT+axZz815DqZrTa\n34cjG/eiRZ5rRqvSSrbsX8uuxquparaFjrvPpPSin/NUk/Z8a9jghMoD3Bjc6dPdOFU/NmyAU05x\nq/8laOmHBzjm1NZcds5Wps9vyZFHuvkhPXpA06Zum7Iyl3Jr9Wo3t+QHJ7zHrWtuoGzOopQXLEyn\n6mp45x148003/PfDD10TV58+bm2tvDy3XWmpG9q8apWbQzJ8OIwYARddBPWsMJwTkl0B0G/gqL2f\njXI5cETaWbGTNSVrWL1jNVv3bq19vn1+e3oX9nYn3Ba59df66Oefs3jPHv7Wrx9by7ayZoc7vl37\ndgHuj7dz6870btebXu160bxJPq1nz2bLmWfSKok1vf/7009pBNzjc1D/tv376TN/PiVnn51QP0yN\naydMYEirVlz7zct5f+XnzP14DR98toay/RUANMlrzDGdunNGvz6cMeBoPl1RzOUrVrD8iisSLguA\nCy6AG2+EMWP8bf/mm/DAAy7YJOOkk2DCBCpPPIV16w7OD6mqci83b+7mT/Tp41a4zfv7/8G0afDM\n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\nAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f840a393350>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import pi,arange,cos,sin,trapz,zeros\n", + "%matplotlib inline \n", + "from matplotlib.pyplot import plot,subplot,title,legend,xlabel,ylabel,show\n", + "\n", + "#given\n", + "\n", + "T=500e-3\n", + "w0=2*pi/T\n", + "d=50e-3\n", + "A=10\n", + "t=arange(-d/2,0.01+T-d/2,0.01)\n", + "t1=arange(-d/2,0.01+d/2,0.01)\n", + "f1=A\n", + "t2=arange(d/2,0.01+T-(d/2),0.01)\n", + "f2=0\n", + "a=0\n", + "Fr=[];Fi=[];mag=[]\n", + "print 'The fourier series coeff Fn are:'\n", + "for n in range(-5,6):\n", + " if n==0:\n", + " Fr.append(1);Fi.append(0)\n", + " else: \n", + " fa1=f1*cos(pi*n*t1/T)\n", + " fa2=f2*cos(pi*n*t2/T)\n", + " fb1=f1*sin(pi*n*t1/T)\n", + " fb2=f2*sin(pi*n*t2/T)\n", + " \n", + " Fr.append(1/T*(trapz(t1,fa1)+trapz(t2,fa2)))\n", + " Fi.append(trapz(t1,fb1)+trapz(t2,fb2))\n", + " mag.append(abs(Fr[a]+1J*Fi[a]))\n", + "\n", + " print Fr[a]-1J*Fi[a],'\\n'\n", + " x=zeros(len(t))\n", + " x=x+((Fr[a])-1J*Fi[a])*(cos(pi*n*t/T)+1J*sin(pi*n*t/T))\n", + " a=a+1\n", + "\n", + "n=range(-5,6)\n", + "subplot(3,1,1)\n", + "plot(t,[f1]*len(t))\n", + "xlabel(\"t\")\n", + "ylabel(\"f(t)\")\n", + "subplot(3,1,2)\n", + "plot(n,mag) # expo fourier series coeff\n", + "xlabel(\"n\") \n", + "ylabel(\"Coeff Magnitude\") \n", + "subplot(3,1,3)\n", + "plot(t,x)\n", + "plot(-t,x) # one sided spectrum with T=500ms\n", + "xlabel(\"w\")\n", + "ylabel(\"Fn\")\n", + "\n", + "T1=T/2\n", + "t=arange(-d/2,0.01+T1-d/2,0.01)\n", + "t1=arange(-d/2,0.01+d/2,0.01)\n", + "f1=A\n", + "t2=arange(d/2,0.01+T1-(d/2),0.01)\n", + "f2=0\n", + "#The Expo fourier series coeff\n", + "a=0\n", + "Fr1=[];Fi1=[];mag=[]\n", + "for n in range(-5,6):\n", + " if n==0:\n", + " Fr1.append(1);Fi1.append(0)\n", + " else :\n", + " fr1=f1*cos(pi*n*t1/T1)\n", + " fr2=f2*cos(pi*n*t2/T1)\n", + " fi1=f1*sin(pi*n*t1/T1)\n", + " fi2=f2*sin(pi*n*t2/T1)\n", + " \n", + " Fr1.append(1/T1*(trapz(t1,fr1)+trapz(t2,fr2)))\n", + " Fi1.append(1/T1*(trapz(t1,fi1)+trapz(t2,fi2)))\n", + " mag.append(abs(Fr1[a]+1J*Fi1[a]))\n", + " print Fr1[a]-1J*Fi1[a],'\\n'\n", + " y = zeros(len(t))\n", + " y=y+((Fr1[a])-1J*Fi1[a])*(cos(pi*n*t/T1)+1J*sin(pi*n*t/T1))\n", + " a=a+1\n", + "\n", + "plot(t,y)\n", + "plot(-t,y) # double sided spectrum with T=250ms\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9, page no 12" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n2hmKAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4da89b5850>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4da8640e90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "|F(w)|= 1/sqrt(a**2+w**2) and\n", + " Theta(w)=-atan(w/a)\n" + ] + }, + { + "data": { + "image/png": "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\nFvfPAu6SNJHQSupPKcdTFGY2Ebid8KNtUlz8z/QiajhJ9wCvAH0kzZI0BLgU+Kakd4ED43xZynN+\npwF/AzoAI+L15e8F9+MP7jnnnEuibEsYzjnnmpYnDOecc4l4wnDOOZeIJwznnHOJeMJwzjmXiCcM\n55xziXjCcC6HpM6SflLL+y83ZTzOlQp/DsO5HLGzx8dj193OuchLGM5VdymwVXz69bLcNyV9Fv+t\nkDRS0gNxIJo78+1M0tlxsKGJ8YlbJK0fB7UZHXuzPSoubyXpL3FgoolxGGPnSkJqY3o7V8IuIAws\ns2sN72cXy3chDOA1B3hZ0j5mlltldQHQ28xWSuoUl10IPGdmp8WR3EZLepbQZ9HmwM5mVimpS7FO\nyrmG8hKGc9XVpbv1181sduz+egKhy+9ck4C7Yxfgq+OyQ4BfSxoPvAC0IySKg4AbMgPbmFnuoD7O\npcZLGM41zIqs16vJ/3/qcGA/4EjgQkmZeyPHmtl72SuGzl+b5fggrhnwEoZz1S0DOhZjR7H7783N\nbCRhAKXOhB5CnwbOzlovU/01AjgjjlmPV0m5UuIJw7kcZraQcD9icr6b3lS9h5HbzDB3vhVwh6RJ\nwDjg6ji29/8BbSRNkvQmcHFc/ybC0KeTJE0ATgKQdLGkIxt0Ys41kDerdc45l4iXMJxzziXiCcM5\n51winjCcc84l4gnDOedcIp4wnHPOJeIJwznnXCKeMJxzziXiCcM551winjCcc84l4gnDOedcIp4w\nnHPOJeIJwznnXCKeMJxzziXiCcM551winjCcc84l4gnDOedcIp4wnHPOJeIJwznnXCKeMJxzziXi\nCcM551winjCcc84l4gnDOedcIp4wnHPOJeIJwznnXCKeMJxzziXiCcM551winjCcc84l4gnDOedc\nIp4wnHPOJeIJwznnXCKeMJxzziXiCcM551winjCcc84l4gnDOedcIp4wnHPOJeIJwznnXCKeMJxz\nziXiCcM551winjCcc84l4gnDOedcIp4wnHPOJeIJwznnXCKeMJxzziXiCcM551winjCcc84l4gnD\nOedcIp4wnHPOJeIJwznnXCKeMJxzziXiCcPVmaQ3Je2Xdhz1Jem7kp5OO45ikvSUpO+lHUexSNpH\n0nuSlkk6Ku14XCAzSzsGVwSSTgbOA/oAy4AJwB/N7OUG7vdfwCwz+22Dg0yBpN7AB0BrM6tM4fiV\n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\nY+pgAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4da857c950>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "|F(w)|= 2*a/sqrt(a**2+w**2) and\n", + " Theta(w)=0\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange, exp, pi, transpose, mat, fliplr, angle, absolute, shape\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title, subplot\n", + "\n", + "#Given:\n", + "# Analog Signal\n", + "A =1 # Amplitude\n", + "Dt = 0.005#\n", + "t = arange(0,Dt+10,Dt)\n", + "xt = exp(-A*t)#\n", + "\n", + "# Continuous time Fourier Transform\n", + "Wmax =2*pi*1# # Analog Frequency = 1Hz\n", + "K = 4#\n", + "k = arange(0,(K/1000)+K, (K/1000))\n", + "W = k* Wmax /K#\n", + "XW = mat(xt)*exp(-1J*transpose(mat(t))*mat(W))*Dt\n", + "XW_Mag =abs(XW)#\n", + "W = -1*fliplr(mat(W))+mat(W)# (2:1001)]# # Omega from -Wmax to Wmax\n", + "XW_Mag=fliplr(XW_Mag )+XW_Mag # (2:1001)]#\n", + "\n", + "\n", + "#[XW_Phase ,db] = phasemag (XW)#\n", + "XW_Phase = angle(XW)\n", + "db=abs(XW)\n", + "XW_Phase = -1*fliplr(XW_Phase)+XW_Phase #(2:1001)]#\n", + "\n", + "\n", + "\n", + "# Plotting Continuous Time Signal\n", + "plot(t,xt)#\n", + "xlabel( 't in sec .')#\n", + "ylabel(' x(t) ')\n", + "title(' Continuous Time Signal ' )\n", + "show()\n", + "\n", + "\n", + "# Plotting Magnitude Response of CTS\n", + "subplot (3 ,1 ,1)#\n", + "i, j = shape(W)\n", + "W1=[]\n", + "XW_Mag1=[]\n", + "for ii in range(0,i):\n", + " for jj in range(0,j):\n", + " W1.append(W[ii,jj])\n", + " XW_Mag1.append(XW_Mag[ii,jj])\n", + " \n", + "plot(W1, XW_Mag1)\n", + "xlabel ( ' Frequency in Radians / Seconds---> W' )#\n", + "ylabel ( ' abs (X(jW) ) ' )\n", + "title ( 'Magnitude Response (CTFT) ' )\n", + "\n", + "\n", + "\n", + "\n", + "# Plotting Phase Reponse of CTS\n", + "subplot (3 ,1 ,3)#\n", + "\n", + "i, j = shape(W)\n", + "W1=[]\n", + "XW_Phase1=[]\n", + "for ii in range(0,i):\n", + " for jj in range(0,j):\n", + " W1.append(W[ii,jj])\n", + " XW_Phase1.append(XW_Phase[ii,jj])\n", + "\n", + "\n", + "plot(W1, [xx*pi/180 for xx in XW_Phase1 ])\n", + "xlabel(' Frequency in Radians / Seconds---> W')#\n", + "ylabel('<X(jW) ')\n", + "title(' Phase Response (CTFT)in Radians' )\n", + "show()\n", + "print '|F(w)|= 1/sqrt(a**2+w**2) and\\n Theta(w)=-atan(w/a)'\n", + "\n", + "#Part b \n", + "# Analog Signal\n", + "\n", + "A=1## Amplitude\n", + "Dt=0.005#\n", + "t1=arange(-4.5,Dt+4.5,Dt)\n", + "xt1=exp(-A*abs(t1))\n", + "# Continuous time Fourier Transform\n", + "Wmax1 =2*pi*1## Analog Frequency = 1Hz\n", + "K=4#\n", + "k=arange(0,(K/1000)+K,(K/1000))\n", + "W1=k*Wmax1/K\n", + "XW1=mat(xt1)*exp(-1J*transpose(mat(t1))*mat(W1))*Dt\n", + "XW1=(XW1).real\n", + "W1=-1*fliplr(mat(W1))+mat(W1) # (2:1001) ]# # Omega from -Wmax to Wmax\n", + "XW1=fliplr(mat(XW1))+mat(XW1) #(2:1001) ]#\n", + "subplot(3 ,1 ,1)#\n", + "plot(t,xt)\n", + "xlabel('t in sec.')#\n", + "ylabel('x(t)')\n", + "title(' Continuous Time Signal')\n", + "subplot(3 ,1 ,3)\n", + "i, j = shape(W1)\n", + "W11=[]\n", + "XW11=[]\n", + "for ii in range(0,i):\n", + " for jj in range(0,j):\n", + " W11.append(W[ii,jj])\n", + " XW11.append(XW_Phase[ii,jj])\n", + "\n", + "plot(W11,XW11)\n", + "xlabel('Frequency in Radians / Seconds W')#\n", + "ylabel('X(jW)')\n", + "title('Continuous time Fourier Transform ')\n", + "show()\n", + "print '|F(w)|= 2*a/sqrt(a**2+w**2) and\\n Theta(w)=0'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example10, page no 38" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a)\n", + "At wo,n=0: The spectral amplitude is: F0= 0.100000 V\n", + "\n", + "b)\n", + "The Fourier tranform of f(t-delta/2) is given as: \n", + "\n", + "f(t)=A*delta/T*∑Sa(n*delta*pi/T)*exp(jwo(t-delta/2))\n" + ] + } + ], + "source": [ + "from numpy import pi,sin\n", + "\n", + "#Given\n", + "#a\n", + "A=1\n", + "delta=1e-3\n", + "T=10e-3\n", + "w0=2*pi/T\n", + "n=0\n", + "for i in range(0,11):\n", + " if n==0:\n", + " Sa=1 \n", + " else :\n", + " Sa=sin(n*pi*delta/T)/(n*pi*delta/T)\n", + " \n", + "\n", + "F=(A*delta/T)*Sa #spectral Amplitude\n", + "print 'a)\\nAt wo,n=0: The spectral amplitude is: F0= %f V\\n'%F\n", + "#b\n", + "# displaying the fourier Transform of the given function\n", + "print 'b)\\nThe Fourier tranform of f(t-delta/2) is given as: '\n", + "print '\\nf(t)=A*delta/T*∑Sa(n*delta*pi/T)*exp(jwo(t-delta/2))'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example11(1), page no 39" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nhM4s987Gks2Bg4Bt0rB9IyT1q8F6QxcwdCistlrnSe4A++4LN9yQdxShK6h6Db5kAFGDrzvffguv\nvOLNCN/7HqyySv22bw8aBN//Phx/fN6RlO+rr2C55Xxg8B498o5mTt99B6NHw8cfQ7dusOqqsGxc\n91Z3yqnBR4IPgN9Cf8stcPnl8MgjsPLKsNRS8PXX8OqrnpB+9jM47DAfZ7QeTJvmzTNPPw19+uQd\nTdvsvz9ssw0cfnjekczy2GNw3nl+T0GvXr5vv/3W3/9FF/WYjzjCPwshf/XSRBPq3EMPwVprwbnn\n+uAU48fDqFHwwAPeze0nn8DFF8Ojj8Iaa8DNN+cdsRs6FFZcsfMld/Bked11eUfhPvrIT1IfdBBs\nvTWMGQMvv+zv/6OP+vs/eLAfeay9NpxyCkyenHfUoSxmluvDQwh5+PRTs4MOMlthBbPbbitvmUcf\nNVtlFbPDDzf77rvqxlfKgQeanXdevjG017ffmi22mNn77+cbx4MPmi2zjNlpp5l9/XXp+T/6yOyA\nA8x69zYbMqT68YWWpdzZan6NJpp2mjEDXnzRa7pjxsAHH3gzxyKLeI3yhz+EddeF+ebLO9LiXnjB\nr+bYfXf4wx/a1uzyxRdw8MFeo7v1Vt/mWvviC+/A6403YMkla7/+Shg40D8jxx2Xz/r//W844QQ/\nkth227Yte999fv5jv/3gzDNhnppccN12H3zgHbyNGuVHIvPOCwss4M2PG2wA66/vzU+dUV000Ujq\nJ+lVSW9IOrna66um6dP9jsmDDvL2yX32gXvugW++8RttNt7YT0aOGuVt1Ysv7oe+d9/t7cX14oYb\nYIcd4KyzvFmmrW3qiyzi7fUrr+zdA3z9dXXibM3gwdDU1HmTO/j18Hk101xzDZx6Kgwb1vbkDj5K\n1XPP+Wd92229madevPMOnH66fz7XWw+uusqnr7WWT+ve3ec57TQ/n7DZZv49eP/9fOOuilJV/I48\ngLmBN4HewLzAC8AaBfNU8SCmMj791Ox3vzNbfnmzTTYxu+gis3feKb3cpElml1xi1revL3vBBX5o\nnpdp08xOPtkPr194oePlTZ/uTTz9+tW+uWarrcxuuaW266y0qVPNevY0e+WV2q73ttvMll7a7KWX\nOl7WtGlmZ5xhttxyZk891fHyOuK558z69zfr0cPs6KP9/xkzWl9myhSze+4xGzjQm8z22svs4YdL\nL1cPKKOJptoJflPgv5n/TwFOKZinqjuhIz76yOzEE/2NP+wws5Ej21/WM8+Y7bKLJ/rLL/fkWEsT\nJ5r96Edm225r9sknlSt36lSzPfYw22ef2m3TW2/5lzjvcwCVcPLJZiecULv1DR1qtuSSZs8+W9ly\nb7vN35OrrqpsueV44w3/DC67rNn555t98037yvnyS7MLLzRbbTWzjTc2u+OO+k709ZDgfwxclvn/\nIOCCgnmquhPa4913zY46yhP7UUf5/5XyxBN+FLDppmYjRlSu3Na89JKfGD3uOE/Ilfbtt2abb272\n299WvuxiTj/d35dG8NprZkstVZsfqzFjvOb+wAPVKb/an7NCkyeb/eY3ZkssYXbWWeWdJC7H9Olm\nN91ktu66ZuutZzZ4cO0rZOWohwS/dzkJ/vTTT5/5GDp0aDX3Savef99r6ost5jX3jz6qznqmTze7\n9FL/Yh91lDflVMutt9amZjVunFmvXv5lqKZp08xWXLHyNdA8bb212Y03VncdX39ttuGGZn/5S3XX\nM2GC2Q47mG23nTdtVsOMGWa33+5NjfvuazZ2bHXXs9FGZmuuaXbzzdVZT7mGDh06W66shwTft6CJ\n5lTg5IJ5qrpT2mLMGK+FVuuDWejTT80GDfLL1K66qrKHg99954f+vXqZPf105cptzbPP+o9JJdr3\nW3LrrX5Oo5HceKPZlltWr/wZM8wGDDDbf//aNDlMnWp2/PFmK61k9uKLlS37rbe8qXO11czuu6+y\nZbdkxgy/JPTvf6/N+spVDwl+HuCtdJJ1vs56krXannrKawlbbNGxdv5mb7zh5e26a2Xb28txzTX+\nxZ44sTrlb7ON2bXXVqfsvEyZ4udmqtVkd9FFZmuvbfbVV9UpvyX//rc3n5x3XsebOL7+2k/mLrGE\n2Z/+lO/FCvUi9wTvMbAT8Fq6mubUIq9XdSd0FtOmmf3jH34C7LDDzN5+u+1lTJ7s7dOLL+4nm/I6\nQXTccWY77VT5dssRI/xEWiOcXC105plmBx9c+XIfe8ybAt98s/Jll+PVV80228wrL6NHt335KVPM\n/vUvb4758Y8rez6ss6uLBF8ygEjws5kwwezXv/YkPWCA2fDhpRPl5Mn+49Crlx+G5/0lmDLFL2Os\n9EnXffYx++tfK1tmvZg0yd/zt96qXJkffuiXL959d+XKbI9p07wW36OH2aGHlnd55rhxZuecY9an\n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\n1P8H1yCRRYSRqj0AAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7feefd09ba10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "F(w)= A*t*Sa(w*t/2) \n" + ] + } + ], + "source": [ + "from numpy import arange, ones,pi,exp,mat,transpose, shape\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title, subplot\n", + "\n", + "#Given\n", + "T = 10# #time Tau\n", + "Tg = arange(-T/2,0.1+T/2,0.1) # time period for given Gate Function -tau/2 to tau/2\n", + "G_t0 = 1# #Magnitude of Gate Function (A)\n", + "G_t = G_t0*ones (len(Tg))## Gate function G(t)\n", + "f = arange(-pi,pi / len(Tg)+pi,pi / len(Tg))\n", + "Dw = 0.1#\n", + "F_jW =mat(G_t)*exp(1J*transpose(mat(Tg))*mat(f))*Dw## fourier Transform of the gate function\n", + "F_jW = (F_jW).real\n", + "# Plotting the Fourier Transform of G(t)\n", + "subplot (2 ,1 ,1)\n", + "plot(Tg,G_t)\n", + "title( ' Given Function (Gate Function) G(t) ' )\n", + "subplot(2 ,1 ,2)\n", + "i,j =shape(mat(f))\n", + "m,n=shape(F_jW)\n", + "f1=[];F_jW1=[]\n", + "for ii in range(0,i):\n", + " for jj in range(0,j):\n", + " f1.append(mat(f)[ii,jj])\n", + "for ii in range(0,m):\n", + " for jj in range(0,n):\n", + " F_jW1.append(F_jW[ii,jj])\n", + " \n", + "\n", + "plot(f1,F_jW1)\n", + "xlabel('Frequency in Radians/Seconds ')#\n", + "title('Continuous time Fourier Transform X(jW)' )\n", + "title ( 'Fourier Transform of G(t)= F(jW) ' )\n", + "show()\n", + "print 'F(w)= A*t*Sa(w*t/2) '" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example11(2), page no 43" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "|F(w)|= 2*pi*A*delta(w), Hence the Fourier Transform of constant is an Impulse Function\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7ff09aeaa410>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange, ones,pi,exp,mat,transpose,pi, fliplr, shape\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title, subplot\n", + "\n", + "#Given\n", + "# CTS Signal\n", + "A=2## Amplitude\n", + "Dt=0.01#\n", + "T1=49.5# #Time in seconds\n", + "t=arange(-T1/2,Dt+T1 /2, Dt)\n", + "xt=[]\n", + "for i in range(0,len(t)):\n", + " xt.append(A)\n", + "\n", + "# Continuous time Fourier Transform\n", + "Wmax=2*pi*1## Analog Frequency = 1Hz\n", + "K =4#\n", + "k=arange(0,(K/1000)+K,(K/1000))\n", + "W=k*Wmax/K#\n", + "#xt=transpose(mat(xt))\n", + "XW =(mat(xt)*exp(1J*transpose(mat(t))*mat(W)*Dt))-5#\n", + "\n", + "\n", + "XW_Mag =(XW).real\n", + "W = -1*fliplr(mat(W))+W # (2:1001)]# # Omega from -Wmax to Wmax\n", + "XW_Mag = fliplr(mat(XW_Mag))+XW_Mag #(2:1001)\n", + "subplot(2 ,1 ,1)#\n", + "plot(t,xt)#\n", + "xlabel('t in msec .')#\n", + "title(' Contiuous Time Signal x(t) ')\n", + "subplot(2 ,1 ,2)#\n", + "i,j =shape(mat(W))\n", + "m,n=shape(XW_Mag)\n", + "W1=[];XW_Mag1=[]\n", + "for ii in range(0,i):\n", + " for jj in range(0,j):\n", + " W1.append(mat(W)[ii,jj])\n", + "for ii in range(0,m):\n", + " for jj in range(0,n):\n", + " XW_Mag1.append(XW_Mag[ii,jj])\n", + "\n", + "plot(W1,XW_Mag1)\n", + "xlabel('Frequency in Radians/Seconds ')#\n", + "title('Continuous time Fourier Transform X(jW) = an Impulse Function' )\n", + "print '|F(w)|= 2*pi*A*delta(w), Hence the Fourier Transform of constant is an Impulse Function'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example13, page no 44" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "F(w)= 1/(j*w)+ pi*delta(w)\n" + ] + }, + { + "data": { + "image/png": "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\nQg35f44uyQwHAKflAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f59089dda50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange, ones,pi,exp,mat,transpose,pi, fliplr, shape\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title, subplot\n", + "\n", + "\n", + "# CTS Signal\n", + "A =1# # Amplitude\n", + "Dt = 0.005#\n", + "T1 =0.5# #Time in seconds\n", + "t=arange(0,Dt+T1, Dt)\n", + "xt=[]\n", + "for i in range(0,len(t)):\n", + " xt.append(A)\n", + "\n", + "# Continuous time Fourier Transform\n", + "Wmax= 2*pi*1# # Analog Frequency = 1Hz\n", + "K =4#\n", + "k=arange(0,(K/1000)+K,(K/1000))\n", + "W =k*Wmax/K#\n", + "#xt=transpose(mat(xt))\n", + "XW =mat(xt)*exp(-1J*transpose(mat(t))*mat(W))*Dt#\n", + "XW_Mag =(XW).real\n", + "W =-1*fliplr(mat(W))+W #(2:1001)]# # Omega from -Wmax to Wmax\n", + "XW_Mag =fliplr(mat(XW_Mag))+XW_Mag #(2:1001)]\n", + "# displaying the given function\n", + "subplot(2 ,1 ,1)#\n", + "plot(t,xt)#\n", + "xlabel('t in msec .')#\n", + "title(' Contiuous Time Signal x(t) ')\n", + "# displaying the fourier Transform of the given function\n", + "subplot(2 ,1 ,2)#\n", + "print 'F(w)= 1/(j*w)+ pi*delta(w)'\n", + "i,j =shape(mat(W))\n", + "m,n=shape(XW_Mag)\n", + "W1=[];XW_Mag1=[]\n", + "for ii in range(0,i):\n", + " for jj in range(0,j):\n", + " W1.append(mat(W)[ii,jj])\n", + "for ii in range(0,m):\n", + " for jj in range(0,n):\n", + " XW_Mag1.append(XW_Mag[ii,jj])\n", + "\n", + "plot(W1,XW_Mag1)\n", + "\n", + "xlabel('Frequency in Radians / Seconds ')#\n", + "title('Continuous time Fourier Transform X(jW)' )\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example14, page no 44" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n+f9guQur8xUbEQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc99dc4ab50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc99aaa3710>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import pi,sqrt\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title, subplot\n", + "\n", + "# CTS Signal\n", + "# Continuous Time Fourier Transforms of\n", + "# Sinusoidal waveforms(a)sin(Wot)(b)cos(Wot)\n", + "\n", + "# CTFT\n", + "T1 = 2#\n", + "T = 4* T1#\n", + "Wo = 2* pi /T#\n", + "W = [-Wo ,0, Wo ]#\n", + "ak = (2* pi *Wo*T1/ pi )/ 1J#\n", + "XW = [-ak ,0, ak ]#\n", + "ak1 = (2* pi*Wo*T1/pi)#\n", + "XW1 =[ ak1 ,0, ak1 ]#\n", + "#displaying the given function\n", + "plot(W,[aa.imag for aa in XW])\n", + "xlabel('W' )#\n", + "title( 'CTFT of sin(Wot ) ')\n", + "show()\n", + "#displaying the fourier Transform of the given function\n", + "plot(W,XW1)\n", + "xlabel('W' )#\n", + "title( 'CTFT of cos (Wot)')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example16, page no 47" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Spectral Amplitude of the given function is given by \n", + "Fn= A*delta/2 *[Sa(n*pi*delta/T)]\n", + "Therefore the fourier transform will be :\n", + "F[f(t)]=0.628319 ∑Sa[n*pi/10]8delta(w-4*n*pi)\n" + ] + } + ], + "source": [ + "from numpy import pi\n", + "A=1\n", + "delta=50e-3\n", + "T=500e-3\n", + "print 'Spectral Amplitude of the given function is given by '# Displaying the expression for Spectral Amplitude\n", + "print 'Fn= A*delta/2 *[Sa(n*pi*delta/T)]'\n", + "print 'Therefore the fourier transform will be :'\n", + "print 'F[f(t)]=%f ∑Sa[n*pi/10]8delta(w-4*n*pi)'%(2*pi*A*delta/T)# Displaying the Fourier transform" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example17,page no12" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "F[∂t(t)]= 2*pi/T*∑∂(w-wo)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f6080bf8910>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title, subplot\n", + "\n", + "#Given:\n", + "# CTFT\n", + "T = range(-4,5)##\n", + "T1 = 1# # Sampling Interval\n", + "xt = ones (len(T))#\n", + "ak = 1/ T1#\n", + "XW = 2* pi *ak* ones (len(T))#\n", + "Wo = 2*pi/T1#\n", + "W = [Wo*Tt for Tt in T]#\n", + "# Displaying the given function\n", + "subplot(2 ,1 ,1)\n", + "plot(T,xt)\n", + "xlabel ( 't ' )#\n", + "title('Periodic Impulse Train ')\n", + "# displaying the fourier Transform of the given function\n", + "subplot(2 ,1 ,2)\n", + "plot(W,XW)\n", + "xlabel('t')#\n", + "title ( 'CTFT of Periodic Impulse Train')\n", + "\n", + "print 'F[∂t(t)]= 2*pi/T*∑∂(w-wo)'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example18,page no12" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hence Fourier transform of given Gate function is:\n", + " A*delta*Sa[w*delta/2]/ exp(-j*w*delta/2)\n" + ] + }, + { + "data": { + "image/png": "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\n/w+9sYHJi5vhcwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc99ae62450>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange, pi,exp,mat, transpose,fliplr,shape\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, xlabel, ylabel, show, title, subplot\n", + "\n", + "#Given:\n", + "# CTS Signal\n", + "A =1# # Amplitude\n", + "Dt = 0.005#\n", + "T1 = 2# #Time in seconds\n", + "t = arange(0,Dt+T1 /2, Dt)\n", + "xt=[]\n", + "for i in range(0,len(t)):\n", + " xt.append(A)\n", + "\n", + "# Continuous time Fourier Transform\n", + "Wmax= 2*pi*1# # Analog Frequency = 1Hz\n", + "K =4#\n", + "k=arange(0,(K/1000)+K,(K/1000))\n", + "W =k*Wmax/K#\n", + "XW =mat(xt)*exp(-1J*transpose(mat(t))*mat(W))*Dt#\n", + "XW_Mag =(XW).real\n", + "W =-fliplr(mat(W))+W #(2:1001)]# # Omega from Wmax to Wmax\n", + "XW_Mag =fliplr(mat(XW_Mag))+XW_Mag #(2:1001)]#\n", + "# displaying the given function\n", + "subplot(2 ,1 ,1)#\n", + "plot(t,xt)#\n", + "xlabel('t in msec .')#\n", + "title(' Contiuous Time Signal x(t) {Gate Function} ')\n", + "# displaying the fourier Transform of the given function\n", + "subplot(2 ,1 ,2)#\n", + "i,j =shape(mat(W))\n", + "m,n=shape(XW_Mag)\n", + "W1=[];XW_Mag1=[]\n", + "for ii in range(0,i):\n", + " for jj in range(0,j):\n", + " W1.append(mat(W)[ii,jj])\n", + "for ii in range(0,m):\n", + " for jj in range(0,n):\n", + " XW_Mag1.append(XW_Mag[ii,jj])\n", + "\n", + "plot(W1,XW_Mag1)\n", + "\n", + "xlabel('Frequency in Radians / Seconds ')#\n", + "title('Continuous time Fourier Transform X(jW)' )\n", + "print 'Hence Fourier transform of given Gate function is:\\n A*delta*Sa[w*delta/2]/ exp(-j*w*delta/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.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter2_Gdzqhfz.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter2_Gdzqhfz.ipynb new file mode 100644 index 00000000..d5d7e4ea --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter2_Gdzqhfz.ipynb @@ -0,0 +1,444 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 Switched communication systems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.2, page no 125" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum auxillary current is:10.00 mA\n", + "\n", + "MMF in the auxillary winding is:2.00AT \n", + "\n", + "MMF in main winding is:40.00 AT \n", + "\n", + "net MMF required in main winding is:44.00 AT \n", + "\n", + "operating current needed is:4.40 mA \n", + "\n", + "working voltage is:2.84 volts \n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#given\n", + "Io=4*10**-3 #rqueired operating current\n", + "N1=10000 #no of turns in the main winding\n", + "R1=645 #resistence of the main winding in ohms\n", + "N2=200 #no of turns in auxillary winding\n", + "B=2 #spacing bias\n", + "Iaux=B/N2 #maximum auxillary current\n", + "print \"maximum auxillary current is:%0.2f mA\\n\"%(Iaux*1e3)\n", + "MMFaux=N2*Iaux #MMF in the auxillary winding\n", + "print \"MMF in the auxillary winding is:%0.2fAT \\n\"%(MMFaux)\n", + "MMFop=Io*N1 #operating MFF in main winding\n", + "print \"MMF in main winding is:%0.2f AT \\n\"%(MMFop)\n", + "MMFnet=MMFop+(0.1*MMFop) #net MMF required in main winding\n", + "print \"net MMF required in main winding is:%0.2f AT \\n\"%(MMFnet)\n", + "Iop=MMFnet/N1 #operating current needed\n", + "print \"operating current needed is:%0.2f mA \\n\"%(Iop*1e3)\n", + "V=Iop*R1 #working voltage in volts\n", + "print \"working voltage is:%0.2f volts \\n\"%(V)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.3,page no 125" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Busy hour calling rate is:1.00 \n", + "\n", + "Rate of traffic flow is 250.00 traffic unit \n" + ] + } + ], + "source": [ + "#given\n", + "C=6000#Tatol no of call in busy hour\n", + "SC=5000#no of subscribers\n", + "CR=C/SC#busy hour calling rate\n", + "print \"Busy hour calling rate is:%0.2f \\n\"%(CR)\n", + "T=2.5/60#avarage duration of calls in hours\n", + "\n", + "A=C*T#rate of traffic flow\n", + "print \"Rate of traffic flow is %0.2f traffic unit \"%(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.4,page no 126" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maxixmum current is 33.33 mamps \n", + "\n", + "operate lag is 1.83 msec \n", + "\n", + "release lag is 2.85 msec \n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "#given\n", + "L=3#relay inductance in henry\n", + "R=1500#relay resistance in ohm\n", + "Io=20e-3#oparating current in amps\n", + "Ir=8e-3#release current in amps\n", + "\n", + "V=50#supply volatage in volts\n", + "Im=V/R#maxixmum current in amps\n", + "print \"maxixmum current is %0.2f mamps \\n\"%(Im*1e3)\n", + "to=(L/R)*log(1/(1-(Io/Im)))#operate lag in sec\n", + "print \"operate lag is %0.2f msec \\n\"%(to*1000)\n", + "tr=(L/R)*log(Im/Ir)#release lag in sec\n", + "print \"release lag is %0.2f msec \\n\"%(tr*1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.4.1,page no 126" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a)\n", + "periods per character is:150.00 msec\n", + "\n", + "period per element is:20.00 msec\n", + "\n", + "speed is:50.00 bauds\n", + "\n", + "\n", + "(b)\n", + "periods per character is:100.00 msec\n", + "\n", + "period per element is:13.33 msec\n", + "\n", + "speed is 75.00 bauds\n", + "\n", + "\n", + "(c)\n", + "periods per character is:100.00 msec\n", + "\n", + "period per element is:10.00 msec\n", + "\n", + "speed is 100.00 bauds\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#given\n", + "#a\n", + "C_S1=20/3#speed in characters per second\n", + "P_C1=1/C_S1#periods per character\n", + "print \"(a)\\nperiods per character is:%0.2f msec\\n\"%(P_C1*1e3)\n", + "E_C1=7.5#elements per character\n", + "P_E1=P_C1/E_C1#period per element\n", + "print \"period per element is:%0.2f msec\\n\"%(P_E1*1e3)\n", + "Sb1=1/P_E1#speed in bauds\n", + "print \"speed is:%0.2f bauds\\n\\n\"%(Sb1)\n", + "#b\n", + "C_S2=10#speed in characters per second\n", + "P_C2=1/C_S2#periods per character\n", + "print \"(b)\\nperiods per character is:%0.2f msec\\n\"%(P_C2*1e3)\n", + "E_C2=7.5#elements per character\n", + "P_E2=P_C2/E_C2#period per element\n", + "print \"period per element is:%0.2f msec\\n\"%(P_E2*1e3)\n", + "Sb2=1/P_E2#speed in bauds\n", + "print \"speed is %0.2f bauds\\n\\n\"%( Sb2)\n", + "#c\n", + "C_S3=10#speed in characters per second\n", + "P_C3=1/C_S3#periods per character\n", + "print \"(c)\\nperiods per character is:%0.2f msec\\n\"%(P_C3*1e3)\n", + "E_C3=10#elements per character\n", + "P_E3=P_C3/E_C3#period per element\n", + "print \"period per element is:%0.2f msec\\n\"%(P_E3*1e3)\n", + "Sb3=1/P_E3#speed in bauds\n", + "print \"speed is %0.2f bauds\\n\"%(Sb3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.5,page no 127" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total inductance is 0.05 H \n", + "\n", + "maximum current is 10.00 mA \n", + "\n", + "operating current is 5.00 mA \n", + "\n", + "operate lag is 0.35 msec \n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#given\n", + "N=1000#no of turns\n", + "L1=5e-8#inductance per turn\n", + "L=N**2*L1#total inductance\n", + "print \"total inductance is %0.2f H \\n\"%(L)\n", + "R=100#resistance of winding in ohm\n", + "MMF=5#operating MMF in amp. turn\n", + "V=1#voltage of received signal in volts\n", + "Im=V/R#maximum current\n", + "print \"maximum current is %0.2f mA \\n\"%(Im*1e3)\n", + "Io=MMF/N#operating current\n", + "print \"operating current is %0.2f mA \\n\"%(Io*1e3)\n", + "to=(L/R)*log(1/(1-(Io/Im)))#operate lag\n", + "print \"operate lag is %0.2f msec \\n\"%(to*1e3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.6,page no 128" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Busy hour calling rate is:1.00 \n", + "\n", + "Rate of traffic flow is 693.33 traffic unit \n" + ] + } + ], + "source": [ + "#given\n", + "S=10000#no of subscribers\n", + "C=16000#Tatol no of call in busy hour\n", + "CR=C/S#busy hour calling rate\n", + "print \"Busy hour calling rate is:%0.2f \\n\"%(CR)\n", + "T=2.6#avarage duration of calls in min\n", + "\n", + "A=C*(T/60)#rate of traffic flow\n", + "print \"Rate of traffic flow is %0.2f traffic unit \"%(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.7,page no 135" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "duration of each element is:10.00 msec\n", + "\n", + "speed is 100.00 bauds\n", + "\n", + "total possible combinations are:128.00\n" + ] + } + ], + "source": [ + "#given\n", + "N=7#no of character elements\n", + "E_C=10#elements per character (1+7+1+1)\n", + "To=100e-3#duration of one character\n", + "Te=To/E_C#duration of each element\n", + "print \"duration of each element is:%0.2f msec\\n\"%(Te*1e3)\n", + "Sb=1/Te#speed in bauds\n", + "print \"speed is %0.2f bauds\\n\"%(Sb)\n", + "C=2**N#total possible combinations\n", + "print \"total possible combinations are:%0.2f\"%(C)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.8,page no 129" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total no of call in busy hour is:1500.00 calls per Hour\n", + "\n", + "Busy hour calling rate is:1.50 \n", + "\n", + "grade of service is: 0.02\n" + ] + } + ], + "source": [ + "#given\n", + "S=1000#no of subscribers\n", + "T=2.4/60#avarage duration of calls in hours\n", + "A=60#rate of traffic flow\n", + "C=A/T#Tatol no of call in busy hour\n", + "print \"Total no of call in busy hour is:%0.2f calls per Hour\\n\"%(C)\n", + "CR=C/S#busy hour calling rate\n", + "print \"Busy hour calling rate is:%0.2f \\n\"%(CR)\n", + "SCL=30#no of call lost per hour\n", + "\n", + "B=SCL/(C+SCL)#grade of service\n", + "print \"grade of service is: %0.2f\"%(B)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.9,page no 129" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "grade of service is: 2.00e-03\n", + "\n", + "traffic lost is: 1.80e-03\n" + ] + } + ], + "source": [ + "from math import factorial\n", + "#given\n", + "N=5#no of switches\n", + "A=0.9#traffic offered \n", + "#grade of service B=(A**N/N!)/(1+A+A**2/2!+A**3/3!+...+A**N/N!)\n", + "#here\n", + "B=(A**N/factorial(N))/(1+A+(A**2/factorial(2))+(A**3/factorial(3))+(A**4/factorial(4))+(A**5/factorial(5)))\n", + "print \"grade of service is: %0.2e\\n\"%(B)\n", + "Tl=A*B#traffic lost\n", + "print \"traffic lost is: %0.2e\"%(Tl)" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter3_g5kZGIh.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter3_g5kZGIh.ipynb new file mode 100644 index 00000000..b093a8a0 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter3_g5kZGIh.ipynb @@ -0,0 +1,1097 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter No. 3 - Modulation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.1, page no 135" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "percentage modulation is:83.14.2f \n", + " Power after modulation is:13.46.2f watts\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt\n", + "#Given\n", + "Ic=10 #carrier current in Amps\n", + "Imod=11.6# Current after modulation\n", + "Rl=1#Assumed load in ohm\n", + "Pmod=Rl*Imod**2#power before modulation\n", + "Ma= sqrt(2*((Pmod/Ic**2)-1))#percentage modulation\n", + "Pc=10\n", + "Pmod=Pc*(1+(Ma**2/2))#power after modulation\n", + "print 'percentage modulation is:%0.2f.2f \\n Power after modulation is:%0.2f.2f watts'%(Ma*100,Pmod)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.2, page no 135" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Depth of modulation is:0.50.2f\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt\n", + "#Given\n", + "Pc=9e3# Tx Power without modulation\n", + "Pmod=10.125e3#Tx Power after modulation\n", + "Ma= sqrt(2*((Pmod/Pc)-1))#depth of (percentage) modulation\n", + "print 'Depth of modulation is:%0.2f.2f'%(Ma)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.3, page no 136" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The total power radiated is 1320 watts\n" + ] + } + ], + "source": [ + "#Given\n", + "M1=0.2#depth of modulation for first tone\n", + "M2=0.4#depth of modulation for second tone\n", + "Pc=1200#Tx Power\n", + "Pmod=Pc*(1+M1**2/2+M2**2/2)#total power radiated after modulation by both the tones\n", + "print 'The total power radiated is %d watts'%(Pmod)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.4, page no 138" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "modulating power required from the audio source\n", + " is:37.69 watts\n", + " Modulator Impedance is:29850.75 ohm\n", + " Plate dissipation is:96.69 watts\n" + ] + } + ], + "source": [ + "#Given\n", + "Ebb=2e3#DC plate supply\n", + "Ecc=-500#DC grid bias\n", + "Ib=67e-3#DC plate current\n", + "Ic=30e-3#DC grid current\n", + "Egm=750#RF peak grid voltage\n", + "Pout=75#RF Power output\n", + "Ma=0.75#Depth of modulation\n", + "Paf=(Ma**2*Ebb*Ib)/(2*1)#modulating power required from the audio source\n", + "Pdc=Ebb*Ib#Power supplied by DC source\n", + "Zm=Ebb**2/Pdc#Modulator Impedance\n", + "\n", + "Pd=Pdc+Paf-Pout#Plate dissipation\n", + "print 'modulating power required from the audio source\\n is:%0.2f watts\\n Modulator Impedance is:%0.2f ohm\\n Plate dissipation is:%0.2f watts'%(Paf,Zm,Pd)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.5b, page no 139" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tx power:1200.00 Watts\n", + " Power dissipation at the modulator is: 3000.00 Watts\n", + " Overall Efficiency at0.6 modulation is:41.16% \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt\n", + "#Given\n", + "Pd=944#Anode dissipation of the class C amplifier in watts\n", + "Ma=0.6#modulation depth,\n", + "Etta=0.6#efficiency\n", + "Pout=(Etta*Pd/(1-Etta))#power dissipation at 60% modulation\n", + "Pc=Pout/(1+(Ma**2/2))#Tx power\n", + "Psb=Pout-Pc\n", + "Pdc1=Pc/Etta#DC power inputto PA\n", + "Paf=Psb/Etta# modulation power input to PA\n", + "Eff=0.25# efficiency of the modulator\n", + "Pdc2=Paf/Eff#DC power input to modulator\n", + "Pdct=Pdc1+Pdc2#Total DC power to the system\n", + "Effo=Pout/Pdct#Overall Efficiency\n", + "Ma=1# 100% modulation\n", + "Pt=Pc*(1+(Ma**2)/2)\n", + "Psb=(Pc*Ma**2)/2\n", + "Paf=Psb/Etta#modulating input power to PA\n", + "Pdc2=Paf/Eff# DC power input to modulator\n", + "Pd=Pdc2-Paf#Power dissipation at the modulator\n", + "Effo1=Pout/(Pdc1+Pdc2)#Overall Efficiency\n", + "print 'Tx power:%0.2f Watts\\n Power dissipation at the modulator is: %0.2f Watts\\n Overall Efficiency at0.6 modulation is:%0.2f%c '%(Pc,Pd,100*Effo,'%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.6, page no 141" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrier Power is: 1133.33 watts \n", + " DC plate dissipation is: 266.67 watts\n", + " output power of modulator is: 700.00 watts\n", + " Plate dissipation inthe modulator is:466.67 watts\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt#Given\n", + "Pdc=1400#DC power i/p to PA under 100% modulation\n", + "Ptdc=400#Plate dissipation\n", + "Pd=Ptdc*(2/3)#DC plate dissipation\n", + "\n", + "Pdmod=Ptdc*(1/3)#\n", + "Pc=Pdc-Pd#Carrier Power\n", + "\n", + "Psb=Pc/2#side band power\n", + "Paf=Psb+Pdmod#output power of modulator\n", + "\n", + "Mod_Eff=0.6\n", + "Pdc2=Paf/Mod_Eff#DC i/p power to the modulator\n", + "Pd_AF=Pdc2-Paf#Plate dissipation inthe modulator\n", + "print 'Carrier Power is: %0.2f watts \\n DC plate dissipation is: %0.2f watts\\n output power of modulator is: %0.2f watts\\n Plate dissipation inthe modulator is:%0.2f watts'%(Pc,Pd,Paf,Pd_AF)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.7, page no 141" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum carrier power is: 750 watts\n", + " Total RF power is: 1125 watts\n" + ] + } + ], + "source": [ + "#Given\n", + "Paf=500#Modulator output power\n", + "Eff=0.75#Efficiency of the amplifier\n", + "P_lost=Paf*(1-Eff)#modulating power lost in the amplifier\n", + "Psb=Paf*Eff#side band power\n", + "\n", + "m=1\n", + "Pc=2*Psb\n", + "\n", + "Pt=Pc+Psb#Total RF power\n", + "print 'Maximum carrier power is: %d watts\\n Total RF power is: %d watts'%(Pc,Pt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.8, page no 143" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrier power is: 2100 watts\n", + " Maximum depth of modulation is: 92.58\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt#Given\n", + "Po=3000# Rating of Power Amplifier\n", + "Pr=750#Push-Pull amplifier rated as\n", + "Paf=2*Pr#Rated power output from Push-Pull modulator\n", + "Eff=0.6\n", + "P_lost=Paf-(Eff*Paf)#Modulation power lost\n", + "Psb=Paf-P_lost#side band power\n", + "\n", + "Pc=Po-Psb#Carrier power\n", + "Ma=sqrt(2*Psb/Pc)*100#Maximum depth of modulation\n", + "print 'Carrier power is: %d watts\\n Maximum depth of modulation is: %0.2f'%(Pc,Ma)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.9, page 143" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrier freq is: 10 MHz\n", + "Modulating freq is:500 Hz\n", + "Carrier power is: 208.33 watts\n", + "Mean output power is: 225.00 watts\n", + "Peak output power is: 408.33 watts\n" + ] + } + ], + "source": [ + "from numpy import arange, pi\n", + "#Given\n", + "t=arange(0,10,0.001)\n", + "#e=500*(1+(0.4*sin(3140*t)))*sin(6.28e7*t)\n", + "#a\n", + "wc=6.28e7#Carrier angular frequency\n", + "fc=wc/(2*pi)# Carrier freq\n", + "#b\n", + "wm=3140#Modulating angular freq\n", + "fm=wm/(2*pi)#Modulating freq\n", + "#c\n", + "Ec=500#/peak carrier voltage\n", + "Pc=(Ec**2)/(2*600)#Carrier power\n", + "#d\n", + "Ma=0.4\n", + "Pt=Pc*(1+(Ma**2 / 2))#Mean output power\n", + "#e\n", + "Rl=600#load resistance\n", + "Ecp=Ec+(Ma*Ec)#Peak output voltage\n", + "Ptm=Ecp**2/(2*Rl)#Peak power\n", + "print 'Carrier freq is: %d MHz\\nModulating freq is:%d Hz\\nCarrier power is: %0.2f watts\\nMean output power is: %0.2f watts\\nPeak output power is: %0.2f watts'%(round(fc*1e-6),round(fm),Pc,Pt,Ptm)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.10, page no 143" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Antenna current for full modulation is: 45.64 amp\n", + "Peak base voltage is: 5672.55/_48 volts\n", + "Peak base voltage is: 4254.41/_48 volts\n" + ] + } + ], + "source": [ + "from math import atan,sqrt,pi\n", + "from cmath import polar\n", + "#Given\n", + "#b\n", + "Pc=50e3#Carrier power\n", + "Z=36 + 1J*40#base impedance of the antenna\n", + "Ma=1#modulation depth\n", + "Pmod=Pc*(1+((Ma**2)/2))#power delivered to the antenna under 100% modulation\n", + "#i\n", + "R=36#resistance of the antenna \n", + "Irms=sqrt(Pmod/R)#Antenna Current\n", + "\n", + "#ii\n", + "Ic=sqrt(Pc/R)#RMS carrier current \n", + "\n", + "Icm=Ic*sqrt(2)# Peak carrier current \n", + "Imod=2*Icm#Modulated current\n", + "\n", + "Theta=atan(40/36)*180/pi# from real and imaginary components of Z\n", + "Vbm100=Imod*Z#Peak base output voltage for 100% modulation\n", + "[Re_Vb,Im_Vb]=polar(Vbm100)\n", + "\n", + "#iii\n", + "Ma=0.5\n", + "Imod=Icm*(1+0.5)\n", + "\n", + "Vbm50=Imod*Z\n", + "[Re_Vb1,Im_Vb1]=polar(Vbm50)\n", + "print 'Antenna current for full modulation is: %0.2f amp\\nPeak base voltage is: %0.2f/_%d volts\\nPeak base voltage is: %0.2f/_%d volts'%(Irms,Re_Vb,Theta,Re_Vb1,Theta)\n", + "# The Ans is little deviated from that of book as the decimal places considered while calculating at different stages might be different \n", + "\n", + "#Answers from the book are little deviated but the evaluated values in the scilab are correct results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.11, page no 144" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "USB freq=10005 k5Hz\n", + "USB amplitude=2.50 V\n", + "LSB freq=9995 kHz\n", + "LSB amplitude=2.50 V\n", + "Carrier amplitude=10 V\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f8174b58fd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from math import sin,pi\n", + "from numpy import arange\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, subplot, title, xlabel, ylabel, show\n", + "# Given\n", + "def f(x):\n", + " y=[]\n", + " for xx in x:\n", + " y.append(Ec*(1+ma*(sin(wm*xx)))*sin(wc*xx))\n", + " return y\n", + "Ec=10\n", + "ma=0.5\n", + "wm=10000*pi\n", + "wc=2*pi*1e7\n", + "x=arange(0,20*pi/10,.01)\n", + "subplot(2,1,1)\n", + "plot(x,f(x))\n", + "xlabel(\"t\")\n", + "ylabel(\"Modulated Wave\")\n", + "Fc=wc/(2*pi)\n", + "Fm=wm/(2*pi)\n", + "Fusb=(wm+wc)/(2*pi)\n", + "Flsb=(wm-wc)/(2*pi)\n", + "print 'USB freq=%d k5Hz\\nUSB amplitude=%0.2f V\\nLSB freq=%d kHz\\nLSB amplitude=%0.2f V\\nCarrier amplitude=%d V'%(Fusb*1e-3,2.5,Flsb*-1e-3,2.5,10)\n", + "F=[0,2.5,10,2.5,0]\n", + "T=[-2,-1,0,1,2]\n", + "subplot(2,1,2)\n", + "plot(T,F)\n", + "xlabel(\"Freq\")\n", + "ylabel(\"Amplitude\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.12 page no 145" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The depth of modulation is: 50%\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "Pc=9e3#unmodulated carrier power\n", + "Pt=10.125e3#Modulated carrier power\n", + "Ma=sqrt(2*((Pt/Pc)-1))#depth of modulation\n", + "print 'The depth of modulation is: %d%c'%(Ma*100,'%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.13 page no 148" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The power output is: 34.45 W\n" + ] + } + ], + "source": [ + "#Given\n", + "Pt=5e3#carrier power for 95% modulation\n", + "Ma=0.95\n", + "Pc=Pt/(1+((Ma**2)/2))#carrier power\n", + "Ma=0.2#average modulation by speech signal\n", + "Psb=(Ma**2)*Pc/2#the power n the sideband\n", + "Pout=Psb/2# because one of the side band is suppressed\n", + "print 'The power output is: %0.2f W'%(Pout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.14 page no 152" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DeltaPhi1= 10 rad\n", + "DeltaPhi2=500 rad\n", + "\n" + ] + } + ], + "source": [ + "#Given\n", + "#Phi=(wc*t+Mf*sin(wmt))....instantaneous phase of FM\n", + "fm=5000#modulating freq\n", + "deltaf=50e3#freq deviation\n", + "deltaPhi1=deltaf/fm# Advance or retard in phase\n", + "\n", + "fm=100#modulating freq in second signal\n", + "deltaPhi2=deltaf/fm\n", + "print 'DeltaPhi1= %d rad\\nDeltaPhi2=%d rad\\n'%(deltaPhi1,deltaPhi2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.14 page no 157" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Peak Phase Deviation: 0.76 rad\n", + "Peak Freq Deviation: 761 Hz\n", + "Depth of residual AM: 0.08\n", + "Residual AM freq:2 kHz\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt,atan\n", + "#Given\n", + "#e=Ec(1+0.4cos(2pie3*t))*sin(2pie7*t)\n", + "fm=1000#modulating s/g freq\n", + "deltaTheta=2*atan(0.4)#peak phase deviation\n", + "\n", + "deltaF=deltaTheta*fm#Peak freq deviation\n", + "\n", + "Ec=1\n", + "Er=sqrt((Ec**2)*(1+(0.4**2)))\n", + "m=(Er-Ec)/Ec#depth of residual AM \n", + "\n", + "AMFr=2*fm# freq ofresidual AM\n", + "print 'Peak Phase Deviation: %0.2f rad\\nPeak Freq Deviation: %d Hz\\nDepth of residual AM: %0.2f\\nResidual AM freq:%d kHz'%(deltaTheta,deltaF,(round(m*100)/100),AMFr*1e-3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.16 page no 170" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a)\n", + "Max phase deviation is:250 rad\n", + "b)\n", + "Max phase deviation is:2.50 rad\n" + ] + } + ], + "source": [ + "#Given\n", + "deltaF=25e3#freq deviation\n", + "#a\n", + "fm=100#modulation signal freq\n", + "mf=deltaF/fm# Max phase deviation\n", + "print 'a)'\n", + "print 'Max phase deviation is:%d rad'%(mf)\n", + "#b\n", + "fm=10e3#modulation signal freq\n", + "mf=deltaF/fm#Max phase deviation\n", + "\n", + "print 'b)'\n", + "print 'Max phase deviation is:%0.2f rad'%(mf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.17, page no 171" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum freq deviation is: 5 kHz\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt\n", + "#Given\n", + "gm=0.1e-3# trans-conductance variation A/V\n", + "C=0.5e-12# capactance between anode and grid\n", + "R=1e3# resistance\n", + "fo=10e6# oscillator freq\n", + "Vrms=1.414#AF RMS voltage \n", + "Vp=sqrt(2)*Vrms#Peak voltage\n", + "Ct=100e-12#tank capacitance\n", + "deltaC=gm*C*R*Vp\n", + "\n", + "deltaF=fo*(deltaC/(2*Ct))# maximum freq deviation\n", + "print 'The maximum freq deviation is: %d kHz'%(round(deltaF/1000))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.18, page no 172" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The approximate bandwidth is: 2 MHz\n" + ] + } + ], + "source": [ + "#Given\n", + "deltaF=1e6# max freq deviation\n", + "fm=10e3#modulating freq\n", + "mf=(2*deltaF)/fm# modulation coefficient\n", + "BW=mf*fm# bandwidth\n", + "print 'The approximate bandwidth is: %d MHz'%(BW/1e6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.19, page no 172" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The approximate bandwidth is: 150 kHz\n" + ] + } + ], + "source": [ + "#Given\n", + "deltaF=75e3# max freq deviation\n", + "fm=15e3#modulation freq\n", + "mf=(2*deltaF)/fm# freq modulation depth\n", + "BW=mf*fm# Bandwidth\n", + "print 'The approximate bandwidth is: %d kHz'%(BW/1e3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.21, page no 173" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overall bandwidth including guard band is 200 kHz\n" + ] + } + ], + "source": [ + "#Given\n", + "deltaF=75e3#freq deviation\n", + "fm=15e3# modulating freq\n", + "mf=deltaF/fm\n", + "BW=2*mf*fm# Bandwidth\n", + "GB=25e3#Guard Band\n", + "BWo=BW+(2*GB)# Overall bandwidth\n", + "print 'Overall bandwidth including guard band is %d kHz'%(BWo/1e3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.25, pageno 175" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average power is: 25.17 watts\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f81846cced0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from math import sin\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, subplot, title, xlabel, ylabel, show\n", + "#Given\n", + "#em=3sin(2*pi*1000t)+5cos(2*pi*3000t)\n", + "#ec=50sin(2*pi*500e3*t)\n", + "m1=0.06#(sine wave amplitude/ peak carrier voltage)\n", + "m2=0.1#(cosine wave amplitude/ peak carrier voltage)\n", + "Vc=50#Carrier voltage\n", + "R=50#load resistance\n", + "Pc=(Vc**2)/(2*R)#Peak carrier power\n", + "Pt=Pc*(1+((m1**2+m2**2)/2))#Total power after modulation\n", + "print 'Average power is: %0.2f watts'%(Pt)\n", + "F=[0,2.5,1.5,50,1.5,2.5,0]\n", + "T=[490,497,499,500,501,503,510]\n", + "plot(T,F)\n", + "xlabel(\"Freq\")\n", + "ylabel(\"Amplitude\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.26, page no 176" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Required Deviation is: 50 kHz\n", + "\n", + "Required Multipication Factor is: 5*5*5*5*2\n" + ] + } + ], + "source": [ + "#Given\n", + "mp=0.1#Modulating index\n", + "fm=400#Modulating signal freq\n", + "deltaF=mp*fm#Max freq deviation\n", + "#print deltaF)\n", + "ReqDev=50e3# Required deviation\n", + "MF=ReqDev/deltaF# multiplication factor\n", + "print 'Required Deviation is: %d kHz\\n'%(ReqDev/1e3)\n", + "print 'Required Multipication Factor is: 5*5*5*5*2'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.27, page no 176" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Depth of modulation across the \n", + " circuit is : Ma= 49.07%\n" + ] + } + ], + "source": [ + "#Given\n", + "Q=100 #Q factor\n", + "fc=1000e3# Carrier freq\n", + "fsb1=999e3#lower Side band freq\n", + "fsb2=1001e3#Upper side Band freq\n", + "ma=0.5#Modulation depth of signal current\n", + "Ma=ma/1.019# Expression for Ma after simplification\n", + "print 'The Depth of modulation across the \\n circuit is : Ma= %0.2f%c'%(Ma*100,'%')\n", + "\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.28, page no 177" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Depth of modulation:72.90 %\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "R=1#Antenna Resistance assumed to be 1 ohm for ease of calculation\n", + "Ic=10.8# current with no modulation\n", + "Pc=Ic**2*R#power with no modulation\n", + "It=12.15#modulated current\n", + "Pt=It**2*R# modulated power\n", + "ma=(sqrt(2*(((It/Ic)**2)-1)))#modulation depth)\n", + "\n", + "print 'Depth of modulation:%0.2f %c'%(round(1000*ma)/10,'%')#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.29, page no 177" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total RF power delivered is:Pt= 112.50 kW\n" + ] + } + ], + "source": [ + "#Given\n", + "Pc=100e3#Carrier power\n", + "ma=0.5#Depth of modulation\n", + "Pt=Pc*(1+((ma**2)/2))#total RF power\n", + "print 'Total RF power delivered is:Pt= %0.2f kW'%(Pt/1e3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.30, page no 178" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrier power:71.17 kW\n", + "The Intelligence power: 28.83 kW\n" + ] + } + ], + "source": [ + "#Given\n", + "Pt=100e3# Total power\n", + "ma=0.9#Depth of modulation\n", + "Pc=Pt/(1+((ma**2)/2))#Carrier power\n", + "Psb=Pt-Pc# Intelligence power i.e sideband power\n", + "print 'Carrier power:%0.2f kW\\nThe Intelligence power: %0.2f kW'%(Pc/1000,Psb/1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.19, page no 178" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Modulation Index is: 64.81 \n" + ] + } + ], + "source": [ + "from math import sin,sqrt\n", + "#Given\n", + "R=1# load resistance\n", + "Eo=100#RF voltage\n", + "Po=Eo**2/R#Carrier power\n", + "E=110#Modulated RMS voltage\n", + "Pt=E**2/R#Total modulated power\n", + "ma=sqrt(2*((Pt/Po)-1))# Depth of modulation\n", + "print 'Modulation Index is: %0.2f '%(ma*100)" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter5_b9JZ6PG.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter5_b9JZ6PG.ipynb new file mode 100644 index 00000000..e234ad9f --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter5_b9JZ6PG.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 : Radio Transmission system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.1, page no 230" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Freq deviation is 17.453293 Hz\n", + " Multification factor is 1718\n", + " corresponding modified max freq deviation is 30114kHz\n" + ] + } + ], + "source": [ + "from numpy import pi\n", + "#Given\n", + "#b\n", + "fm=1e2#modulation freq\n", + "Phimax=10*pi/180# Max Phase deviation\n", + "#i\n", + "Freq_dev=Phimax*fm# Freq deviation\n", + "#ii\n", + "Mul_fact=30e3/Freq_dev# Multification factor\n", + "print ' Freq deviation is %f Hz\\n Multification factor is %d\\n corresponding modified max freq deviation is 30114kHz'%(Freq_dev,Mul_fact)\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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter6_MYuh5hK.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter6_MYuh5hK.ipynb new file mode 100644 index 00000000..c82ada44 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter6_MYuh5hK.ipynb @@ -0,0 +1,104 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6 : Radio Receivers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.1, page no 262" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrier freq for the BW to be 1% of fc is: 2000 kHz\n" + ] + } + ], + "source": [ + "#Given\n", + "#Vm(t),Vc(t),Vmod(t)\n", + "fm=10e3#modulating freq\n", + "BW=2*fm# Bandwidth\n", + "fc=100*BW#Carrier freq\n", + "print'Carrier freq for the BW to be 1%% of fc is: %d kHz'%(fc/1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example6.2, page no 262" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a)\n", + "Tuning capacitor range is: 4.579156\n", + "b)\n", + "Tuning capacitor range is: 1051\n" + ] + } + ], + "source": [ + "#Given\n", + "fmax=1600e3\n", + "fmin=500e3\n", + "IF=465e3\n", + "#i\n", + "fo1max=fmax+IF\n", + "fo1min=fmin+IF\n", + "C1max_C1min=(fo1max/fo1min)**2\n", + "#ii\n", + "fo2max=fmax-IF\n", + "fo2min=fmin-IF\n", + "C2max_C2min=(fo2max/fo2min)**2\n", + "print 'a)\\nTuning capacitor range is: %f\\nb)\\nTuning capacitor range is: %d'%(C1max_C1min,C2max_C2min)\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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter7_4UbWKmj.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter7_4UbWKmj.ipynb new file mode 100644 index 00000000..777d4640 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter7_4UbWKmj.ipynb @@ -0,0 +1,438 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 7 : Noise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.2, page no 276" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The mean square noise voltage is: 18.363 mV\n" + ] + } + ], + "source": [ + "from numpy import sqrt,pi\n", + "from mpmath import quad\n", + "#Given\n", + "mue=25#\n", + "rp=5e3\n", + "Rl=10e3\n", + "C=1e-9\n", + "gm=mue/rp\n", + "Req=2.5/gm\n", + "\n", + "k=1.381e-23\n", + "T=293\n", + "R1=1e5\n", + "# Power density spectrum for respective res\n", + "d1=2*k*T*R1\n", + "d2=2*k*T*Req\n", + "d3=2*k*T*Rl\n", + "xo=0\n", + "x1=1e14\n", + "#w=0:inf\n", + "#H1(w)=(-gm*rp*Rl)/(rp+Rl+(1J*w*rp*Rl*C))\n", + "Vo=sqrt((20231.65e2/pi)*quad(lambda w:1/(((3e9)**2)+(w**2)),[xo,x1]))\n", + "print 'The mean square noise voltage is: %0.3f mV'%(Vo*1e3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.3, page no 279" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The mean square noise voltage is: 22.414 uV\n" + ] + } + ], + "source": [ + "from numpy import sqrt,pi\n", + "from mpmath import quad\n", + "\n", + "#Given\n", + "mue=25\n", + "rp=5e3\n", + "Rs=1e3#input resistance\n", + "#Coupling Capacitors are assumed as short circuit\n", + "Rg=1e5\n", + "gm=25/5e3\n", + "Req=2.5/gm\n", + "F=1+((((Req*(Rs+Rg)**2)+(Rg*Rs**2))/(Rs*Rg**2)))\n", + "xo=0\n", + "x1=1e10\n", + "#w=0:inf\n", + "\n", + "vo=sqrt((30145e-8/pi)*quad(lambda w:1/(((3e5)**2)+(w**2)),[xo,x1]))\n", + "print 'The mean square noise voltage is: %.3f uV'%(vo*1e6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.4, page no 283" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "overall noise Figure is: 4.33\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Given\n", + "Ap1=10\n", + "Ap2=10\n", + "Ap3=10# # Gain of each states\n", + "F_1=6\n", + "F_2=6\n", + "F_3=6# #Noise figure of each state\n", + "F1= round(10**(F_1/10))\n", + "F2= round(10**(F_2/10))\n", + "F3= round(10**(F_3/10))# # approximating the values\n", + "\n", + "F=F1+((F2-1)/Ap1)+((F3-1)/(Ap1*Ap2))\n", + "print 'overall noise Figure is: %.2f'%(F)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.5, page no 283" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The overall noise figure is: 7.04\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Given\n", + "Fif=15# Noise figure of IF amplifier\n", + "Ap1=10# Gain of Preamplifier\n", + "Fpa=6#Noise figure of preamplifier\n", + "F2=10**(Fif/10)\n", + "F1=10**(Fpa/10)\n", + "\n", + "F=F1+((F2-1)/Ap1)#overall noise figure\n", + "print 'The overall noise figure is: %.2f'%(F)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.6, page no 284" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overall Noise figure is: 2.055\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Given\n", + "mue=25# tube parameters\n", + "rp=10e3# tube parameters\n", + "gm=2.5e-3# transconductance\n", + "Req=2.5/gm# equivalent resistance\n", + "Rs=1000\n", + "Rg=1e5\n", + "F1=1+(((Req*((Rs+Rg)**2))+Rg*Rs**2)/(Rs*(Rg**2)))#noise figure of the first stage\n", + "Rg2=9.1e3\n", + "Rs2=10e3\n", + "Es=1# assuming Es=1 for ease of calculation\n", + "Pi=((Es/2e3)**2)*1e3\n", + "Po=1.532e-2*Es**2\n", + "Ap1=Po/Pi\n", + "F2=1+(((Req*((Rs2+Rg2)**2))+Rg2*Rs2**2)/(Rs2*(Rg2**2)))# noise figure of the second stage\n", + "F=(F1)+((F2-1)/Ap1)\n", + "print 'Overall Noise figure is: %.3f'%(F)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.8, page no 285" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The equivalent noise temp is: 4.913 K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Given\n", + "g01=30# gain of 1st stage\n", + "g02=20#gain of 2nd stage\n", + "g03=40#gain of 3rd stage\n", + "F2=6# Noise factor of stage 2\n", + "F3=12# Noise factor of stage 3\n", + "Te1=4# Eq noise temp of stage 1\n", + "T=290# Room \n", + "G01=round(10**(g01/10))\n", + "G02=round(10**(g02/10))\n", + "G03=round(10**(g03/10))\n", + "F_2=round(10**(F2/10))\n", + "F_3=round(10**(F3/10))\n", + "Te2=round((F_2-1))*T\n", + "Te3=round((F_3-1))*T\n", + "Te=Te1+(Te2/G01)+(Te3/(G01*G02))# Eq overall noise temp\n", + "print 'The equivalent noise temp is: %.3f K'%(Te)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.9, page no 286" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Equivalent noise temperature is 7.028 K\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Given\n", + "g01=round(10**(25/10))#low noise amplifier gain\n", + "Te1=4#low noise amplifier noise temp\n", + "g02=round(10**(1.7))#preamplifier gain\n", + "F2=round(10**0.6)#preamplifier noise figure\n", + "F3=round(10**1.2)#preamplifier noise figure\n", + "T=290# room temp\n", + "Te2=round((F2-1)*T)\n", + "Te3=round((F3-1)*T)\n", + "Te=Te1+(Te2/g01)+(Te3/(g01*g02))#Overall noise Temperature\n", + "print 'Equivalent noise temperature is %.3f K'%(Te)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.10, page no 286" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "S/N ratio for FM is 43.29 dBs\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log10\n", + "#Given\n", + "SNRam=25# Signal to noise ratio of AM\n", + "PcFM_AM=0.9#\n", + "mf=5\n", + "SNRfm=(10*log10(3*(mf**2)*(PcFM_AM)))+SNRam\n", + "print 'S/N ratio for FM is %.2f dBs'%(SNRfm)\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.11, page no 287" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a)\n", + " New SNR for 3dB increase in input s/g is 23 dBs\n", + "b) When Modulation depth is increased to 60%\n", + " SNR becomes 25.676045 dBs\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log10\n", + "#Given\n", + "ma=0.3\n", + "SNR=20# s/n ratio\n", + "SNR1=10**(0.1*SNR)\n", + "SNR_new=SNR+3\n", + "ma2=0.6# increased new depth of modulation\n", + "Pt_Ni=SNR1*((1+(ma**2))/(ma**2))\n", + "SNR2=10*log10(Pt_Ni*((ma2**2)/(1+((ma2**2)/2))))\n", + "\n", + "print 'a)\\n New SNR for 3dB increase in input s/g is %d dBs\\nb) When Modulation depth is increased to 60%%\\n SNR becomes %f dBs'%(SNR_new,(SNR2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.12, page no 287" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a) Bit Transmission rate: 60 kbits/s\n", + " Signal to Quantization noise ratio 128 \n", + "b)\n", + " Bit Transmission rate: 5 kbits/sample\n", + " Signal to Quantization noise ratio: 64\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "#Given\n", + "fmax=5e3#max s/g freq\n", + "S_fmin=2*fmax# Min sampling freq\n", + "B_S=6#Binary bits sent per sample\n", + "BTR=B_S*S_fmin#Bit Transmission rate\n", + "Q=2**B_S#No of Quantizable levels\n", + "MQN=0.5/Q#Max Quantization noise\n", + "S_QNR=MQN**-1# Signal to Quantization noise ratio\n", + "#b\n", + "S_QNRreq=0.5*S_QNR# Signal to Quantization noise ratio\n", + "Qreq=0.5*S_QNRreq#No of Quantizable levels\n", + "B_Sreq=log(Qreq,2)#Binary bits sent per sample\n", + "print 'a) Bit Transmission rate: %d kbits/s\\n Signal to Quantization noise ratio %d \\nb)\\n Bit Transmission rate: %d kbits/sample\\n Signal to Quantization noise ratio: %d'%(BTR/1000,S_QNR,B_Sreq,S_QNRreq)" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter8_Bm3chQW.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter8_Bm3chQW.ipynb new file mode 100644 index 00000000..3b5d4da2 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter8_Bm3chQW.ipynb @@ -0,0 +1,781 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter No 8 - Transmission Line" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.1, page no 313" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The characteristic Impedance is Zo= 154.92 ohm\n", + "\n", + "Propagation constant is Gama=0.0+7.75e-06j W\n", + "\n", + " The freq at which the line length is equal to wavelength is: 750 KHz\n", + " The velocity of propagation is: 322.75 km/sec\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi\n", + "#Given\n", + "#a\n", + "L=1.2*10**-3#distributed inductance\n", + "C=0.05*10**-6#distributed capacitance\n", + "Zo=sqrt(L/C)#Characteristic Impedance\n", + "print 'The characteristic Impedance is Zo= %0.2f ohm'%(Zo)\n", + "Wo=1# Assumedfor ease of calculation \n", + "G=1J*sqrt(L*C)*Wo\n", + "print '\\nPropagation constant is Gama={0:0.1f}+{1:0.2e}j W'.format(G.real,G.imag)\n", + "#b\n", + "#i\n", + "lamda=0.4e3#wavelength=Line length\n", + "c=3e8\n", + "f=c/lamda\n", + "#ii\n", + "L=L*0.4\n", + "C=C*0.4\n", + "v=1/(sqrt(L*C))\n", + "print '\\n The freq at which the line length is equal to wavelength is: %d KHz\\n The velocity of propagation is: %0.2f km/sec'%(f*1e-3,v*1e-3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.2, page no 314" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The phase shift is: 144 degrees\n", + "Open Circuited line impedance: -688.19 ohms\n", + "Short Circuited line impedance: -363.27 ohms\n" + ] + } + ], + "source": [ + "from math import cos, sin, tan,pi\n", + "#Given\n", + "v=3e8# velocty of light\n", + "f=1.2e6# Operating Freq\n", + "lamda=v/f\n", + "#print lamda)\n", + "l=100# length of the Tx-Line\n", + "phi=2*(pi*l)/(lamda)# Phase shift in degrees\n", + "Zo=500# Characteristic impedance\n", + "#a Open circuited Line\n", + "\n", + "Zin=-1J*Zo*(cos(phi)/sin(phi))\n", + "\n", + "#b Short circuited Line\n", + "Z1in=1J*Zo*tan(phi)\n", + "print 'The phase shift is: %d degrees'%(phi*180/pi)\n", + "print 'Open Circuited line impedance: {0:0.2f}'.format(-Zin.imag),'ohms'\n", + "print 'Short Circuited line impedance: {0:.2f}'.format(Z1in.imag),'ohms'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.3, page no 315" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Characteristic impedance:Zo= \n", + "(185.464726748-135.988363959j)\n", + "The value of Alpha=0.263 nepere/km\n", + "\n", + "The value of Beta= 0.308\n", + "the tx-Line parameters are\n", + "R= 90.72 ohms\n", + "L= 21.46 mH\n", + "G= 128.80 umhos\n", + "C= 1.76 mF\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from cmath import exp,sqrt,log,atan,pi\n", + "#Given\n", + "f=1600\n", + "w=1000\n", + "Zoc=2460*exp(1J*-86.5*pi/180)# Open circuited Line impedance\n", + "Zsc=21.5*exp(1J*14*pi/180)# Short circuited Line impedance\n", + "Zo=sqrt(Zoc*Zsc)# Characteristic impedance\n", + "A=(sqrt(Zsc/Zoc)).real# tan(a+ jBeta) = A + jB\n", + "B=(sqrt(Zsc/Zoc)).imag\n", + "l=1/4\n", + "alpha=(1/(4*l))*log(((1+A**2+B)**2)/(((1-A)**2)+B**2)) #Attenuation Constant\n", + "Beta=(1/(2*l))*atan((2*B)/(1-A**2-B)) #phase constant\n", + "\n", + "#the tx-Line parameters\n", + "R=(Zo*complex(alpha,Beta)).real\n", + "L=(Zo*complex(alpha,Beta)).imag\n", + "G=(complex(alpha,Beta)/Zo).real\n", + "C=(complex(alpha,Beta)/Zo).imag\n", + "print 'The Characteristic impedance:Zo= '\n", + "print Zo\n", + "print 'The value of Alpha={0:.3f} '.format(alpha.real),'nepere/km\\n'\n", + "print 'The value of Beta= {0:0.3f}'.format(Beta.real)\n", + "print 'the tx-Line parameters are\\nR= %0.2f ohms\\nL= %0.2f mH\\nG= %0.2f umhos\\nC= %0.2f mF\\n'%(R,L,G*1e6,C*1e3)\n", + "\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.4, page no 316" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The atenuation constant is 0.011 nepers/mile\n", + "The Cut-off Freq is 6 KHz\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt,pi\n", + "#Given\n", + "d=0.7# distance between two insertions\n", + "Ld_m= (80e-3)*(10/7)#Loading coil inductance\n", + "#print Ld_m)\n", + "Rd_m=100/7#Loading coil resistance\n", + "#print Rd_m)\n", + "R=20+Rd_m#Line resistance \n", + "L=Ld_m# Line inductance\n", + "C=0.05e-6# Line Capacitance\n", + "alfa=0.5*R*sqrt(C/L)#Attenuation Constant\n", + "#\n", + "fc=(pi*d*sqrt(L*C))**-1#cut off freq\n", + "print 'The atenuation constant is %0.3f nepers/mile\\nThe Cut-off Freq is %d KHz'%(alfa,fc*1e-3)\n", + "\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.5, page no 317" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the voltage at the mid point of the line is \n", + " 6.97+6.97j\n", + " V with Angle = -8.59degrees\n" + ] + } + ], + "source": [ + "from cmath import exp,pi\n", + "#Given\n", + "a=0.7#attenuation constant\n", + "b=0.3#phase constant\n", + "Gamma=a+(1J*b)#propagation constant\n", + "l=0.5# half length of line( for midpoint)\n", + "Vs=10# Excitation voltage\n", + "V_mod=Vs*(exp(-a*l))#Magnitude of the Vs\n", + "\n", + "phi=b*l*180/pi#phase shift\n", + "V=V_mod*(exp(-1J*(phi*pi/180)))#voltage at the mid point\n", + "print 'the voltage at the mid point of the line is \\n {0:0.2f}+{0:.2f}j\\n V with Angle = -%0.2fdegrees'.format(V.real,V.imag)%phi\n", + "\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.6, page no 317" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The characteristic impedance Zo= 22.20 /_-19.66 ohm\n", + "\n", + " The Phase velocity is: v= 2.88e+07 m/sec\n", + " Percent decrease in the voltage is 14.91%\n" + ] + } + ], + "source": [ + "from cmath import pi,sqrt,polar,phase,exp\n", + "#Given\n", + "R=0.01\n", + "l=1e3\n", + "L=1e-6\n", + "G=1e-6\n", + "C=0.001e-6\n", + "f=1.59e3# operating freq\n", + "w=2*pi*f# angular freq\n", + "#a\n", + "Zo=sqrt((R+(1J*w*L))*0.35/(G+(1J*w*C)))#characteristic impedance\n", + "Z0=polar(Zo)\n", + "Z0r=Z0[0]\n", + "Z0i=Z0[1]\n", + "#b\n", + "\n", + "Beta=sqrt(0.5*(sqrt((((R**2)+(round(w**2)*(L**2)))*(round(G**2)+(round(w**2)*(C**2)))))-(round(R*G)-((w**2)*L*C))))#Phase constant\n", + "\n", + "v=w/Beta#phase velocity\n", + "\n", + "#c\n", + "Alpha=sqrt(0.5*(sqrt((((R**2)+((w**2)*(L**2)))*((G**2)+((w**2)*(C**2)))))+((R*G)-((w**2)*L*C))))#attenuation constant\n", + "Vs=1#Assumed for easeof calculation\n", + "A=(Vs-(Vs*exp(-Alpha*l)))*100\n", + "print 'The characteristic impedance Zo= %0.2f /_%0.2f ohm\\n'%(Z0r,Z0i*180/pi)\n", + "print ' The Phase velocity is: v= %3.2e m/sec\\n Percent decrease in the voltage is %0.2f%c'%(v.real,A.real,'%')\n", + "\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.15, page no 334" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The current received is= 13.64 mA at phase-22.59\n" + ] + } + ], + "source": [ + "from cmath import cosh,polar,pi\n", + "#GivenR=0.01\n", + "x=10#line length\n", + "Zo=100# characteristic impedance\n", + "a=0.1# attenuation constant\n", + "Beta=0.05# phase constant\n", + "Is=20e-3# source current\n", + "Gamma=a+ 1J*Beta# propagation constant\n", + "\n", + "I=Is/cosh(Gamma*x)# received current\n", + "\n", + "Ii=polar(I)\n", + "I_r=Ii[0]\n", + "I_i=Ii[1]\n", + "\n", + "print 'The current received is= %0.2f mA at phase%0.2f'%(1000*I_r,I_i*180/pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.15, page no 348" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The input impedance is 526.81 /_-2.18deg\n", + "Reflection Coeff is 0.07 /_-163.77deg\n" + ] + } + ], + "source": [ + "from cmath import exp,polar,cosh,sinh,pi\n", + "\n", + "#Given\n", + "l=100# Tx-line length\n", + "ZR=200#Terminal resistance\n", + "Zo=600#Characteristic impedance\n", + "a=0.01#attenuation constant\n", + "Beta=0.03#phase constant\n", + "d=0#reflection coeff at load is Zero\n", + "Gamma=a+1J*Beta#propagation constant\n", + "Kd=((ZR-Zo)/(ZR+Zo))*exp(-2*Gamma*d)#reflection coeff at point D d km from load\n", + "Kdd=polar(Kd)\n", + "Kdr=Kdd[0]\n", + "Kdi=Kdd[1]\n", + "d1=100# distance\n", + "Ks=((ZR-Zo)/(ZR+Zo))*exp(-2*Gamma*d1)#reflection coeff at the sending end\n", + "[Ksr,Ksi]=polar(Ks)\n", + "Zin=Zo*(((ZR*cosh(Gamma*l))+(Zo*sinh(Gamma*l)))/((Zo*cosh(Gamma*l))+(ZR*sinh(Gamma*l))))#Input impedance\n", + "Zz=polar(Zin)\n", + "Zinr=Zz[0]\n", + "Zini=Zz[1]\n", + "print 'The input impedance is %0.2f /_%0.2fdeg\\nReflection Coeff is %0.2f /_%0.2fdeg'%(Zinr,Zini*180/pi,Ksr,Ksi*180/pi)\n", + "\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.16, page no 349" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The characteristic impedance is 283.94 /_-41.38deg\n" + ] + } + ], + "source": [ + "from cmath import sqrt,polar,pi\n", + "#Given\n", + "L=1e-3#inductance\n", + "R=40# Resistance\n", + "C=0.1e-6# capacitance\n", + "G=1e-6#conductance\n", + "w=5000# angular freq\n", + "Zo=sqrt(complex(R,(w*L))/complex(G,(w*C)))#Characteristic impedance\n", + "#Zr=sqrt(sqrt(R**2+(w*L)**2)/sqrt(G**2+(w*C)**2))\n", + "Zz=polar(Zo)\n", + "ZoR=Zz[0]\n", + "ZoI=Zz[1]\n", + "print 'The characteristic impedance is %0.2f /_%0.2fdeg'%(ZoR,ZoI*180/pi)\n", + "\n", + "# Note : There are some calculation errors in the solution presented in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.17, page no 349" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The voltage at the mid point of the line is 7.05 /_-8.59 \n" + ] + } + ], + "source": [ + "from cmath import polar,exp\n", + "#Given\n", + "l=0.5#half line distance\n", + "Vs=10#Excitation voltage\n", + "Gamma=0.7+1J*0.3#propagation constant\n", + "Vv=polar(Vs*(exp(-Gamma*l)))#vtg at mid point\n", + "Vr=Vv[0]\n", + "Vi=Vv[1]\n", + "print 'The voltage at the mid point of the line is %0.2f /_%0.2f '%(Vr,Vi*180/pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.18, page no350" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The max voltage on line is 5.92 V\n", + " The min voltage on line is 4.23 V\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "Zo=50# characteristic impedance\n", + "P=500e-3#Supplied power\n", + "S=1.4#VSWR on the line\n", + "Emax=sqrt(Zo*S*P)#Max vtg\n", + "\n", + "Emin=sqrt(Zo*P/S)# Min vtg\n", + "print 'The max voltage on line is %0.2f V\\n The min voltage on line is %0.2f V'%(Emax,Emin)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.19, page no 350" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "The voltage reflection coeff is 0.17\n", + "The VSWR is 1.40\n", + "\n", + "\n", + "The Max and min voltage and crresponding crrent is\n", + " Emax= 3.74V Imin= 26.73mA\n", + " Emin= 2.67V Imax= 37.42mA\n", + "\n", + " The Termination resistance should be 28.57 ohm\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "Zo=100# Characteristic Impedance\n", + "P=100e-3#Load power\n", + "Zr=140#Load Resistance\n", + "f=100e3# Operating freq\n", + "#a\n", + "K=(Zr-Zo)/(Zo+Zr)#Vtg Reflection coeff\n", + "\n", + "#b\n", + "S=(1+K)/(1-K)#VSWR\n", + "\n", + "#c+d\n", + "Emax=sqrt(Zr*P)#Max line vltg\n", + "Imin=Emax/Zr#Min line current\n", + "\n", + "Emin=Emax/S# Min line vltg\n", + "Imax=S*Imin#Max line current\n", + "\n", + "#e\n", + "R=14000/40\n", + "\n", + "Zr=(Zo**2)/R#\n", + "print '\\nThe voltage reflection coeff is %0.2f\\nThe VSWR is %0.2f\\n\\n\\nThe Max and min voltage and crresponding crrent is\\n Emax= %0.2fV Imin= %0.2fmA\\n Emin= %0.2fV Imax= %0.2fmA\\n\\n The Termination resistance should be %0.2f ohm'%(K,S,Emax,Imin*1e3,Emin,Imax*1e3,Zr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.20, page no 352" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the receiving voltage will be 0.25 V\n" + ] + } + ], + "source": [ + "from math import exp,log\n", + "#Given\n", + "V=0.5#receiving vtg\n", + "Vs=2#Source vtg\n", + "al=-log(V/Vs)#attenuation\n", + "\n", + "al2=al*1.5\n", + "V=Vs*exp(-al2)#receiving voltage\n", + "print 'the receiving voltage will be %0.2f V'%(V)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.22, page no352" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The lrngth should be 25 metres\n", + "The Characteristic Impedance should be 48.79 ohms\n" + ] + } + ], + "source": [ + "from cmath import sqrt\n", + "#Given\n", + "Zin=25+1J*15# Internal Impedance\n", + "Zr=70-1J*42#load\n", + "f=3e6#operating freq\n", + "v=3e8#light velocity\n", + "L=v/(4*f)#length of the line\n", + "\n", + "Zo=sqrt(Zin*Zr)#Characteristic Impedance\n", + "\n", + "print 'The lrngth should be %d metres\\nThe Characteristic Impedance should be %0.2f ohms'%(L,Zo.real)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.23, page no353" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The cut-off freq is 3.03 KHz \n", + " the voltage being measured is 1 V\n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "from __future__ import division\n", + "#Given\n", + "#a\n", + "L=1e-3# inductance\n", + "C=61.25e-9#capacitance\n", + "Ld=44e-3#coil inductance\n", + "d=2#distance intervals after which coils are added\n", + "Lt=(L*2)+(Ld*2)#total inductance\n", + "Ct=C*2#total capacitance\n", + "fc=(pi*sqrt(Lt*Ct))**-1#cut off freq\n", + "\n", + "#b\n", + "I=100e-3#milliameter range\n", + "R=1#milliameter resistance\n", + "Zo=100#characteristic impedance\n", + "Zin=(Zo**2)/R#input impedance\n", + "\n", + "Er=I*R#\n", + "Es=Er*sqrt(Zin/Zo)\n", + "print 'The cut-off freq is %0.2f KHz \\n the voltage being measured is %d V'%(fc*1e-3,Es)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.24, page no 354" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the Length of the transformer(stub) is 3.75 metres\n", + " The characteristic impedance of this transformer is 224 ohms\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "f=20e6#tuned freq\n", + "ZR=100#Equivalent aerial Resistance\n", + "Zin=500#input impedance\n", + "c=3e8\n", + "lamda=c/f\n", + "l=lamda/4#lamda/4 Transformer\n", + "\n", + "Zo=sqrt(Zin*ZR)#Characteristic impedance\n", + "print 'the Length of the transformer(stub) is %0.2f metres\\n The characteristic impedance of this transformer is %d ohms'%(l,round(Zo))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.25, page no 354" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The sending end (Source end)impedance (Zl)is: \n", + "330.46+-16.35j\n" + ] + } + ], + "source": [ + "from math import pi,cos,sin\n", + "#Given\n", + "lamda=5#wavelength\n", + "Zo=200#Characteristic impedance\n", + "Zo1=100#Zo'\n", + "ZL=50+(1J*50)# load impedance\n", + "l1=0.4*lamda\n", + "l2=0.2*lamda\n", + "Beta=(2*pi/lamda)# phase difference\n", + "Z2=Zo1*(((ZL*cos(Beta*l2))+(1J*Zo1*sin(Beta*l2)))/((Zo1*cos(Beta*l2))+(1J*ZL*sin(Beta*l2))))#I/p Impedance offered by I2toI1\n", + "Z1=Zo*(((Z2*cos(Beta*l1))+(1J*Zo*sin(Beta*l1)))/((Zo*cos(Beta*l1))+(1J*Z2*sin(Beta*l1))))#I/p impedance\n", + "print 'The sending end (Source end)impedance (Zl)is: '\n", + "print '{0:0.2f}+{1:0.2f}j'.format(Z1.real,Z1.imag)" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter9_DDdr7S3.ipynb b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter9_DDdr7S3.ipynb new file mode 100644 index 00000000..680d96b4 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/Chapter9_DDdr7S3.ipynb @@ -0,0 +1,338 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter No 9 - Aerials" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.1, page no 397" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum effective aperture of the\n", + " aerial is 28.65 sq m\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "\n", + "#Given\n", + "D=90# directivity\n", + "lamda=2# wavelength\n", + "Ae=(D*(lamda**2))/(4*pi)#effective aperture\n", + "print 'The maximum effective aperture of the\\n aerial is %0.2f sq m'%(Ae)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.2, page no 397" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Angular beam width is 22.92 degrees\n", + "BeamWidth is 0.40 rad\n" + ] + } + ], + "source": [ + "from math import pi,cos\n", + "#Given\n", + "n=10#no of aerial elements\n", + "d=0.5#distance in terms of wavelength\n", + "Beam_Width=2/(n*d)#\n", + "Beam_Width_degrees=Beam_Width*180/pi\n", + "print 'Angular beam width is %0.2f degrees\\nBeamWidth is %0.2f rad'%(Beam_Width_degrees,Beam_Width)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.3, pageno 397" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total power radiated is 888.00 watts\n" + ] + } + ], + "source": [ + "from numpy import arange, pi\n", + "from mpmath import quad, sin\n", + "#Given\n", + "r=1#assume distance for ease of calculation\n", + "#Pav(theta)=(1000/(3*pi*r**2))*((sin(theta))**2)\n", + "theta=arange(0, pi, 0.1)\n", + "x0=0\n", + "x1=pi\n", + "Pt=(2000/(3*r**2))*quad(lambda theta: (sin(theta))**3,[x0,x1])#Total power radiated \n", + "print 'Total power radiated is %0.2f watts'%(Pt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.4, page no 398" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "electric field intensity is 0.25 mV/m \n", + " magnetic field intensity is 0.67 uA/m\n" + ] + } + ], + "source": [ + "from math import pi,cos\n", + "#Given\n", + "dl=2# length of wire \n", + "I=6#current in the wire\n", + "f=1e6# operating freq\n", + "r=30e3#distance at which field is to be calculated\n", + "theta=90#right angles to the wire axis\n", + "lamda=300# wavelength\n", + "w=2*pi*f#angular freq\n", + "c=3e8\n", + "t=f**-1\n", + "Phi=w*(t-(r/c))#Phase shift\n", + "Erad=25.13e-5*cos(Phi)#Radiation electric field intensity\n", + "H=Erad/(120*pi)#Radiation magnetic field intensity\n", + "print 'electric field intensity is %0.2f mV/m \\n magnetic field intensity is %0.2f uA/m'%(Erad*1e3,H*1e6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.5, page no 399" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The radiated power is 1.03 watts\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#Given\n", + "#c\n", + "Rr=73# radition resistance\n", + "Vrms=10#RMS voltage of the signal\n", + "Zin_mod=sqrt((73**2)+(42**2))#absolute input impedance\n", + "Irms=Vrms/Zin_mod#RMS current\n", + "Pt=(Irms**2)*Rr# Radiated power\n", + "print 'The radiated power is %0.2f watts'%(round(100*Pt)/100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.6 page no 400" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ideal directive gain is 55840\n" + ] + } + ], + "source": [ + "#Given\n", + "#b\n", + "c=3e8\n", + "f=2e9#operating freq\n", + "Ae=100#aperture area\n", + "lamda=c/f# operating wavwlength\n", + "D=((4*3.141*Ae)/(lamda**2))# Directivity\n", + "print 'Ideal directive gain is %d'%(D)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.7, pageno 400" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The angular width is 0.40 degrees\n" + ] + } + ], + "source": [ + "#Given\n", + "#b\n", + "n=10# no of aerial elements\n", + "lambda_d=2#\n", + "BeamWidth=2*lambda_d/n# Beamwidth\n", + "print 'The angular width is %0.2f degrees'%(BeamWidth)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.8, page no 400" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overall Gain is 3.52 dBs\n" + ] + } + ], + "source": [ + "from math import log10\n", + "#Given\n", + "D1=1\n", + "D2=1.5*D1 # diameters of the new reflectors D1=1assumed for ease of calculation\n", + "G_dbs=10*log10((D2/D1)**2)#Gain in dBs\n", + "print 'Overall Gain is %0.2f dBs'%(round(1000*G_dbs)/1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.9, page no 401" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Radiation resistance is 2.05 ohm\n" + ] + } + ], + "source": [ + "#Given\n", + "#b\n", + "c=3e8\n", + "f=800e3# operating freq\n", + "dl=27#effective height\n", + "lamda=c/f\n", + "\n", + "Rr=40*(3.142**2)*(dl/lamda)**2#Radiation Resistance\n", + "print 'Radiation resistance is %0.2f ohm'%(Rr)" + ] + } + ], + "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/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/ctftch1_40WhnWi.png b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/ctftch1_40WhnWi.png Binary files differnew file mode 100644 index 00000000..7c959f08 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/ctftch1_40WhnWi.png diff --git a/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/fourier_r6RyIXJ.png b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/fourier_r6RyIXJ.png Binary files differnew file mode 100644 index 00000000..c0033679 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/fourier_r6RyIXJ.png diff --git a/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/modulat_OMRi1e8.png b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/modulat_OMRi1e8.png Binary files differnew file mode 100644 index 00000000..3b34f439 --- /dev/null +++ b/Principle_of_Communication_Engineering_by_A._Singh_and_A._K._Chhabra/screenshots/modulat_OMRi1e8.png diff --git a/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_10_qWhnOxh.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_10_qWhnOxh.ipynb new file mode 100644 index 00000000..2855a29c --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_10_qWhnOxh.ipynb @@ -0,0 +1,193 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 10:Component Selection and Balancing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.1,PAGE NUMBER:136" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "# Variable declaration\n", + "w_a=8.4;# The mass flow rate of air in kg/s\n", + "R=3.8;# Rating of an air-cooling evaporator in kW/k\n", + "T_a=-15;# Entering air temperature in °C\n", + "T_r=-21;# Refrigerant temperature in °C\n", + "\n", + "# Calculation\n", + "deltaT=(T_a+273)-(T_r+273);# Rating LMTD in K\n", + "E=R*deltaT;# Rated duty in kW\n", + "C_pair=1.006;# kJ/kg.K\n", + "T_ar=E/(C_pair*w_a);# Reduction in air temperature in °C \n", + "T_al=T_a-T_ar;# Air leaving temperature in °C\n", + "deltaT_min=(T_al+273)-(T_r+273);# K\n", + "deltaT_max=deltaT;# K\n", + "LMTD=(deltaT_max-deltaT_min)/(math.log(deltaT_max/deltaT_min));\n", + "print\"\\nLMTD=%1.1f K\"%LMTD" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 10.2,PAGE NUMBER:136" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "Q=45;# The sensible heat extracted by an air-cooling coil in kW\n", + "T_in=24;# The entering air temperature in °C\n", + "T_out=18;# The leaving air temperature in °C\n", + "T_e=11;# Refrigerant evaporating temperature in °C\n", + "C_pa=1.02;# The specific heat capacity of air in kJ/kg.K\n", + "Af=[100,95,90,85];# Air flow (%)\n", + "m=[7.35,6.99,6.62,6.25];# Mass air flow (kg/s)\n", + "T_a=[24,24,24,24];# Air temperature on coil (°C)\n", + "deltaT=[6,6.3,6.7,7.1];# ΔT for 45 kW (K)\n", + "T_aoff=[18,17.7,17.3,16.9];# Air temperature off coil (°C)\n", + "LMTD=[9.7,9.5,9.2,9.0];# LMTD,refrigerant at 11°C (K)\n", + "h=[1,0.96,0.92,0.88];# h, in terms of design (from V0.8) \n", + "\n", + "# Calculation\n", + "m_af=Q/(C_pa*(T_in-T_out));\n", + "Capacity=[(45*h[0]*LMTD[0])/9.7,(45*h[1]*LMTD[1])/9.7,(45*h[2]*LMTD[2])/9.7,(45*h[3]*LMTD[3])/9.7];# kW\n", + "print\"\\nDesign mass air flow=%1.2f kg/s\"%m_af\n", + "print\"The cooling capacity at 100,95,90and 85 percentage mass air flow=%2.0f,%2.1f,%2.1fand %2.1f kW\"%(Capacity[0],Capacity[1],Capacity[2],Capacity[3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.3,PAGE NUMBER:140" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "P_c=10;# kW\n", + "T_e=-35;# Evaporating temperature in °C\n", + "T_c=40;# Condensing temperature in °C\n", + "T_s=5;# Subcooling temperature in K\n", + "T_cin=20;# Compressor inlet temperature in °C\n", + "T_cout=0;# Zero subcooling temperature in °C\n", + "\n", + "# Calculation\n", + "#(a)\n", + "v_s1=146.46;# m**3/kg\n", + "v_s2=135.25;# m**3/kg\n", + "v_sr=v_s1/v_s2;# The ratio of specific volume\n", + "# Assuming the compressor pumps the same volume flowrate:\n", + "m_1bym_2=v_sr;# Flow rate ratio\n", + "print\"\\nFlow rate ratio,m_2/m_1=%1.3f\"%m_1bym_2\n", + "#(b)\n", + "h_1=392.51;# Suction gas enthalpy at 20°C in kJ/kg\n", + "h_2=375.19;# Suction gas enthalpy at 0°C in kJ/kg\n", + "h_f=257.77;# Liquid enthalpy at the expansion valve inlet at 40°C in kJ/kg\n", + "dh_1=h_1-h_f;# Evaporator enthalpy difference at rating condition in kJ/kg\n", + "dh_2=h_2-h_f;# Evaporator enthalpy difference with 0°C suction in kJ/kg\n", + "dh_r=dh_2/dh_1;# Enthalpy difference ratio\n", + "C_c=P_c*m_1bym_2*dh_r;# Compressor capacity corrected for suction temperature change in kW\n", + "print\"\\nCompressor capacity corrected for suction temperature change=%1.2f kW\"%C_c\n", + "#(c)\n", + "h_f=249.67;# Liquid enthalpy at the expansion valve inlet at 35°C in kJ/kg\n", + "dh=h_2-h_f;# Evaporator enthalpy difference at application condition in kJ/kg\n", + "dh_r=dh/dh_1;# Enthalpy difference ratio\n", + "C_cact=P_c*m_1bym_2*dh_r;# Actual compressor capacity in kW\n", + "print\"\\nActual compressor capacity=%2.2f kW\"%C_cact\n", + "#(d)\n", + "h_g=350.13;# Suction gas enthalpy at evaporator outlet, -30°C (5 K superheat) in kJ/kg\n", + "dh_e=h_g-h_f;# Useful evaporator enthalpy difference in kJ/kg\n", + "dh_r=dh_e/dh_1;# Enthalpy difference ratio\n", + "C_eact=P_c*m_1bym_2*dh_r;# Actual evaporator capacity in kW\n", + "print\"\\nActual evaporator capacity=%1.2f kW\"%C_eact" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.4,PAGE NUMBER:142" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_c1=30;# Condensing temperature for larger condenser in °C\n", + "T_c2=35;# Condensing temperature for smaller condenser in °C\n", + "Rc_1=242;# Rated capacity of plant for larger condenser in kW\n", + "Rc_2=218;# Rated capacity of plant for smaller condenser in kW\n", + "Rt_1=1802;# Running time (kW-h)\n", + "Rt_2=2000;# Running time (kW-h)\n", + "Ci_1=60;# Compressor electrical input power in kW\n", + "Ci_2=70;# Compressor electrical input power in kW\n", + "Ec_1=11533;# Electricity cost per year (£)\n", + "Ec_2=14933;# Electricity cost per year (£)\n", + "C_1=14000;# Cost of the larger condenser in £\n", + "C_2=8500;# Cost of the smaller condenser in £\n", + "\n", + "# Calculation\n", + "Es=Ec_2-Ec_1;# Cost of the larger condenser in £\n", + "Bet=(C_1-C_2)*Es**-1;# Break-even time in years\n", + "print\"Break-even time=%1.1f years\"%Bet" + ] + } + ], + "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/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_11_ouN3tck.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_11_ouN3tck.ipynb new file mode 100644 index 00000000..2c6f3f29 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_11_ouN3tck.ipynb @@ -0,0 +1,88 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 11:Installation and Construction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.1,PAGE NUMBER:152" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_c=34;# The condensing temperature in °C\n", + "T_s=30;# The subcooled temperature in °C\n", + "g=9.81;# m/s**2\n", + "\n", + "# Calculation\n", + "P_c=15.69;# Saturation pressure at 34°C in bar\n", + "P_s=14.18;# Saturation pressure at 30°C in bar\n", + "dp=P_c-P_s;# Permissible pressure drop in bar\n", + "rho=1022;# Specific mass of liquid in kg/m**3;\n", + "H=(dp*10**5)/(rho*g);# Possible loss in static head in m\n", + "print\"Possible loss in static head=%2.1f m\"%H" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.2,PAGE NUMBER:158" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_a=20;# The ambient temperature in °C\n", + "m_p=10;# g\n", + "\n", + "# Calculation\n", + "P_v=10.34;# Vapour pressure of R407C at 20°C in bar abs\n", + "P_o=11.70;# Observed pressure in bar abs\n", + "P_p=P_o-P_v;# Partial pressure of non-condensible gas in bar abs\n", + "M_m=(0.23*52)+(0.25*120)+(0.52*102);# Molecular mass\n", + "print\"\\nPartial pressure of non-condensible gas=%1.2f bar abs \\nMolecular mass=%2.0f\"%(P_p,M_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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_15_cWlZFV9.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_15_cWlZFV9.ipynb new file mode 100644 index 00000000..f941b77f --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_15_cWlZFV9.ipynb @@ -0,0 +1,100 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 15:Cold storage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 15.1,PAGE NUMBER:188" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "n=2;# The number of two pellet truck doors\n", + "m_n=300;#The number of traffic movements per day\n", + "t=30;# seconds\n", + "\n", + "# Calculation\n", + "T=n*m_n*t;# The time for the door openings seconds per day \n", + "A=2.2*3.2;# The cross sectional area in m**2\n", + "v=1;# m/s\n", + "I=A*T*v;# The air infiltration in m**3/d\n", + "V=50*70*10;# The store volume in m**3\n", + "R=I/V;# The rate of air change per day\n", + "print\"\\nThe store volume is %5.0f m**3. \\nThe rate of air change is %1.1f per day.\"%(V,R)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 15.2,PAGE NUMBER:188" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T=5;# The dry bulb temperature in \n", + "R=3.6;# The rate of air change per day\n", + "V=35000;# The store volume in m**3\n", + "v_spa=0.8;# The specific volume in m**3/kg\n", + "q=600;# m**3/h\n", + "n=2;# The number of two pellet truck doors\n", + "h_1=15.9;# kJ/kg\n", + "h_2=-24.3;# kJ/kg\n", + "T_1=20;# °C\n", + "T_2=-25;# °C\n", + "t=24;# Time duration for one day in hours\n", + "t_s=24*60*60;# Time duration for one day in seconds\n", + "\n", + "# Calculation\n", + "R_woh=V*R/v_spa;# The rate of air change without dehumidification in kg/day\n", + "Q_woh=R_woh*(h_1-h_2)/t_s;# The cooling load without dehumidification in kW\n", + "R_wh=q*n*t/v_spa;# The rate of air change with dehumidification in kg/day\n", + "Q_wh=R_wh*(T_1-T_2)/t_s;# The cooling load with dehumidification in kW\n", + "print\"\\nThe rate of air change without dehumidification is %5.0f kg/day. \\nThe cooling load without dehumidification %2.1f kW(calculation error).\"%(R_woh,Q_woh)\n", + "print\"\\nThe rate of air change with dehumidification is %5.0f kg/day. \\nThe cooling load with dehumidification %2.2f kW.\"%(R_wh,Q_wh)\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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_18_UvH1VFJ.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_18_UvH1VFJ.ipynb new file mode 100644 index 00000000..e1962b2c --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_18_UvH1VFJ.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 18:Refrigeration Load Estimation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 18.1,PAGE NUMBER:228" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_1=15;# °C\n", + "T_2=0;# °C\n", + "C_pw=4.187;# The specific heat capacity of water in kJ/kg.k\n", + "m=20*10**3;# The mass flow rate of water in kg/day\n", + "h_l=334;# kJ/kg\n", + "t=24*3600;# The time available for cooling in s\n", + "\n", + "# Calculation\n", + "Q=(m*((C_pw*T_1)+334))/t;# The cooling load in kW\n", + "print\"The cooling load,Q=%2.0f kW.\"%Q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 18.2,PAGE NUMBER:228" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_1=22;# °C\n", + "T_2=1;# °C\n", + "C_p=3.1;# The specific heat capacity of meat in kJ/kg.K\n", + "m=8*10**3;# The mass of meat in kg\n", + "t=14*3600;# The time available for cooling in s\n", + "\n", + "# Calculation\n", + "Q=(m*((C_p*(T_1-T_2))))/t;# The cooling load in kW\n", + "print\"The cooling load,Q=%2.1f kW.\"%Q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 18.3,PAGE NUMBER:230" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "n=12;# The number of lighting fittings\n", + "P=280;# W\n", + "P_3f=660;# W\n", + "P_h=18;# kW\n", + "I=80;# A\n", + "V=24;# V\n", + "\n", + "# Calculation\n", + "L=[1.12,3.36];# Lighting,12*280,8h/day [Average over 24 h,Peak]\n", + "F=[7.78,7.92];# Fan motors, 12*660 W [Average over 24 h,Peak]\n", + "Dh=[1.50,18.00];# Defrost heaters,72 kW,1/2 h/day [Average over 24 h,Peak]\n", + "Fl=[0.21,1.92];# Fork-lift,1.92 kW,(1/3)*8h [Average over 24 h,Peak]\n", + "Fld=[0,0.12];# Fork-lift driver,120 kW,(1/3)*8h [Average over 24 h,Peak]\n", + "P=[0,0.24];# Packers,240 W,(1/3)*8h [Average over 24 h,Peak]\n", + "Avg=L[0]+F[0]+Dh[0]+Fl[0]+Fld[0]+P[0];# Average over 24 h\n", + "Peak=L[1]+F[1]+Dh[1]+Fl[1]+Fld[1]+P[1];# Peak\n", + "print\"\\nAverage over 24 h=%2.2f \\nPeak=%2.2f\"%(Avg,Peak)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 18.6,PAGE NUMBER:231" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "m=1000;# The capacity of meat store in tonnes\n", + "m_l=50;# The amount of meat leaving the store in t/day\n", + "m_s=300;# The amount of meat arrives from the ships in t/day\n", + "t=24*3600;# Time in s\n", + "\n", + "# Calculation\n", + "# Case(1)\n", + "m=90;# t/day\n", + "T_1=2;# °C\n", + "T_2=-12;# °C\n", + "C=3.2;# Specific heat capacity in kJ/(kg.K)\n", + "T_fp=-1;# Freezing point of meat in °C\n", + "h_fg=225;# Latent heat of freezing in kJ/kg\n", + "C_fm=1.63;# Specific heat of frozen meat in kJ/(kg.K)\n", + "Q_f=(m*1000*((C*3)+h_fg+(C_fm*11)))/(t);# Cooling load in kW\n", + "print\"\\nCase(1):Cooling load,Q_f=%3.0f kW\"%Q_f\n", + "# Case(2)\n", + "Q_f=(m_s*10**3*(C_fm*T_1))/t;# Cooling load in kW\n", + "print\"\\nCase(2):Cooling load,Q_f=%2.0f kW\"%Q_f\n", + "# Case(3)\n", + "Q_f=(m_l*10**3*((C*3)+h_fg+(C_fm*11)))/t;# Cooling load in kW\n", + "print\"\\nCase(3):Cooling load,Q_f=%3.0f kW\"%Q_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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_1_vgHId0T.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_1_vgHId0T.ipynb new file mode 100644 index 00000000..81311d47 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_1_vgHId0T.ipynb @@ -0,0 +1,304 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CHAPTER 1:Fundmentals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.1,PAGE NUMBER:3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "T_0=-5+273;# K\n", + "T_1=35+273;# K\n", + "\n", + "# Calculation\n", + "COP=(T_0)/(T_1-T_0);# Coefficient of performance\n", + "print \"Carnot COP=\",round(COP,2),\"(error)\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.2,PAGE NUMBER:4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "T_f=80;# Final Temperature in °C\n", + "T_i=0;# Initial Temperature in °C\n", + "h_f=334.91;# The specific enthalpy of water in kJ/kg\n", + "\n", + "# Calculation\n", + "C=h_f/(T_f-T_i);# The average specific heat capacity in kJ/(kg K)\n", + "print \"The average specific heat capacity is\",round(C,3),\"kJ/(kg K)\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.3,PAGE NUMBER:4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "P=1.013;# Pressure in bar\n", + "h_fg=2257;# The latent heat of boiling water in kJ/kg\n", + "T_b=100; # The boiling point temperature of water in °C\n", + "m=1; # The mass of water in kg\n", + "T_i=30; # The initial temperature of water in °C\n", + "C_p=4.19;# The specific heat of water in kJ/kg°C\n", + "\n", + "# Calculation\n", + "Q=m*((C_p*(T_b-T_i))+h_fg);# The quantity of heat added in kJ\n", + "print\"The quantity of heat added is\",round(Q,1),\"kJ\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.4,PAGE NUMBER:6" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "V_1byV_2=2;# Volumetric ratio (given)\n", + "p_1=1.01325;# The atmospheric pressure in bar(101325 kPa)\n", + "\n", + "# Calculation\n", + "p_2=V_1byV_2*p_1;# The new pressure in bar\n", + "print\"The new pressure,p_2=\",round(p_2,4),\"bar(abs.)\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.5,PAGE NUMBER:7" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "V_1=0.75;# The initial volume in m**3\n", + "T_1=273+20; # The initial temperature of water in K\n", + "T_2=273+90; # The final temperature of water in K\n", + "\n", + "# Calculation\n", + "V_2=V_1*(T_2/T_1);# The final volume in m**3\n", + "print\"The final volume,V_2=\",round(V_2,2),\"m**3\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.6,PAGE NUMBER:7" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "R=287;# The specific gas constant in J/(kg K)\n", + "m=5; # The mass of ideal gas in kg\n", + "p=101.325;# The atmospheric pressure in kPa\n", + "T=273+25;# The temperature of an ideal gas in K\n", + "\n", + "# Calculation\n", + "V=(m*R*T)/(p*1000);# The volume of an ideal gas in m**3\n", + "print\"The volume of an ideal gas is\",round(V,2),\"m**3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.7,PAGE NUMBER:7,8" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "m_N=0.906;# The mass of nitrogen in a cubic metre of air in kg\n", + "R_N=297;# The specific gas constant of nitrogen in J/kg K\n", + "m_O=0.278;# The mass of oxygen in a cubic metre of air in kg\n", + "R_O=260;# The specific gas constant of oxygen in J/kg K\n", + "m_A=0.015;# The mass of argon in a cubic metre of air in kg\n", + "R_A=208;# The specific gas constant of argon in J/kg K\n", + "T=273.15+20;# The temperature of air in K\n", + "\n", + "# Calculation\n", + "p_N=m_N*R_N*T;# The pressure of nitrogen in Pa\n", + "p_O=m_O*R_O*T;# The pressure of oxygen in Pa\n", + "p_A=m_A*R_A*T;# The pressure of argon in Pa\n", + "p_t=p_N+p_O+p_A;# The total pressure in Pa\n", + "print\"The total pressure is\",round(p_t,0),\"Pa\",\"(\",round(p_t/10**5,5),\"bar)\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.8,PAGE NUMBER:8" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declartion\n", + "t=225;# The wall thickness in mm\n", + "k=0.60;# Thermal conductivity in W/(m K)\n", + "L=10;# Length in m\n", + "h=3;# Height in m\n", + "delT=25;# The temperature difference between the inside and outside faces in K\n", + "\n", + "# Calculation\n", + "Q_t=(L*h*k*delT*1000)/(t);# The rate of heat conduction in W\n", + "print\"The rate of heat conduction,Q_t=\",round(Q_t,0),\"W\"\"(or)\",round(Q_t/1000,0),\"kW)\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.9,PAGE NUMBER:10" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declartion\n", + "R_i=0.3;# The inside surface resistance in (m**2 K)/W\n", + "R_c=1/2.8;# The thermal conductance of plastered surface in (m**2 K)/W\n", + "R_o=0.05;# The outside surface resistance in (m**2 K)/W\n", + "\n", + "# Calculation\n", + "R_t=R_i+R_c+R_o;# The total thermal resistance in (m**2 K)/W\n", + "U=1/R_t;# The overall transmittance in W/(m**2 K)\n", + "print\"The overall transmittance,U=\",round(U,3),\" W/(m**2 K)\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 1.10,PAGE NUMBER:12" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "# Variable declartion\n", + "T_f=3;# The temperature of fluid in °C\n", + "T_wi=11.5;# The temperature of water at inlet in °C\n", + "T_wo=6.4;# The temperature of water at outlet in °C\n", + "A=420;# The surface area in m**2\n", + "U=110;# The thermal transmittance in W/(m**2 K) \n", + "\n", + "# Calculation\n", + "delT_max=T_wi-T_f;# The maximum temperature difference in K\n", + "delT_min=T_wo-T_f;# The minimum temperature difference in K\n", + "LMTD=(delT_max-delT_min)/math.log(delT_max/delT_min);\n", + "Q_f=U*A*LMTD;# The amount of heat transfer in W\n", + "print\"The logarithmic mean temperature difference is\",round(LMTD,3),\"K\"\n", + "print\"The amount of heat transfer is\",round(Q_f,0),\"W (round off error)\",\"or\",round(Q_f/1000,0),\"kW\"" + ] + } + ], + "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/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_21_l3d3qF6.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_21_l3d3qF6.ipynb new file mode 100644 index 00000000..a769b073 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_21_l3d3qF6.ipynb @@ -0,0 +1,275 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 21:Air Treatment Fundamentals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.1,PAGE NUMBER:251" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "m_a=68;# The mass flow rate of air in kg/s\n", + "T_1=16;# The temperature of air at inlet in °C\n", + "T_2=34;# The temperature of air at outlet in °C\n", + "T_win=85;# The temperature of hot water at inlet in °C\n", + "T_wout=74;# The temperature of hot water at outlet in °C\n", + "C_pa=1.02;# The specific heat capacity of air in kJ/kg.K\n", + "C_pw=4.187;# The specific heat capacity of water in kJ/kg.K\n", + "\n", + "# Calculation\n", + "Q=m_a*C_pa*(T_2-T_1);# Heat input in kW\n", + "m_w=Q/(C_pw*(T_win-T_wout));# The mass flow rate of water in kg/s\n", + "print\"\\nHeat input,Q=%4.0f kW \\nThe mass flow rate of water,Q=%2.0f kg/s\"%(Q,m_w)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.2,PAGE NUMBER:251" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "Q=500;# The amount of heat required for the building in kW\n", + "T=19;# The temperature at which air enters the heater coil in °C\n", + "m_a=68;# # The mass flow rate of air in kg/s\n", + "C_pa=1.02;# The specific heat capacity of air in kJ/kg.K\n", + "\n", + "# Calculation\n", + "t=T+(Q/(m_a*C_pa));# The air supply temperature in °C\n", + "print\"The air-supply temperature,t=%2.1f°C\"%t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.3,PAGE NUMBER:254" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_ra=21;# The temperature of the returning air \n", + "H=50;# % saturation\n", + "T_d=28;# The dry bulb temperature in °C\n", + "T_w=20;# The wet bulb temperature in °C\n", + "m_a=20;# The mass flow rate of returning air in kg/s\n", + "m_b=3;# The mass flow rate of outside air in kg/s\n", + "x_ra=0.0079;# The moisture content in kg/kg\n", + "x_oa=0.0111;# The moisture content in kg/kg\n", + "h_a=41.8;# The enthalpy in kJ/kg\n", + "h_b=56.6;# The enthalpy in kJ/kg\n", + "\n", + "# Calculation\n", + "# Method (b)\n", + "t_c=((T_ra*m_a)+(T_d*m_b))/(m_a+m_b);# °C\n", + "g_c=((x_ra*m_a)+(x_oa*m_b))/(m_a+m_b);# kg/kg\n", + "h_c=((h_a*m_a)+(h_a*m_b))/(m_a+m_b);# kJ/kg dry air\n", + "print\"\\nThe condition of the mixture,t_c=%2.1f°C\"%t_c\n", + "print\"\\n g_c=%0.4f kg/kg\"%g_c\n", + "print\"\\n h_c=%2.1f kJ/kg dry air\"%h_c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.5,PAGE NUMBER:257" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_s=100;# The temperature of steam in °C\n", + "T_d=21;# The dry bulb temperature in °C\n", + "H=50;# % saturation\n", + "x_ab=0.0079;# Moisture content of air before in kg/kg\n", + "x_a=0.0067;# Moisture added in kg/kg\n", + "C_ps=1.972;# The specific heat capacity of the steam in kJ/kg°C\n", + "C_pa=1.006;# The specific heat capacity of air in kJ/kg.K\n", + "\n", + "# Calculation\n", + "x=x_ab+x_a;# Final moisture content in kg/kg\n", + "t=((x_a*C_ps*T_s)+(C_pa*T_d))/(((x_a*C_ps)+(C_pa)));# The final dry bulb temperature in °C\n", + "print\"\\nFinal moisture content=%0.4f kg/kg \\nThe final dry bulb temperature,t=%2.2f°C\"%(x,t)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.6,PAGE NUMBER:259" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_d1=23;# The dry bulb temperature in °C\n", + "T_w=5;# The temperature of water in °C\n", + "H=50;# % saturation\n", + "n_s=0.7;# Saturation efficiency in %\n", + "x_a=0.0089;# Moisture content in kg/kg\n", + "x_b=0.0054;# Moisture content in kg/kg\n", + "\n", + "# Calculation\n", + "#(a)\n", + "print\"(a) By construction on the chart ( Figure 21.7 ), the final condition is 10.4°C dry bulb,82% saturation\"\n", + "#(b)\n", + "T_d2=T_d1-(n_s*(T_d1-T_w));# The final dry bulb temperature in °C\n", + "x_f=x_a-(n_s*(x_a-x_b));# kg/kg\n", + "print\"\\n(b)The final condition,\\n The final dry bulb temperature=%2.1f°C \\n The moisture content=%0.5f kg/kg\"%(T_d2,x_f)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.7,PAGE NUMBER:259" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "m_w=4;# The mass of water in kg\n", + "m_a=1;# The mass of air in kg\n", + "h_ab=45.79;# Enthalpy of air before in kJ/kg\n", + "h_aa=26.7;# Enthalpy of air after in kJ/kg\n", + "C_pw=4.187;# The specific heat capacity of water in kJ/kg.K\n", + "\n", + "# Calculation\n", + "Q_l=h_ab-h_aa;# Heat lost per kilogram air in kJ\n", + "Q_g=Q_l/m_w;# Heat gain per kilogram water in kJ\n", + "dT=Q_g/C_pw;# Temperature rise of water in K\n", + "print\"Temperature rise of water=%1.0f K\"%dT\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.8,PAGE NUMBER:261" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_d1=24;# The dry bulb temperature in °C\n", + "T_d2=7;# The dry bulb temperature in °C\n", + "H=45;# % saturation\n", + "cf=0.78;# Contact factor\n", + "h_1=45.85;# The enthalpy in kJ/kg\n", + "h_2=22.72;# The enthalpy in kJ/kg\n", + "\n", + "# Calculation\n", + "#(a) By construction on the chart ( Figure 21.9 ), 10.7°C dry bulb, 85% saturation.\n", + "#(b) By calculation, the dry bulb will drop 78% of 24 to 7°C:\n", + "dT=T_d1-(cf*(T_d1-T_d2));# The drop in dry bulb temperature in °C\n", + "dh=h_1-(cf*(h_1-h_2));# The drop in enthalpy in kJ/kg\n", + "print\"\\nThe drop in dry bulb temperature=%2.1f°C \\nThe drop in enthlpy=%2.2f kJ/kg\"%(dT,dh)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 21.10,PAGE NUMBER:262" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_d=23;# The dry bulb temperature in °C\n", + "H=40;# % saturation\n", + "SH=36;# The sensible heat to be removed in kW\n", + "LH=14;# The latent heat in kW\n", + "\n", + "# Calculation\n", + "# Plotting on the chart ( Figure 21.10 ) from 23°C/40% and using the ratio\n", + "R=SH/(SH+LH);\n", + "print\"The process line meets the saturation curve at - 1°C, giving the ADP (which meansthat condensate will collect on the fins as frost).\"\n", + "print\"Taking the ‘ off ’ condition at 5°C dry bulb and measuring the proportion along theprocess line gives a coil contact factor of 75%.\"\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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_22_FKhy6lK.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_22_FKhy6lK.ipynb new file mode 100644 index 00000000..eb85362f --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_22_FKhy6lK.ipynb @@ -0,0 +1,116 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 22:Practical Air Treatment Cycles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example 22.1,PAGE NUMBER:270" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_d=37;# The dry bulb temperature of air in °C\n", + "H=24;# % saturation\n", + "n_s=75;# Saturation efficiency in %\n", + "h=62.67;# The entering enthalpy in kJ/kg\n", + "\n", + "# Calculation\n", + "# By construction on the chart, or from tables, the ultimate saturation condition would be 21.5°C, and 75% of the drop from 37°C to 21.5°C gives a fi nal dry bulb of 25.4°C.\n", + "h_fg=2425;# The average latent heat of water over the working range in kJ/kg\n", + "q=(h_fg)**-1;# The amount of water to be evaporated in kg/(s kW)\n", + "print\"The amount of water to be evaporated is %0.0e kg/(s kW)\"%q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 22.2,PAGE NUMBER:271" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_d=37;# The dry bulb temperature of air in °C\n", + "T_w=25.4;# The cooling temperature of water in °C\n", + "cf=0.80;# Contact factor\n", + "\n", + "# Calculation\n", + "T_df=T_d-(cf*(T_d-T_w));# The dry bulb temperature (final) in °C\n", + "print\"\\nThe dry bulb temperature (final)=%2.1f°C (point D , Figure 22.4b )\"%T_df\n", + "print\"\\nThe wet bulb is now 18.9°C and the enthalpy is 53 kJ/kg.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 22.3,PAGE NUMBER:271" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "T_d=26;# The dry bulb temperature of air in °C\n", + "T_w=20;# The wet bulb temperature of water in °C\n", + "T_win=29;# The temperature of water at inlet in °C\n", + "T_wout=24;# The temperature of water at outlet in °C\n", + "C_pw=4.187;# The specific heat capacity of water in kJ/kg.K\n", + "\n", + "# Calculation\n", + "Q=C_pw*(T_win-T_wout);# Heat from water in kJ/kg\n", + "h_ain=57.1;# Enthalpy of entering air in kJ/kg\n", + "h_aout=78.1;# Enthalpy of leaving air in kJ/kg\n", + "print\"\\nHeat from water=%2.0f kJ/kg \\nEnthalpy of entering air=57.1 kJ/kg \\nEnthalpy of leaving air=78.1 kJ/kg\"%Q\n", + "print\"From the chart, the air leaves at approximately 25.7°C dry bulb.\"" + ] + } + ], + "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/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_23_Sc6yNS4.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_23_Sc6yNS4.ipynb new file mode 100644 index 00000000..ff7d9550 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_23_Sc6yNS4.ipynb @@ -0,0 +1,130 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 23:Air-Conditioning Load Estimation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 23.1,PAGE NUMBER:275" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#Variable declaration\n", + "R_si=0.3;# The inside resistance in (m**2 K)/W\n", + "R_1=0.040/0.09;# The thermal resistance of concrete panels in (m**2 K)/W\n", + "R_2=0.050/0.037;# The thermal resistance of insulation in (m**2 K)/W\n", + "R_3=0.012/0.16;# The thermal resistance of plaster board in (m**2 K)/W\n", + "R_so=0.07;# The outside resistance in (m**2 K)/W\n", + "\n", + "#Calculation\n", + "U=1/(R_si+R_1+R_2+R_3+R_so);# U factor in W/(m**2 K)\n", + "print\"U factor=%0.2f W/(m**2 K)\"%U" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 23.2,PAGE NUMBER:278" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#Variable declaration\n", + "T_d1=21;# The dry bulb temperature of air in °C\n", + "H=45;# % saturation\n", + "T_d2=27;# The dry bulb temperature of air in °C\n", + "T_wb1=20;# The wet bulb temperature of air in °C\n", + "m=1.35;# The mass flow rate of air in kg/s\n", + "C_pa=1.006;# The specific heat capacity of air in kJ/kg.K\n", + "C_pw=4.187;# The specific heat capacity of water in kJ/kg.K\n", + "\n", + "#Calculation\n", + " # 1.Total heat:\n", + "h_2=57.00;# Enthalpy at 27°C DB, 20°C WB in kJ/kg\n", + "h_1=39.08;# Enthalpy at 21°C DB, 45% sat in kJ/kg\n", + "dh=17.92;# Heat to be removed in kJ/kg\n", + "Q_t=dh*m;# Total heat in kW\n", + "print\"Total heat,Q_t=%2.1f kW\"% Q_t\n", + "\n", + "# 2.Latent heat:\n", + "x_2=0.0117;# Moisture at 27°C DB, 20°C WB in kg/kg\n", + "x_1=0.0070;# Moisture at 21°C DB, 45% sat in kg/kg\n", + "dx=x_2-x_1;# Moisture to be removed in kg/kg\n", + "Q_l=dx*m*2440;# Latent heat in kW\n", + "print\"Latent heat,Q_l=%2.1f kW\"% Q_l\n", + "\n", + "# 3.Sensible heat:\n", + "Q_s=(C_pa+((C_pw*x_2)))*(T_d2-T_d1)*m;# Sensible heat in kW\n", + "print\"Sensible heat,Q_s=%1.1f kW\"% Q_s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 23.3,PAGE NUMBER:280" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#Variable declaration\n", + "Q_tl=15;# Total lighting load\n", + "P_ra=90;# % of load taken from return air\n", + "P_a=25;# % of load rejected to ambient\n", + "\n", + "#Calculation\n", + "Q_ra=Q_tl*(P_ra*10**-2);# Picked up by return air in kW\n", + "Q_a=Q_ra*(P_a*10**-2);# Rejected to ambient in kW\n", + "Q_net=Q_tl-Q_a;# Net room load in kW \n", + "print\"\\nNet room load=%2.3f kW\"%Q_net" + ] + } + ], + "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/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_24_8dh6uDb.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_24_8dh6uDb.ipynb new file mode 100644 index 00000000..66471240 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_24_8dh6uDb.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 24:Air Movement" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 24.1,PAGE NUMBER:281" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "Z=4500;# Altitude in m\n", + "p=575;# mbar barometric pressure\n", + "t=-10;# Temperature in °C\n", + "\n", + "# Calculation\n", + "rho=1.2*(p/1013.25)*((273.15+20)/(273.15+t));# The density of dry air in kg/m**3\n", + "print\"The density of dry air,rho=%0.2f kg/m**3\"%rho" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 24.2,PAGE NUMBER:282" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "V=1;# The volume of air in m**3\n", + "t=20;# The dry bulb temperature in °C\n", + "H=60;# % saturation\n", + "p=101.325;# The pressure in kPa\n", + "v=7;# The velocity in m/s\n", + "v_s=0.8419;# The specific volume in m**3/kg\n", + "\n", + "# Calculation\n", + "m=V/v_s;# Mass in kg\n", + "Ke=(m*v**2)/2;# Kinetic energy in kg/(m s**2)\n", + "print\"Kinetic energy=%2.1f kg/(m s**2)\"%Ke" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 24.3,PAGE NUMBER:296" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "v_e=8;# The entering velocity of air in m/s\n", + "v_l=5.5;# The leaving velocity of air in m/s\n", + "fl=20;# Friction losses in %\n", + "m=1.2;# Masss in kg\n", + "\n", + "# Calculation\n", + "P_e=(m*v_e**2)/2;# Velocity pressure entering expansion in Pa\n", + "P_l=(m*v_l**2)/2;# Velocity pressure leaving expansion in Pa\n", + "FL=fl*10**-2*(P_e-P_l);# Friction losses in Pa\n", + "Sr=(1-(fl*10**-2))*(P_e-P_l);# Static regain in Pa\n", + "print\"The amount of Static regain=%2.1f Pa\"%Sr" + ] + } + ], + "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/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_25_xcXBomq.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_25_xcXBomq.ipynb new file mode 100644 index 00000000..6dde7780 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_25_xcXBomq.ipynb @@ -0,0 +1,169 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CHAPTER 25:Air-Conditioning Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 25.1,PAGE NUMBER:305" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "# Variable Declaration\n", + "T_d=21;# The dry bulb temperature in °C\n", + "Q=14;# Internal load in kW\n", + "H=50;# % saturation\n", + "Q_l=1.5;# Latent heat gain in kW\n", + "T_ain=12;# The inlet air temperature in °C \n", + "C_p=1.02;# The specific heat capacity of air in kJ/kg.K\n", + "\n", + "# Calculation\n", + "deltaT=T_d-T_ain;# Air temperature rise through room in K\n", + "m=Q/(deltaT*C_p);# Air flow for sensible heat in kg/s\n", + "x=0.007857;# Moisture content of room air, 21, 50%\n", + "x_p=Q_l/(2440*m);# Moisture to pick up\n", + "x_ain=x-x_p;# Moisture content of entering air \n", + "print\"\\nAir flow for sensible heat=%1.3f kg/s \\nMoisture content of entering air=%0.5f\"%(m,x_ain)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 25.2,PAGE NUMBER:305" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "# Variable declaration\n", + "# From example 25.1\n", + "Q_i=14;# Internal load in kW\n", + "Q_l=1.5;# Latent heat gain in kW\n", + "Q_f=0.9;# The fan motor power in kW\n", + "T_win=5;# The temperature of water at inlet in °C \n", + "T_wout=10.5;# The temperature of water at outlet in °C \n", + "C_pw=4.19;# The specific heat capacity in kJ/kg.K\n", + "\n", + "# Calculation\n", + "Q=Q_i+Q_l+Q_f;# Total cooling load in kW\n", + "m_w=Q/(C_pw*(T_wout-T_win));# Mass water flow in kg/s\n", + "print\"\\nMass water flow=%0.2f kg/s\"%m_w" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 25.3,PAGE NUMBER:305" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "# Variable declaration\n", + "# From example 25.2\n", + "Q=16.4;# Total load in kW\n", + "T_in=33;# The temperature at liquid R134a enters the expansion valve in °C \n", + "T_out=9;# The temperature at liquid R134a leaves the cooler in °C \n", + "T_e=5;# The temperature at which liquid R134a evaporates in °C \n", + "\n", + "# Calculation\n", + "h_v=405.23;# Enthalpy of R134a,superheated to 9 C in kJ/kg\n", + "h_f=246.71;# Enthalpy of liquid R134a at 33 C in kJ/kg\n", + "Re=h_v-h_f;# Refrigerating effect in kJ/kg\n", + "m_r=Q/Re;# Required refrigerant mass flow in kg/s\n", + "print\"Required refrigerant mass flow=%0.3f kg/s\"%m_r\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## EXAMPLE 25.4,PAGE NUMBER:306" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "# Variable declaration\n", + "T_d1=13;# The dry bulb temperature in °C \n", + "m_a=0.4;# The flow rate of primary air in kg/s\n", + "T_win=12;# The temperature of water at inlet in °C \n", + "T_wout=16;# The temperature of water at outlet in °C \n", + "H=72;# % saturation\n", + "T_d2=21;# The dry bulb temperature in °C \n", + "# From example 25.1\n", + "Q_i=14;# Internal load in kW\n", + "Q_l=1.5;# Latent heat gain in kW\n", + "C_pw=4.19;# The specific heat capacity in kJ/kg.K\n", + "C_pa=1.02;# The specific heat capacity of air in kJ/kg.K\n", + "\n", + "# Calculation\n", + "x_a=0.006744;# Moisture in primary air, 13 C DB, 72% sat\n", + "x_r=Q_l/(2440*m_a);# Moisture removed in kg/kg\n", + "x_rise=x_a+x_r;# Moisture in room air will rise to in kg/kg\n", + "# which corresponds to a room condition of 21°C dry bulb, 53% saturation\n", + "Q_a=m_a*C_pa*(T_d2-T_d1);# Sensible heat removed by primary air in kW\n", + "Q_w=Q_i-Q_a;# Heat to be removed by water in kW\n", + "m_w=Q_w/(C_pw*(T_wout-T_win));# Mass water flow in kg/s\n", + "print\"\\nMass water flow=%0.2f kg/s\"%m_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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_29_Q0LKlUS.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_29_Q0LKlUS.ipynb new file mode 100644 index 00000000..9ccca88a --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_29_Q0LKlUS.ipynb @@ -0,0 +1,64 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 29:Commissioning and Maintenance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 29.1,PAGE NUMBER:347" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "# Variable declaration\n", + "T_e=3;# The evaporating temperature in °C\n", + "T_in=20;# The temperature of air entering coil in °C\n", + "T_out=11;# The temperature of air off coil at full air flow in °C\n", + "T_c=35;# The condensing temperature in °C\n", + "af=(1-0.15);# The reduced air flow \n", + "\n", + "# Calculation\n", + "LMTD=((T_in-T_e)-(T_out-T_e))/math.log((T_in-T_e)/(T_out-T_e));# K\n", + "T_aoff=T_in-(T_in-T_out)/af;# Air off coil at 85% air flow (°C)\n", + "Cp=(af)**0.8;# Coil performance at 85% air flow (°C)\n", + "LMTD_85=LMTD/Cp;# LMTD at 85% air flow in K\n", + "print\"\\nLMTD at 85 percentage air flow=%2.1f K(error)\"%LMTD_85" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "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/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_2_KSvJEHz.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_2_KSvJEHz.ipynb new file mode 100644 index 00000000..4710dde2 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_2_KSvJEHz.ipynb @@ -0,0 +1,71 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CHAPTER 2:The Refrigeration Cycle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EXAMPLE 2.1,PAGE NUMBER:21" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable Declaration\n", + "T_l=0+273;# The required cooling temperature of room in °C\n", + "T_h=30+273;# The temperature of outside air in °C\n", + "T_e=-5+273;# The evaporating temperature of Refrigeration cycle in °C\n", + "T_c=35+273;# The Condensing temperature of Refrigeration cycle in °C\n", + "deltaT=5;# The temperature difference at the evaporator and the condenser in K\n", + "h_i=249.7;# Enthalpy of fl uid entering evaporator in kJ/kg\n", + "h_e=395.6;# Enthalpy of saturated vapour leaving evaporator in kJ/kg\n", + "h_sup=422.5;# Enthalpy of superheated vapour leaving compressor in kJ/kg\n", + "\n", + "# Calculation\n", + "CarnotCOP=T_l/(T_h-T_l);\n", + "print\"The Carnot COP for the process is\",round(CarnotCOP,1)\n", + "# For Refrigeration cycle,\n", + "CarnotCOP=T_e/(T_c-T_e);\n", + "print\"The Carnot COP for the refrigeration cycle is\",round(CarnotCOP,1)\n", + "# For R134a,\n", + "Q=h_e-h_i;# Cooling effect in kJ/kg\n", + "W_in=h_sup-h_e;# Compressor energy input in kJ/kg\n", + "COP=Q/W_in;# Ideal R134a vapour compression cycle COP\n", + "print\"The Carnot COP for the ideal vapour compression cycle is\",round(COP,1)\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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_30_hFIRByo.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_30_hFIRByo.ipynb new file mode 100644 index 00000000..475ed0a5 --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_30_hFIRByo.ipynb @@ -0,0 +1,72 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 30:Efficiency, Running Cost and Carbon Footprint" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 30.1,PAGE NUMBER:358" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "P=15;# kW\n", + "n_b=85;# The effiency of the gas boiler in %\n", + "SCOP=3;# An average or seasonal COP (SCOP) of heat pump\n", + "\n", + "# Calcualtion\n", + "# For the gas boiler\n", + "R_pf=17.65;# Rate of primary fuel use in kW\n", + "m_co2=0.19;# The mass of carbon in kg\n", + "R_co2=R_pf*m_co2;# Rate of CO_2 emission in kg/h\n", + "# For example\n", + "Gp=3;# p/kWh\n", + "Rc=R_pf*Gp;# Boiler Running cost in p per hour of heating\n", + "print\"Boiler Running cost=%2.0fp per hour of heating.\"%Rc\n", + "# For heat pump\n", + "T_R_pf=10;# Rate of primary fuel use in kW (total)\n", + "R_pf=5;# Rate of primary fuel use in kW\n", + "m_co2=0.43;# The mass of carbon in kg\n", + "R_co2=R_co2=R_pf*m_co2;# Rate of CO_2 emission in kg/h\n", + "# For example\n", + "Ep=9;# p/kWh\n", + "Rc=R_pf*Ep;# HP Running cost in p per hour of heating\n", + "print\"HP Running cost=%2.0fp per hour of heating.\"%Rc" + ] + } + ], + "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/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_6_2HDnR8j.ipynb b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_6_2HDnR8j.ipynb new file mode 100644 index 00000000..b08708fb --- /dev/null +++ b/Refrigeration_and_Air-Conditioning_by_G.F._Hundy,_A.A._Trott._and_le._Welch/CHAPTER_6_2HDnR8j.ipynb @@ -0,0 +1,150 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CHAPTER 6:Condensers and Cooling Towers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.1,PAGE NUMBER:77" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "Q_1=12;# Heat load in kW\n", + "T_c1=50;# The condensing temperature in °C\n", + "T_o1=35;# The maximum outdoor temperature in °C\n", + "T_o2=15;# The reduced outdoor temperature in °C\n", + "Q_2=8;# The reduced heat load in kW\n", + "\n", + "# Calculation\n", + "deltaT=T_c1-T_o1;# Temperature Difference in K\n", + "CR=Q_1*10**3/deltaT;# Condenser Rating in W/K\n", + "CR=CR*10**-3;# Condenser Rating in kW/K\n", + "deltaT_15=Q_2/CR;# Temperature Difference at 15°C \n", + "T_c2=T_o2+deltaT_15;#The Condensing temperature at 15°C\n", + "print\"Cooling Rating=\",round(CR,1),\"kW/K\"\n", + "print\"Temperature Difference at 15°C=%2.0f°C\"%deltaT_15\n", + "print\"The Condensing temperature at 15°C=%2.0f°C\"%T_c2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.2,PAGE NUMBER:80" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "deltaT=5.2;# The temperature rise in K\n", + "E=930;# Total duty at the condenser in kW\n", + "C_pw=4.187;# The specific heat of water in kJ/kg K\n", + "\n", + "# Calculation\n", + "mdot=E/(deltaT*C_pw);# The amount of water required in kg/s\n", + "print round(mdot,0),\"kg/s water flow is required.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 6.3,PAGE NUMBER:80" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "E_t=880;# Total duty at the condenser in kW\n", + "E_wcp=15;# Total duty at water-circulating pump in kw\n", + "\n", + "# Calculation\n", + "E=E_t+E_wcp;# Total tower duty in kW\n", + "w_er=E*0.41*10**-3;# Evaporation rate in kg/s\n", + "Cr_80=30;# Circulation rate in kg/s\n", + "Cr_160=60;# Circulation rate in kg/s\n", + "w_air=E*0.06;# Air flow rate in kg/s\n", + "print\"\\nEvaporation rate=%0.2f kg/s \\nCirculation rate,80times=%2.0f kg/s \\nCirculation rate,160times=%2.0f kg/s \\nAir flow rate=%2.0f kg/s\"%(w_er,Cr_80,Cr_160,w_air)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.4,PAGE NUMBER:85" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Variable declaration\n", + "Cc=700;# The cooling capacity in kW\n", + "P_c=170;# The compressor power in kW\n", + "c_b=0.0012;# Concentration of solids in bleed-off (kg/kg)\n", + "c_m=0.00056;# Concentration of solids in make-up water in kg/kg\n", + "\n", + "# Calculation\n", + "E_tc=Cc+P_c;# Cooling tower capacity in kW\n", + "h_fg=2420;# Latent heat of water vapour in kJ/kg\n", + "w_e=E_tc*10**3/h_fg;# Rate of evaporation in g/s\n", + "w_m=(w_e*(c_b))/(c_b-c_m);# Rate of make up in kg/s\n", + "w_bo=w_m-w_e;# Rate of bleed off in kg/s\n", + "print\"\\nRate of make up=%0.2f kg/s \\nRate of bleed off=%0.2f kg/s\"%(w_m/1000,w_bo/1000)\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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} |