summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrupti Kini2016-06-18 23:30:31 +0600
committerTrupti Kini2016-06-18 23:30:31 +0600
commit35e76350164a52f6ca9654e60b9e6fcc9e843293 (patch)
tree56346e5ae6ad964650bb868ac3118ca02101aab9
parent567954f0f9089a76901da46619e67bcaa8eaf0d4 (diff)
downloadPython-Textbook-Companions-35e76350164a52f6ca9654e60b9e6fcc9e843293.tar.gz
Python-Textbook-Companions-35e76350164a52f6ca9654e60b9e6fcc9e843293.tar.bz2
Python-Textbook-Companions-35e76350164a52f6ca9654e60b9e6fcc9e843293.zip
Added(A)/Deleted(D) following books
A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter10.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter11.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter12.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter13.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter14.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter15.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter16.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter2.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter3.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter4.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter5.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter6.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter7.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter8.ipynb A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2correlationCoeff.png A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2expansionofSignal.png A Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2timeInvertedsignal.png A PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-2-Molecular_Diffusion_-_Principles_of_Mass_Transfer_and_Separation_Process_by_Binay_K_Dutta_1.ipynb A PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-3-Convective_Mass_Transfer_and_Mass_Transfer_Coefficient_1.ipynb A PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-4-Interphase_Mass_Transfer_1.ipynb A PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-5-Gas-Liquid_Contacting_Equipment_1.ipynb A PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.3_plot_1.png A PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.4_plot_1.png A PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter4_example_4.5_plot_1.png A "sample_notebooks/PRAVEENKUMAR C/CHAPTER_1.ipynb"
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter10.ipynb386
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter11.ipynb202
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter12.ipynb406
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter13.ipynb102
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter14.ipynb158
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter15.ipynb232
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter16.ipynb136
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter2.ipynb498
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter3.ipynb182
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter4.ipynb70
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter5.ipynb332
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter6.ipynb121
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter7.ipynb155
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter8.ipynb70
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2correlationCoeff.pngbin0 -> 49398 bytes
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2expansionofSignal.pngbin0 -> 21457 bytes
-rw-r--r--Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2timeInvertedsignal.pngbin0 -> 32453 bytes
-rw-r--r--PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-2-Molecular_Diffusion_-_Principles_of_Mass_Transfer_and_Separation_Process_by_Binay_K_Dutta_1.ipynb789
-rw-r--r--PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-3-Convective_Mass_Transfer_and_Mass_Transfer_Coefficient_1.ipynb284
-rw-r--r--PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-4-Interphase_Mass_Transfer_1.ipynb566
-rw-r--r--PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-5-Gas-Liquid_Contacting_Equipment_1.ipynb259
-rw-r--r--PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.3_plot_1.pngbin0 -> 10281 bytes
-rw-r--r--PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.4_plot_1.pngbin0 -> 9073 bytes
-rw-r--r--PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter4_example_4.5_plot_1.pngbin0 -> 22472 bytes
-rw-r--r--sample_notebooks/PRAVEENKUMAR C/CHAPTER_1.ipynb66
25 files changed, 5014 insertions, 0 deletions
diff --git a/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter10.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter10.ipynb
new file mode 100644
index 00000000..50dcaed0
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter10.ipynb
@@ -0,0 +1,386 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 10 : Introduction to theory of probability"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 437 Ex 10.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability of each outcome=0.12\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "# referred to fig 10.1 on the page no. 435\n",
+ "# the occurance of each outcome is essumed to be equal.\n",
+ "n=8 # number of outcomes\n",
+ "p=1/n#\n",
+ "print \"probability of each outcome=%0.2f\"%p"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 438 Ex no 10.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability = 0.1667\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "m=6 # enter the number of faces \n",
+ "n=2# enter the number of dice \n",
+ "l=m**n ## total number of outcomes = 36\n",
+ "a=7 #\"enter the number which is to be obtained as the sum of dice\n",
+ "c=0 # # counter value for favorable outcome\n",
+ "for i in range(1,7):\n",
+ " for j in range(1,7):\n",
+ " if (i+j==a):\n",
+ " c=c+1#\n",
+ " else :\n",
+ " continue\n",
+ " \n",
+ " \n",
+ "\n",
+ "p=c/l#\n",
+ "print \"probability = %0.4f\"%p\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 438 Ex no 10.4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability = 0.4075\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy.random import gamma\n",
+ "from __future__ import division\n",
+ "m=2# the number of faces \n",
+ "n=4 #the number of tosses\n",
+ "l=m**n ## l is total number of outcomes = 16\n",
+ "a=2 #exact no of heads\n",
+ "p=gamma (n+1)/(gamma(n+1-a) * gamma (a+1))## to find combination\n",
+ "print \"probability = %0.4f\"%(p/l)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 440 Ex no 10.5"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "total probability = 0.0023\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "a=52# # total no of cards in a deck\n",
+ "b=6# the no of cards to be drawn\n",
+ "pA1= b/a## probability of getting first red ace =pA1\n",
+ "#the cards are drawn in succession without replacement, therefore the probability that the 2nd card will be the red ace = pA2\n",
+ "pA2=1/(a-1)#\n",
+ "p= pA1*pA2\n",
+ "print \"total probability = %0.4f\"%p"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 441 Ex no 10.6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability = 1.04e-10\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy.random import gamma\n",
+ "from __future__ import division\n",
+ "\n",
+ "# This problem is based on Bernoulli Trials formula which is P( k successes in n trials ) = n!*p**k *(1-p)**(n-k)/k!*(n-k)!22\n",
+ "# hence the probability of finding 2 digits wrong in a sequence of 8 digits is\n",
+ "\n",
+ "k=2 # no. of successes\n",
+ "p= 1e-5# probability of success\n",
+ "n=8 #\"no. of trials\n",
+ "A=gamma (n+1)* (p**k)*((1-p)**(n-k))/(gamma(k)*gamma(n+1-k))#\n",
+ "print \"probability = %0.2e\"%A"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 446 Ex no 10.9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability = 0.0231\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "m=6 # enter the number of faces\n",
+ "n=3 # enter the number of dice\n",
+ "l=m**n ## l is total number of outcomes \n",
+ "a=8# the number which is to be obtained as the sum of dice\n",
+ "c=0 # # counter value for favorable outcome\n",
+ "for i in range(1,7):\n",
+ " for j in range(1,7):\n",
+ " if(i+j==a):\n",
+ " c=c+1\n",
+ " else :\n",
+ " continue\n",
+ " \n",
+ "p=c/l#\n",
+ "print \"probability = %.4f\"%p\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 447 Ex no 10.10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Py(1) = 0.5924\n",
+ "Py0=0.4076\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "Pe=0.6898 # error probability\n",
+ "Q= 0.2567 # the probability of transmitting 1 #Hence probability of transmitting zero is 1-Q = P\n",
+ "P=1-Q#\n",
+ "Px_1=Q#\n",
+ "Px0=P#\n",
+ "# If x and y are transmitted digit and received digit then for BSC P(y=0/x=1) = P(y=1/x=0) = Pe , P(y=0/x=10) = P(y=1/x=1) = 1-Pe\n",
+ "# to find the probability of receiving 1 is Py(1) = Px(0)*P(y=1/x=0) + Px(1)*P(y=1/x=1)\n",
+ "Py_1= ((1-Q)* Pe) + (Q *(1-Pe))#\n",
+ "print \"Py(1) = %0.4f\"%Py_1\n",
+ "Py0=((1-Q)*(1-Pe)) + (Q*Pe)\n",
+ "print \"Py0=%.4f\"%Py0"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 448 Ex 10.11"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability of error = 6.04e-05\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "Px0=.4\n",
+ "Px1=.6 \n",
+ "PE0=10**-6 \n",
+ "PE1=10**-4 ## given\n",
+ "PE=(Px0*PE0) + (Px1*PE1)# formula for probability of error\n",
+ "print \"probability of error = %.2e\"%PE"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 472 Ex no 10.20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "width or spread of Gaussian PDF = 0.986\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import pi,sqrt,exp\n",
+ "#Gaussian PDF: Q(x)= %e**((-x**2)/2)/ (x*sqrt(2*pi))\n",
+ "x=2.5 # input for the function Q \n",
+ "Q_x = (exp(-(x**2)/2))/ (x*sqrt(2*pi))\n",
+ "P=1-(2*Q_x)#\n",
+ "print \"width or spread of Gaussian PDF = %.3f\"%P\n",
+ "## P gives the width or spread of Gaussian PDF"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 479 Ex no 10.21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "SNR improvement = 12.90 dB\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import log\n",
+ "# formula for estimate error E is E = mk** - mk = a1* mk-1 +a2* mk-2 -mk\n",
+ "#given: various values of correlation (mk*mk)'= (m**2)',(mk*mk-1)'= .825* (m**2)',(mk*mk-2)'= .562*(m**2)',(mk*mk-3)'= .825*(m**2)' , R02=.562(m**2)', a1=1.1314, a2= -0.3714\n",
+ "# mean square error is given by I=(E**2)'=[1-((.825*a1)+(.562*a2))]*(m**2)'= .2753*(m**2)'\n",
+ "\n",
+ "m=1#\n",
+ "I=.2753*(m**2)#\n",
+ "S=10*log ((m**2)/I)#\n",
+ "print \"SNR improvement = %0.2f dB\"%S"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter11.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter11.ipynb
new file mode 100644
index 00000000..397d0367
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter11.ipynb
@@ -0,0 +1,202 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 11 : Random Processes"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 500 Example 11.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter the value of T : 0.245\n",
+ "mean square value of the signal is 0.9995 Watt\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,sin\n",
+ "#given signal is Sx=(N/2)*rect(w/4(pi)B)\n",
+ "N=1#\n",
+ "B=1#\n",
+ "T=input(\"enter the value of T : \")\n",
+ "Rx=(N*B)*(sin(2*(pi)*B*T))#\n",
+ "print \"mean square value of the signal is %0.4f\"%Rx,\"Watt\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 501 Example 11.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter the value of wct : .165\n",
+ "mean square value of the process is 1.9728 Watt\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import cos\n",
+ "# autocorrelation function of given signal is A**2/2 * cos(wct)\n",
+ "A=2#\n",
+ "wct=input(\"enter the value of wct : \")\n",
+ "Rx=((A**2)/2)* cos(wct)#\n",
+ "print \"mean square value of the process is %.4f\"%Rx,\"Watt\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 506 Example 11.7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter prob of symbol 1 : .75\n",
+ "enter prob of symbol -1 : .21\n",
+ "mean is 0.54\n",
+ "mean square is 0.96\n"
+ ]
+ }
+ ],
+ "source": [
+ "P1=input(\"enter prob of symbol 1 : \")\n",
+ "P2=input(\"enter prob of symbol -1 : \")\n",
+ "ak=(1)*P1+(-1)*P2#\n",
+ "print \"mean is\",ak\n",
+ "Ro=(1**2)*P1+((-1)**2)*P2#\n",
+ "print \"mean square is\",Ro"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 507 Example 11.8a "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter prob of symbol 1 : 0.215\n",
+ "enter prob of symbol 0 : .314\n",
+ "mean is 0.215\n",
+ "mean square is 0.215\n"
+ ]
+ }
+ ],
+ "source": [
+ "P1=input(\"enter prob of symbol 1 : \")\n",
+ "P0=input(\"enter prob of symbol 0 : \")\n",
+ "ak=(1)*P1+(0)*P2#\n",
+ "print \"mean is\",ak\n",
+ "Ro=(1**2)*P1+((0)**2)*P2#\n",
+ "print \"mean square is\",Ro"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 508 Example 11.8b"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter prob of symbol 0 : .25\n",
+ "enter prob of symbol 1 : .35\n",
+ "enter prob of symbol -1 : .45\n",
+ "mean is -0.1\n",
+ "mean square is 0.8\n"
+ ]
+ }
+ ],
+ "source": [
+ "# bipolar signalling\n",
+ "P0=input(\"enter prob of symbol 0 : \")\n",
+ "P1=input(\"enter prob of symbol 1 : \")\n",
+ "P2=input(\"enter prob of symbol -1 : \")\n",
+ "ak=(0)*P0+(1)*P1+(-1)*P2#\n",
+ "print \"mean is\",ak\n",
+ "Ro=(0**2)*P0+(1**2)*P1+((-1)**2)*P2#\n",
+ "print \"mean square is\",Ro"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter12.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter12.ipynb
new file mode 100644
index 00000000..2b302a6e
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter12.ipynb
@@ -0,0 +1,406 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 12 : Behaviour of analog systems in the presence of noise "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 536 Example 12.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "output SNR = 78.36 dB\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,log\n",
+ "from sympy.mpmath import quad\n",
+ "# Let the received signal be km(t)cos(wct) , demodulator input is [km(t)+nc(t)]cos(wct)+[ns(t)sin(wct)]. When this is multiplied by 2coswct and low pass filtered the output is s0(t)+n0(t)=km(t)+nc(t).\n",
+ "# Hence So=k**2*m**2' , No=nc**2'. But the power of the received signal km(t)cos(wct)= 1uW. Hence k**2*m**2'/2=10**-6\n",
+ "So=2*10**-6#\n",
+ "# to compute nc: (nc**2)'=(n**2)'=x\n",
+ "t0=496000.#\n",
+ "t1=504000. #\n",
+ "a=10**6 * pi#\n",
+ "y=quad (lambda t:1/((t**2)+(a**2)),[t0,t1])\n",
+ "# to compute output SNR\n",
+ "SNR=So/y#\n",
+ "val=(10.*(log (SNR)))#\n",
+ "print \"output SNR = %0.2f dB\"%val"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 540 Problem 12.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "gamma threshold : 13.8155\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log,exp\n",
+ "#as En=sqrt(nc**2+ns**2),where both nc and ns are gaussian with variance 6n**2,according to the following eqn P(En>=A)=integrate(En/6n**2)*e**(-En**2/2*6n**2)dEn#\n",
+ "# the value of this integral is the probability of which is 0.01\n",
+ "#hence e**(-A**2/2*6n**2)=0.01\n",
+ "#let g=A**2/(2*6n**2)#\n",
+ "g=-(log(0.01)/log(exp(1)))#\n",
+ "# the variance 6n**2 of the bandpass noise of PSD N/2 and the bandwidth 2B is 2NB.Hence at the onset of the threshold\n",
+ "# therefore A**2/(2*6n**2)=A**2/(4NB)=g\n",
+ "#for tone modulation\n",
+ "#Si=A**2+m'**2/2#\n",
+ "#Si=3*A**2/4#\n",
+ "gma_th=3*(g)## gma_th=Si/NB=3*A**2/(4NB)#\n",
+ "print 'gamma threshold : %0.4f'%gma_th"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 547 Problem 12.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "SIGNAL TO NOISE RATIO : 0.0053\n"
+ ]
+ }
+ ],
+ "source": [
+ "# for a gaussian m(t),mp will be assumed as 36m\n",
+ "Sg=3##assumed\n",
+ "Mbar=(Sg**2)#\n",
+ "MP=((3.*Sg)**2)#\n",
+ "B=0.2##ASSUMED\n",
+ "gma=0.4##assumed\n",
+ "SNR=3.*B**2*(Mbar/MP)*gma#\n",
+ "print 'SIGNAL TO NOISE RATIO : %0.4f'%SNR"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 550 Problem 12.4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of Bm : 8.3333\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.mpmath import quad\n",
+ "t0=-5#\n",
+ "t1=5#\n",
+ "y=quad(lambda t:t**2,[t0,t1])#\n",
+ "f=quad(lambda t:1,[t0,t1])\n",
+ "Bm=y/f#\n",
+ "print 'value of Bm : %0.4f'%Bm"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 550 Problem 12.5"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Bm2 : 3.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.mpmath import quad\n",
+ "from math import exp\n",
+ "# Sm(w)=k*e**(-w2/26**2) this is given\n",
+ "# let us the assume the value of constant 6**2/4(pi**2) =3\n",
+ "# thus the variance can be calculated as\n",
+ "f0=0#\n",
+ "f1=15#\n",
+ "y=quad(lambda f:(f**2)*(exp(-(f**2)/6)),[f0,f1])\n",
+ "g=quad(lambda f:exp(-(f**2)/6),[f0,f1])#\n",
+ "v=y/g#\n",
+ "print 'Bm2 : ',v"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 552 Prob 12.6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "factor of superiority of PM over FM : 3.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.mpmath import quad\n",
+ "from math import exp,pi\n",
+ "#for the same transmission bandwidth variance of PM and FM systems is same\n",
+ "#hence the ratio of SNR of PM to FM is B**2/(3Bm'**2)\n",
+ "#assuming 6=1\n",
+ "B=3/(2*pi)##because W=2*pi*B\n",
+ "#variance is Bm2\n",
+ "f0=0#\n",
+ "f1=15.#\n",
+ "y=quad(lambda f:(f**2)*(exp(-(f**2)*2*(pi**2))),[f0,f1])\n",
+ "g=quad(lambda f:exp(-(f**2)*2*(pi**2)),[f0,f1])\n",
+ "Bm2=y/g#\n",
+ "l=(B**2)/(3*(Bm2))#\n",
+ "print 'factor of superiority of PM over FM : ',l"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 555 Example 12.7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "threshold SNR = 300.00 \n",
+ "Threshold SNR = -104.68 dB \n",
+ "system is not in threshold\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "B=4# SNR=20.5# # given\n",
+ "r=20*(B+1)##as B=4\n",
+ "#output SNR is given as So/No=3*B**2*r*(m**2'/mp**2)\n",
+ "m=4.# m=mp/6m is given\n",
+ "SNRt=3*(B**2)*r*(1/m)**2#\n",
+ "print \"threshold SNR = %0.2f \"%SNRt\n",
+ "# to calculate output SNR in dB\n",
+ "SNRdB=20*log(SNR)#\n",
+ "print \"Threshold SNR = %0.2f dB \"%SNRdB\n",
+ "if 20.5<SNRdB:\n",
+ " print \"system is in threshold\"\n",
+ "else: \n",
+ " print 'system is not in threshold'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 561 Prob 12.8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "SNR is equal : 21845.33\n",
+ "SNR = 43.394 dB\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log10\n",
+ "#for a gausssian signal,mp=infinity(00),but we may assume 36 loading,thus mp=3*6,\n",
+ "Sgm=3.#\n",
+ "m2=(Sgm**2)#\n",
+ "mp2=((3*Sgm)**2)#\n",
+ "y=(m2)/(mp2)#\n",
+ "# to calculate SNR,we have SNR=3(2**n)*((m**2)/(mp**2)) \n",
+ "n=8##given\n",
+ "l=3*(2**(2*n))*y##by formula\n",
+ "print 'SNR is equal : %0.2f'%l\n",
+ "print 'SNR = %0.3f dB'%(10*(log10(l)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 567 Prob 12.10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of |m| : 0.80\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,sqrt,exp\n",
+ "from sympy.mpmath import quad\n",
+ "# to calculate |m|\n",
+ "m0=0#\n",
+ "m1=50.#\n",
+ "m=quad(lambda m:(m*(exp(-(m**2)/2.))),[m0,m1])##assuming 6m=1\n",
+ "print 'value of |m| : %0.2f'%(sqrt(2/pi)*m)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 569 Prob 12.11"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "transmitted power : 1.01e-04\n",
+ "SNR without pre-emphasis and de-emphasis : 2.53e-08\n",
+ "S is 2.44e+00\n",
+ "SNR at the output : 3.31e-08\n",
+ "Improvement factor in SNR with pre-emphasis and de-emphasis : 1.31\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,sqrt\n",
+ "from sympy.mpmath import quad\n",
+ "a=1400.*pi##given\n",
+ "c=1.##assumed\n",
+ "w0=0\n",
+ "w1=8000.*pi#\n",
+ "S=quad(lambda w:1/((w**2)+(a**2)),[w0,w1])\n",
+ "So=S/pi#\n",
+ "print 'transmitted power : %0.2e'%So##assuming G=1,hence St=So\n",
+ "#assuming N=1\n",
+ "No=4000.##because No=N*B\n",
+ "SNR=So/No#\n",
+ "print 'SNR without pre-emphasis and de-emphasis : %0.2e'%SNR\n",
+ "S=quad(lambda w:1/(sqrt((w**2)+(a**2))),[w0,w1])#\n",
+ "print 'S is %0.2e'%S\n",
+ "SNRo=(10**-8)*4*(pi**2)/(2*(S**2))#\n",
+ "print 'SNR at the output : %0.2e'%SNRo\n",
+ "print 'Improvement factor in SNR with pre-emphasis and de-emphasis : %0.2f'%(SNRo/SNR)"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter13.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter13.ipynb
new file mode 100644
index 00000000..35729415
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter13.ipynb
@@ -0,0 +1,102 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 13 : Behaviour of digital communication systems in the presence of noise "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 620 prob no 13.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "signal power required at the receiver = 0.47 Watts\n",
+ "Bandwidth is = 2080000.00 Hertz\n",
+ "signal power required at the receiver= 10.38 Watts\n",
+ "Bandwidth is = 520000.00 Hertz\n",
+ "signal power required at the receiver = 2.87 Watts\n",
+ "Bandwidth is = 1040000.00 Hertz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "\n",
+ "def log2(x):\n",
+ " y=log(x,2)\n",
+ " return y\n",
+ "\n",
+ "#Determinaion of the transmission bandwidth and the signal power required at the receiver input for i)Binary ii)16-ary ASK iii)16-ary PSK\n",
+ "#given Rb=2.08*10**6,Pb<=10**-6\n",
+ "\n",
+ "#i)for BINARY we have to consider Pb=Pe=10**-6=Q(sqrt(2Eb/N)). This yields Eb/N=11.35. \n",
+ "#SIgnal power is given by Si=Eb*Rb=11.35*N*Rb\n",
+ "N=2*10**-8##for binary. Channel noise PSD=10**-8\n",
+ "Rb=2.08*10**6#\n",
+ "Si1=11.35*N*Rb#\n",
+ "print \"signal power required at the receiver = %0.2f Watts\"%Si1\n",
+ "Bt1=Rb## Bandwidth for baseband pulses\n",
+ "print \"Bandwidth is = %0.2f Hertz\"%Bt1\n",
+ "\n",
+ "#ii)for 16-ary ASK we have to consider Pb=10**-6=Pem/log2(16)\n",
+ "# therefore Pem is given as Pem=Pb*log2(16)\n",
+ "Pb=10**-6#\n",
+ "Pem=Pb*log2(16)#\n",
+ "#'Pem' is also given as Pem=2(M-1/M)*Q*sqrt(6Eb*log2(16)/(N(M**2-1)))\n",
+ "M=16## for 16-array ASk\n",
+ "# By using above formula for 'Pem' , we can calculate the value of Eb,which is come out to be equal to 0.499*10**-5#\n",
+ "Eb=0.499*10**-5## if the M-ary pulse rate is RM =Rb/4 then\n",
+ "RM =Rb/4# \n",
+ "Si2=Eb*(log2(M))*RM#\n",
+ "print \"signal power required at the receiver= %0.2f Watts\"%Si2\n",
+ "Bt2=RM##transmission bandwith\n",
+ "print \"Bandwidth is = %0.2f Hertz\"%Bt2\n",
+ "\n",
+ "#iii) for 16-array PSK we have to consider Pem=4*Pb. This is approximately equal to 2*Q(sqrt(2*pi**2*Eb*log2(16))/256*N). This yields \n",
+ "Eb= 137.8*10**-8#\n",
+ "Si3=Eb*log2(16)*RM#\n",
+ "print \"signal power required at the receiver = %0.2f Watts\"%Si3\n",
+ "Bt3=RM##normally \n",
+ "#But for PSK, as it is a modulated signal the required bandwidth is 2Bt3.\n",
+ "Bpsk=2*(Bt3)#\n",
+ "print \"Bandwidth is = %0.2f Hertz\"%Bpsk"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter14.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter14.ipynb
new file mode 100644
index 00000000..897627d8
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter14.ipynb
@@ -0,0 +1,158 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 14 : Optimum signal detection"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 631 Prob 14.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f06e3c30650>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot,show,title,xlabel,ylabel\n",
+ "\n",
+ "# the co-ordinates of the vectors are \n",
+ "# s1(1,-0.5),s2=(-0.5,1),s3=(0,-1),s4=(0.5,1)\n",
+ "x4=arange(0,0.6,0.1)\n",
+ "y4=[]\n",
+ "for x in x4:y4.append(2*x)\n",
+ "\n",
+ "plot(x4,y4) # blue line\n",
+ "x1=arange(0,1.1,0.1)\n",
+ "y1=[]\n",
+ "for x in x1:y1.append(-0.5*x)\n",
+ "plot(x1,y1) #green line\n",
+ "title(\"x4 Vs y4 & x1 Vs y1\")\n",
+ "xlabel(\"x --->\")\n",
+ "ylabel(\"y --->\")\n",
+ "show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no. 650 problem no. 14.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability of symbol m1 is 0.168\n",
+ "probability of symbol m2 is0.245\n",
+ "the threshold is= 0.08 \n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sqrt,log\n",
+ "\n",
+ "# the two symbols to be transmitted are m1 and m2,the probabilities of which are not equal\n",
+ "# To design the optimum receiver we need to decide the threshold say d\n",
+ "# N be the given noise PSD,E the energy of the signal, assume N =1, E=1.5\n",
+ "Pm1=input(\"probability of symbol m1 is \")\n",
+ "Pm2=input(\"probability of symbol m2 is\")\n",
+ "#d is calculated as follows\n",
+ "N=1#\n",
+ "E=1.5#\n",
+ "d=(N/(4*sqrt(E)))*log(Pm2/Pm1)#\n",
+ "print \"the threshold is= %0.2f \"%d"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 665 Problem 14.7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "probability of symbol m1 is0.25\n",
+ "probability of symbol m2 is0.35\n",
+ "mean energy of the first signal is 0.125000 units\n",
+ "mean energy of the second signal is 0.087500 units\n"
+ ]
+ }
+ ],
+ "source": [
+ "# we know k1P(m1)=k2P(m2), where k1 and k2 are the distances of the signals s1 and s2 resp.,hence k1+k2=d\n",
+ "Pm1=input(\"probability of symbol m1 is\")\n",
+ "Pm2=input(\"probability of symbol m2 is\")\n",
+ "#assume d=1\n",
+ "d=1#\n",
+ "E1=(((Pm1)*((d**2)/2.))+((Pm2)*((d**2)/2)))#\n",
+ "print \"mean energy of the first signal is %f units\"%E1\n",
+ "E2=Pm1*Pm2*(d**2)#\n",
+ "print \"mean energy of the second signal is %f units\"%E2\n",
+ "if(E1==E2):\n",
+ " print \"signals are equiprobable\"#\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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter15.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter15.ipynb
new file mode 100644
index 00000000..36b75c4e
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter15.ipynb
@@ -0,0 +1,232 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 15 : Introduction to information theory"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 687 prob no 15.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter the length of probability vector p, n is4\n",
+ "Length = 0.94 4-ary digits\n",
+ "Entropy of source is, H = 0.72 4-ary units\n",
+ "Efficiency of code, N = 0.76 \n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "# Here we have given six messages. For 4-ary Huffman code, we need to add one dummy variable to satisfy the required condition of r+k(r-1) messages.Probabilities are given as p(1)=0.3# p(2)=0.25# p(3)=0.15# p(4)=0.12# p(5)=0.1# p(6)=0.08# p(7)=0.\n",
+ "\n",
+ "#The length L of this code is calculated as\n",
+ " \n",
+ "n=input(\"enter the length of probability vector p, n is\")\n",
+ "p=[.3, .25, .15, .12, .1, .08, 0]## enter probabilities in descending order\n",
+ "l=[1, 1, 1 ,2 ,2 ,2, 2]## code length of individual message according to order\n",
+ "L=0#\n",
+ "for i in range(0,n):\n",
+ " L=L+(p[(i)]*l[(i)])\n",
+ "\n",
+ "print \"Length = %0.2f \"%L,'4-ary digits'\n",
+ "\n",
+ "# Entropy of source is calculated as\n",
+ "H=0#\n",
+ "for i in range(0,n-1):#since the value of log(1/0) for the last entry is infinite which when multiply by 0 gives result as 0\n",
+ " H=H+(p[(i)]*log(1.0/p[(i)]))#\n",
+ "\n",
+ "H1=H/log(4)\n",
+ "print \"Entropy of source is, H = %0.2f \"%H1,'4-ary units'\n",
+ "\n",
+ "# Efficiency of code is given as \n",
+ "N=H1/L#\n",
+ "print \"Efficiency of code, N = %0.2f \"%N"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 688 Example no. 15.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Length = 1.00 \n",
+ "Entropy of source is, H = 0.72 bit\n",
+ "Efficiency of code, N = 0.72 \n",
+ "Length = 0.78 \n",
+ "Efficiency of code, N = 0.93 \n",
+ "Length = 0.73 \n",
+ "Efficiency of code, N = 0.99 \n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "# N=1\n",
+ "#Here we have given two messages with probabilities m1=0.8 and m2=0.2 . Therefore, Huffman code for the source is simply 0 and 1.\n",
+ "\n",
+ "#The length L of this code is calculated as\n",
+ "N=1#\n",
+ "p=[.8, .2]##enter probabilities in descending order\n",
+ "n=len(p)\n",
+ "l=[1, 1]##code length of individual message according to order\n",
+ "L=0#\n",
+ "for i in range(0,n):\n",
+ " L=L+(p[(i)]*l[(i)])#\n",
+ "\n",
+ "print \"Length = %0.2f \"%L\n",
+ "\n",
+ "# Entropy of source is calculated as\n",
+ "H=0#\n",
+ "for i in range(0,n):\n",
+ " H=H+(p[(i)]*log(1/p[(i)],2))\n",
+ "\n",
+ "print \"Entropy of source is, H = %0.2f bit\"%H\n",
+ "\n",
+ "# Efficiency of code is given as \n",
+ "N1=H/L#\n",
+ "print \"Efficiency of code, N = %0.2f \"%N1\n",
+ "\n",
+ "#for N=2\n",
+ "#There are four (2**N) combinations and their probabilities obtained by multiplying individuals probability.\n",
+ "#The length L of this code is calculated as\n",
+ "N=2#\n",
+ "p=[0.64, 0.16, 0.16, 0.04]##enter probabilities in descending order\n",
+ "n=len(p)#\n",
+ "l=[1 ,2 ,3 ,3]##code length of individual message according to order\n",
+ "L1=0#\n",
+ "for i in range(0,n):\n",
+ " L1=L1+(p[(i)]*l[(i)])#\n",
+ "\n",
+ "L=L1/N## word length per message\n",
+ "print \"Length = %0.2f \"%L\n",
+ "\n",
+ "# Efficiency of code is given as \n",
+ "N2=H/L#\n",
+ "print \"Efficiency of code, N = %0.2f \"%N2\n",
+ "\n",
+ "\n",
+ "#for N=3\n",
+ "#There are eight (2**N)combinations and their probabilities obtained by multiplying individuals probability\n",
+ "#The length L of this code is calculated as\n",
+ "N=3#\n",
+ "p=[.512, .128, .128, .128, .032, .032, .032, .008]##enter probabilities in descending order\n",
+ "n=len(p)#\n",
+ "l=[1, 3 ,3 ,3, 5, 5 ,5 ,5]##code length of individual message according to order\n",
+ "L1=0\n",
+ "for i in range(0,n):\n",
+ " L1=L1+(p[(i)]*l[(i)])#\n",
+ "\n",
+ "L=L1/N## word length per message\n",
+ "print \"Length = %0.2f \"%L\n",
+ "\n",
+ "# Efficiency of code is given as \n",
+ "N3=H/L#\n",
+ "print \"Efficiency of code, N = %0.2f \"%N3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 702 prob no 15.4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "entropy = 1.00 bits\n",
+ "entropy = 2.00 bits\n",
+ " if x and y have equal absolute entropies,their relative (differential) entropies must differ by 1 bit \n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import log\n",
+ "from sympy.mpmath import quad\n",
+ "\n",
+ "\n",
+ "x0=(-1)#\n",
+ "x1=1##given\n",
+ "y0=(-2)#\n",
+ "y1=2##given\n",
+ "G=2##gain of amplifier\n",
+ "#the probbilities are given as P(x)=1/2 for |x|<1 & P(y)=1/4 for |y<2| otherwise P(x)=P(y)=0.\n",
+ "#P(x<1 & -x<1)=1/2#\n",
+ "#P(y<2 & -y<2)=1/4#\n",
+ "# hence entropies are given as\n",
+ "g1=(1./2)*log(2,2)#\n",
+ "g2=(1./4)*log(4,2)# \n",
+ "X=quad(lambda x:g1*1,[x0,x1])\n",
+ "Y=quad(lambda y:g2*1,[y0,y1])\n",
+ "print \"entropy = %0.2f bits\"%X\n",
+ "print \"entropy = %0.2f bits\"%Y\n",
+ "#Here the entropy of random variable 'y' is twice that of the 'x'.This results may come as a surprise,since a knowledge of 'x' uniquely determines 'y' and vice versa , since y=2x.Hence , the average uncertainty of x and y should be identical.\n",
+ "# The reference entropy R1 for x is -log dx ,and The reference entropy R2 for y is -log dy (in the limit as dx,dy->0 ).\n",
+ "# R1= lim (dx->0) -log dx\n",
+ "#R2= lim (dy->0) -log dy\n",
+ "#and R1-R2 = lim(dx,dy->0) log(dx/dy) = log (dy/dx) = log2 2 =1 bit\n",
+ "#Therefore,the reference entropy of x is higher than the reference entropy for y. Hence we conclude that \n",
+ "print \" if x and y have equal absolute entropies,their relative (differential) entropies must differ by 1 bit \""
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter16.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter16.ipynb
new file mode 100644
index 00000000..572bf36e
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter16.ipynb
@@ -0,0 +1,136 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter16 : Error correcting codes"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 732 Example no 16.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "code words are given as\n",
+ "[[1 1 1 0 0 0]]\n",
+ "[[1 1 0 1 1 0]]\n",
+ "[[1 0 1 0 1 1]]\n",
+ "[[1 0 0 1 0 1]]\n",
+ "[[0 1 1 1 0 1]]\n",
+ "[[0 1 0 0 1 1]]\n",
+ "[[0 0 1 1 1 0]]\n",
+ "[[0 0 0 0 0 0]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat,shape\n",
+ "\n",
+ "#here generator matrix is given\n",
+ "G=mat([[1, 0, 0, 1 ,0 ,1],[0, 1, 0, 0, 1, 1],[0, 0, 1, 1, 1, 0]])\n",
+ "d1=mat([[1, 1, 1]])\n",
+ "d2=mat([[1, 1, 0]])\n",
+ "d3=mat([[1, 0, 1]])\n",
+ "d4=mat([[1, 0, 0]])\n",
+ "d5=mat([[0, 1, 1]])\n",
+ "d6=mat([[0, 1, 0]])\n",
+ "d7=mat([[0, 0, 1]])\n",
+ "d8=mat([[0, 0 ,0]])\n",
+ "c1=d1*G\n",
+ "\n",
+ "for i in range(0,6):\n",
+ " if c1[0,i]==2:\n",
+ " c1[0,i]=0\n",
+ " \n",
+ "\n",
+ "c2=d2*G#\n",
+ "for i in range(0,6):\n",
+ " if c2[0,i]==2:\n",
+ " c2[0,i]=0\n",
+ " \n",
+ "\n",
+ "c3=d3*G#\n",
+ "for i in range(0,6):\n",
+ " if c3[0,i]==2:\n",
+ " c3[0,i]=0\n",
+ " \n",
+ " \n",
+ "c4=d4*G#\n",
+ "for i in range(0,6):\n",
+ " if c4[0,i]==2:\n",
+ " c4[0,i]=0\n",
+ " \n",
+ "\n",
+ "c5=d5*G#\n",
+ "for i in range(0,6):\n",
+ " if c5[0,i]==2:\n",
+ " c5[0,i]=0#\n",
+ " \n",
+ "\n",
+ "c6=d6*G#\n",
+ "for i in range(0,6):\n",
+ " if c6[0,i]==2:\n",
+ " c6[0,i]=0#\n",
+ " \n",
+ "\n",
+ "c7=d7*G#\n",
+ "for i in range(0,6):\n",
+ " if c7[0,i]==2:\n",
+ " c7[0,i]=0#\n",
+ " \n",
+ "\n",
+ "c8=d8*G#\n",
+ "for i in range(0,6):\n",
+ " if c8[0,i]==2:\n",
+ " c8[0,i]=0#\n",
+ " \n",
+ "\n",
+ "print \"code words are given as\"\n",
+ "print c1\n",
+ "print c2\n",
+ "\n",
+ "print c3\n",
+ "print c4\n",
+ "print c5\n",
+ "print c6\n",
+ "print c7\n",
+ "print c8"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter2.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter2.ipynb
new file mode 100644
index 00000000..b45b8a06
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter2.ipynb
@@ -0,0 +1,498 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter2 : Introduction to signals"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 17 Prob 2.1 b"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "power of signal: 0.333 Watt\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.mpmath import quad\n",
+ "\n",
+ "t0=-1\n",
+ "t1=1\n",
+ "y=quad(lambda t:t**2,[t0,t1])\n",
+ "print 'power of signal: %0.3f'%(y/2),\"Watt\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no.26 Exa no.2.3b"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAACQCAYAAADtPxvDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHIpJREFUeJztnXvUHFWVt59fIAmXACEDBEIikTGRRLzAMElEkVfyjRMC\nSQaXF4gMBFGz+JAZHQeQASYBxg9QGYHhfhFBkKiATAKBEYF4WUoYxlzABCEfRkgiQSRkgDhczJ4/\n6nRS6bcv1V3V3dXV+1nrXW931zn77Kr+nd2nTu2qIzPDcRzHKSYDOu2A4ziO0zo8yDuO4xQYD/KO\n4zgFxoO84zhOgfEg7ziOU2A8yDuO4xQYD/IZIOlqSedkXbaOndGSNktq6DuUdJak69O2n6CdWZJ+\n2up2nHzSLp1VaPcYSc9JekXSexuol0m/TNDOXEnfbnU727TpefLdiaTRwDPA9ma2ubPe9EfSLOBk\nMzus0744vYOk/w98wcwWdNqXSkiaA7zDzP62XW36SD4ljY6kHcdpDZIEvA1Y0WlfaqB2N+gBqgKS\nxklaJGmDpCckTYtt+1Y4tVso6VXgw+GzC2JlzpC0TtIaSZ8J0yr7x+pfEF73hTL/IGl9qDMrZuco\nSUskbZT0bBgFJN2HM4Pt/5b0pKQjwufbnC5KOkHSbyW9KOkcSavLyn5P0s3BzhOS/iJW98uSVoVt\nv5L0N80cbycZkkZIulPSC5KekXRa+HxYmKI4OrwfEr6X48P7b0m6RtIPw3e1SNLbYnYvC/raKOkx\nSR+MbaungaQ6mx40skHSw5IOiG1bLelLkpZJelnSPEmDqxwDxXS6Pvi1ayj/CrAdsEzS01XqfyPU\n2yhpuaTxsWPUSB++UtI9Yb8fKW2rdzw7gQf5MiQNBBYA9wN7AqcBt0kaGyt2HHCBmQ0BfgZY+EPS\nFOCLwGRgDNBX1sSWsoHhwK7ACOBk4EpJu4VtrwLHm9luwFHAKZJmJNiHdwKnAoeY2a7AR4DVsfZL\n5cYDV4b92QfYLfgRZxpwe9g2H7gitm0V8MHQxnnArZKG1/PPaRxFZ4wLgCVE39Fk4AuSPmJmLwGf\nBq6XtCfwDeCXZnZrzMRM4HxgD2ApcFts26PAe4Hdge8A35c0KLa9ogYa0NnYYPfvQvsLgQWSto+V\n/Tjw18DbgfcAs6ocipOAE4n61f7AEOAKM3s99EeA95jZmArH8K+Bw4AxoU99HHgp5kPSPgzwSWAu\n0TFbBXwltq3e8WwrHuT7MwnY2cwuMrO3zOxh4B6iQFjibjP7BYCZvV5W/xPAN81spZn9Eag0+o6f\nsr0JnG9mfzKz+4gC+zuD7R+b2a/C68eBecDhCfbhT8Bg4F2SBprZs2b2TIW2PwbMN7Ofm9mbwD+z\n7Q8QwE/N7H6LLt7cSiRegk93mNnz4fX3gKeBiQn8cxrnL4E9zOxfgi5/A9wAHAtgZg8A3wceAqYA\ns8vq32NmPzOzN4CzgfdL2jfUvc3MNpjZZjP7VyLtvDNWt5oGkursk6H9B83sT8DXgR2BQ2NlLjez\n581sA9GP2fuqHIdPAZeY2Wozew04CzhWyaZN3wB2AcZJGmBmvy7pt4x6fdiAu8zssbA/t8X9TXA8\n24oH+f6MAJ4r++y3bB3hWoXtcfYp276mTnt/KLtwuolodIKkieHU9gVJLxN13D+rYw8zWwV8gWik\nsV7S7ZL2qVB0RNy/IOg/lJVZX+bbDqUOpWiqZ0k4Bd8AHJjEP6cp9gNGlI51ON5nAXvFylwPvAv4\nVgiWJYxtv+fXiEawIwAk/aOkFWGqZAPRiH2PWP2KGmhQZ8/G2i/1oX1jZeLB9o+EPlCBfYj6Y4ln\nge2JzohrEgZsVxCdva6XdK2kXaq0Ua8Px4/JNv4mOJ5txYN8f9YBoyTFRyL7AWsT1v8dMCr2flSF\nMklTmr4D3A2MNLOhwDUk/M7M7PaQ2bJfaO/iCsXWASNLbyTtSMIgLWk/4Dqi0/VhZrY78AQduLDU\nIzwL/MbMdo/97WpmpXn47Yi+j1uAUyX9eayuiOlQ0hBgGLBO0mHA6cDHzWxo+B43kvB7TKiztWF7\nqf2SP9X6VK3+sQ4YHXv/NuAttg26tfz9NzM7BBgPjCXa93KS9OGKpD2ercCDfH8eIRqtnCFpoKQ+\n4GiiqRKo/GUp9vn3gJMkHSBpJ+DcGmXrMQTYYGZvSJpANK9a9wdC0lhJR4SLUa8D/0N0al3OncA0\nSe8Pc4ZzG/Bt5+DLi8AASScRjeSd1vAo8Eq4ILijpO0kHSjpkLD9n4i+45OArwG3lE1hTJX0gfA9\nXwD8wszWEk1fvAW8KGmQpH8mukZUlwZ09n3gqFB2IPClUPbn1UzXaPZ24IuK7hMZAvw/YF6SNGJJ\nh4Sz44FEfTzub6N9uBpNH89W4UG+jDA3PQ04Evg90end35rZU6Ui9A+0Wz4zs/uBy4GHgaeAX4Qy\nr1epXyto/1/gfEn/TSS071ZotxKDgQuD/78jOlU8q4KvvyK6sDyPaIT0CvBCDV+J1V0BXBL273mi\nAP+zsnJ+E0ZGhCB2NNHc7zNE3+11wK6Ksl2+CJwQpkIuJjr2Z5aqE50VziGajjsIOD5suz/8PUV0\n0fSPxKZWqKEBkuvs16G9fwtljwKmmdlb1Xa3Qpslvgl8G/hJOA6biDRc7lsldiU6Zi8R7euLRD+I\n5f422ofj7TZzPFtKqpuhJI0iOj3ci8jx68zs8grlLicKmpuAWWa2pOlGuwxJ44DHgUF5vGkpThgZ\nbSC6WeO39coXmSJpW9JNwBozKx+ROgnopj5cibQj+TeBL5rZu4iyUk4NB2QLkqYSBY0xwOeAq1O2\nmXsU3Vo9WNLuRKOq+XkVh6RpknaStDNR1sPyXg/wgSJp26+TNEg39eF6pAryIeVpaXj9KrCS/nnW\n04GbQ5nFwNAeyKX+HNGFoFVEweKUzrpTk+lEF8DWAn9OSMnrdQqmbZ86a5xu6sM12b5+kWQoepbK\nQcDisk370j8daSQJr4Z3I2Z2ZKd9SIqZfRb4bKf9yDPdrm0zO6nTPnQb3dSH65FJkA9zuXcAfx9G\nPf2KlL3vN6qQ5CMNp6WYWcPTFmm17bp2Wk09XafOrgnpSHcCt5rZ3RWKrGXbPNORVMmPNbOm/+bM\nmZOqfl5sPPSQMWDAHA4+2Hjtte7elzzZ6KS287D/ebBx/PGRtr/61e7flyxstEvXqYJ8uKnhRmCF\nmV1apdh84IRQfhLwspnl6nQ2T5jBqFFw4IFw4omwuSsv9XQ/ru3sMYO+Prj0Upg/v9Pe9A5pR/If\nIMp//XC4vX2JpCMlzZY0G8DMFgLPSFoFXEuU++1UwQwkuO46WLcOzjuv0x71LK7tjDGD3XaDu+6C\nk0+Gxx/vtEe9Qao5eTP7GQl+KMzs82naSUJfX18hbJjB0KF9DB4MP/gBTJgA48bBsQ3mvORhX/Jk\no1Fc29nbMINx4/qYOBEuuwymT4fFi2GvverXzdKPvNhol65zszKUJMuLL53kRz+CCy+EBx+M3i9f\nDpMnw733RgHfaQ5JWBMXXjNo13UdmDkTjjoKPvWp6P0558CiRZHWB1d8erxTjyS69sca5IzSdE2J\n97wHbrwRPvpRWJv0EWmOk0PKtX3++TB8OMyeHW1zWoMH+ZxR3hEgOq097bTo/6ZNnfHLcdJSru0B\nA+CWW6Kz1a9/vXN+FR0P8jmjUpAHOOMMz7hxuptK2t55Z/j3f/eMm1biQT5nVAvynnHjdDvVtD1q\nlGfctBIP8jmjWkcAtmTc3HwzzJtXuYzj5JVa2o5n3LzwQnv9Kjoe5HNGrY4AUbrZ/PnRHP2jj7bP\nL8dJSz1tz5wZZd589KPwevnKyU7TeJDPGUmyDDzjxikqnnGTPR7kc0it0U4Jz7hxuo16I3nwjJtW\n4EE+ZyTpCCU848bpJpJq2zNussWDfM5oJMh7xo3TTTSibc+4yY4sHjX8TUnrJVX8KiT1SdoYe8jT\nOWnbLDKNdATwjJtW4brOnka17Rk32ZDFoiE3Ea3CfkuNMj82s+kZtFV4Gu0IsDXjZvJk2H9/f8ZN\nRriuM6YZbc+cCStWREkG/oyb5kg9kjeznwIb6hTzhYQT0kxHAM+4yRrXdfY0q23PuElHO+bkDThU\n0jJJCyWNb0ObXUuzHQE846bNuK4bpFlte8ZNOtoR5H8JjDKz9xKd/lZaRs0JpAny4Bk3bcR13QTN\natszbponk4W8a2Fmr8Re3yfpKknDzOyl8rJz587d8rqvr68ji0V0mrSno6WMmyOOiDJuejXrZtGi\nRSxatKhl9l3XjZNW26WMm6OPhocegne/Oxu/uommdJ12IdmwIMJo4PEq24azdXGSCcDqKuXMMbvj\nDrNjjklvZ/16s/32M7v99vS2ikDQl+u6g0ydarZgQXo7t91mNnp0pPFeJ4muU4/kJd0OHA7sIek5\nYA4wMKj7WuBjwCmS3gI2AQ0uZNdbpJ2uKeEZN+lwXWdPVtqeORNWrvSMm6SkDvJmdlyd7VcCV6Zt\np1fIqiPAthk3jzwCI0dmY7cXcF1nT5baPu+8KNDPng033ZSd3SLid7zmjCw7AmzNuJkxA157LTu7\njtMoWWp7wIDoBkDPuKmPB/mckXWQh60ZN7NmecaN0zmy1rZn3CTDg3zOaEWQ92fcOHkha22XMm4+\n8xl/xk01PMjnjFYEefBn3Didp1XanjgxGs37M24q40E+Z7Tytm1fVcrpJK3U9syZcPzxvqpUJTzI\n55BWZgrEM27WrGldO45TTqtG8iXOOw/23tufcVOOB/mc0eqOAJ5x43SGVmvbM24q40E+Z7QjyINn\n3Djtpx3a9oyb/niQzxntCvKeceO0m3Zp2zNutsWDfM5oV0cAz7hx2ks7te0ZN1vxIJ8z2tkRwDNu\nnPbSTm17xk2EB/mc0e4gD55x47SHTmjbM25SBvl6ix2HMpdLejqsoHNQmvZ6gU4J0TNutsW1nT2d\n0LZn3KQfyd8ETKm2UdJU4B1mNgb4HHB1yvYKTydGOyU842YbXNsZ0ylt93rGTaogb/UXO54O3BzK\nLgaGShqeps1eoFNB3jNutuLazp5ODmB6OeOm1XPy+wLPxd6vAfyp5jXoZEcAz7hpANd2g3Ra272a\ncdPyNV6B8q+16sycr4XZ+Y4AxVhVqtVrvAYSadt1HZEHbXf7qlLN6Lq0RmXTSBoNLDCzfsvqSroG\nWGRm88L7J4HDzWx9hbKW1pcicP31sHgx3HBDpz2J5jFPPbUYq0pJwswaCjFZaNt1vZX3vx8uuQQO\nPbSzfmzeDJ/4BAwZ0v2rSiXRdauna+YDJwRnJgEvVwrwzlbyMNopMWOGZ9zUwLXdBHnQdq9l3KSa\nrqm32LGZLZQ0VdIq4DXgpLQOF508BXmIMm5WrIgybr773aiD9AKu7ezJk7ZLGTeTJsEBB8C0aZ32\nqHWkCvL1FjsOZT6fpo1eI29n9hJcey0ccUSUcdMrWTeu7ezJm7ZLGTfTpkXz8+/uNylXDHpkXNY9\n5Gm0U2KHHTzjxklPHrXdCxk3HuRzSN46AsDw4f6MGycdeQzyUPxn3HiQzxl57QgQPePmhhv8GTdO\nc+RZ20V+xo0H+ZyR544AnnHjNE+etV3kjBsP8jkjzx2hhD/jxmmWPGs7/oybBQs67U12eJDPGd0Q\n5EsZN2vX9k62jZOebtB2KePm5JOL84wbD/I5oxs6AnjGjdM43aLtomXceJDPGd100cczbpxG6CZt\nFynjxoN8zuiW0U4Jz7hxktJt2i5Kxo0H+RzSTR0BPOPGSUa3BfmiZNx4kM8Z3dYRSnjGjVOPbtR2\nETJuUgd5SVMkPRnWujyzwvY+SRslLQl/56Rts8h0Y0eAYmbcuLazpVu13e0ZN2mfQrkdcAXwf4C1\nwH9Kmm9mK8uK/tjMpqdpq1fo1o4AWzNuJk6EcePg2GM77VHzuLZbQ7dqO55xs3hxtLBOt5B2JD8B\nWGVmq83sTWAeMKNCuS79attPNwd5KFTGjWs7Y7pd292acZM2yFda53LfsjIGHCppmaSFksanbLPQ\ndHtHgMJk3Li2M6YI2u7GjJu0a7wm2c1fAqPMbJOkI4G7gbGVCvpamN0jnHrMmAFPPhn9/8lPogtY\n7SSDNV4z07brOqII2i5l3Bx2WJRxc/rp7W2/7Wu8hmXP5prZlPD+LGCzmV1co85vgL8ws5fKPve1\nMIGLL4YXX4Svfa3TnqTHLMq22bSp86tKNbrGa1badl1v5YADoms248Z12pP0PPdctKrUNdd0dlWp\ndqzx+hgwRtJoSYOATxKtfRl3YrgUnaRJmkD0w/JSf1MOFOOUtkQ84yY2mO0WXNsZUyRtd1PGTdrl\n/96S9HngP4DtgBvNbKWk2WH7tcDHgFMkvQVsAro456I9FKUjwLYZN+PHd0/GjWs7e4oU5CHS9GWX\n5T/jJtV0TZb4aW3EhRfCxo1w0UWd9iRbli+HyZPh3nthwoT2t9/odE2G7bquA2PHwj33RP+LxLnn\nwsMPR+vEDh7c3rbbMV3jZEzRRjslCpJx46SgqNrOe8aNB/mcUdSOAP6Mm16nqNrO+zNuPMjnjKJ2\nhBL+jJvepcja3nnn6CbAPD7jxoN8zihyR4Cuz7hxUlB0bY8cmc+MGw/yOSOPc3pZU8q4ueUWX1Wq\nl+gFbcczbvKyqpQH+ZxR9NFOiQI948ZJSK9o+7jj8vWMGw/yOaQXOgJ4xk2v0StBHvKVceNBPmf0\nUkcAz7jpNXpF23nKuPEgnzN6LciDZ9z0Cr2m7bxk3HiQzxm91hHAM256hV7Udh4ybjzI54xe7Ajg\nGTe9QK9qu9MZNy1f4zWUuTxsXybpoLRtFple7QiQv4wb13a29LK2O5lxkyrIx9bBnAKMB46TNK6s\nzFTgHWY2BvgccHWaNotOp6/Ed5q8ZNy4trOn17XdqYybdqzxOh24GcDMFgNDJQ1P2W5h6eXRTomc\nZNy4tjOm17XdqYybdqzxWqnMyJTtFppe7gglcpBx49puAb2u7U5k3LRjjVfov6J9xXqdXB4uL5jB\nVVd12ovOU8q4OeKI6GLsrFltdyEzbbuuIwYNgp126rQXnaeUcXPMMfChD8Fuu7W2vbRBfi0wKvZ+\nFNFoplaZkeGzfpx77twtrw8/vHcXPPagELHDDtEiI7vs0njdDBbyzkzbruutuLYjJk6Mpm0aDfCd\nWMh7e+DXwGRgHfAocJyZrYyVmQp83symhsWRLzWzSRVs+Qo6TstoYiHvTLTtunZaSRJdt3yNVzNb\nKGmqpFXAa8BJadp0nHbg2naKgq/x6vQEvsarU0R8jVfHcZwex4O84zhOgfEg7ziOU2A8yDuO4xQY\nD/KO4zgFxoO84zhOgfEg7ziOU2A8yDuO4xQYD/KO4zgFxoO84zhOgfEg7ziOU2A8yDuO4xSYpoO8\npGGSHpD0lKQfShpapdxqScslLZHUsuWZUz473G0U3EYjuLbdRjtstEvXaUbyXwYeMLOxwIPhfSUM\n6DOzg8xsQor2apKHL81t5NdGg7i23UbLbXRDkN+yiHH4/zc1yvb4yo5Ol+HadgpDmiA/3MzWh9fr\ngWqr1BvwI0mPSfpsivYcp124tp3CUHPREEkPAHtX2HQ2cLOZ7R4r+5KZDatgYx8z+52kPYEHgNPM\n7KcVyvnKCk5LiS+u0C5tu66dVpNq+T8z+6tq2yStl7S3mT0vaR/ghSo2fhf+/17SD4AJQL8g34lV\ne5zepV3adl07nSbNdM184MTw+kTg7vICknaStEt4vTPwEeDxFG06TjtwbTuFoek1XiUNA74HvA1Y\nDXzCzF6WNAK43syOkrQ/cFeosj1wm5ldmN5tx2kdrm2nSORmIW/HcRwnezpyx6ukCyQtk7RU0oOS\nRlUpN0XSk5KelnRm2bavSVoZ7NwlabcqNqresNKAjVp+fFzSryT9SdLBNfa5lh9JbdTyo+kbeGrZ\njdW7PGxfJumgRnwL2/skbQztLpF0Ttn2b4a58KpTHgl8qGmjng+tRNJpQWtPSLq4ifpzJa2J+T4l\nhS9fkrQ5nLE0WjdR361jI1G/q1E/UX+pUreu1uvUr6vTBDZGSXo47MMTkv6uCRs7SFocvocVkqqf\nRZpZ2/+AXWKvTwNuqFBmO2AVMBoYCCwFxsW2/xUwILy+CLioSlu/AYZV2VbXRgI/DgDGAg8DB9fY\n51p+1LWRwI+vAmeE12cmPR717IYyU4GF4fVE4JFGfAtl+oD5NY7PYcBBwONVttf0IaGNmj60UO8f\nJsq+GRje79mEjTnAP2Tgyyjg/lp6rFO/bt9NYCNR361RP1Gfq1Cvrk4T2KipsYQ29gbeF14PAX7d\nqB+h7k7h//bAI8AHK5XryEjezF6JvR0CvFih2ARglZmtNrM3gXnAjJiNB8xsc3i7GBhZo8mKGQ4J\nbdTz40kze6pG20n8SGKjph80fwNPPbvb2DazxcBQScMbtFHe7jZYlHq4oYbP9XxIYqOmDy3kFODC\ncGwws983aScL3/8VOKPZygn7bj0bjfTdSvUb6XNxkuq0VttJNFbPxvNmtjS8fhVYCYxows6m8HIQ\n0Q/YS5XKdewBZZK+IulZouyFiyoU2Rd4LvZ+TfisEp8GFlbZlvSGlWo2GvGjFmlvnKnnR7M38CTZ\nv0plRtbZXm7DgEPDKfpCSeOr+FeNej4kIa0PzTIG+JCkRyQtknRIk3ZOC77fWG06rhaSZgBrzGx5\nk+2X7NTru41Qq+9mTVZ9OTMkjSY6M1jcRN0BkpYS9feHzWxFpXI18+TToOo3m/yTmS0ws7OBsyV9\nGfgGcFJZOQOOjM19DQV2lNRXshHaORt4w8y+U8WV54BhwGDg8tDepgZsJPIjAXX9qEMtP87epqCZ\nqfpNOB+wbW/guSOh/+WjSKvyuhq/BEaZ2SZJRxKlJY5N2HYSH5KQhQ+VHat9c9X2wO5mNknSXxJl\n7uzfoI2rgfPD+wuAS4CTG7RxFlGq55biDe5L0r5b10YoU7XfJanfBLnKMpE0hKj//X0Y0TdEOBt6\nX7im8R+S+sxsUXm5lgV5q3GzSRnfofIv+VrgCTObAiDpLGCzmW25aCVpFtFc7eQafhweKz8HeNXM\nLmnARl0/klDPjwTU9EPN38CzJ9E8bYlRRCOc8rbjZUaGz6pt72cjfppvZvdJukrSMDOreIpZgXo+\n1CUDH2rZrnVz1SmEdEsz+89w0fPPzOwPSW2U2bsBqBjoqtmQdCDwdmCZJIiO339JmmBm22glg75b\n10a9fteAD41QV6ftQtJA4E7gVjPrdx9GI5jZRkn3AocAi8q3dyq7Zkzs7QxgSYVijwFjJI2WNAj4\nJNFNKiUbU4DTgRlm9j9V2ql5w0oSG/X8KG+yGT+S2EjgR7M38NyXYP/mAyeEepOAl2NTQ0l8Q9Jw\nhegiaQJR+m4jwbWeD3XJwIdmuRs4IrQ7FhhUHuDrEX64SxxDgzdemdkTZjbczN5uZm8nCm4Hlwf4\nBH4k6bv1bCTpd4nNNVC2kb7cMoIGbwRWmNmlTdrYozRlJ2lHoovZlb+LRq/oZvFHdIryONHV7TuB\nvcLnI4B7Y+WOJLryvAo4q8zG08Bvw44tAa4qt0F0Srw0/D3RjI0EfhxDNBXzR+B54L4m/KhrI4Ef\nw4AfAU8BPwSGJvWjkl1gNjA7Zv+KsH0ZFTIa6tkATg1tLgV+Dkwqq387sA54IxyLTzfhQ00b9Xxo\nod4HAt8m0vx/ET2euFEbtwDLw77fTXQNJo1Pz9Bcdk3FvtugjYr9roH6FftLwrpV+1DC+iWNvR58\nOKkJGx8ENodjWDoGUxq08W6i6celQRenVyvrN0M5juMUGF/+z3Ecp8B4kHccxykwHuQdx3EKjAd5\nx3GcAuNB3nEcp8B4kHccxykwHuQdx3EKzP8CU1P2ESBZ26sAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fc60b2ab310>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot,subplot,show,title\n",
+ "\n",
+ "from numpy import arange\n",
+ "\n",
+ "t=arange(-3,1.0082,.0082)\n",
+ "m1=(0-1)/(-3-(-1))##slope for -3<t<-1\n",
+ "c1=(0-m1*(-3))##intercept for pt(-3,0)\n",
+ "u=[]\n",
+ "for tt in t:\n",
+ " if tt<=-1:\n",
+ " u.append(((m1*tt)+c1))\n",
+ " else:\n",
+ " break\n",
+ "m2=(1-0)/(-1-1)##slope for -1<t<1\n",
+ "c2=(0-m2*1)#intercept for pt(1,0)\n",
+ "\n",
+ "for tt in t:\n",
+ " if tt>-1:\n",
+ " u.append(((m2*tt)+c2))\n",
+ "subplot(221)\n",
+ "plot(t,u)\n",
+ "title('original signal')\n",
+ "subplot(222)\n",
+ "plot([2*tt for tt in t],u)\n",
+ "title('expansion of signal')\n",
+ "show()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page27 Problem 2.4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\nKN+9q7T7AAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fcc37584190>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fcc37462890>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot,subplot,show,title,xlabel,ylabel\n",
+ "\n",
+ "t=range(-5,0)#\n",
+ "y=[]\n",
+ "for tt in t:y.append(exp(tt/2))\n",
+ "subplot(221)\n",
+ "plot(t,y)\n",
+ "title ( \" Original signal \" )\n",
+ "xlabel( \" Time \")\n",
+ "ylabel(\"g(t) \" )\n",
+ "show()\n",
+ "t_inv=[]\n",
+ "for tt in t:t_inv.append(-tt)\n",
+ "y=[] \n",
+ "for tt in t_inv:y.append(exp(-tt/2)) \n",
+ "subplot(222)\n",
+ "plot(t,y)#\n",
+ "title ( \" Time inverted signal\")\n",
+ "xlabel( \" time \")\n",
+ "ylabel(\"g(-t)\" )\n",
+ "show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 33 Exa 2.5a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "energy of sine signal= 3.14 Joule\n",
+ "value of c= 1.27 \n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange,pi\n",
+ "from sympy.mpmath import quad,sin\n",
+ "\n",
+ "#Assuming SI units for all quantities\n",
+ "\n",
+ "#approximation of square signal to sine signal with minimum energy\n",
+ "t=arange(0,2*pi+.1,0.1)\n",
+ "t0=0#\n",
+ "t1=2*pi#\n",
+ "y=quad(lambda t:(sin(t))**2,[t0,t1])\n",
+ "print 'energy of sine signal= %.2f Joule'%y\n",
+ "#to calculate value of c\n",
+ "t2=0#\n",
+ "t3=pi#\n",
+ "g=quad(lambda t:sin(t),[t2,t3])\n",
+ "t4=pi#\n",
+ "t5=2*pi#\n",
+ "h=quad(lambda t:-sin(t),[t4,t5])\n",
+ "print \"value of c= %0.2f \"%((g+h)/pi)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 33 Exa 2.6a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "energy of signal x(t)=5.00 J\n",
+ "energy of signal=5.00 J\n",
+ "correlation coefficient=1\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,pi,sqrt\n",
+ "from sympy.mpmath import quad,sin\n",
+ "#Assuming SI units for all quantities\n",
+ "#given signal is x(t)=1\n",
+ "#energy of signal x(t)\n",
+ "t0=0#\n",
+ "t1=5\n",
+ "x=1\n",
+ "y=quad(lambda t:x**2,[t0,t1])\n",
+ "print 'energy of signal x(t)=%.2f J'%y\n",
+ "#to find correlation coefficient we have to calculate the energies of different given signals\n",
+ "#1st signal g1(t)=1\n",
+ "g1=1\n",
+ "e1=quad(lambda t:g1**2,[t0,t1])\n",
+ "print 'energy of signal=%.2f J'%e1\n",
+ "#correltion coefficient \n",
+ "c1=quad(lambda t:g1*x,[t0,t1])\n",
+ "print 'correlation coefficient=%.f'%(c1/sqrt(y*e1))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 33 Exa 2.6b"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "energy of signal x(t)=5.00 J\n",
+ "energy of signal=1.25 J\n",
+ "correlation coefficient=1.00\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,pi,sqrt\n",
+ "from sympy.mpmath import quad,sin\n",
+ "\n",
+ "#Assuming SI units for all quantities\n",
+ "#given signal is x(t)=1\n",
+ "#energy of signal x(t)\n",
+ "t0=0#\n",
+ "t1=5\n",
+ "x=1\n",
+ "y=quad(lambda t:x**2,[t0,t1])\n",
+ "print 'energy of signal x(t)=%.2f J'%y\n",
+ "#to find correlation coefficient we have to calculate the energies of different given signals\n",
+ "g2=.5\n",
+ "e2=quad(lambda t:g2**2,[t0,t1])\n",
+ "print 'energy of signal=%.2f J'%e2\n",
+ "#correltion coefficient \n",
+ "c2=quad(lambda t:g2*x,[t0,t1])\n",
+ "print 'correlation coefficient=%.2f'%(c2/sqrt(y*e2))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 33 Exa 2.6c"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "energy of signal x(t)=5.00 J\n",
+ "energy of signal=5.00 J\n",
+ "correlation coefficient=-1.00\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,pi,sqrt\n",
+ "from sympy.mpmath import quad,sin\n",
+ "\n",
+ "#Assuming SI units for all quantities\n",
+ "#given signal is x(t)=1\n",
+ "#energy of signal x(t)\n",
+ "t0=0#\n",
+ "t1=5\n",
+ "x=1\n",
+ "y=quad(lambda t:x**2,[t0,t1])\n",
+ "print 'energy of signal x(t)=%.2f J'%y\n",
+ "#to find correlation coefficient we have to calculate the energies of different given signals\n",
+ "g3=-1\n",
+ "e3=quad(lambda t:g3**2,[t0,t1])\n",
+ "print 'energy of signal=%0.2f J'%e3\n",
+ "#correltion coefficient \n",
+ "c3=quad(lambda t:g3*x,[t0,t1])\n",
+ "print 'correlation coefficient=%.2f'%(c3/sqrt(y*e3))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 33 Exa 2.6d"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "energy of signal x(t)=5.00 J\n",
+ "energy of signal=2.16 J\n",
+ "correlation coefficient=0.96\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,pi,sqrt\n",
+ "from sympy.mpmath import quad,sin,exp\n",
+ "\n",
+ "#Assuming SI units for all quantities\n",
+ "#given signal is x(t)=1\n",
+ "#energy of signal x(t)\n",
+ "t0=0#\n",
+ "t1=5\n",
+ "x=1\n",
+ "y=quad(lambda t:x**2,[t0,t1])\n",
+ "print 'energy of signal x(t)=%.2f J'%y\n",
+ "#to find correlation coefficient we have to calculate the energies of different given signals\n",
+ "e4=quad(lambda t:(exp(-t/5))**2,[t0,t1])\n",
+ "print 'energy of signal=%.2f J'%e4\n",
+ "\n",
+ "#correltion coefficient \n",
+ "c4=quad(lambda t:(exp(-t/5))*x,[t0,t1])\n",
+ "print 'correlation coefficient=%.2f'%(c4/sqrt(y*e4))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 33 Exa 2.6e"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "energy of signal x(t)=5.00 J\n",
+ "energy of signal=0.50 J\n",
+ "correlation coefficient=0.63\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,pi,sqrt\n",
+ "from sympy.mpmath import quad,sin,exp\n",
+ "\n",
+ "#Assuming SI units for all quantities\n",
+ "#given signal is x(t)=1\n",
+ "#energy of signal x(t)\n",
+ "t0=0#\n",
+ "t1=5\n",
+ "x=1\n",
+ "y=quad(lambda t:x**2,[t0,t1])\n",
+ "print 'energy of signal x(t)=%.2f J'%y\n",
+ "#to find correlation coefficient we have to calculate the energies of different given signals\n",
+ "e5=quad(lambda t:(exp(-t))**2,[t0,t1])\n",
+ "print 'energy of signal=%.2f J'%e5\n",
+ "#correltion coefficient \n",
+ "c5=quad(lambda t:(exp(-t))*x,[t0,t1])\n",
+ "print 'correlation coefficient=%.2f'%(c5/sqrt(y*e5))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 33 Exa 2.6f"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "energy of signal x(t)=5.00 J\n",
+ "energy of signal=2.50 J\n",
+ "correlation coefficient=0.71\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,pi,sqrt\n",
+ "from sympy.mpmath import quad,sin,exp\n",
+ "\n",
+ "#Assuming SI units for all quantities\n",
+ "#given signal is x(t)=1\n",
+ "#energy of signal x(t)\n",
+ "t0=0#\n",
+ "t1=5\n",
+ "x=1\n",
+ "y=quad(lambda t:x**2,[t0,t1])\n",
+ "print 'energy of signal x(t)=%.2f J'%y\n",
+ "#to find correlation coefficient we have to calculate the energies of different given signals\n",
+ "e6=quad(lambda t:(sin(2*pi*t))**2,[t0,t1])\n",
+ "print 'energy of signal=%.2f J'%e6\n",
+ "#correltion coefficient \n",
+ "c6=quad(lambda t:((sin(2*pi*t))**2)*x,[t0,t1])\n",
+ "print 'correlation coefficient=%.2f'%(c6/sqrt(y*e6))"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter3.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter3.ipynb
new file mode 100644
index 00000000..d82be350
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter3.ipynb
@@ -0,0 +1,182 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 3 : Analysis and transmission of signals"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 75 Prob 3.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "fourier transform of x(t)=:\n",
+ "[ 1.58195029+0.j 1.33722176-0.38516024j 1.02105993-0.4033185j\n",
+ " 0.84862839-0.29364174j 0.76732853-0.17191927j 0.73478625-0.05628763j\n",
+ " 0.73478625+0.05628763j 0.76732853+0.17191927j 0.84862839+0.29364174j\n",
+ " 1.02105993+0.4033185j 1.33722176+0.38516024j]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.fftpack import fft\n",
+ "from math import exp\n",
+ "# given signal is x(t)= e**(-at) * u(t)\n",
+ "#unity function u(t)=1 for 0 to infinity \n",
+ "#therefore\n",
+ "x=1#\n",
+ "#here we consider 'infinity' value as 10 and the value of 'a' is 1\n",
+ "t= range(0,11)\n",
+ "a=1## a >0\n",
+ "z=[]\n",
+ "for tt in t:z.append((exp(-a*tt) * x))\n",
+ "y=fft(z)#\n",
+ "print 'fourier transform of x(t)=:\\n',y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 81 Prob 3.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "fourier transform of x(t)=:\n",
+ "[ 1.+0.j]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.fftpack import fft\n",
+ "\n",
+ "#given signal is x(t) = rect(t/T)\n",
+ "#rect(t/T) = 1 for |t| < T/2 and \n",
+ "# = 0 for |t| > T/2\n",
+ "# therefore we have to find out fourier transform of x(t)= 1 for |t| < T/2 thus,\n",
+ "x=[1]#\n",
+ "T= 200# # consider \n",
+ "t= range(-T/2,T/2+1)##range for fourer transform\n",
+ "y=fft(x)#\n",
+ "print 'fourier transform of x(t)=:\\n',y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 82 Prob 3.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "fourier transform of x(t)=:\n",
+ "[ 1.+0.j]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.fftpack import fft\n",
+ "\n",
+ "# given signal is x(t)= unit impulse d(t) \n",
+ "#it is defined as d(t) = 1 for t=0\n",
+ "#therefore \n",
+ "x=1#\n",
+ "y=fft([x])#\n",
+ "print 'fourier transform of x(t)=:\\n',y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 84 problem 3.7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "fourier transform of signum funcion is : \n",
+ "[ 0.00000000 +0.j -1.98883083+13.19503037j -0.04442719 +0.14402943j\n",
+ " -1.90096887 +3.94740253j -0.17376123 +0.25486091j -1.73305187 +1.86778571j\n",
+ " -0.37651020 +0.30025686j -1.50000000 +0.8660254j -0.63465898 +0.24908529j\n",
+ " -1.22252093 +0.27903243j -0.92526991 +0.06933939j -0.92526991 -0.06933939j\n",
+ " -1.22252093 -0.27903243j -0.63465898 -0.24908529j -1.50000000 -0.8660254j\n",
+ " -0.37651020 -0.30025686j -1.73305187 -1.86778571j -0.17376123 -0.25486091j\n",
+ " -1.90096887 -3.94740253j -0.04442719 -0.14402943j -1.98883083-13.19503037j]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import sign\n",
+ "t=range(-10,11)#\n",
+ "y=sign(t)#\n",
+ "g=fft(y)#\n",
+ "print \"fourier transform of signum funcion is : \\n\",g"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter4.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter4.ipynb
new file mode 100644
index 00000000..2847c250
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter4.ipynb
@@ -0,0 +1,70 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 4 : Amplitude(Linear) Modulation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 166 Problem 4.5"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "efficiency in % is 11.111\n",
+ "efficiency in % is 4.306\n"
+ ]
+ }
+ ],
+ "source": [
+ "# we have given 1)u=.5 and 2)u=.3\n",
+ "# efficiency n is calculated by using formula n= (u**2) / (2+u**2) *100 %\n",
+ "#for u=0.5\n",
+ "u1=0.5#\n",
+ "n1= (u1**2) / (2+u1**2) *100 #\n",
+ "print 'efficiency in % is',round(n1,3)\n",
+ "# Hence only 11.1111% of total power is in sidebands.\n",
+ "#for u=0.3\n",
+ "u2=0.3#\n",
+ "n2= (u2**2) / (2+u2**2) *100#\n",
+ "print 'efficiency in % is',round(n2,3)\n",
+ "# Hence only 4.3062% of the total power is the useful power (power in sidebands)"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter5.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter5.ipynb
new file mode 100644
index 00000000..535073ef
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter5.ipynb
@@ -0,0 +1,332 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 5 : Angle(exponential) Modulation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 212 Problem 5.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Minimum frequency = 99.90 MHz\n",
+ "Maximum frequency = 100.10 MHz\n",
+ "Minimum frequency = 99.90 MHz\n",
+ "Maximum frequency = 100.10 MHz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi\n",
+ "\n",
+ "# The values of constsnts Kf and Kp are given as Kf= 2*pi*10**5 and Kp=10*pi, and carrier frequency fc=100MHz\n",
+ "\n",
+ "# For FM :\n",
+ "#fi= fc + Kf*m(t)/2*pi\n",
+ "# Minimum value of m(t) = -1 and Maximum value of m(t)= +1\n",
+ "Kf= 2*pi*10**5 #\n",
+ "Kp=10*pi#\n",
+ "fc=100*10**6 ## in Hz\n",
+ "Mmin = -1 # \n",
+ "Mmax=1#\n",
+ "fimin1= fc + Kf*Mmin/(2*pi)#\n",
+ "print 'Minimum frequency = %0.2f MHz'%(fimin1/10**6)\n",
+ "fimax1= fc + Kf*Mmax/(2*pi)#\n",
+ "print 'Maximum frequency = %0.2f MHz'%(fimax1/10**6)\n",
+ "\n",
+ "#For PM :\n",
+ "#fi= fc + Kp*m(t)'/2*pi\n",
+ "# Minimum value of m(t)' = -20,000 and Maximum value of m(t)'= +20,000\n",
+ "Mmin1=-20000 # \n",
+ "Mmax1=20000#\n",
+ "fimin2= fc + Kp*Mmin1/(2*pi)#\n",
+ "print 'Minimum frequency = %.2f MHz'%(fimin2/10**6)\n",
+ "fimax2= fc + Kp*Mmax1/(2*pi)#\n",
+ "print 'Maximum frequency = %.2f MHz'%(fimax2/10**6)\n",
+ "\n",
+ "# Since m(t) is increases and decreases linearly with time, the instantaneous frequency increases linearly from fimin to fimax"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 213 Problem 5.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Minimum frequency = 99.90 MHz\n",
+ "Maximum frequency = 100.10 MHz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi\n",
+ "\n",
+ "# The values of constsnts Kf and Kp are given as Kf= 2*pi*10**5 and Kp=pi/2, and carrier frequency fc=100MHz\n",
+ "# For FM :\n",
+ "#fi= fc + Kf*m(t)/2*pi\n",
+ "# Minimum value of m(t) = -1 and Maximum value of m(t)= +1\n",
+ "Kf= 2*pi*10**5 #\n",
+ "Kp=pi/2#\n",
+ "fc=100*10**6 ## in Hz\n",
+ "Mmin = -1 #\n",
+ "Mmax=1#\n",
+ "fimin1= fc + Kf*Mmin/(2*pi)#\n",
+ "print 'Minimum frequency = %.2f MHz'%(fimin1/10**6)\n",
+ "fimax1= fc + Kf*Mmax/(2*pi)#\n",
+ "print 'Maximum frequency = %.2f MHz'%(fimax1/10**6)\n",
+ "# Since m(t) is increases and decreases linearly with time, the instantaneous frequency increases linearly from fimin to fimax"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 222 Problem 5.3.a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Bfm = 230.00 kHz\n",
+ "Bpm = 130.00 kHz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi\n",
+ "\n",
+ "# refer fig from page no. 212 Fig.5.4a\n",
+ "# The values of constsnts Kf and Kp are given as Kf= 2*pi*10**5 and Kp=5*pi .\n",
+ "# Here we are assuming the Bandwidth B of m(t) as the frequency of the third harmonic, i.e. 3(10**4/2)Hz= 15kHz\n",
+ "B=15## in kHz\n",
+ "# For FM:\n",
+ "# Here peak amplitude of m(t) is mp=1\n",
+ "mp=1#\n",
+ "# df=kf*mp/2*pi\n",
+ "Kf= 2*pi*10**5# \n",
+ "Kp=5*pi#\n",
+ "df= (Kf*mp)/(2*pi)## in Hz\n",
+ "df=df/10**3## in KHz\n",
+ "Bfm=2*(df+B)#\n",
+ "print 'Bfm = %.2f kHz'%(Bfm)\n",
+ "# For PM:\n",
+ "#Here peak amplitude of m(t)' is mp=20000\n",
+ "mp=20000#\n",
+ "# df=kp*mp/2*pi\n",
+ "df= (Kp*mp)/(2*pi)## in Hz\n",
+ "df=df/10**3## in KHz\n",
+ "Bpm=2*(df+B)#\n",
+ "print 'Bpm = %.2f kHz'%Bpm"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 222 Problem 5.3.b"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Bfm = 430.00 kHz\n",
+ "Bpm = 230.00 kHz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi\n",
+ "# The values of constsnts Kf and Kp are given as Kf= 2*pi*10**5 and Kp=5*pi .\n",
+ "# Here we are assuming the Bandwidth B of m(t) as the frequency of the third harmonic, i.e. 3(10**4/2)Hz= 15kHz\n",
+ "B=15## in kHz\n",
+ "# For FM:\n",
+ "# Here peak amplitude of m(t) is doubled ,mp=2\n",
+ "mp=2#\n",
+ "# df=kf*mp/2*pi\n",
+ "Kf= 2*pi*10**5#\n",
+ "Kp=5*pi#\n",
+ "df= (Kf*mp)/(2*pi)## in Hz\n",
+ "df=df/10**3## in KHz\n",
+ "Bfm=2*(df+B)#\n",
+ "print 'Bfm = %.2f kHz'%Bfm\n",
+ "# For PM:\n",
+ "#Here peak amplitude of m(t)' is doubled mp=40000\n",
+ "mp=40000#\n",
+ "# df=kp*mp/2*pi\n",
+ "df= (Kp*mp)/(2*pi)## in Hz\n",
+ "df=df/10**3## in KHz\n",
+ "Bpm=2*(df+B)#\n",
+ "print 'Bpm = %.2f kHz'%Bpm\n",
+ "# doubling the signal amplitude roughly doubles the bandwidth of both FM and PM waveform"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 224 Problem 5.4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Bfm = 215.00 kHz\n",
+ "Bpm = 65.00 kHz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi\n",
+ "\n",
+ "# Repeat example 5.3 with m(t) expanded by a factor of 2 i.e. if the period of m(t) is 4*10**-4\n",
+ "# The values of constsnts Kf and Kp are given as Kf= 2*pi*10**5 and Kp=5*pi .\n",
+ "# we know that time expansion by a factor 2 reduces the signal spectrum width by a factor 2\n",
+ "# Therefore bandwidth is half the previous bandwidth\n",
+ "B=7.5# # im KHz\n",
+ "# For FM:\n",
+ "# Time expansion does not affect the peak amplitude so that mp=1.\n",
+ "mp=1#\n",
+ "# df=kf*mp/2*pi\n",
+ "Kf= 2*pi*10**5# \n",
+ "Kp=5*pi#\n",
+ "df= (Kf*mp)/(2*pi)## in Hz\n",
+ "df=df/10**3## in KHz\n",
+ "Bfm=2*(df+B)#\n",
+ "print 'Bfm = %.2f kHz'%Bfm\n",
+ "# For PM:\n",
+ "#mp is halved i.e. mp=10000\n",
+ "mp=10000#\n",
+ "# df=kp*mp/2*pi\n",
+ "df= (Kp*mp)/(2*pi)## in Hz\n",
+ "df=df/10**3## in KHz\n",
+ "Bpm=2*(df+B)#\n",
+ "print 'Bpm = %.2f kHz'%Bpm\n",
+ "# Time expansion of m(t) has very little effect on the FM bandwidth, but it halves the PM bandwidth"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page 225 Problem 5.5"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a) The carrier power is : 50.00 Watt\n",
+ "b) The frequency deviation = 12387.32 Hz\n",
+ "c) The deviation ratio is: 12.39 \n",
+ "d)The phase deviation = 15.00 rad\n",
+ "e)Bandwidth is : 26774.65 Hz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi\n",
+ "#Assuming SI unit for all quantities\n",
+ "\n",
+ "# An angle modulated signal with carrier frequency wc = 2*pi*10**5 is described by the equation Qem= 10cos(@(t)) where @(t)=wct+5sin3000t+10sin2000pi*t\n",
+ "B=2000*pi/(2*pi)##signal bandwidthis the highest frequency in m(t)\n",
+ "Ac=10##carrier amplitude\n",
+ "P=Ac**2/2## carrier power\n",
+ "print 'a) The carrier power is : %.2f Watt'%P\n",
+ "# to find frequency derivative df, e find instantaneous freq. w as\n",
+ "# wi=d/dt(@(t))= wc+15000cos3000t+20000pi*cos2000pi*t#\n",
+ "# The carrier derivative is 15000cos3000t+20000pi*cos2000pi*t. The two sinusoids will add in phase at some point and the maximum value of the expression is dW=15000+20000pi\n",
+ "dW=15000+20000*pi#\n",
+ "df=dW/(2*pi)#\n",
+ "print 'b) The frequency deviation = %.2f Hz'%df\n",
+ "# The deviation ratio B1 is given as\n",
+ "B1=df/B#\n",
+ "print 'c) The deviation ratio is: %.2f '%B1\n",
+ "#The phase deviation is the maximum value of the angle @(t) and is given b d@\n",
+ "d=5+10#\n",
+ "print 'd)The phase deviation = %.2f rad'%d\n",
+ "Bem=2*(df+B)#\n",
+ "print 'e)Bandwidth is : %.2f Hz'%Bem"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter6.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter6.ipynb
new file mode 100644
index 00000000..72f6d5c3
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter6.ipynb
@@ -0,0 +1,121 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 6: Sampling and pulse code modulation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 271 prob no. 6.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Enter the band limited freq in hertz is 1100\n",
+ "minimum transmission bandwidth = 8800.00 Hertz\n",
+ "enter the no of signal to be multiplexed 25\n",
+ "minimum transmission bandwidth = 220000.00 Hertz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "fm=input(\"Enter the band limited freq in hertz is \")\n",
+ "Rn=2*fm# # Nyquist sampling rate\n",
+ "Ra=Rn*(4/3)## actual Nyquist sampling rate\n",
+ "# here the maximum quantization error(E) is 0.5% of the peak amplitide mp. Hence, E=mp/L=0.5*mp/100*L\n",
+ "mp=1##we assume peak amplitude is unity\n",
+ "L=(mp*100)/(0.5*mp)#\n",
+ "for i in range(0,11):\n",
+ " j=2**i\n",
+ " if(j>=L):\n",
+ " L1=j#\n",
+ " break#\n",
+ " \n",
+ "n=log(L1,2)## bits per sample\n",
+ "c=n*Ra## total no of bits transmitted\n",
+ "# Beause we can transmit up to 2bits/per hertz of bandwidth,we require minimum transmission bandwidth Bt=c/2\n",
+ "Bt=c/2#\n",
+ "print \"minimum transmission bandwidth = %.2f Hertz\"%Bt\n",
+ "s=input(\"enter the no of signal to be multiplexed \")\n",
+ "Cm=s*c##total no of bits of 's' signal\n",
+ "c1=Cm/2## minimum transmission bandwidth\n",
+ "print \"minimum transmission bandwidth = %.2f Hertz\"%c1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 273 prob no 6.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter the value of L = 12\n",
+ "enter the bandwidth of signal in hertz350\n",
+ "SNR ratio is = 13.00 \n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log,log10\n",
+ "# from the expresion given on the page no 272# (So/No)=(a+6n) dB where a=10log[3/[ln(1+u)]**2]\n",
+ "#check the ollowing code for L=64 and L=256\n",
+ "L=input(\"enter the value of L = \")\n",
+ "B=input(\"enter the bandwidth of signal in hertz : \")\n",
+ "n=log(L,2)#\n",
+ "Bt=n*B#\n",
+ "u=100##given\n",
+ "a=10*log10(3/(log(1+u))**2)\n",
+ "SNR=(a+(6*n))#\n",
+ "print \"SNR ratio is = %0.2f \"%SNR\n",
+ "# Here the SNR ratio for the two cases are found out. The difference between the two SNRs is 12dB which is the ratio of 16. Thus the SNR for L=256 is 16 times the SNR for L=64. The former requires just about 33% more bandwidth compared to the later."
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter7.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter7.ipynb
new file mode 100644
index 00000000..5f7a2321
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter7.ipynb
@@ -0,0 +1,155 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 7 : Principles of digital data transmission"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 314 prob no 7.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "transmission rate = 32000\n"
+ ]
+ }
+ ],
+ "source": [
+ "#The transmission bandwidth is given by the equation Bt=(1+r)Rb/2 and hence transmission rate is given by Rb=2Bt/(1+r)#where r=roll-off factor and 0<=r<=1. Since 'r' can take value in between 0 and 1,bandwidth varies from 2Bt to Bt.\n",
+ "Bt=32000#\n",
+ "r=1##assume values of Bt and r\n",
+ "Rb=(2*Bt)/(1+r)#\n",
+ "print \"transmission rate = \",Rb##Rb=Bt for r=1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page no 326 Prob no 7.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "values of C-1,C0,C1 are obtained:\n",
+ "[[ 0.20939445]\n",
+ " [ 1.1262026 ]\n",
+ " [ 0.31692134]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "# problem fig. is ggiven on page no 324. Referring the fig. we are given the values of a0,a1,a-1,a-2\n",
+ "a=1#\n",
+ "b=-0.3#\n",
+ "c=0.1#\n",
+ "d=-0.2#\n",
+ "e=0.05#\n",
+ "#design a three-tap (N=1) equalizer by substituting these values into eq no 7.45 of the page no 325\n",
+ "A=mat([[0],[1],[0]])#\n",
+ "B=mat([[a, d, e],[b, a, d],[c, b, a]])\n",
+ "c=(B**-1)*A## As, A=B*C Hence c is obtained as given\n",
+ "print 'values of C-1,C0,C1 are obtained:'\n",
+ "print c"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no 334 Prob NO 7.4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Value of x : 0.0052\n",
+ "error probability = 9.96e-08 \n",
+ "Value of x : 96.1500\n",
+ "error probability = 1.17e-04 \n",
+ "error probability = 1.75e-04 \n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "# a) Find detection error probability\n",
+ "#Given: Ap=1mV, 6n=192.3uV\n",
+ "# The formula for polar case is given by Ap/6n\n",
+ "Ap=1#\n",
+ "sigma_n=192.3#\n",
+ "x=Ap/sigma_n##here we have to find the value of P(e)=Q(x) from the table10.2 given on page no. 454\n",
+ "print \"Value of x : %0.4f\"%x\n",
+ "Q1=(0.9964)*10**(-7)#\n",
+ "print \"error probability = %.2e \"%Q1 ##this is nearly equal to zero\n",
+ "\n",
+ "#Prob NO 7.4 b) Find detection error probability.\n",
+ "#In this case, only half the bits are transmitted by no pulse, there are, on the average, only half as many pulses in the on-off case(compared to the polar). \n",
+ "#To maintain the same power,we need to double the energy of each pulse in the on-off or the bipolar case(compared to the polar).\n",
+ "#Now, doubling the pulse energy is accomplished by multiplying the pulse by sqrt(2).\n",
+ "#Thus, for on-off Ap is sqrt(2) times the Ap in the polar case,that is, Ap=sqrt(2)*10**-3\n",
+ "x=Ap/2*sigma_n##here we have to find the value of P(e)=Q(x) from the table10.2 given on page no. 454\n",
+ "print \"Value of x : %0.4f\"%x\n",
+ "Q2=(1.166)*10**-4#\n",
+ "print \"error probability = %0.2e \"%Q2\n",
+ "#for a given power , the Ap for both the on-off and the bipolar cases are identical. Hence P(e)=1.5 Q(x)#\n",
+ "Q3=1.5*Q2#\n",
+ "print \"error probability = %0.2e \"%Q3"
+ ]
+ }
+ ],
+ "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/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter8.ipynb b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter8.ipynb
new file mode 100644
index 00000000..2f0e3fa2
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/Chapter8.ipynb
@@ -0,0 +1,70 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 8 : Emerging digital communications technologies"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## page no. 367 Prob no. 8.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "No. of hours for resynchronizing : 60 Hr\n"
+ ]
+ }
+ ],
+ "source": [
+ "#since both the plots can be out of synchronization by as much as 6 parts (bits)in 10**13 , we have \n",
+ "# timing error bits per second can be calculated as-\n",
+ "#error in synchronization is given as\n",
+ "e=6.0/(10**13)##timing eeor bits per transmitted bits\n",
+ "#bit rate is given as\n",
+ "r =1544000.0 ## in bits/sec\n",
+ "#timing error bits per second ,Te is given as\n",
+ "Te=e*r#\n",
+ "S=1/Te## seconds per timing error bits\n",
+ "H=S/3600.0## hours per timing error bits\n",
+ "#since a synchronization error can occur whenever the network is out of synchronization by 1/5 bits, the time between resynchronizing is given as\n",
+ "T=H/5.0#\n",
+ "print \"No. of hours for resynchronizing : %.f Hr\"%T"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2correlationCoeff.png b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2correlationCoeff.png
new file mode 100644
index 00000000..77e53b40
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2correlationCoeff.png
Binary files differ
diff --git a/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2expansionofSignal.png b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2expansionofSignal.png
new file mode 100644
index 00000000..4d19c746
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2expansionofSignal.png
Binary files differ
diff --git a/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2timeInvertedsignal.png b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2timeInvertedsignal.png
new file mode 100644
index 00000000..111501c3
--- /dev/null
+++ b/Modern_Digital_And_Analog_Communication_System_by_B._P._Lathi/screenshots/2timeInvertedsignal.png
Binary files differ
diff --git a/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-2-Molecular_Diffusion_-_Principles_of_Mass_Transfer_and_Separation_Process_by_Binay_K_Dutta_1.ipynb b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-2-Molecular_Diffusion_-_Principles_of_Mass_Transfer_and_Separation_Process_by_Binay_K_Dutta_1.ipynb
new file mode 100644
index 00000000..7e8be8be
--- /dev/null
+++ b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-2-Molecular_Diffusion_-_Principles_of_Mass_Transfer_and_Separation_Process_by_Binay_K_Dutta_1.ipynb
@@ -0,0 +1,789 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 2 Molecular Diffusion"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.1 pgno:10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Molar average velocity of gas mixture is: 0.0303 m/s\n",
+ "Mass average velocity of gas mixture is: 0.029 m/s\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Calculation of average velocities\n",
+ "\n",
+ "N2 = 0.05 #mole fraction of Nitrogen denoted as 1\n",
+ "H2 = 0.15 #mole fraction of Hydrogen denoted as 2\n",
+ "NH3 = 0.76 #mole fraction of Ammonia denoted as 3\n",
+ "Ar = 0.04 #mole fraction of Argon denoted as 4\n",
+ "u1 = 0.03\n",
+ "u2 = 0.035\n",
+ "u3 = 0.03\n",
+ "u4 = 0.02\n",
+ "#Calculating molar average velocity\n",
+ "U = N2*u1 + H2*u2 + NH3*u3 + Ar*u4\n",
+ "print 'Molar average velocity of gas mixture is: %.4f m/s'%U\n",
+ "#Calculating of mass average velocity\n",
+ "M1 = 28\n",
+ "M2 = 2\n",
+ "M3 = 17\n",
+ "M4 = 40\n",
+ "M = N2*M1 + H2*M2 + NH3*M3 + Ar*M4\n",
+ "u = (1/M)*(N2*M1*u1 + H2*M2*u2 + NH3*M3*u3 + Ar*M4*u4)\n",
+ "print 'Mass average velocity of gas mixture is: %.3f m/s'%u"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.2 pgno:16"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) Time for complete evaporation is: 15.93 hours\n",
+ "(b) Time for disappearance of water is: 8.87 hours\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Diffusion of A through non-diffusing B\n",
+ "\n",
+ "from math import log\n",
+ "from math import exp\n",
+ "import numpy as np\n",
+ "\n",
+ "#Calcualtion for (a) part\n",
+ "#calculating vapor pressure of water at 301K\n",
+ "pv = exp(13.8573 - (5160.2/301)) #in bar\n",
+ "#wet-bulb temperature is 22.5 degree centigrade\n",
+ "#calculating mean air-film temperature\n",
+ "Tm = ((28+22.5)/2)+273 #in kelvin\n",
+ "#calculating diffusion coefficient\n",
+ "Dab = ((0.853*(30.48**2))*((298.2/273)**1.75))/(3600*10000) #in m^2/s\n",
+ "l = 2.5e-3 #in m\n",
+ "P = 1.013 #in bar\n",
+ "R = 0.08317 #Gas constant\n",
+ "pAo = exp(13.8573 - (5160.2/295.2)) #vapor pressure of water at the wet-bulb temperature, 22.2C\n",
+ "pAl = 0.6*round(pv,4)\n",
+ "Na = (((round(Dab,7)*P)/(R*298.2*l))*log((P-pAl)/(P-round(pAo,3))))*18 #in kg/m^2s\n",
+ "#amount of water per m^2 of floor area is\n",
+ "thickness = 2e-3\n",
+ "Amount = thickness*1 #in m^3 \n",
+ "#density of water is 1000kg/m^3\n",
+ "#therefore in kg it is\n",
+ "amount = Amount*1000\n",
+ "Time_for_completion = amount/Na #in seconds\n",
+ "Time_for_completion_hours = Time_for_completion/3600\n",
+ "print '(a) Time for complete evaporation is: %.2f'%Time_for_completion_hours,'hours'\n",
+ "\n",
+ "#Calculation for (b) part\n",
+ "water_loss = 0.1 #in kg/m^2.h\n",
+ "water_loss_by_evaporation = Na*3600\n",
+ "total_water_loss = water_loss + water_loss_by_evaporation\n",
+ "time_for_disappearance = amount/total_water_loss\n",
+ "print '(b) Time for disappearance of water is: %0.2f'%time_for_disappearance,'hours'\n",
+ "#Answers may vary due to round off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.3 pgno:17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) The molar flux of Ammonia is:1.922E-05 gmol/cm^2.s\n",
+ "(b) and (c)\n",
+ "Velocity of A is 0.522 cm/s\n",
+ "Velocity of B is 0.000 cm/s\n",
+ "Mass average velocity of A is 0.439 cm/s\n",
+ "Molar average velocity of A is 0.47 cm/s\n",
+ "(d) Molar flux of NH3 is 3.062E-06 gmol/cm^2.s\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "<matplotlib.text.Text at 0xa093160>"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x9ed0c18>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#Calculation of flux and velocity\n",
+ "\n",
+ "%matplotlib inline\n",
+ "from math import log\n",
+ "from math import exp\n",
+ "import numpy as np\n",
+ "from matplotlib import pyplot as plt\n",
+ "#calculation for (a) part\n",
+ "l = 1 #thickness of air in cm\n",
+ "pAo = 0.9 #in atm\n",
+ "pAl = 0.1 #in atm\n",
+ "Dab = 0.214 #in cm^2/s\n",
+ "T = 298 #in K\n",
+ "P = 1 #in atm\n",
+ "R = 82.1 #in (cm^3)(atm)/(K)(gmol)\n",
+ "#calculating molar flux of ammonia\n",
+ "Na = ((Dab*P)/(R*T*l))*log((P-pAl)/(P-pAo))\n",
+ "print '(a) The molar flux of Ammonia is:%0.3E'%Na,'gmol/cm^2.s'\n",
+ "\n",
+ "#calculation for (b) and (c) part\n",
+ "Nb = 0 #air is non-diffusing\n",
+ "U = (Na/(P/(R*T))) #molar average velocity\n",
+ "yA = pAo/P\n",
+ "yB = pAl/P\n",
+ "uA = U/yA #\n",
+ "uB = 0 #since Nb=0\n",
+ "Ma = 17\n",
+ "Mb = 29\n",
+ "M = Ma*yA + Mb*yB\n",
+ "u = uA*yA*Ma/M #since u =(uA*phoA + uB*phoB)/pho\n",
+ "print '(b) and (c)'\n",
+ "print 'Velocity of A is %0.3f'%uA,'cm/s'\n",
+ "print 'Velocity of B is %0.3f'%uB,'cm/s'\n",
+ "print 'Mass average velocity of A is %0.3f'%u,'cm/s'\n",
+ "print 'Molar average velocity of A is %0.2f'%U,'cm/s'\n",
+ "\n",
+ "#calculation for (d) part\n",
+ "Ca = pAo/(R*T)\n",
+ "Ia = Ca*(uA - u) #molar flux of NH3 relative to an observer moving\n",
+ " #with the mass average velocity \n",
+ "print '(d) Molar flux of NH3 is %0.3E'%Ia,'gmol/cm^2.s'\n",
+ "\n",
+ "z = []\n",
+ "pa =[]\n",
+ "for i in np.arange(0,1,0.01):\n",
+ " z.append(i)\n",
+ " \n",
+ "for i in range(0,len(z)):\n",
+ " pa.append(1-(0.1*exp(2.197*z[i])))\n",
+ " \n",
+ "from matplotlib.pyplot import plot\n",
+ "plot(z,pa);\n",
+ "plt.xlabel('z(cm)');\n",
+ "plt.ylabel('pA(atm)');\n",
+ "#Answers may vary due to round off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.4 pgno:19"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) Rate of diffusion of oxygen 7.151E-10 kmol/s\n",
+ "(b) The partial pressure gradient of oxygen at midway in diffusion path is: -4.25 bar/m\n",
+ "(c)\n",
+ "Molar average velocity and diffusion velocities at \"midway\"\n",
+ "Molar average velocity in z-direction is 9.9E-05 m/s\n",
+ "The diffusion velocity of oxygen 7.9E-04 m/s\n",
+ "The diffusion velocity of Nitrogen -9.9E-05 m/s\n",
+ "Molar average velocity and diffusion velocities at \"top of tube\"\n",
+ "Molar average velocity in z-direction is 9.9E-05 m/s\n",
+ "The diffusion velocity of oxygen 3.72E-04 m/s\n",
+ "The diffusion velocity of Nitrogen -9.9E-05 m/s\n",
+ "Molar average velocity and diffusion velocities at \"bottom of tube\"\n",
+ "Molar average velocity in z-direction is 9.9E-05 m/s\n",
+ "The diffusion velocity of oxygen is not infinity\n",
+ "The diffusion velocity of Nitrogen -9.9E-05 m/s\n",
+ "(d)\n",
+ "New molar flux of (A) 4.95E-06 kmol/m^2.s\n",
+ "New molar flux of (B) 7.19E-06 kmol/m^2.s\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\nAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x3659630>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#Flux, velocity and pressure gradient\n",
+ "\n",
+ "#calculation of (a) part\n",
+ "#given data\n",
+ "from math import log\n",
+ "from math import pi\n",
+ "from math import exp\n",
+ "import numpy as np\n",
+ "from matplotlib import pyplot as plt\n",
+ "T = 298 #in kelvin\n",
+ "P = 1.013 #in bar\n",
+ "pAl = 0 #partial pressure of oxygen(A) at liquid surface\n",
+ "pAo = 0.21*1.013 #partial pressure of oxygen at open mouth\n",
+ "l = 0.05 #length of diffusion path in m\n",
+ "Dab = 2.1e-5 #diffusivity in m^2/s\n",
+ "R = 0.08317 #in m^3.bar.kmol.K\n",
+ "Na = Dab*P*log((P-pAl)/(P-pAo))/(R*T*l) #in kmol/m^2.s\n",
+ "area = (pi/4)*(0.015)**2\n",
+ "rate = area*Na\n",
+ "print '(a) Rate of diffusion of oxygen %0.3E'%rate,'kmol/s'\n",
+ "z = []\n",
+ "pa =[]\n",
+ "for i in np.arange(0,1,0.01):\n",
+ " z.append(i)\n",
+ " \n",
+ "for i in range(0,len(z)):\n",
+ " pa.append(P-(P-pAo)*exp((R*T*Na*z[i])/(Dab*P)))\n",
+ " \n",
+ "from matplotlib.pyplot import plot\n",
+ "plt.plot(z,pa);\n",
+ "plt.xlabel('z(cm)');\n",
+ "plt.ylabel('pA(atm)');\n",
+ "\n",
+ "#calculation of (b) part\n",
+ "z = 0.025 #diffusion path\n",
+ "pA = 0.113 #in bar\n",
+ "#we have to find partial pressure gradient of oxygen at mid way of diffusion path\n",
+ "#let dpA/dz = ppd\n",
+ "ppd = -(R*T*round(Na,8)*(P-pA))/(Dab*P)\n",
+ "print '(b) The partial pressure gradient of oxygen at midway in diffusion path is: %0.2f'%ppd,'bar/m'\n",
+ "\n",
+ "#calculation of (c) part\n",
+ "uA = Na*(R*T/pA) #velocity of oxygen\n",
+ "uB = 0 #since nitrogen is non-diffusing hence Nb = 0\n",
+ "U = pA*uA/P #since U=1/C*(uA*Ca + uB*Cb)\n",
+ "vAd = uA - U #diffusion velocity of oxygen\n",
+ "vBd = uB - U #diffusion velocity of nitrogen\n",
+ "print '(c)'\n",
+ "print 'Molar average velocity and diffusion velocities at \"midway\"'\n",
+ "print 'Molar average velocity in z-direction is %0.1E'%U,'m/s'\n",
+ "print 'The diffusion velocity of oxygen %0.1E'%vAd,'m/s'\n",
+ "print 'The diffusion velocity of Nitrogen %0.1E'%vBd,'m/s'\n",
+ "#at z=0(at top of tube)\n",
+ "uA = Na*(R*T/pAo)\n",
+ "uB = 0\n",
+ "U = pAo*uA/P\n",
+ "vAd = uA - U\n",
+ "vBd = uB - U\n",
+ "print 'Molar average velocity and diffusion velocities at \"top of tube\"'\n",
+ "print 'Molar average velocity in z-direction is %0.1E'%U,'m/s'\n",
+ "print 'The diffusion velocity of oxygen %0.2E'%vAd,'m/s'\n",
+ "print 'The diffusion velocity of Nitrogen %0.1E'%vBd,'m/s'\n",
+ "#at z=0.05(at bottom of tube)\n",
+ "#uA = inf\n",
+ "uB = 0\n",
+ "U = pAo*uA/P\n",
+ "vAd = uA - U\n",
+ "vBd = uB - U\n",
+ "print 'Molar average velocity and diffusion velocities at \"bottom of tube\"'\n",
+ "print 'Molar average velocity in z-direction is %0.1E'%U,'m/s'\n",
+ "print 'The diffusion velocity of oxygen is not infinity'\n",
+ "print 'The diffusion velocity of Nitrogen %0.1E'%vBd,'m/s'\n",
+ "\n",
+ "#calculation of (d) part\n",
+ "V = -2*U\n",
+ "pA = 0.113\n",
+ "Nad = round(Na,8) - V*(pA/(R*T))\n",
+ "Nbd = 0 - (P - pA)*V/(R*T)\n",
+ "print '(d)'\n",
+ "print 'New molar flux of (A) %0.2E'%Nad,'kmol/m^2.s'\n",
+ "print 'New molar flux of (B) %0.2E'%Nbd,'kmol/m^2.s'\n",
+ "#Answers may vary due to round off errors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.5 pgno:21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) The air-film thickness is :0.00193 m\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Diffusion with changing bulk concentration\n",
+ "\n",
+ "from math import log\n",
+ "#given data\n",
+ "area = 3*4 #in m^2\n",
+ "mperarea = 3.0/12 #in kg/m^2\n",
+ "#part (a)\n",
+ "P = 1.013 #in bar\n",
+ "Dab = 9.95e-6 #in m^2/s\n",
+ "R = 0.08317 #in m^3.bar./K.kmol\n",
+ "T = 273+27 #in K\n",
+ "#let d=1\n",
+ "d = 1 #in m\n",
+ "pAo = 0.065 #partial pressure of alcohol on liquid surface\n",
+ "pAd = 0 #partial pressure over d length of stagnant film of air\n",
+ "Na = (Dab*P*log((P-pAd)/(P-pAo)))/(R*T*d) #in kmol/m^2.s\n",
+ "Na = Na*60 #in kg/m^2.s\n",
+ "flux = mperarea/(5*60) #since the liquid evaporates completely in 5 minutes\n",
+ "#now we have to find the value of d\n",
+ "d = Na/flux\n",
+ "print '(a) The air-film thickness is :%0.5f'%d,'m'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.6 pgno:24"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a)\n",
+ "The steady-state flux is: 3.35E-06 kmol/m^2.s\n",
+ "The rate of transport of N2 from vessel 1 to 2: 6.6E-09 kmol/s\n",
+ "(b)\n",
+ "The flux and the rate of transport of oxygen is: -3.35E-06 kmol/m^2.s\n",
+ "(c)\n",
+ "Partial pressure at a point 0.05m from vessel 1 is: 1.2 atm\n",
+ "(d)\n",
+ "Net or total mass flux: -1.340E-05 kmol/m^2.s\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Equimolar counterdiffusion\n",
+ "\n",
+ "from math import pi\n",
+ "#given data\n",
+ "#part (a)\n",
+ "Dab = 0.23e-4*0.5*(293.0/316)**1.75 #in m^2/s\n",
+ "pA1 = 2*0.8 #in atm\n",
+ "pA2 = 2*0.2 #in atm\n",
+ "l = 0.15 #in m\n",
+ "R = 0.0821 #in m^3.atm./K.kmol\n",
+ "T = 293 #in K\n",
+ "Ma = 28\n",
+ "Mb = 32\n",
+ "Na = Dab*(pA1-pA2)/(R*T*l) #in kmol/m^2.s\n",
+ "area = pi/4*(0.05)**2 #in m^2\n",
+ "rate = area*Na\n",
+ "print '(a)'\n",
+ "print 'The steady-state flux is: %0.2E'%Na,'kmol/m^2.s'\n",
+ "print 'The rate of transport of N2 from vessel 1 to 2: %0.1E'%rate,'kmol/s'\n",
+ "\n",
+ "#part (b)\n",
+ "Nb = -Na\n",
+ "print '(b)'\n",
+ "print 'The flux and the rate of transport of oxygen is: %0.2E'%Nb,'kmol/m^2.s'\n",
+ "\n",
+ "#part (c)\n",
+ "#let dpA/dz = ppg\n",
+ "dz = 0.05 #in m\n",
+ "ppg = (pA2 - pA1)/l #in atm/m\n",
+ "pA = pA1 + (ppg)*dz #in atm\n",
+ "print '(c)'\n",
+ "print 'Partial pressure at a point 0.05m from vessel 1 is: %0.1f'%pA,'atm'\n",
+ "\n",
+ "#part (d)\n",
+ "nt = Ma*Na + Mb*Nb\n",
+ "print '(d)'\n",
+ "print 'Net or total mass flux: %0.3E'%nt,'kmol/m^2.s'\n",
+ "#Answers may vary due to round off errors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.7 pgno:25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Methanol flux: 4.64e-05 kmol/m^2.s\n",
+ "Water flux: -4.06e-05 kmol/m^2.s\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Non-equimolar counterdiffusion in distillation of a binary mixture\n",
+ "\n",
+ "from math import log\n",
+ "#given data\n",
+ "Ha = 274.6*32 #molar latent heat of methanol(a)\n",
+ "Hb = 557.7*18 #molar latent heat of water(b)\n",
+ "yAl = 0.76 #mole fraction of methanol in the vapour\n",
+ "yAo = 0.825 #mole fraction of methanol in the vapour at the liquid-vapour interface\n",
+ "P = 1 #in atm\n",
+ "l = 1e-3 #in m\n",
+ "T =344.2 #in K\n",
+ "R = 0.0821 #m^3.atm./K.kmol\n",
+ "Dab = 1.816e-5 #in m^2/s\n",
+ "Na = Dab*P*log((1-0.1247*yAl)/(1-0.1247*yAo))/(0.1247*R*T*l)\n",
+ "print 'Methanol flux: %0.2e'%Na,'kmol/m^2.s'\n",
+ "Nb = -(Ha/Hb)*Na\n",
+ "print 'Water flux: %0.2e'%Nb,'kmol/m^2.s'\n",
+ "#Answers may vary due to round off errors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.8 pgno:27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Value of pA1 is 0.937 atm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Equimolar counterdiffusion in an interconnected system\n",
+ "\n",
+ "#given values\n",
+ "from math import exp\n",
+ "V1 = 3000 #in cm^3\n",
+ "V2 = 4000 #in cm^3\n",
+ "Dab = 0.23 #in cm^2/s\n",
+ "Dba = 0.23 #in cm^2/s\n",
+ "l1 = 4 #in cm\n",
+ "d1 = 0.5 #in cm\n",
+ "l2 = 2 #in cm\n",
+ "d2 = 0.3 #in cm\n",
+ "pA3 = 1 #in atm\n",
+ "#unknowns\n",
+ "# pA1 and pA2\n",
+ "# dpA1bydt = (Dab/V1*l1)*((pA1)-(pA2))*((math.pi*(d1**2))/4)\n",
+ "#on integrating using Laplace trandformation\n",
+ "# initial conditions\n",
+ "t=18000 #in seconds\n",
+ "pA1 = 1-0.57*(exp((-1.005)*(10**(-6))*t)-exp((-7.615)*(10**(-6))*t))\n",
+ "print 'Value of pA1 is %0.3f'%pA1,'atm'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 2.10 pgno:34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Value of flux of water vapour: 2.96E-05 kmol/m^2.s\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Diffusion of only one component in a three-component mixture\n",
+ "\n",
+ "#given values\n",
+ "from math import log\n",
+ "y1l = 0 #mol fraction of dry air\n",
+ "y10 = (17.53/760) #mol fraction of water\n",
+ "l = 1.5 #in mm\n",
+ "C = 0.0409 #in kmol/m^3 : calculated by P/RT\n",
+ "D12 = 0.923 #Diffusivity of hydrogen over water\n",
+ "D13 = 0.267 #Diffusivity of oxygen over water\n",
+ "y2 = 0.6 #mole fraction of hydrogen\n",
+ "y3 = 0.4 #mole fraction of oxygen\n",
+ "D1m = 1/((y2/D12)+(y3/D13)) #calculating mean diffusivity\n",
+ "Ni = (D1m*C*1000/(l*10000))*log((1-y1l)/(1-y10))\n",
+ "print 'Value of flux of water vapour: %0.2E'%Ni,'kmol/m^2.s'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.11 pgno:35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Flux of ethane 4.804E-05 gmol/cm^2.s\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Multicomponent diffusion\n",
+ "\n",
+ "from math import log\n",
+ "#given data\n",
+ "y1 = 0.4 #mole fraction of ethane(1)\n",
+ "y2 = 0.3 #mole fraction of ethylene(2)\n",
+ "y3 = 0.3 #mole fraction of hydrogen(3)\n",
+ "#calculating D13\n",
+ "#The Lennard-Jones parameters are\n",
+ "sigma1 = 4.443 #in angstrom\n",
+ "sigma2 = 4.163 #in angstrom\n",
+ "sigma3 = 2.827 #in angstrom\n",
+ "e1byk = 215.7\n",
+ "e2byk = 224.7\n",
+ "e3byk = 59.7\n",
+ "sigma13 = (sigma1 + sigma3)/2 #in angstrom\n",
+ "e13byk = (e1byk*e3byk)**0.5\n",
+ "kTbye13 = 993/113.5\n",
+ "ohmD13 = 0.76 #from collision integral table\n",
+ "D13 = ((0.001858)*(993**1.5)*((1.0/30)+(1.0/2))**0.5)/((2)*(sigma13**2)*(ohmD13))\n",
+ "#calculating D23\n",
+ "sigma23 = (sigma2+sigma3)/2\n",
+ "kTbye23 = ((993/224.7)*(993/59.7))*0.5\n",
+ "ohmD23 = 0.762\n",
+ "D23 = (0.001858*(993**1.5)*((1.0/28)+(1.0/2))**0.5)/(2*(sigma23**2)*ohmD23)\n",
+ "D = (D13+D23)/2 #in cm^2/s\n",
+ "l = 0.15 #in cm\n",
+ "#at z=0 (bulk gas)\n",
+ "y10 = 0.6\n",
+ "y20 = 0.2\n",
+ "y30 = 0.2\n",
+ "#at z=l (catalyst surface)\n",
+ "y1l = 0.4\n",
+ "y2l = 0.3\n",
+ "y3l = 0.3\n",
+ "C = 2.0/(82.1*993) #calculated by P/RT\n",
+ "N1 = (D*C/l)*log((y10+y20)/(y1l+y2l))\n",
+ "print 'Flux of ethane %0.3E'%N1,'gmol/cm^2.s'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.12 pgno:43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The liquid-film thickness is: 0.0004 m\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Liquid-phase diffusion\n",
+ "\n",
+ "#given data\n",
+ "from math import pi\n",
+ "rc = 5e-4 #in m\n",
+ "D = 7e-10 #in m^2/s\n",
+ "Cab = 1 #in kmol/m^3\n",
+ "Na = 3.15e-6 #in kmol/m^2.s\n",
+ "W = 4*pi*(rc**2)*Na #the rate of reaction\n",
+ "#let (rc+delta)/delta = 1\n",
+ "w1 = 4*pi*D*Cab*rc*1 #flux of the reactant to the surface of the catalyst\n",
+ "rcplusdelta = W/w1\n",
+ "delta = rc/(rcplusdelta-1) #stagnant liquid-film thickness \n",
+ "print 'The liquid-film thickness is: ',delta,'m'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.13 pgno:46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Tortuosity factor is: 2.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Diffusivity determination--diaphragm cell\n",
+ "\n",
+ "#given data\n",
+ "from math import log\n",
+ "from math import pi\n",
+ "V1 = 60.2 #in cm^3; volume of compartment 1\n",
+ "V2 = 59.3 #volume of compartment 2 in cm^3\n",
+ "Ca1i = 0.3 #initial concentration of KCl in compartment 1\n",
+ "Ca2i = 0 #initial concentration of KCl in compartment 2\n",
+ "Ca1f = 0.215 #final concentration of KCl in compartment 1\n",
+ "Ca2f = 0.0863 #final concentration of KCl in compartment 2\n",
+ "D = 1.51e-5 #diffusivity of KCl in cm^2/s\n",
+ "tf = 55.2*3600 #time of the experiment in s\n",
+ "#calcutaling cell constant\n",
+ "beta = (1/(D*tf))*log((Ca1i - Ca2i)/(Ca1f - Ca2f))\n",
+ "#diffusion of propionic acid\n",
+ "Cpa1i = 0.4 #initial concentration of propionic acid in compartment 1\n",
+ "Cpa2i = 0 #initial concentration of propionic acid in compartment 2\n",
+ "Cpa1f = 0.32 #final concentration of propionic acid in compartment 1\n",
+ "Cpa2f = 0.0812 #final concentration of propionic acid in compartment 2 by mass balance\n",
+ "tfp = 56.4*3600 #time for the experiment\n",
+ "Dp = (1/(beta*tfp))*log((Cpa1i-Cpa2i)/(Cpa1f-Cpa2f)) #diffusivity of the propionic acid\n",
+ "#calculating tortusity factor\n",
+ "A= (pi/4)*(3.5**2) #area of the diaphragm\n",
+ "epsilon = 0.39 #average porosity of the diaphragm\n",
+ "l = 0.18 #thickness of hte diaphragm\n",
+ "tou = (A*epsilon/(beta*l))*(1/V1 + 1/V2)\n",
+ "print 'Tortuosity factor is: ',round(tou,1)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-3-Convective_Mass_Transfer_and_Mass_Transfer_Coefficient_1.ipynb b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-3-Convective_Mass_Transfer_and_Mass_Transfer_Coefficient_1.ipynb
new file mode 100644
index 00000000..4e0cc29f
--- /dev/null
+++ b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-3-Convective_Mass_Transfer_and_Mass_Transfer_Coefficient_1.ipynb
@@ -0,0 +1,284 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 3 : Convective Mass Transfer and Mass Transfer Coefficient"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2 Page no. 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a)\n",
+ "(i) Mass transfer-coefficient is 2.161E-03 kmol/(m^2.s.dy)\n",
+ "(ii) Mass transfer-coefficient is 2.003E-03 kmol/(m^2.s.dy)\n",
+ "(iii) Mass transfer-coefficient is 0.0449 m/s\n",
+ "Coefficient of Fg: 0.0021 kmol/m^2.s\n",
+ "(b)\n",
+ "(i) kG: 2.400E-06 lbmol/s.ft^2.psi\n",
+ "(ii) kG: 1.344 lbmol/h.ft^2.atm\n",
+ "(iii) kG: 4.503E-02 lbmol/h.ft^2.inchHg\n",
+ "Thickness of the stagnant film is: 2.4E-04 m\n"
+ ]
+ }
+ ],
+ "source": [
+ "#given data\n",
+ "from math import log\n",
+ "P = 900.3 #pressure in mmHg\n",
+ "R = 0.08317 #m^3.bar/kmol.k\n",
+ "T = 300 #in K\n",
+ "kG = 2.4E-6 #gas phase mass transfer coefficient\n",
+ "ky = P*kG\n",
+ "print '(a)'\n",
+ "print '(i) Mass transfer-coefficient is %0.3E'%ky,'kmol/(m^2.s.dy)'\n",
+ "pA1 = 0.0877 #vapor pressure of alochol in bar\n",
+ "pB1 = (1.2 - 0.0877)*760/1.013 #in mmHg\n",
+ "pA2 = 0\n",
+ "pB2 = 1.2*760/1.013 #in mmHg\n",
+ "kY = kG*pB1*pB2/P\n",
+ "print '(ii) Mass transfer-coefficient is %0.3E'%kY,'kmol/(m^2.s.dy)'\n",
+ "kc = kG*(760/1.013)*R*T\n",
+ "print '(iii) Mass transfer-coefficient is %0.4f'%kc,'m/s'\n",
+ "Fg = kG*(pB2-pB1)/(log(pB2/pB1))\n",
+ "print 'Coefficient of Fg: %0.4f'%Fg,'kmol/m^2.s'\n",
+ "print '(b)'\n",
+ "kGo = kG\n",
+ "kG1 = kG*2.2046*51.7/10.764\n",
+ "print '(i) kG: %0.3E'%kG,'lbmol/s.ft^2.psi'\n",
+ "kG2 = kG1*3600*14.69\n",
+ "print '(ii) kG: ',round(kG2,3),'lbmol/h.ft^2.atm'\n",
+ "kG3 = kG*2.2046*3600/(10.764*0.0393)\n",
+ "print '(iii) kG: %0.3E'%kG3,'lbmol/h.ft^2.inchHg'\n",
+ "pB2 = 1.2\n",
+ "pB1 = 1.2 - 0.0877\n",
+ "P = 1.2\n",
+ "Dab = 0.102*(1.013/1.185)*((300.0/273)**1.75)*1e-4 #Diffusivity value at 1.2bar and 300K\n",
+ "pBM = (pB2-pB1)/log(pB2/pB1)\n",
+ "kG4 = kG*(760/1.013)\n",
+ "d = Dab*P/(kG4*R*T*pBM)\n",
+ "print 'Thickness of the stagnant film is: %0.1E'%d,'m'\n",
+ "#Answers may vary due to round off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.5 Page no. 99"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Diffusivity of H2S in water at 25C Dab: 1.17E-09 m^2/s\n"
+ ]
+ }
+ ],
+ "source": [
+ "#given data\n",
+ "Q = 13.2e-6 #liquid flow rate (pi*r^2*v)\n",
+ "l = 0.05 #length of the jet\n",
+ "W = 34 #Molecular weight of H2S\n",
+ "P = 1.03 #total pressure in the jet chamber\n",
+ "Cai = P*(0.1136) #kmol/m^3\n",
+ "Cab = 0\n",
+ "Rate = (4.42e-7)/W #in m^3/s\n",
+ "#let Dab = 1\n",
+ "Dab = 1\n",
+ "rate = 4*((Dab*Q*l)**0.5)*Cai\n",
+ "Dab = ((Rate/(4*Cai))**2)/(Q*l)\n",
+ "print 'Diffusivity of H2S in water at 25C Dab: %0.2E m^2/s'%Dab"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.6 Page no. 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rate of absorption of CO2 from the bubbles per minute: 4.760E-05 gmol/min\n"
+ ]
+ }
+ ],
+ "source": [
+ "#given data\n",
+ "from math import pi\n",
+ "tc = 1.0/20 #contact time of a liquid element with a gas bubble db/vb\n",
+ "Dab = 2.19e-5\n",
+ "kL = 2*(Dab/(pi*tc))**0.5 #Mass transfer coefficient\n",
+ "tr = 0.3/0.2 #residence time of a single bubble\n",
+ "r = 1.0/2 #radius of the bubble\n",
+ "vol = (4.0/3)*pi*(r**3) #volume of the bubble\n",
+ "area = 4*pi*(r**2) #surface area of the bubble\n",
+ "Cs = 1.493e-5 #solubility of CO2 water\n",
+ "Cb = 0\n",
+ "Amt = kL*area*(Cs-Cb)*tr #amount of CO2 absorbed from a single bubble during its residence time\n",
+ "Bub = 15/vol\n",
+ "rate = Amt*Bub\n",
+ "print 'Rate of absorption of CO2 from the bubbles per minute: %0.3E gmol/min'%rate\n",
+ "#Answer vary due to round off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.7 Page no.101"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a)\n",
+ "Film thickness: 2.16e-05 m\n",
+ "(b)\n",
+ "The contact time: 0.308 s\n",
+ "(c)\n",
+ "The fractional rate of surface renewal: 4.13 per sec\n"
+ ]
+ }
+ ],
+ "source": [
+ "#given data\n",
+ "from math import pi\n",
+ "p = 2 #in atm\n",
+ "x = 2.0/1640 #mole fraction\n",
+ "W = 44*x + 18*(1-x) #Molecular wieght of the solution\n",
+ "sol = 997.0/W #Moles of solution per m^3\n",
+ "CO2 = 55.4*x #Moles of CO2 per m^3 solution\n",
+ "Cco = 2.3/44 #Concentration of the carbonated solution(kmol/m^3)\n",
+ "RoW = 1.0/(60*1000) #Volume rate of input of water(m^3/s)\n",
+ "RoA = RoW*Cco #rate of absorption of CO2 in the vessel(kmol/s)\n",
+ "V = 8e-3 #volume of the gas-liquid dispersion in the vessel(m^3)\n",
+ "a = 80 #specific interfacial area of contact between the dispersed gas snd the liquid(m^2/m^3)\n",
+ "#let kL = 1\n",
+ "kL = 1.0\n",
+ "Dab = 1.92e-9 #diffusivity of CO2\n",
+ "rateOA = V*a*(CO2-Cco)\n",
+ "kL = RoA/rateOA\n",
+ "#(a) part\n",
+ "delta = Dab/kL\n",
+ "print '(a)'\n",
+ "print 'Film thickness: %0.2e m'%delta\n",
+ "#(b) part\n",
+ "tc = (4*Dab)/(pi*(kL**2))\n",
+ "print '(b)'\n",
+ "print 'The contact time: %0.3f s'%tc\n",
+ "#(c) part\n",
+ "s = (kL**2)/(Dab)\n",
+ "print '(c)'\n",
+ "print 'The fractional rate of surface renewal: %0.2f per sec'%s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.8 Page no. 104"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The effluent concentration: 1 kg/m^3\n"
+ ]
+ }
+ ],
+ "source": [
+ "#given data\n",
+ "from math import exp\n",
+ "Cb1 = 0 #concentration of the benzoic acid at the inlet\n",
+ "Cs = 3.01 #concentration of the liquid in contact with the surface of a sphere\n",
+ "dp = 0.8 #diameter of the sphere\n",
+ "vo = 2.2 #superficial liquid velocity\n",
+ "nu = 0.0095 #kinematic viscosity\n",
+ "Dab = 1e-5 #diffusivity of the solute\n",
+ "e = 0.4 #bed voidage\n",
+ "h = 70 #height of the column\n",
+ "QbyA = 2.2 #liquid flow rate per unit area of the bed\n",
+ "Re = (dp*vo)/nu #Reynolds number\n",
+ "Sc = nu/Dab #Schmidt number\n",
+ "ejd = 0.25*((Re)**(-0.31)) #epsilon*jD\n",
+ "Sh = ejd*Re*(Sc**(1.0/3))/e #Sherwood number\n",
+ "kL = Sh*Dab/(dp)\n",
+ "a = 6*(1-e)/dp #specific interfacial velocity\n",
+ "Cb2 = Cs-((Cs)/exp(kL*a*h/(QbyA)))\n",
+ "print 'The effluent concentration: %i kg/m^3'%round(Cb2,1)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-4-Interphase_Mass_Transfer_1.ipynb b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-4-Interphase_Mass_Transfer_1.ipynb
new file mode 100644
index 00000000..9b2f69b0
--- /dev/null
+++ b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-4-Interphase_Mass_Transfer_1.ipynb
@@ -0,0 +1,566 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 4 : Interphase Mass Transfer"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.1 Page no. 133"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) The interfacial concentrations are\n",
+ " xi = 0.03044 and yi = 0.03653\n",
+ "\n",
+ "(b) The overall gas-phase coefficient, Ky = 2.502 kmol/(h)(m^2)(dy)\n",
+ " The overall liquid-phase coefficients, Kx = 3.002 kmol/(h)(m^2)(dy)\n",
+ "\n",
+ "(c) The local mass flux, Na = 0.025 kmol/(h)(m^2)\n",
+ " Fraction of the total mass transfer resistance in the gas-phase = 0.347\n",
+ " Fraction of the total mass transfer resistance in the liquid-phase = 0.653\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Overall coefficient and driving force\n",
+ "\n",
+ "yb = 0.04 #bulk concentration of A in the gas-phase\n",
+ "xbst = yb/1.2 #xb star(equilibrium value)\n",
+ "xb = 0.025 #actual concentration of the solute in the bulk liquid\n",
+ "m = 1.2 #slope of the equilibrium line\n",
+ "#on gas phase basis\n",
+ "diff1 = 0.04 - (1.2*xb)\n",
+ "#on liquid phase basis\n",
+ "diff2 = xbst - xb\n",
+ "\n",
+ "ky = 7.2 #local individual mass transfer coefficients\n",
+ "kx = 4.6\n",
+ "xi = 0.03044 #interfacial concentration\n",
+ "yi = 1.2*xi\n",
+ "\n",
+ "Ky = 1.0/((1.0/ky)+(m/kx)) #overall gas-phase coefficient\n",
+ "Kx = 1.0/((1.0/(m*ky) + (1.0/kx))) #overall liquid-phase coefficient\n",
+ "Na = ky*(yb - yi)\n",
+ "Mtrg = (1.0/ky)/(1.0/Ky) #fraction of the total mass transfer resistance in the gas-phase\n",
+ "Mtrl = (1.0/kx)/(1.0/Kx) #fraction of the total mass transfer resistance in the liquid-phase\n",
+ "print '(a) The interfacial concentrations are'\n",
+ "print ' xi = %0.5f'%xi,' and yi = %0.5f'%yi\n",
+ "print\n",
+ "print '(b) The overall gas-phase coefficient, Ky = %0.3f'%Ky,'kmol/(h)(m^2)(dy)'\n",
+ "print ' The overall liquid-phase coefficients, Kx = %0.3f'%Kx,'kmol/(h)(m^2)(dy)'\n",
+ "print\n",
+ "print '(c) The local mass flux, Na = %0.3f'%Na,'kmol/(h)(m^2)'\n",
+ "print ' Fraction of the total mass transfer resistance in the gas-phase = %0.3f'%Mtrg\n",
+ "print ' Fraction of the total mass transfer resistance in the liquid-phase = %0.3f'%Mtrl"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.2 Page no. 134"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Given mass transfer flux is 1.2 kmol/(h)(m^2) and Theorectical flux is 1.417\n",
+ "The actual overall coefficient is 21.43 kmol/(h)(m^2)(dy)\n",
+ "The interfacial resistance is 0.00714 (h)(m^2)(dy)/kmol\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Interfacial resistance to mass transfer\n",
+ "\n",
+ "#local individual mass transfer coefficients\n",
+ "ky = 60\n",
+ "kx = 35\n",
+ "#slope of the equilibrium line\n",
+ "m = 0.8\n",
+ "#local mass transfer flux\n",
+ "Nag = 1.2\n",
+ "yb = 0.08\n",
+ "xb = 0.03\n",
+ "ybst = m*xb\n",
+ "Ky = 1.0/((1.0/ky)+(m/kx)) #overall mass transfer coefficient\n",
+ "Na = Ky*(yb - ybst) #theoretical flux\n",
+ "print 'Given mass transfer flux is %0.1f'%Nag,'kmol/(h)(m^2) and Theorectical flux is %0.3f'%Na\n",
+ "Kytrue = (Nag)/(yb - m*xb)\n",
+ "resis = (1/Kytrue) - (1/Ky)\n",
+ "print 'The actual overall coefficient is %0.2f'%Kytrue,'kmol/(h)(m^2)(dy)'\n",
+ "print 'The interfacial resistance is %0.5f'%resis,'(h)(m^2)(dy)/kmol'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.3 Page no. 134"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) Flux of the solute, Na = 0.01919kmol/(h)(m^2)\n",
+ "(b) The local flux, Na = 0.00124\n",
+ "(c) The overall liquid-phase mass transfer coefficient is, Kx = 21.55kmol/(h)(m^2)(dx)\n",
+ "(d) Individual gas-phase driving force = 0.0037 mole fraction\n",
+ " Difference of partial pressure = 0.00536 bar\n",
+ " Overall Gas-phase driving force = 0.0272\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Application to a gas-liquid system\n",
+ "\n",
+ "P = 1.45 #Total pressure\n",
+ "mp = 3.318e4 #slope of the equilibrium relation given in the terms of partial pressure\n",
+ "xs = 0.065 #mole fraction of the solute in the bulk gas\n",
+ "pb = P*xs #partial pressure of the solute A in the bulk gas\n",
+ "T = 303 #Temperature of the falling water\n",
+ "R = 0.08317 #universal gas constant\n",
+ "kc = 90.3 #gas-phase mass transfer coefficient\n",
+ "ky = P*kc/(R*T) #gas-phase mass transfer coefficient\n",
+ "xi = 0.00201 #interfacial concentration of the solute in the liquid\n",
+ "yb = xs\n",
+ "fr = 0.136 #fraction of the gas-phase resistance\n",
+ "pi = mp*xi #in mmHg\n",
+ "pi = pi*1.013/760 #in bar\n",
+ "yi = pi/P\n",
+ "m = mp/(P*(760/1.013))\n",
+ "Na = ky*(yb - yi)\n",
+ "print '(a) Flux of the solute, Na = %0.5fkmol/(h)(m^2)'%Na\n",
+ "gR = (1/ky)\n",
+ "tmR = gR/0.136\n",
+ "lR = tmR*(1-0.136)\n",
+ "kx = m/lR\n",
+ "Nanew = xi - (Na/kx)\n",
+ "print '(b) The local flux, Na = %0.5f'%Nanew\n",
+ "Kx = 1/((1/kx) + (1/(m*ky)))\n",
+ "print '(c) The overall liquid-phase mass transfer coefficient is, Kx = %0.2fkmol/(h)(m^2)(dx)'%Kx\n",
+ "deltay = yb - yi\n",
+ "deltap = P*deltay\n",
+ "deltayO = yb - m*Nanew\n",
+ "print '(d) Individual gas-phase driving force = %0.4f mole fraction'%deltay\n",
+ "print ' Difference of partial pressure = %0.5f bar'%deltap\n",
+ "print ' Overall Gas-phase driving force = %0.4f'%deltayO\n",
+ "#Answers may vary very little due to round off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 4.4 Page no. 136"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) Concentration of SO2 in the effluent solution: 1.495e-03 mole fraction\n",
+ " Liquid phase mass transfer coefficient: 25.7143 kmol/(h)(m^2)(dx)\n",
+ " The surface renewal rate is: 10.9474 per second\n",
+ "(b) New flow rate of water through the cell: 91.3 ml/min\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Mass transfer in a continuous-stirred cell\n",
+ "\n",
+ "from sympy.solvers import solve\n",
+ "from sympy import Symbol\n",
+ "Yin = 0.142/(1 - 0.142) #14.2% SO2 was in gas flow rate\n",
+ "Yout = 0.11/(1 - 0.11) #As 11% SO2 is in outlet gas at steady state\n",
+ "Qair = 0.0535 #on SO2-free basis(flow rate)\n",
+ "ABspt = Qair*(Yin - Yout) #Rate of absorption\n",
+ "Qwater = 27 #Water flow rate(in ml/min)\n",
+ "Qwater = Qwater/18 #in gmol/min\n",
+ "xb = ABspt/1.5 #bulk concentration of the liquid\n",
+ "print '(a) Concentration of SO2 in the effluent solution: %0.3e mole fraction'%xb\n",
+ "yb = 0.11 #bulk concentration of the gas-phase\n",
+ "m = 31.3 #slope of the equilibrium concentratin line\n",
+ "ybst = m*xb\n",
+ "Dab = 1.51e-5 #diffusivity of SO2 in water\n",
+ "ky = 3.8 #gas-phase mass transfer coefficient\n",
+ "ABspt = ABspt*60/1000 #in kmol/h\n",
+ "Area = 31.5/10000 #in m^2\n",
+ "Ky = ABspt/(Area*(yb-ybst)) #overall mass-transfer coefficient\n",
+ "kx = m/((1/Ky)-(1/ky))\n",
+ "print ' Liquid phase mass transfer coefficient: %0.4f kmol/(h)(m^2)(dx)'%kx\n",
+ "#to calculate surface renewal rate\n",
+ "C = 1.0/(18.0/1000) #in kmol/m^3\n",
+ "kl = kx/C\n",
+ "kl = kl*100/3600\n",
+ "s = (kl*kl)/Dab\n",
+ "print ' The surface renewal rate is: %0.4f per second'%s\n",
+ "yb=0.1\n",
+ "nABspt = Qair*(Yin - (yb/0.9))\n",
+ "var = Symbol('var')\n",
+ "ybst = solve(nABspt*0.001*60 - Ky*Area*(yb-var),var)\n",
+ "xb = ybst[0]/m\n",
+ "Q = nABspt*18/xb\n",
+ "print '(b) New flow rate of water through the cell: %0.1f ml/min'%Q\n",
+ "#Answers may vary due to round-off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.5 Page no. 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) Interfacial concentration of the phases are xi = 0.00222 and yi = 0.0157.\n",
+ "(b) Ky = 7.28\n",
+ " Kx = 41.2\n",
+ " Na = 0.065\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\ngg==\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x8f263c8>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#Graphical determination of interfacial concentration\n",
+ "\n",
+ "%matplotlib inline\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "from sympy.solvers import solve\n",
+ "from sympy import Symbol\n",
+ "#equilibrium data\n",
+ "p = [0.6,1.7,4.7,8.1,11.8,19.7,36,52,79] #partial pressure\n",
+ "g = [0.02,0.05,0.1,0.15,0.2,0.3,0.5,0.7,1.0] #g SO2 per 100g water\n",
+ "P = 4.5 #total pressure\n",
+ "kx = 80 #gas-phase mass transfer coefficients\n",
+ "ky = 15 #liquid-phase mass transfer coefficients\n",
+ "P = P*760/1.013 #in mmHg\n",
+ "x = []\n",
+ "y = []\n",
+ "i = 0\n",
+ "for i in range(0,len(p)):\n",
+ " y.append(p[i]/P)\n",
+ "for i in range(0,len(g)):\n",
+ " x.append(((g[i]/64)/((g[i]/64)+(100/18))))\n",
+ "fig = plt.figure()\n",
+ "ax = fig.add_subplot(111)\n",
+ "plt.plot(x,y,label='Exact plot')\n",
+ "#Point P\n",
+ "xb = 0.0014 #the bulk concentration of two phases at the given locations\n",
+ "yb = 0.02\n",
+ "slope = -80.0/15\n",
+ "z = np.polyfit(x,y,2)\n",
+ "f = np.poly1d(z)\n",
+ "#calculate new x's and y's\n",
+ "x_new = np.linspace(x[0],x[-1],50)\n",
+ "y_new = f(x_new)\n",
+ "plt.plot(x_new,y_new,'r',label='After cuvefitting')\n",
+ "#finding the intersection point\n",
+ "xs = Symbol('xs')\n",
+ "x_int = solve(z[0]*xs**2 + z[1]*xs + z[2] + 5.3*xs - 0.0275,xs)\n",
+ "y_int = slope*x_int[1] + 0.0275\n",
+ "plt.plot(xb,yb,'bo')\n",
+ "plt.plot(x_int[1],y_int,'bo')\n",
+ "plt.plot((xb,x_int[1]),(yb,y_int),'b-')\n",
+ "plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)\n",
+ "plt.xlabel('mol fraction \"x\"',fontsize=16)\n",
+ "plt.ylabel('mol fraction \"y\"',fontsize=16)\n",
+ "plt.title('Plot of equilibrium line and calculating interfacial concentration',fontsize=14)\n",
+ "xy=(xb,yb)\n",
+ "ax.annotate('(%s, %s)' % xy, xy=xy, textcoords='data')\n",
+ "xint = '%0.5f'%x_int[1]\n",
+ "yint = '%0.4f'%y_int\n",
+ "xy=(xint,yint)\n",
+ "ax.annotate('(%s, %s)' % xy, xy=xy, textcoords='data')\n",
+ "print '(a) Interfacial concentration of the phases are xi = %0.5f'%x_int[1],' and yi = %0.4f.'%y_int\n",
+ "m = 5.65 #taking the equilibrium line almost linear near interfacial concentration\n",
+ "Ky = 1.0/((1.0/15)+(m/80))\n",
+ "Kx = 1.0/((1.0/(m*15))+(1.0/80))\n",
+ "Na = ky*(yb-y_int)\n",
+ "print '(b) Ky = %0.2f'%Ky\n",
+ "print ' Kx = %0.1f'%Kx\n",
+ "print ' Na = %0.3f'%Na\n",
+ "#Answers may vary due to round-off errors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.6 Page no. 148"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 113,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Operating line is Yn+1 = 1.455Xn + 0.001360\n",
+ "Number of real trays = 59\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Number of trays for countercurrent contact\n",
+ "\n",
+ "from math import log\n",
+ "from sympy import Symbol\n",
+ "F_C = 0.12 #feed concentration\n",
+ "Gs = 6000*(1-F_C) #feed rate on solute free basis\n",
+ "s = 6000*F_C #mass of solute entering\n",
+ "Yn = F_C/(1-F_C) #feed concentration\n",
+ "Y1 = 0.00136 #exit concentration\n",
+ "Xo = 0 #entering solvent does not have any solute in it\n",
+ "Ls = 7685 #solvent input rate\n",
+ "#doing mass balance\n",
+ "X1 = Gs*(Yn - Y1)/Ls #exit concentration of solute\n",
+ "Yn = Symbol('Yn+1')\n",
+ "sl = (Ls/Gs)\n",
+ "print 'Operating line is ',Yn,' = %0.3fXn'%sl,' + %f'%Y1\n",
+ "#Since the equilibrium line and operating lines are linear\n",
+ "#Therefore we can calculate the number of trays using Kremser equation\n",
+ "Yn = F_C/(1-F_C)\n",
+ "alpha = 1.32 #slope of the equilibrium line \n",
+ "A = Ls/(alpha*Gs) #Absorption factor\n",
+ "#using Kremser equation\n",
+ "N = log(((Yn-(alpha*Xo))/(Y1-(alpha*Xo)))*(1-(1.0/A))+(1.0/A))/log(A)\n",
+ "Nom = N/0.4\n",
+ "print 'Number of real trays = %d'%Nom"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 4.7 Page no. 151"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) The test data fit the Freundlich adsorption isotherm in the form Y = aX^B\n",
+ " After fitting the data alpha is 0.184 and beta is 1.468\n",
+ "(b) Amount of adsorbent required 609.545 kg\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Batch adsorption from a solution\n",
+ "\n",
+ "%matplotlib inline\n",
+ "from math import log\n",
+ "from math import exp\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "cl = [15,40,60,100,135,210,325,450] #grams of clay used\n",
+ "pA = [9.1,7.81,6.93,5.66,4.76,3.38,2.44,1.48] #% A in the solution in equilibrium\n",
+ "i=0\n",
+ "X = []\n",
+ "Y = []\n",
+ "for i in range(0,len(cl)):\n",
+ " X.append(log((100-((90000/(100-pA[i]))-900))/cl[i]))\n",
+ " Y.append(log(((90000/(100-pA[i]))-900)/900))\n",
+ "#fitting the log-log data with degree 1\n",
+ "z = np.polyfit(X,Y,1)\n",
+ "f = np.poly1d(z)\n",
+ "print '(a) The test data fit the Freundlich adsorption isotherm in the form Y = aX^B'\n",
+ "print ' After fitting the data alpha is %0.3f'%exp(z[1]),' and beta is %0.3f'%z[0]\n",
+ "ads = 90 #amount of solute to be removed(in kg)\n",
+ "solv = 900 #amount of water remained(in kg)\n",
+ "Y = 10.0/solv\n",
+ "#putting in Freundlich adsorption isotherm\n",
+ "m = 90.0/(Y/exp(z[1]))**(1/z[0])\n",
+ "print '(b) Amount of adsorbent required %0.3f kg'%m\n",
+ "#Answers may vary due to round-off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.9 Page no. 154"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) Amount of solvent B required in single stage contact is 4306.7\n",
+ "(b) The total amount of extracting solvent required is 1166 kg\n",
+ "(c) Required amount of solvent is 679.03 kg\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Multistage crosscurrent contact\n",
+ "\n",
+ "from sympy import Symbol\n",
+ "from sympy.solvers import solve\n",
+ "from math import log\n",
+ "Ls = 1000*(1-0.15) #amount of the carrier phase in the feed\n",
+ "Xo = 15.0/85 #feed concentration\n",
+ "e_con = 0.15*0.05/0.85 #exit concentration\n",
+ "Y1 = 3.75*e_con #equilibrium concentration\n",
+ "Yo = 0\n",
+ "Gs = 850*(Xo-e_con)/Y1\n",
+ "print '(a) Amount of solvent B required in single stage contact is %0.1f'%Gs\n",
+ "#an ideal three-stage crosscurrent cascade\n",
+ "#X1,X2,X3 are the intermediate concentrations\n",
+ "Gsn = Symbol('Gsn')\n",
+ "X1 = Symbol('X1')\n",
+ "X1 = solve(850*(0.1765-X1)-Gsn*3.75*X1,X1)\n",
+ "X2 = Symbol('X2')\n",
+ "X2 = solve(850*(X2-0.00882)-Gsn*3.75*0.00882,X2)\n",
+ "Gsn = solve(850*(X1[0]-X2[0])-Gsn*3.75*X2[0],Gsn)\n",
+ "nGs = 3*Gsn[0] #total amount of solvent\n",
+ "print '(b) The total amount of extracting solvent required is %0.0f kg'%nGs\n",
+ "#using material balance for nth stage and then integrating from X= Xo to X = Xf = 0.00882\n",
+ "Gs = (850/3.75)*log(Xo/e_con)\n",
+ "print '(c) Required amount of solvent is %0.2f kg'%Gs\n",
+ "#Answers may vary due to round-off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.11 Page no. 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Flux of the drug, Na = 2.72e-03 mg/cm^2.h\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Rate of drug delivery\n",
+ "\n",
+ "Cml = 0.513 #solubility of progesterone in the polymer(mg/cm^3)\n",
+ "beta = 0.022 #partition coefficient\n",
+ "Clb = 0 #drug concentration in the body fluid\n",
+ "Dm = 5.94e-3 #diffusivity of the drug in the polymer(in cm^2/h)\n",
+ "Dl = 2.08e-3 #diffudivity of the drug in the body(cm^2/h)\n",
+ "lm = 0.08 #thickness of the silicone membrane(cm)\n",
+ "dl = 0.008 #thickness of the diffusion fluid layer(cm)\n",
+ "Na = (beta*Cml - Clb)/((beta*lm/Dm)+(dl/Dl))\n",
+ "print 'Flux of the drug, Na = %0.2e mg/cm^2.h'%Na"
+ ]
+ }
+ ],
+ "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/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-5-Gas-Liquid_Contacting_Equipment_1.ipynb b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-5-Gas-Liquid_Contacting_Equipment_1.ipynb
new file mode 100644
index 00000000..4f25408a
--- /dev/null
+++ b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/Chapter-5-Gas-Liquid_Contacting_Equipment_1.ipynb
@@ -0,0 +1,259 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 5 Gas-Liquid Contacting Equipment"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 5.1 Page no. 201"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(a) Tower diameter by Fair's method is 6.42 ft\n",
+ " Flooding velocity by Fair's method is 5 ft\n",
+ " Flooding velocity by Kister ans Haas method is 4.86 ft/s\n",
+ " It is very close that is obtained by Fairs method and is acceptable\n",
+ "(b) Downcomer area = 1.767 ft^2 and downcomer liquid velocity = 0.105 ft/s\n",
+ " These are acceptable values. So we keep the revised column diameter at Dc = 6.12 ft\n",
+ "(c) Number of holes = 3004 placed on a triangular pitch\n",
+ "(d) Select an outlet weir height of hw = 2 inches on the tray\n",
+ "(e) Dry tray pressure drop, hd = 1.75 inches of liquid\n",
+ " how = 0.92 inch\n",
+ " pressure drop for flow of the vapour through the liquid\n",
+ " head loss for liquid flow below the downcomer flow, had = 0.85 inch\n",
+ " total pressure drop = 7.27 inch of liquid\n",
+ " The rate of entrainment is 0.0357 mol per mol gross downflow\n",
+ " The corresponding vapour velocity at the hole at weeping is 22.5 ft/s\n",
+ "Total column height = 60 ft\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Design of a sieve tray\n",
+ "\n",
+ "from math import pi\n",
+ "from math import sqrt\n",
+ "tL = 14100.0 #top liquid rate(kg/h)\n",
+ "bL = 15300.0 #Bottom liquid rate(kg/h)\n",
+ "tG = 23300.0 #top vapour rate(kg/h)\n",
+ "bG = 24500.0 #Bottom vapour rate(kg/h)\n",
+ "phoL = 810.0 #liquid density(kg/m^3)\n",
+ "phoG = 2.65 #average vapour density(kg/m^3)\n",
+ "sig = 20.5 #liquid surface tension(dyne/cm)\n",
+ "T = 82.0 #Temperature\n",
+ "p = 18.0 #average pressure at the column top(psia)\n",
+ "#Fair's method\n",
+ "Flv = (bL/bG)*(phoG/phoL)**(0.5) #Flow parameter\n",
+ "Csb = 0.285 #Souders-Brown flooding constant\n",
+ "usfl = Csb*((20/sig)**0.2)*(((50.4-0.165)/(0.165))**0.5) #flooding velocity\n",
+ "us = 5*0.7 #operating velocity when operating velocity is 70% of flooding velocity\n",
+ "Vfl = (bG/phoG)*35.315 #Volumetric flow rate of the vapour\n",
+ "Aa = Vfl/(us*3600)\n",
+ "fd = 0.2 #taking fractional downcomer area\n",
+ "At = Aa/(1-fd) #Tower cross-section\n",
+ "Dc = (4*32.4/pi)**(0.5) #Tower diameter\n",
+ "print \"(a) Tower diameter by Fair's method is %0.2f ft\"%Dc\n",
+ "print \" Flooding velocity by Fair's method is %0.0f ft\"%usfl\n",
+ "\n",
+ "#Kister and Haas method\n",
+ "dh = 3.0/8 #hole diameter\n",
+ "Af = 0.1 #fractional hole area on the tray\n",
+ "Dc = 6\n",
+ "lw = 0.727*Dc\n",
+ "L = bL/(0.81*3.78*60) #Liquid rate(gpm)\n",
+ "Ql = 83.3/(lw*12) #gpm per inch\n",
+ "fh = 0.1\n",
+ "hctw = (0.29*(0.1**-0.791)*(dh**0.833))/(1+(0.0036*(1.6**-0.59)*(0.1**-1.79)))\n",
+ "n = 0.0231*(dh/0.1)\n",
+ "hct = hctw*(62.2/50.4)**(0.5*(1-0.0866))\n",
+ "Csb = 0.144*((dh*dh*20.5/50.4)**0.125)*((0.165/50.4)**0.1)*((18/0.749)**0.5)\n",
+ "usfl = Csb*((50.4-0.165)/0.165)**0.5\n",
+ "print ' Flooding velocity by Kister ans Haas method is %0.2f ft/s'%usfl\n",
+ "print ' It is very close that is obtained by Fairs method and is acceptable'\n",
+ "#(b)Check of the estimated downcomer area\n",
+ "area = 3.38 #Estimated downcomer area\n",
+ "liq_f = 15300*35.315/(810*3600) #The clear liquid flow rate\n",
+ "liq_v = liq_f*area #The downcomer liquid velocity\n",
+ "d_vol = area*18/12 #Downcomer volume\n",
+ "res_t = d_vol/liq_f #Residence time\n",
+ "n_ar = Aa/(1-(2*0.06)) #Revised tower cross-section\n",
+ "Dc = (4*n_ar/pi)**0.5 #Tower diameter\n",
+ "d_area = n_ar*0.06 #Downcomer area\n",
+ "lw = 3.75 #Weir length\n",
+ "d_liqv = liq_f/d_area #downcomer liquid velocity\n",
+ "print '(b) Downcomer area = %0.3f ft^2'%d_area,' and downcomer liquid velocity = %0.3f ft/s'%d_liqv\n",
+ "print ' These are acceptable values. So we keep the revised column diameter at Dc = %0.2f ft'%Dc\n",
+ "#(c)Effective bubbling area and layout of the holes\n",
+ "eff_area = Aa-3 #effective bubbling area\n",
+ "frac_area = 0.905*(1.0/3)*(1.0/3)\n",
+ "tot_harea = eff_area*frac_area\n",
+ "n_holes = tot_harea/((pi/4)*((3.0/96)**2))\n",
+ "print '(c) Number of holes = %0.0f placed on a triangular pitch'%n_holes\n",
+ "#(d)Wier height\n",
+ "hw = 2\n",
+ "print '(d) Select an outlet weir height of hw = %0.0f inches on the tray'%hw\n",
+ "#(e)Pressure drop calculation\n",
+ "uh = Vfl/(tot_harea*3600) #Vapour velocity through the holes\n",
+ "thick = 3.0/16 #select a tray thickness\n",
+ "thbyD = thick/(3.0/8) #tray thickness/hole dia\n",
+ "Co = 0.73 #the orifice coefficient\n",
+ "hd = (0.186/(Co**2))*(0.165/50.4)*(39.1**2) #Dry tray pressure drop\n",
+ "print '(e) Dry tray pressure drop, hd = %0.2f inches of liquid'%hd\n",
+ "Ql = 83.3/(lw*12) #in gpm per inch of weir length\n",
+ "Fw = 1.27 #weir correction factor\n",
+ "how = 0.48*Fw*(Ql**(2.0/3)) \n",
+ "print ' how = %0.2f inch'%how\n",
+ "hc = hw + how\n",
+ "us = 326500/(22.9*3600)\n",
+ "beta = 0.6\n",
+ "hl = 0.6*2.92 #first calculate us and us(pg^0.5) and then from figure take beta\n",
+ "print ' pressure drop for flow of the vapour through the liquid'\n",
+ "Ada = 0.5*3.75/12 #area for liquid flow\n",
+ "had = 0.03*(83.3/(100*Ada))**2 \n",
+ "print ' head loss for liquid flow below the downcomer flow, had = %0.2f inch'%had\n",
+ "print ' total pressure drop = %0.2f inch of liquid'%(hc+hd+hl+had)\n",
+ "phi = (bL/bG)*(0.165/50.4)**0.5\n",
+ "print ' The rate of entrainment is %0.4f mol per mol gross downflow'%phi\n",
+ "sig = 20.5 #in dyne/cm\n",
+ "phol = 50.4 #lb/ft^3\n",
+ "dH = 3.0/8 #in inch\n",
+ "hsig = (0.04*sig)/(phol*dH) \n",
+ "hd = 0.58\n",
+ "uh = sqrt(((0.73**2)/0.186)*(50.4*hd/0.165))\n",
+ "print ' The corresponding vapour velocity at the hole at weeping is %0.1f ft/s'%uh\n",
+ "#column height\n",
+ "height = 29*1.5\n",
+ "ex_sp = 3*0.5\n",
+ "tot_h = 43.5+1.5+1.5+9+4\n",
+ "#total column height will be tray spacing + extra space for feed trays\n",
+ "# + extra space at trays with manholes + bottom space + top space\n",
+ "print 'Total column height = %0.0f ft'%tot_h\n",
+ "#Answers may vary due to round off error"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Example 5.2 Page no. 237"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Tower diameter when raschig ring is used as packing material, Dc = 0.90 m\n",
+ "Tower diameter, Dc when Pall ring is used, = 0.68 m\n",
+ "Power requirement is 287.25W\n",
+ "Actual Power requirement is 441.92W\n",
+ "volume fraction liquid holdup in the bed 0.0725 m^3 liquid per m^3 bed volume\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Design of packed tower\n",
+ "\n",
+ "from math import pi\n",
+ "from math import sqrt\n",
+ "L = 37525 #Liquid rate\n",
+ "G = 1500.0 #gas rate\n",
+ "M = 0.9*28.8 + (0.1*64) #average molecular weight of the feed gas\n",
+ "R = 0.08317 #gas constant\n",
+ "T = 303 #in K\n",
+ "P = 1.013 #in bar\n",
+ "phoG = P*M/(R*T) #kg/m^3\n",
+ "phoG_c = 0.081 #in lb/ft^3\n",
+ "muL = 0.81 #liquid viscosity\n",
+ "st = 70 #surface tension\n",
+ "phoL = 996 #in kg/m^3\n",
+ "phoL_c = 62 #in lb/ft^3\n",
+ "Flv = (L/G)*(phoG/phoL)**0.5\n",
+ "#Calculation of column diameter using raschig ring as packing material\n",
+ "dp = 3.0/4 #size of packing material\n",
+ "cp = 0.021 #from Eckert's GPDC chart(capacity parameter)\n",
+ "pwbypl = 1 #pho_w by pho_l\n",
+ "Fp = 94.5 #packing factor(in per ft)\n",
+ "gc = 4.18e8 #in ft/h^2\n",
+ "Gdash = sqrt((cp*phoG_c*phoL_c*gc)/(Fp*pwbypl*(muL**0.2)))\n",
+ "op_Gdash = Gdash*0.7\n",
+ "op_Gdash = op_Gdash*0.453592/(0.3048*0.3048)\n",
+ "tow_cross = G/op_Gdash\n",
+ "Dc = sqrt(4*tow_cross/pi)\n",
+ "print 'Tower diameter when raschig ring is used as packing material, Dc = %0.2f m'%Dc\n",
+ "#Calculation of column diameter when 50mm Pall ring is used as packing material\n",
+ "cp = 0.52 #capacity parameter from chart\n",
+ "Fp = 25 #flow parameter\n",
+ "v = 0.81 #liquid viscosity\n",
+ "Cs = cp/((Fp**0.5)*(v**0.05)) \n",
+ "usG = Cs*sqrt((phoL - phoG)/phoG) #superficial gas velocity\n",
+ "usG = usG*0.3048 \n",
+ "Gflow = G/(phoG*3600) #volumeteric gas flow rate\n",
+ "tow_cros = Gflow/usG #tower cross section\n",
+ "Dc = sqrt(4*tow_cros/pi) #tower diameter\n",
+ "print 'Tower diameter, Dc when Pall ring is used, = %0.2f m'%Dc\n",
+ "P_drop = 0.2*(5.0/0.3048) #pressure drop across the bed of 5m height\n",
+ "op_Pdrop = P_drop*1.1\n",
+ "op_Pdrop = op_Pdrop*0.0254*phoL*9.81\n",
+ "G = G/3600\n",
+ "Pow = (op_Pdrop/phoG)*G\n",
+ "print 'Power requirement is %0.2fW'%Pow\n",
+ "Pow = Pow/0.65\n",
+ "print 'Actual Power requirement is %0.2fW'%Pow\n",
+ "#calculation of operating liquid holup using Engel's equation\n",
+ "ap = 102\n",
+ "muL = 8.1e-4 #liquid viscosity\n",
+ "sigL = 0.07 #surface tension\n",
+ "usL = (L/phoL)/(0.362*3600) #superficial velocity\n",
+ "hLo = 0.93*(((usL**2)*102/9.81)**(1.0/6))*(((muL**2)*(ap**3)/((phoL**2)*9.81))**(1.0/10))*((0.07*102*102/phoL*9.81)**1.0/8)\n",
+ "print 'volume fraction liquid holdup in the bed %0.4f m^3 liquid per m^3 bed volume'%hLo\n",
+ "#Answers may vary due to round off error"
+ ]
+ }
+ ],
+ "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/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.3_plot_1.png b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.3_plot_1.png
new file mode 100644
index 00000000..a3043935
--- /dev/null
+++ b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.3_plot_1.png
Binary files differ
diff --git a/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.4_plot_1.png b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.4_plot_1.png
new file mode 100644
index 00000000..5634906e
--- /dev/null
+++ b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter2_example_2.4_plot_1.png
Binary files differ
diff --git a/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter4_example_4.5_plot_1.png b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter4_example_4.5_plot_1.png
new file mode 100644
index 00000000..ef798e9e
--- /dev/null
+++ b/PRINCIPLES_OF_MASS_TRANSFER_AND_SEPARATION_PROCESS_by_Binay_K._Dutta/screenshots/chapter4_example_4.5_plot_1.png
Binary files differ
diff --git a/sample_notebooks/PRAVEENKUMAR C/CHAPTER_1.ipynb b/sample_notebooks/PRAVEENKUMAR C/CHAPTER_1.ipynb
new file mode 100644
index 00000000..e2b145a8
--- /dev/null
+++ b/sample_notebooks/PRAVEENKUMAR C/CHAPTER_1.ipynb
@@ -0,0 +1,66 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The weight of a car in newton,W= 13734.0 N\n",
+ "The mass of the car in slugs,m= 95.9 slugs\n",
+ "The weight of the car in pounds,W= 3089.0 lb\n",
+ "The mass of the car in lbm,m= 3086.0 lbm\n"
+ ]
+ }
+ ],
+ "source": [
+ "# CHAPTER 1:INTRODUCTION TO FLUID STATICS\n",
+ "# SAMPLE PROBLEM 1/1,PAGE NUMBER:19\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "m=1400; # Mass of car in kg\n",
+ "\n",
+ "#Calculation\n",
+ "g=9.81; # The acceleration due to gravity in m/s^2\n",
+ "W_1=m*g;# Weight in N\n",
+ "m_1=m/14.594;# Mass of the car in slugs (1slug=14.594kg)\n",
+ "g=32.2; # The acceleration due to gravity in ft/s^2\n",
+ "W_2=m_1*g;# Weight in pounds (lb)\n",
+ "m_2=m/0.45359; #Mass of the car in lbm\n",
+ "print \"The weight of a car in newton,W=\",round(W_1,0),\"N\"\n",
+ "print \"The mass of the car in slugs,m=\",round(m_1,1),\"slugs\"\n",
+ "print \"The weight of the car in pounds,W=\",round(W_2,0),\"lb\"\n",
+ "print \"The mass of the car in lbm,m=\",round(m_2,0),\"lbm\"\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
+}