diff options
31 files changed, 12464 insertions, 0 deletions
diff --git a/Digital_Communications_by_S._Haykin/Chapter1.ipynb b/Digital_Communications_by_S._Haykin/Chapter1.ipynb new file mode 100644 index 00000000..3f0fb80c --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter1.ipynb @@ -0,0 +1,96 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ex1.2 page 7" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nEUnY/wfincqi2HtregAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f473abb8710>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nmKgbhmEkxP8H1mfQrGLrivYAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f473a895a50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,title,xlabel,ylabel,show,figure,text\n", + "from math import sin,pi,sqrt\n", + "\n", + "#Figure 1.2: Analog to Digital Conversion\n", + "t = np.arange(-1,1.01,0.01)\n", + "x = [2*sin((pi/2)*tt) for tt in t]\n", + "dig_data = [0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,0,1]\n", + "figure=figure()\n", + "#a=gca()#\n", + "#a.x_location =\"origin\"#\n", + "#a.y_location =\"origin\"#\n", + "#a.data_bounds =[-2,-3#2,3]\n", + "plot(t,x)\n", + "text(0.5,sqrt(2),'gnn')\n", + "text(-0.5,-sqrt(2),'gnn')\n", + "text(1,2,'gnn')\n", + "text(-1,-2,'gnn')\n", + "xlabel(' Time')\n", + "ylabel(' Voltage')\n", + "title('Analog Waveform')\n", + "show()\n", + "plot(range(1,len(dig_data)+1),dig_data)\n", + "title('Digital Representation')\n", + "show()\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/Digital_Communications_by_S._Haykin/Chapter2.ipynb b/Digital_Communications_by_S._Haykin/Chapter2.ipynb new file mode 100644 index 00000000..49325463 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter2.ipynb @@ -0,0 +1,394 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 Fundamental Limit On Performance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.1 page 18" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm81nPex/HXRymJyjqT1GTJdqNE2XVISlnHmuS2jezb\nLJYsYQYzg9tNMzSEhKyJQtHotFgSLUQLQ7QohBtl6XQ+9x/fX7rOcZbrnHP9rt+1vJ+Px3l0Ld/r\n9/tcv3O6Ptd3N3dHRERkjXWSDkBERHKLEoOIiFSgxCAiIhUoMYiISAVKDCIiUoESg4iIVKDEIEXP\nzP5sZp+b2ZIsn/cuM7sqm+esdP6dzGxaBo4z1cx2ykRMkhuUGKRezGyBma00s29Tfu5I87WlZnZG\n3DGmw8zaAZcCO7j7FjGe51Qzm5z6mLuf4+5/juFcg8xseBWPl5vZ1ikP3QD8PeX51N/pUjO738ya\np3HKW4DrGx655AolBqkvBw5z9w1Tfi6sw2urZWaNGx5e2toBy919eRbPGbdaZ62aWWugBBhV6XWH\nufuGQGdgDyCdGs1o4EAz+1XdQ5VcpMQgGRd9O55iZn83sy/N7EMz6xU99xdgf2Bwai0j+jZ7rpm9\nD8yLHvudmb1vZsvN7Jnow4yU8heY2X+iZqC/WdAkOufOKWU3N7MVZrZJpTgPBl4Etohiuc/MSsxs\nYaVyC8zsoOj2IDN73MyGmdk3ZjbbzHZPKdvWzEaa2Wdm9oWZ3WlmOwB3A3tH5/kyKvuAmd2Q8tra\n3u8AM5tvZl+Z2eCafgVp/Jp6AG+5+09VPenuS4CxwM7R+Y8ws3ejc0+I3tOasj8AbwE90ziv5AEl\nBmmImj6AugJzgU2AvwFDAdx9IDAZOK+KWsaRQBdgp+iD+EbgOKA18DHwaKVzHAXsTvh2eyRwevRB\nNwI4OaVcX2B85VqBu48HDgWWRLGcXs17qfwN/PDoHC2BZ4HBAGbWCBgDfAT8BmgDjHD3ucAA4LXo\nPBunHNej16bzfvsQvsXvChxvZml/EJtZ5d/VLkQJuHLRqHxbwrWZbmbbAY8AFwKbAs8Do81s3ZTX\nzQE6phuP5DYlBqkvA0ZF3yDX/KT2G3zs7kM9LMb1INDazDav9PrKbnL3r939R6AfMNTdZ0Yf9lcQ\nvnG3Syn/16j8QuB2QgIgOl/flHL9gV+0udcQR20mu/vY6L09xNoPxK6ED/U/uvv37v6ju7+a5nnS\neb83u/s30fudAHSq4XjHp/5ugC8rPd8S+K7SYz//TgnJuxS4CTgBGOPu/3b31YQ+hWbAPimv/RZo\nVct7lDyRzbZcKSwOHOnuL1fz/NKfC7qvjL6wbgB8lvL6ylKbcFoDb6YcY4WZLSd8C/+kivKfAFtE\nZaea2fdmVhLFsQ3hm32mLEu5vRJYz8zWAdoSEmJ5PY6ZzvtdmlJ+JeF6Vucxdz8l9QEzS43rK2DD\nSq+p8ncaNWl98nMhd4+a21I761tEx5QCoBqDJKG6ztHUx5cA7dfciUbHbAIsTinTrtLt1OeGEZqT\n+gNPVNeWXoUVwPop520EbJbmaxcC7aLXVFZbh3A67zddTu01lLeB7dI83hJC09ia2IyQBFNj2xGY\nVYcYJYcpMUhD1KcZBsI37m1qKTMCOM3MOppZU0L7++vu/klKmT+YWauoPfxC4LGU5x4Cfktoonmw\nDrHNJ9QAekdt6FcBTdN87RvAp8DNZra+ma1nZmuaW5YBW1ZqlzfWXsN03i+VXluddH4v44HOZtYk\njbKPA33M7KAo/t8DPwCvApjZeoR+npfSOJbkASUGaYjRVnEew1PR4z93qqZIvf+/wLHR6KHbqzqw\nu/8buBp4ivCNdSvgxErFniGMhplB6PS9L+X1C4HpQLm7T6nlffwcm7v/H3AucC+wiNAOv7BS2Srf\nW9T+fjiwLaHpZSFwfFTm38C7wFIzS21OW/Pa2t5vVeesqeZV1XOp73MZ8DKhA79G7j6fUPu6E/ic\n0Al+uLuXRUUOBya4+9JqDiF5xuLcqMfM7iP8EX3m7rtUU+YOwuiHlcCp7j4jtoCkYETt5du6+4c1\nlBkKLHb3a7IXWf4wsx2BYe7etYHHeZ0wIuy9zEQmSYu7xnA/0Ku6J82sN+E/dwfgLOCumOORImFm\n7QlNSUOTjSR3ufuchiaF6Dh7KSkUllgTg7tPpuaRCkcQOglx96lAK9PsSUlPtVXdaNLYO8Df3P3j\n7IUkUhiSHq7ahortt4uALak4HFDkF9y9qpE/a567mtBeLyL1kAudz5VHUMTX6SEiIrVKusawmDAe\neo0tqWLctpkpWYiI1IO713lYedI1hmeBUwDMbC/g62gY3S+4u37cufbaaxOPIVd+0r0W5eXO3LnO\n3Xc7/fo5HTo4G27odOvmXHSRc889zuuvO199FX/Mq1c7ixY5L77o3Habc9ppTqdOzvrrO126OBdc\n4DzxhPPZZ/q7iPvvohh+6ivWGoOZjQC6AZtGU+ivBdYFcPch7v58NJHoA8KM09PijEeKx5dfwosv\nwvPPw/jx0LgxHHhg+LniCthhB2hUbS9FfNZZB9q0CT89eqx9fMUKmDEDXnsN7r8fzjgD2rWDnj2h\nd2/Ybz9oks5UNJEMiDUxuHvfNMqcH2cMUjwWLoSnngo/s2ZBt27Qpw9cey1svTX8Yn3RHNK8efjw\n328/+OMfoawM3noLxo4NiWzevJBIjj02vKcNalolSaSBkm5KkjoqKSlJOoScUVJSwhdfwODBsPfe\n0KkTvP02XH45fPYZjB4NZ58N22yT20mhKo0bw557hqQ2dSrMnw+9eoXaRJs2cMwxMGoU/BStAKW/\ni7V0LRou1pnPmWJmng9xSnaUlcFzz4UPydJSOOwwOPlk6N4d1l231pfnvS+/hKefhgcfhPfegxNP\nhDPPhI7aDUEqMTO8Hp3PSgySN5YsgXvvhXvugS23hN/9LjSttGiRdGTJ+fDDkCCGDg3X5Jxz4Pjj\nYb31ko5McoESgxSsmTPh1lthzJjwoXfOOaHZSNYqKwvX5667wvU65xw491zYfPPaXyuFq76JQX0M\nkpPcw2iigw8Ona077xy+HQ8ZoqRQlcaN4aijYNy40Ly2ZAlsvz0MGBCum0hdKDFITnEPI3H23RfO\nPx/694ePPoLLLoONNko6uvyw447wr3+FkUybbw5du8Kpp4YObJF0qClJcsaECWFo5nffwVVXwXHH\nJTPXoNB8/TXccQfceWeofV13HfzmN7W/TvKfmpIkb02fHiZynXkmXHRRGHJ64olKCpnSqhVccw18\n8EGYNNe5M1xyCXz+edKRSa5SYpDELFkSmjj69IEjj4Q5c6Bv3zA7WDKvZUu4/vowxHXVqtDkdOut\na+dCiKyh/4KSdT/8ADfeCLvuCr/+dWgLP/dcLfmQLb/6VZgUOGUKvPxy6NgfPTr074iA+hgky158\nEc47L3wY3XJLmJUsyRo7Fi6+GDp0CP0Q7dsnHZFkivoYJKd9+mloJhowAG6/PczcVVLIDb16hX6d\nvfeGPfaAm29W81KxU2KQWLmHpSs6doSttoJ33w19CpJbmjSBK6+EN96ASZOgS5cwKECKk5qSJDYL\nF4ZlKz77DO67TxPT8oU7PPQQ/P73cNZZcPXV0LRp0lFJfagpSXKGe1i/p3Nn2H//sDqokkL+MAsT\nC2fNCjW83XcPt6V4qMYgGfXll2Gp6zlz4OGHw8gjyV9rag+XXhqWM7/kEg0nzieqMUjiXn459CVs\nuSVMm6akUAjW1B6mTQv7Pxx8MCz+xa7sUmiUGKTBVq+GQYPCnghDh8Jtt2nZ50LTvn1YnO+gg8LI\npXHjko5I4qSmJGmQTz+Ffv3C7Ycfhtatk41H4jdxYvid9+8PN9wQVnaV3KSmJMm6yZPDt8cDDoCX\nXlJSKBbdusGMGeGne3dYtizpiCTTlBikztzDap3HHhuajgYN0oJ3xWazzcL2qgccEL4cTJ2adESS\nSWpKkjr5/vswe3nWrDB7eeutk45IkjZqVJivctNNYYVcyR1qSpLYLV0KBx4Ylkt49VUlBQmOOios\nyPf3v4c1l1avTjoiaSglBknLzJmw557QuzeMGAHNmycdkeSS7beH11+H2bPh8MPhm2+SjkgaQolB\najV6NPToEb4RXnNNGNsuUtlGG8ELL4ShrXvvDQsWJB2R1JcSg9To7rvDejnPPQfHH590NJLr1l0X\n/vnP8Dez775h5JLkH41Aliq5w8CB8OSTof1YS2RLXVx0EbRpE7ZsfeghOOSQpCOSutCoJPmFVavC\n6JJ580Iz0mabJR2R5KspU+CYY0Iz5CmnJB1N8anvqCTVGKSCH34ITUZlZWHto/XXTzoiyWf77QcT\nJoTNgL7+Gi68MOmIJB3qY5CfffMNHHpoGHE0apSSgmTGTjuFzX/uvBOuu057S+cDJQYBYPnysLzB\nDjuENuEmTZKOSApJ+/ZhCZWRI8MS3koOuU2JQfj887Bq5oEHhhElWt5C4vDrX4cF+F57Dc47D8rL\nk45IqqPEUOSWLQsJ4Ygj4K9/1RwFiVerVvDii/D222FpFSWH3KTEUMQ+/RRKSkJn8w03KClIdrRo\nAWPHwvz5cMYZWkIjFykxFKnPPgvNRyefHGYzi2TTBhvA88/Dxx+HyXCqOeQWJYYitHx52KLxxBPD\nJDaRJDRvHubJzJ8P55+vDulcEmtiMLNeZjbXzN43s8uqeH5TMxtrZjPNbLaZnRpnPBLGkvfoAX36\nqKYgyWvePCy3Mn06XHKJkkOuiG3ms5k1AuYBBwOLgWlAX3efk1JmENDU3a8ws02j8r9y97JKx9LM\n5wz47rtQU9h777Avs/oUJFd8/XUYLt2zJ9x4Y9LRFI5c3I+hK/CBuy9w91XAo8CRlcp8CrSIbrcA\nlldOCpIZP/4IRx8NO++spCC5p1UrGDcubP50661JRyNxLonRBliYcn8RsGelMvcAL5vZEmBDQOt3\nxmD16tDJ3KJFWC1VSUFy0aabhqGs++8PG28Mp52WdETFK87EkE7bz5XATHcvMbNtgJfMrKO7f1u5\n4KBBg36+XVJSQklJSabiLGjucM458NVXoS23sVbHkhzWtm2oOZSUhP0djjoq6YjyS2lpKaWlpQ0+\nTpx9DHsBg9y9V3T/CqDc3f+aUuZ54C/u/kp0/9/AZe7+ZqVjqY+hnq69NgwLfPll2HDDpKMRSc9b\nb4WF955+OizEJ/WTi30MbwIdzKy9mTUBTgCerVRmLqFzGjP7FbA98GGMMRWVoUPDukdjxigpSH7Z\nfXd4+GE49liYOzfpaIpPrPsxmNmhwO1AI2Cou99kZgMA3H1INBLpfqAdIUnd5O6PVHEc1Rjq6IUX\nQhvtpEmw3XZJRyNSPw88ANdfD6++GtZakrqpb41BG/UUoOnTQzV81CjYZ5+koxFpmOuvh2efhdLS\nMGNa0qfEIAAsXgx77gl33AG//W3S0Yg0nHvYUXD58rBs9zparyFtudjHIFm2YkVYJfX885UUpHCY\nwV13hUlwV1yRdDTFQTWGAlFeDscdF6raDzyguQpSeJYvD7XhgQM1xyFd2vO5yF19dVgx9ZFHlBSk\nMG2ySRhhd8ABsM024V+Jh5qSCsBjj4WEMHIkNG2adDQi8Vmz9ewJJ8AnnyQdTeFSU1KemzUrLIz3\n0kvQqVPS0Yhkxy23wIgRMGUKNGuWdDS5S6OSitDy5dClC/zlL9C3b9LRiGSPO/TrF/Ynf/BBNZ9W\nR6OSikxZWahOH3OMkoIUHzO4916YPRtuvz3paAqPagx56oor4M03wwxnLYwnxWrBAthrL3j8cXVG\nV0U1hiIyenRYR+aRR5QUpLi1bx+GZ/ftC0uXJh1N4VCNIc989FH4hjRqVNiJTUTCKsKTJoVBGPqy\ntJZqDEXghx/CapNXXqmkIJLqmmtg3XW1j3mmqMaQR849F774Isxb0CgMkYo+/zws133XXdCnT9LR\n5AbNfC5wTz0Vtj2cPl1JQaQqm20W+t2OPTZs9NOmTdIR5S/VGPLAggXQtWvYmrNLl6SjEcltN9wQ\ndiwcPz7Mcyhm6mMoUKtWwUknwWWXKSmIpOPKK8O/N92UbBz5TDWGHHfllTBjRqgtaB16kfQsXhz6\nG554AvbfP+lokqMlMQpQaWmoLcycCZtvnnQ0IvllzJiwN8msWdCyZdLRJEOJocB8/TV07Ah33w2H\nHpp0NCL56dxz4dtvYfjwpCNJhhJDgTn55PAt5x//SDoSkfy1ciXstlvYN/qEE5KOJvs0XLWAjBgR\n1kGaPj3pSETy2/rrh+VjeveGffeFLbdMOqL8oBpDjlm4MHSavfBC+FdEGu4vfwlDWF96qbgGcWi4\nagFwhzPPhAsuUFIQyaTLLw/NSnfdlXQk+UE1hhxyzz0wZAi89lpY90VEMmfevNCcNHVq2DO6GKjz\nOc998kmoJUyYADvvnHQ0IoXpttvgmWfC/7NiaFJSU1Iec4czzoBLL1VSEInTRRfB6tUweHDSkeQ2\n1RhywJAhMHQovPqq1pIXidv8+bDPPqHJtkOHpKOJl5qS8tSiRWGcdWkp/Nd/JR2NSHG47bawE+LL\nLxf2asVqSspD7mFm5vnnKymIZNNFF8GKFXDffUlHkptUY0jQE0/AoEFhIlvTpklHI1JcZs2CHj3C\nv61bJx1NPNSUlGe+/DJ0ND/1lLbpFEnKwIFhGOuTTyYdSTyUGPLM6adD8+Zw551JRyJSvH74ISxW\nefPNcPTRSUeTeUoMeWTiROjfH959FzbcMOloRIrbxIlh0cr33iu8/4/qfM4TP/0E55wDt99eeH+E\nIvmoWzfo3j3090mgGkOW3XwzTJ4cNhEp5GFyIvnk88/DyMDx42HXXZOOJnNyssZgZr3MbK6ZvW9m\nl1VTpsTMZpjZbDMrjTOepC1YALfcEvoVlBREcsdmm8Gf/wxnnw3l5UlHk7zYagxm1giYBxwMLAam\nAX3dfU5KmVbAK0BPd19kZpu6+xdVHKsgagxHHAF77hlGQohIbikvD4vsnXFGWOW4EORijaEr8IG7\nL3D3VcCjwJGVypwEPOXuiwCqSgqFYvToMBX/D39IOhIRqco664RluQcOhOXLk44mWXEmhjbAwpT7\ni6LHUnUANjazCWb2ppn1jzGexPzwA1x8cWhC0kQ2kdzVqRMcfzxcfXXSkSQrzsSQTtvPukBnoDfQ\nE7jazApuWavbbgsdWj16JB2JiNTmuuvCxNOZM5OOJDlxruW5GGibcr8todaQaiHwhbt/D3xvZpOA\njsD7lQ82KGUsWUlJCSUlJRkONx6LFsGtt8K0aUlHIiLp2HhjuP56uPDCMMchnwaKlJaWUlpa2uDj\nxNn53JjQ+dwdWAK8wS87n3cABhNqC02BqcAJ7v5epWPlbefzSSeF3aJuuCHpSEQkXatXQ5cu8Kc/\nwYknJh1N/eXkzGczOxS4HWgEDHX3m8xsAIC7D4nK/AE4DSgH7nH3O6o4Tl4mhsmToV8/mDMnLH8h\nIvnjlVdCUpg7N3///+ZkYsiUfEwM5eWwxx75/41DpJj16xdq/Ndfn3Qk9aPEkGOGDYO77w67suVT\nG6WIrPXJJ2EjrVmzYMstk46m7pQYcsiKFbD99mG/BS2pLZLfBg4Mg0iGDUs6krpTYsgh118fVk59\n7LGkIxGRhvr2W9huO3juOejcOelo6kaJIUd8+mnYgOfNN2GrrZKORkQyYcgQePTR/NsjOheXxChK\nV18d1lpRUhApHGecEVZgHT066UiyQzWGDJo9Gw46KKyJ1KpV0tGISCaNHRuWtpk9GxrHOTU4g2Kv\nMZjZemamlX5qcOWVcPnlSgoihahnT2jdGh54IOlI4ldtjcHM1gGOAvoC+xCSiAGrgdeAh4FR2fgq\nnw81hilTwpjnefNgvfWSjkZE4jB1Khx7bGgVaNYs6WhqF0eNoRTYHbgF2NrdW7v7r4Gto8e6ABPr\nEWvBcQ81heuuU1IQKWR77gldu8LgwUlHEq+aagxN3f3HGl+cRplMyPUaw5gxcNll8Pbb0KhR0tGI\nSJzmzAn7ROdDX2Ksw1XNrBOwP2Ep7cnuPqvuIdZfLieG1avDGu5//jMcWXkbIhEpSGeeGbYDvemm\npCOpWWydz2Z2EfAQsBnwK+AhM7uw7iEWphEjYMMNw7adIlIcrr0W/vWvMG+pENVaYzCzd4C93H1F\ndL858Lq775KF+NbEkJM1hrIy2GEHuOceOPDApKMRkWy65JKwWOb//m/SkVQv7uGq5dXcLmoPPgjt\n2ikpiBSjyy+H4cPDOkqFJp0aw6XAqcBIwnDVo4AH3P1/Yo9ubQw5V2P46aewUN7w4bDffklHIyJJ\n+NOf4Lvv4J//TDqSqsXd+dyZip3PM+oeYv3lYmL417/CvrDjxiUdiYgk5YsvwhfE6dPhN79JOppf\nynhiMLO9gCHAtsDbwBmVt9zMllxLDD/+CB06wOOPw157JR2NiCRp4EBYtgzuvTfpSH4pjsTwFnA5\nMBk4HDjT3Xs2KMp6yrXE8I9/wPPPh2V4RaS4ffll+KI4dSpsu23S0VQUR2KY4e67VXc/m3IpMfz4\nY9jqb9SosHWniMi114ZO6KFDk46kojgSw4fAHwgdzgB/T7nv7j6ynrHWWS4lhiFD4JlnQo1BRATW\n1hpyra8hjsTwAKGz+eeHUu+7+2l1PVl95UpiWLUq7OT08MOwzz5JRyMiueTyy8Nub//4R9KRrKUd\n3LJg2LDw8/LLSUciIrnms8/ChNfZs2GLLZKOJsj4BDczO9XMqt2OwsyamFnWag1JW70abrwRrroq\n6UhEJBdtvjmccgrcckvSkTRcTfsQbQBMM7O5wDRgKaE56dfAHsAOwD2xR5gjnngCNtlEs5xFpHp/\n/CPssgtccUVYZC9f1diUZGYG7AvsB7SLHv4YmAK8mq32naSbksrLoWNH+Nvf4NBDEwtDRPLAOeeE\n5bhzYeVV9THEaPRouOaaMOLA6nyJRaSYfPRRGMr+4YfQsmWyscQxKunOlLvO2mGrEIarZm3p7aQT\nw/77w3nnwYknJhaCiOSRk06C3XYLTUtJiiMxnMrahHAdcA1rk4O7+7D6hVp3SSaGV18Nezm//z40\nrqlHRkQkMmMGHHZYqDU0bZpcHHEvopfYrOfo/IklhqOPhu7d4fzzEzm9iOSpQw6Bvn3htATHbiox\nxGDuXDjggNBm2Lx51k8vInls/Hi48MIwr2GddHe+ybC4N+opSrfeCueeq6QgInXXvTust15+LrZZ\nUx/Dd6xdAqMZ8H3K0+7uLWKOLTWWrNcYPv0UdtoJ5s/P7/HIIpKcRx8NS2RMnpzM+TVcNcMGDoSv\nv86tdU9EJL+UlYXF9UaMSGbvFiWGDFq5MqyQ+Oqr4ZcqIlJf//M/8MYbITlkm/oYMujhh0N2V1IQ\nkYY6/fSwBfCiRUlHkj4lhkrc4fbb4eKLk45ERApBy5bQv39+NUvHmhjMrJeZzTWz983sshrKdTGz\nMjP7bZzxpGP8+DC07KCDko5ERArFBReEPaFXrkw6kvTElhjMrBEwGOgF7AT0NbMdqyn3V2AsFZfd\nSMSa2oLWRBKRTNl227C51/DhSUeSnjhrDF2BD9x9gbuvAh4Fjqyi3AXAk8DnMcaSlnnzYNq0sM6J\niEgmXXxx+OJZXp50JLWLMzG0ARam3F8UPfYzM2tDSBZ3RQ8lOkTqjjtgwABo1izJKESkEJWUhHWT\nXnwx6UhqF2diSOdD/nbg8mgsqpFgU9I338Ajj8DZZycVgYgUMrOwREY+dELHuV7oYqBtyv22hFpD\nqt2BR8N+QGwKHGpmq9z92coHGzRo0M+3S0pKKCkpyWiww4fDwQdDmza1lxURqY8TT4Q//QkWLID2\n7TN//NLSUkpLSxt8nNgmuEX7Rc8DugNLgDeAvu4+p5ry9wOj3X1kFc/FOsHNHXbeGQYP1tadIhKv\nSy8NTUrZ2OEt5ya4uXsZcD4wDngPeMzd55jZADMbENd562PSpNAhlOFKiIjIL5x9Ntx3H/z4Y9KR\nVE9LYhCqd/vuG8Yai4jE7ZBD4NRT4x8BqbWS6mnpUthxx9Dml/T+rCJSHEaNgltugSlT4j1PzjUl\n5Yt774XjjlNSEJHsOeww+PhjmDUr6UiqVtSJoawMhgwJm/GIiGRL48Zw1lnwz38mHUnVijoxvPBC\nGJ7aqVPSkYhIsTnzTHj8cfjuu6Qj+aWiTgxDh8Lvfpd0FCJSjFq3hm7dQnLINUXb+bxm686FC2GD\nDTJ6aBGRtIwZAzfeGDYFi4M6n+to2DA49lglBRFJTq9eoRP63XeTjqSiokwM7qEZ6cwzk45ERIpZ\n48ZhPsPQoUlHUlFRJoZJk2C99aBr16QjEZFid/rp8NBDuTUTuigTw733htqCNuMRkaRtsw3ssgs8\n+4ulQ5NTdJ3PX30FW20F//kPbLJJRg4pItIgI0bAAw/AuHGZPa46n9M0YkTo8FFSEJFccfTR8NZb\noSM6FxRdYhg2LHT2iIjkivXWg+OPD30NuaCoEsO8efDJJ2FDHhGRXHLKKWHDsFxo3S+qxDB8eFjm\ntnGc+9aJiNTDnnuGfWGmTUs6kiJKDOXloZp2yilJRyIi8ktm0L9/+AKbtKJJDJMnQ4sW0LFj0pGI\niFTt5JPh0Ufhp5+SjaNoEsPw4aotiEhu22qrsHHY2LHJxlEUieH772HkyPi30RMRaaj+/eHBB5ON\noSgSw7PPQpcusMUWSUciIlKz446D8ePDZNykFEViePDBkIVFRHJdq1ZwyCHJ7tNQ8Ilh+fKw4fZR\nRyUdiYhIevr1C6s0JKXgE8PIkdCzp/ZdEJH80asXvP02LFmSzPkLPjE89hiccELSUYiIpK9pUzj8\ncHjyyWTOX9CJYdkyePNN6N076UhEROrmhBPCF9skFHRieOop6NMHmjVLOhIRkbo5+OCwvtvChdk/\nd0EnBjUjiUi+atIkDJpJYnRSwSaGJUvgnXdCx7OISD5KqjmpYBPDE0/AEUeEThwRkXx04IGwYAF8\n+GF2z1uwiUHNSCKS7xo3hmOOyX5zUkEmhk8+gfnztSGPiOS/JJqTCjIxPPNMaEZad92kIxERaZj9\n94fFi0OGUGujAAANX0lEQVSTUrYUZGJ4+mktgSEihaFRo/BFd9So7J2z4BLD8uXw1lvQo0fSkYiI\nZMZRRykxNMhzz0H37prUJiKFo3t3mDEDvvgiO+cruMQwapSakUSksDRrFlpBxozJzvliTwxm1svM\n5prZ+2Z2WRXP9zOzWWb2tpm9Yma71vdcK1fCv/8dlsEQESkk2WxOijUxmFkjYDDQC9gJ6GtmO1Yq\n9iFwgLvvCtwA/Ku+5xs/HnbfHTbZpL5HEBHJTX36wIQJ4Qtw3OKuMXQFPnD3Be6+CngUODK1gLu/\n5u7/F92dCmxZ35M9/TQcfXS9YxURyVkbbQRdu8K4cfGfK+7E0AZIXRtwUfRYdc4Anq/PicrKQvvb\nkUfWXlZEJB9lqzmpcczH93QLmtmBwOnAvlU9P2jQoJ9vl5SUUFJSUuH5V16Bdu3Cj4hIITriCLjm\nmvBFuHEVn96lpaWUlpY2+DzmnvZnd90PbrYXMMjde0X3rwDK3f2vlcrtCowEern7B1Ucx2uL8/e/\nh5Ytw0UTESlUe+wBt9wClb4bV8nMcHer6znibkp6E+hgZu3NrAlwAvBsagEza0dICidXlRTS9cIL\n2qlNRApf794wdmy854g1Mbh7GXA+MA54D3jM3eeY2QAzGxAVuwbYCLjLzGaY2Rt1Pc/HH4eJH507\nZyx0EZGc1KtX+CIcp1ibkjKltqakIUNgyhQYPjyLQYmIJKCsDDbfHGbPhi22qLlsrjYlZcULL4Qs\nKiJS6Bo3DrOg42xOyvvE8NNPYdLHIYckHYmISHYcemi8zUl5nxheeQW23x422yzpSEREsqNnz7DS\nQ1lZPMfP+8QwdmzIniIixaJ1a2jfHl5/PZ7j531iUP+CiBSjXr3i62fI68SweHH46do16UhERLIr\nzn6GvE4MY8eG3vlGjZKOREQku/beG/7zH1i6NPPHzvvEoP4FESlG664bdnZ78cXMHztvE0N5ediU\nR3s7i0ixOuQQeOmlzB83bxPDO++EIaq1zfwTESlUJSUwcSJkegGLvE0MpaXprS4oIlKottsOVq2C\njz7K7HHzNjFMnAjduiUdhYhIcszC5+DEiZk9bl4mhvJymDRJiUFERIkh8u67Yf/TNjVtEioiUgTW\n9DNkUl4mBjUjiYgEO+wAK1eGfWkyJS8TgzqeRUSCOPoZ8i4xuKt/QUQkVdEnhjlzYIMNoG3bpCMR\nEckN3bqFlpRMybvEoGYkEZGKdtoJvvkGFi3KzPHyLjGo41lEpKJ11oEDDshcc1JeJQZ3JQYRkapk\nsp8hrxLD/PnQtGnYuUhERNYq2sTw1lvalEdEpCo77xz6GL75puHHyqvEMGsWdOqUdBQiIrmnUaOQ\nHN55p+HHyqvEMHMmdOyYdBQiIrmpY8fwOdlQeZUYVGMQEalep07hc7Kh8iYxLF0a1h3XwnkiIlUr\nuhrDmtqCWdKRiIjkpl13DatPl5U17Dh5kxjUvyAiUrMNN4TWreH99xt2nLxJDOpfEBGpXSb6GfIm\nMajGICJSu0z0M+RNYliwAHbcMekoRERyW1HVGLbbDpo0SToKEZHcVlQ1BvUviIjUrm1b+PFHWLas\n/sfIm8Sg/gURkdqZhc/LhjQnxZoYzKyXmc01s/fN7LJqytwRPT/LzHar7liqMYiIpKdTp4Y1J8WW\nGMysETAY6AXsBPQ1sx0rlekNbOvuHYCzgLuqO55qDEFpJvfvy3O6FmvpWqyla5HbNYauwAfuvsDd\nVwGPAkdWKnMEMAzA3acCrczsV1UdbOONY4w0j+iPfi1di7V0LdbStcjhGgPQBliYcn9R9FhtZbaM\nMSYRkYK3447w4Yf1f32cicHTLFd59aN0XyciIlVo2jQM8a8vc4/nc9jM9gIGuXuv6P4VQLm7/zWl\nzN1Aqbs/Gt2fC3Rz92WVjqVkISJSD+5e56VHG8cRSORNoIOZtQeWACcAfSuVeRY4H3g0SiRfV04K\nUL83JiIi9RNbYnD3MjM7HxgHNAKGuvscMxsQPT/E3Z83s95m9gGwAjgtrnhERCQ9sTUliYhIfsqp\nmc+ZnBCX72q7FmbWL7oGb5vZK2a2axJxZkM6fxdRuS5mVmZmv81mfNmS5v+PEjObYWazzaw0yyFm\nTRr/PzY1s7FmNjO6FqcmEGZWmNl9ZrbMzN6poUzdPjfdPSd+CM1NHwDtgXWBmcCOlcr0Bp6Pbu8J\nvJ503Alei72BltHtXsV8LVLKvQyMAY5JOu6E/iZaAe8CW0b3N0067gSvxSDgpjXXAVgONE469piu\nx/7AbsA71Txf58/NXKoxZHRCXJ6r9Vq4+2vu/n/R3akU7vyPdP4uAC4AngQ+z2ZwWZTOdTgJeMrd\nFwG4+xdZjjFb0rkWnwItotstgOXu3sANL3OTu08GvqqhSJ0/N3MpMWhC3FrpXItUZwDPxxpRcmq9\nFmbWhvDBsGZJlULsOEvnb6IDsLGZTTCzN82sf9aiy650rsU9wH+Z2RJgFnBRlmLLRXX+3IxzuGpd\naULcWmm/JzM7EDgd2De+cBKVzrW4Hbjc3d3MjF/+jRSCdK7DukBnoDuwPvCamb3u7g3cATjnpHMt\nrgRmunuJmW0DvGRmHd3925hjy1V1+tzMpcSwGGibcr8tIbPVVGbL6LFCk861IOpwvgfo5e41VSXz\nWTrXYnfCXBgI7cmHmtkqd382OyFmRTrXYSHwhbt/D3xvZpOAjkChJYZ0rsU+wF8A3P0/ZvYRsD1h\nflWxqfPnZi41Jf08Ic7MmhAmxFX+j/0scAr8PLO6yglxBaDWa2Fm7YCRwMnu/kECMWZLrdfC3bd2\n963cfStCP8M5BZYUIL3/H88A+5lZIzNbn9DR+F6W48yGdK7FXOBggKg9fXugAasH5bU6f27mTI3B\nNSHuZ+lcC+AaYCPgruib8ip375pUzHFJ81oUvDT/f8w1s7HA20A5cI+7F1xiSPNv4kbgfjObRfgC\n/Cd3/zKxoGNkZiOAbsCmZrYQuJbQrFjvz01NcBMRkQpyqSlJRERygBKDiIhUoMQgIiIVKDGIiEgF\nSgwiIlKBEoOIiFSgxCBZYWYDo+WPZ0XLQjd4zoWZnWpmd9bxNd9V8/jqKK53zOxxM2uWUBzXmdlB\n0e1SM+sc3X7OzFqYWUszO6cu56riHPV+r1IclBgkdma2N9AH2M3dOxLW8llY86vSUp9JONW9ZqW7\n7+buuwA/AWenPmlmNU0GzVgc7n6tu79cuYy793H3bwiTGs+tx/lS1fheRZQYJBt+TVjDZxWAu3/p\n7p+a2UFm9vSaQmbWw8xGRre/M7O/RbWMl8xsLzObaGb/MbPDU47dNlpNdL6ZXZNyrEujb8TvmFld\nV9acDGxrZt3MbLKZPQPMNrOmZna/hc2RpptZSRpxPB2tdDrbzH6XehIzuy16fLyZbRo99oCZHVM5\nIDNbYGabADcD20Tf+P9mZsPM7MiUcg+b2RF1eK9Tove6kZmNimp0r5nZLnU4hhSapDeZ0E/h/wDN\ngRnAPOAfwAHR4wbMATaJ7j8C9IlulwM9o9sjgRcJyx/sCsyIHj8VWEL4Fr0e8A5hQb3dCctCNIvO\nPRvoGL3m22pi/Db6tzFhzaEBhGUGvgN+Ez33e+De6Pb2wMdA0+riiMptFP3bLHp8o5T31ze6fTVw\nZ3T7fuC30e0JQOfo9kfAxsBvSNmQBTgAeDq63ZKwHtA6tfw+Ut/rqOi93glcHT1+4JprrJ/i/FGN\nQWLn7isIH9ZnETbSeczM/tvdHRgO9DezVsBewAvRy35y93HR7XeACe6+mvAh3z7l8C+6+1fu/gMh\ngexHWIJ8pLt/H517JOEDtCbNzGwGMA1YANxHSFxvuPvHUZl9gYei9zSPkBi2IzT5VBUHwEVmNhN4\njbDCZYfo8XLgsej2Qynla1Nh+WR3n0RYUG5ToC/wpLuX1+G9fhy9130JvwvcfQKwiZltkGZMUmBy\nZhE9KWzRh9VEYKKFvWn/m7Cr1P3AaOAH4PGUD7VVKS8vJ7SF4+7lNbT3G2vb5a2ax6vzvbtX2As3\nWpxwRRXnqI0BHjU1dQf2cvcfzGwCoUZRU9z18SDQn7DK6KlplK/uvRbiPhZSD6oxSOzMbDsz65Dy\n0G6Eb+W4+6eEZpirCEmirnpE7ePNCLu4TSH0ERxlZs3MrDlwVPRYQ00G+kF4T0A7wvLOVk0cLYCv\noqSwA6FGtMY6wHHR7ZPqEN+3wIaVHnsAuBhwd58bxdfGzMbX872VAJ+7e5Ujp6TwqcYg2bABcGfU\nXFRG2DjmrJTnHyFsXD8v5bHK36C9itsOvAE8Rdh8ZLi7T4fQiRs9B2H56VnVHLe68615LPXxfxKW\nOX87eh//7e6rzKzKOMxsNnC2mb1H6F95LeVYK4CuZnYVsIzwbb9W7r7czF6Jal3Pu/tl7v5ZdI6n\nU4q2jmJM970OAu6zsEz1CkKNToqUlt2WxJnZYOAtd69PjaHoWdiU523CcOBvo8fOAz529zGJBid5\nSYlBEmVmbxGaR3p4NJxV0mdmBwP3Are5+x1JxyOFQYlBREQqUOeziIhUoMQgIiIVKDGIiEgFSgwi\nIlKBEoOIiFSgxCAiIhX8P5fhJpLBkGXZAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4de4a3d1d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange, zeros\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show\n", + "\n", + "Po = arange(0,1+0.01,0.01)\n", + "H_Po = zeros(len(Po))\n", + "for i in range(1,len(Po)-1):\n", + " H_Po[i]=-Po[(i)]*log(Po[(i)],2)-(1-Po[(i)])*log(1-Po[(i)],2)\n", + "\n", + "#plot\n", + "#plot2d(Po,H_Po)\n", + "plot(Po,H_Po)\n", + "xlabel('Symbol Probability, Po')\n", + "ylabel('H(Po)')\n", + "title('Entropy function H(Po)')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.2 page 19" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Entropy of Discrete Memoryless Source\n", + "bits : 1.5\n", + "Table 2.1 Alphabet Particulars of Second-order Extension of a Discrete Memoryless Source\n", + "_________________________________________________________________________________\n", + "Sequence of Symbols of ruo2:\n", + " S0*S0 S0*S1 S0*S2 S1*S0 S1*S1 S1*S2 S2*S0 S2*S1 S2*S2\n", + "Probability p(sigma), i =0,1.....8 : [0.0625, 0.0625, 0.125, 0.0625, 0.0625, 0.125, 0.125, 0.125, 0.25]\n", + "_________________________________________________________________________________\n", + " \n", + "H(Ruo_Square)= 3.0 bits\n", + "H(Ruo_Square) = 2*H(Ruo)\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "P0 = 1/4# #probability of source alphabet S0\n", + "P1 = 1/4# #probability of source alphabet S1\n", + "P2 = 1/2# #probability of source alphabet S2\n", + "H_Ruo = P0*log(1/P0,2)+P1*log(1/P1,2)+P2*log(1/P2,2)\n", + "print 'Entropy of Discrete Memoryless Source'\n", + "print 'bits : ',H_Ruo\n", + "#Second order Extension of discrete Memoryless source\n", + "P_sigma = [P0*P0,P0*P1,P0*P2,P1*P0,P1*P1,P1*P2,P2*P0,P2*P1,P2*P2]#\n", + "print 'Table 2.1 Alphabet Particulars of Second-order Extension of a Discrete Memoryless Source'\n", + "print '_________________________________________________________________________________'\n", + "print 'Sequence of Symbols of ruo2:'\n", + "print ' S0*S0 S0*S1 S0*S2 S1*S0 S1*S1 S1*S2 S2*S0 S2*S1 S2*S2'\n", + "print 'Probability p(sigma), i =0,1.....8 : ',P_sigma\n", + "print '_________________________________________________________________________________'\n", + "print ' '\n", + "H_Ruo_Square =0\n", + "for i in range(0,len(P_sigma)):\n", + " H_Ruo_Square=(H_Ruo_Square+P_sigma[i]*log(1/P_sigma[i],2))\n", + "print 'H(Ruo_Square)=', H_Ruo_Square,' bits'\n", + "print 'H(Ruo_Square) = 2*H(Ruo)'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.3 page 20" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average code-word Length L 2.2 bits\n", + "Entropy of Huffman coding result H 2.12 bits\n", + "Average code-word length L exceeds the entropy H(Ruo) by only 3.679 %\n", + "Varinace of Huffman code : 0.16\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "\n", + "# (a)Average code-word length 'L'\n", + "#(b)Entropy 'H'\n", + "P0 = 0.4# #probability of codeword '00'\n", + "L0 = 2# #length of codeword S0\n", + "P1 = 0.2# #probability of codeword '10'\n", + "L1 = 2# #length of codeword S1\n", + "P2 = 0.2# #probility of codeword '11'\n", + "L2 = 2# #length of codeword S2\n", + "P3 = 0.1# #probility of codeword '010'\n", + "L3 = 3# #length of codeword S3\n", + "P4 =0.1# #probility of codeword '011'\n", + "L4 = 3# #length of codeword S4\n", + "L = P0*L0+P1*L1+P2*L2+P3*L3+P4*L4#\n", + "H_Ruo = P0*log(1/P0,2)+P1*log(1/P1,2)+P2*log(1/P2,2)+P3*log(1/P3,2)+P4*log(1/P4,2)\n", + "print 'Average code-word Length L',L,'bits'\n", + "print 'Entropy of Huffman coding result H %0.2f'%H_Ruo, 'bits'\n", + "print 'Average code-word length L exceeds the entropy H(Ruo) by only %0.3f'%(((L-H_Ruo)/H_Ruo)*100),'%'\n", + "sigma_1 = P0*(L0-L)**2+P1*(L1-L)**2+P2*(L2-L)**2+P3*(L3-L)**2+P4*(L4-L)**2\n", + "print 'Varinace of Huffman code : ',sigma_1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.4 page 20" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average code-word Length L : 2.2 bits\n", + "Entropy of Huffman coding result H : 2.12 bits\n", + "Varinace of Huffman code = 1.36\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "# Calculation of (a)Average code-word length 'L' (b)Entropy 'H'\n", + "P0 = 0.4# #probability of codeword '1'\n", + "L0 = 1# #length of codeword S0\n", + "P1 = 0.2# #probability of codeword '01'\n", + "L1 = 2# #length of codeword S1\n", + "P2 = 0.2# #probility of codeword '000'\n", + "L2 = 3# #length of codeword S2\n", + "P3 = 0.1# #probility of codeword '0010'\n", + "L3 = 4# #length of codeword S3\n", + "P4 =0.1# #probility of codeword '0011'\n", + "L4 = 4# #length of codeword S4\n", + "L = P0*L0+P1*L1+P2*L2+P3*L3+P4*L4#\n", + "H_Ruo = P0*log2(1/P0)+P1*log2(1/P1)+P2*log2(1/P2)+P3*log2(1/P3)+P4*log2(1/P4)#\n", + "print 'Average code-word Length L :',L,'bits'\n", + "print 'Entropy of Huffman coding result H : %0.2f bits'%H_Ruo\n", + "sigma_2 = P0*(L0-L)**2+P1*(L1-L)**2+P2*(L2-L)**2+P3*(L3-L)**2+P4*(L4-L)**2\n", + "print 'Varinace of Huffman code = %0.2f'%sigma_2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.5 page 20" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probility of 0 receiving if a 0 is sent = probility of 1 receiving if a 1 is sent= 0.4\n", + "Transition probility\n", + "probility of 0 receiving if a 1 is sent = probility of 1 receiving if a 0 is sent= 0.6\n" + ] + } + ], + "source": [ + "p = 0.4# #probability of correct reception\n", + "pe = 1-p##probility of error reception (i.e)transition probility\n", + "print 'probility of 0 receiving if a 0 is sent = probility of 1 receiving if a 1 is sent=',p\n", + "print 'Transition probility'\n", + "print 'probility of 0 receiving if a 1 is sent = probility of 1 receiving if a 0 is sent=',pe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.6 page 21" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4e00050f10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,title,show,xlabel,ylabel\n", + "\n", + "\n", + "\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "\n", + "p = arange(0,0.5+0.01,0.01)\n", + "C=[]\n", + "for i in range(0,len(p)):\n", + " if(i!=0):\n", + " C.append(1+p[i]*log2(p[i])+(1-p[i])*log2((1-p[i])))\n", + " elif(i==0):\n", + " C.append(1)\n", + " elif(i==len(p)):\n", + " C.append(0)\n", + " \n", + "\n", + "plot(p,C)\n", + "xlabel('Transition Probility, p')\n", + "ylabel('Channel Capacity, C')\n", + "title('Figure 2.10 Variation of channel capacity of a binary symmetric channel with transition probility p')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.7 page 21" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nmff/xUXp9BgBdbUAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4de45b5e10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table 2.3 Average Probility of Error for Repetition Code\n", + "_______________________________________________________________\n", + "Average Probility of Error, Pe =\n", + "0.01\n", + "0.000298\n", + "9.8506e-06\n", + "3.416698e-07\n", + "Code Rate, r =1/n = \n", + "1.00\n", + "0.33\n", + "0.20\n", + "0.14\n", + "_______________________________________________________________\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,title,show,xlabel,ylabel,legend\n", + "\n", + "\n", + "#Average Probility of Error of Repetition Code\n", + "p =10**-2#\n", + "pe_1 =p# #Average Probility of error for code rate r = 1\n", + "pe_3 = 3*p**2*(1-p)+p**3##probility of error for code rate r =1/3\n", + "pe_5 = 10*p**3*(1-p)**2+5*p**4*(1-p)+p**5##error for code rate r =1/5\n", + "pe_7 = ((7*6*5)/(1*2*3))*p**4*(1-p)**3+(42/2)*p**5*(1-p)**2+7*p**6*(1-p)+p**7##error for code rate r =1/7\n", + "r = [1,1/3,1/5,1/7]#\n", + "pe = [pe_1,pe_3,pe_5,pe_7]#\n", + "plot(r,pe)\n", + "xlabel('Code rate, r')\n", + "ylabel('Average Probability of error, Pe')\n", + "title('Figure 2.12 Illustrating significance of the channel coding theorem')\n", + "#xgrid(1)\n", + "show()\n", + "print 'Table 2.3 Average Probility of Error for Repetition Code'\n", + "print '_______________________________________________________________'\n", + "print 'Average Probility of Error, Pe ='\n", + "for pp in pe: print pp\n", + "print 'Code Rate, r =1/n = '\n", + "for rr in r:print '%0.2f'%rr\n", + "print '_______________________________________________________________'" + ] + } + ], + "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/Digital_Communications_by_S._Haykin/Chapter3.ipynb b/Digital_Communications_by_S._Haykin/Chapter3.ipynb new file mode 100644 index 00000000..cb451838 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter3.ipynb @@ -0,0 +1,377 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3 Detection & Estimation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.1 page 120" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f3eb2943610>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f3eb26e6d10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange, ones, sqrt\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, subplot, xlabel,ylabel,title, show\n", + "\n", + "#using Gram-Schmidt orthogonalization procedure\n", + "T = 1#\n", + "t1 = arange(0,0.01+T/3,0.01)\n", + "t2 = arange(0,0.01+2*T/3,0.01)\n", + "t3 = arange(T/3,0.01+T,0.01)\n", + "t4 = arange(0,0.01+T,0.01)\n", + "s1t = [0]+[x for x in ones(len(t1)-2)]+[0]\n", + "s2t = [0]+[x for x in ones(len(t2)-2)]+[0]\n", + "s3t = [0]+[x for x in ones(len(t3)-2)]+[0]\n", + "s4t = [0]+[x for x in ones(len(t4)-2)]+[0]\n", + "t5 = arange(0,0.01+T/3,0.01)\n", + "phi1t = [sqrt(3/T)*x for x in [0]+[x for x in ones(len(t5)-2)]+[0]]\n", + "t6 =arange(T/3,0.01+2*T/3,0.01)\n", + "phi2t = [sqrt(3/T)*x for x in [0]+[x for x in ones(len(t6)-2)]+[0]]\n", + "t7 = arange(2*T/3,0.01+T,0.01)\n", + "phi3t = [sqrt(3/T)*x for x in [0]+[x for x in ones(len(t7)-2)]+[0]]\n", + "\n", + "#figure\n", + "title('Figure3.4(a) Set of signals to be orthonormalized')\n", + "subplot(4,1,1)\n", + "plot(t1,s1t)\n", + "xlabel('t')\n", + "ylabel('s1(t)')\n", + "subplot(4,1,2)\n", + "plot(t2,s2t)\n", + "xlabel('t')\n", + "ylabel('s2(t)')\n", + "subplot(4,1,3)\n", + "plot(t3,s3t)\n", + "xlabel('t')\n", + "ylabel('s3(t)')\n", + "subplot(4,1,4)\n", + "plot(t4,s4t)\n", + "xlabel('t')\n", + "ylabel('s4(t)')\n", + "show()\n", + "\n", + "\n", + "#figure\n", + "title('Figure3.4(b) The resulting set of orthonormal functions')\n", + "subplot(3,1,1)\n", + "plot(t5,phi1t)\n", + "xlabel('t')\n", + "ylabel('phi1(t)')\n", + "subplot(3,1,2)\n", + "plot(t6,phi2t)\n", + "xlabel('t')\n", + "ylabel('phi2(t)')\n", + "subplot(3,1,3)\n", + "plot(t7,phi3t)\n", + "xlabel('t')\n", + "ylabel('phi3(t)')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.2 page 121" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fa3f2804950>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Figure 3.8 (b).Representation of transmitted dibits\n", + "Loc. of meg.point| (-3/2)asqrt(T)|(-1/2)asqrt(T)|(3/2)asqrt(T)|(1/2)asqrt(T)\n", + "________________________________________________________________________________\n", + "Transmitted dibit| 00 | 01 | 11 | 10\n", + "\n", + "\n", + "Figure 3.8 (c). Decision intervals for received dibits\n", + "Received dibit | 00 | 01 | 11 | 10\n", + "________________________________________________________________________________\n", + "Interval on phi1(t)| x1 < -a.sqrt(T) |-a.sqrt(T)<x1<0| 0<x1<a.sqrt(T) | a.sqrt(T)<x1\n", + "0.0049504950495\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fa40942a910>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import sqrt,arange,random,sin,pi,zeros,multiply\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,xlabel,ylabel,title,show,grid\n", + "\n", + "#Signal constellation and Representation of dibits\n", + "a =1# #amplitude =1\n", + "T =1# #Symbol duration in seconds\n", + "#Four message points\n", + "Si1 = [(-3/2)*a*sqrt(T),(-1/2)*a*sqrt(T),(3/2)*a*sqrt(T),(1/2)*a*sqrt(T)]\n", + "plot(Si1,[0,0,0,0])\n", + "xlabel('phi1(t)')\n", + "title('Figure 3.8 (a) Signal constellation')\n", + "grid()\n", + "show()\n", + "print 'Figure 3.8 (b).Representation of transmitted dibits'\n", + "print 'Loc. of meg.point| (-3/2)asqrt(T)|(-1/2)asqrt(T)|(3/2)asqrt(T)|(1/2)asqrt(T)'\n", + "print '________________________________________________________________________________'\n", + "print 'Transmitted dibit| 00 | 01 | 11 | 10'\n", + "print ''\n", + "print ''\n", + "print 'Figure 3.8 (c). Decision intervals for received dibits'\n", + "print 'Received dibit | 00 | 01 | 11 | 10'\n", + "print '________________________________________________________________________________'\n", + "print 'Interval on phi1(t)| x1 < -a.sqrt(T) |-a.sqrt(T)<x1<0| 0<x1<a.sqrt(T) | a.sqrt(T)<x1'\n", + " \n", + "#Implementation of LMS ADAPTIVE FILTER\n", + "#For noise cancellation application\n", + "order = 18#\n", + "t =arange(0,0.01+1,0.01)\n", + "x = [sin(2*pi*5*tt) for tt in t]\n", + "noise =random.rand(len(x))\n", + "x_n = x+noise#\n", + "ref_noise = [noise*xx for xx in random.rand(10)]\n", + "w = zeros([order,1])\n", + "\n", + "\n", + "mu = 0.01*(sum(multiply(x,x))/len(x))\n", + "\n", + "print mu\n", + "\n", + "N = len(x)#\n", + "desired=[]\n", + "for k in range(0,1010):\n", + " for i in range(0,N-order-1):\n", + " if i < len(ref_noise):\n", + " buffer = ref_noise[i]#,i+order-1]\n", + " desired.append(x_n[i]-buffer*w)\n", + " w = w+(buffer*mu*desired[i])\n", + " \n", + "\n", + "subplot(4,1,1)\n", + "plot(t,x)\n", + "title('Orignal Input Signal')\n", + "subplot(4,1,2)\n", + "plot(t,noise)\n", + "title('random noise')\n", + "subplot(4,1,3)\n", + "plot(t,x_n)\n", + "title('Signal+noise')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.3 page 123" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f527e136a50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,sqrt,cos,pi,convolve\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,show\n", + "\n", + "\n", + "fc =4# #carrier frequency in Hz\n", + "T =1#\n", + "t1 = arange(0,0.01+T,0.01)\n", + "phit = [sqrt(2/T)*xx for xx in cos(2*pi*fc*t1)]\n", + "hopt = phit#\n", + "\n", + "phiot = convolve(phit,hopt)#\n", + "phiot = [yy/max(phiot) for yy in phiot]\n", + "\n", + "t2 = arange(0,0.01+2*T,0.01)\n", + "subplot(2,1,1)\n", + "plot(t1,phit)#\n", + "title('Figure 3.13 (a) RF pulse input')\n", + "subplot(2,1,2)\n", + "plot(t2,phiot)#\n", + "title('Figure 3.13 (b) Matched Filter output')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.4 page 124" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAEKCAYAAADzQPVvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXm8VWP3wL+rCSUVUVREhQx5TckQIaTImGRIZB7KTBmq\nnyFTyjyUEhnfhJCKVLxCIUkDoiINSnNpvOv3x9q3dqdz7z33nmGfe+/6fj7nc+/Z+9nPXmeffdZe\nz3rWs5aoKo7jOE7JpkzUAjiO4zjpx5W94zhOKcCVveM4TinAlb3jOE4pwJW94zhOKcCVveM4TinA\nlX1EiMgKEakbtRxRIyI9RaRzgm0Hi0iLNMqye/C9SLrOEXO+LiLSN/i/rojkiEhSv0kRaSoi01Mj\nYfrI1P0vIrNE5MR0n6c44Mo+zQQ32+rg5l4hIstFpKaqVlbVWVkg3/Ei8qOILBGRxSIyUkT2y6f9\nfSIyWUTWi0i3OPt3FpHXRWRp0N+gfPraGbgYeD5BcR8G7s+nv2aBwnwmZvv/ROSSgjpX1T+C7yVl\ni0/yU+Kq2lNVr0jVuYI+v1DVfVPZZ14En2uvohybwftfg1epx5V9+lHgtODmrqyqO6jq/HSdTETK\nFvKQKcCpqloNqAFMBPrn0/5X4DbgI+L/iIYAc4E6wM7Ao/n01QH4SFXXJiKoqk4AdhCRQ/Nptgq4\nSET2CB+ah6xO8mRkFOQkjyv7iAhbRSKyk4h8ICLLRGS8iNwvIl8E+7ayDEVkjIh0DP7vICJfisjj\nIrII6CYiFUTkMRGZLSLzReQ5Edk2nhyq+req/hW8LQPkAPPykltVX1HV4cAKYn7oInIyUBu4XVVX\nqOpGVZ2Uz2VoAYwNHV9VRD4Ukb+DUcEHIlIr5pgxQKt8+lwKvAxsNeoIziEicncw4logIgNFZIdg\n3xbXOri2vwWjsd9F5IJQP5eJyNRAzuEisns+MsVFRLqLyKt57DtHRGaKyH6BzHeKyAwRWSQib4lI\ntTyOayYif4bezxKRW0RkUjDaelNEtgm1nRO4kxYG5wt/xk33Weh65N6XnwebJwUj1jZxZKkvImOD\n8y4UkTdD+xK6/0NtrxKRX8RGoE+H9tUTkc+C67JQRAaJSJUCL34pxJV9ZijI+nkGU541gEuA9uRv\nicZaqo2B34BdgAcxd0d94KDgby3g3jyFM1/1EmA1pkg75tW2AJoAPwMDgx/feBE5Np/2BwbtcykD\nvATsHrz+BZ6OOWYa9rny40HgHBHZO86+S7Fr3AzYC9g+zjkQkUrAE0ALVd0BOBL4Idh3BtAFOAuo\nDnwBvFGATPGI9x2LiFwKPAScqKpTgU5Aa+BYYFdgCXbPJHqONsApwJ5AI2xElUsNYCdgN+y6vCgi\nDULHxr0PVTX3e20UjFj/G6fZfcBwVa2K3YNP5iFjIvd/K+CwQP7zROSU0L4HsOvSEBtRds/jPKUa\nV/bpR4D3AotkiYgM2WKnuV3OBrqp6hpVnQYMpHDD47mq+oyq5gBrgSuAm1V1qaquBHoC5+d1cOCr\nroYprknAgMJ8wBC1gZOBz7Afbi/gfRHZKY/2VbEfea4ci1X13eA6rMSU9nExx6wMjssTVV2AzQP8\nX5zdFwK9VHWWqq7ClPb5En9iNAc4UES2U9UFgeIFuBroqao/B9e8J/AfEamTn1xxiPcd3wTcChyn\nqr8H264C7lbVuaq6HugBnJuHzPF4UlXnq+oS4APgPzH771HV9ar6Oeaea1vIz5EX64C6IlJLVdep\n6rjYBoW4/x9S1eWq+icwOvczqOpvqjoqkH8R0Jut7xkHV/aZQIEzVLVa8Do7Zv/OQDngz9C2OYU8\nR/jYnYGKwHe5DxjgY0yR5y+oKYNbgdNzXRuF5F9gpqoOCFw4bwWyHZ1H+yVA5dw3IlJRRF4IXA/L\nMBdPFZEtomMqY66agngEOEVEGsVs3xWYHXr/B3b9a4QbBQ+Ctphinxu4l/YJdu8BPBG6vv8E22Nd\nTkXhFuAZVZ0b2lYXeDd0vqnAhliZ8yE8R/QvNprJZYmq/ht6Pxu7RqngdkxpjxeRn4IRSyyJ3v/h\nz7Ca4DOISI3ANTUnuGdexUYqTgyu7KNnIfbDDVuF4f9XBX8rhrbVjOkjPORdhP2g9ws9YKoGrohE\nKI9ZtIlMmsYOteP55/ObHP0R2Cf0/hZgb6CxqlbBLDRhSyuvIYE7JV/BVP8B+rB19M5cTHnmsjt2\n/RfE6WOkqp6MXe/pQN9g1x/AlaHrW01VK6nq1wXJFXuKONtOBu4WkbBR8AfmTgqfr6Kq5jm3Ugiq\niUj43toDu0Zg916l0L7Y+y5fgtHQlapaCxudPCtbR+8UdP/n2X3w90FgI3BAcM9cjOu1uPhFiRhV\n3YhFsHQXke1EZF/shtVg/0LgL+BiESkrIpcB9fLpLwdTSn3EQhsRkVpik6dbISJnicjeIlImaP84\nMCyvCBkRKSc22VsWKC8i24bcCe9iyqN9IOu5mLX7ZR7iDmPLIff22INqmYjsSPxJ1mOxkUoiPI75\n2huGtr0B3CQ2Gbs9pizeDK5b+HPuIiJnBL779Zji2xjsfh7oKkGIqohUiTdBGcO2wbXKfcU+xHKZ\ngk1cPyMip4fO96AEk8Bi4a2tE7sECdFDRMqLSFPMN57rf/8BODu4L+uz9VzOAvK5F0WkjYjUDt4u\nxe7pLa5zQfd/Xl2H/t8e+26Wi03m35bPcaUaV/bREb6ZrweqYEPVgZhCWhfafwV2Ey8C9mNL5RnP\ncr4DmAF8HQxtP8Es5njUAoYDy4HvMdfKpph0sUie50Lt+2HD6POBu4L/L4JNbqDWmCtoKTaMP0NV\nF+dx7leAlrI5UqgPsF3wOcdhSn3TZxORw4EVqvptHv0Rbq+qKzB3TjhypT821P8c+D2Q/4Y4x5fB\n/Od/YW6apsA1Qb/vYZPgbwbXdzI2AZofK4NzrcaU0wls/d3lPuB/BE4D+gYTkU8AQ4GRIrIc+Aqb\nlC/wGuSxL7x/Pvadz8Wuy1Wq+kuwrzd2Hy7A5nEGxRzbHZuMXxI82GM5DLsHVwDvA51CsfWFuf9j\nP0/4fQ/gEGAZNh/xTpz2DiAFrR8RW7HYB7Pk+qnqwzH798VuhIOBu1S1V6LHOvERkYeBXVQ1no+z\nRCEiDwB/q+oTCbQdjN1Hw9MvWclHRJoBr6pqYSeW00ppuv8zSbn8dgYz5U8DzTELZ4KIDA1mzHP5\nB7OMzizCsQ4QTPxtg1mIhwOXUfTwx2KFqt5ViLbxrEenmFOa7/9MUpAbpzEwIwhTWw+8CZwRbqCq\nC4Nh9frCHutsojI2/FyJXafHVHVotCI5pYRscHn4/Z8B8rXsMX9ubEjUEQn2ncyxpYrgYdmgwIaO\nk0JUdQwWjRS1HH7/Z4CCLPtknvrZYDE4juM4FGzZ/8XW8a+JLvhJ6FgR8YeC4zhOEVDVhFfaF2TZ\nfws0CGKSK2ArCvPypcWeNOFjVTXrXt26dYtcBpfJZSqNcrlMib0KS76WvapuEJHrgRFY+ORLqjpN\nRK4K9r8gIjWBCcAOQI5YIYr9VHVlvGMLLaHjOI6TNAW5cVDVj4lZsaiqL4T+n08ey5vjHes4juNk\nHl9BmwfNmjWLWoStcJkSw2VKnGyUy2VKDwWuoE27ACIatQyO4zjFDRFBUzhBi4i0EJHpIvKriNyR\nR5sng/2TROTg0PbOYvVKf5IEi0o7TjJ8+y089xwsXx61JI6TXeSr7EMpD1pgCbjaiUjDmDYtgfqq\n2gC4Engu2H4AcDm2/Pkg4DQRyTNDnuMkywcfwKmnwvDhsOeecMstMHt2wcc5Tmkg6XQJWJbDgQCq\n+g1QNYjQaQh8o1Z9ZiNWiCK2cIfjpIQXX4Qrr4SPPoL334fvvwcROOQQOP98GD8+agkdJ1oKUvbx\nUh7EVuOJ12Y3LKlRUxHZMSiO0AorW+c4KUMVunWDRx6BL76AxkHi3z32gMceg5kzoUkTOO88OOYY\nGDIENm7Mv08nGjZsgKuvhlGjopakZJKqdAlbTRKo6nQs5/dILPxyIjGFCxwnGdavh8svh2HD4Msv\noX79rdvssAPceCPMmAGdO8Ojj0KDBvDkk7Bixdbtnei46y747jto185cck5qSUW6hNg2tYNtqGp/\nrFgEIvIgVl5tK7p3777p/2bNmpWIMCcnvaxaZda6KoweDdtvn3/7cuWgTRt7ffUVPP449OgBHTvC\nDTdAnazK6F76ePtteOstm2CfORNOPx2eeALapqr0eQlgzJgxjBkzpugdFLActxzwG1azswJWpqxh\nTJuWWBk7gCbA16F9uwR/dwemATvEOYc6TmFYsED18MNVL71Udd26ovfz+++qN96oWq2aart2qhMm\npE5GJ3F+/FG1enXV777bvG3SJNVdd1V96aXo5Mp2At2ZcHqFfN04qroBKxk2Aqto/5YG6RJCKROG\nAb+LyAzgBeDaUBeDRWQKlhPnWlX1gDgnKWbMgKOOghYt4KWXoHz5ove1557Qu7dZkoceCmefDcce\nC++95379TLFkCZx1lo20Djlk8/ZGjWDMGOje3VxuTvL4oiqn2DBhArRubQrgqqtS3/+GDfDOO9Cr\nFyxebL7+Sy+FSpVSfy7HHqinnw577w19+sRvM2sWNG8Ol10GXbtmVLysp7CLqlzZO8WCYcPgkkvM\nmm/dOr3nUoVx48zaHDsWrrgCrr8easXGoTlJcffd8L//wSef5D9CmzfPFH7r1vDggxZS66RhBa3j\nRE3//mbZDR2afkUPpkyOPtqs/G++gdWr4cAD4eKLLX7fSZ4hQ+DVV21itiBX3K672kN35Ejo1Aly\nPKavSLhl72QtqnD//TBgAHz8MeyzT3SyLF0Kffua/7h+fbj5ZmjVCsq4uVRopk6F446z0drhhyd+\n3LJlds0bNIB+/aBs2fTJWBzIttw4XURkSpAf53UR2SZRwZzSTe4Cm3ffNZdKlIoeoGpVuO02+P13\nW6nbowfsu6/l4Vm1KlrZihPLlsGZZ9oiuMIoeoAqVWDECJgzx2Lx161Lj4wllXTmxqkLXAEcoqoH\nYgVMzk+x/E4JZPVqi4yZOdOG7zVrRi3RZsqXN0UzYYLNH4wcCXXr2oKguXOjli67ycmBiy6Ck06y\nie+iUKmSLbhau9bukX//Ta2MJZl05capASwH1gMVRaQcUJFgsZXj5MWiRXDiiWZJf/ghVK4ctUTx\nEYGmTW3k8dVXZrHuv79NIv/wQ9TSZSf33Wehlr17J9fPttvC4MF2b7RqBStXpka+kk66cuPUUtXF\nQC9s1excYKmqfpqcuE5JZuZMmxg9/ngYOBAqVIhaosSoXx+efhp++w0aNjQFdOKJlpTNJxONoUNt\nzmPw4NR8r+XLw6BBUK8enHyyzak4+VNQuoQi58YJ0hnfiK2+XQb8V0QuVNXXYtt6ugTn++8t5rpL\nFwtzLI7suCPceadN3r79NtxzD9x6K9x0k0XybLdd1BJGw88/Ww6joUNT65IrW9aynd50kxkII0fC\nzjunrv9sI93pEpoAw0PvuwB3xLR5Hjg/9H46UANoC/QLbb8YeCbOOVK3ftgplowYYcvl33knaklS\nS06O6ujRqqefrrr77pYWoLSxbJnqvvuqvvhi+s6Rk6N69912njlz0neebINUpksAvgUaiEhdEakQ\nKPChMW2GAu0BRKQJ5q5ZAPwMNBGR7UREgOZYygWnCDz/vFmLJS0C4ZVXzOp9912bcCtJiECzZmbR\nPvSQuXZGj45aqsyRk2NzGE2b2sK0dCFi8wEdOli6i5kz03euYk1BTwPgVExxzwC6BNuuAq4KtXk6\n2D8Ji77J3X47MAXLbT8QKB+n/0w8BIs1U6eq7ryz6nHHqdasqXrXXaqzZkUtVXLk5Kg++KDqHnvY\n5ysNfPaZfY+vvx61JJnh/vtVjzhCdc2azJ3zmWdU69RRnTYtc+eMCgpp2SfcMF0vV/YF07at6kMP\n2f9Tpqh26qS6446qp52m+uGHqhs2RCtfYdmwQfXaa1UbNVL966+opcksP/5oyuiRR+yBV1IZNkx1\nt92icau8/LIZRRMnZv7cmaSwyt5X0GY5kydbXPKMGVvmbF+1yvJ/P/ccLFxoC306doQaNaKTNRH+\n/RcuvNCiJ9591xbKlDbmzLFauc2aWQKwkrYSNDcz6ZAhVh0sCgYPhuuusxKVTZpEI0O68dw4JYwe\nPWzlZmxxjkqVLF/MhAl2Y//+u60ybdvWUsNm4/Nz8WJLaLXttpb+oDQqeoData2E4pQpVkylJC0M\nWrnSUhZ37x6dogc491xLs9G6tf0enDSmSxCRfURkYui1TEQ6pfoDlGR++MFSBVxzTf7tDjvMcoXM\nmmU/sOuug/32s0o/S5ZkRNQCmT3bYuiPOsrio7cp5Ykzqla1B96229oD8J9/opYoeVTNADn88ILv\n2UzQsqWNfs87z/LwlBRmz7YV24UmPx8PluJgBhYrX56CK1UdQahSVahNGWAeUCfOvjR7toovrVur\nPvFE4Y/LyVH9/HOrvlSlilV0+uab6HzEP/ygWquWap8+0Zw/m9m4UfX221X32ccqZxVnHn5Y9bDD\nVP/9N2pJtuSrr1R32UX1v/+NWpKis3GjzYOcfrrN13XqlOIJWuBItoyzvxO4M6bN80Db0PvpQI2Y\nNicD/8vjHOm+TsWSCRNUa9dO/oezYIFN7u65p+ohh1i888qVqZExET791CJQ3norc+csjjz1lE1o\nfvtt1JIUjREjbFL0jz+iliQ+EydamcOXX45aksKxcKE9RPfay36//fpt/v2mWtmfC/QNvb8IeCqm\nzQfAUaH3nwKHxrTpj5UldGWfIKeeqvrss6nrb+NG1Y8/ttFCtWqq112nOnly6vqPx2uvmUU1Zkx6\nz1NSGDLEHowffxy1JIXj99/tex49OmpJ8mfaNIuEeuaZqCXJn5wc1S+/VL3oIhuZX3JJ/JF5YZV9\nutIlbDouWIx1OhDX3w+eLiGWr76yybt3301dn2XKWN3WFi3gzz/Nx3/KKbDXXuZfPeec1PnRVeGx\nx+Cpp2DUKDjggNT0W9I56yyLpjr7bOjZs+iZITPJ6tUmd9euFl2Uzey7r2VRbd4cVqyAO/LUSNGw\nciW89trmtNlXX23RWjvtZPuzNl1C6P0Z4T7inCMNz8bizUknpXd5eS7r1lmKgubNzaK87TbVGTOS\n63PjRtXOnVX33z97h/TZzvTp5nbr0SO7Y/FzclQvuMAs0GyWM5Y5cyy1wt13Z4fcP/1kI+1q1VTP\nPFN15Ej7HRUEKXbjlAN+wyZoK1DwBG0TYiZosbTIl+RzjqQvVkni88/th75uXWbP+8svqrfcYjlq\nTjlF9d13VdevL1wf//6r2qaNrfRdsiQtYpYa5s0zH+3llxf+e8gUjz+uevDBqqtWRS1J4fn7b9X/\n/Ef1xhujUfhr16q++abqscfaXMc99xTeOEqpsrf+kkqXUAlYBFTOp/8iXq6SSbNmqgMGRHf+f/9V\nfeUV1aOOsgia7t0TWwW5eLHduG3aZF80RnFl+XLVFi1UW7ZUXbEiamm2ZNQo1Ro1VGfOjFqSorNk\niWqTJvZAzdQq9NmzVbt2tWt3/PGqb79ddMMu5co+3S9X9psZNUq1QYPsseQmTVK95hobXp51Vt7D\nyz/+MLfNjTcmNvx0EmfdOgudPeww1fnzo5bGmDXLlNWnn0YtSfKsWGFK9/zz0zeazg2OCIdNpiIf\nlCv7YkpOjurRR6sOGhS1JFuzfLnq88+rHnSQav36qo8+aiFhqptzvTz2WLQylmRyclS7dbPwu59/\njlaW1avNvfToo9HKkUpWr1Zt1coi1VI5Kl240HIg7bWXubv69k1t2LMr+2LKiBGqDRtmd1KznBxb\noNK+vYWEnXde6criGDV9+5p/96uvojl/To59923bZsfEZipZu9ZckM2bJ6eQc3JUx41Tvfhi+420\nb6/69dfpuV7p8Nm3CCJsfo2NxAm1eTLYPwk4OLS9KjAYmIblsm8S59jUX4ViRk6OauPGxWvh0T//\nqD75pE0oO5njo4/sAfvee5k/91NPqR54YGYX5WWSDRtUO3SwEfbSpYU7dsUK1RdesEnfevVs5LNo\nUXrkzCXV0ThJpUvActhfFvxfDqgS5xzpvSLFgA8/VD3gAPd3O4kxYYKtBk3loruCGDvWFk4lG5qb\n7WzcqHr99eaqynVV5seUKda+WjXVM85QHT48c7/jwir7ghKhNQZmqOosVV0fhFGeEdOmdaDUUdVv\ngKoiUkNEqgBNVbV/sG+Dqi4r4HylDlW4917LblnGc5A6CXDYYfC//0Hv3lazV9Oc4XTOHDj/fKsq\nVq9ees8VNWXKwJNP2oLD446DefO2brNunSVYa9bMqo9VrQqTJsF779lx2fo7LkisWsCfofdzgm0F\ntakN7AksFJEBIvK9iPQVkYrJClzSeP99+7GedVbUkjjFib32soyoY8ZA+/bpK1e5Zo2tru7UyRRZ\naUAEHnzQ6i40bWpZJgH++APuvhv22MPKhF57re277z6oUydamROhIGWfTLqEcsAhwLOqegiwCkuk\n5gTk5EC3bmbVS8IlCBzHqF7d0lGsWGHpfJeleNysaumy69TJvtQCmaBrV3vIHXssnHEG/Oc/sHy5\nXfPRoy11coUKUUuZOAXlxvkLCD+z6mCWe35tagfbBJijqhOC7YPJQ9mX1tw4Q4ZYPprTTotaEqe4\nUrEivPPOZqU0bBjUih17F5EXXoCvv7ZXaTVGOnWyh92iRZa3JraIUCZJNjdOvmUJRaQctnr2RGAu\nMB5op6rTQm1aAteraksRaQL0UdUmwb7PgctV9RcR6Q5sp6p3xJxD85OhpLJxIzRqBL16WXIyx0kG\nVXjkEXj2WVP4+++fXH/jxsGZZ8KXX0KDBqmR0UkthS1LmK9lr6obROR6YAQWmfOSqk4TkauC/S+o\n6jARaSkiMzBXTThX3w3Aa0Hmy99i9pVq3n7byvKVFj+ok15EzNVSqxaccILdX8cdV7S+5s41F8WA\nAa7oSxJZUXA8J0dL1TBxwwazvJ591mbzHSeVjBoF7drB00+b0i4M69ZZlMmpp8I996RFPCdFFMuC\n4889F7UEmeX116FmTbPAHCfVnHgifPop3HKLhWcWhs6dYZddiljj1MlqssKyr15d+fhjix8u6axf\nDw0bwksvFX2Y7TiJ8McfZqGffLLNDRUU/92vnxWdGT8edtghMzI6RafYWvbnnQdLlkQtSfp55RWo\nW9cVvZN+dt/dFl9NnAht21rMfF58840t0HrvPVf0JZUClb2ItBCR6SLyq4jEjbYVkSeD/ZNE5ODQ\n9lki8qOITBSR8Xmd49xz4fTToUOH9K8GjJJ162wBRo8eUUvilBaqVYMRI6BsWbPwFy/eus2CBfYb\n7NvXSvc5JZN8lb2IlMUKk7QA9gPaiUjDmDYtgfqq2gC4Egh74BVopqoHq2rj/M716KMwfz48/ngR\nPkUxYcAA+zEdfXTUkjiliW22sXmixo3hmGM2rwgFcyu2aWP1bs88MzoZnfRT0KKqTblxAEQkNzfO\ntFCbLXLjiEhVEamhqguC/Qn5lCpUsHwTRxwBTZqUPIW4Zg3cf78tgHGcTFOmjPnj69Sx39aHH9qK\n0FtugcqVIbSu0SmhFKTs4+W9OSKBNrWABZhl/6mIbAReUNW++Z2sbl2buGzXDr77DnbeOYFPUEzo\n189+XI3zHd84Tnrp3Nli8U8+GS64AD7+GCZMyN7kXU7qKEjZFzU3Ti7HqOpcEdkZ+EREpqvqF7GN\nYtMltGvXjIsvtpWAJeEm/Pdf6NkTPvggakkcx/zzNWvCNdfYhGzVqlFL5CRCutMlNAG6q2qL4H0X\nIEdVHw61eR4Yo6pvBu+nA8eF3Di57boBK1W1V8z2rdIlrF9vMegtWpSMeN/eveGLLywXjuM4TipI\ndejlt0ADEakbpDxoCwyNaTMUaB+cvAmwVFUXiEhFEakcbK8EnAxMTkSo8uXhzTdtBeDo0Yl+lOxk\n1SrLWeI+UcdxoiSduXFqAkPE8iCUA15T1ZGJClarFgwcCBddZP77mjUL/+GygWeesWyEjRpFLYnj\nOKWZrFhBm58M3brB55/b8u+yZTMoWApYsQLq17fRyX77RS2N4zgliWK5gjY/7r3XlHy3blFLUnie\negqaN3dF7zhO9GS9ZQ+2wu/QQ22F36mnZkiwJFm2zKz6L7+EvfeOWhrHcUoaKbfsk0mXEOwrG6RL\nKHLgYY0atgLw0kvhzz8Lbp8N9OkDrVq5onccJztId7oEgM7AVBKP2Y/LscfCjTdaQqf165PpKf0s\nWWIuHM8H7jhOtlCQZb8pXYKqrgdy0yWE2SJdAlBVRGoAiEhtoCXQjwTTJuTH7bdbYqcuXZLtKb30\n6gVnnQX16kUtieM4jpHudAm9gduAlCRNLVPGUgQfcgg0bWoV37ONRYssZfN330UtieM4zmbSlS5B\nROQ04G9VnSgizfI7ODZdQrNmeTffaSdLmNa6NRx4IOy1V4ISZojHHrPc/HXrRi2J4zgliWxNl9AM\n6ARcDGwAtsWs+3dUtX3MOQqMxolHnz4waJBFu2yzTaEPTwsLFliY5aRJULt21NI4jlOSKWw0TkHK\nvhzwM3AiMBcYD7RT1WmhNi2B61W1ZfBw6KOqTWL6OQ64VVVPj3OOIil7VTjnHNhtN0urkA3ccotN\nHj/5ZNSSOI5T0imssk9nuoStuktUqEQQgf79rW7tW29ZlE6UzJ0LL78MP/0UrRyO4zjxKBaLqvLj\n++/hlFOs1uY++6RQsELSqZMlcOvVq+C2juM4yZJSN04mSFbZA7zwgiUc+/prqFgxRYIVgjlz4KCD\nYNo02GWXzJ/fcZzSR6lU9qqWHXPbba3SVaa55hqoUgUeeijz53Ycp3SSNekSRGRbEflGRH4Qkaki\n0jPxj1E4RMy6HzfO/OaZZNYsePttuPXWzJ7XcRynMKQtXYKqrgGOV9X/AI2A40XkmNR/BGP77eG/\n/4XbbsvsJOkDD5hlX7165s7pOI5TWNKaLkFVVwdtKmDRPItTJXg8DjjAFjWdey6sXJnOMxm//Qbv\nvmshl471Ij/KAAAgAElEQVTjONlMQco+r1QIBbWpDZsyXv6ApU4YrapTkxO3YC65BI4+Gq66ynz5\n6eS+++CGGyxfj+M4TjZTkLIvaroEBVDVjYEbpzZwbEFpE1LFU0/B5Mnw4ovpO8cvv8BHH1kmTsdx\nnGynoNw4fwF1Qu/rYJZ7fm1qB9s2oarLROQj4DBgTOxJCpMbJxEqVjT//THHwOGHW+K0VNOjB9x0\nk0XhOI7jpJt058YpcroEEakObFDVpSKyHbYKt4eqjoo5R9Khl3nx1lvQtatloKxaNXX9Tp0Kxx8P\nM2ZA5cqp69dxHCdRUh5nLyKnAn3YnC6hZzhdQtAmN2JnFXCpqn4vIgdiE7dlgterqvponP7TpuwB\nrr/eUhm8846FaKaC886zNA23356a/hzHcQpLqVxUlR9r19qE7UUXpca//uOPlp5hxgyoVCn5/hzH\ncYqCK/s4zJwJRxwBQ4dCkyYFt8+Ps8+2wik33ZQa2RzHcYqCK/s8eP99S1b2/fdWAKUofP89nH66\nWfXbbZda+RzHcQpDytMlBJ0WNWVCHREZLSJTROQnEemUqGCp5owzoE0baN8ecnKK1ke3blb/1hW9\n4zjFjURy4xQ5ZQKwHrhJVfcHmgDXxR6bSXr2hCVL4JFHCn/s+PFWgeryy1Mvl+M4TrpJxLIvcsoE\nVZ2vqj8E21cC04DdUiZ9ISlf3sIx+/SBsWMLd+y998Jdd1lmTcdxnOJGIso+qZQJuYhIXeBg4JvC\nCplK6tSxzJgXXmg1YxPhyy9h+nS4NK8aXI7jOFlOIso+qZQJACKyPTAY6BxY+JHSogV06GAKf+PG\ngtt36wb33AMVKqRdNMdxnLRQULoESDJlgoiUB94BBqnqe/FOkOp0CYnQvTucdBL83/9Z6oO8GDvW\ncta3b592kRzHcfIkrekSIOmUCYL58v9R1biR6ZkKvYzH/Plw6KEwYACcfPLW+1WhWTPo2NGVveM4\n2UXKQy9VdQNwPZbbZirwlqpOE5GrQmkThgG/i8gM4AXg2uDwo4GLsMIlE4NXi8J9pPRRsyYMGmRp\nkf/6a+v9o0bZA+GCCzIvm+M4TiopNYuq8uOBB2D4cPjsM4vYAbPqjz7a8tW3axepeI7jOFuRlkVV\nJZ0uXSzPzd13b942YgQsW2ZJzxzHcYo7ruyBMmXMnfPGG/DBB2bV33OPTdyWLRu1dI7jOMmTSDRO\nqaB6dXjzTTjrLLPw162zpGeO4zglgbTmxgm29xeRBSIyOVVCp4ujjrIc9Z06QZs2YyiTZeOeZMKu\n0oXLlBjZKBNkp1wuU3pId24cgAHBscWCm2+G996D9evHRC3KVmTjDecyJUY2ygTZKZfLlB7SmRun\nZvD+C2BJ6kROLyKWITNVVa0cx3GygXTmxolt4ziO40SFqub7As4B+obeXwQ8FdPmA+Do0PtPgUNC\n7+sCk/PoX/3lL3/5y1+FfxWkv8OvtOfGKYjCLApwHMdxikYibpxvgQYiUldEKgBtgaExbYYC7QGC\n3DhLVTXBBMKO4zhOukl3bhxE5A1gHLC3iPwpIp4V3nEcJ8NEnhvHcRzHST+RLhtKZLFWhuXJugVg\n2VS0PYyIbCsi34jIDyIyVUR6Ri0T2LqQILvqB1HLkouIzBKRHwO5xkctD4CIVBWRwSIyLfj+mkQs\nzz6hzLgTRWRZNtzrItIl+O1NFpHXRWSbqGUCEJHOgUw/iUjnhA4qzGxuKl9AWWAGFqlTHvgBaBiV\nPIFMTbHSiXEjh9J43hVA3Tz21QT+E/y/PVZbINLrFJKtYvC3HPA1cEyS/fXEqpkBNAP+zKftY8DV\ncbbfDLwGDI3getQFcoAyMdtnAjsWob9ZwImFPGYYcHHwfwfgizzaDQQuC31/VaK+n0KylQHmAXUi\nlqMu8DuwTfD+LeCSLLg+BwCTgW0DPfoJUK+g46K07BNZrJVRNM0LwAILb7WIrAhey0WkpqpWVtVZ\neciUsaLtInJ8YIEuEZHFIjJSRPbL55AuwSjoXywaa3FMfzsH1tDSoL9B+Zx7Z+Bi4PkExX0M6BpU\nQsvtozbQEugHVBSRHBH5PuY81UVknYjMTOQkItJBRL5IUKZ8uyrCMbkhdlt3JvKyiKwN3UsrRKSN\nqrZU1VfzOCZHRPYSkSpAU1XtDzYvp6rLiiBfkQkCPnJEJJ4Oag78pqp/xtlXlP6KynJgPXYvlQMq\nkmCUYZrZF/hGVdeo6kZgLFBgJq8olX1pXIilwGmBcq+sqjuo6vxED5ZCFm0PUl0UhinAqapaDagB\nTAT659N+BvYDAJipqlNj9g/BqpvVAXYGHs2nrw7AR6q6NhFBg+s2HVu9nUtv4DbMus5lOxHZP/T+\nAsxay+RklQKfisi3InJFCvt8OHQvVVbV/yZwnAB7AgtFZICIfC8ifUWkYr4HmbJLB/EegucDr6ew\nvyKhqouBXsAf2H28VFU/TVX/SfAT0FREdgy+t1ZYuHu+RKnsfWY4INfiCv7fSUQ+CHyW40XkfhH5\nQqxo+1BMca4OHTtGRDoG/3cQkS9F5HERWQR0E5EKIvKYiMwWkfki8pyIbBtPDlX9W1VzLZcymNKc\nl5fcqjpQVethNYb3EJFmIblOxm7A21V1hapuVNVJ+VyGFpiFEnttuojIQhGZKSKxNcPGYDc6InIa\n8LeqTmTLH/yrwCWh9xcDr4TbiMidIjIjGGlNEZEzg+0NsTxPRwaW8+Jg+3Yi0isYqS0Nvp+wL/ei\n4HovFJGu2ILDg4FTgR4iMkdEFonIWyJSLSTHxcFxi4LjCk34fojZ/nnw7yTgS+BQ4FngXuBM4J/g\n3jkwdMwsEbldRH4EVsSzmkXkKBGZEFyH8SJyZMzxJ4bedxeR3FFHrjxLg+veJLh/xwHtgJ5i8wkn\nFKG/FSJyRGJXLG9EpB5wI+bO2Q3YXkQuTLbfZFHV6cDDwEjgY8woy8n3IKJV9oks1iqJFGR5PIP5\n8GtgSiq3+u07QLyC7bFD/cbAb8AuwIPYTVEfOCj4Wwv7gccXTmR3EVmCPVBaAVspjjisB34BDgtt\na4LNLwwMlNd4ETk2nz4ODNqHqQnshP3QLgFeFJG9Q/unB58L4CigdeCeeSN4L5j//nwx9sPmPWJH\nRjOw+YYdgB7AIBGpoVZn+Wrgq8By3jFo/xg2wjoS2BEbTYS/g6OBvbG6zfcCOwTbLwA2AC8Bu2Iu\nw2cAAtmeBS4MPu9OFGytxbuX4rp+VDX32jcC6mGj6lxZugCjsLDpoRJyjWFW9qlAVVXdQqGIyI7A\nR0Af7Do8DnwUeoDFyhL+v2nwt0owwv06eN8Ym6vYEegGDBGRqoXsr7Jajq5kOQwYp6r/qIWgD8Hu\nq8hR1f6qepiqHgcsZevfzlZEqewTWaxV0hDgPTGf+BIRGbLFTnO7nA10C/xx07CJtL2xNQ75uVRy\nmauqzwQ/zLXAFcDNqro08Pn3xH7AcVHVPwI3TnXMChwQ94OY7zv3R1gWUyATQ01qAycDn2EPrl7A\n+yKyUx6nroo95GK5R1XXq+rnmGIJ1w5bERyHqnZV1Tqqumfw+cZhymAO9kM4CXtwvhLnMw/Odaep\n6tvAr0CuZbiFQg2s20uxieR5qpqjql+r6rpQsx6qulZVf8Qm0nL7ugbzA38ZzFP1AM4NvvdzgQ9U\n9X9BX/eQv7UmwK2he+nvfNrGft75mLK/DVPwtYEpqvoKds/kRuYo8KSq/pWHe60V8LOqvhZchzex\nB/Dp+cgc7/8w64CHgpHg29h31yqJ/pJhOtAkGMkJNpcQ66qMBBHZJfi7O3AWCbi9IiteoqobRCR3\nsVZZ4KVAuUWG2AKw44CdRORP4F5VjavsiogCZ6jqZ3ns3xn7TsJzGdtgVvrxmPIU4BRs+BaP8LE7\nYz7172RzGk8hscV0S0TkVmCeiOygqstjmuyKWe1lgD2A8ao6KrT/X8yPn3v93hKRuzCrN95DfQlQ\nOXabqv4bej+bLSenK2NWTdyPEPr7CqagjwSOwSa4NiEi7YGbsOE6mPWf10OpOhYF8Vse+wHC8zAb\ngPtF5Gbsob0Ouxbh/TWw67lpZKuqq0Xkn3zOocCjqprnKK0AbsDcZpWBjcAqEbkSi4wLX+P8Jkl3\nw/zZYWZT9Lm3CsH5w0ZQ7HeeMVR1koi8ghmmOcD3wItRyBKHwYHhtB64Ns7vcysirVSlqh+Tt9LK\nOKoadWnxhdiPvw5mXYIph/+palOxiJUFQDg6pGZMH+Gh7SJM6e6nqnn63vOhPHaTb2XVqepk4BCA\nwG/6a0yTScBpcWTLa67mR2Af4LvQtmoiUlFVc+co9gja5dIQC9mNlW2siMzGJmLBlMfTwLeqOkdE\nNil7EdkD+wGfgLlrVETCfv9YeRcBazCX2I8UzBqgu6r2F5HpwKWq+lVsIxGZF3ye3PcVyfuBs6lZ\nAuePS6DI3gT+UNUH82uaz76/2DoKZA82/6ZXAZVC+8L3arx+12HzLuER3h7A+0XsL2lU9RHgkXT0\nnQwht1zCZFktptJNEEY1BOgeDB33xSYUNdi/EPuBXSy2eOgyzH2SV385QF+gT/CgQERqiU2eboWI\nnCUie4tImaD948CwvCJkRKSc2GRvWaC82EKr3HvqXUxZtw9kPRez+L7MQ9xh2Kgqlh4iUl5EmmLD\n+XDEyXEkYCyo6ipsZHR5nN2VsOu7CCgjls7jgND+BUDtXD92cE37A4+LyK7BZzsycEUWxPPAg8HQ\nOzc0NTeaaDBwmogcHfT1f+T/+yyKol/AlvdLX+BqEWkczGlUEpFWYsEAiTAMS4PSLrgX2mKjpg+D\n/T9g8yXlROQwLINurlJeiBkSsffvLiLSKfjO2wT9DUuiPyfAlX12ELZKrgeqYK6AgdhkY9gffAXm\na12EVQ4LK894lvMd2ATk1yKyDFuAsTfxqQUMx/zK32OulU2RLGKRPOEqZP2widzzgbuC/y8CcwNh\nYZG3Yq6W2zEX1hax+CFeAVrK5kghxSKBlmBhb68CV6nqL4Esu2KWcLxJ61w2XQtV/V5VZ8buC8JF\newFfYdf8AOB/oXajsJDU+SG/+K2YL34C8A82D5LXSCDME5gLa6SILA/O2Tgkx3WY73UutmYhPxdK\nfqOkvNp0x1xvS0TkXFX9Drufng7O9ys2r5GQlRx8l6cBt2D3461YaHHud3wPpnyXBOd+LXTsauAB\n4EuxNRhHBOf9BmiAKe/7gHOCe6kw/S0RkcaJfIbSRJFz44hIf8zS+ltVD8yjzZPYTP5qoEMQFucU\nAhF5GNhFVUt8AjkReQC7n55IoO1j2KK8RBdhOVmOiHQAOqpq04LaOoUnGZ/9AOAp4kQ3wJZ1aYOn\n9nNsnuV38kBE9sEmZScDhwOXkVj4Y7FHVe8qRNtb0ymL45Q0iuzG0YJTC8SrS1ujqOcrRVTGYupX\nYikkHlPVkh6S6jiQmGvKKSLpjMaJlw6hNjZJ5OSBqn6L+Swdp1ShqgMJDEQn9aQ79DI2YmCrp7aI\n+JPccRynCGghyrqmMxon4bq0mgVpVWNf3bp1i1wGlykamebPV/bcU3n2WaVDB6VRI2XmzJJ3nbJV\nLpcpsVdhSaey97q0TrFj1So47TS4+GK45hro3x8uuwyaNIExY6KVLScHBg6ETz6JVg6neFJkN04o\ntUD1ILVAN2zFJar6gqoOE5GWYnVpV2HL1R0na9mwAc4/H/bfH7p3t20i0LmzbWvbFu69F6691rZn\nktmz7aGzYgXMnQtXXAH33ANlfKWMkyBFVvaaQGoBVb2+qP1HTbNmzaIWYStcpsQoikyq0KkTrFkD\nL764tTJv3hzGjYMzzoBJk+Dpp6FCImtmk5ApV66XXoIuXeCWW+DWW2HRImjTBr79Fl59FapWLbif\nVMuVTlym9BB5wXER0ahlcJxHHoHXXoMvvoAddsi73YoV0L49LFwI77wDNdIYTPzXX2bBL1hg7psD\nQkkc1q83xT9sGAwZAgfGXdbolGREBM2SCVrHKRa88YZZ6h99lL+iB6hc2ZR88+Zw+OFmXacaVbPY\nDz7Y5gq+/npLRQ9Qvjw88QR06wYnnGCfwXHywy17p1Qzdqy5RD79FBo1KtyxQ4bAVVeZ0r0gtoZW\nEVmwwPr87Td45RVT+AUxaRKcfba5mB5+2B4ETsnHLXvHSZCpU+G88+D11wuv6MEU7Gefwd13wx13\nwMaNycnz9ttw0EGw3342YkhE0YMdM2ECTJsGJ51kDwzHicUte6dUMm8eHHkk9OgBl1xScPv8WLTI\nHhrbbGPulMJOmC5aBNddZxb6wIFwRBGrp27caJ/n5ZftwdHEM1GVaNyyd5wCWLnSYuk7dkxe0QNU\nrw4jRsDee5uinj498WPff99GFXXqwMSJRVf0AGXLwv/9HzzzDLRuDS+8YP5/xwG37J1SxoYN5tve\ndVfo2zf18fL9+8Odd8KAAdAqr8qpwJIlFr8/bpxZ4scck1o5fv0VzjrLHh7PPAPbblvwMU7xwi17\nx8kDVVsQtXEjPPdcehZGXXaZWetXXgkPPRTfsh4+3Kz5HXYw102qFT1AgwYWxbNqlfU/e3bqz+EU\nL9yyd0oNDz4I//0vfP65hVCmkzlzzLKuV8+s/YoVYflyWxj1ySe2UOrEE9MrA9jDpndvW0cwaJCF\njDolA7fsHScOgwaZD/ujj9Kv6AFq17aHSvnyZlm/+ebmiJ8ff8yMogcbvdx8s00cX3yxhWa6bVU6\nccveKfGMHm15bUaPthw3mSTXsu7fHx59FE49NbPnD/Pnn3DuuTYZPGBAZh56TvoorGWflLIXkRZA\nH6As0E9VH47ZXx0YBNTE8vA8pqovx7RxZe+kjZ9+shWmb70Fxx8ftTTRs3at5QD64gtbFLbvvlFL\n5BSVjLlxRKQsVpW+BbAf0E5EGsY0ux6YqKr/AZoBvUQk3QVTHAew7JCtWpll7Yre2GYbc2fdcgs0\nbWqROskuBnOKB8n47BsDM1R1lqqux+qlnhHTZh6Qm21kB+AfVd2QxDkdJyFWrDBFf9VVcOGFUUuT\nfXTsaKki3njD5hQmT45aIifdJKPs49WYrRXTpi+wv4jMBSYBnZM4n+MkxPr1lu+mcWNLDezEZ7/9\nbBK5Qwdzdd19t6V4dkomybhUEnG0dwV+UNVmIlIP+EREDlLVFUmc1ymBfPuthSaWK2cRLOXLb/4/\n3rbY/blFPFStwlTZsuaiyHSRkeJGmTI2+mnd2nz5jRqZm8fdXiWPZJR9bI3ZOph1H+Yo4AEAVf1N\nRGYC+wBbJIbtnlsWCCsSUBIKBTiJM2AAdO0KDRuaVb5+va10Df/N6//cv2XKmOIvW9Ys1tGj7SHg\nJMauu9oahKFDLYVE8+YWPbTTTlFL5uQyZswYxiRRG7PI0TjBROvPwInAXGA80E5Vp4XaPA4sU9Ue\nIlID+A5opKqLQ208GqcU8+mn5lMfO7bokSGqNsmYq/grVjSl7xSNFSvMpfP229CrF7Rr5yOkbCTT\noZensjn08iVV7SkiV4HVoQ1CLwcAu2PzAz1V9fWYPlzZl1JywyIHD4Zjj41aGieWb76xSlm77Wbp\nJfbcM2qJnDAZVfapwJV96WTePEvB27Nn6gp/OKln/Xqz7h97zCa7O3d291i24MreyXpWroTjjrPc\nMXffHbU0TiLMmAFXXw2LF1u20EMPjVoix5W9k9Vs3Ahnngk772zJwNwXXHxQtVKJt98OF11kufMr\nVYpaqtKLJ0JzshZVcwOsWWPhfa7oixciFqnz00/w999WBP3jj6OWykkUt+ydjNG7t1nzX34JVapE\nLY2TLCNHmmunSRP7bmvUiFqi0oVb9k5WMmSITfQNG+aKvqRw8slm5deuDYccYqtxnezFLXsn7Xzz\njdV8HTHClIJT8hgxwlw8t95qSdbcRZd+fILWySp+/x2OPtoiOE47LWppnHQye7blJKpTx/L3+wgu\nvbgbx8kaFi+Gli0tvNIVfclnjz0sT36NGnD44Z5JM9twy95JC2vXwimnWDx2r15RS+NkmldftXKI\nvXtbmKaTetyN40SOqtU7/fdfS65VxsePpZLJk+GccyypWu/eVjjFSR3uxnEip1s3W3H56quu6Esz\nBx4IEybA/PmW++iPP6KWqHTjP0UnpQwYAIMGWarcihWjlsaJmipV4J13NheTGTkyaolKL0kpexFp\nISLTReRXEbkjjzbNRGSiiPwkImOSOZ+T3Xz6Kdx5p8XS77JL1NI42YKIhWS+9RZceincdx/k5EQt\nVekjmXz2ZbF89s2xQiYT2DqffVXgS+AUVZ0jItVVdVFMP+6zLwHkpiv+738tyZnjxGPePDjvPKhc\n2UaAO+4YtUTFl0z67BMpOH4B8I6qzgGIVfROyWDePAut7N3bFb2TP7vuCp99ZtXEDj0UvvsuaolK\nD+kuON4A2FFERovItyJycRLnc7KQlStN0V9+uVWccpyCKF/e8uM/+iiceqotuPPBffpJd8Hx8sAh\nWOnCisBXIvK1qv4abuQ1aIsnGzdaybpGjeCuu6KWxilunHuuReyccw6MGwfPPgvbbRe1VNlLlDVo\nmwDdVbVF8L4LkKOqD4fa3AFsp6rdg/f9gOGqOjjUxn32xZD58+H662HpUpuQrVAhaomc4sqqVXDl\nlTBlikXu1KsXtUTFg0z67L8FGohIXRGpALQFhsa0eR84RkTKikhF4AhgahLndCJmwwZ46imzyOrV\ng/ffd0XvJEelSjZZe+WVcOSRMGpU1BKVTIrsxlHVDSJyPTCCzQXHp4ULjqvqdBEZDvwI5AB9VdWV\nfTHl66/hmmssdnrsWJtkc5xUIALXXmsFUdq0sQLnZ58dtVQlC0+X4BTIP/9Y/PxHH9mk2gUXeApb\nJ31MnAitWlk8fseOUUuTvXi6BCdl5ORAv35mwW+3HUybZhE3ruiddHLwwTZyvP9+My6c1JBMNI5T\ngvnhB3PZqMLw4fYDdJxM0aAB/O9/Vg1r0SJ46CE3MpLFLXtnC5Ytg06dLD1xx44WEueK3omCWrWs\n1OHYsTZ5u3Fj1BIVb1zZO4BZ8K+9Bg0bWmriKVNsoZRnrXSiZKedLOfS7NmWZmHt2qglKr74BK3D\n1Klw3XUWM//cc9CkSdQSOc6WrF1rNRIWL4Z337XcOqUdn6B1EmblSrjjDstnc/bZlnvcFb2TjWyz\nDbzxhq3tOOEE8+M7hcOVfSlEFYYMgf33h7/+sopCN9wA5Xy63sliypaF55+Hk06Cpk3hzz8LPsbZ\njP+8SxE5OTbh9cgj5gMdOBA8DZFTnBCBBx80X37TpjBiBOyzT9RSFQ9c2ZcCfv7ZSgS++ipUrWoT\nr1dd5WkOnOLLLbdYLvxmzeDDDy1dspM/ruxLKP/8A2++aQp+9mxbDDV0KBx0UNSSOU5quPRSqFbN\n0iS//baPUgvCo3FKEGvXWgbKV16B0aOhZUto3x6aN3d/vFNyGT0a2raFF1+EM8+MWprMkdFonERq\n0AbtDheRDSLiqY1SjKolKLvuOluE8uST0Lo1/PEHvP46tGjhit4p2Rx/PHz8sa34fvnlqKXJXoqs\nBoIatE8TqkErIkPDNWhD7R4GhgO+4DlFzJplaWFfecUmrdq3h2+/hbp1o5bMcTLPoYfCmDGWXmHx\nYrj55qglyj6Ssfk21aAFEJHcGrTTYtrdAAwGDk/iXA6wfDkMHmwKfsoUG7q++io0bux5Qxxnn322\nzKfzwAP+uwiTjLKPV4P2iHADEamFPQBOwJS9O+eLwMaN0LmzWfInnAA33mj+eI+mcZwtqVPHwotb\ntrQotObNYe+97VWrVulO/5HuGrR9gDtVVUVEyMON4zVo80bVfJG//w6//WbxxY7j5M3OO8Nnn1kh\n84kT4a23TPEvXw7169sIIPcBkPvacceopS6YbK9B+zubFXx1YDVwhaoODbXxaJx8uOsuGDnSbl7P\nB+I4RWf5cvj1V/jlly1fP/9so+S99976QVC/fvYWQS9sNE4yyr4c8DNwIjAXGA+0i52gDbUfAHyg\nqkNitruyz4M+fWx5+BdfmLXiOE7qUYUFC7Z+CPzyi42oa9SA226D66+PWtItKayyT2sN2qL27djE\n6+OP24STK3rHSR8iULOmvY49dst9GzZYhbazzoI1a+DWW6ORMRX4oqos5KOPrHDIZ595UW/HyQbm\nzLHgiI4dLVNsNpAxy95JD19+CR06wAcfuKJ3nGyhdm1bqXvCCRYd17Vr1BIVHlf2WcTkyZZXftAg\nzyvvONlGrVq2cOv4403h33NP1BIVDlf2WcLMmZbQ6YknrP6r4zjZx667msI/4QRLGd6tW9QSJY4r\n+yxgwQJb9de1K5x/ftTSOI6THzVrmkvnxBNN4XfvXjxW6rqyj5hlyyxZ2UUXwbXXRi2N4ziJUKOG\nBVA0b24unfvuy36F79E4EbJmjSn6Aw+0bJXZfrM4jrMlCxeawm/Z0ipoZfI3nLFFVamitCr7DRvg\n3HNtdd5rr5XunB2OU5xZtMjq4p50Ejz8cOYUfkbz2TtFQ9XKAq5ZY3VgXdE7TvGlenUYNQo+/dQW\nXWWr7epqJgLuvNNSFL/zjmeudJySwI47msIfOxZuuik7Fb4r+wzz2GO2YOqjj6BSpailcRwnVVSr\nZtb9uHGWkjzbFL4r+wzy8svw9NOWxdJTFTtOyaNqVfjkExg/Hm64IbsUflpr0IrIhSIySUR+FJEv\nRaRRMucrzgwdCl26wIgRtvTacZySSZUq9jv/7jsLp87JiVoiI5kUx2WxFMebatASk+JYRI4Epqrq\nMhFpgeW/bxLTT4mPxvn8c4u8GTYMDjssamkcx8kEy5fbqvj997dU5akOxMhkNM6mGrSquh7IrUG7\nCVX9SlWXBW+/AUqdTTtpErRpA2+84YrecUoTO+wAw4dbiuQrr4zewk9rDdoYOgLDkjhfVrB+Pfz7\nr71Wr87//9WroWdPeOYZW1rtOE7ponJl+PhjaNXK0iP36wdly0YjS7pr0AIgIscDlwFHJ3G+jDB7\ntoU7I7kAAAhWSURBVPnZ5s+Pr8TBFkJVrGh/c1/h9+H/n3wSzjkn2s/kOE50bL+9uXBPOw0uuQR6\n946mIFEyyv4voE7ofR3Mut+CYFK2L9BCVZfE6yhbCo5PnmzLnq+7zpZAx1Po5ctHIprjOMWYSpUs\n3PrGG622bcuWcPXVcMwxia+4jbLgeIE1aEVkd+Az4CJV/TqPfrJigvaLL2wStU8faNcuamkcxymp\nLFliK+eff96Mx6uvhosvNh9/YchobhwRORXow+YatD3DNWhFpB9wFvBHcMh6VW0c00fkyv699+CK\nK+D11y2/heM4TrpRtdz4zz1nsflt2sA118DBByd2vCdCKyQvvmj5qD/4AA49NDIxHMcpxcybB/37\nmz7adVez9tu2NfdxXriyTxBVy0E9cKCFRzVokHERHMdxtmDjRpvMfe45W4Xbvr0lTdxnn63betbL\nBNi40SZh333XCny7onccJxsoWxZOP90U/oQJsM02cOyxFro9eLCFfheVUmfZr1ljVaEWLzZffWEn\nRRzHcTLJ2rUwZIhN6P76q8XrX3kl7L67W/Z5klsCsEwZW+jgit5xnGxnm20sQnDsWJvIXboUDjqo\n8P2UGst+3jzLU3HMMfDEE9GtYnMcx0mWlSuhcmW37Lfil1/g6KMttOmpp1zRO45TvNl++8Ifk8wK\n2mLBhAnQurVF3lx+edTSOI7jREOJVvYjRthk7EsvmcJ3HMcprWSFG6djR3jhBZg4MbnQojCDBlmM\n6nvvuaJ3HMfJCsv+sMPg668tQ+SsWTbT3Ljx5le9eoknCwLo1cty3Hz2mRUOcBzHKe1kXTTO8uVW\nzmvCBFtBNn68zTwffvhm5X/44VCz5tZ95eTAHXdYdrnhw2H33TP4QRzHcTJIphOhtWBzIrR+qvpw\nnDZPAqcCq4EOqjoxZn+BoZfz52+p/CdMsNnosPXfqJFVdJ8xAz780At6O45TsslYuoSgBu3TQAtg\nP6CdiDSMadMSqK+qDYArgeeKcq6aNW0J8X332aTrP/+Yi+bss2HuXOjaFWrVskVTo0alRtEnkzc6\nXbhMieEyJU42yuUypYe01qAFWgMDAVT1G6CqiNRI4pyA+e/r14cLLjDf/Lhx5uoZOtQKjKSCbPxy\nXabEcJkSJxvlcpnSQzLKPl4N2loJtElL0XFfKOU4jpM3ySj7RJ39sT6l6MtSOY7jlDKSKUvYBOiu\nqi2C912AnPAkrYg8D4xR1TeD99OB41R1QaiNK3/HcZwiUJgJ2mTi7L8FGohIXawGbVsgtnrrUOB6\n4M3g4bA0rOgLK6zjOI5TNIqs7FV1g4hcD4xgcw3aaeEatKo6TERaisgMYBVwaUqkdhzHcQpF5Iuq\nHMdxnPQTaW4cEWkhItNF5FcRuSNKWQJ56ojIaBGZIiI/iUinqGXKRUTKishEEfkgalkARKSqiAwW\nkWkiMjVw00WOiHQJvr/JIvK6iGwTgQz9RWSBiEwObdtRRD4RkV9EZKSIVM0CmR4Nvr9JIjJERKpE\nLVNo3y0ikiMiO2aDTCJyQ3CtfhKRrRaPRiGXiDQWkfGBXpggIofn10dkyj6RRVkRsB64SVX3B5oA\n12WBTLl0BqaSPdFMTwDDVLUh0AiYFrE8BPNHVwCHqOqBmHvx/AhEGYDd12HuBD5R1b2BUcH7qGUa\nCeyvqgcBvwBdskAmRKQOcBIwO8PyQByZROR4bM1QI1U9AHgsG+QCHgHuUdWDgXuD93kSpWWfyKKs\njKKq81X1h+D/lZgC2y1KmQBEpDbQEujH1qGsGSewAJuqan+w+RtVXRaxWADLsQd2RREpB1QE/sq0\nEKr6BbAkZvOmBYbB3zOjlklVP1HVnODtN6RpDUxhZAp4HLg9k7LkkodM1wA9Az2Fqi7MErnmAbmj\nsaoUcK9HqewTWZQVGYGVeDD2I4ia3sBtQE5BDTPEnsBCERkgIt+LSF8RSdHa5aKjqouBXsAfWITY\nUlX9NFqpNlEjFIm2AEh6JXmKuQwYFrUQInIGMEdVf4xalhANgGNF5GsRGSMih0UtUMCdQC8R+QN4\nlAJGZlEq+2xxR2yFiGwPDAY6BxZ+lLKcBvwdJJCL3KoPKAccAjyrqodgkVaZdktshYjUA24E6mIj\nsu1F5MJIhYpDkPkva+5/EbkLWKeqr0csR0WgK9AtvDkiccKUA6qpahPM6Ho7YnlyeQnopKq7AzcB\n/fNrHKWy/wuoE3pfB7PuI0VEygPvAINU9b2o5QGOAlqLyEzgDeAEEXklYpnmYNbXhOD9YEz5R81h\nwDhV/UdVNwBDsOuXDSwQkZoAIrIr8HfE8gAgIh0wF2E2PBTrYQ/qScH9Xhv4TkR2iVQqu9+HAAT3\nfI6IZENe3caq+m7w/2DMNZ4nUSr7TYuyRKQCtihraITyICKCPS2nqmqfKGXJRVW7qmodVd0Tm2z8\nTFXbRyzTfOBPEdk72NQcmBKhSLlMB5qIyHbBd9kcm9TOBoYClwT/XwJEbkgEKcpvA85Q1TVRy6Oq\nk1W1hqruGdzvc7DJ9qgfjO8BJwAE93wFVf0nWpEAmCEixwX/n4BNsueNqkb2wvLc/wzMALpEKUsg\nz/+3d8coCENBFEVvY624EREsBS3dhi7CpbgBC3tLsbcQMWIpuA+tLOYLYmEnPzD3QCohPMLPS8gk\nOCaeizfAuWyz2rk+8k2Abe0cJcsAOAIX4q6nWztTybUkLjxXYhDaqZBhQ8wMnsRcag70gX05IXdA\nr3KmBXAj3nh5r/VVpUyP93H6+v0O9GtnAjrAuqypEzBtyZoaETPFBjgAw1/78KMqSUqgFX84Lkn6\nL8tekhKw7CUpActekhKw7CUpActekhKw7CUpActekhJ4AYYH4nN9SeHqAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f527df99e50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import random,convolve\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,show\n", + "\n", + "\n", + "phit = [0.1*xx for xx in random.uniform(0,1,10)]\n", + "hopt = phit\n", + "phi0t = convolve(phit,hopt)\n", + "phi0t = [yy/max(phi0t) for yy in phi0t]\n", + "subplot(2,1,1)\n", + "plot(range(0,len(phit)),phit)\n", + "title('Figure 3.16 (a) Noise Like input signal')\n", + "subplot(2,1,2)\n", + "plot(range(0,len(phi0t)),phi0t)\n", + "title('Figure 3.16 (b) Matched Filter output')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example3.6 page 127" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predictor-error variance 0.64\n", + "1 Predictor input variance 1\n", + "The predictor-error variance is less than the variance of the predictor input\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "\n", + "Rxx = [0.6, 1, 0.6]\n", + "h01 = Rxx[2]/Rxx[1]# #Rxx(2) = Rxx(0), Rxx(3) = Rxx(1)\n", + "sigma_E = Rxx[1] - h01*Rxx[2]\n", + "sigma_X = Rxx[1]\n", + "print 'Predictor-error variance',sigma_E\n", + "print sigma_X,'Predictor input variance',sigma_X\n", + "if(sigma_X > sigma_E):\n", + " print 'The predictor-error variance is less than the variance of the predictor input'\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/Digital_Communications_by_S._Haykin/Chapter4.ipynb b/Digital_Communications_by_S._Haykin/Chapter4.ipynb new file mode 100644 index 00000000..a9616b0d --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter4.ipynb @@ -0,0 +1,134 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 4 Sampling Process" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example4.1 page 164" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Aliasing error cannot exceed max|g(t)| = 2.0\n" + ] + }, + { + "data": { + "image/png": "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\nMMHMrs+zWFn3VZyYyr2vJK2tqNekpFWBvYAxWYvVbz+VsxW/SD0BDiXUvy0EpgPPRM93BJ6O7m9E\n6A0zFnjHYz7yAAAZCklEQVQPuCgNcUWP9yP0qphU6riAtsDzwEfAc0DrpPZVru0GTgVOzVjm5uj1\ndynQM65cMQFnRPtkLPA60KcMMT0ETAV+jL5PJ6VgPxWMKaH9tAtQE33mmOi2X5L7Kk5M5d5XQC9C\nldhYYBzw++zveX33kw/uc845F1ulV08555wrI08azjnnYvOk4ZxzLjZPGs4552LzpOGccy42TxrO\nOedi86ThnGs0SVtG02K4KudJwzlXDFsTpth2Vc4H9znnGiWahmUSsAphzqI/mdljyUblSsWThnOu\n0SQdD2xrZjmvoOeqh1dPOeeKQZT54kIuGZ40nHPF4FUWTYQnDedcMcwHWiUdhCs9TxrOuWJ4Cegh\naYykw5MOxpWON4Q755yLzUsazjnnYvOk4ZxzLjZPGs4552LzpOGccy42TxrOOedi86ThnHMuNk8a\nzjnnYvOk4ZxzLjZPGs4552LzpOGccy42TxrOOedi86ThnHMuNk8azjnnYvOk4ZxzLjZPGs4552Lz\npOGccy42TxrOOedi86ThnHMuNk8azjnnYvOk4ZxzLjZPGs4552LzpOGccy42TxrOOedi86ThnHMu\nNk8azjnnYvOk4ZxzLjZPGs4552LzpOGccy62oiUNSatIWrlY63POOZc+MrOGvVFqBhwC9Ad2IiQg\nAUuBkcCDwBPW0A9wzjmXOo1JGv8FXgGGAGPNbFH0/MrA1sBBwC5mtmuRYnXOOZewxiSNjc3sozqW\nWbk2mTjnnKt8jWnTeAhA0gv5FvCE4Zxz1aVFI97bXNIlwCaSziW0Z9QyM7uucaE555xLm8aUNI4i\nNHo3B1oBa2TcWjU+NOecc2nT4DaNZSuQ+pnZ0CLF45xzLsUaXNKQdIKkFvkShqSVJJ3Y8NCcc86l\nTWPaNNYA3pI0EXgLmE5o1+gAbAdsCtzZ6Aidc86lRqOqpyQJ2BnYBVg/evoz4FXgdR/Y55xz1aXR\nbRrOOeeajgZXT0naHPiZmf0nenw9sBZgwM1m9k5xQnTOOZcWjely+2dgdsbjvYGngBHAZY1Yr3PO\nuZRqTEP4emb2Wsbj+Wb2LwBJpzYuLOecc2nUmJLGcgP4zGyHjIfrNmK9zjnnUqoxSWOqpD7ZT0ra\n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\nYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f1df4d30f10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,ones,sinc\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n", + "\n", + "\n", + "t = arange(-1.5,0.01+2.5,0.01)\n", + "g = [2*sinc(2*tt-1) for tt in t]\n", + "print 'Aliasing error cannot exceed max|g(t)| = ',max(g)\n", + "f = arange(-1,0.01+1,0.01)\n", + "G = [0,0,0,0]+[xx for xx in ones(len(f))]+[0,0,0,0]\n", + "f1 = arange(-1.04,0.01+1.04,0.01)\n", + "subplot(3,1,1)\n", + "plot(t,g)\n", + "xlabel(' t')\n", + "ylabel(' g(t)')\n", + "title('Figure 4.8 (a) Sinc pulse g(t)')\n", + "subplot(3,1,3)\n", + "plot(f1,G)\n", + "xlabel(' f')\n", + "ylabel(' G(f)')\n", + "title('Figure 4.8 (b) Amplitude spectrum |G(f)|')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example4.3 page 165" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nSfvkhvUmJestaVrvK2RlqFxf+XXe6hUrktYlNU9tTtq/epN+tORVHhNN+8mawPmSzqmYfvXcPAt7\nxUww/zZs6xjOa+95u1Jb5541SF/+7bEU6cdmc4Lc91REzJT0Lml959dBNdu9LZ12LszOLdeSEr5R\nwKGkmqRqPgcW/G7+JqmLw4uSxgM/i4jbqyhTR+erNJDUv7XTPqszOoJNJmW4/XPD8q9nZv+XyA1b\npWIZ+RP226ST5YYRsWz21y/m71iUtxNwlqQ3SG2xAA9LOriK2Cu/AJ9uYZpqvigHk7Lm/M7+OmlH\ny1uT+Q+aapbdkpNJv663iohlSM0kooqkTtKPSf0E8lfVTCD9Klk+t+6XiYiNs/FvkL6gmuRfV3qN\nlCAum/tbOiL2rnJZs5h/n1mVeeuqU8uddc69kdSHYaWIWJbUr6BpeW1to/m2c5Zc92fBL/kmrS3v\nGVLZWpu+pf2quR8TE4BPt9Ap8H+kX9BNPk06lic1M201Kk/0Tft6W/tVqyLiHxGxG+m8MRZoupT+\nV6Tmz89l+8ERzH9Oq1xvr5Fq1/L75FIR8bsqwnib1Lw0IDfs08y/ztvaTy4kNTmtk8V7OguegyuP\niaZ96DVSLWk+9iUj4pF2fP5McseUpMrzcOUy2jqG89p73q7U1j4ygXTcNmeBcmedpdeh+XM6pGO7\nf276vqRm3f9VTNfWdm9unTe33y3MubDScOAASWuSmjNvrPJzFvgui4hxEXFoRKxIqkG+QdKnWHBf\n6UVKXNuar732JJ1rW9Tez1ropCYiPiF19Bki6VOS1iedXCIbP5l0YB4hqZeko0ntoS0tbw7ppHWe\npBUBJK0uabcWZvkssAnweVIzBMDepLbdBUjqLWlxUgbbR9LiuV7+NwHLSjoyi/UA0on6wSrWw0vA\n35j/Sqg7gHUlHZJ97teB9UmdXOeG1NayK6bJv+5LOpFMk7QcKbFqe2GpVuJ44GuRXTacleENUse5\n30taStIiktaW9OVskuuAE7LtsSypZqoljwLTJf0w2y96SfqcpC1yyzpVUj9Ja2Tx5A+4p4DDsvn2\nIPVz6ZJyk9rUFyWdwOZk0+X3t0nA8pJaOkFfD+wlaafs0tWTSVXpD7UUSithPgb0k5SvyZnE/MfM\nSNrer5qMJp00fyNpiWx//2I2bjjwfaX7DfUlJQnXtlCr05J8WVaSdIKkPpIOzGIaGelqydb2q5YX\n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\nNWZmZlYK/x9BcGdXqAyYrQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f05d85531d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,ones,sinc,pi,sin\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n", + "\n", + "T_Ts = arange(0.01,0.01+0.6,0.01)\n", + "#E = 1/(sinc_new(0.5*T_Ts))#\n", + "E=[1]\n", + "for i in range(1,len(T_Ts)):\n", + " E.append(((pi/2)*T_Ts[i])/(sin((pi/2)*T_Ts[i])))\n", + "\n", + "plot(T_Ts,E)\n", + "xlabel('Duty cycle T/Ts')\n", + "ylabel('1/sinc(0.5(T/Ts))')\n", + "title('Figure 4.16 Normalized equalization (to compensate for aperture effect) plotted versus T/Ts')\n", + "show()\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/Digital_Communications_by_S._Haykin/Chapter5.ipynb b/Digital_Communications_by_S._Haykin/Chapter5.ipynb new file mode 100644 index 00000000..d8a60805 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter5.ipynb @@ -0,0 +1,313 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 Waveform Coding Techniques" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example5.1 page 187" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The average transmitted power is:\n", + "1.225e-05 W\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "\n", + "sigma_N = 10**-6 #the noise variance\n", + "k = 7 # separation constant for on-off signaling\n", + "M = 2 # number of discrete amplitude levels for NRZ polar\n", + "print 'The average transmitted power is:'\n", + "P = (k**2)*(sigma_N)*((M**2)-1)/12#\n", + "print P,\"W\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example5.2 page 189" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nsYL2HSso7bhhY1fSIXTtOqynXfv1tOuwHrVfh0rXQ+l6KF2HlazDStZS1W4N1V3WUtl1LZVaQwVr\n2WCrWW+rqLIKOpV0pUtpNzqXdqVr+27079iTXp160qtzT3p36UHvLj3p1akvvToNY6vOW9Gncx+2\n6hL/d96Kzu07M3bsWMaOHVvsr4ZrRfLdUXwl/v9O/H8nIbE4uYDxbAe8lxheCOyTPdM2369bqyK5\nc6pyZ2Hlz9zaNLW2XLBN07ec0bL6rIbZLDPC2GLu9S++zW+XPJ89Z+hPbDe5XktuC8v8Zc23aS7L\nHt64jG1cPwqdIPzPDCt7OM6LoXbxf2Zcu2qUWBeqjtOq4zaqN443quNwdYyjmorKNfy38lpM1ViH\nKqxDmM+oDlfZlNBOJZv+q4QSlVCiUkrblVLSrmTj/y4qoX1JezqUtqd9SSkdStvTsaQ9pSWltG/X\nng4lHXJ2HUs60qm0Ex1Luyf6w//OpZ3p0r4Lndt3pnNp543/u3XoRrcO3ehU2snbNnLNUpoyimlm\ntkfWuKlmNqrRg5FOAI4ws7Pj8CnAPmb2vcQ8XkDhnHP1UMgmPCTpADN7Ng6MZvNsqMb0PjAwMTyQ\ncFexUX131DnnXP2kSSjOAv4mKfMYxyfAmQWK52VgmKQhhPdynwR8o0Dbcs45l0Jd2nrqCWBmKwoa\nkHQkm6rH3mpmvynk9pxzzuWXpoyiE3ACMIRNdyBmZlcUNjTnnHPNQbsU8zwMjCG097QqdqsLGVQ2\nSddIekPSa5IeTGSDIekSSXMkzZbU6t+6Lumrkl6XVCVpz6xpbepYQHhAM+7vHEkXFTuepiTpNkmL\nk1XZJfWRNEnSW5ImSmoT7XhLGijpqfjbmCnp/Di+zR0PSZ0kTZE0TdIsSb+J4+t/LMwsbwfMrG2e\nQnfAl4B2sf9K4MrYP5LQom17wh3P3Mx8rbUDdgaGA08BeybGt8VjURL3c0jc72nAiGLH1YT7fyAw\nCpiRGHc18JPYf1Hmt9LaO6A/sEfs7wa8CYxow8ejS/xfCkwGDmjIsUhzR/G8pKK+H9vMJplZdRyc\nAmwf+48BxplZhYWH9OYSHtprtcxstpm9VcOkNncsSDygaWYVQOYBzTbBzJ4BlmeNHgPcEfvvAI5t\n0qCKxMwWWXyZmpmtIjykux1t93isib0dCBdUy2nAsUiTUBwIvBJvV2bEbnodYm5sZwH/jv3bsnn1\n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\nAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f6de42cc750>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n", + "\n", + "\n", + "from math import log\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "\n", + "#Channel Capacity theorem\n", + "P_NoB_dB = range(-20,30) #Input signal-to-noise ratio P/NoB, decibels\n", + "P_NoB = [10**(xx/10) for xx in P_NoB_dB]\n", + "k =7# # for M-ary PCM system#\n", + "Rb_B = [log2(1+(12/k**2))*yy for yy in P_NoB]##bandwidth efficiency in bits/sec/Hz\n", + "C_B = [log2(1+xxx) for xxx in P_NoB]##ideal system according to Shannon's channel capacity theorem\n", + "#plot\n", + "plot(P_NoB_dB,C_B)\n", + "plot(P_NoB_dB,Rb_B)\n", + "xlabel('Input signal-to-noise ratio P/NoB, decibels')\n", + "ylabel('Bandwidth efficiency, Rb/B, bits per second per hertz')\n", + "title('Figure 5.9 Comparison of M-ary PCM with the ideal ssytem')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example5.3 page 192" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Channel width = 32000.00 Hz\n", + "Output Signal to noise ratio = 40.80 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "\n", + "#Channel Bandwidth B\n", + "n = 8 # no. of bits used to encode\n", + "W = 4000 # the message signal banwidth in Hz\n", + "B = n*W#\n", + "print 'Channel width = %.2f Hz'%B\n", + "SNRo = 6*n - 7.2#\n", + "print 'Output Signal to noise ratio = %.2f dB'%SNRo\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.5 Page 207" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum output signal-to-nosie = -5.17 dB for Delta Modualtion:\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import pi,log10\n", + "\n", + "a0 = 1 # The amplitude of sinusoidal signal\n", + "f0 = 4000 # the frequency of sinusoidal signal in Hz:\n", + "fs = 8000 # the sampling frequency in samples per seconds\n", + "Ts = 1/fs##Sampling interval\n", + "delta = 2*pi*f0*a0*Ts##Step size to avoid slope overload\n", + "Pmax = (a0**2)/2##maximum permissible output power\n", + "sigma_Q = (delta**2)/3##Quantization error or noise variance\n", + "W = f0##Maximum message bandwidth\n", + "N = W*Ts*sigma_Q# #Average output noise power\n", + "SNRo = Pmax/N# # Maximum output signal-to-noise ratio\n", + "SNRo_dB = 10*log10(SNRo)#\n", + "print 'Maximum output signal-to-nosie = %.2f dB for Delta Modualtion:'%SNRo_dB" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.13(a) page 215" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEaCAYAAADtxAsqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcXuP9//HXW9QWe1HEEksoaidCLEN9I5ba2u8XVcSa\nVqVqaf3QMrp8Nb62qiKWxlKV0tauhCZDSJCQBU1UEE0itiCxJCSZz++P60x6G7Ocmcw99zLv5+Mx\nj5z9fM7MnfO5r+s657oUEZiZmeWxVKkDMDOzyuGkYWZmuTlpmJlZbk4aZmaWm5OGmZnl5qRhZma5\nOWlY2ZD0kaSepY7DKpekGknTC+ZflLRnKWOqNk4aZU7SdyWNy26ob0p6SFLfUsdVDBGxUkRM6+jj\nSpom6ZsdfdxikHSzpF+WOo5qERHfiIgnSh1HNXHSKGOSzgSuAH4FrAWsD/weOLjEcS1dyvO3Q2Q/\nlaCSYrUuyEmjTElaBbgIODUi7omIeRGxKCIejIhzsm2WlXSlpJnZzxWSlsnW1UiaIeknkt7JSimH\nSjpA0r8kzZb0/wrOVyvpL5KGSZor6TlJ2xSsnybpp5ImAR9JWkpSH0mjJX0gaYKkvQq2HyDp1exY\nr0n6brZ8U0mPS/pQ0ruShhXsUy9p44brl3RrFvs0SedLUsGxn5T0f5Lez47fvx2/41UlPZCd431J\n90vqka3bO7vWhm0flfRswfwoSa0mb0l1kk5s9HsZ1dpuzRzrt5L+LWlOVvrcPVu+nKR5klbP5s+X\ntEDSitn8LyVd0cwxV5c0NPv8vC/p7oJ1J0t6Jfus3CtpnYJ19ZJ+kK2fK+kXkjaRNCb72w6T9JVs\n24bP4rnZ3/z1hs9Dtv5ASeOz6/q3pAsL1vXMznWspDey/c8rWL+8UunsfUkvATs3ur5pkvbJpmsl\n3SnplizmFyXtWLDtDlkcc7Pt/iyX+r4sIvxThj9Af2ABsFQL2/wCGA2skf08BfwiW1eT7f8zoBtw\nEvAecDvQHdgS+BTYMNu+FvgcODzb/izgNaBbtn4a8DzQA1g2+/c9oH+2ft9s/qvZ8ecAvbJ1XwO2\nzKbvAM7NppcBdiu4nnpg42z6VuDu7FgbAi8DJ2TrBmSxnki6wX4fmNnC7+l1YJ8mlq8OHAYsB6wI\n3Ancna1bHpiXbfMV4G1gehbP8tnvbjVgd+CDFs49siHugthHtbD9UOCXzaw7OjvnUsCZwCxgmWzd\n48Dh2fRw4JWCv80TwCHNHPPB7G+yCrA0sEe2fB/gXWC77O90FfB4o7/V3dnvbUvgM2AE0BNYGXgJ\nOLbRZ/HS7He5J/AxsFm2fi9gq2x6a+Cthniz49UDQ0ifu22A+cDm2frfZNe+KrAe8CLw76b+9qTP\n+DzS/y0B/wuMKfgsvgEMIn3+D8uu6RelvheU20/JA/BPM3+YdIOY1co2UxtuDNl8P+D1bLomu7Ep\nm18p+8+3c8H244CDs+laYHTBOgFvAn2z+deBAQXrzwFubRTPw8CxwArAB6QEtHyjbW7JbgA9mrie\nemDj7D/tZ8DXC9adAozMpgcArxSsWyHbd61mfk9NJo0mttsOeL9g/ons5tEHeAQYBuwH7A1MzPl3\n7LCk0cS27wNbZ9O/AH6b/e5mZTe/i0kJ8VNgtSb2XwdYBKzSxLqbgN8UzHcnJeoNCv5Wuzb6LP2k\nYP5S4IqCz+KCws8C8GfgZ81c15XA5dl0z+xc6xasfwb4n2z6VaBfwbqTgelN/e2zz/jwgnVbAp9m\n03sCMxrFMQonjS/9uHqqfM0G1pDU0t9oXdK3owb/zpYtPkZkn37SNyxI35gpWLZiwfyMholsvxmN\njje9YHpD4L+zqqkPJH0A9AXWjohPgSNIJYA3syqgzbP9fkpKSM9m1QPHN3Fda5C+kTa+th4F828V\nxPppNll4La2StIKkIVkVxhzSN9ZVGqrBsvkaYI9s+nHSt+I9gbq2nKuZ85+n9IDDR5KuybH92ZL+\nmVX/fEAqHazRKNYdgBeAx7JYdwGmRsQHTRxyfVKSnNPEunUo+P1HxCekz2Th36DxZ6lwfj5f/Ht8\nEBHzCubfIPtsSdpF0sismvBDYCCpxFrorYLpTwuOvS5f/Fz+u4lrKVQY46fActn/sXWBmY22nU4z\nVYVdmZNG+RpD+rZ9WAvbvEn6JtZgg2xZe63fMJH9R1qv0fEKG2j/DdwWEasV/KwUEZcARMTwiOgH\nrA1MAW7Ilr8dEadERA/SzeEaZe0YBd4jfTNtfG0z6FhnAZsBvSNiFdJNVvznRvE4qVTRkCQabsx7\nZdN5fEL6lt5g7YaJiPjf7He2UkScWrDNlxrCJe0B/AT474hYNSJWI1UBNsQ6Btic9Hmpi4jJpN/Z\nATSf4KYDqyu1nzX2hc+WpO6kG3njG2tzGl/DapJWKJjfsOBYfwLuAdaLiFWB68h/b5pFus4GGzS3\nYY7j9Gi0bAP8UMKXOGmUqezb3wXA7yUdkn0r/oqk/SUNzja7A/iZpDUkrZFtf9sSnHZHSYcpPR31\nY9K3xaeb2faPwLck9ZPULWuMrZHUQ9JaWczdSTf/T0jVIEj6b0nrZcf4kPSfsr7RtS8itS/8WtKK\nkjYEzsjO2V7LZDE2/CxN+rY6D5iTNSJf2Gif0aQb8c7AsxHxT9LNbhdS1VUeE4DDswbbTUntMC3d\niAQs3SjWZUjViwuB9yQtI+kCUtsBsLi09RzwQ/6T0EaTSntNJriImAX8nZS4V80+Xw3vNNwBHC9p\nW0nLkur/n46Ilr7Jq5npBhdl59gDOBC4K1u+Iqkk8rmk3sB3yX+zvhM4N4t/PVK1XHuMARZJOk3S\n0pIOoVGjuiVOGmUsIi4nNXj+DHiH9O3+VFIDJKRHcccBk7KfcdmyxYdofMiWTgfcS6pWep/UpnJ4\ndgNvKrYZwCHAeQWxnUW6WSxFusnPJFVp7AH8INt1J+BpSR9l5/tR/OfdjML4BpGSzWukuuXbSfX9\nDdu15doAHiJVRzT8XECqO1+eVLIZTbqBLj5OwY34pYhYmC0eDUyLiPcglQCya2nOFaS2gLez+FtL\nfAH8v0axPkZqL3oY+BfpoYR5fLkq5nFSY/azBfMr0nKCO4aU2KdkMf4IICL+Afwc+Cup1LERcGSj\nOJuKvXC6cP4tUjvXm6QvNgMj4l/ZulOBX0iam53zzy0ct7GLSFVdr5N+P7e2sH2zn5uIaHgI5MQs\nzqOBB0h/OyvQ0EhavBOkRyGvJDXQ3RgRgxutP4TUiFef/fwkIkZk66YBc0nfUhdERO+iBtuFZY85\nbhoRx5Q6FqsukmpIVZnrt7ZtOZH0DHBNRNxS6ljKSVFf0pLUDbia9DjmTGCspPuy+tYGj0XEvdn2\nW5O+RW+arQugJiLeL2acBrjBz7q4rGruX6SS59HAN0ilFytQ7Dd7e5Oe3JgGoPQi1yHA4qSRPZXR\nYEXSH6yQb2ado6miu1lHqYTP1uakNpLupEd5vxMRb7e8S9dT1OopSd8B9ouIk7P57wG7RMSgRtsd\nSnqmfB3SM9fPZstfIz0hsggYEhE3FC1YMzNrVbFLGrkyUkTcA9yTPVVxGynjQ3qxbJakNYFHJU2J\niNa6YDAzsyIpdtKYScGz/9l0s8/aR8So7HG3r0bE7OyRQCLiXaU+cXqTnqRZTFIlFHvNzMpORLS5\n+r/Yj9yOA3opdTq2DOlxzvsKN1Dq5KyhI7odACJidvZewkrZ8u6kLjJeaOokpX6tvpg/F154Yclj\n8PX5+rratXWF62uvopY0ImKhpNNI/fZ0A26KiMmSBmbrhwDfBo6VtIDUiVnDs+BrA3/L8snSwO0R\nMbyY8ZqZWcuKPi5CRPyd9NJU4bIhBdOXAJc0sd9rpA7kzMysTPiN8DJXU1NT6hCKytdXuar52qD6\nr6+9iv5GeLFJikq/BjOzziaJKMOGcDMzqyJOGmZmlpuThpmZ5eakYWZmuTlpmJlZbk4aZmaWm5OG\nmZnl5qRhZma5OWmYmTX24INw0UWljqIsOWmYmTWYOxdOOglOOw322qvU0ZQlJw0zM4C6Oth22zQ9\ncSK476kmFb2XWzOzsjZvHpx3Htx5J1x/PRx4YKkjKmsuaZhZ1zV2LOywA8yaBZMmOWHk4JKGmXU9\nn38Ov/xlKllcdRUccUSpI6oYThpm1rW8+CIceyyssw5MmJD+tdxcPWVmXcOiRXDJJbD33nDqqfDA\nA04Y7eCShplVv6lTYcAAWHrp1I7Rs2epI6pYLmmYWfWKgGuvhT594DvfgREjnDCWkEsaZladZsyA\nE06ADz+EUaNgiy1KHVFVcEnDzKpLBNx2W3qUdo89YPRoJ4wO5JKGmVWPd9+F738fXn4ZHn44JQ7r\nUEUvaUjqL2mKpFckndPE+kMkTZQ0XtJzkvbJu6+Z2WL33APbbAObbgrPPeeEUSSKiOIdXOoGvAzs\nC8wExgJHRcTkgm26R8Qn2fTWwN0RsWmefbN9opjXYGZl7sMP4fTT4amn4OabYffdSx1RRZBERKit\n+xW7pNEbmBoR0yJiATAMOKRwg4aEkVkReC/vvmbWxT36aCpddO+eXtRzwii6Yrdp9ACmF8zPAHZp\nvJGkQ4GLgXWAfm3Z18y6oE8+gXPOgXvvhZtugn79Wt/HOkSxk0aueqOIuAe4R9IewG2Svt6Wk9TW\n1i6erqmpocZdGptVr9Gj4bjj0rsXkybBaquVOqKKUFdXR11d3RIfp9htGn2A2ojon82fC9RHxOAW\n9nmVVDXVK8++btMw6yI++wwuvDC1W1xzDRx+eKkjqmjl2qYxDuglqaekZYAjgPsKN5C0iSRl0zsA\nRMTsPPuaWRcxYQLsvDNMmZIGSHLCKJmiVk9FxEJJpwGPAN2AmyJisqSB2fohwLeBYyUtAD4Gjmxp\n32LGa2ZlZuFCGDwYfvtbuPRSOOYYUJu/HFsHKmr1VGdw9ZRZlXr55dSF+corwx/+AOuvX+qIqkq5\nVk+ZmbVNfX0aGKlv35Q0HnnECaOMuBsRMysfb7wBxx8P8+fDmDHQq1epI7JGXNIws9KLSFVQO+0E\n++2XeqV1wihLLmmYWWm99RacfDJMn57Gu9h661JHZC1wScPMSueuu2C77WDbbeHZZ50wKoBLGmbW\n+d5/H047LfVGe++9sIt7CKoULmmYWef6+99TJ4NrrgnjxzthVBiXNMysc3z0EZx1FgwfDrfeCvvs\n0/o+VnZc0jCz4nviidRusXBh6gbECaNiuaRhZsUzfz6cfz7ccQcMGQLf+lapI7Il5JKGmRXHuHFp\nyNXp01MX5k4YVcElDTPrWAsWwK9+BddemzoaPPJIdzJYRZw0zKzjvPRS6i9qrbVSd+brrlvqiKyD\nuXrKzJbcokWp6/KaGhg4EB56yAmjSrmkYWZL5rXXYMCAVAX1zDOw8caljsiKyCUNM2ufiPREVO/e\ncOihMHKkE0YX0GxJQ9I0IM/oRhER/qSYdSUzZ8JJJ8G776Z3MLbcstQRWSfxyH1mll9Eeufixz+G\nH/4QzjsPvvKVUkdl7dDekftyt2lIWo5UqvisrScxsyrw7rvwgx/A5Mmp/6gddyx1RFYCzbZpSFpK\n0uGS7pI0E3gdeEPSTEl/kXSY5IevzbqE++5L3YD07Jl6pnXC6LKarZ6S9AQwCrgPmNBQwpC0LLA9\ncDCwe0Ts2UmxNsnVU2ZFNGdOqop6/HG4+WbYs6T/3a0Dtbd6qqWksWxrVVF5tik2Jw2zIhkxIo3X\nvf/+6R2MFVcsdUTWgdqbNJqtniooWezbxMmOK9zGzKrIp5/Cj36U3uweMgSuu84JwxbL857GhZKu\nldRd0tqS7idVTeUiqb+kKZJekXROE+uPljRR0iRJT0napmDdtGz5eEnP5j2nmbXT00+n4Vdnz4YX\nXoD+/UsdkZWZPE9P7QWcBUwkvbdxYUT8Kc/BJXUDrgb2BWYCYyXdFxGTCzZ7DdgzIuZI6g9cD/TJ\n1gVQExHv57oaM2ufzz+H2lr4wx/g6qvhO98pdURWpvIkjdWAnYFXgfWADZS/IaE3MDUipgFIGgYc\nAixOGhExpmD7Z7JzFPITWmbFNGkSHHMMbLhh6mRw7bVLHZGVsTzVU2OARyJiP1Ly6AE8lfP4PYDp\nBfMzsmXNORF4qGA+gMckjZN0cs5zmlkeCxfCxRfDN78JZ5wB997rhGGtylPS+K+IeAMgIj4FBkna\nK+fxcz/WJGlv4ASgb8HivhExS9KawKOSpkTEqMb71tbWLp6uqamhpqYm72nNuqZ//QuOOw5WWCG9\nd7HBBqWOyIqsrq6Ourq6JT5OS4/cbhIRr7a4cyvbSOoD1EZE/2z+XKA+IgY32m4b4G9A/4iY2syx\nLgQ+jojLGi33I7dmedXXwzXXpPaLCy9MXYEs5X5Lu6JidCPyv5K6k17uGwfMIrUvrAPsRHqC6iPg\nyBaOMQ7oJakn8CZwBHBUo8A3ICWM7xUmDEkrAN0i4qMsjn7ARW25ODMr8O9/wwknwMcfw+jRsNlm\npY7IKlCLHRZK2pSUFPoCG2aL3wCeBO6IiNdaPYG0P3Al0A24KSIuljQQICKGSLoROAz4d7bLgojo\nLWljUjKBlNxuj4iLmzi+SxpmLYmAW26Bn/wEzjwz/bu0h9Lp6jr8jfBK4aRh1oK334ZTToHXX4fb\nbkv9R5lRhDfCCw78Q0mrFcyvJunUtp7IzDrZX/+aksRWW8HYsU4Y1iFaLWlImhgR2zZaNiEititq\nZDm5pGHWyAcfwKBB8OyzqVpq111LHZGVoaKVNIClJC3eLnvL26OumJWjRx6BbbaB1VaD8eOdMKzD\n5WkNewQYJmkI6empgcDDRY3KzNrm44/h7LPT4Eg335xe2DMrgjwljXOAkcAPgO8DjwE/LWZQZtYG\nTz6Z2ivmz09dgjhhWBH56SmzSjV/Pvz853D77XDttXDIIaWOyCpIh7/cl72BnUdExC/aemIzWwLP\nP5/Gu9h8c5g4EdZcs9QRWRfRUpvGG7Sh7ygz6wQLFqROBq++Gq64Ar77XZA7grbO02zSiIibOzEO\nM2vN5MmpdPHVr6aSxnqNRxEwKz73VGZW7urr4fLLYY894MQT0xNSThhWIu6Axqycvf46DBgAixbB\nM8/AJpuUOiLr4vJ0I7JcnmVm1oEi4IYboHdvOOggePxxJwwrC3lKGqOBHXIsM7OO8OabcNJJqbPB\nurrUd5RZmWi2pCFpHUk7AitI2kHSjtm/NcAKnRahWVcybBhsvz3svDM8/bQThpWdlkoa/YABpDG9\nC0fL+wg4r4gxmXU9772XRtGbNAkeeCAlDbMylKeX229HxF87KZ428xvhVvEeeCCNeXHkkfDrX8Py\ny5c6IusCijHca4NvSNqK1Fnh4ruz3wI3W0Jz58IZZ8CIEXDHHbDXXqWOyKxVed7T+CT7+RioBw4A\nehYxJrPqN3Jk6sK8W7dUJeWEYRWizR0WSloWGB4RZfEpd/WUVZR58+Dcc+Guu9IjtQccUOqIrIsq\n5iBMjXUnNY6bWVs8+2x6Murtt1PpwgnDKlCrbRqSXiiYXQpYC3B7hllen38Ov/wlXH89/O538D//\nU+qIzNotT0P4t7J/A1gIvBMRC4oXklkVeeGF1Mlgjx4wYQKss06pIzJbIq1WT0XENOCrwKHA4cDW\nRY7JrPItWgSDB8M++8CgQXD//U4YVhXy9D11AXAzsDqwJjBU0s/znkBSf0lTJL0i6Zwm1h8taaKk\nSZKekrRN3n3NytLUqbDnnvDwwzB2LJxwgse8sKqR5+W+fwHbRMT8bH55YGJEbNbqwaVuwMvAvsBM\nYCxwVERMLthmV+CfETFHUn+gNiL65Nk3299PT1l5iEjDrl5wQRqGddAgWMqjD1h5KubLfTOB5YH5\n2fxywIycx+8NTM2quJA0DDgEWHzjj4gxBds/A6yXd1+zsjF9ehrrYs4cePJJ+PrXSx2RWVHk+Ro0\nF3hJ0s2SbgZeBOZI+p2kq1rZtwcwvWB+Bi0/rnsi8FA79zXrfBFw662www6pSuqpp5wwrKrlKWn8\nDbg7mw6gLvv3C92KNCN3vZGkvYETgL5t3be2tnbxdE1NDTU1NXl3NWu/d96BgQNTG8bw4ekdDLMy\nVVdXR11d3RIfJ0+bxo8j4srWljWzbx9SG0X/bP5coD4iBjfabhtScuofEVPbuK/bNKzz3X03nHoq\nHHccXHQRLLtsqSMya5P2tmnkSRrjI2L7RssmRMR2OYJamtSY/U3gTeBZvtwQvgEwAvheRDzdln2z\n7Zw0rPN8+CH86EcwZgzccgvstlupIzJrlw5vCJd0FPBdYCNJ9xesWgmYnefgEbFQ0mnAI0A34KaI\nmCxpYLZ+CHABsBpwrdJjiQsiondz+7b1As06zKOPpsbub30rvajXvXupIzLrdM2WNCRtCGwE/AY4\nh9SGAWkQpokRsbBTImyFSxpWdJ98Aj/9aXpB78YboV+/UkdktsQ6vKQREW8AbwB9liQws4o2enRq\nt9h119TJ4Kqrljois5LK02HhRwWzywBfAT6OiJWLFpVZqX32WXpJ79Zb4Zpr4LDDSh2RWVloNWlE\nxEoN05KWAg7GpQ+rZuPHp04Ge/WCiRNhrbVKHZFZ2WjzIEyQ/+mpzuA2DeswCxfCb34DV10Fl10G\n3/ue+4yyqlW0bkQkfbtgdilgR2BeW09kVtamTEltF6usAs89B+uvX+qIzMpSnm5EvgUclP30Iz09\ndUgxgzLrNPX18Nvfwu67p6TxyCNOGGYtaFf1VDlx9ZS127RpcPzxaWS9W26BTTctdURmnaYoY4RL\nOkDSE5JmZz+PSzqw/WGalYEIuOkm2Hln6N8fnnjCCcMsp5beCD8ZGAj8FHguW7wj8BtJ62Vvc5tV\nllmz4JRTYMYMGDECtvZAlGZt0VJJ40xgv4gYERFzsp8RwP7AGZ0TnlkHuvNO2G679PPMM04YZu3Q\n4tNTEfGlPqYiYrYkNyJY5Zg9G047Lb1/cf/90Lt3qSMyq1gtlTTmSvrSuxiStiU9QWVW/h56CLbZ\nBr72NXj+eScMsyXUUknjLOBeSUNJbRoitWkMAL5X/NDMlsBHH8FZZ6XBkf74R9h771JHZFYVmi1p\nRMSTwC6kbskHAMdl2+8SEaM6JTqz9nj88VS6qK9PnQw6YZh1GL+nYdVj3jw4/3z4859hyBA46KBS\nR2RWtorynoZZxRg3DnbYAWbOTKULJwyzomi17ymzsrZgAfzqV3Dddak7kCOPLHVEZlXNScMq14sv\npi7M1147PU677rqljsis6rX0RnjhuODBf4Z7BYiIOLhoUZm1ZNEiuPxyGDwYLr4YTjrJXZibdZKW\nShqXZf8eBqwN/JGUOI4C3i5yXGZNe/VVGDAAlloKxo6FjTYqdURmXUqrT09Jei4idmxtWan46aku\nIiI9EfXzn8N558Hpp6fEYWbtUrRBmIAVJG0SEa9mJ9oYWKGtJzJrt5kz4cQTU3cgTzwBW2xR6ojM\nuqw8X9XOAEZm3aI/DowEflzcsMxIpYs//hG23x522w1Gj3bCMCuxXC/3SVoO2DybnRIRn+U+gdQf\nuJL0ZvmNETG40fqvA0OB7YHzI+KygnXTgLnAImBBRHyp4yBXT1Wpd9+F738/DcN6662wY1nUhppV\njaK93CepO/AT4LSImAhsICnXm1OSugFXA/2BLYGjJDX+qjgbGARc2sQhAqiJiO2bShhWpe69F7bd\nFjbZJI3X7YRhVjbytGk0dFi4Wzb/JvAX4IEc+/YGpkbENABJw0jji09u2CAi3gXebWFEQD9L2VXM\nmZMauEeNSmNf7L57qSMys0bytGlsklUpfQ4QEZ+04fg9gOkF8zOyZXkF8JikcdlIglat/vGP1Mng\n8svDxIlOGGZlKk9J4zNJyzfMSNoEyNumsaSNDX0jYpakNYFHJU1pqofd2traxdM1NTXU1NQs4Wmt\n03z6KZxzDtxzD9x4I+y3X6kjMqtKdXV11NXVLfFx8ryn0Q84n9Qm8SjQFxgQESNbPbjUB6iNiP7Z\n/LlAfePG8GzdhcDHhQ3heda7IbyCjRkDxx2XBkb63e9gtdVKHZFZl1G09zQiYrik54E+2aIfRcR7\nOY8/DuglqSepLeQI0hvlTflC8JJWALpFxEdZY3w/4KKc57Vy9tlnUFsLQ4fC738P3/52qSMys5xa\nTRqSRgCXRcQDBcuuj4hTWts3IhZKOg14hPTI7U0RMVnSwGz9EElrA2OBlYF6SaeTSjVrAX9T6lNo\naeD2iBje5iu08jJxYupkcKON0vTXvlbqiMysDfJUT71Oasz+R0RclC0bHxHbd0J8rXL1VIVYuBAu\nuQSuuAIuvTQlDncyaFYyxexG5ENgH+CqrOfbY9p6Euvi/vWv1HbRvXt672KDDUodkZm1U64e3yJi\nYUScCvwVGAWsWdSorDrU16cG7t12g6OPhuHDnTDMKlyeksaQhomIuFnSC8APixeSVYU33oATTkiP\n1I4eDZttVuqIzKwDNFvSkLRyNnmXpNUbfoDXSd2KmH1ZRHoqaqedYN9909vdThhmVaOlksYdwIGk\nLkQatzQHsHGxgrIK9dZbMHAgTJv2nze8zayqNFvSiIgDs397RsRGjX6cMOyL/vIX2G47+MY30oh6\nThhmVamlMcJ3aGnHiHi+48OxivPBB3DaaSlR3HMP9OnT+j5mVrFaqp66nJb7jtq7g2OxSvPww3Dy\nyXDYYTBhAqzgAR3Nql2uQZjKmV/uK4GPP4azz4a//x3+8Af45jdLHZGZtVExX+5D0tbAFsByDcsi\n4ta2nsyqwKhRMGAA7LknTJoEq6xS6ojMrBPl6XuqFtgL2Ap4ENgfeBJw0uhK5s+Hn/0M/vQnuO46\nOPjgUkdkZiWQ543w7wD7ArMi4nhgW2DVokZl5aVhyNU33kilCycMsy4rT9KYFxGLgIWSVgHeAdYv\nblhWFhYsgIsugv33h/PPT0OwrrFGqaMysxLK06YxVtJqwA2k8TE+AUYXNSorvX/+M/VEu8YaMH48\n9GjLKL1mVq3a9PSUpI2AlSJiUvFCahs/PdXBFi2CK6+Eiy+GX/8aTjnFXZibVaFiPz21LdCTNJCS\nJG0aEX+9w1bbAAAQ90lEQVRr68mszL32Ghx/fOqd9plnYJNNSh2RmZWZVts0JA0FbgIOB74FHJT9\na9UiAq6/HnbZJTVy19U5YZhZk/KUNHYBtnIdUJV680046SR4++2ULLbaqtQRmVkZy/P01FjSmN1W\nTSLgjjtg++2hd294+mknDDNrVZ6SxlBgjKS3gM+yZRER7sa0Ur33Hpx6Krz4Ijz4YBr7wswshzxJ\n4ybge8CLQH1xw7Giu//+NObFUUfBLbfA8suXOiIzqyB5ksY7EXFf0SOx4po7F37849RuMWxY6jvK\nzKyN8iSNCZL+BNwPfJ4tCz9yW0FGjkyP0u63H0ycCCutVOqIzKxC5WkIX47UltGP9Lhtmx65ldRf\n0hRJr0g6p4n1X5c0RtJ8SWe1ZV9rxaefwumnwzHHwLXXwpAhThhmtkRaLGlI6ga8HxFntbRdK/tf\nTerwcCapS5L7ImJywWazgUHAoe3Y15rzzDOpG5Add0ydDK6+eqkjMrMq0GJJI+uosK/U7n4kegNT\nI2JaRCwAhgGHNDrHuxExDljQ1n2tCZ9/njoXPPhg+NWvUlfmThhm1kFytWkA90q6C/g0W5a3TaMH\nML1gfgbpZcE8lmTfrmnSpFS6WH/91Hax9tqljsjMqkyepLEc8D6wT6PleZLGkrxFnnvf2traxdM1\nNTXU1NQswWkr0KJF8H//B5ddBoMHp0ZvdzJoZgXq6uqoq6tb4uMUdYxwSX2A2ojon82fC9RHxOAm\ntr0Q+DgiLmvLvl2+l9tXXoHjjoPlloOhQ2HDDUsdkZlVgPb2cpunw8L1Jd0t6d3s56+S1st5/HFA\nL0k9JS0DHAE0985H4+Dbsm/XU18Pv/897LorHHkkPPaYE4aZFV3ebkRuB/4nmz86W/Zfre0YEQsl\nnQY8QupW/aaImCxpYLZ+iKS1Sf1brQzUSzod2DIiPm5q37ZdXpWaPh1OOCG9sPfUU7D55qWOyMy6\niFarpyRNjIhtW1tWKl2qeioCbrsNzj47vX9xzjmwdK4hUczMvqCYgzDNlnQM8CdSFdKRwHttPZEt\noXfeSX1GvfoqDB8O221X6ojMrAvK80b4CaSqqbeAWcB/A8cXMyhr5G9/g222ga9/HcaOdcIws5Ip\n6tNTnaGqq6c+/BAGDUpjXdxyC+y2W6kjMrMq0eHVU9kjsE0JgIj4RVtPZm0wfDiceCIccghMmADd\nu5c6IjOzFts0PuHLL9h1B04E1gCcNIrh44/hpz+FBx5I713su2+pIzIzW6zZpBERlzZMS1oZ+BGp\nLWMYcFnxQ+uCnnwSBgyAvn1TlyCrrlrqiMzMvqC1Xm6/CpxBejfjVmCHiPigMwLrUubPhwsuSI/T\nXnstHHpo6/uYmZVAS20alwKHAdcD20TER50WVVcyfnwa72KzzVIng2utVeqIzMya1ezTU5LqSSP1\nNe6yHFIvtysXM7C8KvbpqYUL4eKL4Xe/g8svh6OPdieDZtZpOvzpqYjI8w6HtcfkyamTwVVXheef\nh/XyduVlZlZaTgydqb4errwS9tgjdV/+yCNOGGZWUdxxUWeZNi09GbVwYXpZb9NNSx2RmVmbuaRR\nbBFw442w885w4IHw+ONOGGZWsVzSKKZZs+Dkk+HNN2HkSPjGN0odkZnZEnFJo1j+/OfUseAOO6Tq\nKCcMM6sCLml0tNmz4Yc/TO9c3H8/9O5d6ojMzDqMSxod6cEHUxfm66yTHqV1wjCzKuOSRkeYOxfO\nPBP+8Q+4/XaoqSl1RGZmReGSxpKqq4Nts5FvJ050wjCzquaSRnvNmwfnnQd33gnXX58epzUzq3Iu\nabTH2LHpqahZs1IX5k4YZtZFuKTRFp9/Dr/8ZSpZXHUVHHFEqSMyM+tUThp5vfgiHHtsejJqwoT0\nr5lZF1P06ilJ/SVNkfSKpHOa2eaqbP1ESdsXLJ8maZKk8ZKeLXasTVq0CC65BPbeG049NQ3D6oRh\nZl1UUUsakroBVwP7AjOBsZLui4jJBdscAGwaEb0k7QJcC/TJVgdQExHvFzPOZk2dmjoZXHrp1I7R\ns2dJwjAzKxfFLmn0BqZGxLSIWEAaX/yQRtscDNwCEBHPAKtK+lrB+s4fmSgiDbvapw985zswYoQT\nhpkZxW/T6AFML5ifAeySY5sewNukksZjkhYBQyLihiLGmp19Bpx4InzwAYwaBVtsUfRTmplVimIn\njbzjsDZXmtg9It6UtCbwqKQpETGq8Ua1tbWLp2tqaqhpzwt2Eelt7jPPhEGD4NxzU7WUmVkVqKur\no66ubomP0+wY4R1BUh+gNiL6Z/PnAvURMbhgm+uAuogYls1PAfaKiLcbHetC4OOIuKzR8iUfI/zd\nd+H734eXX4Zbb03vYJiZVbH2jhFe7DaNcUAvST0lLQMcAdzXaJv7gGNhcZL5MCLelrSCpJWy5d2B\nfsALHR7hPfekTgY32QTGjXPCMDNrQVHrXyJioaTTgEeAbsBNETFZ0sBs/ZCIeEjSAZKmAp8Ax2e7\nrw38TVJDnLdHxPAOC+7DD+H00+Gpp+Cuu2D33Tvs0GZm1aqo1VOdoV3VU489BiecAAcdlN7BWHHF\n4gRnZlam2ls91bVaej/5BM45B+69F266Cfr1K3VEZmYVpet0WDh6dBp+dc6c1MmgE4aZWZtVf0nj\ns8+gthaGDoVrroHDDy91RGZmFau6k8aECamTwY03TgMkfe1rre9jZmbNqs7qqYUL4de/hv/6Lzj7\nbLj7bicMM7MOUH0ljZdfhuOOS09EPfccbLBBqSMyM6sa1VPSqK9PAyP17QvHHAPDhzthmJl1sOoo\nabzxBhx/PMyfD2PGQK9epY7IzKwqVUdJY6ed0iO0o0Y5YZiZFVF1vBE+cWLqP8rMzHJp7xvh1ZE0\nKvwazMw6W7n2cmtmZlXEScPMzHJz0jAzs9ycNMzMLDcnDTMzy81Jw8zMcnPSMDOz3Jw0zMwsNycN\nMzPLzUnDzMxyc9IwM7Pcip40JPWXNEXSK5LOaWabq7L1EyVt35Z9zcys8xQ1aUjqBlwN9Ae2BI6S\ntEWjbQ4ANo2IXsApwLV59+0K6urqSh1CUfn6Klc1XxtU//W1V7FLGr2BqRExLSIWAMOAQxptczBw\nC0BEPAOsKmntnPtWvWr/4Pr6Klc1XxtU//W1V7GTRg9gesH8jGxZnm3WzbGvmZl1omInjbwDXbS5\nT3czM+t8RR2ESVIfoDYi+mfz5wL1ETG4YJvrgLqIGJbNTwH2AjZqbd9suUdgMjNrh/YMwrR0MQIp\nMA7oJakn8CZwBHBUo23uA04DhmVJ5sOIeFvS7Bz7tuuizcysfYqaNCJioaTTgEeAbsBNETFZ0sBs\n/ZCIeEjSAZKmAp8Ax7e0bzHjNTOzllX8GOFmZtZ5KuKNcEl/kPS2pBda2KbJFwQrQWvXJ+no7Lom\nSXpK0jadHeOSyPP3y7bbWdJCSYd3VmxLKudns0bSeEkvSqrrxPCWWI7P5hqSHpY0Ibu+AZ0c4hKR\ntL6kkZJeyuL/UTPbVeT9Jc/1tfn+EhFl/wPsAWwPvNDM+gOAh7LpXYCnSx1zB1/frsAq2XT/aru+\nbJtuwAjgAeDbpY65A/92qwIvAetl82uUOuYOvr5a4OKGawNmA0uXOu42XN/awHbZ9IrAy8AWjbap\n2PtLzutr0/2lIkoaETEK+KCFTZp6QfBrnRFbR2jt+iJiTETMyWafAdbrlMA6SI6/H8Ag4C/Au8WP\nqOPkuLbvAn+NiBnZ9u91SmAdJMf1zQJWzqZXBmZHxMKiB9ZBIuKtiJiQTX8MTCa9I1aoYu8vea6v\nrfeXikgaOTT1gmBF3Vjb4ETgoVIH0ZEk9SC97X9ttqiaGtp6AatnVQTjJB1T6oA62A3AVpLeBCYC\np5c4nnbLntTcnnTjLFQV95cWrq9Qq/eXYj9y25kaP3pbTTceACTtDZwA9C11LB3sSuD/RURIEtX1\nsudXgB2AbwIrAGMkPR0Rr5Q2rA5zHjAhImokbQI8KmnbiPio1IG1haQVSSXd07Nv5F/apNF8Rd1f\nclxf7vtLtSSNmcD6BfPrZcuqRtY4dQPQPyJaq+qpNDuS3tOBVC++v6QFEXFfacPqENOB9yJiHjBP\n0hPAtkC1JI3dgF8DRMSrkl4HNie9o1URJH0F+Cvwx4i4p4lNKvr+kuP62nR/qZbqqfuAY2HxW+gf\nRsTbpQ2p40jaAPgb8L2ImFrqeDpaRGwcERtFxEakb0M/qJKEAXAvsLukbpJWIDWk/rPEMXWkKcC+\nAFk9/+bAayWNqA2yku1NwD8j4spmNqvY+0ue62vr/aUiShqS7iB1LbKGpOnAhaRiP9HCC4KVorXr\nAy4AVgOuzb6NL4iI3iUKt81yXF/FyvHZnCLpYWASUA/cEBEVkzRy/O3+FxgqaSLpS+hPI+L9UsXb\nDn2B7wGTJI3Plp0HbABVcX9p9fpo4/3FL/eZmVlu1VI9ZWZmncBJw8zMcnPSMDOz3Jw0zMwsNycN\nMzPLzUnDzMxyc9KwsiWpXtKlBfNnS7qwk2Ook7RDNv2gpJVb26eV49VIuj/v8iUlaS9Juzazrqek\nkTmOMa2j47LK5aRh5exz4DBJX83m2/RSkaRuHRDD4nNGxIERMbcDjtmZ9iZ19bEk/DKXLeakYeVs\nAXA9cEbjFdm35BHZ4DGPSVo/W36zpOskPQ1cImmopGsljZH0avaN/hZJ/5Q0tOB410gamw1UU9tU\nMJKmSfqqpO8rDao0XtLrkkZk6/tJGi3pOUl3SuqeLe8vabKk54DDWrtoSbVKgx+NzGIeVHDNUyT9\nMYv/LknLF8S2eja9U7bvhsBA4Iws1t1bOOfO2e9yWUnds9/Dlq3Fal2Pk4aVu2uAo5uoFvodMDQi\ntgVuB64qWLcusGtEnJXNrxIRu5KSz33AJcBWwNaSts22OT8idiZ1JriXpK2biCWAiIjrImJ7YGdS\nh4SXSVoDOB/4ZkTsCDwHnClpOVLiOyhbvjb5vrlvBvQDegMXFpSaNgN+HxFbAnOBUwti+2KwEW8A\n1wGXR8T2EfFkcyeLiLHZ7+ZXwGDgtkrq7sQ6j5OGlbWsi+1bgcbDVPYB/pRN/xFo+BYdwF3xxf5x\nGtoKXgTeioiXsvUvAT2zdUdkJYHnSQllixzhXQX8IyIezOLZEhid9fFzLKl/n82B1yPi1YJYW+v6\nPYAHI2JBRMwG3gEaBv2ZHhFjmrjuluTtav4XpES1Eymxmn1JRXRYaF3elaSb+dBGy5u7GX7aaP7z\n7N964LOC5fVAN0kbAWcBO0XEnKzaarmWAlIaC3v9iDi1YPGjEfHdRtttyxflvYF/XjC9iP/8Xy1M\nhiqYX8h/vgS2GHsL1gC6k4beXZ4v/x7NXNKw8pf1738naVSxhpvkaODIbPpo4Il2Hl7ASqTeS+dm\n3Xvv3+IO0o6kJFM4Ct/TQF+lgYjI2gV6kboO7ylp42y7o3LG1JwNsu65IQ0lOyqbnkYqIQB8u2D7\nj0jXl8cQ4GekEtzgnPtYF+OkYeWs8Fv1ZaRvwg0GAcdnXXIfzReHGW1cvx8trYuIScB40g3+dqC5\nuv8g3dB/SOpKemTWwHx9Nvb3AOCOLKbRwOYR8RlwCvBgVv31dhMxNBw7mphu7GXgh5L+CazCf4bI\nvQj4raSxpFJHw/73k55AGy+p2RHZJB0LfBYRw4DfADtLqmlue+u63DW6WYVQGuP5/ohoqpG+vccb\nGhF7t7Ld69kAWWYuaZhVGH/Ls5JyQ7hZhYiIacA2HX3YDtrGughXT5mZWW6unjIzs9ycNMzMLDcn\nDTMzy81Jw8zMcnPSMDOz3Jw0zMwst/8P5Ab/UKf2ZwAAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fe0db41f650>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,sign\n", + "from sympy import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n", + "\n", + "#Caption:u-Law companding\n", + "#Figure5.13(a)Mulaw companding Nonlinear Quantization\n", + "#Plotting mulaw characteristics for different \n", + "#Values of mu\n", + "\n", + "x = arange(0,0.01+1,0.01)# #Normalized input\n", + "mu = [0,5,255]##different values of mu\n", + "def mulaw(x,mu):\n", + " \"\"\"\n", + " F(x) = sgn(x) ln(1 + μ|x|) / ln (1 + μ)\n", + " -1 <= x <= 1\n", + " \"\"\"\n", + " f=sign(x)*log(1+mu*abs(x))/log(1+mu)\n", + " return f\n", + "Cx=[]\n", + "\n", + "for i in range(0,len(mu)):\n", + " Cx.append(mulaw(x[i],mu[i]))\n", + " plot(Cx)\n", + "title('Compression Law: u-Law companding')\n", + "xlabel('Normalized Input |x|')\n", + "ylabel('Normalized Output |c(x)|')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.13(b) page 216" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEaCAYAAAD65pvjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XeYHNWZ7/Hvb4IkcrDugi1yXMMCBkwwYDOEiwUmSSxB\nZIwBE2wMXANmWRgDXgMLNmkBmSCSyLAkE4yBIQmJnAUmCZBERoCMQJrw3j9OjdSa2BN6qmfm93me\nfqbC6eq3u2vq7Tqn6hxFBGZmZoUq8g7AzMzKj5ODmZm14uRgZmatODmYmVkrTg5mZtaKk4OZmbXi\n5GB9TtJMSSvkHYf1b5KmSNoymz5B0iV5xzSQODmUCUl7Sno6O3BOl3S3pE3zjqsUImKRiJjS29vN\nDhZb9fZ2uxhDraQmSRt2Uq5G0vt9FdcANfcmrYj4r4g4KM9gBhonhzIg6Wjgz8BpwL8AywL/A+yY\nc1xVeb5+NwQFB4y+JknAvsBL2V+zfsvJIWeSFgN+DxwWEbdFxDcR0RgRf42I47IyQyWdI2la9viz\npCHZuhpJUyX9VtLH2VnHzpK2k/QPSZ9JOr7g9Wol3SzpeklfSXpG0toF66dIOlbSi8BMSRWSNpY0\nQdIMSc9L2ryg/P6S3sq29bakPbPlq0h6WNIXkj6RdH3Bc5okrdT8/iVdlcU+RdJ/ZAfZ5m0/Jum/\nJX2ebX9kNz7jxSXdlb3G55LulDQiW7dF9l6by94v6cmC+UclFZukfwwsChwJ7CGpuquxZq/5M0nP\nSfpS0nuSTi5Yd2X2YwJJI7LP8rBsfmVJn3Ww3YMkvZp9V69IWjdb/n1Jddn3+7KkHQqec4WkC7Mz\n2ZnZ57G0pHOz8pMl/aCg/BRJx2fb/1zS5ZKGZuva/R6y9XWSTsm+868k3SfpOwXr95H0rqRPJZ3Q\n4r3VSro6m14h+1z2zcp/Ulhe0gLZ5/h59nkcK5/FtRYRfuT4AEYC9UBFB2VOASYAw7PH48Ap2bqa\n7PknApXAL4BPgfHAQsAawCxg+ax8LTAHGJ2VPwZ4G6jM1k8BngVGAEOzv58CI7P1W2fz38m2/yWw\narZuKWCNbPo64HfZ9BBgk4L30wSslE1fBfxvtq3lgdeBn2fr9s9iPRAQ8EtgWgef0zvAlm0sXxIY\nBQwDFgZuBP43W7cA8E1Wphr4CHg/i2eB7LNbAtgMmNHJd3kZcEk2/T4wuoOyNcD77azbHFgzm14L\n+BDYKZs/ALgjm94TeBO4Ppv/efP7amObuwJTgfWz+ZWB5bL3/CZwPFAFbAF8BayWlbsC+ARYN9sf\nHsj2kb2z7+RU4MGC15kCvJjtN0sAjwGndvY9ZOvrgDeAVbIyDwF/zNatAczMvochwNmk/X7LbP3J\nwNXZ9AqkfWxsFvPawLfA6tn607NtL5bF+SLwXt7HgnJ75B7AYH8AewEfdFLmTbKDcza/DfBONl2T\nHcCUzS+S/WNsUFD+aWDHbLoWmFCwTsB0YNNs/h1g/4L1xwFXtYjnXlK1yYLADFKiWaBFmSuzf84R\nbbyfJmAlUnKaDfxrwbqDgYey6f2BNwrWLZg991/a+ZzaTA5tlPsB8HnB/CPZQWtj4D7geuCnpAPl\nC0V+jwuSEuU22fw5wG0dlK+hneTQRtlzgD9l0ysDn2ff20XZ5/V+wWf+m3a2cR/wqzaW/7jl/gdc\nC5ycTV8BjC1YdwTwSsH8WhQkzew7OLhgflvgzSK/h4eAEwrmDwXuyaZPAq5t8XnPZl5yqKV1cvhe\nQflJwG7Z9FvA/y1Yd2Cx38VgerhaKX+fAcMldfRdfA94t2D+vWzZ3G1EtpeTfgVD+gVMwbKFC+an\nNk9kz5vaYnuFp9jLA7tmVQgzJM0ANgWWjohZwO6kX/TTsyqD1bPnHUs6gD2ZVVUc0Mb7Gk765dry\nvY0omP+wINZZ2WThe+mUpAUljc2qPL4EHgYWa66+yuZrSAfKh7PH5sBPSL9mizGK9Ev2gWz+JmBb\nSd+RtFxWJTNT0ldFxLuRpIey6pcvgENIZ2pExFvA16QD64+Bu0if/WpZvA+3s9llSAfFlr7H/N83\npO+jeX8I4OOCdd+2mG+5b9Fie3P31SK+Byj4vlts+3vMv9/OIv3vdKRwW7NabKswxqlYK04O+XuC\n9AtoVAdlppN+DTVbLlvWXcs2T2RJaZkW2yts1H2P9ItsiYLHIhFxJkBE/C0itgGWBl4DLsmWfxQR\nB0fECNLB7UJl7QwFPiUdUFu+t97+Zz0GWA3YMCIWIx34lT0gHaS2YF4yaE4Wm9P+wbal/UhnbVMl\nfQDcQkp8e0XEe9lntkhELFrEtq4FbgOWiYjFgYuZ/3/1YVI1UXVETM/m9ydV4zzfzjbfJ1XXtDQd\nWLbFAXp5YFoRcbZnuRbTzdvq7HvoyHTm328XJEuY3fBB4bZaTFvGySFnEfEl6ZT5fyTtlP26qpa0\nraQzsmLXASdKGi5peFb+6h687PqSRildjfQb0q/Bie2UvQbYQdI2kiolDVNqBB8h6V+ymBciHeS/\nBhoBJO0qaZlsG1+QEk5Ti/feSKp3/oOkhSUtDxyVvWZ3DclibH5UkX4xfgN8KWlJUv10oQnA6sAG\nwJMR8SrpALkRqcqpQ1mj6pbAz4B1Ch5n0MlVS0oXGxTGqyzeGRExR+mS2D2ZP2E/TKreaY6tLpt/\ntOAMsqVLgf8naT0lq0hajvS9zwKOzfa7GmB7UtUaFHfgnu8tAYdl+8eSwH8AN2TrOvseOnq9W4Dt\nJW2qdDHGKXT/+HUj8LusgXwE6bPz2AUtODmUgYj4E3A0qVH5Y9Kv9cNIDbWQLnF9mtRw9mI2fVrh\nJlpusqOXA24nVQd9TmrzGJ0dqNuKbSqwE3BCQWzHkP6JK0gH82mkU/wfk+qJAX4ITJQ0M3u9X8e8\nexsK4/sVKam8DTxKakgfV1CuK+8N4G7Swa75cRKpzn4B0pnKBOAe5r9GfhbwDKkuvSFbPAGYEhGf\nAkj6cfZe2rIP8FxE/D0iPs4eHwHnAWtJWqON5wSp+uybgli/BlYkffenZFVQ/8m8g2uzR0gH2ubk\n8Hj2/tpNZBFxM/AH0lnJV8CtwBIRUQ/sQGob+AS4ANgnIv5REGfhZ97ZdxLZa/yNVI31BvP21Q6/\nh3a2FVn8rwCHZ9ueTtp332+rbBvbaekU0tnpO1mcN5EufLACav+HRi+9gHQ56RfVxxGxVhvr92Je\n/fRM4NCIeLFlOesdSpdFrhIR++Qdiw08kt4BDoyIB/OOpViSDiU1Vm+RdyzlpC/OHMaRLtdsz9vA\nTyJibdJlcX/pg5gGs65WE5gNKEr3aWyqdA/P6qSz9v/t7HmDTcnvgI2IR9VBPzoR8UTB7CRS46iV\nTlvVAmaDyRBSI/+KpPaw64ALc42oDJVb9wgHkuqMrUQi4vd5x2ADV0SsmHcMnYmI90j3Z1gHyiY5\nSNqCdIfngOxszsysPymL5KDUt88lpLuAZ7RTxlUhZmbdEBFdbmvM/VLW7FrrW4G9I+LNjsrmfTv5\nQHqcfPLJuccwUB7+LP15lvOju0p+5iDpOtKdkMOzng9PJt05SkSMJV2HvgRwUXaTZn1EdNgXvpmZ\nlVZfXK00ppP1vyD1JGpmZmUi92oly0dNTU3eIQwY/ix7lz/P8lDyO6R7i6ToL7GamZULSUR/bJA2\nM7Py4+RgZmatODmYmVkrTg5mZtaKk4OZmbXi5GBmZq04OZiZWStODmZm1oqTg5mZteLkYGZmrTg5\nmJlZK04OZmYDUVMT7Ldft5/u5GBmNhCddBK8/Xa3n14Ww4SamVkvuu46GD8eJk2CpZbq1ibcZbeZ\n2UDy1FOw3XbwwAOw9trustvMbNCbPh1Gj4a//AXWXrtHm3JyMDMbCL75BkaNgkMOSX97yNVKZmb9\nXQTssw80NsK114Lm1SJ1t1rJDdJmZv3dGWfAa6/BI4/Mlxh6wsnBzKw/u/NOuOCCdGXSggv22mad\nHMzM+quXX4YDD0wJYsSIXt20G6TNzPqjTz+FnXaCP/8ZNtqo1zfvBmkzs/5mzhzYZhvYeGM4/fQO\ni3a3QdrJwcysP4mAQw+FadPgttugsrLD4r5aycxsMLjwQnjsMZgwodPE0BM+czAz6y8eeAD22isl\nhpVWKuopZdt9hqTLJX0k6aUOypwn6Q1JL0hat9QxmZn1O2+8AXvuCddfX3Ri6Im+uFppHDCyvZWS\ntgNWiYhVgYOBi/ogJjOz/uPLL2HHHeH3v4eamj55yZInh4h4FJjRQZEdgSuzspOAxSV1r49ZM7OB\nprERxoyBrbaCX/6yz162HO5zGAG8XzA/FVgmp1jMzMrLccfB7NnpfoY+VC5XK7VsLHHLs5nZlVem\ny1WffBKqq/v0pcshOUwDli2YXyZb1kptbe3c6ZqaGmr6qO7NzKzPTZgAv/0t1NXBkksW/bS6ujrq\n6up6/PJ9cimrpBWAOyNirTbWbQccERHbSdoYOCciNm6jnC9lNbPB4b330t3Pl16aRnXrgbK9CU7S\ndcDmwHBJ7wMnA9UAETE2Iu6WtJ2kN4GvgQNKHZOZWdn6+uvUZ9LRR/c4MfSEb4IzMysXTU2w++6p\n6+0rruiVsRnK9szBzMyKdOqpqc+kBx/stUF7usvJwcysHNx8M1x+eRq0Z9iwvKNxtZKZWe6eey51\nwf23v8G6vduDUNn2rWRmZh346CPYeefU22ovJ4aecHIwM8vL7NkwahQccADsumve0czH1UpmZnmI\ngJ//HGbOhBtvhIrS/Fb31UpmZv3Jn/4Ezz+fBu4pUWLoCScHM7O+ds89cPbZMHEiLLRQ3tG0ycnB\nzKwvTZ4M++2XOtRbbrm8o2lX+Z3LmJkNVJ9/ngbtOfNM2GSTvKPpkBukzcz6Qn09bLstrLNOqlLq\nI91tkG43OUiaQnHjKkRElHxAUycHM+vXfvUrePNNuOsuqKzss5ft9auVImKFHkVkZmbJ2LHw97+n\nBug+TAw9UXS1kqRhpLOE2aUNqd3X95mDmfU/dXWpp9XHHoNVV+3zl+/1MwdJFcDOwBhgE1LjtSQ1\nAk8A44HbfMQ2M2vH22/DHnvA+PG5JIae6KjN4RHgUeAO4PnmMwZJQ4F1gR2BzSLiJ30SqM8czKw/\nmTkzXZF0yCFwxBG5hVGKBumhnVUhFVOmtzg5mFm/0diY+kz67nfh4otzHZuh13tlLThT2LqNF9uv\nsIyZmRU48UT48ks4//zcB+3prmJugjtZ0kWSFpK0tKQ7SVVKZmbW0vjxcMMNcMstMGRI3tF0WzHJ\nYXPgbeAFUhvEdRGxS0mjMjPrj558Eo46Cm6/HYYPzzuaHikmOSwBbAC8BcwBlpP66XmSmVmpTJsG\no0fDpZfCWmvlHU2PFZMcngDui4ifkpLECODxkkZlZtaffPNNGs3t8MNT30kDQKc3wUlaPiLebbFs\n84h4uKSRtY7DVyuZWfmJgD33TGMyXHNN2TVA9/rVSpJWBmiZGLJlDxeWMTMbtP74R3jrrVSdVGaJ\noSc6Gs/hvyQtRLoJ7mngA0DAd4Efkq5YmgnsUeogzczK0u23w0UXwaRJsMACeUfTqzqsVpK0Cung\nvymwfLb4XeAx0lVLb5c8wnmxuFrJzMrHiy/CVlvB3XfDBhvkHU27ev0O6XLj5GBmZeOTT2DDDeEP\nf0jtDWWs19scCjZ8uKQlCuaXkHRYV1/IzGxAmDMHdtklJYUyTww9UczVSi9ExDotlj0fET8oaWSt\n4/CZg5nlKwIOPjidOdx6a7pCqcyV7MwBqMi6725+oUqguguBjZT0mqQ3JB3Xxvrhku6V9LyklyXt\nX+y2zcz61PnnpwF7rr66XySGnijmzOEsYDlgLOlqpUOA9yLimE43nhLJ68DWwDTgKWBMREwuKFML\nDI2I30kanpVfKiIaWmzLZw5mlp/774d994UJE2DFFfOOpmi9PthPgeOAg4FDs/n7gUuL3P6GwJsR\nMSUL8npgJ2ByQZkPgLWz6UWBz1omBjOzXP3jH7D33nDTTf0qMfREp8khIhqBi7JHV40A3i+Ynwps\n1KLMJcCDkqYDiwC7deN1zMxK44svYIcd4LTT4Cd9MrZZWehomNCTi9xGRMQp7a0r4vknkEaaq8nu\nuL5f0joRMbNlwdra2rnTNTU11NTUFBmimVk3NDSkYT5/+lM46KC8oylKXV0ddXV1Pd5ORyPB7U9x\nB3ci4sp2trExUBsRI7P53wFNEXFGQZm7gT9ExOPZ/APAcRHxdIttuc3BzPrW0UfDSy/BPfdAVTG1\n8OWn19scIuKKHkWUPA2sKmkFYDqwOzCmRZnXSA3Wj0taClidNH6EmVl+Lr8c7rordY3RTxNDT5T0\nHUdEg6QjgPuASuCyiJgs6ZBs/Vjgv4Bxkl4gXVp7bER8Xsq4zMw69NhjcPzx8MgjsMQSnZcfgNx9\nhplZoXffhY03hnHjYOTIvKPpsVJ2nzGsmGVmZv3eP/8JO+0Exx47IBJDTxRzE9yzEbFeZ8tKzWcO\nZlZSTU2w666w2GJw2WUDZmyGXm+QlvRd4HvAgpLWI90dHaQb1RbsbqBmZmWpthY+/BCuvXbAJIae\n6KhBehtgf9KNbGcXLJ9JujfBzGxguPFGuPJKePJJGDo072jKQjHVSrtExC19FE9Hcbhaycx637PP\nppvc7r8fftCnnU33iVL2rfRvktZkXrUSAB3cFW1m1j988AHsvDOMHTsgE0NPFJMcvmZeUlgA2B54\ntWQRmZn1hW+/hVGj4Be/gNGj846m7HT5PgdJQ4G/RcTmpQmp3dd1tZKZ9Y4I2G+/lCBuuGFAN0CX\nslqppYVIjdRmZv3TWWfBK6/Ao48O6MTQE50mB0kvFcxWAP8CuL3BzPqnv/4Vzjknjei2oK/Kb08x\nVyutkE0G0AB8HBH1pQ2rzThcrWRmPfPKK7DFFnDHHamLjEGgZNVKETFF0vrAZkAT8DjwbNdDNDPL\n0Wefpa4xzjpr0CSGniimb6WTgCuAJYH/Q+pB9T9LHJeZWe+pr09dY4wencaBtk4VU630D2DtiPg2\nm18AeCEiVuuD+ArjcLWSmXXPYYfBe+/B7bdDZWXe0fSpUl6tNI10f8O32fww0ljQZmbl76KLoK4u\nNUAPssTQE8WcOdwObAD8LVv0f4EnSQkiIuLXJY1wXhw+czCzrnnoIRgzJg3es8oqeUeTi+6eORST\nHPYjdZ0B6YolFf5tb/zo3ubkYGZd8tZbsOmmqZfVLbfMO5rclLJaaYmIOKfFi/2m5TIzs7Lx1Vew\nww5w0kmDOjH0RDFnDs9FxLotlj0fEX3aS5XPHMysKI2N6ZLVZZdN7Q2DXCkG+xkD7AmsKOnOglWL\nAJ91PUQzsz5wwgnw9ddw3nl5R9KvdVStNAH4gHRvw1nMa3eYCbxQ4rjMzLru6qvh5pvToD3V1XlH\n0691uVfWvLhaycw6NHEi7LhjukJpzTXzjqZslKxBWtLMgtkhQDXwz4hYtKsvZmZWElOnwi67wOWX\nOzH0kmL6VlqkeVpSBbAj4I5JzKw8zJqVGqCPPBK23z7vaAaMblUr+WolMysLEbDHHjB0KFx5pcdm\naEMpq5V2KZitANYHvunqC5mZ9brTToN3303dYzgx9KpiboLbgXljSDcAU4CdShWQmVlRbr0VLrkE\nJk2CYcPyjmbA8dVKZtb/vPACbL013HsvrL9+3tGUte5WK3U4noOk7SQ9Iumz7PGwpJ91MbCRkl6T\n9Iak49opUyPpOUkvS6rryvbNbJD5+OPUAH3BBU4MJdTumYOkg4BDgGOBZ7LF6wOnA5dFxNhONy5V\nAq8DW5O6/n4KGBMRkwvKLE4aXe6nETFV0vCI+LSNbfnMwWywmz0bttoqDfV56ql5R9Mv9HqvrJIm\nA5tFxGctln8HeDwi/rWIoH4EnBwRI7P54wEi4vSCMocBS0fESZ1sy8nBbDCLgF/8AmbMSHdBV3Q6\nkKVRomqllomhYFmxR+kRwPsF81OzZYVWBZaU9JCkpyXtU+S2zWwwOfdcePppuOoqJ4Y+0NHVSl9J\n+kFEPF+4UNI6pP6VilFMEqkG1gO2AhYEnpA0MSLeaFmwtrZ27nRNTQ01NTVFhmFm/dp998EZZ6Qu\nMhZeOO9oylpdXR11dXU93k5H1UqbAeOBcaQ2B5HaHPYH9o6IRzvduLQxUFtQrfQ7oCkizigocxyw\nQETUZvOXAvdGxM0ttuVqJbPB6PXX4cc/TpeubrZZ3tH0O71erRQRjwEbAZWkhLBfVn6jYhJD5mlg\nVUkrSBoC7A7c0aLM7cBmkiolLZi95qtdehdmNjDNmJEG7fnjH50Y+liHN8FFxIfAf3Z34xHRIOkI\n4D5SkrksIiZLOiRbPzYiXpN0L/Ai0ARcEhFODmaDXUMD7L47/OxncOCBeUcz6PgmODMrT0cemaqU\n7roLqorpzMHaUsoxpM3M+tall6a7nydNcmLIic8czKy8PPoo/Pu/p7+rrZZ3NP1eKcaQLhw3Opg3\nTChARMSOXX0xM7MOTZkCu+2Whvt0YshVR+drZ2d/RwFLA9eQEsQY4KMSx2Vmg83MmWmYz+OPh222\nyTuaQa/TaiVJz0TE+p0tKzVXK5kNYE1NMHo0DB+euuH22Ay9ppQN0gtKWjki3speaCXSncxmZr3j\npJPg88/hxhudGMpEMcnhKOAhSe9k8ysAB5csIjMbXK67DsaPhyefhCFD8o7GMkVdrSRpGLB6Nvta\nRMwuaVRtx+BqJbOB5qmnYLvt4IEHYO21845mQCpJr6zZhhcCfgscEREvAMtJ2r4bMZqZzTN9empn\nuOQSJ4YyVEy/t+OAOcAm2fx04A8li8jMBr5vvoFRo+CXv4Sdd847GmtDMclh5awX1TkAEfF1aUMy\nswEtAg46CFZaCU44Ie9orB3FNEjPlrRA84yklYE+b3MwswHijDPgtdfgkUd8ZVIZKyY51AL3AstI\nuhbYlNSFt5lZ19x5J1xwQeozaUFfEV/Oir1aaTiwcTY7MSI+LWlUbcfgq5XM+rOXX4Ytt0y9rG64\nYd7RDBqlvFrpQdIAP3dlj08l/aVbUZrZ4PTpp6lrjD//2YmhnyimQXpF4DhJJxcs26BE8ZjZQDNn\nTupldbfdYK+98o7GilRMcvgC2BJYStKdkhYvcUxmNlBEwK9/DYsuCn/wFfD9SVGjaEREA3CYpP2B\nR4ElShmUmQ0QF14Ijz0GTzwBlZV5R2NdUExyGNs8ERFXSHoJOLx0IZnZgPDAA3DqqTBhAiyySN7R\nWBe1e7WSpEUj4itJ3yEN9tPyeZ+VPLr54/HVSmb9xRtvwGabwQ03QE1N3tEMaqXosvs64GfAM7RO\nDgGs1NUXM7NB4Msv05VJp5zixNCPeQxpM+s9jY2www6pa4wLLsg7GqM0Y0iv19ETI+LZrr6YmQ1w\nxx0Hs2en+xmsX+uoWulPtK5OKrRFL8diZv3ZlVfC7benrjGqq/OOxnrI1Upm1nMTJqSutx9+GL7/\n/byjsQKlHEMaSWsB3weGNS+LiKu6+mJmNgC99166A/qKK5wYBpBOk4OkWmBzYE3gr8C2wGOAk4PZ\nYPf117DTTnD00Wm4TxswOq1WkvQysA7wbESsI2kpYHxEbN0XARbE4Wols3LS1AS77w4LLQTjxnls\nhjJVsl5ZgW8iohFokLQY8DGwbBcCGynpNUlvSDqug3IbSGqQNLrYbZtZjk49FaZNg7FjnRgGoGLa\nHJ6StARwCfA08DUwoZiNS6oELgC2BqZl27ojIia3Ue4M0qBC3svMyt3NN8Pll6crk4YOzTsaK4FO\nk0NEHJZNXizpPmCRiHixyO1vCLwZEVMAJF0P7ARMblHuV8DNuCtws/L33HNw6KHwt7/B0kvnHY2V\nSLFXK60DrABUplmtEhG3FvHUEcD7BfNTgY1abHsEKWFsSUoOblgwK1cffZQuWb3wQlh33byjsRIq\n5mqlccBawCtAU8GqYpJDMQf6c4DjIyIkiQ6qlWpra+dO19TUUON+W8z6zuzZMGoUHHAA7Lpr3tFY\nO+rq6qirq+vxdoq5WulVYM3uXCokaWOgNiJGZvO/A5oi4oyCMm8zLyEMB2YBB0XEHS225auVzPIS\nkZLCP/8JN94IFcVcy2LloJQ3wT0FrEE6c+iqp4FVJa0ATAd2B8YUFoiIub27Zmcpd7ZMDGaWsz/9\nCV54IQ3c48QwKBSTHMYBT0j6EJidLYuIWLuzJ0ZEg6QjgPtI7RWXRcRkSYdk68d2uAEzy98998DZ\nZ8PEiemeBhsUiqlWegs4CniZgjaH5iuQ+oqrlcxyMHkybL453HYbbLJJ3tFYN5SyWuljV/OYDUKf\nf54G7TnzTCeGQaiYM4eLgMWAO4E52eIo8lLWXuMzB7M+VF8P224L66yTqpSs3yrlmcMwUlvDNi2W\n92lyMLM+dPTRaUyGM8/MOxLLSYfJIevW4vOIOKaP4jGzvI0dC3//e2qArqzMOxrLSYfJISIaJW0q\n1+mYDQ51dXDSSemS1cUWyzsay1Ex1UrPA7dLuol0gxrk0OZgZiX29tuwxx4wfjysumre0VjOim1z\n+JzU91EhJwezgWLmzDRoz4knwtZ9OlSLlSmPIW022DU2pj6TvvtduPhij80wwJRssB9Jy0r6X0mf\nZI9bJC3TvTDNrOyceCJ8+SWcf74Tg81VTCcp44A7gO9ljzuzZWbW340fDzfcALfcAkOG5B2NlZFi\nboJ7ISLW6WxZqblayayXPfkkbL89PPgg/Nu/5R2NlUgpx5D+TNI+kiolVUnaG/i06yGaWdmYNg1G\nj4ZLL3VisDYVkxx+DuwGfAh8AOwKHFDKoMyshL75Jo3mdvjhqe8kszb4aiWzwSQC9twzjclwzTVu\ngB4Eer1vJUknt7MqACLilK6+mJnl7I9/hLfegocfdmKwDnV0E9zXtB4DeiHgQNJwnk4OZv3JbbfB\nhRemhugFFsg7GitzRVUrSVoU+DUpMdwInB0RH5c4tpYxuFrJrLtefBG22gruvhs22CDvaKwPlaTL\nbknfIY0CtxdwFbBeRMzoXohmlotPPkldY5x3nhODFa2jNoezgFHAX4C1I2Jmn0VlZr1jzhzYZZfU\nCD1mTN5N06rzAAAOGElEQVTRWD/SbrWSpCbSyG/1bayOiFi0lIG1EY+rlcy6IgIOPjidOdx6a7pC\nyQadXq9WigjvSWb92fnnw6RJ8PjjTgzWZcV02W1m/c3996fLVp94AhZZJO9orB9ycjAbaP7xD9h7\nb7jpJlhhhbyjsX7K55pmA8kXX8AOO8Bpp8FPfpJ3NNaPufsMs4GioSH1srr66nDuuXlHY2WilL2y\nmll/cOyx0NQEZ5+ddyQ2ALjNwWwguPxyuOuudHVSlf+tredcrWTW3z32WBqb4ZFH4F//Ne9orMyU\ndbWSpJGSXpP0hqTj2li/l6QXJL0o6XFJa/dFXGb93rvvwm67wVVXOTFYryr5mYOkSuB1YGtgGvAU\nMCYiJheU+RHwakR8KWkkUBsRG7fYjs8czAr985+w2Waw335w1FF5R2NlqpzPHDYE3oyIKRFRD1wP\n7FRYICKeiIgvs9lJwDJ9EJdZ/9XUlJLCeuvBb36TdzQ2APVFy9UI4P2C+anARh2UPxC4u6QRmfV3\ntbXw4Ydw7bUetMdKoi+SQ9F1QZK2II1ZvWnpwjHr5268MbUxTJoEQ4fmHY0NUH2RHKYByxbML0s6\ne5hP1gh9CTCyvTEjamtr507X1NRQU1PTm3Galb9nnoHDD099Jy21VN7RWBmqq6ujrq6ux9vpiwbp\nKlKD9FbAdOBJWjdILwc8COwdERPb2Y4bpG1w++AD2GgjOOecdOmqWRFKMhJcb4iIBklHAPcBlcBl\nETFZ0iHZ+rHAScASwEVK9af1EbFhqWMz6ze+/RZGjYKDDnJisD7hm+DMyl1EujJp9my4/no3QFuX\nlO2Zg5n10FlnwSuvwKOPOjFYn3FyMCtnd92V2hgmToQFF8w7GhtEnBzMytUrr8DPfw533AHLLtt5\nebNe5C67zcrRZ5/BTjul7rc33rjz8ma9zA3SZuWmvh5++lP44Q/hzDPzjsb6ue42SDs5mJWbww6D\n996D22+Hysq8o7F+zlcrmQ0EF10EDz8MTzzhxGC58pmDWbl46CEYMwYefxxWXjnvaGyAKOcuu82s\nM2+9lRLDtdc6MVhZcHIwy9tXX8EOO8BJJ8GWW+YdjRngaiWzfDU2pktWl1sOLrww72hsAHK1kll/\ndMIJMGsWnHtu3pGYzcdXK5nl5eqr4eab4cknobo672jM5uNqJbM8TJwIO+6YrlBac828o7EBzNVK\nZv3F1Kmwyy5w+eVODFa2nBzM+tKsWakB+sgjYfvt847GrF2uVjLrKxGwxx4wdChceaXHZrA+4e4z\nzMrdaafBu+9CXZ0Tg5U9JwezvnDrrXDJJTBpEgwblnc0Zp1ycjArteefh0MOgXvvhe9+N+9ozIri\nBmmzUvr4Y9h5Z7jgAlh//byjMSuak4NZqcyeDaNHw777wu675x2NWZf4aiWzUoiAX/wCZsxId0FX\n+HeY5cNXK5mVk3PPhaefTmMzODFYP+TkYNbb7rsPzjgjdZGx8MJ5R2PWLU4OZr3p9ddhn33SpavL\nL593NGbd5vNds94yY0YatOf002GzzfKOxqxH3CBt1hsaGmC77VJHen/+c97RmM1Vtr2yShop6TVJ\nb0g6rp0y52XrX5C0bqljMut1xxyTGp7/+7/zjsSsV5Q0OUiqBC4ARgJrAGMkfb9Fme2AVSJiVeBg\n4KJSxmRJXV1d3iEMGHW//W26+/n666HKzXg95X2zPJR6T94QeDMipgBIuh7YCZhcUGZH4EqAiJgk\naXFJS0XERyWObVCrq6ujpqamW89tamygYc63NNbPobF+dvY3m26YQ1N9PU0N2bKGOUR9fVo+Zw5N\nDfU0NdbTVJ/KRWNDmm5I01FfT1NDAzTUZ8saoaGeaGggGhugoSGbbkQFy2hsTI+GRmhM82pIy9TU\nNP90YyNqbMoejagpqGhe1hRUNDZR0ZSmKxubUGNQ2dRERVOkR2P6W9kUVDbBPd8ENS9NhsUX790v\naZDqyb5pvafUyWEE8H7B/FRgoyLKLAP0SXKIpiaaGhtobJgz94DX1FBPw5xvaWpIB7XGObPTQa2h\nnsb62fMd/KKhgcb62dlBLh30orEhHdjqCw54jdkBLjvQ0djYYrohHdQKDm4tD3rKptPfJioaCw9+\nTahp3kGvoin72+YBL/h0xmzeuOT0uQe6eQe7dMCryP42z1cGVDWlB4AqSOedFYCASs37WzFvWhUi\nKrJllRWpN9LKbLpCRGVFqo4p/JtNq7Iira+sJCors3XzpqOykqiqQpWVc5dr6NC0rCKto6oKKivT\n36oqqKyCqupsvnru8qiqLpgfks1XEdVDoKqapqpqVD2EqBpCVFcTzdNVQ2i6fDystlpf7K5mfabU\nyaHYFuSWjSVtPu/ptYeng1zzAa+pKTu4Nc33i675QFeRHQgrm6AigqrG9LcyO8g1H/AEUJn1opwd\n8FShbFrZtAqWV2QHO81dH9lBTYUHvIoKqCo86M07wM1dVlWVPa+SqCo4yFVVQXU1MWxYmq6sTAev\n5gNiVRVRmQ5sqqqGyiqiunC6GlVVE5VVKDvARVU1qk5/ufYO4sAxRFV1dgAcAnMPftnBcciwtH7I\nUKgemg6E1UOoqKyiAvCox8lCi9yTdwhmva6kVytJ2hiojYiR2fzvgKaIOKOgzMVAXURcn82/Bmze\nslpJki9VMjPrhnLsPuNpYFVJKwDTgd2BMS3K3AEcAVyfJZMv2mpv6M6bMzOz7ilpcoiIBklHAPcB\nlcBlETFZ0iHZ+rERcbek7SS9CXwNHFDKmMzMrHP95iY4MzPrO2XXfYZvmus9nX2WkmokfSnpuexx\nYh5x9geSLpf0kaSXOijj/bJInX2e3je7RtKykh6S9IqklyX9up1yxe+jEVE2D1LV05vACqSLYZ4H\nvt+izHbA3dn0RsDEvOMux0eRn2UNcEfesfaHB/BjYF3gpXbWe7/s3c/T+2bXPs+lgR9k0wsDr/f0\n2FluZw5zb5qLiHqg+aa5QvPdNAcsLmmpvg2zXyjms4TWlxFbGyLiUWBGB0W8X3ZBEZ8neN8sWkR8\nGBHPZ9P/JN1o/L0Wxbq0j5ZbcmjrhrgRRZRZpsRx9UfFfJYBbJKdYt4taY0+i27g8X7Zu7xvdlN2\ndei6wKQWq7q0j5ZbRzC9etPcIFfMZ/IssGxEzJK0LXAb4Ft9u8/7Ze/xvtkNkhYGbgaOzM4gWhVp\nMd/uPlpuZw7TgGUL5pclZbeOyiyTLbP5dfpZRsTMiJiVTd8DVEtasu9CHFC8X/Yi75tdJ6kauAW4\nJiJua6NIl/bRcksOc2+akzSEdNPcHS3K3AHsC3PvwG7zpjnr/LOUtJQkZdMbki5t/rzvQx0QvF/2\nIu+bXZN9VpcBr0bEOe0U69I+WlbVSuGb5npNMZ8l8O/AoZIagFnAHrkFXOYkXQdsDgyX9D5wMln3\nUt4vu66zzxPvm121KbA38KKk57JlJwDLQff2Ud8EZ2ZmrZRbtZKZmZUBJwczM2vFycHMzFpxcjAz\ns1acHMzMrBUnBzMza8XJwXIlqUnSWQXz/0/SyX0cQ52k9bLpv0patIfbq5F0Z7HLe0rS5pJ+1M66\nFSQ9VMQ2pvR2XNa/OTlY3uYAoyR9J5vv0o03kip7IYa5rxkRP4uIr3phm31pC2CTHm7DNzzZfJwc\nLG/1wF+Ao1quyH71Ppj1zPl3Sctmy6+QdLGkicCZksZJukjSE5Leyn6hXynpVUnjCrZ3oaSnssFQ\natsKRtIUSd+R9MuCgWbekfRgtn4bSRMkPSPpRkkLZctHSpos6RlgVGdvWlJtNuDNQ1nMvyp4z69J\nuiaL/yZJCxTEtmQ2/cPsucsDhwBHZbFu1sFrbpB9lkMlLZR9Du7t1Nrk5GDl4EJgrzaqc84HxkXE\nOsB44LyCdd8DfhQRx2Tzi0XEj0hJ5g7gTGBNYC1J62Rl/iMiNgDWATaXtFYbsQQQEXFxRKwLbEDq\n5vhsScOB/wC2ioj1gWeAoyUNIyW47bPlS1PcL/HVgG1IY2+cXHAWtBrwPxGxBvAVcFhBbPMHG/Eu\ncDHwp4hYNyIea+/FIuKp7LM5DTgDuDoiXi0iThuEnBwsdxExE7gKaDm04cbAtdn0NUDzr+IAbor5\n+35prst/GfgwIl7J1r9CGg0PYPfsl/2zpMTx/SLCOw94ICL+msWzBjAh679mX1LfNasD70TEWwWx\ndjZQTQB/jYj6iPgM+BhoHnjl/Yh4oo333ZFiB8Y5hZSQfkhKoGZtKquO92xQO4d00B7XYnl7B71Z\nLebnZH+bgNkFy5uASkkrAscAP4yIL7PqpmEdBSRpf9KYAocVLL4/IvZsUW4d5lfsgXpOwXQj8/4f\nC5OeCuYbmPeDrsPYOzAcWIjUGeMCtP4czQCfOViZiIgZwI3Agcw7GE5gXm+cewGPdHPzAhYh9UT5\nldLQiNt2+ARpfVIy2adg8URgU0krZ2UWkrQq8BqwgqSVsnJjioypPctlXSoD7Ak8mk1PIf3iB9il\noPxM0vsrxljgRNIZ2RlFPscGIScHy1vhr+SzSb9sm/0KOEDSC6TkcGQ7z2s532pdRLwIPEc6kI8H\n2qubD9KB+3BgCeChrKH3LxHxKbA/cF0W0wRg9YiYDRwM/DWrtvqojRiatx1tTLf0OnC4pFeBxYCL\nsuW/B86V9BTpLKL5+XeSrvh6TtKm7WwTSfsCsyPieuB0YANJNe2Vt8HNXXablRGl8X/vjIi2Gsu7\nu71xEbFFJ+XeiYgVe+M1bWDwmYNZ+fEvNsudG6TNykhETAHW7u3N9lIZG0RcrWRmZq24WsnMzFpx\ncjAzs1acHMzMrBUnBzMza8XJwczMWnFyMDOzVv4/hsEORxCr7SsAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f35a637abd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,sign,log\n", + "\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n", + "\n", + "#Caption:A-law companding\n", + "#Plotting A-law characteristics for different \n", + "#Values of A\n", + "\n", + "x = arange(0,0.01+1,0.01)# #Normalized input\n", + "A = [1,2,87.56]##different values of A\n", + "\n", + "\n", + "def Alaw(x,a):\n", + " \"\"\"F(x) = sgn(x) A |x| / (1 + lnA) for 0 ≤|x| < 1/A\n", + " \n", + "= sgn(x) (1+ln A|x|) /(1 + lnA) for 1/A ≤|x| ≤ 1\n", + "\"\"\"\n", + " if abs(x) >= 0 and abs(x) < 1/a:\n", + " f = sign(x)*a*abs(x)/(1+log(a))\n", + " elif abs(x) >= 1/a and abs(x) <=1: \n", + " f = sign(x)*(1+log(a*abs(x))/(1+log(a)))\n", + " else:\n", + " f = 'Wrong parameters'\n", + " return f\n", + "Cx=[]\n", + "for i in range(0,len(A)):\n", + " #[Cx(i,:),Xmax(i)] = Alaw(x,A(i))#\n", + " Cx.append(Alaw(x[i],A[i]))\n", + " plot(Cx)\n", + " \n", + "title('Compression Law: A-Law companding')\n", + "xlabel('Normalized Input |x|')\n", + "ylabel('Normalized Output |c(x)|')\n", + "show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Digital_Communications_by_S._Haykin/Chapter6.ipynb b/Digital_Communications_by_S._Haykin/Chapter6.ipynb new file mode 100644 index 00000000..976b94b3 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter6.ipynb @@ -0,0 +1,513 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6 Baseband Shaping For Data Transmission" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.1(a) page 235" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n/6xNghwp9/1KAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc3cc0e5790>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,grid,title,show\n", + "\n", + "#Figure 6.1(c):Discrete PAM Signals Generation\n", + "# [3].BiPolar NRZ\n", + "#page 235\n", + "x = [0, 1, 1, 0, 0, 1 ,0 ,0 ,1 ,1]\n", + "binary_negative = [-1, -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1, -1]\n", + "binary_zero = [0 ,0 ,0 ,0 ,0, 0 ,0 ,0 ,0 ,0]\n", + "binary_positive = [1, 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1]\n", + "L = len(x)\n", + "L1 = len(binary_negative)\n", + "total_duration = L*L1\n", + "#plotting\n", + "for i in range(0,L):\n", + " if(x[i]==0):\n", + " plot(range(i*L-L,i*L),binary_zero)\n", + " \n", + " elif((x[i]==1) and (x[i-1]!=1)):\n", + " plot(range(i*L-L,i*L),binary_positive)\n", + " \n", + " else:\n", + " plot(range(i*L-L,i*L),binary_negative)\n", + " \n", + "grid()\n", + "title('BiPolar NRZ')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example6.2 Page 241" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Precoder output in binary form:\n", + "1 \t1 \t0 \t0 \t1 \t0 \t0 \t\n", + "\n", + "Precoder output in volts:\n", + "1 \t1 \t-1 \t-1 \t1 \t-1 \t-1 \t\n", + "\n", + "Duobinary coder output in volts:\n", + "2 \t2 \t0 \t-2 \t0 \t0 \t-2 \t\n", + "\n", + "Recovered original sequence at detector oupupt:\n", + "0 \t0 \t1 \t0 \t1 \t1 \t0 \t" + ] + } + ], + "source": [ + "from __future__ import division\n", + "\n", + "b = [0,0,1,0,1,1,0]##input binary sequence:precoder input\n", + "a = [1^b[0]]\n", + "if(a[0]==1):\n", + " a_volts=[1]\n", + "\n", + "for k in range(1,len(b)):\n", + " a.append(a[(k-1)]^b[(k)])\n", + " if(a[(k)]==1):\n", + " a_volts.append(1)\n", + " else:\n", + " a_volts.append(-1)\n", + " \n", + "print 'Precoder output in binary form:'\n", + "for aa in a:\n", + " print aa,'\\t', \n", + "print '\\n'\n", + "print 'Precoder output in volts:'\n", + "for bb in a_volts:\n", + " print bb,'\\t',\n", + "print '\\n'\n", + "#Duobinary coder output in volts\n", + "c= [1+ a_volts[0]]\n", + "for k in range(1,len(a)):\n", + " c.append(a_volts[(k-1)]+a_volts[(k)])\n", + "print 'Duobinary coder output in volts:'\n", + "for cc in c:\n", + " print cc,'\\t',\n", + "print '\\n' \n", + "#Duobinary decoder output by applying decision rule\n", + "b_r=[]\n", + "for k in range(0,len(c)):\n", + " if(abs(c[(k)])>1):\n", + " b_r.append(0)\n", + " else:\n", + " b_r.append(1)\n", + "print 'Recovered original sequence at detector oupupt:'\n", + "for brr in b_r:\n", + " print brr,'\\t'," + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example6.3 page 246 " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Modulo-2 adder output:\n", + "1 \t1 \t0 \t1 \t1 \t0 \t0 \t0 \t0 \t1 \t0 \t\n", + "Delay element output:\n", + "1 \t1 \t0 \t1 \t1 \t0 \t0 \t0 \t0 \t1 \t\n", + "differential encoder bipolar output in volts:\n", + "1 \t1 \t0 \t1 \t1 \t0 \t0 \t0 \t0 \t1 \t" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#for generating bipolar format\n", + "#Refer Table 6.4\n", + "\n", + "x = [0,1,1,0,1,0,0,0,1,1]##input binary sequence:precoder input\n", + "y= [1]\n", + "for k in range(1,len(x)+1):\n", + " y.append(x[(k-1)]^y[(k-1)])\n", + "\n", + "y_delay = y[0:-1]\n", + "print 'Modulo-2 adder output:'\n", + "for yy in y:\n", + " print yy,'\\t',\n", + "print '' \n", + "print 'Delay element output:'\n", + "for yyy in y_delay:\n", + " print yyy,'\\t',\n", + "print '' \n", + "z=[]\n", + "for k in range(0,len(y_delay)):\n", + " z.append(y_delay[k])\n", + "print 'differential encoder bipolar output in volts:'\n", + "for zz in z:\n", + " print zz,'\\t'," + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.4 Page 247" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nLJaQ+D+L1IOnq28nhgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f2eb08bd5d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,sinc,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,grid,title,show,xlabel,ylabel\n", + "\n", + "\n", + "\n", + "#Different Line Coding Techniques\n", + "#[1].NRZ Polar Format [2].NRZ Bipolar format\n", + "#[3].NRZ Unipolar format [4]. Manchester format\n", + "\n", + "#[1]. NRZ Polar format\n", + "a = 1 # The Amplitude value\n", + "fb = 1 # The bit rate\n", + "Tb = 1/fb# #bit duration\n", + "f = arange(0,1/(100*Tb)+2/Tb,1/(100*Tb))\n", + "Sxxf_NRZ_P=[]\n", + "Sxxf_NRZ_BP=[]\n", + "Sxxf_NRZ_UP=[]\n", + "Sxxf_Manch=[]\n", + "for i in range(0,len(f)):\n", + " Sxxf_NRZ_P.append((a**2)*Tb*(sinc(f[i]*Tb)**2))\n", + " Sxxf_NRZ_BP.append((a**2)*Tb*((sinc(f[i]*Tb))**2)*((sin(pi*f[i]*Tb))**2))\n", + " if (i==0):\n", + " Sxxf_NRZ_UP.append((a**2)*(Tb/4)*((sinc(f[i]*Tb))**2)+(a**2)/4)\n", + " else:\n", + " Sxxf_NRZ_UP.append((a**2)*(Tb/4)*((sinc(f[i]*Tb))**2))\n", + " \n", + " Sxxf_Manch.append((a**2)*Tb*(sinc(f[i]*Tb/2)**2)*(sin(pi*f[i]*Tb/2)**2))\n", + "\n", + " \n", + "\n", + "#Plotting\n", + "plot(f,Sxxf_NRZ_P)\n", + "plot(f,Sxxf_NRZ_BP)\n", + "plot(f,Sxxf_NRZ_UP)\n", + "plot(f,Sxxf_Manch)\n", + "xlabel('f*Tb------->')\n", + "ylabel('Sxx(f)------->')\n", + "title('Power Spectral Densities of Different Line Codinig Techniques')\n", + "grid()\n", + "show()\n", + "#Result\n", + "#Enter the Amplitude value:1\n", + "#Enter the bit rate:1 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.6 page 249" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nXII4JV2CMMk2dSo0bgw72aDrvDruOBg61HcUJgq8JQlVXQVcALwCTAeGqOqMYF6oXsFu1wAbAg+K\nyFQRKchFFisuF5Ootra98AJ06xbfO4Djeu66dXN1iZUra94vru3LVNLblwmfNQlUdTQwuspjD1f6\n/9nA2fmOy0THCy/Ao4/6jqLwtG7t7sAeP96NdDKFy1tNIkxWk0imirmEFiyAtXx2jBao225z63Y8\n/HDt+5p4inpNwpgavfACdO1qCcKX446DF1+E1at9R2J8sj+/GEhyv2hNbauoR8RZnM/d1lvD5pu7\n+1TSiXP7MpH09mXCkoSJpM8/d91NBx/sO5LCZqOcjNUksvDTT/DRR27xm++/dyNuiorclBG77ALr\nrpvzEArG7bfDrFlWtPZtxgw47DD44gvr9gtLebn7APT55+69ZMUKaNoUNt4YdtjBzS6Qr591JjUJ\nr6Obom7VKkil4OWXYcwYtxjLn/8MrVq55ACwdCnMn+/+mLbayq3qddxxsOee8R22GQVDhsDNN/uO\nwuy4IzRr5ubN2mcf39HE19Kl7ops6FCYOBE23NB157Vo4e4DWr4clixxH4x+/NHdzNixIxx/PGy6\nqefgVTX2X64Z4Vm0SPW661RbtVLde2/Vvn1Vy8pUV65M/5wVK1QnTVK9/HLVbbZR3XNP1UGDan5O\npsaPH1//g0RUdW2bO1d1003D+dn5loRzd801qn//e/XfS0L7alLf9n36qerZZ6s2a6barZvqkCGq\nX31V83OWLHHvHaecorrBBqrHHKP6+uuq5eX1CqVawXtnje+vdgFZyZIlcMkl7mph0SI3FcR778EV\nV8Buu0HDGq67GjWCdu3gpptg9my45hp44AG3BkK2i8sXumefdVdjNf28Tf706OGu7GyUU+a++w7O\nPde9J7RsCZ9+CsOGwQknuKuHmmyyiZuJ98knXS/FkUe6Y+2/P4wdm5/4/6C2LBKHL+p5JbFyperd\nd6s2b656/vmqCxfW63C/Ky9XHTZMdautVLt3V/3223COm3S77aaaSvmOwlS2++7u06ypWXm56sCB\nqi1aqF5wger334dz3FWrVAcPdr0UXbqozpkTznGxK4navfsu7LGHqzu89Rbcf78b9hcGETeE85NP\n3KeJ3Xazq4razJrlrug6dPAdiamsRw8YNMh3FNH2009wyilwyy2uF+K++9bULuurQQPo3t29l+y7\n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\n10128cW+IzFhO+YYWLrUzTwaJ4MHw4gRbv6wtezdsFpWk4gpVTev/bJlrh81Dneav/aaWy9i+vT4\n9l2b9B57DJ59Fl55xXckmZkxw92r8+qrsHuNU4cml9UkEkzEjU+fPRvuu893NLVTheuvh6uvtgSR\nVKec4u5/+eAD35HU7qef3JX4LbcUboLIlCWJGEjXL9q0qatP9O0Lb7+d35iyNX48LF4MJ574x8eT\n3udbSO1be23XlXjjjf7iyUTFVfj++7t/a5L085cJSxIxt/XW7jK/e3f3JhxV11/vFoNq6PXOHJNr\n557rhjdPmuQ7kvTuvhs+/RTuv993JPFgNYmEuPpqN23H2LHReyN+7TXo3dv1AUctNhO+Rx5xtYnX\nXvMdyf966y033cakSVBc7Dsa/6wmUUCuu87dJXrllb4j+aPVq10XxM03W4IoFGecAZ9/7pYPjpJF\ni1x354ABliCyYUkiBjLpF23QwC0mMnhwHZcozJEBA2D99dPP9Jr0Pt9CbF+jRq4uceml7kNCFFTc\nMNerV+brKEDyz18mLEkkSPPm7k7sXr3cqCfffv7ZdYPdeWc8huia8Jxwgluz/bHHfEfiCtXnnQcb\nbeTqYiY7VpNIoIcecsNj33nHfYr35YorXLfD00/7i8H4M20aHH64GxbbvLm/OO68EwYOdDW79dbz\nF0cUZVKTsCSRQKruamLBAnj5ZT+1gA8/hEMPdW8ULVvm//VNNPTpA7/+6orZPowY4f4WJk5008GY\nP7LCdUJk2y9acaNdxWV2vvPn6tVuJb2+fWtPEEnv8y309t1wA4wc6We6jmnT3JolFfOF1UXSz18m\nLEkkVKNGbhji5MluZFE+3XILrLNO7TcqmeTbYAN49FEoLXXriOTLnDlw5JFufYh99snf6yaRdTcl\n3JdfQocObmruCy/M/eu9+y507erWGGjdOvevZ+KhVy83z9jAgbkfxLBggfudv/pq+6BSG+tuMmy+\nuVvJ7o474MEHc/taX38NPXq4wrklCFPZnXdCWZn73cilr76Cww6DCy6wBBEWb0lCRDYSkbEiMltE\nXhWRomr22UJExovIJyLysYhc5CNW3+rbL1pc7BLFzTfDww/XunudrFjh7oU46STo1i3z5yW9z9fa\n56y7rrt/59pr3V3PufDFF25W15NOcutbhCHp5y8TPq8kLgPGqup2wLhgu6qVwN9VdSegPXC+iOyY\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc324486a10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,sinc,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,grid,title,show,xlabel,ylabel\n", + "\n", + "\n", + "#Figure 6.6(b): Ideal Solution for Intersymbol Interference\n", + "rb = 1 # The bit rate\n", + "Bo = rb/2#\n", + "t =arange(-3,1/100+3,1/100)\n", + "x = sinc(2*Bo*t)\n", + "plot(t,x)\n", + "xlabel('t------>')#\n", + "ylabel('p(t)------->')#\n", + "title('SINC Pulse for zero ISI')\n", + "grid()\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.7 page 250" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc30d2b9150>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,sinc,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,grid,title,show,xlabel,ylabel,legend\n", + "\n", + "#Figure6.7(b):Practical Solution for Intersymbol Interference\n", + "#Raised Cosine Spectrum\n", + "\n", + "rb = 1 # The bit rate\n", + "Tb =1/rb#\n", + "t =arange(-3,1/100+3,1/100)\n", + "Bo = rb/2#\n", + "Alpha =0# #Intialized to zero\n", + "x =t/Tb#\n", + "p=zeros([3,len(t)])\n", + "for j in range(0,3):\n", + " for i in range(0,len(t)):\n", + " if((j==2) and ((t[i]==0.5) or (t[i]==-0.5))):\n", + " p[j,i] = sinc(2*Bo*t[i])\n", + " else:\n", + " num = sinc(2*Bo*t[i])*cos(2*pi*Alpha*Bo*t[i])\n", + " den = 1-16*(Alpha**2)*(Bo**2)*(t[i]**2)+0.01\n", + " p[j,i]= num/den\n", + " \n", + " \n", + " Alpha = Alpha+0.5#\n", + "\n", + " \n", + "plot(t,p[0,:])\n", + "plot(t,p[1,:])\n", + "plot(t,p[2,:])\n", + "xlabel('t/Tb------>')\n", + "ylabel('p(t)------->')\n", + "title('RAISED COSINE SPECTRUM - Practical Solution for ISI')\n", + "legend(['ROlloff Factor =0','ROlloff Factor =0.5','ROlloff Factor =1'])\n", + "grid()\n", + "show()\n", + "#Result\n", + "#Enter the bit rate:1\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.9 Page 254" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\njuM4qfw/WG7FB0YOBAAAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc30d372dd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,sinc,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,grid,title,show,xlabel,ylabel\n", + "\n", + "\n", + "#Caption:Frequency response of duobinary conversion filter\n", + "#Figure6.9:Frequency Response of Duobinary Conversion filter\n", + "#(a)Amplitude Response\n", + "#(b)Phase Response\n", + "rb = 8 # the bit rate\n", + "Tb =1/rb# #Bit duration\n", + "f = arange(-rb/2,1/100+rb/2,1/100)\n", + "Amplitude_Response = [abs(2*cos(pi*ff*Tb)) for ff in f]\n", + "Phase_Response = [-(pi*ff*Tb) for ff in f]\n", + "subplot(3,1,1)\n", + "plot(f,Amplitude_Response)\n", + "xlabel('Frequency f---->')\n", + "ylabel('|H(f)| ----->')\n", + "title('Amplitude Repsonse of Duobinary Singaling')\n", + "subplot(3,1,3)\n", + "plot(f,Phase_Response)\n", + "xlabel(' Frequency f---->')\n", + "ylabel(' <H(f) ----->')\n", + "title('Phase Repsonse of Duobinary Singaling')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.15 page 259" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fc1e165f590>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,grid,title,xlabel,ylabel,show,legend,subplot\n", + "from numpy import arange,cos,pi,sinc,sin\n", + "\n", + "\n", + "#Caption:Frequency response of modified duobinary conversion filter\n", + "#Figure 6.15: Frequency Response of Modified duobinary conversion filter\n", + "#(a)Amplitude Response\n", + "#(b)Phase Response\n", + "rb = 8# the bit rate\n", + "Tb =1/rb# #Bit duration\n", + "f = arange(-rb/2,1/100+rb/2,1/100)\n", + "Amplitude_Response = [abs(2*sin(2*pi*ff*Tb)) for ff in f]\n", + "Phase_Response = [-(2*pi*ff*Tb) for ff in f]\n", + "subplot(3,1,1)\n", + "plot(f,Amplitude_Response)\n", + "xlabel('Frequency f---->')\n", + "ylabel('|H(f)| ----->')\n", + "title('Amplitude Repsonse of Modified Duobinary Singaling')\n", + "grid()\n", + "subplot(3,1,3)\n", + "plot(f,Phase_Response)\n", + "xlabel(' Frequency f---->')\n", + "ylabel(' <H(f) ----->')\n", + "title('Phase Repsonse of Modified Duobinary Singaling')\n", + "grid()\n", + "show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Digital_Communications_by_S._Haykin/Chapter7.ipynb b/Digital_Communications_by_S._Haykin/Chapter7.ipynb new file mode 100644 index 00000000..f83a2952 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter7.ipynb @@ -0,0 +1,973 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# Chapter 7 Digital Modulation Techniques" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.01 page 294" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fa9141608d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange, sin, pi,zeros\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,grid,show\n", + "#Caption:Waveforms of Different Digital Modulation techniques\n", + "#Figure7.1\n", + "#Digital Modulation Techniques\n", + "#To Plot the ASK, FSK and PSk Waveforms\n", + "f = 2 # the Analog Carrier Frequency in Hz\n", + "t = arange(0,1/512+1,1/512)\n", + "x = [sin(2*pi*f*tt) for tt in t]\n", + "I = [0,1,1,0,1,0,0,1] # the digital binary data\n", + "#Generation of ASK Waveform\n", + "#Xask = []#\n", + "Xask=zeros(len(x))\n", + "for n in range(0,len(I)):\n", + " if((I[n]==1) and (n==0)):\n", + " Xask = [x,Xask]#\n", + " elif((I[n]==0) and (n==0)):\n", + " Xask = [zeros(len(x)),Xask]\n", + " elif((I[n]==1) and (n!=1)):\n", + " Xask = [Xask,x]\n", + " elif((I[n]==0) and (n!=1)): \n", + " Xask = [Xask,zeros(len(x))]\n", + " \n", + "\n", + "#Generation of FSK Waveform\n", + "Xfsk = []#\n", + "x1 = [sin(2*pi*f*tt) for tt in t]\n", + "x2 = [sin(2*pi*(2*f)*tt) for tt in t]\n", + "for n in range(0,len(I)):\n", + " if (I[n]==1):\n", + " Xfsk = [Xfsk,x2]\n", + " elif (I[n]!=1):\n", + " Xfsk = [Xfsk,x1]\n", + " \n", + "\n", + "#Generation of PSK Waveform\n", + "Xpsk = []#\n", + "x1 = [sin(2*pi*f*tt) for tt in t]\n", + "x2 = [-sin(2*pi*f*tt) for tt in t]\n", + "for n in range(0,len(I)):\n", + " if (I[n]==1):\n", + " Xpsk = [Xpsk,x1]\n", + " elif (I[n]!=1):\n", + " Xpsk = [Xpsk,x2]\n", + " \n", + "plot(t,x)\n", + "title('Analog Carrier Signal for Digital Modulation')\n", + "grid()\n", + "show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.1 page 298" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fa91c2c7d50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,arange,cos,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,xlabel,ylabel,show\n", + "\n", + "M =4#\n", + "i = range(0,M)\n", + "t = arange(0,0.001+1,0.001)\n", + "s1=ones([len(i),len(t)])\n", + "s2=ones([len(i),len(t)])\n", + "for i in range(0,M):\n", + " s1[i,:] = [cos(2*pi*2*tt)*cos((2*i-1)*pi/4) for tt in t]\n", + " s2[i,:] = [-sin(2*pi*2*tt)*sin((2*i-1)*pi/4) for tt in t]\n", + "\n", + "S1 =[]#\n", + "S2 = []#\n", + "S = []#\n", + "Input_Sequence =[0,1,1,0,1,0,0,0]\n", + "m = [3,1,1,2]\n", + "for i in range(0,len(m)):\n", + " S1 = S1+[s1[m[i],:]]\n", + " S2 = S2+[s2[m[i],:]]\n", + "S = S1+S2#\n", + "subplot(3,1,1)\n", + "plot(S1)\n", + "title('Binary PSK wave of Odd-numbered bits of input sequence') \n", + "subplot(3,1,2)\n", + "plot(S2)\n", + "title('Binary PSK wave of Even-numbered bits of input sequence') \n", + "subplot(3,1,3)\n", + "plot(S)\n", + "title('QPSK waveform') \n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.02 page 302" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coordinates of message points [1.0, -1.0]\n", + "Message points ['0b1', '0b0']\n" + ] + }, + { + "data": { + "image/png": "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\nI2sAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fb1828c2f90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,arange,cos,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,xlabel,ylabel,show\n", + "\n", + "M =2#\n", + "i = range(1,M+1)\n", + "y = [cos(2*pi+(ii-1)*pi) for ii in i]\n", + "\n", + "annot = [bin(xx) for xx in arange(len(y)-1,-1,-1)]\n", + "annot = [bin(yy) for yy in arange(len(y)-1,-1,-1)]\n", + "\n", + "print 'coordinates of message points',y\n", + "\n", + "print 'Message points',annot\n", + "plot(y)\n", + "xlabel(' In-Phase')#\n", + "ylabel(' Quadrature')#\n", + "title('Constellation for BPSK')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.2 page 304" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coordinates of message points\n", + "[1.0, -1.0]\n", + "[-1.0, -1.0]\n", + "[-1.0, 1.0]\n", + "[1.0, 1.0]\n" + ] + }, + { + "data": { + "image/png": "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\nzjmXyv8Dg9CmkODLrqIAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fb182a9ab90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,arange,cos,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,xlabel,ylabel,show,legend,grid,subplot\n", + "#Table 7.2 signal space characterization of MSK\n", + "\n", + "M =2#\n", + "Tb =1#\n", + "t1 = arange(-Tb,0.01+Tb,Tb)\n", + "t2 = arange(0,0.01+2*Tb,2*Tb)\n", + "phi1 = [cos(2*pi*t11)* cos((pi/(2*Tb))*t11) for t11 in t1]\n", + "phi2 = [sin(2*pi*t22)*sin((pi/(2*Tb))*t22) for t22 in t2]\n", + "teta_0 = [0,pi]\n", + "teta_tb = [pi/2,-pi/2]\n", + "S1 = []\n", + "S2 = []\n", + "for i in range(0,M):\n", + " s1.append(cos(teta_0[i]))\n", + " s2.append(-sin(teta_tb[i]))\n", + " S1 = S1+[s1[i]*phi1]\n", + " S2 = S2+[s2[0]*phi2]\n", + "\n", + "for i in arange(M,-1+1,1):\n", + " S1 = S1+[s1[i]*phi1]\n", + " S2 = S2+[s2(1)*phi2]\n", + "\n", + "Input_Sequence =[1,1,0,1,0,0,0]\n", + "S = []\n", + "t = arange(0,0.01+1,1)\n", + "S = S+[cos(0)*cos(2*pi*tt)-sin(pi/2)*sin(2*pi*tt) for tt in t]\n", + "S = S+[cos(0)*cos(2*pi*tt)-sin(pi/2)*sin(2*pi*tt) for tt in t]\n", + "S = S+[cos(pi)*cos(2*pi*tt)-sin(pi/2)*sin(2*pi*tt) for tt in t]\n", + "S = S+[cos(pi)*cos(2*pi*tt)-sin(-pi/2)*sin(2*pi*tt) for tt in t]\n", + "S = S+[cos(0)*cos(2*pi*tt)-sin(-pi/2)*sin(2*pi*tt) for tt in t]\n", + "S = S+[cos(0)*cos(2*pi*tt)-sin(-pi/2)*sin(2*pi*tt) for tt in t]\n", + "S = S+[cos(0)*cos(2*pi*tt)-sin(-pi/2)*sin(2*pi*tt) for tt in t]\n", + "\n", + "y = [[s1[0],s2[0]],[s1[1],s2[0]],[s1[1],s2[1]],[s1[0],s2[1]]]\n", + "print 'coordinates of message points'\n", + "for yy in y:\n", + " print yy\n", + " \n", + "\n", + "subplot(3,1,1)\n", + "plot(S1[0])\n", + "title('Scaled time function s1*phi1(t)')\n", + "#subplot(3,1,2)plot(S2[0])title('Scaled time function s2*phi2(t)')\n", + "subplot(3,1,3)\n", + "plot(S)\n", + "title('Obtained by adding s1*phi1(t)+s2*phi2(t) on a bit-by-bit basis') \n", + "show()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.3 page 308" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table 7.3 Illustrating the Generation of DPSK Signal\n", + "_____________________________________________________\n", + "\n", + "(bk) [1, 0, 0, 1, 0, 0, 1, 1]\n", + "\n", + "(bk_not) [0, 1, 1, 0, 1, 1, 0, 0]\n", + "\n", + "Differentially encoded sequence (dk)\n", + "1 \t0 \t1 \t1 \t0 \t1 \t1 \t1 \t\n", + "\n", + "Transmitted phase in radians\n", + "0 \t3.14159265359 \t0 \t0 \t3.14159265359 \t0 \t0 \t0 \t\n", + "\n", + "_____________________________________________________\n" + ] + } + ], + "source": [ + "\n", + "bk = [1,0,0,1,0,0,1,1]##input digital sequence\n", + "bk_not=[]\n", + "for i in range(0,len(bk)):\n", + " if(bk[i]==1):\n", + " bk_not.append(0)\n", + " else:\n", + " bk_not.append(1)\n", + " \n", + "dk_1 = [ 1 and bk[0]]# #initial value of differential encoded sequence\n", + "dk_1_not =[ 0 and bk_not[0]]\n", + "dk = [dk_1[0]^dk_1_not[0]] #first bit of dpsk encoder\n", + "for i in range(1,len(bk)):\n", + " dk_1.append(dk[(i-1)])\n", + " if dk[(i-1)]==1:\n", + " xxx=0\n", + " else:\n", + " xxx=1\n", + " dk_1_not.append(xxx)\n", + " dk.append(((dk_1[i] and bk[i])^(dk_1_not[i] and bk_not[i])))\n", + "dk_radians=[]\n", + "for i in range(0,len(dk)):\n", + " if(dk[i]==1):\n", + " dk_radians.append(0)\n", + " elif(dk[i]==0):\n", + " dk_radians.append(pi)\n", + " \n", + "print 'Table 7.3 Illustrating the Generation of DPSK Signal'\n", + "print '_____________________________________________________'\n", + "print '\\n(bk)',bk\n", + "print '\\n(bk_not)',bk_not\n", + "print '\\nDifferentially encoded sequence (dk)'\n", + "for dd in dk:\n", + " print dd,'\\t',\n", + "print '\\n\\nTransmitted phase in radians'\n", + "for ddd in dk_radians:\n", + " print ddd,'\\t',\n", + "print '\\n\\n_____________________________________________________'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.4 page 314" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coordinates of message points\n", + "[[1, 0], [0, 1]]\n", + "[[1, 0], [0, 1]]\n", + "Message points ['0b1', '0b0']\n" + ] + }, + { + "data": { + "image/png": "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\n3WNmhWZ2ipndTTAYeNpQehBJnGeffZYRI0ZEVbawsJB777230jIXXXQRXbp0oW7dutx///1VbvO6\n667j2muvjWr/w4YN44UXXoiqbLzdeeedHHPMMdSvX5/zzz+/1LKuXbuSl5fH008/nZC6RNMwnA98\nCIwneMLqh6F5aUXpQST1RHN58pFHHsm0adM46qijqiz/zjvvsHnzZnr06FFpuXjbvXt3tdcpKCjg\n+uuv54ILLih3+bBhw5g5c2a5y2KtyobB3be7+x/d/czQ9Cd331HVeqlK6UFqo0OHDkyePJmuXbuS\nk5PDmDFjWLt2LaeffjpNmjShT58+bNy49+EAb731Fscffzz5+fkceeSRvPrqq+Fl9913H507dyY3\nN5dOnTrx97//HYBly5Zx8sknk5eXR4sWLTj33HPD64wfP5527drRpEkTjjnmGF5//fXwsu3btzNq\n1CiaNm3KYYcdxu23307btnsfXrx69WqGDBlCy5Yt6dSpE3/5y18qfJ+jR49m7Nix9O3bl9zcXAoL\nC1m+fHl4+RtvvEH37t3Jy8ujR48evPnmm+FlkSngvvvuo1evXvzmN7+hadOmdOrUieefDx7OfN11\n1zFv3jwuu+wycnJyGDduXLl1ueSSS+jduzf169cvd3mk5557rtw7n5955hk6d+5MixYt+O1vfxvu\nqL3vvvs48cQTw+Xq1KnDzJkzOfjgg8nPz+eyy/Y+sefTTz+ld+/eNG/enBYtWjB8+HA2bdoUXt6h\nQwduv/12unbtSuPGjZk8eTI/+9nPStVj3LhxXHHFFeXW/cwzz2TQoEE0a9as3OUnn3wyL7/8Mrt2\n7aryONRaVU/sAw4GHiNICp+Hps8S+dTAoJqx9+qr7p07uw8f7r5uXVx2IdUUr//rWOnQoYP37NnT\nv/76a1+1apW3bNnSu3Xr5osWLfIdO3Z47969/aabbnJ395UrV3qzZs38ueeec3f3l156yZs1a+bf\nfvutb9261XNzc/3jjz92d/evvvrK//Of/7i7+7nnnuu33HKLu7t///33Pn/+/PD+Z8+e7evXr/fi\n4mKfMmWKH3jggf7999+7u/vVV1/thYWFvnHjRl+5cqUffvjh3rZtW3d3Ly4u9qOOOspvvvlm37Vr\nl3/22WfeqVMnf+GFF8p9n6NGjfKcnByfN2+ef//99z5+/Hjv1auXu7uvW7fO8/LyfPbs2V5cXOxz\n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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fb18280cf90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,arange,cos,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,xlabel,ylabel,show,legend,grid\n", + "\n", + "M =2#\n", + "y = [[1,0],[0,1]]\n", + "annot = [bin(xx) for xx in (arange(M-1,-1,-1))]\n", + "print 'coordinates of message points'\n", + "for yy in y:\n", + " print y\n", + "\n", + "print 'Message points',annot\n", + "\n", + "plot(y[0])\n", + "plot(y[1])\n", + "xlabel(' In-Phase')#\n", + "ylabel(' Quadrature')#\n", + "title('Constellation for BFSK')\n", + "legend(['message point 1 (binary 1)','message point 2 (binary 0)'])\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.4. page 320" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nU5l8wJ1PhmeB5sARAFVdD1RzJ3MRiRWRzSKyVUSGZ3O9i4j8IiLrRWSdiLR1N21+cn1EBA9Ursyd\nycmkBstXa2govPceREZCt25w5oyZw/AwwdCeaWlp+eZcdO7cufTq1Yv4+Hj27NnDP//8w3PPPZfv\nSuhCPizuFhHeeOMNTpw4kXE0b96cGTNmMHPmTJYtW8aJEydISkri5ptvzpQu3a3YV199Rbdu3UhI\nSKBXr15el9lbuKOEzqvq0SzncpypF5ECwOtALFAHiBORrJvIL1XV+rY/unhgai7S5isjqlYlTISx\nO3f6UgzPEhoKM2dCeLi1jsiNBa2GywcR4dFHH2X8+PEcO3Ys2zirV6+madOmRERE0KxZM77//vuM\nazExMTz99NNcf/31lChRgvbt23Po0KFs81FVHn74YZ5++mn69+9PeHg4AK1bt2bq1KkZcZ5//vmM\nHlrfvn05fvx4pnxmzpxJVFQUV1xxBWPHjs2U/4svvkj16tUpU6YMvXv35siRI4A1lBcSEsL06dOJ\niorKeOlPnz6dOnXqUKpUKWJjY9m1a1dGfiEhIUyZMoWaNWsSGRnJ0KFDAUhOTmbIkCF8//33hIeH\nZ+y95C5JSUm0b98+Y2+mcuXKce+9mfcRVVUWLVpE7969mTVrFp07d85VGX6Hqro8gOlYG9v9CtQA\nJgFvuZGuJbDYITwCGJFD/DW5SWuJn3/sPnNGy65cqauOHs3Xcr3OuXOq3burduumev68r6W5rMjv\nZzg3REdH69KlS7V79+46atQoVVV9++23NSYmRlVVDx06pBERETpz5kxNTU3VWbNmaWRkpB4+fFhV\nVW+88UatXr26bt26VU+fPq0xMTE6YsSIbMtKTk5WEdEdO3Y4lWfatGlavXp1/fPPP/XkyZPavXt3\n7dOnj6qq/vnnnyoiOnDgQD1z5oz+8ssvWqhQId28ebOqqk6YMEFbtmype/bs0XPnzumgQYM0Li4u\nU9q+fftqSkqKnj59WhcsWKDVq1fXzZs3a2pqqj7//PN63XXXZcgiItqpUyc9duyY7tq1S6+44gpd\nvHixqqomJCTo9ddf77JtY2Ji9J133rno/MyZM7VUqVL60ksv6Y8//qgXLly4KF3nzp01MjJSly1b\n5rIMVefPl30+x/d/fhzuKKGiwFggyT7+CxR2I93twNsO4buBSdnE6wokA0eBZrlMm+NN8DSf/POP\nRn//vR4Ntpf1mTOqsbGqffqopqb6WprLhpyeYZYv98iRF6Kjo3XZsmX622+/acmSJfXAgQOZlNB7\n772nzZs3z5SmZcuWmpCQoKrWC/O///1vxrXJkydrbGxstmWtXLlSRUTPnj3rVJ62bdvqm2++mRHe\nsmWLhoWFaWpqaoYi2bNnT8b1Zs2a6Zw5c1RV9eqrr8700t67d+9Faf/888+M67GxsTpt2rSMcGpq\nqhYtWlR37dqlqpYSWrVqVcb1Xr166Ysvvqiqqu+++26OSujGG2/UokWLakREhEZERGjjxo0zrn3w\nwQd68803a7FixbR06dI6bty4TOlKlCihzZs319OnT7ssQzUwlJDTzXNEpAiWr7jqwAagpaqez00n\ny61IqguABSJyA/C+iFydizKIj48nOjoagIiICBo0aJDhPj99TN6T4QggtmJFhvz+O/ft34+IeLW8\nfAsXKsSENm1oMHMmMUOHwhtvkPjtt/4jXwCGJ0yY4Nbz6Ar1g6016tatS8eOHXnxxRepXfvfUfG9\ne/dStWrVTHGjoqLYu3dvRrh8+fIZ/xcpUoSTJ08CMHjwYD744AMAnnzySbp16wbAvn37iIqKylaO\nrNeqVq3KhQsX2L9/f7blFS1aNKO8nTt30q1bt0yWc6GhoZnSVqlSJeP/nTt38uCDD/LII49kkmHP\nnj0Z8bKWdSoXjo9FhEmTJtG/f/+Lrt15553ceeedpKam8sknn3DXXXfRsGFDbrnlFkSEMWPGMHfu\nXLp27crChQspWLBgjuUlJiaSkJAAkPG+9BucaSfgI2AmliJaAEzMjXYDWpB5SG0kMDyHNH8Apd1N\ni4+GMk5duKB1fvhBZ+zb55PyvcXy5ctVjx1TbdJE9fHHVdPSfC1SQLPcjR6Ir55hd0jvCamqbtu2\nTUuUKKGjR4/O6Am9//772qxZs0xpWrZsqTNmzFBVqyfk2Jtw1UNIS0vTqlWr6vjx453Kc9NNN+nk\nyZMzwtn1hFIdevGO5deqVUtXr16dbb7ZpW3fvr1++OGHTmUREf3jjz8ywvHx8frUU0+pqvvDcY5t\n44omTZroK6+8kindiRMntEWLFtq5c2c972JUxtnzhR/1hFwZJtRW1btV9S2s4bHWudRvSUANEYkW\nkYJAbyCTabeIXCW2qYeINLK1yiF30vqSogUKMKtOHR754w+2BZELnJiYmH+9b3/+Obzwgq9FCmiC\n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\nngAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fb1827ebe50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,arange,cos,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,xlabel,ylabel,show,legend,grid\n", + "from scipy.special import erfc\n", + "from math import log10,sqrt,exp\n", + "from __future__ import division\n", + "#Comparison of Symbol Error Probability\n", + "#of Different Digital Transmission System\n", + "#Eb = Energy of the bit No = Noise Spectral Density\n", + "Eb_No =[18,0.3162278]\n", + "x = arange(Eb_No[1],1/100+Eb_No[0],1./100)\n", + "x_dB = [10*log10(xx) for xx in x]\n", + "Pe_BPSK=ones(len(x))\n", + "Pe_BFSK=ones(len(x))\n", + "Pe_DPSK=ones(len(x))\n", + "Pe_NFSK=ones(len(x))\n", + "Pe_QPSK_MSK=ones(len(x))\n", + "for i in range(0,len(x)):\n", + " #Error Probability of Coherent BPSK \n", + " Pe_BPSK[i]= (1/2)*erfc(sqrt(x[i]))#\n", + " #Error Probability of Coherent BFSK\n", + " Pe_BFSK[i]= (1/2)*erfc(sqrt(x[i]/2))#\n", + " #Error Probability Non-Coherent PSK = DPSK \n", + " Pe_DPSK[i]= (1/2)*exp(-x[i])#\n", + " #Error Probability Non-Coherent FSK\n", + " Pe_NFSK[i]= (1/2)*exp(-(x[i]/2))#\n", + " #Error Probability of QPSK & MSK\n", + " Pe_QPSK_MSK[i]= erfc(sqrt(x[i]))-((1/4)*(erfc(sqrt(x[i]))**2))\n", + "\n", + "plot(x_dB,Pe_BPSK)\n", + "plot(x_dB,Pe_BFSK)\n", + "plot(x_dB,Pe_NFSK)\n", + "plot(x_dB,Pe_QPSK_MSK)\n", + "xlabel('Eb/No in dB ---->')\n", + "ylabel('Probability of Error Pe--->')\n", + "title('Comparison of Noise Performance of different PSK & FSK Scheme')\n", + "legend(['BPSK','BFSK','DPSK','Non-Coherent FSK','QPSK & MSK'])\n", + "grid()\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.06 page 324" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table 7.7 Bandwidth Efficiency of M-ary PSK signals\n", + "______________________________________________________\n", + "M\n", + "[2, 4, 8, 16, 32, 64]\n", + "______________________________________________________\n", + "r in bits/s/Hz\n", + "[0.5, 1.0, 1.5, 2.0, 2.5, 3.0]\n", + "______________________________________________________\n" + ] + } + ], + "source": [ + "from math import log\n", + "\n", + "#Bandwidth Efficiency of M-ary PSK signals\n", + "M = [2,4,8,16,32,64]##M-ary\n", + "Ruo = [log(MM,2)/2 for MM in M]# #Bandwidth efficiency in bits/s/Hz\n", + "print 'Table 7.7 Bandwidth Efficiency of M-ary PSK signals'\n", + "print '______________________________________________________'\n", + "print 'M\\n',M\n", + "print '______________________________________________________'\n", + "print 'r in bits/s/Hz\\n',Ruo\n", + "print '______________________________________________________'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.6 page 326" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coordinates of message points\n", + "\n", + "(0.707106781187+0.707106781187j)\n", + "(0.707106781187-0.707106781187j)\n", + "(-0.707106781187-0.707106781187j)\n", + "(-0.707106781187+0.707106781187j)\n", + "dibits value ['0', '1', '10', '11']\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fb182aefbd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.707106781187\n", + "0.707106781187\n" + ] + } + ], + "source": [ + "from numpy import ones,arange,cos,sin,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,title,xlabel,ylabel,show\n", + "\n", + "\n", + "#Figure7.6 Signal Space Diagram for coherent QPSK system\n", + "M =4#\n", + "i = range(0,M)\n", + "y = [cos((2*ii-1)*pi/4)-sin((2*ii-1)*pi/4)*1J for ii in i]\n", + "annot = [bin(xx)[2:] for xx in range(0,M)]\n", + "print 'coordinates of message points\\n'\n", + "for yyy in y:\n", + " print yyy\n", + "\n", + "print 'dibits value',annot\n", + "plot([y[0].real,y[1].real,y[2].real,y[3].real],[y[0].imag,y[1].imag,y[2].imag,y[3].imag])\n", + "xlabel(' In-Phase')#\n", + "ylabel(' Quadrature')#\n", + "title('Constellation for QPSK')\n", + "show()\n", + "print y[0].imag\n", + "print y[0].real\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.7 page 329" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table 7.7 Bandwidth Efficiency of M-ary FSK signals\n", + "______________________________________________________\n", + "M = \n", + "[2, 4, 8, 16, 32, 64]\n", + "______________________________________________________\n", + "r in bits/s/Hz=\n", + "[1.0, 1.0, 0.75, 0.5, 0.3125, 0.1875]\n", + "______________________________________________________\n" + ] + } + ], + "source": [ + "from math import log\n", + "# Bandwidth Efficiency of M-ary FSK\n", + "M = [2,4,8,16,32,64]##M-ary\n", + "Ruo = [2*log(MM,2)/MM for MM in M]# #Bandwidth efficiency in bits/s/Hz\n", + "#M = M'#\n", + "#Ruo = Ruo'#\n", + "print 'Table 7.7 Bandwidth Efficiency of M-ary FSK signals'\n", + "print '______________________________________________________'\n", + "print 'M = \\n',M\n", + "print '______________________________________________________'\n", + "print 'r in bits/s/Hz=\\n',Ruo\n", + "print '______________________________________________________'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.12.7.2 page 332" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coordinates of message points\n", + "\n", + "[1.0, -1.0]\n", + "[-1.0, 1.0]\n", + "[-1.0, 1.0]\n", + "[1.0, 1.0]\n" + ] + }, + { + "data": { + "image/png": "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\nyZ49e9i9ezepqame169VqxYbN270vL73z/Xq1aNhw4aF+rJv3z5mz57t9z15P//AgQPs2rWLOnXq\nULt2bdavX1+o/fr166lTp07A2y7Y9xlr0aIFv/zyi2f+3HPP5ddffy00SC1btoxzzz3X8To3bNhQ\n6OfTTjuNatWqndLO16Dx+OOP8/HHHzN37lySkpIKLTt+/DirV6/m/PPPd9yXaOBk0BiO64aFQ4E2\nwPXAgFB2KlpZ6jCBuP7663n//feZO3cu+fn5HD58mNzcXPLy8ti+fTvvvvsuv/32G6eddhpVqlSh\nfPnygGs306ZNmwBIS0vz7Mrav38/FSpUoFq1ahw9epS//vWvhb5FX3311YwaNYo9e/aQl5fH888/\n7/lQzsrKIjk5mdGjR3Po0CHy8/P58ccfWbJkid/+f/jhhyxcuJCjR4/y6KOP0q5dO+rUqcNll13G\nL7/8wquvvsrx48d5/fXXWblyJT179gx4G9WsWZM1a9YU2+bYsWMcPnyYEydOcPToUQ4fPux3oO7R\nowf//e9/PfPnnHMOLVu2ZOTIkRw+fJi3336bH3/8kb59+wKu03HLlStXaGDwpqpMnz6dFStWcPDg\nQR577DGuuuqqUwa7gwcPsnjxYjp37ux5bNSoUbz66qt88sknpKenn7Lur7/+mgYNGhRKMrGgxEFD\nVb9W1f2qulFVb1LVPqr6ZTg6F40sdZiivD9ARMQzX7duXd59912eeuopatSoQWZmJmPHjkVVOXHi\nBM8++yx16tShatWqLFiwgBdeeAGAJUuWcNFFF5GcnEyvXr0YP348DRo0oHv37nTv3p1zzjmHBg0a\ncMYZZxTaTfTYY49Rt25dGjZsSE5ODldddRUVK1YEoHz58syePZulS5fSqFEjqlevzm233XbKrhvv\n93HdddcxcuRIqlatynfffcf06dMBqFq1KrNnz2bs2LFUq1aNMWPGMHv2bDIyTr0Ft/f28LW9hg0b\nxptvvklGRgbDhw/32Zdu3bpRuXJlvvzyS2677TYqV67MggULfLZt1aoVqampfP31157HXnvtNZYs\nWUJGRgYPP/wwb731FlWrVgVcaaxBgwZ+U5KIcMMNN3DTTTdRq1Ytjh49yvjx4095L/PmzaN9+/ae\n7Q2u60U2btzIWWedRXJyMsnJyfz973/3LJ8xYwZ33nmnz9eNaiUdKQc+8zHNC/SIeygnInS2jZ1h\n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\n7P8D6Iyuzawxn60AAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f21c4078a50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import pi,sin,cos,arange,ones,sinc\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show,legend,grid\n", + "\n", + "M =2#\n", + "teta_0 = [0,pi]#\n", + "teta_tb = [pi/2,-pi/2]#\n", + "s1=[]\n", + "s2=[]\n", + "for i in range(0,M):\n", + " s1.append(cos(teta_0[i]))\n", + " s2.append(-sin(teta_tb[i]))\n", + "y = [[s1[0],s2[0]],[s1[1],s2[1]],[s1[1],s2[1]],[s1[0],s2[1]]]\n", + "print 'coordinates of message points\\n'\n", + "for xx in y:\n", + " print xx\n", + "plot(y[0])\n", + "plot(y[1])\n", + "plot(y[2])\n", + "plot(y[3])\n", + "xlabel(' In-Phase')#\n", + "ylabel(' Quadrature')#\n", + "title('Constellation for MSK')\n", + "legend(['message point 1 (0, pi/2)','message point 2 (pi, pi/2)','message point 3 (pi, - pi/2)','message point 4(0, - pi/2)'])\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.29 page 334" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4VNXWh98VQGogBJAOoQiC0lFAEENRsSsKotK99nJt\nnwUL2K9e9WJFbKCiF7FdUVEUMIAFaYJKUUFBpQgiVTpZ3x/7TDIZMslkmMmUrPd5zpM55+yz95qd\nM2edvX67iKpiGIZhGD5SYm2AYRiGEV+YYzAMwzDyYI7BMAzDyIM5BsMwDCMP5hgMwzCMPJhjMAzD\nMPJgjsEwjIRCRKaIyKBY25HMmGOIASKySkR2ish2EVkvIuNEpKJ37igR+URENonIZhGZLyKneOcy\nReQ3v3wOE5F3RORzEUkNKONWEZmZT9nVRWSviLQsgr0ZIpLt2evbvvHO1RORt0Vko4hsEZHvRGRI\nwHUp3r6IyJMiskxEaudTzigR2eflv1lEvhCRzqHaGW28+n5URH7zbPxFRP4T5TKHisjsKORbWURG\ni8hq77usEJH/iEi1SJcVaVT1VFV9NdZ2JDPmGGKDAqerairQHugI3OGdex+YCtQEDgeuBbYFZiAi\nZYF3gMrAiaq6PSDJq8BxIpIRcHwAsFhVl4ZhdxVVTfW2dn7lrAYaAOnAIOCPfOxNAcYC3YHuqrou\nn/wV+K9XLzWAz3HfsdgRkdL5HL4N9/86xrMxE1hQnHblh8/xFiH9YcB0oAVwsvddugB/AsdG3sLI\n4L1YSKztKBGoqm3FvAG/AD399v8NTAaqAdlA5SDXZQK/AeWBT4ApQNkCypkK3BlwbC5wjfe5KTAT\n2AJsBCYGySfDsysln3PbgdaFXHcY8DIwH6hagL2jgFf99o/yrk8H6nh1tAn4CfiHl6YcsAtI9/Zv\nB/YBlbz9e4H/eJ/LAo/gHNl6YAxQzq9ufwduBtYBL+dj3/vAPwuwfxVwK7AE+At4yf//A5wOLAI2\nA18ArfzO1cc5wQ24B/STwJHAbmC/V89/eWnHe7ZPAXYAPYHTgG+ArcCvwMgC7PyH9/0rFJCmBZDl\n2fo9cIbfufHAM17524HZQC3gcS/9MqBtKPUCpAEfeN/7L6+O6/pdmwXc59XX30AT79jFhd3DwHHA\nPO/cXKBLQL734F4+tuF+K9Vi/WyIly3mBpTEDecYenmf63s/vLu9/R+9H8dZQM2A6zK9H9BM4H9A\nmULKuRD40W+/ObDH9wMA/gvc5n0+DDguSD4ZuAd0qXzOfer9uM4HGgS57i3gS4I4PL/0o/AcA+4h\n/m9glbc/C3jKs7ONVw89vHMzgb7e509wjqOP33VneZ//49VbGlAJ52ge8KvbfcCDQBk8hxFg3+04\np3IF0AqQgPOrgG+BukBVr17u9c61w7WkjgEEGOzdB2WAUsBi4FGc0y/r+18AQ4DZAeWMxz3suvjV\n1QnAUd5+K9yD/6wg9TwRGFfA/6EMsAL3MC8N9MA9PJv5lb/R+05lca2PVcBA77vdC8wIsV7SgXNw\nDr4SMAl41+/aLO/6FrgIR2ngM2B4Qfewl+9m4CLvugE4x1PVL9+fcI6lnJfng7F+NsTLFnMDSuLm\n3ejbvRt3Fe6B53uDqot7W1wBHMA99Jp65zJxb8e78R6EhZRTAfcG6XuA3B/wo3sZF96pW0g+GbgH\n/Ga/7QbvXBruYfo97s32G6BjwHVbfOkLKWcUznFtxj1Ep3kPn/pe3hX90j6A93DDvfk9jnvArgOu\n8WwqB+z0HkaCe7tu7JdHF+Bnv7rdAxxWgH0pwJW4B9tuYA0w2O/8L8ClfvunACu8z2OAewLyW44L\nrXXBObr8WmRDOdgxjAPGF1KXo4HHgpz7BM8hBjl/PLAu4NjreK0QnGMY63fuamCJ334rYHMo9ZJP\n2W3xWkbe/mfAqIA0/o4h33sYF9KcE3DsS2CIXx4j/M5dAXwUqd94om+mMcQGxb3NVVXVDFW9WlX3\nAKjqGlW9RlWbAg1xzedX/K79E/f287KInFRgIao7gTdxb6fg3p7887oZ98CcKyLfi8iwQuyu5tlc\nVVUf88rYoqq3qerROF1kEe6t3J/TgZEh5A/whpd/TVXtrarf4MJIf6nq337pfsU5UXDOMxMX//8O\n51BOADrhHkCbcZpFBWCBJ2xvBj4CqvvluVFV9wYzTFWzVfUZVe0GVME52pdEpLlfst/8Pv/q2Q7u\nf3mjr2yv/HpAbZzjW62q2SHUT37lICKdROQzEdkgIluAy3ChyfzY5GdXftQJzB/XUvJdozhH5mN3\nwP4u3Nt/MHtz6kVEKojIWK9Dxlbc/7JKgJYQaIs/we7hOl45wb4DuFZVQTaXWMwxxDGq+jsulnt0\nwPH/AZcAb4lIZiHZvAz095xIJVyYypfPH6p6qarWxT1InhGRxodg7yZcOKSOiFT1O/UlcAbwuIhc\nUFAWuB95IGuBdBHx/+E2wGkCAF/hwmTnAFmqusw7fyouZADOoe4CWvo5tzRVrRxQfkio6h5VfQbX\nuvHv4dUg4PMa7/OvwP1+ZVdV1Uqq+gbuwddARErlV1SIJr2Oc8j1VDUNeJbgv+9pwMkiUiHI+bVA\n/YCHc0O/7xIOwerlRqAZcKyqVsE5dCHvfRC0DoLcw028/BsGJD/U71BiMMcQR4hImojcLSJNRCRF\nRKoDw3EPvjyo6kRcE/49ETkuWJ6qOhsXyhmL6/Gz36+8fiJSz9vdgvsBFuWtFRF5yOtiW9rrMnsF\n8JP3lu5vxyygL/CciPQNll2Q7/Abzrk8KCJlRaQ1rl4meOd34noHXYV748RLf7lv33sbfx4YLSI1\nPNvrFtbqCviu/xSRE0SkvPd9h+Cc7Td+9l/p5ZuO0yTe8M49D1wuIsd6nWsqishpnrP7GhcC+5f3\nBl3O73/6B1BPRMoUUk+VcOGbvSJyLE5fCvZAfRXnjN4WkebevVZNREaI6xo9BxeCu1lEyngvH6fj\ntIlg5RdEQfVSCeewt3rnRga5Pv+M87+HD+Bag81E5ALvf3U+Tsz/IJR8SzrmGOKLvbi3mmk4beA7\n3I9mqF+anB+7qr6Ce+P6UEQ6FpDvK7i3tFcCjncE5ojIduA94FpVXRUkj2APmfLAu7g355W4sMiZ\nQeydhhOpXxaR04KUEaycC3CaxVpc7527VHWG3/mZOGFyrt9+JZz47OMWnHYzxwtbfIp7Wy3sO/rY\niWsRrcOJr1cA5/rVmeLe3D/B1cVPuB41qOoCXCvvKZwI+hNeiM9zWmfghNBfcQ/t/l6e03G9edaL\nyAa/cgJtvRK4R0S2AXeS++A9CC9c1huncXyKu9e+xgm2c1R1n2fPKd73fAoYpKo/Bik/P3sCz+db\nLzgtpDyuRfcl7oFeUF6B5HsPe63X03G/jz+Bm3BdxP8qwMaQW4zJjqhGry5E5CVcN7oNqtoqSJon\ncDfgTmCoF1M2jIRDRH7BdaOcUWjiEoTVS+IR7RbDOKBPsJMiciqux80RwKW4nhuGYRhGDImqY/Di\n25sLSHImThxFVb8G0kSkZjRtMgzDMAomv2H/xUld8nZF+x3Xhe+gKRUMI95R1UaxtiEesXpJPOJB\nfA7sGWACkGEYRgyJdYthDa4Xi4965NPPWETMWRiGYYSBqha5W26sWwyT8brsiZteeYuq5htGmrlq\nJk0eb8LAdwayaeemmA8ZT+Rt5MiRMbchWTarS6vPeN7CJaqOQUT+i+ub3FzcHPbDReQyEbkMQFWn\nAD+LyArcAKwrg+XVvWF3Fl++mPRy6bQa04r3f3g/WFKjEFatWhVrE5IGq8vIYvUZH0Q1lKSqBU1/\n4Etzdaj5VTysIo+f8jjntjyX4e8NZ9LSSTze53HSy6cfmqGGYRhGDrEOJYWFtR4OjaFDh8bahKTB\n6jKyWH3GB1Ed+RwpRESD2Tlr9SyGvzecLvW7WOvBMAzDDxFBwxCfE94xAPy9929GTB/BW8ve4tnT\nnuWM5mcUo3WJR1ZWFpmZmbE2I+bYKpFGMpHfM7JEOwYf1noIDXMMDu9HE2szDOOQCXYvh+sYElJj\nCIZpD6FhTsEwjIJIqhaDP9Z6MArDWgxGsmAthhCx1kNwsrKyYm2CYRhxTNI6Bsgd9/Dfc//L9VOv\nZ9C7g/hr11+FX2gYRtwzdOhQ7rzzzqDnU1NTcwbM7dq1izPOOIO0tDTOP//8YrLwYF577TVOPvnk\nmJUfKkntGHxY6yEvpjHEPxkZGVSoUIHU1FRSU1OpXLky69evL/zCJOPFF1+kRYsWVK5cmVq1anHa\naaexY8cOwIVJCupZtn37djIyMgB466232LBhA5s3b+aNN94o1KkApKSk8PPPP+fsP/LII9SpU4dl\ny5aF/X0uuugipk6dGvb1xUWJcAxgrQcjsRARPvjgA7Zv38727dvZtm0btWrVypNm//79Qa5ODmbO\nnMntt9/OxIkT2bZtG8uWLWPAgAFh5bV69WqaNWsWdhfl++67jyeeeIJZs2bRokWLsPJIJEqMY/Bh\nrQfTGBKZlJQUnnnmGY444giaN28OwAcffEDbtm2pWrUqXbt25bvvvstJ/80339C+fXsqV67MgAED\nGDBgQM6b8vjx4zn++OMPyt/3lrxnzx5uuukmGjZsSK1atbjiiivYvXs34O6hevXq8dhjj1GzZk3q\n1KnD+PHjc/LZtWsXN954IxkZGaSlpdG9e3d2797NaaedxlNPPZWnzNatW/Pee+8d9F3nzZtHly5d\naNOmDQBVq1Zl0KBBVKpUKSfNX3/9xemnn07lypXp3Llznjf8lJQUVq5cyciRI7n33nt54403SE1N\n5bnnnuP111/n4YcfJjU1lbPOOitofasqd9xxBy+99BKzZs2iadOmAKxdu5Zzzz2Xww8/nMaNG/Pk\nk08CsH79eipWrMhff+W+dC5cuJDDDz+cAwcOHFTnKSkpjB07lmbNmlG1alWuvjp3hqDs7GxuvPFG\natSoQePGjXnqqadISUkhOzs7qL0Rowiz9HUEysZohkCNBjNXzdQmjzfRge8M1E07N0WljHjks88+\ni7UJcUG07qtIkJGRodOmTTvouIjoSSedpJs3b9bdu3frwoUL9fDDD9e5c+dqdna2vvzyy5qRkaF7\n9+7VPXv2aIMGDXT06NG6f/9+feutt7RMmTJ65513qqrquHHjtFu3bgflv3LlSlVVve666/Sss87S\nzZs36/bt2/WMM87Q2267TVXdPVS6dGkdOXKk7t+/X6dMmaIVKlTQLVu2qKrqlVdeqT169NC1a9fq\ngQMH9KuvvtI9e/bopEmTtFOnTjnlLVq0SKtVq6b79u076LvOnj1by5cvryNHjtTPP/9cd+/enef8\nkCFDtFq1ajpv3jzdv3+/XnTRRTpgwIB8v8uoUaN00KBBOeeGDh2aUw/BEBE999xz9YgjjtDffvst\n5/iBAwe0ffv2eu+99+q+ffv0559/1saNG+vUqVNVVfXUU0/VMWPG5KS/7rrr9Nprr823zkVEzzjj\nDN26dav++uuvWqNGDf34449VVXXMmDHasmVLXbNmjW7evFl79eqlKSkpeuDAgYNsDXYve8eL/swN\nKRHUBvYBA8Mp5FC3aP6Ad+zZoddOuVbrPFpHJy+fHLVyjPijsPsKIrOFQ8OGDbVSpUqalpamaWlp\nes4556iqe5D4O/bLL7/8oAdc8+bNdebMmTpz5kytU6dOnnPHHXdcSI4hOztbK1asmPNgVVX98ssv\ntVGjRqrqHEP58uXzPKQOP/xw/frrr/XAgQNavnx5/fbbbw/6Xrt27dKqVavqihUrVFX1xhtv1Kuu\nuipoPXz00Ud6xhlnaFpamlaqVElvuOGGnDKHDh2ql1xySU7aKVOm6JFHHnnQd1FVHTlypA4cODDn\n3NChQ/WOO+4IWq7v+ipVqug111yT5/icOXO0QYMGeY498MADOmzYMFVVnThxonbt2lVVVffv36+1\natXSefPmqWr+juGLL77I2e/fv78+9NBDqqrao0cPfe6553LOTZs2TUWkWBxDqLOrDsWtzXwxMCFS\nrZV4wGZsNYKhMRziICK899579OzZ86Bz9evnrm21evVqXnnllZxQBsC+fftYt24dqkrdunXzXNuw\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7cdd420b10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,ones,sinc,pi,sin,cos\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show,legend,grid\n", + "\n", + "rb = 2 # the bit rate in bits per second\n", + "Eb = 1 # the Energy of bit\n", + "\n", + "f = arange(0,1/100+8/rb,8/rb)\n", + "Tb = 1/rb# #Bit duration\n", + "SB_PSK=ones(len(f))\n", + "SB_FSK=ones(len(f))\n", + "for i in range(0,len(f)):\n", + " if(f[i]==(1/(2*Tb))):\n", + " SB_FSK[i]=Eb/(2*Tb)\n", + " else:\n", + " SB_FSK[i]= (8*Eb*(cos(pi*f[i]*Tb)**2))/((pi**2)*(((4*(Tb**2)*(f[i]**2))-1)**2))\n", + " \n", + " SB_PSK[i]=2*Eb*(sinc(f[i]*Tb)**2)\n", + "\n", + "plot([ff*Tb for ff in f],[yy/(2*Eb) for yy in SB_FSK]) \n", + "plot([ff*Tb for ff in f],[yy/(2*Eb) for yy in SB_PSK]) \n", + "xlabel('Normalized Frequency ---->')\n", + "ylabel('Normalized Power Spectral Density--->')\n", + "title('PSK Vs FSK Power Spectra Comparison')\n", + "legend(['Frequency Shift Keying','Phase Shift Keying'])\n", + "grid() \n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.30 page 336" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f901821bbd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,ones,sinc,pi,cos\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show,legend,grid\n", + "\n", + "rb = 2 # the bit rate in bits per second\n", + "Eb = 1 # the Energy of bit\n", + "f = arange(0,1/(100*rb)+(4/rb),1/(100*rb))\n", + "Tb = 1/rb# #bit duration in seconds\n", + "SB_MSK=ones(len(f))\n", + "SB_QPSK=ones(len(f))\n", + "for i in range(0,len(f)):\n", + " if(f[i]==0.5):\n", + " SB_MSK[i]= 4*Eb*f[i]\n", + " else:\n", + " SB_MSK[i]=(32*Eb/(pi**2))*(cos(2*pi*Tb*f[i])/((4*Tb*f[i])**2-1))**2\n", + " \n", + " SB_QPSK[i]=4*Eb*sinc((2*Tb*f[i]))**2\n", + "\n", + "plot([ff*Tb for ff in f],[yy/(4*Eb) for yy in SB_MSK])\n", + "plot([ff*Tb for ff in f],[yy/(4*Eb) for yy in SB_QPSK])\n", + "xlabel('Normalized Frequency ---->')\n", + "ylabel('Normalized Power Spectral Density--->')\n", + "title('QPSK Vs MSK Power Spectra Comparison')\n", + "legend(['Minimum Shift Keying','QPSK'])\n", + "grid()\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.31 page 338" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f439ca4da10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,ones,sinc\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show,legend,grid\n", + "\n", + "rb = 2 # the bit rate\n", + "Eb = 1 # the energy of the bit\n", + "f = arange(0,1.0/100+rb,1./100)\n", + "Tb = 1/rb# #Bit duration\n", + "M = [2,4,8]#\n", + "SB_PSK=ones([len(M),len(f)])\n", + "for j in range(0,len(M)):\n", + " for i in range(0,len(f)):\n", + " SB_PSK[j,i]=2*Eb*(sinc(f[i]*Tb*log(M[j],2))**2)*log(M[j],2)\n", + " \n", + "plot([ff*Tb for ff in f],[xx/(2*Eb) for xx in SB_PSK[0,:]])\n", + "plot([ff*Tb for ff in f],[xx/(2*Eb) for xx in SB_PSK[1,:]])\n", + "plot([ff*Tb for ff in f],[xx/(2*Eb) for xx in SB_PSK[2,:]])\n", + "xlabel('Normalized Frequency ---->')\n", + "ylabel('Normalized Power Spectral Density--->')\n", + "title('Power Spectra of M-ary signals for M =2,4,8')\n", + "legend(['M=2','M=4','M=8'])\n", + "grid()\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example7.41 page 340" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f64696066d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f646923d210>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,convolve as convol\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show\n", + "#Matched Filter Output\n", + "T =4#\n", + "a =2#\n", + "t = range(0,T+1)\n", + "g = [2*xx for xx in ones([1,T+1])][0]\n", + "h =[abs(x) for x in (convol(g,g))]\n", + "for i in range(0,len(h)):\n", + " if(h[i]<0.01):\n", + " h[i]=0\n", + " \n", + "h = [hh-T for hh in h]\n", + "t1 = range(0,len(h))\n", + "plot(t,g)\n", + "xlabel('t--->')\n", + "ylabel('g(t)---->')\n", + "title('Rectangular pulse duration T = 4, a =2')\n", + "show()\n", + "plot(t1,h)\n", + "xlabel('t--->')\n", + "ylabel('Matched Filter output')\n", + "title('Output of filter matched to rectangular pulse g(t)')\n", + "show()\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/Digital_Communications_by_S._Haykin/Chapter8.ipynb b/Digital_Communications_by_S._Haykin/Chapter8.ipynb new file mode 100644 index 00000000..1b04d843 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter8.ipynb @@ -0,0 +1,577 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 Error Control Coding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.1 page 384" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "generator matrix\n", + "[[ 1. 1. 1. 1. 1.]]\n", + "\n", + "parity-check matrix\n", + "[[ 1. 0. 0. 0. 1.]\n", + " [ 0. 1. 0. 0. 1.]\n", + " [ 0. 0. 1. 0. 1.]\n", + " [ 0. 0. 0. 1. 1.]]\n", + "\n", + "code word for binary one input\n", + "[[ 1. 1. 1. 1. 1.]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import ones,zeros,identity,transpose,hstack,mat\n", + "\n", + "n =5# #block of identical 'n' bits\n", + "k =1# #one bit\n", + "m = 1## bit value = 1\n", + "I = identity(n-k) #Identity matrix\n", + "P = ones(n-k)##coefficient matrix\n", + "I=mat(I)\n", + "P=mat(P)\n", + "H = hstack([I,transpose(P)])##parity-check matrix\n", + "G = hstack([P, mat([1])])##generator matrix \n", + "x = m*G# #code word\n", + "print 'generator matrix\\n',G\n", + "print '\\nparity-check matrix\\n',H\n", + "print '\\ncode word for binary one input\\n',x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.2 page 386" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "identity matrix Ik\n", + "[[ 1. 0. 0. 0.]\n", + " [ 0. 1. 0. 0.]\n", + " [ 0. 0. 1. 0.]\n", + " [ 0. 0. 0. 1.]]\n", + "\n", + "coefficient matrix P\n", + "[[1 1 0]\n", + " [0 1 1]\n", + " [1 1 1]\n", + " [1 0 1]]\n", + "generator matrix G\n", + "[[ 1. 1. 0. 1. 0. 0. 0.]\n", + " [ 0. 1. 1. 0. 1. 0. 0.]\n", + " [ 1. 1. 1. 0. 0. 1. 0.]\n", + " [ 1. 0. 1. 0. 0. 0. 1.]]\n", + "parity chechk matrix H\n", + "[[ 1. 0. 0. 1. 0. 1. 1.]\n", + " [ 0. 1. 0. 1. 1. 1. 0.]\n", + " [ 0. 0. 1. 0. 1. 1. 1.]]\n", + "Code words of (7,4) Hamming code\n", + "[[ 0. 0. 0. 0. 0. 0. 0.]\n", + " [ 1. 0. 1. 0. 0. 0. 1.]\n", + " [ 1. 1. 1. 0. 0. 1. 0.]\n", + " [ 0. 1. 0. 0. 0. 1. 1.]\n", + " [ 0. 1. 1. 0. 1. 0. 0.]\n", + " [ 1. 1. 0. 0. 1. 0. 1.]\n", + " [ 1. 0. 0. 0. 1. 1. 0.]\n", + " [ 0. 0. 1. 0. 1. 1. 1.]\n", + " [ 1. 1. 0. 1. 0. 0. 0.]\n", + " [ 0. 1. 1. 1. 0. 0. 1.]\n", + " [ 0. 0. 1. 1. 0. 1. 0.]\n", + " [ 1. 0. 0. 1. 0. 1. 1.]\n", + " [ 1. 0. 1. 1. 1. 0. 0.]\n", + " [ 0. 0. 0. 1. 1. 0. 1.]\n", + " [ 0. 1. 0. 1. 1. 1. 0.]\n", + " [ 1. 1. 1. 1. 1. 1. 1.]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import ones,zeros,identity,multiply,mat,concatenate,hstack,transpose\n", + "\n", + "\n", + "k = 4# #message bits length\n", + "n = 7# #block length\n", + "m = n-k##Number of parity bits\n", + "I = identity(k) #identity matrix\n", + "I=mat(I)\n", + "print 'identity matrix Ik\\n',I\n", + "P =[[1,1,0],[0,1,1],[1,1,1],[1,0,1]]##coefficient matrix\n", + "P=mat(P)\n", + "print '\\ncoefficient matrix P\\n',P\n", + "G = hstack([P,I]) #generator matrix\n", + "print 'generator matrix G\\n',G\n", + "\n", + "H = hstack([identity(k-1),transpose(P)])##parity check matrix\n", + "print 'parity chechk matrix H\\n',H\n", + "\n", + "#message bits\n", + "m = [[0,0,0,0],[0,0,0,1],[0,0,1,0],[0,0,1,1],[0,1,0,0],[0,1,0,1],[0,1,1,0],[0,1,1,1],[1,0,0,0],[1,0,0,1],[1,0,1,0],[1,0,1,1],[1,1,0,0],[1,1,0,1],[1,1,1,0],[1,1,1,1]]\n", + "\n", + "C = m*G#\n", + "C = (C%2)#\n", + "print 'Code words of (7,4) Hamming code\\n',C\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.3 page 389" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "remainder in polynomial form: \n", + " 2\n", + "1 x + 1 x\n", + "Parity bits are: [ 1. 1. 0.]\n", + "G:\n", + "[1, 1, 0, 1, 0, 0, 0]\n", + "[0, 1, 1, 0, 1, 0, 0]\n", + "[0, 0, 1, 1, 0, 1, 0]\n", + "[0, 0, 0, 1, 1, 0, 1]\n", + "\n", + "Generator Matrix G =\n", + "[1, 1, 0, 1, 0, 0, 0]\n", + "[0, 1, 1, 0, 1, 0, 0]\n", + "[1, 1, 1, 0, 0, 1, 0]\n", + "[1, 0, 1, 0, 0, 0, 1]\n", + "\n", + "Partiy Check matrix H =\n", + "\n", + "[1, 0, 0, 1, 0, 1, 1]\n", + "[0, 1, 0, 1, 1, 1, 0]\n", + "[0, 0, 1, 0, 1, 1, 1]\n" + ] + } + ], + "source": [ + "from numpy import poly1d, polydiv\n", + "#message sequence = [1,0,0,1]\n", + "g = poly1d([1,0,1,1]) #generator polynomial\n", + "m = poly1d([1,0,0,0])*poly1d([1,0,0,1]) #message sequence\n", + "q = polydiv(m,g)[0]\n", + "r = polydiv(m,g)[1]\n", + "p = r.coeffs\n", + "print 'remainder in polynomial form: \\n',r\n", + "print 'Parity bits are:',p\n", + "\n", + "def rev_coeffs(x):\n", + " X=[]\n", + " for i in reversed(x):\n", + " X.append(i)\n", + " return X\n", + "\n", + "\n", + "G = [rev_coeffs(g.coeffs),rev_coeffs((g*poly1d([1,0])).coeffs),rev_coeffs((g*poly1d([1,0,0])).coeffs),rev_coeffs((g*poly1d([1,0,0,0])).coeffs)]\n", + "M=len(G[-1])\n", + "for gg in G:\n", + " while len(gg)<M:\n", + " gg.append(0)\n", + "print \"G:\" \n", + "for gg in G:\n", + " print gg\n", + "\n", + "def fun1(a,x,y):\n", + " import numpy as np\n", + " z=[]\n", + " for xx,yy in np.nditer([a[x-1],a[y-1]]):\n", + " z.append(xx+yy)\n", + " a[x-1]=z\n", + " return a \n", + "\n", + "def modulo(a,i):\n", + " bb=[]\n", + " for aa in a[i-1]:\n", + " bb.append(aa%2)\n", + " a[i-1]=bb \n", + " return a\n", + "\n", + "G=fun1(G,3,1)#G(3,:) = G(3,:)+G(1,:);\n", + "G=modulo(G,3)#G(3,:) = modulo(G(3,:),2);\n", + "G=fun1(G,4,1)\n", + "G=fun1(G,4,2)#G(4,:) = G(1,:)+G(2,:)+G(4,:);\n", + "G=modulo(G,4)#G(4,:) = modulo(G(4,:),2);\n", + "print '\\nGenerator Matrix G ='\n", + "for ggg in G:\n", + " print ggg\n", + "\n", + "\n", + "#h = 1+D^-1+D^-2+D^-4;\n", + "#H_D = [D^4*h;D^5*h;D^6*h];\n", + "H_D=[poly1d([1,1,1,0,1]),poly1d([1,1,1,0,1,0]),poly1d([1,1,1,0,1,0,0])] \n", + "\n", + "\n", + "#H_num =numer(H_D);\n", + "#H = coeff(H_num);\n", + "H=[rev_coeffs(aa.coeffs) for aa in H_D]\n", + "\n", + "M=len(H[-1])\n", + "for hh in H:\n", + " while len(hh)<M:\n", + " hh.append(0)\n", + "H=fun1(H,1,3)\n", + "H= modulo(H,1) \n", + "print '\\nPartiy Check matrix H =\\n'\n", + "for hh in H:\n", + " print hh" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.4 page 395" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "remainder in polynomial form: \n", + " 2\n", + "1 x + 1 x\n", + "Parity bits are: [ 1. 1. 0.]\n", + "Table 8.3 Contents of the Shift Register in the Encoder of fig8.7 for Message Sequence(1001)\n", + "__________________________________________________________________________________________\n", + "Shift Input Register Contents\n", + "__________________________________________________________________________________________\n", + "1 1 1 1 0\n", + "2 0 0 1 1\n", + "3 0 1 1 1\n", + "4 1 0 1 1\n", + "____________________________________________________________________________________________\n" + ] + } + ], + "source": [ + "from numpy import poly1d,polydiv\n", + "#message sequence = [1,0,0,1]\n", + "g = poly1d([1,0,1,1]) #generator polynomial\n", + "m = poly1d([1,0,0,0])*poly1d([1,0,0,1])# #message sequence\n", + "q= polydiv(m,g)[0]\n", + "r= polydiv(m,g)[1]\n", + "p = r.coeffs\n", + "print 'remainder in polynomial form: \\n',r\n", + "print 'Parity bits are:',p\n", + "print 'Table 8.3 Contents of the Shift Register in the Encoder of fig8.7 for Message Sequence(1001)'\n", + "print '__________________________________________________________________________________________'\n", + "print 'Shift Input Register Contents'\n", + "print '__________________________________________________________________________________________'\n", + "print '1 1 1 1 0'\n", + "print '2 0 0 1 1'\n", + "print '3 0 1 1 1'\n", + "print '4 1 0 1 1'\n", + "print '____________________________________________________________________________________________'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.5 page 396" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "remainder in polynomial form : \n", + " 2\n", + "2 x + 2 x\n", + "Syndrome bits for error free codeword are: [0.0, 0.0, 0.0]\n", + "remainder in polynomial form for errored codeword : \n", + " 2\n", + "2 x + 3 x + 1\n", + "Syndrome bits for errored codeword are: [0.0, 1.0, 1.0]\n" + ] + } + ], + "source": [ + "from numpy import poly1d,polydiv\n", + "\n", + "#message sequence = [0,1,1,1,0,0,1]\n", + "\n", + "g = poly1d([1,0,1,1]) # #generator polynomial\n", + "C1 = poly1d([1,0,0,1,1,1,0]) #error free codeword\n", + "C2 = poly1d([1,0,0,0,1,1,0]) #middle bit is error\n", + "#[r1,q1] = pdiv(C1,g)#\n", + "\n", + "q1 = polydiv(C1,g)[0]\n", + "r1 = polydiv(C1,g)[1]\n", + "\n", + "S1 = (r1).coeffs\n", + "S1 = [xx%2 for xx in S1]\n", + "print 'remainder in polynomial form : \\n',r1\n", + "print 'Syndrome bits for error free codeword are:',S1\n", + "q2 = polydiv(C2,g)[0]\n", + "r2 = polydiv(C2,g)[1]\n", + "S2 = (r2).coeffs\n", + "S2 = [xx%2 for xx in S2]\n", + "print 'remainder in polynomial form for errored codeword : \\n',r2\n", + "print 'Syndrome bits for errored codeword are:',S2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.6 page 399" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n = 3\n", + "n-k = 2\n", + "Code rate:r = k/n = 0.333\n", + "It can correct any error upto = 2\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Single-error-correcting RS code with a 2-bit byte\n", + "\n", + "m =2# #m-bit symbol\n", + "k = 1**2# #number of message bits\n", + "t =1# #single bit error correction\n", + "n = 2**m-1# #code word length in 2-bit byte\n", + "p = n-k# #parity bits length in 2-bit byte\n", + "r = k/n# #code rate\n", + "print 'n =',n\n", + "print 'n-k =',p\n", + "print 'Code rate:r = k/n = %.3f'%r\n", + "print 'It can correct any error upto =',(2*t)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.7 page 401" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Result:\n", + "[1.0, 1.0] \n", + "\n", + "[1.0, 0.0] \n", + "\n", + "[1.0, 1.0] \n", + "\n", + "[1.0, 1.0] \n", + "\n", + "[0.0, 1.0] \n", + "\n", + "[0.0, 1.0] \n", + "\n", + "[1.0, 1.0] \n", + "\n" + ] + } + ], + "source": [ + "from numpy import convolve,ones\n", + "g1 = [1,1,1] # The input Top Adder Sequence\n", + "g2 = [1,0,1] #The input Bottom Adder Sequence\n", + "m =[1,1,0,0,1] # The message sequence\n", + "x1 = [round(xx) for xx in convolve(g1,m)]\n", + "x2 = [round(xx) for xx in convolve(g2,m)]\n", + "x1 = [xx%2 for xx in x1]\n", + "x2 = [xx%2 for xx in x2]\n", + "N = len(x1)\n", + "x=[]\n", + "for i in range(0,len(x1)):\n", + " x.append([x1[N-i-1],x2[N-i-1]])\n", + "print 'Result:' \n", + "for xx in x:\n", + " print xx,'\\n'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.8 page 404" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top output sequence\n", + "1 \t1 \t1 \t1 \t0 \t0 \t1 \t\n", + "bottom output sequence\n", + "1 \t0 \t1 \t1 \t1 \t1 \t1 \t" + ] + } + ], + "source": [ + "from numpy import poly1d\n", + "g1D=poly1d([1,1,1]) #generator polynomial 1\n", + "g2D=poly1d([1,0,1]) #generator polynomial 2\n", + "mD=poly1d([1,1,0,0,1]) #message sequence polynomial representation\n", + "x1D=(g1D*mD) #top output polynomial\n", + "x2D=(g2D*mD) #bottom output polynomial\n", + "x1=x1D.coeffs\n", + "x2=x2D.coeffs\n", + "x1=x1.tolist()\n", + "X1=[]\n", + "for i in reversed(x1):\n", + " X1.append(i)\n", + "X2=[]\n", + "for i in reversed(x2):\n", + " X2.append(i)\n", + "print 'top output sequence'\n", + "for xx in X1:\n", + " print xx%2,'\\t',\n", + "print '\\nbottom output sequence' \n", + "for xx in X2:\n", + " print xx%2,'\\t'," + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example8.11 page 409" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "branch metric for correct reception : 0.8822\n", + "branch metric for any one correct recption: -3.7027\n", + "branch metric for no correct reception : -8.2877\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "\n", + "r = 1/2# #code rate\n", + "n =2# #number of bits\n", + "pe = 0.04# #transition probility \n", + "p = 1-pe## probability of correct reception\n", + "gama_1 = 2*log(p,2)+2*(1-r)# #branch metric for correct reception\n", + "gama_2 = log(pe*p,2)+1# #branch metric for any one correct recption\n", + "gama_3 = 2*log(pe,2)+1# #branch metric for no correct reception\n", + "print 'branch metric for correct reception : %.4f'%gama_1\n", + "print 'branch metric for any one correct recption: %.4f'%gama_2\n", + "print 'branch metric for no correct reception : %.4f'%gama_3" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Digital_Communications_by_S._Haykin/Chapter9.ipynb b/Digital_Communications_by_S._Haykin/Chapter9.ipynb new file mode 100644 index 00000000..1cf25521 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter9.ipynb @@ -0,0 +1,365 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 9 Spread Spectrum Modulation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.1 page 461" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The PN sequence at step: 1\n", + "x= [1, 0, 0]\n", + "The PN sequence at step: 2\n", + "x= [1, 1, 0]\n", + "The PN sequence at step: 3\n", + "x= [1, 1, 1]\n", + "The PN sequence at step: 4\n", + "x= [0, 1, 1]\n", + "The PN sequence at step: 5\n", + "x= [1, 0, 1]\n", + "The PN sequence at step: 6\n", + "x= [0, 1, 0]\n", + "The PN sequence at step: 7\n", + "x= [0, 0, 1]\n", + "Table 9.1 Range of PN Sequence lengths\n", + "_________________________________________________________\n", + "Length of shift register (m) = [7, 8, 9, 10, 11, 12, 13, 17, 19]\n", + "PN sequence Length (N) = [127, 255, 511, 1023, 2047, 4095, 8191, 131071, 524287]\n", + "_________________________________________________________\n" + ] + } + ], + "source": [ + "#Program to generate Maximum Length Pseudo Noise Sequence\n", + "#Period of PN Sequence N = 7\n", + "\n", + "#Assign Initial value for PN generator\n", + "x0= 1#\n", + "x1= 0#\n", + "x2 =0#\n", + "x3 =0#\n", + "N = 7 # the period of the signal\n", + "for i in range(1,N+1):\n", + " x3 =x2\n", + " x2 =x1\n", + " x1 = x0\n", + " x0 =(x1^x3)\n", + " print 'The PN sequence at step:',i\n", + " x = [x1, x2, x3]\n", + " print 'x=',x\n", + "\n", + "m = [7,8,9,10,11,12,13,17,19]#\n", + "N = [2**mm-1 for mm in m]\n", + "print 'Table 9.1 Range of PN Sequence lengths'\n", + "print '_________________________________________________________'\n", + "print 'Length of shift register (m) =',m\n", + "print 'PN sequence Length (N) =',N\n", + "print '_________________________________________________________'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.2 page 462" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The PN sequence at step : 1\n", + "x= [1, 0, 0]\n", + "The PN sequence at step : 2\n", + "x= [1, 1, 0]\n", + "The PN sequence at step : 3\n", + "x= [1, 1, 1]\n", + "The PN sequence at step : 4\n", + "x= [0, 1, 1]\n", + "The PN sequence at step : 5\n", + "x= [1, 0, 1]\n", + "The PN sequence at step : 6\n", + "x= [0, 1, 0]\n", + "The PN sequence at step : 7\n", + "x= [0, 0, 1]\n", + "Output Sequence : [0, 0, 1, 1, 1, 0, 1]\n", + "Output Sequence levels : [-1, -1, 1, 1, 1, -1, 1]\n", + "Number of 1s in the given PN sequence : 4\n", + "Number of 0s in the given PN sequence : 3\n", + "Property 1 (Balance property) is satisified\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fa533551b90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import corrcoef as corr\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show\n", + "\n", + "#Period of PN Sequence N = 7\n", + "#Properites of maximum-length sequence\n", + "\n", + "#Assign Initial value for PN generator\n", + "x0= 1#\n", + "x1= 0#\n", + "x2 =0#\n", + "x3 =0#\n", + "N = 7 #the period of the signal\n", + "one_count = 0\n", + "zero_count = 0\n", + "C=[]\n", + "C_level=[]\n", + "t=[]\n", + "for i in range(1,N+1):\n", + " x3 =x2#\n", + " x2 =x1#\n", + " x1 = x0#\n", + " x0 =(x1^x3)\n", + " print 'The PN sequence at step :',i\n", + " x = [x1 ,x2 ,x3]\n", + " print 'x=',x\n", + " C.append(x3)\n", + " if(C[i-1]==1):\n", + " C_level.append(1)\n", + " one_count = one_count+1\n", + " elif(C[i-1]==0):\n", + " C_level.append(-1)\n", + " zero_count = zero_count+1\n", + " \n", + "print 'Output Sequence : ',C #refer equation 9.4\n", + "print 'Output Sequence levels :',C_level#refer equation 9.5\n", + "if(zero_count < one_count):\n", + " print 'Number of 1s in the given PN sequence : ',one_count\n", + " print 'Number of 0s in the given PN sequence :',zero_count\n", + " print 'Property 1 (Balance property) is satisified'\n", + "\n", + "Rc_tuo = corr(C_level,rowvar=N)\n", + "t = range(1,2*len(C_level)+1)\n", + "plot(t,C_level+C_level)\n", + "xlabel(' t')\n", + "title('Waveform of maximum-length sequence [0 0 1 1 1 0 1 0 0 1 1 1 0 1]')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.3 page 468" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The processing gain is: 4095.0\n", + "The required PN sequence is: 4095.0\n", + "The feedback shift register length: 12.0\n", + "Jamming Margin in dB: 26.122539061\n" + ] + } + ], + "source": [ + "from math import log,log10\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "Tb = 4.095*10**-3##Information bit duration\n", + "Tc = 1*10**-6##PN chip duration\n", + "PG = Tb/Tc##Processing gain\n", + "print 'The processing gain is:',PG\n", + "N = PG# #PN sequence length\n", + "m = log2(N+1)##feedback shift register length\n", + "print 'The required PN sequence is:',N\n", + "print 'The feedback shift register length:',m\n", + "Eb_No = 10##Energy to noise density ratio\n", + "J_P = PG/Eb_No##Jamming Margin\n", + "print 'Jamming Margin in dB:',10*log10(J_P)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.4 page 469" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of bits per symbol K = 2\n", + "Number of MFSK tones M= 4\n", + "Period of the PN sequence N = 15\n", + "length of PN sequence per hop k = 3\n", + "Total number of frequency hops = 8\n" + ] + } + ], + "source": [ + "#Slow and Fast Frequency Hopping\n", + "K =2# #number of bits per symbol\n", + "M = 2**K# #Number of MFSK tones\n", + "N = 2**M-1##Period of the PN sequence\n", + "k = 3# #length of PN sequence per hop\n", + "print 'number of bits per symbol K =',K\n", + "print 'Number of MFSK tones M=',M\n", + "print 'Period of the PN sequence N =',N\n", + "print 'length of PN sequence per hop k =',k\n", + "print 'Total number of frequency hops =',2**k" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example9.5 page 470" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nreSLO92IZLTJSIOebEmTgb1SnPpJ8oGZmaR0f/LxZrZc0leAyZLmmdlzqRqWM59+Iu3C66+XbIiq\norbW+Zevvz67TTITJ7oSdB07llxaxZNcuPu3vw1bTelJrAXdckvYShzHHw+ffAIzZpQnWWNo+fSD\nvPg1Zva+pL2Bp82swWhZSSOADWb2hxTnyppw7d574R//qIyal1HAzBXv/tvfstsOf/750K8fXBKp\ne7/48uabrvDP4sUuN08lM2MGnHsuvPNOeXfhNsTPf+5CN//0p/KPXc6Eaw8BXw+efx3YLlpYUlNJ\nzYPnuwJ9gUjchPrY/OIiZe9bXrPG7WT0aReKR/furjbs00+HraT0hJF2IRO1tc7lFIe0DIV8bDcA\nfSQtAHoHx0hqKylRu2Yv4DlJM4FpwCNmNqkQwcVg1SqXHvW888JWUlkMGeJilj/5pOF248bB174G\nLVIG+XrypRpi9rdscZFKYUft1KdTJ9hvP5dDKurkbfTNbI2ZnWpmnc2sr5mtC15/z8zOCJ6/Y2aH\nBY+Dzew3xRJeCGPHutjy5s3DVlJZtGsHRxzhikc3RBRC7SqRRFqGjz8OW0npePJJl/OmS5ewlWxP\nXKKoInSDVD680SkdmWabb7/tis/361c+TdVCmzZw3HFw//1hKykdUd7MN3AgPPYYfPRR2EoapuqM\n/vz5biPFqaeGraQyOe88eO45WLky9fmRI922+R13LK+uaiEus818WL/e1b0IK+1CJvbc04XPjh8f\ntpKGqTqjX1fnfM8+7UJpaNbMbZgZO3b7c2b+LqvU9O8PL79cmWkZ7rvPGdVWrcJWkp44rKtUldH3\naRfKQ7ov/osvuovtkUeWX1O10KSJC2eMc+HudMRhwnDmmW7vz+LFYStJT1UZ/eeec4u3PXqEraSy\nOeUUWLbMFapOxu+ALg+VWFxlyRKX4+bMM8NW0jA77+xCkaOclqGqjL7P9VIeGjf+Yodogs8+cxvi\nfNqF0nPSSa4EZSXtNh81CgYMcLluok7iohvVtAxVY/Q/+cSlYh0yJGwl1UFt7ZcLdz/6qKvruu++\n4eqqBhKFu6PuW86WuK0FHXecyy316qthK0lNIfn0L5D0pqStktJmnJDUT9I8SW9Juirf8Qrl4Ydd\nDHm7dmEpqC4OPdRtvnr2WXccpx9tJZC46G7dGraSwpkxw03ajj8+bCXZIUV7QbeQmf5s4Fzg2XQN\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f5c71d2a690>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f5c71d2aad0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import ones,sin,arange,hstack,nditer,pi\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,subplot,xlabel,ylabel,title,show\n", + "\n", + "\n", + "#Figure 9.4:Generation of waveforms in DS/BPSK spread spectrum transmitter\n", + "t = range(0,13+1)\n", + "N = 7#\n", + "wt = arange(0,0.01+1,0.01)\n", + "bt = hstack([[1*xx for xx in ones(N)],[-1*yy for yy in ones(N)]])\n", + "ct = [0,0,1,1,1,0,1,0,0,1,1,1,0,1]\n", + "ct_polar = [-1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,1]\n", + "mt = [a*b for a,b in nditer([bt,ct_polar])]\n", + "Carrier = [2*sin(wtt*2*pi) for wtt in wt]\n", + "\n", + "st = []#\n", + "for i in range(0,len(mt)):\n", + " st = st+[mt[i]*Cr for Cr in Carrier]\n", + "\n", + "subplot(3,1,1)\n", + "plot(t,bt)\n", + "xlabel(' t')\n", + "title('Data b(t)')\n", + "subplot(3,1,2)\n", + "plot(t,ct_polar)\n", + "xlabel(' t')\n", + "title('Spreading code c(t)')\n", + "subplot(3,1,3)\n", + "plot(t,mt)\n", + "xlabel(' t')\n", + "title('Product Signal m(t)')\n", + "show()\n", + "subplot(3,1,1)\n", + "plot(t,mt)\n", + "xlabel(' t')\n", + "title('Product Signal m(t)')\n", + "subplot(3,1,2)\n", + "plot(Carrier)\n", + "xlabel(' t')\n", + "title('Carrier Signal')\n", + "subplot(3,1,3)\n", + "plot(st)\n", + "xlabel(' t')\n", + "title('DS/BPSK signal s(t)')\n", + "show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Digital_Communications_by_S._Haykin/screenshots/Ch-6_RaisedCosineSpectrum.png b/Digital_Communications_by_S._Haykin/screenshots/Ch-6_RaisedCosineSpectrum.png Binary files differnew file mode 100644 index 00000000..96b74924 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/screenshots/Ch-6_RaisedCosineSpectrum.png diff --git a/Digital_Communications_by_S._Haykin/screenshots/Ch6_powerSpectralDensities.png b/Digital_Communications_by_S._Haykin/screenshots/Ch6_powerSpectralDensities.png Binary files differnew file mode 100644 index 00000000..505c3998 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/screenshots/Ch6_powerSpectralDensities.png diff --git a/Digital_Communications_by_S._Haykin/screenshots/ch6_sinc_pilse.png b/Digital_Communications_by_S._Haykin/screenshots/ch6_sinc_pilse.png Binary files differnew file mode 100644 index 00000000..8f97aed2 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/screenshots/ch6_sinc_pilse.png diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/README.txt b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/README.txt new file mode 100644 index 00000000..131586cb --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/README.txt @@ -0,0 +1,10 @@ +Contributed By: Divyang Gandhi +Course: mtech +College/Institute/Organization: GTU +Department/Designation: Electrical Engineering +Book Title: Heat And Mass Transfer - A Practical Approach +Author: Y. A. Cengel +Publisher: McGraw - Hill, New York +Year of publication: 2006 +Isbn: 978-007-125739-8 +Edition: 3
\ No newline at end of file diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch1.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch1.ipynb new file mode 100644 index 00000000..f50d0c6f --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch1.ipynb @@ -0,0 +1,685 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 : Introduction and basic concepts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Heat needs to be transferred to the copper ball to heat it from 100 to 150 degree celsius is 92.5526285717 kJ\n", + "Average Heat Transfer by the iron ball is 51.4181269843 W\n", + "Average flux is 1636.68981481 W/m**2\n" + ] + } + ], + "source": [ + "# Heating of a copper ball\n", + "\n", + "import math \n", + "# Variables\n", + "#(a)\n", + "#density of the copper ball\n", + "rho = 8950\t\t\t#[kg/m**3]\n", + "#Diameter of the copper ball\n", + "D = 0.1\t\t\t#[m]\n", + "#mass of the ball\n", + "m = rho*(math.pi/6)*(D**3)\t\t\t#[kg]\n", + "#Specific Heat of copper\n", + "Cp = 0.395\t\t\t#[kJ/Kg/m**3]\n", + "#Initial Temperature\n", + "T1 = 100\t\t\t#[degree C]\n", + "#Final Temperature\n", + "T2 = 150\t\t\t#[degree C]\n", + "\n", + "# Calculations and Results\n", + "# The amount of heat transferred to the copper ball is simply the change in it's internal energy and is given by\n", + "# Energy transfer to the system = Energy increase of the system\n", + "Q = (m*Cp*(T2-T1));\n", + "print \"Heat needs to be transferred to the copper ball to heat it from 100 to 150 degree celsius is \",Q,\"kJ\"\n", + "\n", + "#b\n", + "#Time interval for which the ball is heated\n", + "dT = 1800\t\t\t#[seconds]\n", + "Qavg = (Q/dT)*1000\t\t\t#[W]\n", + "print \"Average Heat Transfer by the iron ball is \",Qavg,\"W\"\n", + "\n", + "#(c)\n", + "#Heat Flux\n", + "qavg = (Qavg/(math.pi*(D**2)))\t\t\t#[W/m**2]\n", + "print \"Average flux is\",qavg,\"W/m**2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time needed for this heater to supply 429.856 kJ of heat is 6.0 minutes\n" + ] + } + ], + "source": [ + "# Heating of water in an Electric Teapot\n", + "\n", + "# Variables\n", + "#Mass of liquid water\n", + "m1 = 1.2\n", + "m2 = 0.5\t\t\t#[Kg]\n", + "#Initial Temperature\n", + "t1 = 15\t\t\t #[Degree Celcius]\n", + "#Final Temperature\n", + "t2 = 95\t\t \t#[Degree Celcius]\n", + "#Specific heat of water\n", + "cp1 = 4.186\t\t\t#[kJ/kG.K]\n", + "#Specific heat capacity of teapot\n", + "cp2 = .7\t\t\t#[]\n", + "\n", + "# Calculations\n", + "Em = (m1*cp1*(t2-t1))+(m2*cp2*(t2-t1))\t\t\t#[kJ]\n", + "#Rating of Electric Heating Equipment\n", + "Em1 = 1.2 \t\t\t#[kJ/s]\n", + "dt = (Em/Em1)/60\t\t\t#[seconds]\n", + "\n", + "# Results\n", + "print \"Time needed for this heater to supply \",Em,\"kJ\",\"of heat is\",round(dt),\"minutes\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The constant pressure specific heat of air at the average temperature of 330 K is 1.007 kJ/kg\n", + "mass flow rate of air through the duct is 0.261585627439 kg/s\n", + "The rate of heat loss by the air is 1.58050036099 kJ/s\n", + " Cost of heat loss to the home owner is $ 0.107863531745 per hour\n" + ] + } + ], + "source": [ + "# Heat Loss from Heating Ducts in a Basement\n", + "\n", + "# Variables\n", + "T_in = 60+273\t\t\t#Temperature of hot air while entering the duct[K]\n", + "T_out = 54+273\t\t\t#Temperature of hot air while leaving the duct[K]\n", + "T_avg = (T_in+T_out)/2\t\t\t#Average temperature of air[K]\n", + "\n", + "# Calculations and Results\n", + "Cp = 1.007\t\t\t#[kJ/kg]\n", + "print \"The constant pressure specific heat of air at the average temperature of\",T_avg,\"K is\",Cp,\"kJ/kg\"\n", + "\n", + "P = 100 \t\t\t#Pressure of air while entering the duct[kPa]\n", + "R = 0.287\t\t\t#Universal Gas Consmath.tant[kPa.(m**3/kg).K]\n", + "v = 5\t \t\t#Average velocity of flowing air[m/s]\n", + "neta = 0.8\t\t\t#Efficiency of natural gas furnace\n", + "ucost = 1.60\t\t\t#Cost of natural gas in that area[$/therm],where 1therm = 105,500kJ\n", + "#Solution;-\n", + "rho = P/(R*T_in)\t\t\t#The density of air at the inlet conditions is[kg/m**3]\n", + "Ac = 0.20*0.25\t\t\t#Cross sectional area of the duct[m**2]\n", + "m_ = rho*v*Ac\t\t\t#[kg/s]\n", + "print \"mass flow rate of air through the duct is\",m_,\"kg/s\"\n", + "\n", + "Q_loss = m_*Cp*(T_in-T_out)\t\t\t#[kJ/s]\n", + "print \"The rate of heat loss by the air is\",Q_loss,\"kJ/s\"\n", + "\n", + "cost = (Q_loss*3600)*(ucost)*(1./105500)*(1/neta)\t\t\t#[$/h]\n", + "print \" Cost of heat loss to the home owner is\" ,\"$\",cost,\"per hour\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.4" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The specific heat capacities of air at the average temperature of 288 K 0.72 and 1.007 kJ/kg.K\n", + "Mass of air in the room is 624.961524729 kg\n", + "The amount of energy transferred to air at constant volume is 4499.72297805 kJ\n", + "Cost of Energy is $ 0.0937442287093\n", + "The amount of energy transferred to air at constant is 6293.36255402 kJ\n", + "Cost of Energy is $ 0.131111719875\n" + ] + } + ], + "source": [ + "# Electric Heating of a House at High Elevation\n", + "\n", + "# Variables\n", + "#(a)\n", + "t1 = 10+273\t\t\t#Initial temperature of house[K]\n", + "t2 = 20+273\t\t\t#Temperature after turning on heater[K]\n", + "\n", + "# Calculations and Results\n", + "tavg = (t1+t2)/2\t\t\t#Average temperature[K]\n", + "cp = 1.007\t\t\t#[kJ/kg.K]\n", + "cv = .720\t\t\t#[kJ/kg.K]\n", + "print \"The specific heat capacities of air\",\"at the average temperature of\",tavg,\"K\",cv,\"and\",cp,\"kJ/kg.K\"\n", + "\n", + "A = 200 \t\t\t#The floor area[m**2]\n", + "h = 3\t \t\t#Height of room[m]\n", + "V = A*h\t\t \t#Volume of the air in the house[m**3]\n", + "P = 84.6\t\t\t #Pressure [kPa]\n", + "R = 0.287\t\t\t #Universal gas consmath.tant[kPa.m**3/kg.K]\n", + "m = (P*V)/(R*t1)\t\t\t#[kg]\n", + "print \"Mass of air in the room is\",m,\"kg\"\n", + "\n", + "Eincv = m*cv*(t2-t1);\n", + "print \"The amount of energy transferred to air at constant volume is \",Eincv,\"kJ\"\n", + "\n", + "u_cost = 0.075\t\t\t#Unit math.cost of energy[$/kWh]\n", + "Cost1 = (Eincv*u_cost)/(3600)\t\t\t#[$]\n", + "print \"Cost of Energy is $\",Cost1\n", + "\n", + "#(b)\n", + "Eincp = m*cp*(t2-t1)\t\t\t#[kJ]\n", + "print \"The amount of energy transferred to air at constant is \",Eincp,\"kJ\"\n", + "\n", + "Cost2 = (Eincp*u_cost)/3600\t\t\t#[$]\n", + "print \"Cost of Energy is $\",Cost2\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.5" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The steady rate of heat transfer through the roof is 1689.6 W\n", + "The amount of heat lost through the roof 16.896 kWh and its cost is $ 1.35168\n" + ] + } + ], + "source": [ + "# The cost of Heat loss through a Roof\n", + "\n", + "# Variables\n", + "k = 0.8\t\t\t#The thermal conductivity of the roof[W/m.degree.C]\n", + "A = 6*8\t\t\t#Area of the roof[m**2]\n", + "t1 = 15\t\t\t#temperature of inner surface roof[degree C]\n", + "t2 = 4\t\t\t#temperature of outer surface roof[degree C]\n", + "L = 0.25\t\t\t#thickness of roof[m]\n", + "\n", + "# Calculations and Results\n", + "Q_ = k*A*(t1-t2)/L\t\t\t#[W]\n", + "print \"The steady rate of heat transfer through the roof is\",Q_,\"W\"\n", + "\n", + "#(b)\n", + "dt = 10. \t\t\t#time period[h]\n", + "Q = Q_*dt/1000\t\t\t#[kWh]\n", + "u_cost = 0.08\t\t\t#Unit math.cost of energy[$/kWh]\n", + "Cost = Q*u_cost\t\t\t#[$]\n", + "print \"The amount of heat lost through the roof\",Q,\"kWh\",\"and its cost is $\",Cost\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.6" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The electrical power consumed by the resismath.tance heater and converted to heat is 44.0 W\n", + "The rate of heat flow through each sample 22.0 W\n", + "The thermal conductivity of the sample is 22.4090159873 W/mC\n" + ] + } + ], + "source": [ + "# Measuring the Thermal Conductivity of a Material\n", + "\n", + "# Variables\n", + "V = 110\t\t\t#Voltage diffrence b/w thermocouples[V]\n", + "I = 0.4\t\t\t#Current drawn by thermocouples[A]\n", + "\n", + "# Calculations and Results\n", + "We = V*I\t\t\t#[W]\n", + "print \"The electrical power consumed by the resismath.tance heater and converted to heat is\",We,\"W\"\n", + "\n", + "q_ = We/2\t\t\t#[W]\n", + "print \"The rate of heat flow through each sample\",q_,\"W\"\n", + "\n", + "dT = 15\t\t\t#Temperature drop in the direction of heat flow[degree C]\n", + "l = .03\t\t\t#length for which temperature change is measured[m]\n", + "D = .05\t\t\t#diameter of cylinder[m]\n", + "a = (math.pi*D**2)/4\t\t\t#Cross-sectional area of the cylinder[m**2]\n", + "K = (q_*l)/(a*dT)\t\t\t#[W/m.degreeC]\n", + "print \"The thermal conductivity of the sample is\",K,\"W/mC\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.7" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thermal conductivity of the brick in English units is 0.41601316752 Btu/h.ft.degree Farenhiet\n" + ] + } + ], + "source": [ + "# Conversion between SI and English Units\n", + "\n", + "# Variables\n", + "W_to_btu_p_h = 3.41214\t\t\t#Conersion from Watt to btu per hour[btu/h]\n", + "m_to_ft = 3.2808\t\t\t #Conversion from meter to english unit feet[ft]\n", + "deg_C_to_deg_F = 1.8\t\t\t#Conversion from degree Celcius to degree Farenhiet\n", + "\n", + "# Calculations\n", + "W_per_m_deg_C = W_to_btu_p_h/(m_to_ft*deg_C_to_deg_F)\t\t\t#Conversion factor for 1W/m.degree Celcius[Btu/h.ft.degree Farenhiet]\n", + "k_brick = 0.72*W_per_m_deg_C \t\t\t#[Btu/h.ft.degree Farenhiet]\n", + "\n", + "# Results\n", + "print \"The thermal conductivity of the brick in English units is\",k_brick,\"Btu/h.ft.degree Farenhiet\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.8" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat generated in the wire as a result of resismath.tance heating is 90.0 W\n", + "The convection Heat Transfer coefficient is 34.8514473924 W/m**2.degree Celcius\n" + ] + } + ], + "source": [ + "# Measuring Convection Heat Transfer coefficient\n", + "\n", + "# Variables\n", + "T_ambient = 15\t\t\t#Temperature of room[degree Celcius]\n", + "T_surface = 152\t\t\t#Temperature of surface of wire[degree Celcius]\n", + "L = 2\t\t\t#Length of wire[m]\n", + "D = 0.003\t\t\t#Diameter of wire[m]\n", + "V = 60\t\t\t#Voltage drop across the current wire[Volts]\n", + "I = 1.5\t\t\t#Current flowing in the wire[amp]\n", + "\n", + "# Calculations and Results\n", + "#When steady conditions are reached, the rate of heat loss from the wire equals the rate of heat generation in the wire as a result of resismath.tance heating\n", + "\n", + "Q_ = V*I\t\t\t#[W]\n", + "print \"The rate of heat generated in the wire as a result of resismath.tance heating is\",Q_,\"W\"\n", + "\n", + "As = math.pi*D*L\t\t\t#Surface Area of the wire[m**2]\n", + "#Using Newton's Law of Cooling\n", + "#and assuming all heat loss in wire to occur by convection\n", + "h = Q_/(As*(T_surface-T_ambient))\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The convection Heat Transfer coefficient is\",h, \"W/m**2.degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.9" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The net rates of radiation heat transfer from the body to the surrounding walls ,ceiling, and floor in winter and summer are respectively 152.0 and 40.9287218637 W\n" + ] + } + ], + "source": [ + "# Radiation Effect on Thermal Comfort\n", + "\n", + "# Variables\n", + "T_room = 22+273\t\t\t#Temperature fo room[K]\n", + "T_wntr = 10+273\t\t\t#Average Temperature of inner surfaces of walls,floors and the cieling in winter[K]\n", + "T_smmr = 25+273\t\t\t#Average Temperature of inner surfaces of walls,floors and the cieling in summer[K]\n", + "T_outr = 30+273\t\t\t#Average outer surface temperature of the person[K]\n", + "A = 1.4 \t\t\t#The math.exposed surface area[m**2]\n", + "e = 0.95\t\t\t#Emissivity of person\n", + "\n", + "# Calculations\n", + "sigma = 5.67*(10**(-8))\t\t\t#Stefan's consmath.tant\n", + "Q_rad_wntr = e*sigma*A*((T_outr**4)-(T_wntr**4))\t\t\t#[W]\n", + "Q_rad_smmr = e*sigma*A*((T_outr**4)-(T_smmr**4))\t\t\t#[W]\n", + "\n", + "# Results\n", + "print \"The net rates of radiation heat transfer from the body to the surrounding walls \\\n", + ",ceiling, and floor in winter and summer are respectively\",round(Q_rad_wntr),\"and\",Q_rad_smmr,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.10" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rate of convection heat transfer from the person to the air in the room is 86.4 W\n", + "The rate of convection heat transfer from the person to the surrounding walls,cieling,fllor is 81.712671952 W\n", + "The rate of total heat transfer from the body is 168.0 W\n" + ] + } + ], + "source": [ + "# Heat Loss from a Person\n", + "\n", + "# Variables\n", + "T_room = 20+273\t\t\t#Temperature of breezy room[K]\n", + "T_outr = 29+273\t\t\t#Average outer surface temperature of the person[K]\n", + "As = 1.6\t\t\t#math.exposed Surface Area[m**2]\n", + "h = 6\t\t\t#Convection Heat transfer coefficient[W/m**2.K]\n", + "e = 0.95\t\t\t#Emissivity of person\n", + "\n", + "# Calculations and Results\n", + "sigma = 5.67*(10**(-8))\t\t\t#Stephan's consmath.tant[W/m**2.degree Celcius]\n", + "Q_conv = h*As*(T_outr-T_room)\t\t\t#[W]\n", + "print \"Rate of convection heat transfer from the person to the air in the room is\",Q_conv,\"W\"\n", + "\n", + "Q_rad = e*sigma*As*((T_outr**4)-(T_room**4))\t\t\t#[W]\n", + "print \"The rate of convection heat transfer from the person to the surrounding walls,cieling,fllor is\",Q_rad,\"W\"\n", + "\n", + "Q_total = Q_conv+Q_rad\t\t\t#[W]\n", + "print \"The rate of total heat transfer from the body is \",round(Q_total),\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.11" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rates of conduction and radiation heat transfer between the plates through the air layer are respectively 219.0 and 369.0 W\n", + "('W', 588.0, 'Net rate of heat transfer is')\n", + "The heat transfer rate in reality will be higher because of the natural convection currents that are likely to occur in the air space between the plates\n", + "when the air space b/w the plates is evacuted there is no conduction or convection, and the only heat transfer between the plates will be by radiation. \n", + "Therefore Net rate of heat transfer is 369.0 W\n", + "An opaque solid material placed b/w the two plates blocks direct radiation heat transfer between the plates\n", + "The net rate of heat transfer through the urethane insulation is 260.0 W\n", + "The layers of superinsulation prevent any direct radiation heat transfer between the plates\n", + "The net rate of heat transfer through the layer of superinsulation is 0.2 W\n" + ] + } + ], + "source": [ + "# Heat transfer between two Isothermal Plates\n", + "\n", + "# Variables\n", + "T1 = 300\n", + "T2 = 200.\t\t\t#Temperatures of two large parallel isothermal plates[K]\n", + "L = 0.01\t\t\t#dismath.tance between both plates[m]\n", + "e = 1\t\t\t#Emissivity of plates\n", + "A = 1\t\t\t#Surface area of plates[m**2]\n", + "\n", + "# Calculations and Results\n", + "T_avg = (T1+T2)/2\t\t\t#Average temperature[K]\n", + "sigma = 5.67*(10**(-8))\t\t\t#Stefan's consmath.tant[W/m**2.K**4]\n", + "#Solution (a)[space between plates is filled with air]\n", + "k_air = 0.0219\t\t\t#The thermal conductivity of aair at the average temperature[W/m.K]\n", + "Q_cond = k_air*A*(T1-T2)/L\t\t\t#[W]\n", + "Q_rad = e*sigma*A*((T1**4)-(T2**4))\t\t\t#[W]\n", + "print \"The rates of conduction and radiation heat transfer between the plates through\\\n", + " the air layer are respectively\",Q_cond,\"and\",round(Q_rad),\"W\"\n", + "\n", + "Q_total_a = Q_cond+Q_rad\t\t\t#[W]\n", + "print (\"W\",round(Q_total_a),\"Net rate of heat transfer is\")\n", + "print (\"The heat transfer rate in reality will be higher because of the natural convection currents that are likely to occur in the air space between the plates\")\n", + "\n", + "#Solution (b)[space between the plates is evacutaed]\n", + "print \"when the air space b/w the plates is evacuted there is no conduction or convection, \\\n", + "and the only heat transfer between the plates will be by radiation. \"\n", + "print (\"Therefore\"),\n", + "Q_total_b = Q_rad\t\t\t#[W]\n", + "print \"Net rate of heat transfer is\",round(Q_total_b),\"W\"\n", + "\n", + "#Solution (c)[space between the plates is filled with urethane insulation]\n", + "k_insu = 0.026\t\t\t#At average temperature thermal conductivity of urethane insulation [W/m.K]\n", + "print (\"An opaque solid material placed b/w the two plates blocks direct radiation heat\\\n", + " transfer between the plates\")\n", + "\n", + "Q_cond_c = k_insu*A*(T1-T2)/L\t\t\t#[W]\n", + "Q_total_c = Q_cond_c\t\t\t#[W]\n", + "print \"The net rate of heat transfer through the urethane insulation is\",round(Q_total_c),\"W\"\n", + "\n", + "#Solution (d)[the dismath.tance between the plates is filled with superinsulation]\n", + "k_super = 0.00002\t\t\t#At average temperature thermal conductvity of superinsulation[W/m.K]\n", + "print (\"The layers of superinsulation prevent any direct radiation heat transfer between the plates\")\n", + "\n", + "Q_cond_d = k_super*A*(T1-T2)/L\t\t\t#[W]\n", + "Q_total_d = Q_cond_d\t\t\t #[W]\n", + "print \"The net rate of heat transfer through the layer of superinsulation is\",Q_total_d,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.13" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The plate surface temperature is 33.4 degree Celcius\n" + ] + } + ], + "source": [ + "# Heating of a Plate by Solar Energy\n", + "\n", + "# Variables\n", + "a = 0.6\t\t\t#absorptivity of math.exposed surface of plate\n", + "q_incident = 700\t\t\t#Rate at which solar radiation incident on the plate [W/m**2]\n", + "T_surr = 25+273\t\t\t#Surrounding air temperature[K]\n", + "h = 50\t\t\t#Combined radiation and convection heat transfer coefficient[W/m**2.K]\n", + "\n", + "# Calculations\n", + "#Temperature keeps on increamath.sing till a point comes at which the rate of heat loss from the plate equals the rate of solar energy absorbed, and the temperature of the plate no longer changes\n", + "T_surface = T_surr+(a*(q_incident)/h)\t\t\t#[K]\n", + "\n", + "# Results\n", + "print \"The plate surface temperature is\",T_surface-273,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.14" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 5. 1.]\n" + ] + } + ], + "source": [ + "\n", + "from scipy.optimize import fsolve \n", + "import math \n", + "\n", + "# Non-linear equation in two variable\n", + "#x1 = x, x2 = y\n", + "def f2(x):\n", + " f = [0,0]\n", + " f[0] = x[0]-x[1]-4;\n", + " f[1] = x[0]**2+x[1]**2-x[0]-x[1]-20;\n", + " return f\n", + "#To get the desired output assign an initial value such as x0 = [1,1], [xs,fxs,m] = fsolve(f2,x0')\n", + "#To get the desired output assign an initial value such as \n", + "x0 = [1,1]\n", + "f = fsolve(f2,x0)\n", + "print f" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch10.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch10.ipynb new file mode 100644 index 00000000..4e5ab46d --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch10.ipynb @@ -0,0 +1,502 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 10 : Boiling and Condensation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.1" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) The rate of heat transfer during nucleate boiling becomes 5095.13655169 W\n", + "The rate of Evaporation of water is 0.00225748185719 kg/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Nucleate Boiling of Water in a Pan\n", + "Ts = 108.\t\t\t#Temp of surface of bottom of pan[degree Celcius]\n", + "Tsat = 100.\t\t\t#Saturation temp of water[degree Celcius]\n", + "D = 0.3 \t\t\t#Diameter[m]\n", + "#Properties of water at the saturation temp\n", + "rho_l = 957.9\t\t\t#Density of liquid[kg/m**3]\n", + "rho_v = 0.6\t\t\t#Density of vapour[kg/m**3]\n", + "Pr_l = 1.75\t\t\t#Prandtl no of liquid\n", + "mu_l = 0.282*10**(-3)\t\t\t#Vismath.cosity of liquid[kg/m.s]\n", + "Cp_l = 4217\t\t\t#Specific Heat of liquid[J/kg.degree Celcius]\n", + "h_fg = 2257*10**3\t\t\t#[J/kg]\n", + "sigma = 0.0589\t\t\t#[N/m]\n", + "g = 9.81\t\t\t#Acc due to gravity[m/s**2]\n", + "Csf = 0.0130\n", + "n = 1.0;\n", + "\n", + "# Calculations and Results\n", + "q_nuc = mu_l*h_fg*((g*(rho_l-rho_v)/sigma)**(1./2))*((Cp_l*(Ts-Tsat)/(Csf*h_fg*(Pr_l**n)))**3)\t\t\t#[W/m**2]\n", + "A = math.pi*(D**2)/4\t\t\t#Surface Area of bottom of the pan[m**2]\n", + "Q_boiling = A*q_nuc \t\t\t#[W]\n", + "print \"(a) The rate of heat transfer during nucleate boiling becomes \",Q_boiling,\"W\"\n", + "#Solution(b):-\n", + "m = Q_boiling/h_fg\t\t\t#[kg/s]\n", + "print \"The rate of Evaporation of water is\",m,\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum or critical heat flux is 1017411.21501 W/m**2\n", + "The surface temperature is 119.0 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Peak Heat Flux in Nucleate Boiling\n", + "\n", + "# Variables\n", + "D = 0.01\t\t\t#[m]\n", + "Tsat = 100\t\t\t#Saturation Temperature[degree Celcius]\n", + "sigma = 0.0589\t\t\t#[N/m]\n", + "#Properties of water at saturation temperature\n", + "rho_l = 957.9\t\t\t#[kg/m**3]\n", + "rho_v = 0.6\t\t\t#[kg/m**3]\n", + "h_fg = 2257*10**3\t\t\t#[J/kg]\n", + "mu_l = 0.282*10**(-3)\t\t\t#[kg/m.s]\n", + "Pr_l = 1.75\t\t\t#Prandtl number\n", + "Cp_l = 4217\t\t\t#[J/kg.degree Celcius]\n", + "Csf = 0.0130\n", + "n = 1.0;\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "\n", + "# Calculations and Results\n", + "L_ = (D/2)*((g*(rho_l-rho_v)/sigma)**(1./2))\t\t\t#dimensionless Parameter\n", + "#For this value of L_ we have \n", + "C_cr = 0.12\t\t\t#Constant\n", + "q_max = C_cr*h_fg*((sigma*g*(rho_v**2)*(rho_l-rho_v))**(1./4))\t\t\t#[W/m**2]\n", + "print \"The maximum or critical heat flux is\",q_max,\"W/m**2\"\n", + "\n", + "Ts = (((q_max/(mu_l*h_fg*((g*(rho_l-rho_v)/sigma)**(1./2))))**(1./3))*(Csf*h_fg*Pr_l**n)/Cp_l)+Tsat\t\t\t#[degree Celcius]\n", + "print \"The surface temperature is\",round(Ts),\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.3" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The film boiling heat flux is 63008.0039829 W/m**2)\n", + "The radiation heat flux is 372.19933107 W/m**2\n", + "The total heat flux is 63287.1534812 W/m**2\n", + "The rate of heat transfer from the heating element to the water is 994.112282215 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Film Boiling of Water on a Heating Element\n", + "\n", + "# Variables\n", + "D = 0.005\t\t\t#[m]\n", + "e = 0.05\t\t\t#Emissivity\n", + "Ts = 350\t\t\t#Surface temperature[degree Celcius]\n", + "Tsat = 100\t\t\t#[degree Celcius]\n", + "Tf = (Ts+Tsat)/2\t\t\t#[degree Celcius]\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "#Properties of water at Tsat\n", + "rho_l = 957.9\t\t\t#[kg/m**3]\n", + "h_fg = 2257*10**3\t\t\t#[J/kg]\n", + "#Properties of vapor at film temp\n", + "rho_v = 0.444\t\t\t#[kg/m**3]\n", + "Cp_v = 1951\t\t\t#[J/kg.degree Celcius]\n", + "mu_v = 1.75*10**(-5)\t\t\t#[kg/m.s]\n", + "k_v = 0.0388\t\t\t#[W/m.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "q_film = 0.62*(((g*(k_v**3)*rho_v*(rho_l-rho_v)*(h_fg+(0.4*Cp_v*(Ts-Tsat))))/(mu_v*D*(Ts-Tsat)))**(1./4))*(Ts-Tsat)\t\t\t#[W/m**2]\n", + "print \"The film boiling heat flux is\",q_film,\"W/m**2)\"\n", + "\n", + "q_rad = e*(5.67*10**(-8))*(((Ts+273)**4)-((Tsat+273)**4))\t\t\t#[W/m**2]\n", + "print \"The radiation heat flux is\",q_rad,\"W/m**2\"\n", + "\n", + "q_total = q_film+(3./4)*q_rad\t\t\t#[W/m**2]\n", + "print \"The total heat flux is\",q_total,\"W/m**2\"\n", + "\n", + "Q_total = (math.pi*D*1)*q_total\t\t\t#[W]\n", + "print \"The rate of heat transfer from the heating element to the water is\",Q_total,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.4" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The modified latent heat of vapourization is 2314201.6 J/kg\n", + "For wavy laminar flow Reynolds number is 1287.24272174\n", + "The conensation heat transfer coefficient is 5850.17651749 W/m**2.degree Celcius\n", + "The rate of heat transfer during condensation process is 702021.182099 W\n", + "The rate of condensation of steam is 0.303353511682 kg/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Condensation of steam on a Vertical Plate\n", + "\n", + "# Variables\n", + "Tsat = 100\n", + "Ts = 80\t\t\t#[degree Celcius]\n", + "Tf = (Ts+Tsat)/2\t\t\t#[degree Celcius]\n", + "L = 2\n", + "w = 3\t\t\t#Dimensions of Plate[m]\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "#Properties of water at Tsat\n", + "h_fg = 2257*10**3\t\t\t#[J/kg]\n", + "rho_v = 0.60\t\t\t#[kg/m**3]\n", + "#Properties of liquid water at Tf\n", + "rho_l = 965.3\t\t\t#[kg/m**3]\n", + "mu_l = 0.315*10**(-3)\t\t\t#[kg/m.s\n", + "Cp_l = 4206\t\t\t#[J/kg.degree Celcius]\n", + "k_l = 0.675\t\t\t#[W/m.degree Celcius]\n", + "nu_l = 0.326*10**(-6)\t\t\t#[m**2/s]\n", + "\n", + "# Calculations and Results\n", + "h_fg_m = h_fg+0.68*Cp_l*(Tsat-Ts)\t\t\t#[J/kg]\n", + "print \"The modified latent heat of vapourization is\",h_fg_m,\"J/kg\"\n", + "\n", + "Re = ((4.81+((3.70*L*k_l*(Tsat-Ts)*((g/nu_l**2)**(1./3)))/(mu_l*h_fg_m)))**(0.820));\n", + "print \"For wavy laminar flow Reynolds number is\",Re\n", + "\n", + "h = (Re*k_l*((g/nu_l**2)**(1./3)))/((1.08*(Re**(1.22)))-5.2)\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The conensation heat transfer coefficient is\",h,\"W/m**2.degree Celcius\"\n", + "\n", + "As = w*L\t\t\t #[m**2]\n", + "Q = h*As*(Tsat-Ts)\t\t\t#[W]\n", + "print \"The rate of heat transfer during condensation process is\",Q,\"W\"\n", + "\n", + "#Solution (b)\n", + "m = Q/h_fg_m\t\t\t#[kg/s]\n", + "print \"The rate of condensation of steam is\",m,\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.5" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The modified latent heat of vapourization is 2314201.6 J/kg\n", + "For wavy laminar flow Reynolds number is 1287.24272174\n", + "The conensation heat transfer coefficient is 5643.54026792 W/m**2.degree Celcius\n", + "The rate of heat transfer during condensation process is 677224.83215 W\n", + "The rate of condensation of steam is 0.292638650043 kg/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Condensation of steam on a Vertical Tilted Plate\n", + "\n", + "# Variables\n", + "Tsat = 100\n", + "Ts = 80\t\t\t#[degree Celcius]\n", + "Tf = (Ts+Tsat)/2\t\t\t#[degree Celcius]\n", + "L = 2\n", + "w = 3\t\t\t#Dimensions of Plate[m]\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "#Properties of water at Tsat\n", + "h_fg = 2257*10**3\t\t\t#[J/kg]\n", + "rho_v = 0.60\t\t\t#[kg/m**3]\n", + "#Properties of liquid water at Tf\n", + "rho_l = 965.3\t\t\t#[kg/m**3]\n", + "mu_l = 0.315*10**(-3)\t\t\t#[kg/m.s\n", + "Cp_l = 4206\t\t\t#[J/kg.degree Celcius]\n", + "k_l = 0.675\t\t\t#[W/m.degree Celcius]\n", + "nu_l = 0.326*10**(-6)\t\t\t#[m**2/s]\n", + "theta = (math.pi/6)\t\t\t#Angle at which plate is tilted[radians]\n", + "\n", + "# Calculations and Results\n", + "h_fg_m = h_fg+0.68*Cp_l*(Tsat-Ts)\t\t\t#[J/kg]\n", + "print \"The modified latent heat of vapourization is\",h_fg_m,\"J/kg\"\n", + "\n", + "Re = ((4.81+((3.70*L*k_l*(Tsat-Ts)*((g/nu_l**2)**(1./3)))/(mu_l*h_fg_m)))**(0.820));\n", + "print \"For wavy laminar flow Reynolds number is\",Re\n", + "\n", + "h = ((Re*k_l*((g/nu_l**2)**(1./3)))/((1.08*(Re**(1.22)))-5.2))*((math.cos(theta))**(1./4))\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The conensation heat transfer coefficient is\",h,\"W/m**2.degree Celcius\"\n", + "\n", + "As = w*L\t\t\t #[m**2]\n", + "Q = h*As*(Tsat-Ts)\t\t\t#[W]\n", + "print \"The rate of heat transfer during condensation process is\",Q,\"W\"\n", + "\n", + "#Solution (b)\n", + "m = Q/h_fg_m\t\t\t#[kg/s]\n", + "print \"The rate of condensation of steam is\",m,\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.6" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) The modified latent heat of vapourisation is 2435410.4 J/kg\n", + "The heat transfer coefficient for condensation on a single horizontal tube is 9294.6621572 W/m**2.degree Celcius\n", + "The rate of heat transfer during condensation Process is 8760.0127052 W\n", + "(b) The rate of condensation of steam is 0.00359693491709 kg/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Condensation of Steam on horizontal Tubes\n", + "\n", + "# Variables\n", + "Tsat = 40 \t\t \t#[degree Celcius]\n", + "D = 0.03\t \t\t #[m]\n", + "Ts = 30 \t\t \t#Outer Surface temperature of tube[degree Celcius]\n", + "Tf = (Ts+Tsat)/2\t\t\t#Film Temperature[degree Celcius]\n", + "g = 9.81\t\t\t #[m/s**2]\n", + "#Properties of water at the saturation temp\n", + "h_fg = 2407*10**3\t\t\t#[J/kg]\n", + "rho_v = 0.05\t \t\t#[kg/m**3]\n", + "#Properties of liquid water at the film temperature\n", + "rho_l = 994 \t \t\t#[kg/m**3]\n", + "Cp_l = 4178\t \t \t#[J/kg.degree Celcius]\n", + "mu_l = 0.720*10**(-3)\t\t#[kg/m.s]\n", + "k_l = 0.623\t\t\t #[W/m.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "h_fg_m = h_fg+0.68*Cp_l*(Tsat-Ts)\t\t\t#[J/kg]\n", + "print \"(a) The modified latent heat of vapourisation is\",h_fg_m,\"J/kg\"\n", + "\n", + "h_hori = 0.729*(((g*(rho_l**2)*h_fg_m*(k_l**3))/(mu_l*D*(Tsat-Ts)))**(1./4))\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The heat transfer coefficient for condensation on a single horizontal tube is\",h_hori,\"W/m**2.degree Celcius\"\n", + "\n", + "As = math.pi*D*1\t\t\t#[m**2]\n", + "Q = h_hori*As*(Tsat-Ts)\t\t\t#[W]\n", + "print \"The rate of heat transfer during condensation Process is\",Q,\"W\"\n", + "\n", + "#Solution (b)\n", + "m = Q/h_fg_m\t\t\t#[kg/s]\n", + "print \"(b) The rate of condensation of steam is\",m,\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.7" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) The modified latent heat of vapourisation is 2435410.4 J/kg\n", + "The heat transfer coefficient for condensation 12 horizontal tube is 7062.41599312 W/m**2.degree Celcius\n", + "The rate of heat transfer during condensation Process is 79874.0431221 W\n", + "(b) The rate of condensation of steam is 0.0327969541076 kg/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Condensation of Steam on horizontal Tube Banks\n", + "\n", + "# Variables\n", + "Tsat = 40\t \t\t#[degree Celcius]\n", + "D = 0.03\t\t \t#[m]\n", + "Ts = 30\t\t\t #Outer Surface temperature of tube[degree Celcius]\n", + "Tf = (Ts+Tsat)/2\t\t\t#Film Temperature[degree Celcius]\n", + "g = 9.81\t\t \t#[m/s**2]\n", + "N = 3\t\t\t #No of tubes in a vertical tier\n", + "N_total = 12\t\t\t#Total number of tubes\n", + "#Properties of water at the saturation temp\n", + "h_fg = 2407*10**3\t\t\t#[J/kg]\n", + "rho_v = 0.05\t\t\t#[kg/m**3]\n", + "#Properties of liquid water at the film temperature\n", + "rho_l = 994\t\t\t#[kg/m**3]\n", + "Cp_l = 4178\t\t\t#[J/kg.degree Celcius]\n", + "mu_l = 0.720*10**(-3)\t\t\t#[kg/m.s]\n", + "k_l = 0.623\t\t\t#[W/m.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "h_fg_m = h_fg+0.68*Cp_l*(Tsat-Ts)\t\t\t#[J/kg]\n", + "print \"(a) The modified latent heat of vapourisation is\",h_fg_m,\"J/kg\"\n", + "\n", + "h_hori_N = (0.729*(((g*(rho_l**2)*h_fg_m*(k_l**3))/(mu_l*D*(Tsat-Ts)))**(1./4)))*(1/(N**(1./4)))\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The heat transfer coefficient for condensation 12 horizontal tube is\",h_hori_N,\"W/m**2.degree Celcius\"\n", + "\n", + "As = math.pi*D*1*N_total\t\t\t#[m**2]\n", + "Q = h_hori_N*As*(Tsat-Ts)\t\t\t#[W]\n", + "print \"The rate of heat transfer during condensation Process is\",Q,\"W\"\n", + "\n", + "#Solution (b)\n", + "m = Q/h_fg_m\t\t\t#[kg/s]\n", + "print \"(b) The rate of condensation of steam is\",m,\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.8" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The diameter of the copper pipe is 23.9066721377 cm\n", + "Mass of the copper rod is 120.0 kg\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Replacing a Heat Pipe by a Copper Rod\n", + "\n", + "# Variables\n", + "L = 0.3\t\t\t#[m]\n", + "D = 0.006\t\t\t#[m]\n", + "Q = 180.\t\t\t#[W]\n", + "del_T = 3.\t\t\t#Temperature Difference [degree Celcius]\n", + "#Properties of copper at room temperature\n", + "rho = 8933.\t\t\t#[kg/m**3]\n", + "k = 401.\t\t\t#[W/m.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "A = Q*L/(k*del_T)\t\t\t#[m**2]\n", + "d = math.sqrt(4*A/math.pi)\t\t\t#[m]\n", + "print \"The diameter of the copper pipe is\",100*d,\"cm\"\n", + "m = rho*A*L\t\t\t#[kg]\n", + "print \"Mass of the copper rod is\",round(m),\"kg\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch11.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch11.ipynb new file mode 100644 index 00000000..194002db --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch11.ipynb @@ -0,0 +1,591 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 11 : Heat Exchangers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The average velocity of water in the tube is 1.60746331776 m/s\n", + "The Reynolds number for flow of water in the tube is 53404.0969357\n", + "The nusselt no for turbulent water flow 240.247125093\n", + "The average velocity for flow of oil is 2.39106017791 m/s\n", + "The Reynolds number for flow of oil is 630.221449106\n", + "The overall heat transfer Coefficient for the given heat exchanger is 74.4779584764 W/m**2.degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Overall Heat Transfer Coefficient of a Heat Exchanger\n", + "\n", + "# Variables\n", + "D_in = 0.02 \t\t\t#Diameter of inner tubes[m]\n", + "Di_out = 0.03\t\t\t#Inner Diameter of Outer tubes[m]\n", + "mw = 0.5\t \t\t#Mass Flow Rate of water[kg/s]\n", + "mo = 0.8\t\t \t#Mass Flow rate of oil[kg/s]\n", + "Tw = 45\t \t\t #Average Temp of water[degree Celcius]\n", + "To = 80\t\t \t#Average Temp of oil [degree Celcius]\n", + "#Properties of water at Tw\n", + "rho_w = 990.1\t\t\t#[kg/m**3]\n", + "Pr_w = 3.91\t\t\t#Prandtl Number\n", + "k_w = 0.637\t\t\t#[W/m.degree Celcius]\n", + "nu_w = 0.602*10**(-6)\t\t\t#[m**2/s]\n", + "#Properties of oil at To\n", + "rho_o = 852\t\t\t#[kg/m**3]\n", + "Pr_o = 499.3\t\t\t#Prandtl Number\n", + "k_o = 0.138\t\t\t#[W/m.degree Celcius]\n", + "nu_o = 3.794*10**(-5)\t\t\t#[m**2/s]\n", + "\n", + "# Calculations and Results\n", + "Vw = mw/(rho_w*(math.pi*(D_in**2)/4))\t\t\t#[m/s]\n", + "print \"The average velocity of water in the tube is\",Vw,\"m/s\"\n", + "\n", + "Re_w = Vw*D_in/nu_w;\n", + "print \"The Reynolds number for flow of water in the tube is\",Re_w\n", + "\n", + "Nu_w = 0.023*(Re_w**(0.8))*(Pr_w**(0.4));\n", + "print \"The nusselt no for turbulent water flow\",Nu_w\n", + "\n", + "hi = k_w*Nu_w/D_in\t\t\t#[W/m**2.degree Celcius]\n", + "#For oil flow\n", + "Dh = Di_out-D_in\t\t\t#Hydraulic Diameter for the annular space[m]\n", + "Vo = mo/(rho_o*(math.pi*((Di_out**2)-(D_in**2))/4))\t\t\t#[m/s]\n", + "print \"The average velocity for flow of oil is\",Vo,\"m/s\"\n", + "\n", + "Re_o = Vo*Dh/nu_o;\n", + "print \"The Reynolds number for flow of oil is\",Re_o\n", + "\n", + "Nu_o = 5.45\t \t\t#Nusselt number for flow of oil usign the table 11.3 and interpolating for value corresponding to Di_out/D_in\n", + "ho = Nu_o*k_o/Dh\t\t \t#[W/m**2.degree Celcius]\n", + "U = (1/((1/hi)+(1/ho)))\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The overall heat transfer Coefficient for the given heat exchanger is\",U,\"W/m**2.degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.2" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thermal Resistance for an unfinned shell and tube heat exchanger with fouling on both heat transfer surfaces is 0.0531419150758 m**2.degree Celcius/W\n", + "The overall Heat transfer Coefficients based on the inner and outer surfaces of the tube are 399.320556074 and 315.253070585 W/m**2.degree Celcius respectively\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Effect of Fouling on the Overall Heat Transfer Coefficient\n", + "\n", + "# Variables\n", + "k = 15.1\t\t\t#[W/m**2.degree Celcius]\n", + "Di = 0.015\t\t\t#Inner Diameter[m]\n", + "Do = 0.019\t\t\t#Outer Diameter[m]\n", + "Di_s = 0.032\t\t\t#Inner diameter of outer shell[m]\n", + "L = 1\t\t\t#[m]\n", + "hi = 800\t\t\t#W/m**2.degree Celcius\n", + "ho = 1200\t\t\t#[W/m**2.degree Celcius]\n", + "Rfi = 0.0004\t\t\t#[m**2.degree Celcius/W]\n", + "Rfo = 0.0001\t\t\t#[m**2.degree Celcius/W]\n", + "\n", + "# Calculations and Results\n", + "Ai = math.pi*Di*L\t\t\t#[m**2]\n", + "Ao = math.pi*Do*L\t\t\t#[m**2]\n", + "Ra = (1/(hi*Ai))+(Rfi/Ai)+((math.log(Do/Di))/(2*math.pi*k*L))+(Rfo/Ao)+(1/(ho*Ao))\t\t\t#[m**2.degree Celcius/W]\n", + "print \"The thermal Resistance for an unfinned shell and tube heat exchanger with\\\n", + " fouling on both heat transfer surfaces is\",Ra,\"m**2.degree Celcius/W\"\n", + " \n", + "#Solution (b):-\n", + "Ui = 1/(Ra*Ai)\t\t\t#[W/m**2.degree Celcius]\n", + "Uo = 1/(Ra*Ao)\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The overall Heat transfer Coefficients based on the inner and outer surfaces of the tube are\" \\\n", + ",Ui,\"and\",Uo,\"W/m**2.degree Celcius\",\"respectively\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.3" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The logrithmic Mean temperature difference is 11.5415603271 degree Celcius\n", + "The heat transfer rate in the condenser is 1090677.45091 W\n", + "The mass flow rate of the cooling water is 32.5847708805 kg/s\n", + "The rate of condensation of steam is 0.448653825961 kg/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# The Condensation of Steam in a Condenser\n", + "\n", + "# Variables\n", + "Th_in = 30.\n", + "Th_out = 30.\n", + "Tc_in = 14.\n", + "Tc_out = 22.\t\t\t#Inlet and Outlet temperatures of hot and cold liquids [degree Celcius]\n", + "A = 45.\t\t\t #[m**2]\n", + "U = 2100.\t\t\t#[W/m**2.degree Celcius]\n", + "h_fg = 2431.\t\t\t#Heat of vapourisation of water at Th_i[kJ/kg]\n", + "Cp = 4184.\t\t\t#Specific heat of cold water [J/kg]\n", + "\n", + "# Calculations and Results\n", + "del_T1 = Th_in-Tc_out\t\t\t#[degree Celcius]\n", + "del_T2 = Th_out-Tc_in\t\t\t#[degree Celcius]\n", + "del_T_lm = (del_T1-del_T2)/(math.log(del_T1/del_T2))\t\t\t#[degree Celcius]\n", + "print \"The logrithmic Mean temperature difference is\",del_T_lm,\"degree Celcius\"\n", + "\n", + "Q = U*A*del_T_lm\t\t\t#[W]\n", + "print \"The heat transfer rate in the condenser is\",Q,\"W\"\n", + "\n", + "mw = Q/(Cp*(Tc_out-Tc_in))\t\t\t#[kg/s]\n", + "print \"The mass flow rate of the cooling water is\",mw,\"kg/s\"\n", + "\n", + "ms = (Q/(1000*h_fg))\t\t\t#[kg/s]\n", + "print \"The rate of condensation of steam is\",ms,\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.4" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat transfer in the heat exchanger is 300.96 kW\n", + "The outlet temp of geothermal fluid is 125.081206497 degree Celcius\n", + "The logrithmic Mean temperature difference is 91.9713238312 degree Celcius\n", + "The surface area of the heat exchanger is 5.11368631448 m**2\n", + "The length of the tube is 109.0 m\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heating Water in a Counter Flow Heat Exchanger\n", + "\n", + "# Variables\n", + "mw = 1.2\n", + "mgw = 2\t\t\t#Mass Flow rate of water and geothermal fluid[kg/s]\n", + "U = 640\t\t\t#Overall Heat transfer Coefficient[W/m**2.degree Celcius]\n", + "Di = 0.015\t\t\t#[m]\n", + "Tw_out = 80\n", + "Tw_in = 20\t\t\t#Outlet and Inlet temp of water[degree Celcius]\n", + "Tgw_in = 160\t\t\t#Inlet temp of geothermal fluid[degree Celcius]\n", + "Cp_w = 4.18\n", + "Cp_gw = 4.31\t\t\t#Specific Heats of water and geothermal fluid[kJ/kg.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "Q = mw*Cp_w*(Tw_out-Tw_in)\t\t\t#[kW]\n", + "print \"The rate of heat transfer in the heat exchanger is\",Q,\"kW\"\n", + "\n", + "Tgw_out = (Tgw_in-(math.ceil(Q)/(mgw*Cp_gw)))\t\t\t#[degree Celcius]\n", + "print \"The outlet temp of geothermal fluid is\",Tgw_out,\"degree Celcius\"\n", + "\n", + "del_T1 = Tgw_in-Tw_out\t\t\t#[degree Celcius]\n", + "del_T2 = Tgw_out-Tw_in\t\t\t#[degree Celcius]\n", + "del_T_lm = (del_T1-del_T2)/(math.log(del_T1/del_T2))\t\t\t#[degree Celcius]\n", + "print \"The logrithmic Mean temperature difference is\",del_T_lm,\"degree Celcius\"\n", + "\n", + "As = 1000*math.ceil(Q)/(U*del_T_lm)\t\t\t#[m**2]\n", + "print \"The surface area of the heat exchanger is\",As,\"m**2\"\n", + "\n", + "L = As/(math.pi*Di)\t\t\t#[m]\n", + "print \"The length of the tube is\",round(L),\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.5" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The log mean temperature difference for the counter flow arrangement is 24.6630346238 degree Celcius\n", + "In case of no fouling, the over all heat transfer coefficient is 21.6216216216 W/m**2.degree Celcius\n", + "And the rate of heat transfer is 1829.39415267 W\n", + "When there is fouling on one of the surfaces, the overall heat transfer coefficient is 21.3447171825 W/m**2.degree Celcius\n", + "And the rate of heat transfer is 1806.0 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heating of Glycerine in a Multipass Heat Exchanger\n", + "\n", + "# Variables\n", + "#A 2,4 shell and tube heat exchanger\n", + "D = 0.02\t \t\t#Diameter[m]\n", + "L = 60.\t\t \t#Length of tube[m]\n", + "Th_in = 80.\n", + "Th_out = 40.\n", + "Tc_in = 20.\n", + "Tc_out = 50.\t\t\t#Inlet and Outlet temperatures water and glycerine[degree Celcius]\n", + "hi = 160.\n", + "ho = 25. \t\t\t#Convective Heat transfer coefficients on both side of tube[W/m**2.degree Celcius]\n", + "Rf = 0.0006\t\t\t#Fouling Resismath.tance[m**2.degree Celcius/W]\n", + "\n", + "# Calculations and Results\n", + "As = math.pi*D*L \t\t\t#[m**2]\n", + "del_T1 = Th_in-Tc_out\t\t\t#[degree Celcius]\n", + "del_T2 = Th_out-Tc_in\t\t\t#[degree Celcius]\n", + "del_T_lm = (del_T1-del_T2)/math.log(del_T1/del_T2)\t\t\t#[degree Celcius]\n", + "print \"The log mean temperature difference for the counter flow arrangement is\",del_T_lm,\"degree Celcius\"\n", + "F = 0.91\t\t\t#Correction Factor\n", + "#(a)\n", + "Ua = 1/((1/hi)+(1/ho))\t\t\t#[W/m**2.degree Celcius]\n", + "print \"In case of no fouling, the over all heat transfer coefficient is\",Ua,\"W/m**2.degree Celcius\"\n", + "\n", + "Qa = Ua*As*F*del_T_lm\t\t\t#[W]\n", + "print \"And the rate of heat transfer is\",Qa,\"W\"\n", + "\n", + "#(b)\n", + "Ub = 1/((1/hi)+(1/ho)+(Rf))\t\t\t#[W/m**2.degree Celcius\n", + "print \"When there is fouling on one of the surfaces, the overall heat transfer coefficient is\",Ub,\"W/m**2.degree Celcius\"\n", + "\n", + "Qb = Ub*As*F*del_T_lm \t\t\t#[W]\n", + "print \"And the rate of heat transfer is\",round(Qb),\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.6" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat transfer in the radiator from the hot water to the air is 62925.0 W\n", + "The log mean temperature difference for the counter flow arrangement is 47.4561079051 degree Celcius\n", + "the overall heat transfer coefficient is 3347.0 W/m**2.degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling of Water in an Automotive Radiator\n", + "\n", + "# Variables\n", + "m = 0.6\t\t\t#Mass Flow rate of water[kg/s]\n", + "Th_in = 90.\n", + "Th_out = 65.\n", + "Tc_in = 20.\n", + "Tc_out = 40.\t\t\t#[degree Celcius]\n", + "Di = 0.005\t\t\t#[m]\n", + "L = 0.65\t\t\t#[m]\n", + "n = 40.\t \t\t#No of tubes\n", + "Cp = 4195.\t\t\t#[J/kg.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "Q = m*Cp*(Th_in-Th_out)\t\t\t#[W]\n", + "print \"The rate of heat transfer in the radiator from the hot water to the air is\",Q,\"W\"\n", + "\n", + "Ai = n*math.pi*Di*L\t\t \t#[m**2]\n", + "del_T1 = Th_in-Tc_out\t\t\t#[degree Celcius]\n", + "del_T2 = Th_out-Tc_in\t\t\t#[degree Celcius]\n", + "del_T_lm = (del_T1-del_T2)/math.log(del_T1/del_T2)\t\t\t#[degree Celcius]\n", + "print \"The log mean temperature difference for the counter flow arrangement is\",del_T_lm,\"degree Celcius\"\n", + "\n", + "F = 0.97\t \t\t#Correction Factor for this situation\n", + "Ui = Q/(Ai*F*del_T_lm)\t\t\t#[W/m**2.degree Celcius]\n", + "print \"the overall heat transfer coefficient is\",round(Ui),\"W/m**2.degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.8" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum heat transfer rate is 702.24 kW\n", + "The effectiveness of the heat exchanger is 0.428571428571\n", + "The NTU of this counter flow heat exchanger is 0.652362199516\n", + "The heat transfer surface area is 5.11288873871 m**2\n", + "The length of the tube is 108.0 m\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Using the Effectiveness- NTU Method\n", + "\n", + "# Variables\n", + "mc = 1.2\n", + "mh = 2 \t \t\t#Mass Flow rate of water and geothermal fluid[kg/s]\n", + "U = 640\t \t \t#Overall Heat transfer Coefficient[W/m**2.degree Celcius]\n", + "Di = 0.015\t\t\t #[m]\n", + "Tc_out = 80\n", + "Tc_in = 20\t \t\t#Outlet and Inlet temp of water[degree Celcius]\n", + "Th_in = 160\t\t \t#Inlet temp of geothermal fluid[degree Celcius]\n", + "Cp_c = 4.18\n", + "Cp_h = 4.31\t\t\t #Specific Heats of water and geothermal fluid[kJ/kg.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "Ch = mh*Cp_h\t\t\t#[kW/degree Celcius]\n", + "Cc = mc*Cp_c\t\t\t#[kW/degree Celcius]\n", + "if(Ch>Cc):\n", + " Cmin = Cc;\n", + " c = Cmin/Ch;\n", + "else:\n", + " Cmin = Ch;\n", + " c = Cmin/Cc;\n", + "\n", + "Q_max = Cmin*(Th_in-Tc_in)\t\t\t#[kW]\n", + "print \"The maximum heat transfer rate is\",Q_max,\"kW\"\n", + "\n", + "Q_ac = mc*Cp_c*(Tc_out-Tc_in)\t\t\t#[kW]\n", + "e = Q_ac/Q_max;\n", + "print \"The effectiveness of the heat exchanger is\",e\n", + "\n", + "NTU = (1/(c-1))*math.log((e-1)/(e*c-1));\n", + "print \"The NTU of this counter flow heat exchanger is\",NTU\n", + "\n", + "As = NTU*Cmin*1000/U\t\t\t#[m**2]\n", + "print \"The heat transfer surface area is\",As,\"m**2\"\n", + "\n", + "L = As/(math.pi*Di)\t\t\t#[m]\n", + "print \"The length of the tube is\",round(L),\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.9" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum heat transfer rate is 83.07 kW\n", + "Heat transfer Surface Area is 1.75929188601 m**2\n", + "The NTU of this heat exchanger is 853.490586327\n", + "The temperature of cooling water will rise fromdegree Celcius 20 degree Celcius to 66.7020334928\n", + "as it cools the hot oil from 150 degree Celcius to 88.9 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling Hot Oil by Water in Multipass Heat Exchanger\n", + "\n", + "# Variables\n", + "Cp_c = 4.18\n", + "Cp_h = 2.13\t\t\t#Specific Heats of water and oil[kJ/kg]\n", + "mc = 0.2\n", + "mh = 0.3\t\t\t#Mass Flow rate of oil and water [kg/s]\n", + "Th_in = 150\n", + "Tc_in = 20\t\t\t#[degree Celcius]\n", + "n = 8 \t\t\t#No of tubes\n", + "D = 0.014\t\t\t#[m]\n", + "L = 5\t \t\t#[m]\n", + "U = 310\t\t \t#Overall Heat transfer Coefficient[W/m**2.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "Ch = mh*Cp_h\t\t\t#[kW/degree Celcius]\n", + "Cc = mc*Cp_c\t\t\t#[kW/degree Celcius]\n", + "if(Ch>Cc):\n", + " Cmin = Cc;\n", + " c = Cmin/Ch;\n", + "else:\n", + " Cmin = Ch;\n", + " c = Cmin/Cc;\n", + "\n", + "Q_max = Cmin*(Th_in-Tc_in)\t\t\t#[kW]\n", + "print \"The maximum heat transfer rate is\",Q_max,\"kW\"\n", + "\n", + "As = n*math.pi*D*L\t\t\t#[m**2]\n", + "print \"Heat transfer Surface Area is\",As,\"m**2\"\n", + "\n", + "NTU = U*As/Cmin;\n", + "print \"The NTU of this heat exchanger is\",NTU\n", + "\n", + "e = 0.47\t\t\t#Determined from fig 11.26(c)umath.sing value of NTU and c\n", + "Q = e*Q_max\t\t\t#[kW]\n", + "Tc_out = Tc_in+(Q/Cc)\t\t\t#[degree Celcius]\n", + "Th_out = Th_in-(Q/Ch)\t\t\t#[degree Celcius]\n", + "print \"The temperature of cooling water will rise from\"\"degree Celcius\",Tc_in,\"degree Celcius\",\"to\",Tc_out\n", + "print \"as it cools the hot oil from\",Th_in,\"degree Celcius\",\"to\",Th_out,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.10" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximun Heat recover is 67.925 kJ/kg.degree Celcius\n", + "The energy saved during an entire year will be 1606562100.0 kJ/year\n", + "Fuel savings will be 19035.0959716 therms/year\n", + "The amount of money saved is $ 20938.6055687 per year\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Installing a Heat Exchanger to Save Energy and Money\n", + "\n", + "# Variables\n", + "Cp = 4.18\t \t\t#[kJ/kg.degree Celcius]\n", + "Th_in = 80\n", + "Tc_in = 15\t\t \t#Inlet temperatures of hot and cold water[degree Celcius]\n", + "m = 15./60\t\t\t #[kg/s]\n", + "e = 0.75\t\t\t #Effectiveness\n", + "t = 24. * 365\t\t\t#Operating Hours[hours/year]\n", + "neta = 0.8\t \t\t#Eficiency\n", + "cost = 1.10 \t\t#[$/therm]\n", + "\n", + "# Calculations and Results\n", + "Q_max = m*Cp*(Th_in-Tc_in)\t\t\t#[kJ/kg.degree Celcius]\n", + "print \"Maximun Heat recover is\",Q_max,\"kJ/kg.degree Celcius\"\n", + "\n", + "Q = e*Q_max\t\t\t #[kJ/s]\n", + "E_saved = Q*t*3600\t\t\t#[kJ/year]\n", + "print \"The energy saved during an entire year will be\",E_saved,\"kJ/year\"\n", + "\n", + "F_saved = (E_saved/neta)*(1./105500)\t\t\t#[therms]\n", + "print \"Fuel savings will be\",F_saved,\"therms/year\"\n", + "\n", + "M_saved = F_saved*cost\t\t\t#[$/year]\n", + "print \"The amount of money saved is $\",M_saved,\"per year\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch12.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch12.ipynb new file mode 100644 index 00000000..64601ab9 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch12.ipynb @@ -0,0 +1,358 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 12 : Fundamentals of Thermal Radiation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The ball emits 23.22432 kJ of energy in the form of energy in the form of electromagnetic radiation per second per m**2\n", + "The total Surface area of the ball is 0.125663706144 m**2\n", + "The total amount of radiation energy emitted from the entire ball is 875.536237159 kJ\n", + "The spectral blackbody emissive power 3846.0 W/m**2.micrometer\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Emission from a Black Ball\n", + "\n", + "# Variables\n", + "T = 800 \t\t \t#Temperature of suspended ball[K]\n", + "D = 0.2\t\t \t#Diameter[m]\n", + "C1 = 3.74177*10**8\t\t\t#[(micrometer**4)/m**2]\n", + "C2 = 1.43878*10**4\t\t\t#[micrometer.K]\n", + "lambda_ = 3\t\t \t#[micrometer]\n", + "\n", + "# Calculations and Results\n", + "Eb = (5.67*10**(-8))*(T**4)\t\t\t#[W/m**2]\n", + "print \"The ball emits\",Eb/1000,\"kJ\",\"of energy in the form of energy in the form of electromagnetic radiation per second per m**2\"\n", + "\n", + "As = math.pi*(D**2)\t\t\t#[m**2]\n", + "print \"The total Surface area of the ball is\",As,\"m**2\"\n", + "\n", + "del_t = 5*60. \t\t\t#[seconds]\n", + "Q_rad = Eb*As*del_t\t\t\t#[J]\n", + "print \"The total amount of radiation energy emitted from the entire ball is\",Q_rad/1000,\"kJ\"\n", + "\n", + "#Solution (c)\n", + "Eb_lambda = C1/((lambda_**5)*((math.exp(C2/(lambda_*T)))-1))\t\t\t#[W/m**2.micrometer]\n", + "print \"The spectral blackbody emissive power\",round(Eb_lambda),\"W/m**2.micrometer\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fraction of radiation emitted between the two given wavelengths is 0.052714\n", + "The wavelength at which the emission of radiation from the filament peaks is 1.15912 micron\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Emission of Radiation from a Lightbulb\n", + "\n", + "# Variables\n", + "T = 2500 \t\t\t#Temp of the filament[K]\n", + "lambda1 = 0.4\n", + "lambda2 = 0.76\t\t\t#Visible ranfe[micrometer]\n", + "f1 = 0.000321\n", + "f2 = 0.053035\t\t\t#The black body radiation functions corresponding to lamda1*T and lambda2*T\n", + "\n", + "# Calculations and Results\n", + "f3 = f2-f1;\n", + "print \"Fraction of radiation emitted between the two given wavelengths is\",f3\n", + "lambda_max = 2897.8/T\t\t\t#[micrometer]\n", + "print \"The wavelength at which the emission of radiation from the filament peaks is\",lambda_max,\"micron\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.3" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The solid angle subtended by a2 when viewed from A1 is 0.000680928393884 sr\n", + "The Intensity of radiation emitted by A1 is 2339.04290284 W/m**2.sr\n", + "The rate of radiation energy emitted by A1 in the direction of 0.959931088597 radians through the solid angle 0.000680928393884 Steradian is 0.913647447646 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Incident on a small surface\n", + "\n", + "# Variables\n", + "A1 = 3**10.**(-4)\t\t\t#[m**2]\n", + "T1 = 600.\t\t\t #[k]\n", + "A2 = 5*10.**(-4)\t\t\t#[m**2]\n", + "theta1 = math.pi*55./180\n", + "theta2 = math.pi*40./180\t\t\t#[Radian]\n", + "r = 0.75\t\t\t #[m]\n", + "\n", + "# Calculations and Results\n", + "w_2_1 = (A2*math.cos(theta2))/(r**2)\t\t\t#[Steradian]\n", + "print \"The solid angle subtended by a2 when viewed from A1 is\",w_2_1,\"sr\"\n", + "\n", + "I1 = (5.67*10**(-8))*(T1**4)/(math.pi)\t\t\t#[W/m**2.sr]\n", + "print \"The Intensity of radiation emitted by A1 is\",I1,\"W/m**2.sr\"\n", + "\n", + "Q1_2 = I1*(A1*math.cos(theta1))*w_2_1\t\t\t#[W]\n", + "print \"The rate of radiation energy emitted by A1 in the direction of\"\\\n", + ",theta1,\"radians\",\"through the solid angle\",w_2_1,\"Steradian\",\"is \",Q1_2,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.4" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average emissivity of the surface is 0.5206042\n", + "The Emissive Power of the surface is 12090.6785341 W/m**2\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Emissivity of a surface and emissive Power\n", + "\n", + "# Variables\n", + "e1 = 0.3\t\t\t#For 0< = lambda < = 3micron \n", + "e2 = 0.8\t\t\t#3micron< = lambda< = 7micron\n", + "e3 = 0.1\t\t\t#7micron< = lamda<infinity\n", + "lambda1 = 3\n", + "lambda2 = 7\t\t\t#[micron]\n", + "T = 800 \t\t\t#[K]\n", + "\n", + "# Calculations and Results\n", + "p = lambda1*T\t\t\t#[micron.K]\n", + "q = lambda2*T\t\t\t#[micron.K]\n", + "#Hence blackbody radiation functions are\n", + "f1 = 0.140256;\n", + "f2 = 0.701046;\n", + "f0_1 = f1-0;\n", + "f2_inf = 1-f2;\n", + "e_T = e1*f1+e2*(f2-f1)+e3*(1-f2);\n", + "print \"Average emissivity of the surface is\",e_T\n", + "\n", + "E = e_T*(5.67*10**(-8))*(T**4)\t\t\t#[W/m**2]\n", + "print \"The Emissive Power of the surface is\",E,\"W/m**2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.5" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) The net radiation heat transfer is 306.0 W/m**2\n", + "The net radiation heat transfer is 34.0 W/m**2\n", + "The net radiation heat transfer is 575.0 W/m**2\n", + "The net radiation heat transfer is -234.0 W/m**2\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Selective Absorber and Reflective Surfaces\n", + "\n", + "# Variables\n", + "G_D = 400\n", + "G_d = 300\t\t\t#Direct and diffuse components of solar radiation[W/m**2]\n", + "Ts = 320\n", + "T_sky = 260\t\t\t#[K]\n", + "theta = 20*math.pi/180\n", + "\n", + "# Calculations and Results\n", + "G_solar = (G_D*math.cos(theta))+G_d\n", + "#(a)\n", + "ab_a = 0.9\n", + "e_a = 0.9\t\t\t#Grey absorber surface\n", + "q_net_rad_a = ab_a*G_solar+e_a*(5.67*10**(-8))*((T_sky**4)-(Ts**4))\t\t\t#[W/m**2]\n", + "print \"(a) The net radiation heat transfer is\",round(q_net_rad_a),\"W/m**2\"\n", + "\n", + "#(b)\n", + "ab_b = 0.1\n", + "e_b = 0.1\t\t\t#Grey reflector surface\n", + "q_net_rad_b = ab_b*G_solar+e_b*(5.67*10**(-8))*((T_sky**4)-(Ts**4))\t\t\t#[W/m**2]\n", + "print \"The net radiation heat transfer is\",round(q_net_rad_b),\"W/m**2\"\n", + "\n", + "#(c)\n", + "ab_c = 0.9\n", + "e_c = 0.1\t\t\t#Selective Absorber surface\n", + "q_net_rad_c = ab_c*G_solar+e_c*(5.67*10**(-8))*((T_sky**4)-(Ts**4))\t\t\t#[W/m**2]\n", + "print \"The net radiation heat transfer is\",round(q_net_rad_c),\"W/m**2\"\n", + "\n", + "#(d)\n", + "ab_d = 0.1\n", + "e_d = 0.9\t\t\t#Selective reflector surface\n", + "q_net_rad_d = ab_d*G_solar+e_d*(5.67*10**(-8))*((T_sky**4)-(Ts**4))\t\t\t#[W/m**2]\n", + "print \"The net radiation heat transfer is\",round(q_net_rad_d),\"W/m**2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.6" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The decrease in the annual cooling load is 10365.428 kWh/year\n", + "The increase in annual heating load is 11073.842 kWh/year\n", + "The corresponding decrease in cooling math.costs and the increase in heating math.costs are $ 331.693696 and $ 236.136173661 per year\n", + "The net annual math.cost savings due to the reflective film is $ 95.5575223391 per year\n", + "The implementation Cost of installing films is $ 800\n", + "Payback Period is 8.3719207072 years\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Installing Reflective Films on Windows\n", + "\n", + "# Variables\n", + "A_glazing = 40\t\t\t#[m**2]\n", + "SHGC_wof = 0.766\n", + "SHGC_wf = 0.261\t\t\t#[kWh/year]\n", + "unit_c_e = 0.08\t\t\t#[$/kWh]\n", + "unit_c_f = 0.5\t\t\t#[$/therm]\n", + "COP = 2.5\n", + "neta = 0.80;\n", + "\n", + "# Calculations and Results\n", + "#For the months of June,July,August and Sepetember\n", + "Q_summer = 5.31*30+4.31*31+3.93*31+3.28*30\t\t\t#[kWh/year]\n", + "#For the months oct,Nov,Dec,Jan,Feb,Mar,Apr\n", + "Q_winter = 2.80*31+1.84*30+1.54*31+1.86*31+2.66*28+3.43*31+4.00*30\t\t\t#[kWh/year]\n", + "c_l_d = Q_summer*A_glazing*(SHGC_wof-SHGC_wf)\t\t\t#[kWh/year]\n", + "print \"The decrease in the annual cooling load is\",c_l_d,\"kWh/year\"\n", + "\n", + "h_l_i = Q_winter*A_glazing*(SHGC_wof-SHGC_wf)\t\t\t#[kWh/year]\n", + "print \"The increase in annual heating load is\",h_l_i,\"kWh/year\"\n", + "\n", + "d_c_c = c_l_d*(unit_c_e)/COP\t\t\t#[$/year]\n", + "i_h_c = h_l_i*(unit_c_f/29.31)/neta\t\t\t#[$/year]\n", + "print \"The corresponding decrease in cooling math.costs and the increase in heating math.costs are $\"\\\n", + ",d_c_c,\"and $\",i_h_c,\"per year\"\n", + "\n", + "Cost_s = d_c_c-i_h_c\t\t\t#[$/year]\n", + "print \"The net annual math.cost savings due to the reflective film is $\",Cost_s,\"per year\"\n", + "\n", + "I_cost = 20*A_glazing\t\t\t#[$]\n", + "print \"The implementation Cost of installing films is $\",I_cost\n", + "\n", + "pp = I_cost/Cost_s\t\t\t#[years]\n", + "print \"Payback Period is\",pp,\"years\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch13.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch13.ipynb new file mode 100644 index 00000000..c860b568 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch13.ipynb @@ -0,0 +1,743 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 13 : Radiation Heat Transfer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This enclosure involves 4 View Factors\n", + "W need to determine only 1.0 view factor directly\n", + "The Two view Factors\n", + "Since no radiation leaving surface 1 strikes itself..... F11 = 0\n", + "Since all radiation leaving surface 1 strikes surface 2 F12 = 1\n", + "F12 = ((r1/r2)**2)\n", + "F22 = 1-((r1/r2)**2)\n", + "where r1 and r2 are radius of surface 1 and surface 2\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# View Factors Associated with two Concentric Spheres\n", + "\n", + "# Calculations and Results\n", + "#The outer surface of the smaller sphere and inner surface of the larger sphere form a two surface enclosure\n", + "N = 2;\n", + "print \"This enclosure involves \",N**2,\"View Factors\"\n", + "x = (1./2)*N*(N-1)\n", + "print \"W need to determine only\",x,\"view factor directly\"\n", + "F11 = 0\n", + "F12 = 1\n", + "print (\"The Two view Factors\")\n", + "print \"Since no radiation leaving surface 1 strikes itself..... F11 = \",F11\n", + "print \"Since all radiation leaving surface 1 strikes surface 2 F12 = \",F12\n", + "print (\"F12 = ((r1/r2)**2)\")\n", + "print (\"F22 = 1-((r1/r2)**2)\")\n", + "print (\"where r1 and r2 are radius of surface 1 and surface 2\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fraction of the radiation leaving the base cyllinder enclosure that escapes through coaxial ring opening at its top surface is 0.17\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Fraction of Radiation Leaving through an Opening\n", + "\n", + "# Variables\n", + "r1 = 0.1\t\t\t#Radius of enclosure[m]\n", + "L = 0.1 \t\t\t#Length of Enclosure[m]\n", + "r2 = 0.05\n", + "r3 = 0.08\t\t\t#Inner and outer radii of the ring[m]\n", + "\n", + "# Calculations\n", + "#Using Chart in Fig 13.7\n", + "F12 = 0.11;\n", + "F13 = 0.28;\n", + "F1_ring = F13-F12;\n", + "\n", + "# Results\n", + "print \"The fraction of the radiation leaving the base cyllinder enclosure that escapes \\\n", + "through coaxial ring opening at its top surface is\",F1_ring\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.3" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Each side pf the four surfaces of the pyramid recieves 0.25 of total radiation\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# View Factors Associated with a Tetragon\n", + "\n", + "# Variables\n", + "#A pyramid with square base and it's sides being isoceles triangle\n", + "F11 = 0\t\t\t#Since base is a flat surface\n", + "\n", + "# Calculations\n", + "#F12 = F13 = F14 = F15 = x\n", + "x = (1-F11)/4.;\n", + "\n", + "# Results\n", + "print \"Each side pf the four surfaces of the pyramid recieves\",x,\"of total radiation\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.5" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "F13 = 0.190983005625 F14 = 1.20957475555 Therefore from two different methods F12_1 = F12_2 = 0.250296378484\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "\n", + "# Variables\n", + "# The Crossed-Strings Method for View Factors\n", + "a = 12.\n", + "b = 5.\t\t\t#With od long parallel plates[cm]\n", + "c = 6.\t\t\t#Distance between the plates\n", + "L1 = a\n", + "L2 = b\n", + "L3 = c;\n", + "\n", + "# Calculations\n", + "L4 = math.sqrt((7**2)+(6**2));\n", + "L5 = math.sqrt((5**2)+(6**2));\n", + "L6 = math.sqrt((12**2)+(6**2));\n", + "F12_1 = ((L5+L6)-(L3+L4))/(2*L1);\n", + "F13 = (L1+L3-L6)/(2*L1);\n", + "F14 = (L1+L4+L5)/(2*L1);\n", + "F12_2 = 1-F13-F14;\n", + "\n", + "# Results\n", + "print \"F13 = \",F13,\"F14 = \",F14,\"Therefore from two different methods F12_1 = F12_2 = \",F12_1,\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.6" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The net rate of heat transfer from surface1 to surface3 is 394.0 kW\n", + "The net rate of radiation heat transfer from siurface1 to surface2 is -1319.0 kW\n", + "Rhe net radiation heat transfer from the base surface is -925.0 kW\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Heat Transfer in a Black Furnace\n", + "\n", + "# Variables\n", + "F12 = 0.2;\n", + "A = 5.*5\t\t\t#Area of 1 surface of cube[m**2]\n", + "Tb = 800\n", + "Tt = 1500\n", + "Ts = 500\t\t\t#Temperature of base top and the side surfaces of the furbace[K]\n", + "\n", + "# Calculations and Results\n", + "F11 = 0;\n", + "Q11 = 0;\n", + "F13 = 1-F11-F12;\n", + "Q13 = A*F13*(5.67*10**(-8))*((Tb**4)-(Ts**4))\t\t\t#[kW]\n", + "print \"The net rate of heat transfer from surface1 to surface3 is\",round(Q13/1000),\"kW\"\n", + "\n", + "Q12 = A*F12*(5.67*10**(-8))*((Tb**4)-(Tt**4))\t\t\t#[kW]\n", + "print \"The net rate of radiation heat transfer from siurface1 to surface2 is\",round(Q12/1000),\"kW\"\n", + "\n", + "Q1 = Q11+Q12+Q13\t\t\t#[kW]\n", + "print \"Rhe net radiation heat transfer from the base surface is\",round(Q1/1000),\"kW\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.7" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The net heat at the rate of 3625.0 W is transferred from plate 1 to plate 2 by radiation per unit surface area of either plate\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Heat Transfer between Parallel Plates\n", + "\n", + "# Variables\n", + "T1 = 800\n", + "T2 = 500\t\t\t#Temp of parallel plates[K]\n", + "e1 = 0.2\n", + "e2 = 0.7\t\t\t#Emissivities\n", + "\n", + "# Calculations\n", + "q12 = (5.67*10**(-8))*((T1**4)-(T2**4))/((1/e1)+(1/e2)-1);\n", + "\n", + "# Results\n", + "print \"The net heat at the rate of\" \\\n", + ",round(q12),\"W\",\"is transferred from plate 1 to plate 2 by radiation per unit surface area of either plate\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.8" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\n", + "import math \n", + "# Radiation Heat Transfer in Cylindrical Furnace\n", + "\n", + "# Variablesa\n", + "ro = 1\n", + "H = 1\t\t\t#Radius amd height of cylinder[m]\n", + "e1 = 0.8\n", + "e2 = 0.4\t\t\t#Emissivities\n", + "T1 = 700\n", + "T2 = 500\t\t\t#Top and base temperatures of furnace[K]\n", + "T3 = 400\t\t\t#Side durface temperature[K]\n", + "F11 = 0\n", + "F12 = 0.38;\n", + "\n", + "# Calculations and Results\n", + "A1 = math.pi*(ro**2)\t\t\t#[m**2]\n", + "A2 = A1\t\t\t#[m**2]\n", + "A3 = 2*math.pi*ro*H\t\t\t#[m**2]\n", + "F13 = 1-F11-F12;\n", + "F21 = F12\t\t\t#Top and Bottom are symmetric\n", + "F31 = F13*(A1/A3);\n", + "F23 = F13;\n", + "F32 = F31;\n", + "def rad(J):\n", + " i = [0,0,0]\n", + " i[0] = J[0]+(((1-e1)/e1)*((F12*(J[0]-(J[1])))+(F13*((J[0])-(J[2])))))-((T1**4)*(5.67*10**(-8)));\n", + " i[1] = J[1]+(((1-e2)/e2)*((F21*(J[1]-J[0]))+(F23*(J[1]-J[2]))))-((T2**4)*(5.67*10**(-8)));\n", + " i[2] = J[2]-((T3**4)*(5.67*10**(-8)));\n", + "#print (J[2],J[1],J[0])\n", + "#Q1 = A1*((F12*(J[0]-J[1]))+(F13*(J[0]-J[2])))\t\t\t#[kW]\n", + "#Q2 = A2*((F21*(J[1]-J[0]))+(F13*(J[1]-J[2])))\t\t\t#[kW]\n", + "#Q3 = A3*((F31*(J[2]-J[0]))+(F32*(J[2]-J[1])))\t\t\t#[kW]\n", + "#print \"The net rates of radiation heat transfer at the three surfaces are\", \\\n", + "#Q1/1000,Q2/1000,Q3/1000,\"kW\"\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.9" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Heat at the rate of 28.0 kW\n", + "must be supplied to the heated surface per unit lemgth of the duct to maintain steady operation in the furnace\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Heat Transfer in a Triangular Furnace\n", + "\n", + "# Variables\n", + "A1 = 1.\n", + "A2 = 1.\n", + "A3 = 1.\t\t\t#Area of each side[m**2]\n", + "T1 = 600.\n", + "T2 = 1000.\t\t\t#[K]\n", + "e = 0.7;\n", + "F12 = 0.5\n", + "F13 = 0.5\n", + "F23 = 0.5\t\t\t#Symmetry\n", + "\n", + "# Calculations\n", + "Eb1 = 5.67*10**(-8)*(T1**4)\t\t\t#[W/m**2]\n", + "Eb2 = 5.67*10**(-8)*(T2**4)\t\t\t#[W/m**2]\n", + "Q = (Eb2-Eb1)/(((1-e)/(A1*e))+((((A1*F12)+(1/((1/(A1*F13))+(1/(A2*F23))))))**(-1)))\t\t\t#[kW]\n", + "\n", + "# Results\n", + "print \"Heat at the rate of\",round(Q/1000),\"kW\"\n", + "print \"must be supplied to the heated surface per unit lemgth of the duct \\\n", + " to maintain steady operation in the furnace\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.10" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0.3141592653589793, 303)\n", + "The Rayleigh number is 2692193.4403\n", + "The nusselt number is 19.3316907216\n", + "The total rate of heat loss from the glass cover 67.1513072128 W\n", + "The Rayleigh number in this case is 57262.3626799\n", + "The effective thermal conductivity is 0.0786342130794 W/m.degree Celcius\n", + "The rate of heat transfer between the cylinders by convection is 19.9583200961 W\n", + "The radiation rate of heat transfer is 27.6572415779 W\n", + "The total rate of heat loss from the glass cover is 47.6155616741 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Transfer through a Tubular Solar Collector\n", + "\n", + "# Variables\n", + "k = 0.02588\t \t\t#[W/m.degree Celcius]\n", + "Pr1 = 0.7282\n", + "Pr2 = 0.7255\t\t\t#Prandtl no\n", + "nu1 = 1.608*(10**(-5))\n", + "nu2 = 1.702*10**(-5)\t\t\t#[m**2/s]\n", + "T1 = 20\n", + "T2 = 40 \t\t\t#[degree Celcius]\n", + "Tavg = ((T1+T2)/2)+273\t\t\t#[K]\n", + "Do = 0.1\n", + "L = 1\t\t\t #Dimensions of glass tube[m]\n", + "Di = 0.05\t\t\t#Inner diameter of tube[m]\n", + "Q_glass = 30\t\t#Rate of heat transfer from the outer surface of the glass cover[W]\n", + "g = 9.81\t\t\t#[m**2/s]\n", + "eo = 0.9\n", + "ei = 0.95\t\t\t#Emissivity\n", + "\n", + "# Calculations and Results\n", + "Ao = math.pi*Do*L\t\t\t#Heat transfer surface area of the glass cover[m**2]\n", + "print (Ao,Tavg)\n", + "\n", + "Ra_Do = g*Tavg*(T2-T1)*(Do**3)*Pr1/(nu1);\n", + "print \"The Rayleigh number is\",Ra_Do\n", + "\n", + "Nu = ((0.6+((0.387*(Ra_Do**(1./6)))/((1+((0.559/Pr1)**(9./16)))**(8./27))))**2);\n", + "print \"The nusselt number is\",Nu\n", + "\n", + "ho = k*Nu/Do\t\t\t#[W/m**2.degree Celcius]\n", + "Qo_conv = ho*Ao*(T2-T1)\t\t\t#[W]\n", + "Qo_rad = eo*5.67*10**(-8)*Ao*(((T2+273)**4)-((T1+273)**4))\t\t\t#[W]\n", + "Qo_total = Qo_conv+Qo_rad\t\t\t#[W]\n", + "print \"The total rate of heat loss from the glass cover \",Qo_total,\"W\"\n", + "\n", + "Lc = (Do-Di)/2\t\t\t#The characteristic length\n", + "Ai = math.pi*Di*L\t\t\t#[m**2]\n", + "#Assuming \n", + "T_tube = 54\n", + "T_cover = 26\t\t\t#Temperature of tube and glass cover[degree Celcius]\n", + "T_avg = ((T_tube+T_cover)/2)+273\t\t\t#[K]\n", + "Ra_L = g*T_avg*(T_tube-T_cover)*(Lc**3)*Pr2/(nu2);\n", + "print \"The Rayleigh number in this case is\",Ra_L\n", + "\n", + "F_cyl = ((math.log(Do/Di))**4)/((Lc**3)*(((Di**(-3./5))+(Do**(-3./5)))**5));\n", + "k_eff = 0.386*k*((Pr2/(0.861+Pr2))**(1./4))*((F_cyl*Ra_L)**(1./4));\n", + "print \"The effective thermal conductivity is\",k_eff,\"W/m.degree Celcius\"\n", + "\n", + "QL_conv = 2*math.pi*k_eff*(T_tube-T_cover)/(math.log(Do/Di));\n", + "print \"The rate of heat transfer between the cylinders by convection is\",QL_conv,\"W\"\n", + "\n", + "QL_rad = ((5.67*10**(-8))*Ai*(((T_tube+273)**4)-((T_cover+273)**4)))/((1/ei)+(((1-eo)/eo)*(Di/Do)));\n", + "print \"The radiation rate of heat transfer is\",QL_rad,\"W\"\n", + "\n", + "QL_total = QL_conv+QL_rad\t\t\t#[W]\n", + "print \"The total rate of heat loss from the glass cover is\",QL_total,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.11" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Radiation Heat Transfer 806.0 W/m**2\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Shields\n", + "\n", + "# Variables\n", + "e = 0.1\t\t\t#Emissivity of aluminium sheet\n", + "T1 = 800\n", + "T2 = 500\t\t\t#Temperatures of two parallel plates[K]\n", + "e1 = 0.2\n", + "e2 = 0.7\t\t\t#Emissivities of plates\n", + "\n", + "# Calculations\n", + "q12 = ((5.67*10**(-8))*((T1**4)-(T2**4)))/((1/e1)+(1/e2)-1+(1/e)+(1/e)-1)\t\t\t#[W/m**2]\n", + "\n", + "# Results\n", + "print \"Radiation Heat Transfer\",round(q12),\"W/m**2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.12" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The temperature of actual air is 715.0 K\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Effect on Temperature Measurements\n", + "\n", + "# Variables\n", + "Tw = 400\n", + "Tth = 650\t\t\t#Temperature of duct wall and hota air flowing in it[K]\n", + "e = 0.6\t\t\t#emissivity\n", + "h = 80\t\t\t#Heat transfer coefficient[W/m**2.K]\n", + "\n", + "# Calculations\n", + "Tf = Tth+((e*5.67*10**(-8)*((Tth**4)-(Tw**4)))/h)\t\t\t#[K]\n", + "\n", + "# Results\n", + "print \"The temperature of actual air is\",round(Tf),\"K\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.13" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The partial pressures of CO2 and H2O are 0.1 atm and 0.16 atm\n", + "The effectivity of the combustion gases is 0.45\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Effective Emissivity of Combustion Gases\n", + "d = 5\n", + "H = 5 \t\t\t#Diameter and height of cylindrical furnace[m]\n", + "T = 1200\t\t\t#Temp of gases[K]\n", + "P = 2\t \t\t#Pressure[atm]\n", + "yN2 = 0.8\n", + "yH2O = 0.08\n", + "yO2 = 0.07\n", + "yCO2 = 0.05\t\t\t#Volumetric Composition\n", + "\n", + "# Calculations and Results\n", + "Pc = yCO2*P\t\t\t#[atm]\n", + "Pw = yH2O*P\t\t\t#[atm]\n", + "print \"The partial pressures of CO2 and H2O are\",Pc,\"atm\",\"and\",Pw,\"atm\"\n", + "\n", + "L = 0.6*d\t\t\t#[m]\n", + "x = Pc*L\n", + "y = Pw*L\t\t\t#[m.atm]\n", + "ec_1 = 0.16\n", + "ew_1 = 0.23\t\t\t#Emissivity of CO2 and H2O at 1 atm pressure\n", + "Cc = 1.1\n", + "Cw = 1.4\t\t\t#Pressure Correction Factors are\n", + "del_e = 0.048\t\t\t#Emissivity correction factor at T = 1200K\n", + "e_g = Cc*ec_1+Cw*ew_1-del_e;\n", + "print \"The effectivity of the combustion gases is\",e_g\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.14" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The absorptivities of CO2 and H2O are 0.189869351691 and 0.478114089864\n", + "The absorptivity of the combustion gases is 0.640983441555\n", + "the surface area of the cylindrical surface is 118.0 m**2\n", + "The net rate of radiation heat transfer from the combustion gases to walls of the furnace is 5687334.8017 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Radiation Heat Transfer in a Cylindrical Furnace\n", + "\n", + "# Variables\n", + "Ts = 600 \t\t\t#Wall Temperature[K]\n", + "d = 5\n", + "H = 5\t \t\t#Diameter and Height of cylindrical furnace\n", + "Tg = 1200\n", + "eg = 0.45\t\t\t#Average gas temperature and average emissivity of the combustion gases\n", + "Pc = 0.10\n", + "L = 3\n", + "Pw = 0.16\t\t\t#From Previous s\n", + "\n", + "# Calculations and Results\n", + "x = Pc*L*Ts/Tg\t\t\t#[m.atm]\n", + "y = Pw*L*Ts/Tg\t\t\t#[m.atm]\n", + "ec_1 = 0.11\n", + "ew_1 = 0.25\t\t\t#Emissivities of CO2 and H2O corresponding to 600K and 1atm \n", + "Cc = 1.1\n", + "Cw = 1.4\t\t\t#Correction Factors\n", + "a_c = Cc*((Tg/Ts)**(0.65))*(ec_1);\n", + "a_w = Cw*((Tg/Ts)**(0.45))*ew_1;\n", + "print \"The absorptivities of CO2 and H2O are\",a_c,\"and\",a_w\n", + "\n", + "del_a = 0.027;\n", + "a_g = a_c+a_w-del_a;\n", + "print \"The absorptivity of the combustion gases is\",a_g\n", + "\n", + "As = (math.pi*d*H)+(math.pi*(d**2)/2)\t\t\t#[m**2]\n", + "print \"the surface area of the cylindrical surface is\",round(As),\"m**2\"\n", + "\n", + "Q_net = round(As)*(5.67*10**(-8))*((eg*(Tg**4))-(a_g*(Ts**4)));\n", + "print \"The net rate of radiation heat transfer from the combustion gases to walls of the furnace is\", \\\n", + "Q_net,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 13.15" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The sensible heat loss from this person when clothed is 95.2186169919 W\n", + "The ambient temperature now is 26.9196285446 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Effect of Clothing on Thermal Comfort\n", + "\n", + "# Variables\n", + "h_rad = 4.7\n", + "h_conv = 4.0\t\t\t#The radiation and convection heat transfer coefficient[W/m**2.degree Celcius]\n", + "R_clo = 0.6*0.155\t\t\t#Thermal resismath.tance of clothing[m**2.degree Celcius/W]\n", + "T_skin = 33\n", + "T_amb = 22\t\t\t#Skin and Ambient temperature[degree Celcius]\n", + "As = 1.8\t\t\t#Surface area of an average man \n", + "\n", + "# Calculations and Results\n", + "h_comb = h_conv+h_rad\t\t\t#combined heat transfer coefficient[W/m**2.degree Celcius]\n", + "Q_sen_clo = As*(T_skin-T_amb)/(R_clo+(1/h_comb))\t\t\t#[W]\n", + "print \"The sensible heat loss from this person when clothed is\",Q_sen_clo,\"W\"\n", + "\n", + "#On removing the clothes\n", + "#R_clo = 0 Clothing resismath.tance on removing clothes\n", + "#Setting both heat transfer rates equal to determine new ambient air temperature\n", + "T_amb_new = T_skin-(Q_sen_clo*(1/h_comb)/As) #[degree Celcius]\n", + "print \"The ambient temperature now is\",T_amb_new,\"degree Celcius\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch14.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch14.ipynb new file mode 100644 index 00000000..2a00c846 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch14.ipynb @@ -0,0 +1,787 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 14 : Mass Transfer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The molar mass of air is 28.955 kg/kmol\n", + "The mass fractions of N2, O2 and Ar in dry standard atmosphere are 75.5240891038 percent , 23.0979105509 percent and 1.37800034536 percent respectively\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Determining Mass Fractions from Mole Fractions\n", + "\n", + "# Variables\n", + "yN2 = 0.781\n", + "yO2 = 0.209\n", + "yAr = 0.01\t\t\t#Mole fractions\n", + "M_N2 = 28\n", + "M_O2 = 32\n", + "M_Ar = 39.9\t\t\t#Molar Masses \n", + "\n", + "# Calculations and Results\n", + "M_air = yN2*M_N2+yO2*M_O2+yAr*M_Ar\t\t\t#[kg/kmol]\n", + "print \"The molar mass of air is\",M_air,\"kg/kmol\"\n", + "\n", + "w_N2 = yN2*M_N2/M_air;\n", + "w_O2 = yO2*M_O2/M_air;\n", + "w_Ar = yAr*M_Ar/M_air;\n", + "print \"The mass fractions of N2, O2 and Ar in dry standard atmosphere are\" \\\n", + ",100*w_N2,\"percent\",\",\",100*w_O2,\"percent\",\"and\",100*w_Ar,\"percent\",\"respectively\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The mole fraction of water vapor in the air at the surface of lake is 0.0185326086957\n", + "Mole fraction of liquid water in lake 0.981467391304\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Mole Fraction of Water Vapor at the surface of a Lake\n", + "\n", + "# Variables\n", + "P_vapor = 1.705\t\t\t#Partial Pressure of water vapor in the air at the lake surface is saturation pressure of watre at 15 degree Celcius[kPa]\n", + "T_lake = 15.\t\t\t#[degree Celcius]\n", + "P = 92. \t\t \t#Atmospheric pressure at lake level [kPa]\n", + "\n", + "# Calculations and Results\n", + "y_vapor = P_vapor/P;\n", + "print \"The mole fraction of water vapor in the air at the surface of lake is\",y_vapor\n", + "\n", + "y_water = 1-y_vapor\t\t\t#Since water contains dissolved air\n", + "print \"Mole fraction of liquid water in lake\",y_water\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The partial pressure of dry air is 0.9004 bar\n", + "The mole fraction of air in the water is 1.45225806452e-05\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Mole Fraction of Dissolved Air in Water\n", + "\n", + "# Variables\n", + "P_vapor = 1.96\t\t\t#The partial presure of water vapor in the air at the lake surface is the saturation pressure of water at 17 degree Celcius\n", + "H = 62000. \t\t\t#Henry's consmath.tant for air dissolved in water at 290K[bar]\n", + "P = 92. \t \t\t#Atmospheric Pressure at lake level[kPa]\n", + "\n", + "# Calculations and Results\n", + "P_dryair = P-P_vapor\t\t\t#[kPa]\n", + "print \"The partial pressure of dry air is\",P_dryair/100,\"bar\"\n", + "\n", + "y_dryair = (P_dryair/100)/H;\n", + "print \"The mole fraction of air in the water is\",y_dryair\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.4" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The molar density of hydrogen in the nickel at the interface is 0.02703 kmol/m**3\n", + "Mass Density of hydrogen is 0.05406 kg/m**3\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Diffusion of Hydrogen Gas into a Nickel Plate\n", + "\n", + "# Variables\n", + "s = 0.00901\t\t \t#Solubility of hydrogen in nickel at 358K[kmol/m**3.bar]\n", + "P_H2 = 300./100\t\t\t#[bar]\n", + "M_H2 = 2\t\t\t #Molar Mass of hydrogen[kg/kmol]\n", + "\n", + "# Calculations and Results\n", + "C_H2 = s*P_H2\t\t\t#[kmol/m**3]\n", + "print \"The molar density of hydrogen in the nickel at the interface is\",C_H2,\"kmol/m**3\"\n", + "\n", + "rho_H2 = C_H2*M_H2\t\t\t#[kg/m**3]\n", + "print \"Mass Density of hydrogen is\",rho_H2,\"kg/m**3\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.5" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The molar flow rate of hydrogen through the shell by diffusion is 1.22796563024e-10 kmol/s\n", + "The mass flow rate of hydrogen is 2.45593126048e-10 kg/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Diffusion of Hydrogen through a Spherical Container\n", + "\n", + "# Variables\n", + "CA1 = 0.087\n", + "CA2 = 0 \t\t\t#Molar concentration of hydrogen in the nickel at inner and outer surfaces[kmol/m**3]\n", + "r2 = 4.8/2\t\t\t#Outer radius[m]\n", + "t = 0.06\t\t\t#Thickness of shell[m]\n", + "D_AB = 1.2*(10**(-12))\t\t\t#Diffusion coefficient for hydrogen in the nickel at the specified temperature is[m**2/s]\n", + "M_H2 = 2\t\t\t#Molar Mass of H2[kg/kmol]\n", + "\n", + "# Calculations and Results\n", + "r1 = ((2*r2)-(2*t))/2\t\t\t#Inner radius[m]\n", + "N_diff = 4*math.pi*r1*r2*D_AB*(CA1-CA2)/(r2-r1);\n", + "print \"The molar flow rate of hydrogen through the shell by diffusion is\",N_diff,\"kmol/s\"\n", + "\n", + "m_diff = M_H2*N_diff;\n", + "print \"The mass flow rate of hydrogen is\",m_diff,\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.6" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat transfer through unit area of wall is 11.8032786885 W\n", + "The temperature of outer sheathing interface is -11.2786885246 degree Celcius\n", + "The vapor pressure at the indoor and the outdoor is 1404.0 Pa and 106.0 Pa\n", + "The rate of moisture flow through the interior and exterior parts of the wall is 94354.8387097 ng/s and 3911.58536585 ng/s\n", + "The moisture is freezing in the insulation at the rate of 90443.2533438 ng/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Condensation and Freezing of Moisture in Walls\n", + "\n", + "Ti = 20\n", + "To = -16\t\t\t#Indoor and outdoor temperatures[degree Celcius]\n", + "R_wall = 3.05\t\t\t#Total thermal resismath.tance of the wall[m**2.degree Celcius/W]\n", + "A = 1\t\t\t#Heat transfer area[m**2]\n", + "R_ext = 0.40\t\t\t#The thermal resismath.tance of the exterior part of the wall beyond the insulation[m**2.degree Celcius/W]\n", + "Rv_int = 0.012+0.0004\n", + "Rv_ext = 0.0138+0.019\t\t\t#Indoor and outdoor vapor resismath.tances[Pa.m**2.s/ng]\n", + "phi1 = 0.6\n", + "phi2 = 0.7\t\t\t#Indoor and outdoor Relative Humidity \n", + "Psat1 = 2340\n", + "Psat2 = 151\t\t\t#Indoor and outdoor saturation pressures[Pa]\n", + "\n", + "# Calculations and Results\n", + "Q_wall = A*(Ti-To)/R_wall\t\t\t#[W]\n", + "print \"The rate of heat transfer through unit area of wall is\",Q_wall,\"W\"\n", + "\n", + "T_I = To+(Q_wall*R_ext);\n", + "print \"The temperature of outer sheathing interface is\",T_I,\"degree Celcius\"\n", + "\n", + "P = 234\t\t\t#The saturation pressure of water at temp T_I[Pa]\n", + "Pv1 = phi1*Psat1;\n", + "Pv2 = phi2*Psat2;\n", + "print \"The vapor pressure at the indoor and the outdoor is\" \\\n", + ",Pv1,\"Pa\",\"and\",round(Pv2),\"Pa\"\n", + "\n", + "mv_int = A*(Pv1-P)/Rv_int;\n", + "mv_ext = A*(P-Pv2)/Rv_ext;\n", + "print \"The rate of moisture flow through the interior and exterior parts of the wall is\" \\\n", + ",mv_int,\"ng/s\",\"and\",mv_ext,\"ng/s\"\n", + "\n", + "mv_freezing = mv_int-mv_ext;\n", + "print \"The moisture is freezing in the insulation at the rate of\",mv_freezing,\"ng/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.7" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken to reach desired level of hardening is 4505.0 seconds\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Hardening of Steel by the diffusion of carbon\n", + "\n", + "# Variables\n", + "D_AB = 4.8*10**(-10)\t\t\t#Diffusion coefficient of carbon in steel at the furnace temperature [m**2/s]\n", + "wA_i = 0.0015\t\t \t#Initial carbon concentration\n", + "wA_e = 0.012\t\t \t#Equilibrium concentration of carbon\n", + "wA_t = 0.01 \t \t \t#Concentration of carbon after desired time\n", + "x = 0.0005 \t\t\t #Diffusion dismath.tance[m]\n", + "\n", + "# Calculations\n", + "a = (wA_t-wA_i)/(wA_e-wA_i);\n", + "#Tthe argument whose complimentary error function is a = 0.81 is 0.17\n", + "t = (x**2)/(4*D_AB*(0.17**2))\t\t\t#[seconds]\n", + "\n", + "# Results\n", + "print \"Time taken to reach desired level of hardening is\",round(t),\"seconds\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.8" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The molar flow rate of Helium is 3.85349046335e-12 kmol/s\n", + "Mass flow rate of helium is 1.54139618534e-11 kg/s\n", + "The flow rate of air into the pipeline is -1.11751223437e-10 kg/s\n", + "Mass fraction of air in the helium pipeline is 1.16 which is negligible\n", + "The average flow velocity at the bottom of the tube is -2.99695101963e-05 m/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Venting of Helium into the Atmosphere by Diffusion\n", + "\n", + "# Variables\n", + "D_AB = 7.2*10**(-5)\t\t\t#Diffusion coefficient of air in helium[m**2/s]\n", + "M_He = 4\n", + "M_air = 29\t\t\t#Molar masses of helium and air[kg/kmol]\n", + "D = 0.005 \t\t\t#Internal diameter of tube[m]\n", + "L = 15\t\t \t#Length of tube[m]\n", + "R1 = 8.314 \t \t\t#Universal Gas Consmath.tant[kPa.m**3/kmol.K]\n", + "R2 = 2.0769\t\t \t #Universal Gas Consmath.tant[kPa.m**3/kg.K]\n", + "T = 298\t\t\t #/Ambient temperature[K]\n", + "\n", + "# Calculations and Results\n", + "A = math.pi*(D**2)/4\t\t\t#Flow area[m**2]\n", + "P_He0 = 1\n", + "P_HeL = 0\t\t\t#Pressure of helium at x = 0 i.e. bottom of tube and at x = L i.e. at the top of the tube [atm]\n", + "N_He = D_AB*A*(P_He0-P_HeL)*(101.3)/(R1*T*L);\n", + "print \"The molar flow rate of Helium is\",N_He,\"kmol/s\"\n", + "\n", + "m_He = N_He*M_He;\n", + "print \"Mass flow rate of helium is\",m_He,\"kg/s\"\n", + "\n", + "N_air = -N_He\t\t\t#Equimolar counter diffusion process\n", + "m_air = N_air*M_air;\n", + "print \"The flow rate of air into the pipeline is\",m_air,\"kg/s\"\n", + "\n", + "w_air = m_air/(m_air+m_He);\n", + "print \"Mass fraction of air in the helium pipeline is\",w_air,\"which is negligible\"\n", + "\n", + "m_net = m_He+m_air\t\t\t#[kg/s]\n", + "#Taking density of mixture at x = 0 to be the density of helium as the \n", + "# mass fraction of air at the bottom is very small\n", + "rho = P_He0*101.325/(R2*T)\t\t\t#[kg/m**3]\n", + "V = m_net/(rho*A)\t\t\t#[m/s]\n", + "print \"The average flow velocity at the bottom of the tube is\",V,\"m/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.9" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The mole fraction of water vapor (species A) at the Interface is 0.0280239520958\n", + "The cross sectional area of tube 0.000706858347058 m**2\n", + "The molar flow rate of vapor is 5.27263374486e-11 kmol/s\n", + "Binary diffusion coefficient of water vapor in air at 20 degree Celcius and 83.5kPa 3.0623821858e-05 m**2/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Measuring Diffusion Coefficient by the Stefan tube\n", + "\n", + "# Variables\n", + "D = 0.03\t\t\t#Diameter of tube[m]\n", + "P = 83.5\t\t\t#Atmospheric Pressure at an elevation of 1600m[kPa]\n", + "T = 20+273\t\t\t#Ambient temperature[K]\n", + "R = 8.314\t\t\t#Universal Gas Consmath.tant[kPa.m**3/kmol.K]\n", + "P_vapor0 = 2.34\t\t\t#The saturation pressure of water at 20 degree Celcius[kPa]\n", + "M_vapor = 18\t\t\t#Molar mass of water vapor[kg/kmol]\n", + "x = 0.4\t\t\t#Dismath.tance from water surface to the open end of the tube[m]\n", + "\n", + "# Calculations and Results\n", + "#water vapor is species A\n", + "yA0 = P_vapor0/P;\n", + "print \"The mole fraction of water vapor (species A) at the Interface is\",yA0\n", + "yAL = 0 \t\t\t#mole fraction of water vapor on the top of the tube\n", + "C = P/(R*T)\t\t\t#[kmol/m**3]\n", + "A = math.pi*(D**2)/4\t\t\t#[m**2]\n", + "print \"The cross sectional area of tube\",A,\"m**2\"\n", + "\n", + "m_vapor = (1.23*10**(-3))/(15*24*3600)\t\t\t#Rate of evaporation [kg/s]\n", + "N_vapor = m_vapor/M_vapor;\n", + "print \"The molar flow rate of vapor is\",N_vapor,\"kmol/s\"\n", + "\n", + "D_AB = (N_vapor/A)*(x/C)/math.log((1-yAL)/(1-yA0));\n", + "print \"Binary diffusion coefficient of water vapor in air at 20 degree Celcius and 83.5kPa\" \\\n", + ",D_AB,\"m**2/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.10" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The mass diffusivity of water vapor in air at 300K is 2.53767993801e-05 m**2/s\n", + "The Reynolds number for internal flow is 1139.0\n", + "laminar Flow\n", + "The mass transfer coefficient is 0.00619193904874 m/s\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Mass Convection inside a Circular Pipe\n", + "\n", + "# Variables\n", + "D = 0.015\t\t\t#Inner Diameter[m]\n", + "T = 300\t\t\t#Temp of air[K]\n", + "P = 1\t\t\t#Pressure of air[atm]\n", + "v = 1.2\t\t\t#Average velocity of air[m/s]\n", + "nu = 1.58*10**(-5)\t\t\t#Vismath.cosity[m**2/s]\n", + "\n", + "# Calculations and Results\n", + "#Water is Species Aand air is species B\n", + "D_AB = (1.87*10**(-10))*(T**2.072)/P\t\t\t#[m**2/s]\n", + "print \"The mass diffusivity of water vapor in air at 300K is\",D_AB,\"m**2/s\"\n", + "Re = v*D/nu;\n", + "print \"The Reynolds number for internal flow is\",round(Re)\n", + "if(Re<2300):\n", + " print (\"laminar Flow\")\n", + " Sh = 3.66\t\t\t#Sherwood number equals to Nusselt number\n", + " h_mass = Sh*D_AB/D\t\t\t#[m/s]\n", + " print \"The mass transfer coefficient is\",h_mass,\"m/s\"\n", + "else:\n", + " print (\"Flow is not laminar\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.11" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mass fraction at the surface is 0.000479916962318\n", + "The rate of evaporation of napthalene is 1.33333333333e-05 kg/s\n", + "The mass convection coefficient is 0.0782167343205 m/s\n", + "The average heat transfer coefficient is 93.0 W/m**2.degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Anamath.logy between Heat and Mass Transfer\n", + "\n", + "# Variables\n", + "#Napthalene is species A and air is species B\n", + "M_A = 128.2\t\t\t#Molar Mass of A[kg/kmol]\n", + "M_air = 29.\t\t\t#Molar mass of B[kg/kmol]\n", + "P = 101325.\t\t\t#Pressure of Air[Pa]\n", + "T = 298.\t\t\t#Temperature[K]\n", + "D_AB = 0.61*10**(-5)\t\t\t#[m**2/s]\n", + "v = 2.\t\t\t#Stream velocity[m/s]\n", + "rho = 1.184\t\t\t#Density of air[kg/m**3]\n", + "Cp = 1007.\t\t\t#Specific Heat[J/kg.K]\n", + "a = 2.141*10**(-5)\t\t\t#Absorptivity[m**2/s]\n", + "w_inf = 0.\t\t\t#Mass fraction of napthalene at free stream conditions \n", + "P_As = 11.\t\t\t#Vapor Pressure of Napthalene at surface[Pa]\n", + "mA = 12*10.**(-3)\t\t\t#Mass of napthalene sublimated[kg]\n", + "delta_t = 15.*60\t\t\t#time of sublimation[s]\n", + "As = 0.3\t\t\t#surface area of the body[m**2]\n", + "\n", + "# Calculations and Results\n", + "w_As = (P_As/P)*(M_A/M_air);\n", + "print \"Mass fraction at the surface is\",w_As\n", + "\n", + "m_evap = mA/delta_t\t\t\t#[kg/s]\n", + "print \"The rate of evaporation of napthalene is\",m_evap,\"kg/s\"\n", + "\n", + "h_mass = m_evap/(rho*As*(w_As-w_inf));\n", + "print \"The mass convection coefficient is\",h_mass,\"m/s\"\n", + "\n", + "#Using anamath.logy between heat and mass transfer\n", + "h_heat = rho*Cp*h_mass*((a/D_AB)**(2/3))\t\t\t#[W/m**2.degree Celcius]\n", + "print \"The average heat transfer coefficient is\",round(h_heat),\"W/m**2.degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.12" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Lewis Number is 0.8564\n", + "The vapor pressure of air away from the surface is 1.7 kPa\n", + "The temperature of the drink can be lowered to 20.4460501647 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Evaporative Cooling of a Canned Drink\n", + "\n", + "# Variables\n", + "#Water is species A and air is species B\n", + "M_A = 18\n", + "M_B = 29;\t\t\t#Molar Masses of water and air[kg/kmol]\n", + "D_AB = 2.5*10**(-5)\t\t\t#Diffusivity of water vapor in air[m**2/s]\n", + "T_inf = 30\t\t\t#Ambient Temperature[degree Celcius]\n", + "T_avg = (20+T_inf)/2\t\t\t#Average temperature\n", + "P = 101.325\t\t\t#Atmospheric Pressure[kPa]\n", + "#Properties of A at 20 degree Celcius\n", + "h_fg = 2454\t\t\t#[kJ/kg]\n", + "Pv1 = 2.34\t\t\t#Saturation vapor pressure[kPa]\n", + "Pv2 = 4.25\t\t\t#Vapor Pressure at 30 degree Celcius[kPa]\n", + "#Properties of air at average temperature and 1 atm\n", + "Cp = 1.007\t\t\t#[kJ/kg]\n", + "a = 2.141*10**(-5)\t\t\t#[m**2/s]\n", + "phi = 0.4\t\t\t#Relative Humidity\n", + "\n", + "# Calculations and Results\n", + "Le = a/D_AB;\n", + "print \"The Lewis Number is\",Le\n", + "\n", + "Pv_inf = phi*Pv2\t\t\t#[kPa]\n", + "print \"The vapor pressure of air away from the surface is\",Pv_inf,\"kPa\"\n", + "\n", + "Ts = T_inf-(h_fg*M_A*(Pv1-Pv_inf)/(Cp*(Le**(2/3))*M_B*P));\n", + "print \"The temperature of the drink can be lowered to\",Ts,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 14.13" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The radiation heat loss from the water to the surrounding surface is 663.0 W\n", + "Density of water vapor at the surface is 0.082850041425 kg/m**3\n", + "Density of air at the surface is 0.859214032211 kg/m**3\n", + "Density of mixture at the surface is 0.942064073636 kg/m**3\n", + "Density of vapor away from the surface is 0.0119860100199 kg/m**3\n", + "Density of air away from the surface is 1.05642260833 kg/m**3\n", + "The density of mixture away from the surface is 1.06840861835 kg/m**3\n", + "The characteristic length is 0.388888888889 m\n", + "The Grashof number is 212109490.96\n", + "The Nusselt number is 0.15\n", + "The convection heat transfer coefficient is 0.0101982857143 W/m**2.degree Celcius\n", + "The natural convection heat transfer rate is 0.89235 W\n", + "The mass diffusivity of water vapor in air at the average temperature is 2.99138162238e-05 m**2/s\n", + "The Schmidt Number is 0.618109032351\n", + "The Sherwood Number is 0.15\n", + "The mass transfer coefficient is 1.15381862577e-05 m/s\n", + "The evaporation rate is 2.86174837664e-06 kg/s\n", + "The rate of heat transfer by evaporation is 0.00681954638154 kW\n", + "The total rate of heat transfer from the water to the surrounding air and surfaces is 670.289804281 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss from Uncovered Hot Water Baths\n", + "\n", + "# Variables\n", + "Ts = 50+273\t\t\t#Uniform temperature of water[K]\n", + "T_surr = 20+273\t\t\t#Average temperature of surrounding surfaces[K]\n", + "T_inf = 25+273\t\t\t#Ambient temperature[K]\n", + "As = 3.5*1\t\t\t#Surface area of water bath[m**2]\n", + "p = 2*(3.5+1)\t\t\t#Perimeter of top surface of water bath[m]\n", + "e = 0.95\t\t\t#Emissivity of liquid water\n", + "phi = 0.52\t\t\t#Relative Humidity\n", + "Rv = 0.4615\t\t\t#Universal Gas Consmath.tant[kPa.m**3/kg.K]\n", + "Ra = 0.287\t\t\t#Universal Gas Consmath.tant[kPa.m**3/kg.K]\n", + "g = 9.81\t\t\t#[m**2/s]\n", + "\n", + "# Calculations and Results\n", + "#(a)\n", + "Q_rad = e*As*(5.67*10**(-8))*((Ts**4)-(T_surr**4));\n", + "print \"The radiation heat loss from the water to the surrounding surface is\",round(Q_rad),\"W\"\n", + "\n", + "#(b)\n", + "Tavg = (Ts+T_inf)/2\t\t\t#Average temperature[degree Celcius]\n", + "P = 92\t\t\t#Atmospheric pressure[kPa]\n", + "#At average temperature Tavg and Pressure P,Properties of dry air:-\n", + "k = 0.02644\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7262\t\t\t#Prandtl number, independent of pressure\n", + "a = (2.312*10**(-5))/P\t\t\t#Absorptivity[m**2/s]\n", + "nu = (1.849*10**(-5))\t\t\t#Kinematic vismath.cosity[m**2/s]\n", + "#At T_surr properties of water are:-\n", + "h_fg = 2383\t\t\t#[kJ/kg]\n", + "Pvs = 12.35\t\t\t#[kPa]\n", + "Psat = 3.17\t\t\t#Saturation Pressure of water at surface temp[kPa]\n", + "#The air at surface is saturated therefore vapor pressure at surface is simple the saturation pressure of water at the surface temperature\n", + "Pv_inf = phi*Psat\t\t\t#[kPa]\n", + "#At the surface\n", + "rho_vs = Pvs/(Rv*Ts);\n", + "print \"Density of water vapor at the surface is\",rho_vs,\"kg/m**3\"\n", + "\n", + "rho_as = (P-Pvs)/(Ra*Ts);\n", + "print \"Density of air at the surface is\",rho_as,\"kg/m**3\"\n", + "\n", + "rho_s = rho_vs+rho_as;\n", + "print \"Density of mixture at the surface is\",rho_s,\"kg/m**3\"\n", + "\n", + "#Away from the surface\n", + "rho_vinf = Pv_inf/(Rv*T_inf);\n", + "print \"Density of vapor away from the surface is\",rho_vinf,\"kg/m**3\"\n", + "\n", + "rho_ainf = (P-Pv_inf)/(Ra*T_inf);\n", + "print \"Density of air away from the surface is\",rho_ainf,\"kg/m**3\"\n", + "\n", + "rho_inf = rho_ainf+rho_vinf;\n", + "print \"The density of mixture away from the surface is\",rho_inf,\"kg/m**3\"\n", + "\n", + "Lc = As/p;\n", + "print \"The characteristic length is\",Lc,\"m\"\n", + "\n", + "Gr = g*(rho_inf-rho_s)*(Lc**3)/(((rho_inf+rho_s)/2)*(nu**2));\n", + "print \"The Grashof number is\",Gr\n", + "\n", + "Nu = 0.15*((Gr*Pr)**(1/3));\n", + "print \"The Nusselt number is\",Nu\n", + "\n", + "h_conv = Nu*k/Lc;\n", + "print \"The convection heat transfer coefficient is\" \\\n", + ",h_conv,\"W/m**2.degree Celcius\"\n", + "\n", + "Q_conv = h_conv*As*(Ts-T_inf);\n", + "print \"The natural convection heat transfer rate is\" \\\n", + ",Q_conv,\"W\"\n", + "\n", + "#(c)\n", + "D_AB = (1.87*10**(-10))*(Tavg**2.072)/(P/101.325);\n", + "print \"The mass diffusivity of water vapor in air at the average temperature is\" \\\n", + ",D_AB,\"m**2/s\"\n", + "\n", + "Sc = nu/D_AB;\n", + "print \"The Schmidt Number is\",Sc\n", + "\n", + "Sh = 0.15*((Gr*Sc)**(1/3));\n", + "print \"The Sherwood Number is\",Sh\n", + "\n", + "h_mass = Sh*D_AB/Lc;\n", + "print \"The mass transfer coefficient is\",h_mass,\"m/s\"\n", + "\n", + "mv = h_mass*As*(rho_vs-rho_vinf);\n", + "print \"The evaporation rate is\",mv,\"kg/s\"\n", + "\n", + "Q_evap = mv*h_fg;\n", + "print \"The rate of heat transfer by evaporation is\",Q_evap,\"kW\"\n", + "\n", + "Q_total = Q_rad+Q_conv+1000*Q_evap;\n", + "print \"The total rate of heat transfer from the water to the surrounding air and surfaces is\" \\\n", + ",Q_total,\"W\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch2.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch2.ipynb new file mode 100644 index 00000000..ec13491e --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch2.ipynb @@ -0,0 +1,813 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 : Heat Conduction Equation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.2" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat generation in the wire per unit volume and heat flux on the outer surface of the wire as a result of this heat generation are respectively 212.0 W/cm**3 and 15.9154943092 W/cm**2\n" + ] + } + ], + "source": [ + "# Heat Generation in a Hair Dryer\n", + "\n", + "import math \n", + "\n", + "\n", + "# Variables\n", + "E_gen = 1200.\t\t\t#[Total rate of heat generation]\n", + "L = 80\t\t \t #Length of wire[cm]\n", + "D = 0.3\t\t \t#Diameter of wire[cm]\n", + "\n", + "# Calculations\n", + "V_wire = math.pi*(D**2)*L/4\t\t\t#Volume of the wire[cm**3]\n", + "e_gen = E_gen/V_wire\t\t\t#[W/cm**3]\n", + "As = math.pi*D*L\t\t\t#Suface Area of wire[m**2]\n", + "Q_ = E_gen/As\t\t\t#[W/cm**2]\n", + "\n", + "# Results\n", + "print \"The rate of heat generation in the wire per unit volume and heat flux on the outer\\\n", + " surface of the wire as a result of this heat generation are respectively\",round(e_gen),\"W/cm**3\",\"and\",Q_,\"W/cm**2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.4" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat generation in the wire per unit volume is 318309886.184 W/m**3\n", + "The equation governing the variation of temperature int he wire is simply (1/r)d/dr(r.dT/dr)+ 21220659.0789 = 0\n" + ] + } + ], + "source": [ + "# Heat Conduction in a Resistance Heater\n", + "import math \n", + "# Variables\n", + "E_gen = 2000\t\t\t#Total rate of heat generation in the wire[W]\n", + "L = 0.5 \t\t\t#Length of cyllindrical shaped wire[m]\n", + "D = 0.004\t \t\t#Diameter of wire[m]\n", + "k_heater = 15\t\t\t#Thermal conductivity of wire[W/m.K]\n", + "\n", + "# Calculations and Results\n", + "#The resistance wire is considered to be a very long cylinder since\n", + "# its length is more than 100 times its diameter.Heat is generated uniformly in the wire and the conditions on the outer surface of the wire are uniform.Hence it is reasonable to math.expect the temperature int he wire to vary in radial r direction only and thus heat transfer to be one dimensional,T = T(r)\n", + "V_wire = math.pi*(D**2)*L/4\t\t\t#Volume of the wire[m**3]\n", + "e_gen = E_gen/V_wire \t\t\t#[W/m**3]\n", + "print \"The rate of heat generation in the wire per unit volume is\",e_gen,\"W/m**3\"\n", + "const = e_gen/k_heater;\n", + "print \"The equation governing the variation of temperature int\\\n", + " he wire is simply (1/r)d/dr(r.dT/dr)+\",const,\" = 0\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.5" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thermal conductivity is given to be variable,and there is no heat generation in the ball, therefore the differential equation governing the variation of temperature in the ball is\n", + "(1/(r**2)d/dr((r**2)k(dT/dr)) = rho*c(dT/dt)\n" + ] + } + ], + "source": [ + "# Cooling of a Hot Metal Ball in Air\n", + "\n", + "# Variables\n", + "T_ball = 300\t\t\t#Temeprature of ball[degree Celcius]\n", + "T_surr = 25\t\t\t#Temperature of ambient air[degree Celcius]\n", + "\n", + "# Results\n", + "#The ball in initially at a uniform temperature and is cooled uniformly from the entire outer surface.Also, the temperature within the ball changes with the radial dismath.tance r and the time t. T = T(r,t)\n", + "print (\"The thermal conductivity is given to be variable,and there is no heat\\\n", + " generation in the ball, therefore the differential equation governing the variation of temperature in the ball is\")\n", + "print (\"(1/(r**2)d/dr((r**2)k(dT/dr)) = rho*c(dT/dt)\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.6" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The differential equation governing the variation of temperature in the billet is \n", + "((1/r)(d/dr)(k*r(dT/dr)))+((d/dz)(k(dT/dz))) = rho*c(dT/dt)\n", + "In case of consmath.tant thermal conductivity it reduces to\n", + "((1/r)(d/dr)(r(dT/dr)))+(d**2)T/(dz**2) = (1/a)(dT/dt)\n" + ] + } + ], + "source": [ + "# Heat Conduction in a Short Cylinder\n", + "\n", + "# Variables\n", + "#Radius R and height h of the small cylinder\n", + "T = 300 \t\t\t#Temperature of cylinder[degree Celcius]\n", + "T_ambient = 20\t\t\t#Temperature of ambient air[degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "#Variation is thermal conductivity is negligible\n", + "#The cylinder is cooled unifromly from the top and bottom surfaces in the z-direction as well as the lateral surface in the radial r-direction.Also Temperature at any point in the ball changes with time during cooling. Therefore this is a two dimensional transient heat conduction problem i.e. T = T(r,z,t)\n", + "print (\"The differential equation governing the variation of temperature in the billet is \")\n", + "print (\"((1/r)(d/dr)(k*r(dT/dr)))+((d/dz)(k(dT/dz))) = rho*c(dT/dt)\")\n", + "print (\"In case of consmath.tant thermal conductivity it reduces to\")\n", + "print (\"((1/r)(d/dr)(r(dT/dr)))+(d**2)T/(dz**2) = (1/a)(dT/dt)\") \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.7" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-k*dT(0)/dx = q_\n", + "T(L) = 110 degree Celcius\n", + "where L = 0.003 m\n" + ] + } + ], + "source": [ + "# Heat Flux boundary Condition\n", + "import math \n", + "# Variables\n", + "Q = 800\t\t \t#Heat transfer rate[W]\n", + "D = 0.2\t\t\t #Diameter of pan[m]\n", + "L = 0.003\t\t\t#Thickness of pan[m]\n", + "T_in = 110\t\t\t#T(L) Temperature of the inner surface of the pan[degree Celcius]\n", + "neta = 0.9\t\t\t#Percent of total heat transferred to the pan\n", + "\n", + "# Calculations\n", + "#The inner and outer surfaces of the bottom section of the pan can be\n", + "# represented by x = 0 and x = L,respectively. During steady operation\n", + "# the temperature will depend on x only and thus T = T(x).\n", + "actual_Q = neta*Q \t\t\t#90 percent of the 800W is transferred to the pan at that surface\n", + "A = math.pi*(D**2)/4\t\t\t#Bottom Surface Area[m**2]\n", + "print (\"-k*dT(0)/dx = q_\")\n", + "q_ = actual_Q/(1000*A)\t\t\t#[kW/m**2]\n", + "\n", + "# Results\n", + "#The boundary condition on this surface can be math.expressed as\n", + "print \"T(L) = \",T_in,\"degree Celcius\"\n", + "print \"where L = \",L,\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.8" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Taling the direction of heat transfer to be the positive r direction, the boundary condition on that surface can be math.expressed as\n", + "-k(dT(r_in,t)/dr) = h(T_steam-T(r1))\n", + "Then the boundary at the outer surface can be math.expressed as\n", + "dT(r_out,t)/dr = 0\n" + ] + } + ], + "source": [ + "# Convection and Insulation Boundary Conditions\n", + "\n", + "# Variables\n", + "T_steam = 200\t\t\t#Temperature of steam[degree Celcius]\n", + "r_in = 0.08\t \t\t#Inner radii of pipe[m]\n", + "r_out = 0.085\t\t\t#Outer radii of pipe[m]\n", + "h = 65\t\t\t #convection heat transfer coefficient on the inner surface of the pipe[W/m**2.K]\n", + "\n", + "# Calculations and Results\n", + "#Heat transfer through the pipe material predominantly is in the radial\n", + "# direction and thus can be approximated as being one-dimensional\n", + "print (\"Taling the direction of heat transfer to be the positive r direction, the boundary\\\n", + " condition on that surface can be math.expressed as\")\n", + "print (\"-k(dT(r_in,t)/dr) = h(T_steam-T(r1))\")\n", + "#The pipe is said to be well insulated on the outside, and thus heat loss\n", + "# through the outer surface of the pipe can be assumed to be negligible.\n", + "print (\"Then the boundary at the outer surface can be math.expressed as\")\n", + "print (\"dT(r_out,t)/dr = 0\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.9" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The initial condition can be math.expressed as\n", + "T(r,0) = T_ball\n", + "('degree Celcius', 300)\n", + "The boundary condition at the midpoint i.e. r = 0 can be math.expressed as dT(0,t)/dr = 0\n", + "Taking the direction of heat transfer to be the positive r direction, the boundary condition on the outer surface can be math.expressed as\n", + "-k(dT(r_out,t)/dr) = h[T(r_out)-T_ambient]+e*sigma[(T(r_out)**4)-(T_ambient**4)]\n" + ] + } + ], + "source": [ + "# Combined Convection and Radiation Condition\n", + "\n", + "# Variables\n", + "T_ball = 300\t\t\t#Temperature of spherical metal ball[degree Celcius]\n", + "T_ambient = 27\t\t\t#Temperature of ambient air[degree Celcius]\n", + "k = 14.4 \t\t\t#Thermal conductivity of the ball material[W/m.K]\n", + "h = 25\t\t \t #average convection heat transfer coefficient on the outer surface of the ball[W/m**2.K]\n", + "e = 0.6\t\t\t #Emissivity of outer surface of the ball\n", + "T_surr = 290\t\t\t#\n", + "\n", + "# Calculations and Results\n", + "#This is one-dimensional transient heat transfer problem math.since the temperature within the ball changes with the radial dismath.tance r and the time t i.e. T = T(r,t)\n", + "#Taking the moment the ball is removed from the oven to be t = 0\n", + "print (\"The initial condition can be math.expressed as\")\n", + "print (\"T(r,0) = T_ball\")\n", + "print (\"degree Celcius\",T_ball)\n", + "#The problem possesses symmetry about the mid point(r = 0) math.since the isotherms in this case are concentric spheres, and thus no heat is crosmath.sing the mid point of the ball.\n", + "print (\"The boundary condition at the midpoint i.e. r = 0 can be math.expressed as dT(0,t)/dr = 0\")\n", + "#The heat conducted to the outer surface of the ball is lost to the environment by convection and radiation.\n", + "print (\"Taking the direction of heat transfer to be the positive r direction, the boundary condition on the outer surface can be math.expressed as\")\n", + "print (\"-k(dT(r_out,t)/dr) = h[T(r_out)-T_ambient]+e*sigma[(T(r_out)**4)-(T_ambient**4)]\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.10" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The boundary condition ont the inner surface of the wall at x = 0 can be math.expressed as -k(dT(0)/dx) = h_in[T_surf1-T(0)]\n", + "where h_in and T_surf are respectively 6 W/m**2.degree Celcius and 20 degree Celcius\n", + "The boundary condition on the outer surface at x = L can be math.expressed as \n", + "-kdT(L)/dx = h_out[T(L)-T_surf2]+e*sigma[(T(L)**4)-(T_sky**4)]-a*q_solar\n", + "where T_sky is temperature of the sky and q_solar is the incident solar heat flux\n" + ] + } + ], + "source": [ + "# Combined Convection, Radiation and Heat Flux\n", + "\n", + "# Variables\n", + "T_surf1 = 20\t\t\t#Ambient temperature in the interior of the house[degree Celcius]\n", + "T_surf2 = 5\t\t\t# Ambient temperature outside the house[degree Celcius]\n", + "L = 0.2\t\t\t# Thickness of the wall[m]\n", + "a = 0.5\t\t\t# absorptivity of outer surface of wall\n", + "h_in = 6\t\t\t#Convection heat transfer coefficient for inner surface of wall[W/m**2.degree Celcius]\n", + "h_out = 25\t\t\t#Convection heat transfer coefficient for outer surface of wall[W/m**2.degree Celcius]\n", + "k = 0.7\t\t\t#The thermal conductivity of wall material[W/m.degree Celcius]\n", + "e = 0.9\t\t\t#Emissivity of outer surface of wall\n", + "\n", + "# Calculations and Results\n", + "#The heat transfer though the wall is given to be steady and one dimensional and thus temperature depends on x only i.e. T = T(x)\n", + "print (\"The boundary condition ont the inner surface of the wall at x = 0 can be math.expressed as -k(dT(0)/dx) = h_in[T_surf1-T(0)]\")\n", + "print \"where h_in and T_surf are respectively \",h_in,\"W/m**2.degree Celcius\",\"and\",T_surf1,\"degree Celcius\"\n", + "print (\"The boundary condition on the outer surface at x = L can be math.expressed as \")\n", + "print (\"-kdT(L)/dx = h_out[T(L)-T_surf2]+e*sigma[(T(L)**4)-(T_sky**4)]-a*q_solar\")\n", + "print (\"where T_sky is temperature of the sky and q_solar is the incident solar heat flux\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.11" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Differential equation can be math.expressed as d**2(T)/(dx**2) = 0\n", + "with boundary conditions \n", + "T(0) = T1 = 120 degree Celcius\n", + "T(L) = T2 = 50 degree Celcius\n", + "integrating this we get,\n", + "('dT/dx = C1', 'where C1 is an arbitrary constant')\n", + "integrating we obtain temperature to follow following relation :-\n", + "('and substituting values in above equation', 'T(x) = ((T2-T1)/L)*x+T1 ')\n", + "The value of temperature at x = 0.1m is 85.0 degree Celcius\n", + "The rate of heat conduction through the wall is 6300.0 W\n" + ] + } + ], + "source": [ + "# Heat Conduction in a Plane Wall\n", + "\n", + "# Variables\n", + "k_wall = 1.2\t\t\t#Thermal conductivity of wall[W/m.degree Celcius]\n", + "L = 0.2 \t \t\t#Thickness of wall[m]\n", + "As = 15\t \t \t#Surface area[m**2]\n", + "T1 = 120\n", + "T2 = 50\t\t#The two sides of the wall are maintained at these consmath.tant temperatures[degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "print (\"Differential equation can be math.expressed as d**2(T)/(dx**2) = 0\")\n", + "print (\"with boundary conditions \")\n", + "print \"T(0) = T1 = \",T1,\"degree Celcius\"\n", + "print \"T(L) = T2 = \",T2,\"degree Celcius\"\n", + "print (\"integrating this we get,\")\n", + "print (\"dT/dx = C1\", \"where C1 is an arbitrary constant\")\n", + "print (\"integrating we obtain temperature to follow following relation :-\")\n", + "print (\"and substituting values in above equation\",\"T(x) = ((T2-T1)/L)*x+T1 \")\n", + "T3 = (((T2-T1)/L)*(0.1))+T1;\n", + "print \"The value of temperature at x = 0.1m is\",T3,\"degree Celcius\"\n", + "Q_wall = -k_wall*As*((T2-T1)/L)\t\t\t#[W]\n", + "print \"The rate of heat conduction through the wall is\",Q_wall,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.13" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Uniform Heat Flux to whicj inner surface of the base plate is subjected 40000.0 W/m**2\n", + "The temperatures at the inner and outer surfaces of the plate i.e. at x = 0 and x = L are 33.0 degree Celcius and 20.0 degree Celcius respectively\n" + ] + } + ], + "source": [ + "# Heat Conduction in the Base Plate of an Iron\n", + "\n", + "# Variables\n", + "k = 15.\t \t\t#[W/m.degree Celcius]\n", + "A = 300.*10**(-4)\t\t\t#Base Area[m**2]\n", + "L = 0.005\t\t \t#Thickness[m]\n", + "T_surr = 20\t\t\t #Temp of surrounding[degree Celcius]\n", + "h = 80 \t\t\t#Convection het transfer coefficient[W/m**2.degree Celcius]\n", + "Q = 1200\t\t \t#[W]\n", + "\n", + "# Calculations and Results\n", + "q = Q/A\t\t\t#[W/m**2]\n", + "print \"Uniform Heat Flux to whicj inner surface of the base plate is subjected\",q,\"W/m**2\"\n", + "\n", + "#Integration Constants\n", + "C1 = -q/k;\n", + "C2 = T_surr+(q/h)+(q*L/k);\n", + "T_0 = T_surr+q*((L/k)+(1/h))\t\t\t#[degree Celcius]\n", + "T_L = T_surr+q*(1/h)\t\t\t#[degree Celcius]\n", + "print \"The temperatures at the inner and outer surfaces of the plate i.e. at x = 0 and x = L are\" \\\n", + ",round(T_0),\"degree Celcius\",\"and\",T_L,\"degree Celcius\",\"respectively\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.14" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The outer surface temperature is 292.710183864 K\n", + "The steady rate of heat conduction through the wall is 146.0 W/m**2\n" + ] + } + ], + "source": [ + "\n", + "from scipy.optimize import fsolve \n", + "import math \n", + "# Heat Conduction in a Solar Heated Wall\n", + "\n", + "# Variables\n", + "L = 0.06\t\t\t#Thickness of wall[m]\n", + "k = 1.2\t\t\t#Thermal Conductivity[W/m.degree Celcius]\n", + "e = 0.85\t\t\t#Emissivity\n", + "a = 0.26\t\t\t#Solar absorptivity\n", + "T1 = 300\t\t\t#Temp of Inner surface of Wall[K]\n", + "q_solar = 800\t\t\t#Incident rate of solar radiation[W/m**2]\n", + "T_space = 0\t\t\t#Temp of outer space[K]\n", + "\n", + "# Calculations\n", + "#Integrating results into\n", + "def temp(T):\n", + " return (((a*q_solar)-(e*5.67*10**(-8)*T[0]**4))*(L/k))+T1-T[0];\n", + "\n", + "# Results\n", + "x0 = [1] \n", + "xs = fsolve(temp,x0)\n", + "print \"The outer surface temperature is \",xs[0],\"K\"\n", + "#First execute the program with \n", + "q = k*(T1-xs)/L;\n", + "print \"The steady rate of heat conduction through the wall is\",round(q),\"W/m**2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.15" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat conduction through the pipe is 786.0 kW\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss through a Steam Pipe\n", + "\n", + "# Variables\n", + "L = 20.\t\t\t#Pipe Length[m]\n", + "k = 20.\t\t\t#[W/m.degree Celcius]\n", + "r1 = 0.06\t\t\t#Inner Radius[m]\n", + "r2 = 0.08\t\t\t#Outer Radius[m]\n", + "T1 = 150.\t\t\t#Temp of inner surface[degree Celcius]\n", + "T2 = 60.\t\t\t#Temp of outer surface[degree Celcius]\n", + "\n", + "# Calculations\n", + "#Integrating differential equation we get T(r) = C1math.logr+C2, where C1 and C2 are\n", + "C1 = (T2-T1)/math.log(r2/r1);\n", + "C2 = T1-((T2-T1/math.log(r2/r1))*math.log(r1));\n", + "Q_cyl = 2*math.pi*k*L*(T1-T2)/(math.log(r2/r1));\n", + "\n", + "# Results\n", + "print \"The rate of heat conduction through the pipe is\",round(Q_cyl/1000),\"kW\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.16" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat conduction through the container wall is 27.143360527 kW\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Conduction through a Spherical Shell\n", + "\n", + "# Variables\n", + "r1 = 0.08\t\t\t#Inner Radius[m]\n", + "r2 = 0.1\t\t\t#Outer radius[m]\n", + "k = 45.\t \t\t#Thermal conductivity[W/m.degree Celcius]\n", + "T1 = 200.\t\t\t#Temperature of inner surface[degree Celcius]\n", + "T2 = 80.\t\t\t#Temperarure of outer surface[degree Celcius]\n", + "\n", + "# Calculations\n", + "#Integrating the differential equation twicw we get T(r) = -C1/r+C2, where\n", + "C1 = r1*r2*(T1-T2)/(r2-r1);\n", + "C2 = ((r2*T2)-(r1*T1))/(r2-r1);\n", + "Q_sphere = 4*math.pi*k*r1*r2*(T1-T2)/(r2-r1);\n", + "\n", + "# Results\n", + "print \"The rate of heat conduction through the container wall is\",Q_sphere/1000,\"kW\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.17" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The heat generation per unit volume of the wire is 318309886.184 W/m**3\n", + "The center temperature of the wire is 126.0 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Centerline Temperature of a Resismath.tance Heater\n", + "\n", + "# Variables\n", + "k = 15. \t\t\t#Thermal conductivity of heater wire[W/m.K]\n", + "E_gen = 2000.\t\t\t#Total heat generation[W]\n", + "l = 0.5\t\t \t#Length of resismath.tance heater wire[m]\n", + "D = 0.004\t \t\t#Diameter of wire[m]\n", + "Ts = 105.\t\t\t #Outer sorface Temperarure[degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "V_wire = math.pi*(D**2)*l/4\t\t\t#Volume of wire[m**3]\n", + "e_gen = E_gen/V_wire\t\t\t#[W/m**3]\n", + "print \"The heat generation per unit volume of the wire is\",e_gen,\"W/m**3\"\n", + "Tc = Ts+(e_gen*(D**2)/(4*4*k))\t\t\t#[degree Celcius]\n", + "print \"The center temperature of the wire is \",round(Tc),\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.18" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The temperature at the centreline,r = 0 is 128.0 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Variation of Temperature in a Resismath.tance Heater\n", + "\n", + "# Variables\n", + "k = 13.55\t\t\t#[W/m.degree Celcius]\n", + "ro = 0.005\t\t\t#[m]\n", + "e_gen = 4.3*10**7\t\t\t#rate of resismath.tance heating[W/m**3]\n", + "Ts = 108\t\t\t#Surface temperature[degree Celcius]\n", + "\n", + "# Calculations\n", + "#Integrating we get\n", + "#T(r) = Ts+((e_gen*(ro**2-r**2)/4k))\n", + "T_0 = Ts+((e_gen*ro**2)/(4*k));\n", + "\n", + "# Results\n", + "print \"The temperature at the centreline,r = 0 is\",round(T_0),\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.19" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Interface temperature is 149.396914041 degree Celcius\n", + "The temperature at the centreline(r = 0) is 152.730247375 degree Celcius\n", + "Thus the temperature of the centreline is slightly above the interface temperature\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Conduction in a two layer medium\n", + "\n", + "# Variables\n", + "k_wire = 15\n", + "k_ceramic = 1.2 \t\t\t#[W/m.degree Celcius]\n", + "r1 = 0.002\n", + "r2 = 0.007 \t\t\t#[m]\n", + "e_gen = 50*10**6\t\t\t#[W/m**3]\n", + "Ts = 45.\t\t\t #[degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "T1 = (((e_gen*(r1**2)*math.log(r2/r1))/(2*k_ceramic))+Ts)\t\t\t#[degree Celcius]\n", + "print \"The Interface temperature is\",T1,\"degree Celcius\"\n", + "T_wire = T1+((e_gen*(r1**2))/(4*k_wire))\t\t\t#[degree Celcius]\n", + "print \"The temperature at the centreline(r = 0) is\",T_wire,\"degree Celcius\"\n", + "print (\"Thus the temperature of the centreline is slightly above the interface temperature\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.21" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The average thermal conductivity of the medium is 55.499 W/m.K\n", + "The rate of heat conduction through the plate is 155.0 kW\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Conduction through a Wall with k(T)\n", + "\n", + "# Variables\n", + "#k varies with temperature as k = k0(1+bT)\n", + "k0 = 38\t \t\t#[W/m]\n", + "b = 9.21*(10**(-4))\t\t\t#[k**(-1)]\n", + "h = 2\n", + "w = 0.7\n", + "t = 0.1 \t\t\t#Height,width and thickness of plates respectively[m]\n", + "T1 = 600\n", + "T2 = 400\t\t\t#Temperature maintained on the two sides of the plate[K]\n", + "\n", + "# Calculations and Results\n", + "A = h*w \t\t\t#Surface area of plate[m**2]\n", + "Tavg = (T1+T2)/2\t\t\t#Average temperature of plate[K]\n", + "kavg = k0*(1+(b*Tavg))\t\t\t#[W/m.K]\n", + "print \"The average thermal conductivity of the medium is\",kavg,\"W/m.K\"\n", + "Q_ = kavg*A*(T1-T2)/t\t\t\t#[W]\n", + "print \"The rate of heat conduction through the plate is\",round(Q_/1000),\"kW\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch3.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch3.ipynb new file mode 100644 index 00000000..db2352e0 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch3.ipynb @@ -0,0 +1,1012 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3 : Steady Heat Conduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thermal conductivity is given to be 0.9 W/m.K\n", + "The area of the wall is 15 m**2\n", + "Thermal Resistnace offered by the wall is 0.0222222222222 degree Celicus/W\n", + "The steady rate of heat transfer through the wall is 630.0 W\n" + ] + } + ], + "source": [ + "# Heat Loss through a Wall\n", + "import math \n", + "\n", + "#assumptions:- \n", + "#1)Heat transfer through the wall is steady \n", + "#2)Heat transfer is one-imensional\n", + "\n", + "# Variables\n", + "k = 0.9\t\t\t#[W/m.K]\n", + "print \"The thermal conductivity is given to be\",k,\"W/m.K\"\n", + "\n", + "# Calculations and Results\n", + "#Heat transfer through the wall is by conduction \n", + "A = (3*5)\t\t\t#[m**2]\n", + "print \"The area of the wall is\",A,\"m**2\"\n", + "T1 = 16\t \t \t#temperature of inner wall[degree Celcius]\n", + "T2 = 2\t\t \t#Temperature of Outer wall[degree Celcius]\n", + "delta_T = T1-T2\t\t\t#Temperature Gradient[degree Celcius]\n", + "L = 0.3\t\t\t #Length of wall along which heat is being transferred[m]\n", + "R_wall = L/(k*A)\t\t#[degree Celcius/W]\n", + "\n", + "print \"Thermal Resistnace offered by the wall is\",R_wall,\"degree Celicus/W\"\n", + "Q_ = (delta_T/R_wall)\t\t\t#[W]\n", + "print \"The steady rate of heat transfer through the wall is \",Q_,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thermal conductivity is given to be 0.78 W/m.K\n", + "The total Resismath.tance offered by glass window 0.112713675214 degree Celcius/W\n", + "Steady rate of Heat Transfer through the window is 266.161137441 W\n", + "Inner Surface Temperature of the window glass -2.18009478673 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss through a Single Pane Window\n", + "\n", + "#Assumptions :-\n", + "#1)Heat transfer through the window is steady\n", + "#2)Heat transfer through the wall is one dimensional\n", + "\n", + "# Variables\n", + "k = 0.78\t\t\t#[W/m.K]\n", + "print \"The thermal conductivity is given to be\",k,\"W/m.K\"\n", + "L = 0.008\t\t\t#Thickness of glass window[m]\n", + "A = (0.8*1.5)\t\t#Area of the window[m**2]\n", + "T_1 = 20\t\t\t#Temeprature of inner surface of glass window[dgree Celcius]\n", + "T_2 = -10\t\t\t#Temeprature of outer surface of glass window[dgree Celcius]\n", + "h_in = 10\t\t\t#Heat transfer coefficient on the inner surface of the window[W/m**2]\n", + "h_out = 40\t\t\t#Heat transfer coefficient on the outer surface of the window[W/m**2]\n", + "\n", + "# Calculations and Results\n", + "#Convection Resistance\n", + "R_conv1 = 1/(h_in*A)\t\t\t#[degree Celcius/W]\n", + "R_conv2 = 1/(h_out*A)\t\t\t#[degree Celcius/W]\n", + "#Conduction Resismath.tance\n", + "R_cond = L/(k*A)\t\t\t#[degree Celcius/W]\n", + "#Net Resismath.tance are in series\n", + "R_total = R_conv1+R_conv2+R_cond\t\t\t#[degree Celcius/W]\n", + "print \"The total Resismath.tance offered by glass window\",R_total,\"degree Celcius/W\"\n", + "Q_ = (T_1-T_2)/R_total\t\t\t#[W]\n", + "print \"Steady rate of Heat Transfer through the window is\",Q_,\"W\"\n", + "#Knowing the rate of Heat Transfer \n", + "T1 = T_1-(Q_*R_conv1)\t\t\t#[degree Celciusthe inner surface temperature of the window glass can be determined from]\n", + "print \"Inner Surface Temperature of the window glass\",T1,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The net resismath.tance offered is 0.433226495726 degree Celcius/W\n", + "The steady rate of Heat transfer through the window is 69.2478421702 W\n", + "Inner Surface Temperature of the window is 14.2293464858 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss through double pane windows\n", + "\n", + "# Variables\n", + "k_g = 0.78\t\t\t#Thermal conductitvity of glass [W/m.K]\n", + "k_a = 0.026\t\t\t#Thermal conductivity of air space[W/m.K]\n", + "L_g = .004\t\t\t#Thickness of glass layer[m]\n", + "L_a = 0.01\t\t\t#Thickness of air space[m]\n", + "h_in = 10\t\t\t#ConvectionHeat transfer coefficient on the inner surface of the window[W/m**2]\n", + "h_out = 40\t\t\t#ConvectionHeat transfer coefficient on the outer surface of the window[W/m**2]\n", + "T_1 = 20\t\t\t#Outer wall Temperature [degree Celcius]\n", + "T_2 = -10\t\t\t#Inner wall Temperature [degree Celcius]\n", + "\n", + "# Calculations\n", + "A = (0.8*1.5)\t\t\t#Area of glass window[m**2]\n", + "#Convection Resistances\n", + "R_conv1 = 1/(h_in*A)\t\t\t#Due to convection heat transfer between inner atmosphere and glass[degree Celcius/W]\n", + "R_conv2 = 1/(h_out*A)\t\t\t#Due to convection heat transfer between outer atmosphere and glass[degree Celcius/W]\n", + "#Conduction Resistances\n", + "R_cond1 = L_g/(k_g*A)\t\t\t#Due to conduction heat transfer through the glass[degree Celcius/W]\n", + "R_cond2 = R_cond1\t\t\t#Glass Medium is seperated by air spac hence two glass mediums are created[degree Celcius/W]\n", + "R_cond3 = L_a/(k_a*A)\t\t\t#Due to conduction heat transfer through the air space[degree Celcius/W]\n", + "#Net Resistance offered by window is the sum of all the individual resistances written in the oreder of their occurence\n", + "R_total = R_conv1+R_cond1+R_cond2+R_cond3+R_conv2\t\t\t#[degree Celcius/W]\n", + "\n", + "# Results\n", + "print \"The net resismath.tance offered is\",R_total,\"degree Celcius/W\"\n", + "Q_ = (T_1-T_2)/R_total\t\t\t#[W]\n", + "print \"The steady rate of Heat transfer through the window is\",Q_,\"W\"\n", + "#Inner surface temperature of the window is given by\n", + "T1 = T_1-(Q_*R_conv1)\t\t\t#[degree Celcius]\n", + "print \"Inner Surface Temperature of the window is\",T1,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.4" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Since thermal contact resismath.tance is the inverse of thermal contact conductance\n", + "Hence Therml contact Resistance is 9.09090909091e-05 m**2.K/W\n", + "Equivalent thickness is 2.15454545455 cm\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Equivalent Thickness for Contact Resistance\n", + "\n", + "# Variables\n", + "k = 237 \t\t\t#Thermal conductivity of aluminium[W/m.K]\n", + "L = 0.01\t\t\t#Thickness of aluminium plate[m]\n", + "hc = 11000\t\t\t#Thermal contact conducmath.tance[W/m**2.K]\n", + "\n", + "# Calculations and Results\n", + "Rc = 1./hc\t\t\t#[m**2.K/W]\n", + "print (\"Since thermal contact resismath.tance is the inverse of thermal contact conductance\")\n", + "print \"Hence Therml contact Resistance is\",Rc,\"m**2.K/W\"\n", + "#For a unit surface area, the thermal resismath.tance of a flat plate is defined as\n", + "R = L/k;\n", + "#Equivalent thickness for R = Rc\n", + "L = k*Rc\t\t\t#[m]\n", + "print \"Equivalent thickness is\",(100*L),\"cm\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.5" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The total thermal Tesistance is 4.03235257834 degree Cecius/W\n", + "The rate of heat transferred is 12.3997093579 W\n", + "The temperature jump at the interface is given by 0.369038968985 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Contact Reismath.tance of Transistors\n", + "\n", + "# Variables\n", + "k = 386 \t\t\t#Thermal Conductivity of Copper[W/m.K]\n", + "hc = 42000\t\t\t#Contact Conducmath.tance coreesponding to copper-aluminium interface for the case of 1.17-1.4 micron roughness and 5MPa[pressure, which is close to given to what we have[W/m**2.K]\n", + "Ac = .0008\t\t\t#Contact area b/w the case and the plate[m**2]\n", + "A = 0.01\t\t\t#Plate area for each resistor[m**2]\n", + "L = 0.01\t\t\t#Thickness of plate[m]\n", + "ho = 25\t \t\t#Heat tranfer coefficient for back surface\n", + "T_1 = 20\t\t\t#Ambient Temperature[degree Celcius]\n", + "T_2 = 70\t\t\t#Maximum temperature of case[degree Celcius]\n", + "\n", + "# Calculations\n", + "#Resistances Offered\n", + "R_interface = 1./(hc*Ac)\t\t\t#Resismath.tance offered at the copper aluminium interface[degree Cecius/W]\n", + "R_plate = L/(k*A)\t\t\t#conduction resismath.tance offered by coppr plate[degree Cecius/W]\n", + "R_conv = 1./(ho*A)\t\t\t#Convection resismath.tance offerd by back surface of camath.sing[degree Cecius/W]\n", + "R_total = R_interface+R_plate+R_conv\t\t\t#[degree Cecius/W]\n", + "\n", + "# Results\n", + "print \"The total thermal Tesistance is\",R_total,\"degree Cecius/W\"\n", + "Q_ = (T_2-T_1)/R_total\t\t\t#[W]\n", + "print \"The rate of heat transferred is\",Q_,\"W\"\n", + "delta_T = Q_*R_interface\t\t\t#[degree Celcius]\n", + "print \"The temperature jump at the interface is given by\",delta_T,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.6" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Net Resismath.tance offered is 6.87235431235 degree Celcius/W\n", + "The steady rate of heat transfer through the wall is 4.36531625648 W\n", + "Heat Transfer per unit area is 17.4612650259 W/m**2\n", + "Thr rate of heat transfer through the entire wall 261.918975389 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss through a Composite Wall\n", + "\n", + "# Variables\n", + "#We consider a 1m deep and 0.25 m high portion of the wall math.since it is representative of the entire wall\n", + "#Assuming any cross-section of the wall normal to the x-direction to be isothermal\n", + "k_b = 0.72\t\t\t#thermal conductivity of bricks[W/m.K]\n", + "k_p = 0.22\t\t\t#thermal conductivity of plaster layers[W/m.K]\n", + "k_f = 0.026\t\t\t#thermal conductivity of foam layers[W/m.K]\n", + "T_in = 20\t\t\t#Indoor Temperature[dgeree Celcius]\n", + "T_out = -10\t\t\t#Outdoor Temperature[dgeree Celcius]\n", + "h_in = 10\t\t\t#Inner heat transfer coefficient[W/m**2.K]\n", + "h_out = 25\t\t\t#Outer heat transfer coefficient[W/m**2.K]\n", + "L_f = 0.03\t\t\t#Thickness of foam layer[m]\n", + "L_p = 0.02\t\t\t#Thickness of plaster[m]\n", + "L_b = 0.16\t\t\t#Thickness of brick wall[m]\n", + "L_c = 0.16\t\t\t#Thickness of central plaster layer[m]\n", + "A1 = (0.25*1)\t\t\t#[m**2]\n", + "A2 = (0.015*1)\t\t\t#[m**2]\n", + "A3 = (0.22*1)\t\t\t#[m**2]\n", + "\n", + "# Calculations\n", + "#Resistances offered:-\n", + "R_in = 1/(h_in*A1)\t\t\t#Resismath.tance to conevction heat transfer from inner surface[degree Celcius/W]\n", + "R1 = L_f/(k_f*A1)\t\t\t#Conduction Resismath.tance offered by outer foam layer[degree Celcius/W]\n", + "R2 = L_p/(k_p*A1)\t\t\t#Conduction Resismath.tance offered by Outer side Plaster Wall[degree Celcius/W]\n", + "R6 = R2\t\t\t#Conduction Resismath.tance offered by Inner side Plaster Wall[degree Celcius/W]\n", + "R3 = L_c/(k_p*A2)\t\t\t#Conduction Resismath.tance offered by one side central Plaster wall[degree Celcius/W]\n", + "R5 = R3\t\t\t#Conduction Resismath.tance offered by other side central Plaster wall[degree Celcius/W]\n", + "R4 = L_b/(k_b*A3)\t\t\t#Conduction Resismath.tance offered by Brick Wall[degree Celcius/W]\n", + "R_out = 1/(h_out*A1)\t\t\t#Convection Resismath.tance from outer surface[degree Celcius/W]\n", + "#R_in,R1,R2,R6,R_out are connected in series\n", + "#R3,R4,R5 are connected in parallel\n", + "R_mid = 1/((1/R3)+(1/R4)+(1/R5))\t\t\t#Effective Parrallel Resismath.tance\n", + "R_total = (R_in+R1+R2+R_mid+R6+R_out)\t\t\t#[degree Celcius/W]\n", + "\n", + "# Results\n", + "print \"Net Resismath.tance offered is\",R_total,\"degree Celcius/W\"\n", + "Q_ = (T_in-T_out)/R_total\t\t\t#[W]\n", + "print \"The steady rate of heat transfer through the wall is\",Q_,\"W\"\n", + "Q_p = Q_/A1\t\t\t #[W/m**2]\n", + "print \"Heat Transfer per unit area is\",Q_p,\"W/m**2\"\n", + "A_total = 3*5\t \t\t#Total Area of wall[m**2]\n", + "Q_total = Q_p*A_total\t\t \t#[W]\n", + "print \"Thr rate of heat transfer through the entire wall\",Q_total,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.7" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The radiation heat transfer coefficient is given by \n", + "h_rad = e*sigma*((T2**2)+(T_tank**2))*(T2+T_tank)\n", + "But we dont know the outer surface temperature T2 of the math.tank. hence we assume a T2 value\n", + "since heat transfer inside the math.tank is larger \n", + "Therefore taking T2 = 278 K\n", + "The radiation heat transfer coefficient is determined to be 5.3382515319 W/m**2.degree Celcius\n", + "The steady rate of heat transfer to the iced water is 7978.31498334 W\n", + "We determine outer surface temperature to check the validity of assumption\n", + "277.08411431 K\n", + "which is sufficiently close to 278 K\n", + "The total amount of heat transfer during a 24 hour period is 574438.678801 kJ\n", + "The amount of ice that will melt during 24h period is 1721.42247168 kg\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Transfer to a Spherical Container\n", + "#Radiation effect is being considered. For the black math.tank emissivity = 1\n", + "\n", + "# Variables\n", + "k = 15 \t\t\t#thermal conductivity of stainless steel[W/m.degree Celcius]\n", + "T_ice = 0+273\t\t\t#temeperature of iced water[K]\n", + "T_tank = 22+273\t\t\t#temperature of math.tank stored at room temperature[K]\n", + "h_in = 80\t \t\t#Heat Transfer Coefficient at the inner surface of the math.tank[W/m**2.degree Celcius]\n", + "h_out = 10\t\t\t #Heat Transfer Coefficient at the outer surface of the math.tank[W/m**2.degree Celcius]\n", + "heat_f = 333.7\t\t\t#Heat of fusion of water at atmospheric pressure[kJ/kg]\n", + "e = 1\t\t\t #emissivity of math.tank\n", + "sigma = 5.67*(10**(-8))\t\t\t#Stefan's [W/m**2.K**4]\n", + "D1 = 3\t\t\t #inner diameter[m]\n", + "D2 = 3.04\t\t\t #Outer diameter[m]\n", + "\n", + "# Calculations and Results\n", + "#a)\n", + "A1 = (math.pi)*(D1**2)\t\t\t#Inner Surface area of the math.tank[m**2]\n", + "A2 = (math.pi)*(D2**2)\t\t\t#outer Surface area of the math.tank[m**2]\n", + "print (\"The radiation heat transfer coefficient is given by \")\n", + "print (\"h_rad = e*sigma*((T2**2)+(T_tank**2))*(T2+T_tank)\")\n", + "print (\"But we dont know the outer surface temperature T2 of the math.tank. hence we assume a T2 value\")\n", + "print (\"since heat transfer inside the math.tank is larger \")\n", + "T2 = 5+273\t\t\t#[K]\n", + "print \"Therefore taking T2 = \",T2,\"K\"\n", + "\n", + "h_rad = e*sigma*((T2**2)+(T_tank**2))*(T2+T_tank)\t\t\t#[W/m**2.K]\n", + "print \"The radiation heat transfer coefficient is determined to be\",h_rad,\"W/m**2.degree Celcius\"\n", + "\n", + "#Individual Thermal Resistances Offered\n", + "R_in = 1/(h_in*A1)\t\t\t#Resistance to convetion from inner side of math.tank[degree Celcius/W]\n", + "R_sphere = ((D2-D1)/2)/(4*math.pi*k*(D1/2)*(D2/2))\t\t\t#Resismath.tance to conduction due to ice sphere[degree Celcius/W]\n", + "R_out = 1/(h_out*A2)\t\t\t#Resistance to convection from outer side of math.tank[degree Celcius/W]\n", + "R_rad = 1/(h_rad*A2)\t\t\t#Resistance to radiation heat transfer[degree Celcius/W]\n", + "\n", + "#R_out and R_rad are in parallel connection,\n", + "R_eq = (1/((1/R_out)+(1/R_rad)))\t\t\t#[degree Celcius/W]\n", + "#R_in,R_sphere and R_eq are connected in series\n", + "R_total = R_in+R_sphere+R_eq\t\t\t#[degree Celcius/W]\n", + "Q_ = (T_tank-T_ice)/R_total\t\t\t#[W]\n", + "print \"The steady rate of heat transfer to the iced water is\",Q_,\"W\"\n", + "print (\"We determine outer surface temperature to check the validity of assumption\")\n", + "T2 = T_tank-(Q_*R_eq)\t\t\t#[K]\n", + "print T2,\"K\"\n", + "print (\"which is sufficiently close to 278 K\")\n", + "\n", + "#b)\n", + "delta_t = 24\t\t\t#Time duration[h]\n", + "Q = Q_*delta_t*(3600/1000)\t\t\t#[kJ]\n", + "print \"The total amount of heat transfer during a 24 hour period is\",Q,\"kJ\"\n", + "\n", + "#It takes 333.7 kJ of energy to melt 1kg of ice at 0 degree Celcius\n", + "m_ice = Q/heat_f\t\t\t#[kg]\n", + "print \"The amount of ice that will melt during 24h period is\",m_ice,\"kg\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.8" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Steady rate of heat loss from the steam per m length of pipe is 120.786091657 W\n", + "The temperature drop across the pipe and the insulation is respectively 0.022902683016 and 283.587668342 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss through an Insulated Steam Pipe\n", + "\n", + "# Variables\n", + "T_steam = 320.\t\t\t#[degree Celcius]\n", + "T_surr = 5.\t\t \t#[degree Celcius]\n", + "k_iron = 80. \t\t#Thermal conductivity of cast iron[W/m.degree Celcius]\n", + "k_insu = 0.05\t \t\t#Thermal conductivity of glass wool insulation[W/m.degree Celcius]\n", + "h_out = 18.\t \t\t#Covection heat transfer coefficient outside the pipe[w/m**2.degree Celcius]\n", + "h_in = 60.\t\t \t#Covection heat transfer coefficient insideside the pipe[w/m**2.degree Celcius]\n", + "D_in = 0.05\t\t\t #Inner diameter of pipe[m]\n", + "D_out = 0.055\t\t\t#Outer diameter of pipe[m]\n", + "t = 0.03\t\t \t#Thickness of insulation[m]\n", + "r = (D_out/2)+t\t\t\t#Effective outer radius[m]\n", + "L = 1. \t\t\t#Length of pipe[m]\n", + "\n", + "# Calculations\n", + "#Areas of surfaces math.exposed to convection\n", + "A1 = 2*math.pi*(D_in/2)*L\t\t\t#Inner Area of pipe[m**2]\n", + "A2 = 2*math.pi*(r)*L\t\t\t#Outer Area of pipe[m**2\n", + "#Individual Thermal Resismath.tances\n", + "R_conv_in = 1/(h_in*A1)\t\t\t#Resismath.tance to convetion from inner surface of pipe[degree Celcius/W]\n", + "R_pipe = (math.log(D_out/D_in))/(2*math.pi*k_iron*L)\t\t\t#Resimath.tance to conduction through iron pipe[degree Celcius/W]\n", + "R_insu = (math.log(r/(D_out/2)))/(2*math.pi*k_insu*L)\t\t\t#Resismath.tance to conduction through insulation[degree Celcius/W]\n", + "R_conv_out = 1/(h_out*A2)\t\t\t#Resismath.tance to convetion from outer surface of insulation on pipe[degree Celcius/W]\n", + "#All resismath.tances are in series\n", + "R_total = R_conv_in+R_pipe+R_insu+R_conv_out\t\t\t#Total Resismath.tance[degree Celcius]\n", + "Q_ = (T_steam-T_surr)/R_total\t\t\t#[W]\n", + "\n", + "# Results\n", + "print \"The Steady rate of heat loss from the steam per m length of pipe is\",Q_,\"W\"\n", + "delta_T_pipe = Q_*R_pipe\t\t\t#[degree Celcius]\n", + "delta_T_insu = Q_*R_insu\t\t\t#[degree Celcius]\n", + "print \"The temperature drop across the pipe and the insulation is respectively\" \\\n", + ",delta_T_pipe,\"and\",delta_T_insu,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.9" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Heat generated in the wire is 80 W\n", + "The interface temperature is 105.014629738 degree Celcius\n", + "The critical radius of insulation of the plastic cover is 12.5 mm\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss from an Insulated Electric Wire\n", + "\n", + "# Variables\n", + "k_insu = 0.15\t\t\t#[W/m.degree Celcius]\n", + "V = 8\t\t\t#Voltage drop across wire[Volts]\n", + "I = 10\t\t\t#Current flowimg through the wire[Amperes]\n", + "T_atm = 30\t\t\t#Temperature of atmosphere to which wire is math.exposed[degree Celcius]\n", + "h = 12\t\t\t#heat transfer coefficient[W/m**2.degree Celcius]\n", + "L = 5\t\t\t#length of wire[m]\n", + "D = 0.003\t\t\t#diameter of wire[m]\n", + "t = 0.002\t\t\t#thickness of insulation[m]\n", + "r = (D/2)+t\t\t\t#Effective radius[m]\n", + "\n", + "# Calculations and Results\n", + "#Rate of heat generated in the wire becomes equal to the rate of heat transfer\n", + "Q_ = V*I\t\t\t#[W]\n", + "print \"Heat generated in the wire is\",Q_,\"W\"\n", + "A2 = 2*math.pi*r*L\t\t\t#Outer surface area[m**2]\n", + "\n", + "#Resistances offered\n", + "R_conv = 1/(h*A2)\t\t\t#Convection resismath.tance for the outer sueface of insulation[degree Celcius/W]\n", + "R_insu = (math.log(r/(D/2)))/(2*math.pi*k_insu*L)\t\t\t#Conduction resimath.tance for the plastic insulation[degree Celcius/W]\n", + "#Effective Resistance\n", + "R_total = R_conv+R_insu\t\t\t#[degree Celcius/W]\n", + "#Interface Temperature can be determined from\n", + "T1 = T_atm+(Q_*R_total)\t\t\t#[degree Celcius]\n", + "print \"The interface temperature is\",T1,\"degree Celcius\"\n", + "\n", + "#Critical radius \n", + "r_cr = k_insu/h\t\t\t#[m]\n", + "print \"The critical radius of insulation of the plastic cover is\",r_cr*1000,\"mm\"\n", + "#Larger value of critical radius ensures that increamathsing the thickness \n", + "# of insulation upto critical radius will increase the rate of heat transfer\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.10" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The given power transistor should not be operated at power levels above 3.0 W\n", + "if is its case temperature is not to exceed 85 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Maximum Power dissipation of a Transistor\n", + "\n", + "# Variables\n", + "T_ambient = 25.\t\t \t#Ambient temperature[degree Celcius]\n", + "T_case = 85.\t\t\t #Maximum temperature of the case[degree Celcius]\n", + "R_case_ambient = 20.\t\t#Resismath.tance for convection b/w case and ambient [degree Celcius/W]\n", + "\n", + "# Calculations\n", + "Q_ = (T_case-T_ambient)/R_case_ambient\t\t\t#[W]\n", + "\n", + "# Results\n", + "print \"The given power transistor should not be operated at power levels above\",Q_,\"W\"\n", + "print (\"if is its case temperature is not to exceed 85 degree Celcius\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.11" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thermal resistance b/w the transistor attached to the heat sink and the ambient air for the specified temperature difference is 1.0 degree Celcius/W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Selecting a Heat Sink for a Transistor\n", + "\n", + "# Variables\n", + "Q_ = 60. \t\t\t#Rate of heat transfer from given transistor at at full power[W]\n", + "T_ambient = 30.\t\t\t#Temperature of ambient air[degree Celcius]\n", + "T_case = 90\t\t\t#Maximum temperature of case[degree Celcius]\n", + "\n", + "# Calculations\n", + "R_math_sink = (T_case-T_ambient)/Q_\t\t\t#[degree Celcius/W]\n", + "\n", + "# Results\n", + "print \"The thermal resistance b/w the transistor attached to the heat sink\\\n", + " and the ambient air for the specified temperature difference is \",R_math_sink,\"degree Celcius/W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.12" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "In case of no fins\n", + "Rate of heat transfer when no finis attached 537.212343764 W\n", + "0.206559111798\n", + "Heat transfer due to the finned tube 25.3048502407 W\n", + "Heat transfer from the unfinned portion of the tube is 1.61163703129 W\n", + "The total Heat transfer from the finned tube is 5383.29745439 W\n", + "The increase in heat transfer from the tube per meter of length as a result of the addition of fins is 4846.08511062 W\n", + "The rate of heat transfer from the steam tube increases by a factor of 10.0208 as a result of adding fins\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Effect of fins on Heat transfer from steam pipes\n", + "\n", + "# Variables\n", + "k_fin = 180\t\t\t#thermal conductivity of aluminium alloy fins[W/m.degree Celcius]\n", + "D_tout = 0.03\t\t\t#Outer diameter of tube[m]\n", + "D_fout = 0.06\t\t\t#Outer diameter of circular fins[m]\n", + "t = 0.002\t\t\t#thickness of fin[m]\n", + "s = 0.003\t\t\t#dismath.tance between fins attached to the tube[m]\n", + "n = 200\t\t\t#number of fins per meter of tube\n", + "L = 1\t\t\t#length of tube[m]\n", + "T_surr = 25\t\t\t#Surrounding temperature[degree Celcius]\n", + "T_wall = 120\t\t\t#Temperature of wall of the tube[degree Celcius]\n", + "h = 60\t\t\t#Combined heat transfer coefficient[W/m**2.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "print (\"In case of no fins\")\n", + "A_nf = math.pi*D_tout*L\t\t\t#Area of tube with no fins attached[m**2]\n", + "\n", + "#Using Newton's Law of cooling\n", + "Q_nf = h*A_nf*(T_wall-T_surr)\t\t\t#[W]\n", + "print \"Rate of heat transfer when no finis attached\",Q_nf,\"W\"\n", + "\n", + "#The efficiency of the circular fins attached to a circular tube is plotted in Fig 3.43\n", + "L_fin = (D_fout-D_tout)/2\t\t\t#[m]\n", + "#In this case we have following corrected parameters\n", + "r2c = (D_fout+t)/2\t\t\t#[m]\n", + "Lc = L_fin+(t/2)\t\t\t#[m]\n", + "Ap = Lc*t\t\t\t#[m**2]\n", + "r = r2c/(D_tout/2);\n", + "alpha = (Lc*math.sqrt(Lc))*math.sqrt(h/(k_fin*Ap))\t\t\t#efficiency\n", + "print (alpha)\n", + "\n", + "#for above value of alpha efficiency is found out from the plot in fig 3.43\n", + "neta = 0.96;\n", + "A_f = 2*math.pi*((r2c**2)-((D_tout/2)**2))\t\t\t#Area of tube with fins attached to it[m**2]\n", + "Q_f_max = h*A_f*(T_wall-T_surr)\t\t\t#maximum rate of heat transfer[W]\n", + "Q_f = neta*Q_f_max\t\t\t#Heat transfer through tube with fins is efficiency times the maximum rate of heat transfer[W]\n", + "print \"Heat transfer due to the finned tube\",Q_f,\"W\"\n", + "\n", + "#From unfinned portion\n", + "A_uf = math.pi*D_tout*s\t\t\t # Unfinned area between two consecutive fins[m**2]\n", + "Q_uf = h*A_uf*(T_wall-T_surr)\t\t\t# [W]\n", + "print \"Heat transfer from the unfinned portion of the tube is\",Q_uf,\"W\"\n", + "\n", + "#Since there are 200 fins per meter of the tube hence 200 interfin spacing \n", + "Q_tf = n*(Q_f+Q_uf)\t\t\t #[W]\n", + "print \"The total Heat transfer from the finned tube is\",Q_tf,\"W\"\n", + "Q_increase = Q_tf-Q_nf\t\t\t #[W]\n", + "print \"The increase in heat transfer from the tube per meter of\\\n", + " length as a result of the addition of fins is\",Q_increase,\"W\"\n", + "eff = Q_tf/Q_nf\t\t\t #Effectiveness\n", + "print \"The rate of heat transfer from the steam tube increases by a factor of\",eff,\n", + "print (\"as a result of adding fins\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.13" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape factor is 62.9213634607\n", + "The steady rate of heat transfer from the pipe is 3964.04589803 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss from Buried Steam Pipes\n", + "\n", + "# Variables\n", + "T_esurf = 10\t\t\t#Surface temperatur of earth[degree Celcius]\n", + "T_psurf = 80\t\t\t#Outer surface temperature of pipe[degree Celcius]\n", + "k_soil = 0.9 #Thermal Conductivity of soil[W/m.degree Celcius]\n", + "L = 30\t\t \t #Length of pipe[m]\n", + "D = 0.1\t \t \t#Diameter of pipe[m]\n", + "z = 0.5\t\t\t #Depth at which pipe is kept[m]\n", + "\n", + "# Calculations and Results\n", + "#Calculating shape factor\n", + "if(z>(1.5*D)):\n", + " S = (2*math.pi*L)/(math.log((4*z)/D)) #[m]\n", + "\n", + "print \"Shape factor is\",S\n", + "Q_ = S*k_soil*(T_psurf-T_esurf)\t\t\t#[W]\n", + "print \"The steady rate of heat transfer from the pipe is\",Q_,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.14" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shave factor for given configuration is 9.18907197502e-30 m\n", + "The steady rate of heat transfer between the pipes becomes 3.79049218969e-28 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Transfer between Hot and Cold Water pipes\n", + "\n", + "# Variables\n", + "T_hot = 70.\t\t\t#Surface Temperature of hot pipe[degree Celcius]\n", + "T_cold = 15.\t\t#Surface Temperature of cold pipe[degree Celcius]\n", + "L = 5\t\t \t#Length of both pipes[m]\n", + "D = 0.05\t\t\t#Diameter of both the pipes[m]\n", + "z = 0.3\t \t\t#Dismath.tance between centreline of both the pipes[m]\n", + "k = 0.75\t\t\t#Thermal Conductivity of the concerte[W/m.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "#Calculating Shape Factor\n", + "S = (2*math.pi*L)/(math.cosh(((4*(z**2))-(D**2)-(D**2))/(2*D*D)))\t\t\t#[m]\n", + "print \"Shave factor for given configuration is\",S,\"m\"\n", + "Q_ = S*k*(T_hot-T_cold)\t\t\t#[W]\n", + "print \"The steady rate of heat transfer between the pipes becomes\",Q_,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.15" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The steady rate of heat transfer through the walls of the house is 925.699540089 W\n", + "The total amount of heat lost through the walss during a 24 hour period 22.2167889621 kWh/day\n", + "Cost of heat consumption is $ 1.66625917216 per day\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cost of Heat Loss through walls in winter\n", + "\n", + "# Variables\n", + "R_va_insu = 2.3\t\t\t#thickness to thermal conductivity ratio[m**2.degreeCelcius/W]\n", + "L1 = 12. \t\t\t#length of first wall of house[m]\n", + "L2 = 12.\t \t\t#length of second wall of house[m]\n", + "L3 = 9.\t \t \t#length of third wall of house[m]\n", + "L4 = 9.\t\t \t#length of fourth wall of house[m]\n", + "H = 3.\t\t\t #height of all the walls[m]\n", + "T_in = 25.\t\t\t #Temperature inside house[degree Celcius]\n", + "T_out = 7.;\t\t\t #average temperature of outdoors on a certain day[degree Celcius]\n", + "ucost = 0.075 \t\t#Unit Cost of elctricity[$/kWh]\n", + "h_in = 8.29\n", + "h_out = 34.0\t\t\t#Heat transfer coefficients for inner and outer surface of the walls respectively[W/m**2.degree Celcius]\n", + "v = 24*(3600./1000)\t\t\t#velocity of wind[m/s]\n", + "\n", + "# Calculations and Results\n", + "#Heat transfer Area of walls = (Perimeter*Height)\n", + "A = (L1+L2+L3+L4)*H\t\t\t#[m**2]\n", + "#Individual Resismath.tances\n", + "R_conv_in = 1/(h_in*A)\t\t\t#Convection Resismath.tance on inner surface of wall[degree Celcius/W]\n", + "R_conv_out = 1/(h_out*A)\t\t\t#Convection Resismath.tance on outer surface of wall[degree Celcius/W]\n", + "R_wall = R_va_insu/A\t\t\t#Conduction resismath.tance to wall[degree Celcius/W]\n", + "\n", + "#All resistances are in series\n", + "R_total = R_conv_in+R_wall+R_conv_out\t\t\t#[degree Celcius/W]\n", + "Q_ = (T_in-T_out)/R_total\t\t\t#[W]\n", + "print \"The steady rate of heat transfer through the walls of the house is\",Q_,\"W\"\n", + "delta_t = 24\t\t\t #Time period[h]\n", + "Q = (Q_/1000)*delta_t\t\t\t#[kWh/day]\n", + "print \"The total amount of heat lost through the walss during a 24 hour period \",Q,\"kWh/day\"\n", + "cost = Q*ucost \t\t\t#[$/day]\n", + "print \"Cost of heat consumption is $\",cost,\"per day\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.16" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overall U factor is 0.553401639344 W/m**\n", + "Overall unit thermal Resistance is 1.80700585055 degree Celcius.m**2/W\n", + "The rate of heat loss through the walls under design conditions is 1328.16393443 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# The R-value of a Wood Frame Wall\n", + "\n", + "# Variables\n", + "f_area_insu = 0.75\t\t\t#area fraction for the insulation section\n", + "f_area_stud = 0.25\t\t\t#area fraction for the stud\n", + "R_bstud = 3.05\t\t\t#Total unit thermal resismath.tance of section between studs[m**.degree Celcius/W]\n", + "R_atstud = 1.23\t\t\t#Total unit thermal resismath.tance of section at studs[m**.degree Celcius/W]\n", + "P = 50\t\t\t#Perimeter of the building[m]\n", + "H = 2.5\t\t\t#height of the walls[m]\n", + "T_in = 22\t\t\t#Temperature inside the walls[degree Celcius]\n", + "T_out = -2\t\t\t#Temperature outside the walls[degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "U_bstud = 1/R_bstud\t\t\t#[W/m**2.degree Celcius]\n", + "U_atstud = 1/R_atstud\t\t\t#[W/m**2.degree Celcius]\n", + "Total_U = (f_area_insu*U_bstud)+(f_area_stud*R_atstud)\t\t\t#[W/m**2.degree Celcius]\n", + "print \"Overall U factor is\",Total_U,\"W/m**\"\n", + "print \"Overall unit thermal Resistance is\",(1/Total_U),\"degree Celcius.m**2/W\"\n", + "\n", + "#/Since glazing constitutes 20% of the walls,\n", + "A_wall = (0.80)*P*H\t\t\t#[m**2]\n", + "Q_ = Total_U*A_wall*(T_in-T_out)\t\t\t#[W]\n", + "print \"The rate of heat loss through the walls under design conditions is\",Q_,\"W\"\n", + "#Answer is slighthly different from book because of no of digits after decimal pont used here is quite large\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.17" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Old R value is 2.23 m**2.degree Celcius/W\n", + "New R value is 2.98 m**2.degree Celcius/W\n", + "Percent increase in R-value 33.6322869955\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# The R value of a Wall with Rigid Foam\n", + "\n", + "# Variables\n", + "#using values from previous \n", + "R_old = 2.23\t\t\t#AS written in book[m**2.degree Celcius/W]\n", + "#R value of of the fibreboard and the foam insulation, respectively\n", + "R_removed = 0.23\t\t\t#[m**2.degree Celcius/W]\n", + "R_added = 0.98\t\t\t#[m**2.degree Celcius/W]\n", + "\n", + "# Calculations\n", + "R_new = R_old-R_removed+R_added\t\t\t#[m**2.degree Celcius/W]\n", + "increase = ((R_new-R_old)/R_old)*100;\n", + "\n", + "# Results\n", + "print \"Old R value is\",R_old,\"m**2.degree Celcius/W\"\n", + "print \"New R value is\",R_new,\"m**2.degree Celcius/W\"\n", + "print \"Percent increase in R-value\",increase\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch4.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch4.ipynb new file mode 100644 index 00000000..c369910a --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch4.ipynb @@ -0,0 +1,652 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 4 : Transient Heat Conduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Since Bi = 0.001\n", + "is less than 0.1 hence lumped system is applicable and the error involved in this approximation is negligible\n", + "Time constant for given lumped heat capacity system 0.463235294118 s**(-1)\n", + "Required time is 10.0 seconds\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Temperature Measurement by Thermocouples\n", + "\n", + "# Variables\n", + "#Temperature of a gas stream is to be measured by a thermocouple whose junction can be approximated as a sphere\n", + "D = 0.001\t\t\t#Diameter of junction sphere[m]\n", + "#Properties of the junction\n", + "k = 35.\t\t \t#Thermal conductivity[W/m.degree Celcius]\n", + "rho = 8500.\t\t\t#desity[kg/m**3]\n", + "Cp = 320.\t\t\t#Specific heat[J/kg.degree Celcius] \n", + "h = 210. \t\t#Convection heat transfer coefficient between junction and the gas[W/m**2.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "Lc = (((math.pi/6)*(D**3))/(math.pi*(D**2)))\t\t\t#The characteristic length of the junction[m]\n", + "Bi = h*Lc/k\t\t\t#Biot Number\n", + "if(Bi<0.1):\n", + " print \"Since Bi = \",Bi\n", + " print (\"is less than 0.1 hence lumped system is applicable and the error involved\\\n", + " in this approximation is negligible\")\n", + "\n", + "b = h/(rho*Cp*Lc)\t\t\t#math.exponent time consmath.tant[s**(-1)]\n", + "print \"Time constant for given lumped heat capacity system\",b,\"s**(-1)\"\n", + "\n", + "#In order to read 99% of intial temperature difference between the junction and the gas we must have ((T(t)-T_end)/(Ti-T_end)) = 0.01\n", + "t = -1*(math.log(0.01))/b;\n", + "print \"Required time is\",round(t),\"seconds\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lumped system analysis is not applicable, but we can still use it to get a rough estimate of time of death\n", + "As a rough estimate the person dies about 10.9400219974 hour\n", + "before the body was found\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Predicting the time of Death\n", + "\n", + "# Variables\n", + "T_room = 20\t\t\t#Temperature of room[degree Celcius]\n", + "T_body_f = 25\t\t\t#Temperature of dead body after some time[degree Celcius]\n", + "T_body_i = 37\t\t\t#Temperature of dead body just after death[degree Celcius]\n", + "h = 8\t\t\t#Heat transfer Coefficient[W/m**2.degree Celcius]\n", + "L = 1.7\t\t\t#Length of body which is assumed to be cylindrical in shape[m]\n", + "r = 0.15\t\t\t#Radius of cylindrical body\n", + "#Average human body is 72% water by mass, thus we assumne body to have properties of water\n", + "rho = 996\t\t\t#Density[kg/m**3]\n", + "k = 0.617\t\t\t#Thermal conductivity[W/m.degree Celcius]\n", + "Cp = 4178\t\t\t#Specific Heat[J/kg.degree Celcius]\n", + "\n", + "# Calculations\n", + "Lc = (math.pi*(r**2)*L)/((2*math.pi*r*L)+(2*math.pi*(r**2)))\t\t\t#Characteristic length of body[m]\n", + "Bi = (h*Lc)/k\t\t\t#Biot no\n", + "if(Bi>0.1):\n", + " print (\"lumped system analysis is not applicable, but we can still use it\\\n", + " to get a rough estimate of time of death\")\n", + "b = h/(rho*Cp*Lc)\t\t\t#[s**(-1)]\n", + "x = (T_body_i-T_room)/(T_body_f-T_room);\n", + "#math.exp(-b*t) = x;\n", + "t = (1./b)*math.log(x)\t\t\t#time elapsed[seconds]\n", + "\n", + "# Results\n", + "print \"As a rough estimate the person dies about\",t/3600,\"hour\"\n", + "print (\"before the body was found\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.3" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the lumped system analysis is not applicable\n", + "Fourier no is 0.208501920689\n", + "The time taken for center of egg to reach 70 degree Celcius temperature 14.3834106435 minutes\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Boiling Eggs\n", + "\n", + "# Variables\n", + "T1 = 5.\t \t\t#Initial temperature of egg[degree Celcius]\n", + "T2 = 95.\t\t\t#Temperature of Boiling Water[degree Celcius]\n", + "h = 1200.\t\t\t#Convection heat transfer coefficient of egg[W/m**2.degree Celcius]\n", + "r = 0.025\t\t\t#Radius of egg[m]\n", + "T3 = 70\t\t \t#Final temperature attained by centre of egg[degree Celcius]\n", + "k = 0.627\t\t\t#Thermal conductivity[W/m.degree Celcius]\n", + "a = 0.151*(10**(-6))\t\t\t#Thermal diffusivity[m**2/s]\n", + "\n", + "# Calculations\n", + "Bi = (h*r)/k\t\t\t#Biot Number\n", + "if(Bi>0.1):\n", + " print (\"the lumped system analysis is not applicable\")\n", + " #Findinf coefficient for a sphere corresponding to this bi are,\n", + " lambda1 = 3.0754\n", + " A1 = 1.9959;\n", + " x = (T3-T2)/(T1-T2);\n", + " tau = (-1/(lambda1**2))*math.log(x/A1);\n", + " print \"Fourier no is\",tau\n", + " #Since fourier no is greater than 0.2, cooking time is determined from the definition of fourier no to be\n", + " t = (tau*(r**2))/a\t\t\t#[seconds]\n", + " print \"The time taken for center of egg to reach 70 degree Celcius temperature\",(t/60),\"minutes\"\n", + "else:\n", + " print (\"the lumped system is not applicable\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.4" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The surface temperature of the plates when they leave the oven will be 281.408 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "\n", + "# Variables\n", + "# Heating of Brass Plates in an Oven\n", + "T_in = 20.\t\t\t#Initial uniform temperature of brass plate[degree Celcius]\n", + "T_f = 500.\t\t\t#Temperature of the oven[degree Celcius]\n", + "t = 7*60.\t\t\t#[seconds]\n", + "h = 120.\t\t\t#combined convection and radiation heat transfer coefficient[W/m**2.degree Celcius]\n", + "L = 0.04/2\t\t\t#Thickness of plate 2L = 0.004[m]\n", + "#Properties of brass at room temperature are:-\n", + "k = 110.\t\t\t#Thermal conductivity[W/m.degree Celcius]\n", + "rho = 8530.\t\t\t#density[kg/m**3]\n", + "Cp = 380.\t\t\t#Specific Heat Capacity[J.kg.degree Celcius]\n", + "a = 33.9*(10**(-6))\t\t\t#Thermal Diffusivity[m**2/s]\n", + "\n", + "# Calculations\n", + "Bi1 = 1/(k/(h*L));\n", + "tau1 = (a*t)/(L**2);\n", + "#For above values of biot no and fourier no we have\n", + "p = 0.46\t\t\t# p = (T0-T_f)/(T_in-T_f),where T0 is temperature of inner surface of plate at time t\n", + "x = L;\n", + "Bi2 = Bi1;\n", + "#For above condition of x/L ratio and Biot number we have\n", + "q = 0.99\t\t\t#q = (T-T_f)/(T_in-T_f), where T is temperature of outer surface of plate after time t\n", + "T = T_f+((p*q)*(T_in-T_f))\t\t\t#[degree Celcius]\n", + "\n", + "# Results\n", + "print \"The surface temperature of the plates when they leave the oven will be\",T,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.5" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The center temperature of the shaft after 45 minutes is 360.0 degree Celcius\n", + "The total heat transfer from the shaft during 45 minutes of cooling is 29359.0 kJ\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling of a long Stainless Steel Cylindrical Shaft\n", + "\n", + "# Variables\n", + "Ti = 600.\t\t\t#Temperature of cylinder just after taking it out of the oven[degree Celcius]\n", + "h = 80. \t\t\t#average heat transfer coefficient[W/m**2.degree Celcius] \n", + "t = 45.*60\t\t\t#Time for cooling[seconds]\n", + "r = 0.1\t \t\t#Radius of cylinder[m]\n", + "l = 1.\t\t \t#Length of cylinder[m]\n", + "#Properties of stainless steel cylinder\n", + "k = 14.9\t\t\t#Thermal conductivity[W/m.degree Celcius]\n", + "rho = 7900.\t\t\t#Density[kg/m**3]\n", + "Cp = 477.\t\t\t#Specific Heat Capacity[J/kg.degree Celcius]\n", + "a = 3.95*(10**(-6))\t\t\t#Thermal diffusivity[m**2/s]\n", + "T_f = 200.\t\t\t#Ambient temperature[degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "Bi1 = (h*r)/k;\n", + "tau1 = (a*t)/(r**2);\n", + "#For biot no = Bi1 and fourier no = tau1,we have\n", + "p = 0.40\t\t\t#p = (T(0)-T_f)/(Ti-T_f) \n", + "T_0 = T_f+(p*(Ti-T_f))\t\t\t#[degree Celcius]\n", + "print \"The center temperature of the shaft after 45 minutes is\",T_0,\"degree Celcius\"\n", + "\n", + "#Determining actual heat transfer\n", + "m = rho*math.pi*(r**2)*l\t\t\t #[kg]\n", + "Q_max = m*Cp*(Ti-T_f)*(1./1000)\t\t\t#[kJ]\n", + "x = (Bi1**2)*tau1;\n", + "#For biot no = Bi1 and (h**2)at/(k**2) = x, we have\n", + "y = 0.62\t\t\t#y = Q/Q_max \n", + "Q = y*Q_max\t\t\t#[kJ]\n", + "print \"The total heat transfer from the shaft during 45 minutes of cooling is\",round(Q),\"kJ\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.6" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Water pipes must be burried to a depth of at least 0.7776 m\n", + "so as to avoid freezing under the specified harsh winter conditions\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Minimum Burial Depth of Water Pipes to avoid Freezing\n", + "\n", + "# Variables\n", + "#Soil properties:-\n", + "k = 0.4\t\t\t#Thermal conductivity[W/m.degree Celcius]\n", + "a = 0.15*(10**(-6))\t\t\t#Thermal diffusivity[m**2/s]\n", + "T_in = 15\t\t\t#Initial uniform temperature of ground[degree Celcius]\n", + "T_x = 0\t\t\t#Temperature after 3 months[degree Celcius]\n", + "Ts = -10\t\t\t#Temperature of surface[degree Celcius]\n", + "\n", + "# Calculations\n", + "#The temperature of the soil surrounding the pipes wil be 0 degree Celcius after three months in the case of minimum burial depth, therefore we have\n", + "x = (h/k)*(math.sqrt(a*t));\n", + "#Since h tends to infinty\n", + "#x = %inf;\n", + "y = (T_x-T_in)/(Ts-T_in);\n", + "#For values of x and y we have\n", + "neta = 0.36;\n", + "t = 90*24*60*60\t\t\t#[seconds]\n", + "x = 2*neta*math.sqrt(a*t)\t\t\t#[m]\n", + "\n", + "# Results\n", + "print \"Water pipes must be burried to a depth of at least \",x,\"m\"\n", + "print (\"so as to avoid freezing under the specified harsh winter conditions\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.7" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The surface temperature fro both the wood and aluminium blocks are 148.612000286 and 22.0 degree Celcius respectively\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Surface Temperature Rise of Heated Blocks\n", + "\n", + "# Variables\n", + "flux = 1250.\t\t\t#Consmath.tant solar heat flux[W/m**2]\n", + "T = 20\t\t \t#Temperature of black painted wood block[degree Celcius]\n", + "k_wood = 1.26\t\t\t#Thermal conductivity of wood at room temperature[W/m.K]\n", + "a_wood = 1.1*(10**(-5))\t\t\t#Diffusivity of wood at room temperature[m**2/s]\n", + "k_aluminium = 237\t\t\t#Thermal conductivity of aluminium at room temperature[W/m.K]\n", + "a_aluminium = 9.71*(10**(-5))\t\t\t#Diffusivity of aluminium at room temperature[m**2/s]\n", + "t = 20*60\t\t\t#[seconds]\n", + "\n", + "# Calculations\n", + "Ts_wood = T+((flux/k_wood)*(math.sqrt((4*a_wood*t)/math.pi)))\t\t\t#[degree Celcius]\n", + "Ts_aluminium = T+((flux/k_aluminium)*(math.sqrt((4*a_aluminium*t)/math.pi)))\t\t\t#[degree Celcius]\n", + "\n", + "# Results\n", + "print \"The surface temperature fro both the wood and aluminium blocks are \" \\\n", + ",(Ts_wood),\"and\",round(Ts_aluminium),\"degree Celcius\",\"respectively\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.8" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the center of the plane wall\n", + "Fourier no and Biot no are 8.475 and 0.0327272727273 respectively\n", + "At the center of the cylinder\n", + "Fourier no and Biot no are 12.204 and 0.0272727272727 respectively\n", + "The temperature at the center of the short cylinder is 63.0 degree Celcius\n", + "The temperature at the top surface of the cylinder 62.0 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling of a Short Brass Cylinder\n", + "\n", + "# Variables\n", + "Ti = 120\t\t\t#Initial Temperature[degree Celcius]\n", + "T_ambient = 25\t\t\t#Temperature of atmospheric air[degree Celcius]\n", + "h = 60\t\t\t#convetcion heat transfer coefficient[W/m**2.degree Celcius]\n", + "r = 0.05\t\t\t#radius of cylinder[m]\n", + "L = 0.06\t\t\t#thickness[m]\n", + "a = 3.39*(10**(-5))\t\t\t#Diffusivity of brass[m**2/s]\n", + "k = 110\t\t\t#Thermal conductivity of brass[W/m.degree Celcius]\n", + "t = 900\t\t\t#[seconds]\n", + "\n", + "# Calculations and Results\n", + "print (\"At the center of the plane wall\")\n", + "tau1 = (a*t)/(L**2);\n", + "Bi1 = (h*L)/k;\n", + "print \"Fourier no and Biot no are\",tau1,\"and\",Bi1,\"respectively\"\n", + "print (\"At the center of the cylinder\")\n", + "\n", + "tau2 = (a*t)/(r**2);\n", + "Bi2 = (h*r)/k;\n", + "print \"Fourier no and Biot no are\",tau2,\"and\",Bi2,\"respectively\"\n", + "\n", + "theta_wall_c = 0.8\t\t\t#(T(0,t)-T_ambient)/(Ti-T_ambient)\n", + "theta_cyl_c = 0.5\t\t\t#(T(0,t)-T_ambient)/(Ti-T_ambient)\n", + "T_center = T_ambient+((theta_wall_c*theta_cyl_c)*(Ti-T_ambient))\t\t\t#[degree Celcius]\n", + "print \"The temperature at the center of the short cylinder is\",round(T_center),\"degree Celcius\"\n", + "\n", + "#Solution (b):-\n", + "#The centre of the top surface of the cylinder is still at the center of the lonf cylinder(r = 0),but at the outer surface of the plane wall(x = L).\n", + "x = L\t\t\t#[m]\n", + "y = x/L;\n", + "#For Bi = Bi1 and x = 1\n", + "theta_wall_L = 0.98*theta_wall_c\t\t\t#(T(L,t)-T_ambient)/(Ti-T_ambient)\n", + "T_surface = T_ambient+((theta_wall_L*theta_cyl_c)*(Ti-T_ambient))\t\t\t#[degree Celcius]\n", + "print \"The temperature at the top surface of the cylinder\",round(T_surface),\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.9" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the center of the plane wall\n", + "At the center of the cylinder\n", + "The total heat transfer from the cylinder during the first 15 minutes of cooling is 171.781226985 kJ\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat transfer from a Short Cylinder\n", + "\n", + "# Variables\n", + "Ti = 120.\t\t\t#Initial Temperature[degree Celcius]\n", + "T_ambient = 25.\t\t#Temperature of atmospheric air[degree Celcius]\n", + "rho = 8530.\t\t\t#density of brass cyliner[kg/m**3]\n", + "Cp = 0.380\t\t\t#Specific heat of brass cylinder[kJ/kg.degree Celcius]\n", + "r = 0.05\t\t\t#radius[m]\n", + "H = 0.12\t\t\t#Height of cylinder[m]\n", + "h = 60. \t\t\t#convetcion heat transfer coefficient[W/m**2.degree Celcius]\n", + "a = 3.39*(10**(-5))\t\t\t#Diffusivity of brass [m**2/s]\n", + "k = 110. \t\t#Thermal conductivity of brass[W/m.degree Celcius]\n", + "L = 0.06\t\t\t#[m]\n", + "t = 900\t\t \t#[seconds]\n", + "\n", + "# Calculations\n", + "m = rho*(math.pi*(r**2)*H)\t\t\t#mass of cylinder[kg]\n", + "Q_max = m*Cp*(Ti-T_ambient)\t\t\t#[kJ]\n", + "print (\"At the center of the plane wall\")\n", + "tau1 = (a*t)/(L**2);\n", + "Bi1 = (h*L)/k;\n", + "x = (Bi1**2)*tau1;\n", + "\n", + "#For given x and Bi1\n", + "p = 0.23\t\t\t#(Q/Qmax) for plane wall\n", + "print (\"At the center of the cylinder\")\n", + "tau2 = (a*t)/(r**2);\n", + "Bi2 = (h*r)/k;\n", + "y = (Bi2**2)*tau2;\n", + "\n", + "#For given y and Bi2\n", + "q = 0.47\t\t\t#(Q/Qmax) for infinite cylinder\n", + "Q = Q_max*(p+(q*(1-p)))\t\t\t#[kJ]\n", + "print \"The total heat transfer from the cylinder during the first 15 minutes of cooling is\",Q,\"kJ\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.10" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the temperature at the center of the cylinder 15cm from the exposed bottom surface 150.618494515 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "\n", + "# Cooling of a Long Cylinder by Water\n", + "\n", + "# Variables\n", + "Ti = 200. \t\t#Initial Temperature of aluminium cylinder[degree Celcius]\n", + "Tf = 15.\t\t\t#Temperature of water in which cylinder is kept[degree Celcius]\n", + "h = 120.\t\t\t#Heat transfer Coefficent[W/m**2.degree Celcius]\n", + "t = 5*60.\t\t\t#[seconds]\n", + "#Properties of aluminium at room temperature\n", + "k = 237\t\t\t#Thermal conductivity[W/m.degree Celcius]\n", + "a = 9.71*(10**(-5))\t\t\t#Thermal diffusivity[m**/s]\n", + "r = 0.1\t\t\t#Radius of cylinder[m]\n", + "x = 0.15\t\t\t#[m]\n", + "\n", + "# Calculations\n", + "Bi = (h*r)/k\t\t\t#Biot number\n", + "#Corresponding to this biot no coefficients for a cylinder\n", + "lambda_ = 0.3126\n", + "A = 1.0124;\n", + "tau = (a*t)/(r**2);\n", + "#Umath.sing one term approximation\n", + "theta0 = A*math.exp(-(lambda_**2)*tau);\n", + "neta = x/(2*math.sqrt(a*t));\n", + "u = (h*math.sqrt(a*t))/k;\n", + "v = (h*x)/k;\n", + "w = (u**2);\n", + "theta_semiinfinite = 1-math.erfc(neta)+(math.exp(v+w)*math.erfc(neta+u));\n", + "theta = theta_semiinfinite*theta0;\n", + "T_x_t = Tf+(theta*(Ti-Tf))\t\t\t#[degree Celcius]\n", + "\n", + "# Results\n", + "print \"the temperature at the center of the cylinder 15cm from the exposed bottom surface\",(T_x_t),\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.11" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The convection heat transfer coefficient should be kept below the value 20.0 W/m**2.degree Celcius\n", + "to satisfy the constraints on the temperature of the steak during refrigeration\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Refrigerating Steaks while Avoiding Frostbite\n", + "\n", + "# Variables\n", + "Ti = 25 \t\t\t#Initial temperature of steaks[degree Celcius]\n", + "Tf = -15\t\t\t#Temperature of refrigerator[degree Celcius]\n", + "L = 0.015\t\t\t#Thickness of steaks[m]\n", + "#Properties of steaks\n", + "k = 0.45\t\t\t#[W/m.degree Celcius]\n", + "rho = 1200\t\t\t#density[kg/m**3]\n", + "a = 9.03*(10**(-8))\t\t\t#Thermal diffusivity[m**2/s]\n", + "Cp = 4.10\t\t\t#Specific Heat [kJ/kg]\n", + "T_L = 2\n", + "T_0 = 8\t\t\t#[degree Celcius]\n", + "\n", + "# Calculations\n", + "#In the limiting case the surface temperature at x = L from the centre will be 2 degree C,while midplane temperature is 8 degree C in an environment at -15 degree C we have\n", + "x = L;\n", + "p = (T_L-Tf)/(T_0-Tf);\n", + "#For this value of p we have\n", + "Bi = 1/1.5\t\t\t#Biot number\n", + "h = (Bi*k)/L\t\t\t#[W/m**2.degree Celcius]\n", + "\n", + "# Results\n", + "print \"The convection heat transfer coefficient should be kept below the value\",h,\"W/m**2.degree Celcius\"\n", + "print (\"to satisfy the constraints on the temperature of the steak during refrigeration\")\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch5.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch5.ipynb new file mode 100644 index 00000000..43c00c89 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch5.ipynb @@ -0,0 +1,385 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 : Numerical Methods in Heat Conduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\n", + "from scipy.optimize import fsolve \n", + "import math \n", + "\n", + "# Steady Heat Conduction in a Large Uranium Plate\n", + "\n", + "# Variables\n", + "L = 0.04\t\t\t#Thickness of plate[m]\n", + "k = 28\t\t\t#Thermal conductivity[W/m.degree Celcius]\n", + "e_gen = 5*(10**6)\t\t\t#Rate of heat generation per unit volume[W/m**3]\n", + "h = 45\t\t\t#Heat transfer coefficient[W/m**2]\n", + "T_ambient = 30\t\t\t#Ambient temperature[degree Celcius]\n", + "\n", + "# Calculations\n", + "M = 3\t\t\t#No of nodes\n", + "#These nodes are chosen to be at the two surfaces of the plate and the mid point\n", + "del_x = L/(M-1)\t\t\t#Nodal Spacing[m]\n", + "#Let the nodes be 0,1 and 2. and temperatures at these nodes are\n", + "T0 = 0\t\t\t#Temperature at node 0[degree Celcius]\n", + "#Finding temperatures at other two nodes umath.sing finite difference method\n", + "c1 = e_gen*(del_x**2)/k;\n", + "c2 = (-h*del_x*T_ambient/k)-(c1/2);\n", + "def f1(T):\n", + " temp = [0,0]\n", + " temp[0] = 2*T[0]-T[1]-c1;\n", + " temp[1] = T[0]-1.032*T[1]-c2;\n", + "#To find the solution assume an initial value x0 = [a,b]\n", + "#then equate [xs,fxs,m] = fsolve(f1,x0')\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "((5.5-m)T_(m-1))-((10.008-2m)Tm)+((4.5-m)T_m+1) = -0.29\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat transfer from triangular fins\n", + "\n", + "# Variables\n", + "k = 180 \t\t\t#Thermal conductivity of aluminium alloy[W/m.degree Celcius]\n", + "L = 0.05\t\t\t#length of fin[m]\n", + "b = 0.01\t\t\t#Base thickness of fin[m]\n", + "T_surr = 25\t\t\t#Temperature of surrounding[degree Celcius\n", + "h = 15\t\t\t#heat transfer coefficient[W/m**2.degree Celcius]\n", + "M = 6\t\t\t#No of equally spaced nodes along the fin\n", + "\n", + "# Calculations and Results\n", + "del_x = L/(M-1)\t\t\t#Nodal Spacing[m]\n", + "T0 = 200\t\t\t#Temperature at node 0[degree Celcius]\n", + "theta = math.tan(b/2*L);\n", + "#sigmaQ_all_sides = kA_left((T_(m-1)-T_m)/del_X)+((T_(m+1)-T_m)/del_x)+(hA_conv(T_surr-T_m)) = 0\n", + "#Simplifying above equation we get\n", + "print (\"((5.5-m)T_(m-1))-((10.008-2m)Tm)+((4.5-m)T_m+1) = -0.29\")\n", + "#Putting m = 1,2,3,4 we get five equations in five unknowns \n", + "#Solving these five equations we get temperatures at node 1,2,3,4 and 5 respectively\n", + "def f5(T):\n", + " node1 = -8.008*T[0]+3.5*T[1]+0*T[2]+0*T[3]+0*T[4]+900.209;\n", + " node2 = 3.5*T[0]-6.008*T[1]+2.5*T[2]+0*T[3]+0*T[4]+0.209;\n", + " node3 = 0*T[0]+2.5*T[1]-4.008*T[2]+1.5*T[3]+0*T[4]+0.209;\n", + " node4 = 0*T[0]+0*T[1]+1.5*T[2]-2.008*T[3]+0.5*T[4]+0.209;\n", + " node5 = 0*T[0]+0*T[1]+0*T[2]+1*T[3]-1.008*T[4]+0.209;\n", + " return node1\n", + " #Solution(b)\n", + " #T1 = T[0],T2 = T[1],T3 = T[2],T4 = T[3],T5 = T[4];\n", + " # w = 1\t\t\t#width[m]\n", + " # Q_fin = (h*w*del_x/math.cos(theta))*[(T0+2*(T1+T2+T3+T4)+T5-10*T_surr)]\t\t\t#[W]\n", + " # print \"The total rate of heat transfer from the fin is\",Q_fin,\"W\"\n", + " #Solution(c)\n", + "# Q_max = (h*2*w*L/math.cos(theta)*(T0-T_surr))\t\t\t#[W]\n", + "#neta = Q_fin/Q_max;\n", + "#print \"Efficiency of the fin is\",neta\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.3" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\n", + "import math \n", + "# SteadLy Two-Dimensional Heat Conduction in L-Bars\n", + "\n", + "# Variables\n", + "e_gen = 2*(10**6)\t\t\t#Heat generated per unit volume[W/m**3]\n", + "k = 15\t\t\t#Thermal heat conductivity[W/m.degree Celcius]\n", + "T_ambient = 25\t\t\t#Temperature of ambient air[degree Celcius]\n", + "T_surface = 90\t\t\t#Temperature of the bottom surface[degree Celcius]\n", + "h = 80#convection coefficient[W/m**2]\n", + "q_R = 5000\t\t\t#Heat flux to which right surface is subjected[W/m**2]\n", + "del_x = 0.012\n", + "del_y = 0.012\t\t\t#Dismath.tance between equally spaced nodes[m]\n", + "\n", + "# Calculations\n", + "#After substituing values in equations of all nodal points finally we have nine equation and nine unknowns\n", + "def f9(T):\n", + " temp[0] = -2.064*T[0]+1*T[1]+0*T[2]+1*T[3]+0*T[4]+0*T[5]+0*T[6]+0*T[7]+0*T[8]+11.2;\n", + " temp[1] = 1*T[0]-4.128*T[1]+1*T[2]+0*T[3]+2*T[4]+0*T[5]+0*T[6]+0*T[7]+0*T[8]+22.4;\n", + " temp[2] = 0*T[0]+1*T[1]-2.128*T[2]+0*T[3]+0*T[4]+1*T[5]+0*T[6]+0*T[7]+0*T[8]+12.8;\n", + " temp[3] = 1*T[0]+0*T[1]+0*T[2]-4*T[3]+2*T[4]+109.2;\n", + " temp[4] = 0*T[0]+1*T[1]+0*T[2]+1*T[3]-4*T[4]+1*T[5]+0*T[6]+0*T[7]+0*T[8]+109.2;\n", + " temp[5] = 0*T[0]+0*T[1]+1*T[2]+0*T[3]+2*T[4]-6.128*T[5]+1*T[6]+0*T[7]+0*T[8]+212.0;\n", + " temp[6] = 0*T[0]+0*T[1]+0*T[2]+0*T[3]+0*T[4]+1*T[5]-4.128*T[6]+1*T[7]+0*T[8]+202.4;\n", + " temp[7] = 0*T[0]+0*T[1]+0*T[2]+0*T[3]+0*T[4]+0*T[5]+1*T[6]-4.128*T[7]+T[8]+202.4;\n", + " temp[8] = 0*T[0]+0*T[1]+0*T[2]+0*T[3]+0*T[4]+0*T[5]+0*T[6]+1*T[7]-2.064*T[8]+105.2;\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.4" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\n", + "import math \n", + "from numpy import zeros\n", + "\n", + "# Heat Loss through Chimneys\n", + "\n", + "# Variablesa\n", + "k = 1.4\t\t\t#Thermal conductivity of concrete[W/m.degree Celcius]\n", + "A = 0.2*0.2\t\t\t#Area of flow section[m**2]\n", + "t = 0.2\t\t\t#Thickness of the wall[m]\n", + "Ti = 300+273\t\t\t#Average temperature of gases[K]\n", + "hi = 70\t\t\t#Convection heat transfer coefficient inside the chimney[W/m**2]\n", + "ho = 21\t\t\t#Convection heat transfer coefficient outside the chimney[W/m**2]\n", + "To = 20+273\t\t\t#Temperature od outer air[Kelvin]\n", + "e = 0.9\t\t\t#Emissivity\n", + "delx = 0.1\n", + "dely = 0.1\t\t\t#Nodal spacing [m]\n", + "\n", + "# Calculations\n", + "#Substituing values in all nodal equations and and solving these equations we get temperature at all nodes\n", + "def fu9(T):\n", + " temp = zeros(8)\n", + " temp[0] = 7*T[0]-T[1]-T[2]-2865;\n", + " temp[1] = -T[0]+8*T[1]-2*T[3]-2865;\n", + " temp[2] = -T[0]+4*T[2]-2*T[3]-T[5];\n", + " temp[3] = -T[1]-T[2]+4*T[3]-T[4]-T[6];\n", + " temp[4] = -2*T[3]+4*T[4]-2*T[7];\n", + " temp[5] = -T[1]-T[2]+3.5*T[5]+(0.3645*(10**(-9))*(T[5]**4))-456.2;\n", + " temp[6] = -2*T[3]-T[5]+7*T[6]+(0.729*(10**(-9))*(T[6]**4))-T[7]-912.4;\n", + " temp[7] = -2*T[4]-T[6]+7*T[7]+(0.729*(10**(-9))*(T[7]**4))-912.4;\n", + " temp[8] = -T[7]+2.5*T[8]+(0.3645*(10**(-9))*(T[8]**4))-456.2;\n", + "#T1 = T[0],T2 = T[1],T3 = T[2],T4 = T[3],T5 = T[4],T6 = T[5],T7 = T[6],T8 = T[7],T9 = T[8];\n", + "#T_wall = (0.5*T6+T7+T8+0.5*T9)/(0.5+1+1+0.5);\n", + "\n", + "# Results\n", + "#print \"The average temperature at the outer surface of the chimney weighed by the surface area is\",T_wall,\"Kelvin\"\n", + "#Q_chimney = (ho*4*0.6*1*(T_wall-To))+(e*5.67*(10**-8)*0.6*1*((T_wall**4)-((260**4))))\t\t\t#[W]\n", + "#print \"The heat transfer is\",Q_chimney,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.5" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temperatures at node 1 and 2 are respectively 139.732 228.3592 and 149.258625 172.775823867 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Transient Heat Conduction in a Large Uranium Plate\n", + "\n", + "# Variables\n", + "k = 28\t\t\t#[W/m.degree Celcius]\n", + "a = 12.5*10**(-6)\t\t\t#Thermal diffusivity[m**2/s]\n", + "T1_0 = 200\n", + "T2_0 = 200\t\t\t#Initial Temperature[degree Celcius]\n", + "e_gen = 5*10**6\t\t\t#Heat generated per unit volume[W/m**3]\n", + "h = 45\t\t\t#heat transfer coefficient[W/m**2.degree Celcius]\n", + "T0 = 0\t\t\t#Temperature at node 0[degree Celcius]\n", + "L = 0.04\t\t\t#[m]\n", + "M = 3\t\t\t#No of nodes\n", + "t = 15\t\t\t#[seconds]\n", + "\n", + "# Calculations\n", + "delx = L/(M-1)\t\t\t#[m]\n", + "#The nodes are 0,1 and 2\n", + "tau = (a*t)/(delx**2)\t\t\t#Fourier no\n", + "#Substituing this value of tau in nodal equations\n", + "#The nodal temperatures T1_1 and T2_1 at t = 15sec\n", + "T1_1 = 0.0625*T1_0+0.46875*T2_0+33.482\t\t\t#[degree Celcius]\n", + "T2_1 = 0.9375*T1_0+0.032366*T2_0+34.386\t\t\t#[degree Celcius]\n", + "#Similarly the nodal themperatures T1_2,T2_2 at t1 = 2*t = 30sec are\n", + "T1_2 = 0.0625*T1_1+0.46875*T2_1+33.482\t\t\t#[degree Celcius]\n", + "T2_2 = 0.9375*T1_1+0.032366*T2_1+34.386\t\t\t#[degree Celcius]\n", + "\n", + "# Results\n", + "print \"Temperatures at node 1 and 2 are respectively\",T1_1,T2_1,\"and\",T1_2,T2_2,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.6" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No of nodes are 6.0\n", + "The maximum allowable value of the time step is 2167.94334441 s\n", + "The mesh Fourier number is 0.111\n", + "Nodal temperatures at 7:15am are\n", + "Node0: 20.01876 degree Celcius\n", + "Node1: 16.6 degree Celcius\n", + "Node2: 12.2 degree Celcius\n", + "Node3: 7.8 degree Celcius\n", + "Node4: 3.4 degree Celcius\n", + "Node5: 5.45576 degree Celcius\n", + "The amount of heat transfer during the first time step or during the first 15 min period is -1012500.0 J\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Solar Energy Storage in Trombe Walls\n", + "\n", + "# Variables\n", + "hin = 10\t\t\t#[W/m**2]\n", + "A = 3*75\t\t\t#[m**2]\n", + "Tin = 21\t\t\t#[degree Celcius]\n", + "k = 0.69\t\t\t#[W/m.degree Celcius]\n", + "a = 4.44*10**(-7)\t\t\t#diffusivity[m**2/s]\n", + "kappa = 0.77;\n", + "delx = 0.06\t\t\t#The nodal spacing[m]\n", + "L = 0.3\t\t\t#Length of wall[m]\n", + "Tout = 0.6\n", + "q_solar = 360\t\t\t#Ambient temperature in degree Celcius and Solar Radiation between 7am to 10 am\n", + "\n", + "# Calculations and Results\n", + "M = (L/delx)+1;\n", + "print \"No of nodes are\",M\n", + "\n", + "#Stability Criterion\n", + "del_t = (delx**2)/(3.74*a)\t\t\t#[seconds]\n", + "print \"The maximum allowable value of the time step is\",del_t,\"s\"\n", + "\n", + "#Therefore any step less than del_t can be used to solve this problem,for convinience let's choose \n", + "delt = 900\t\t\t#[seconds]\n", + "tao = a*delt/(delx**2);\n", + "print \"The mesh Fourier number is\",tao\n", + "\n", + "#Initially at 7am or t = 0,the temperature of the wall is said to vary linearly between 21 degree Celcius at node 0 and -1 at node 5\n", + "#Temp between two neighbouring nodes is\n", + "temp = (21-(-1))/5.\t\t\t#[degree Celcius]\n", + "T0_0 = Tin;\n", + "T1_0 = T0_0-temp;\n", + "T2_0 = T1_0-temp;\n", + "T3_0 = T2_0-temp;\n", + "T4_0 = T3_0-temp;\n", + "T5_0 = T4_0-temp;\n", + "T0_1 = ((1-3.74*tao)*T0_0)+(tao*(2*T1_0+36.5));\n", + "T1_1 = (tao*(T0_0+T2_0))+(T1_0*(1-(2*tao)));\n", + "T2_1 = (tao*(T1_0+T3_0))+(T2_0*(1-(2*tao)));\n", + "T3_1 = (tao*(T2_0+T4_0))+(T3_0*(1-(2*tao)));\n", + "T4_1 = (tao*(T3_0+T5_0))+(T4_0*(1-(2*tao)));\n", + "T5_1 = (T5_0*(1-(2.70*tao)))+(tao*((2*T4_0)+(0.70*Tout)+(0.134*q_solar)));\n", + "\n", + "print (\"Nodal temperatures at 7:15am are\")\n", + "print \"Node0:\",T0_1,\"degree Celcius\"\n", + "print \"Node1:\",T1_1,\"degree Celcius\"\n", + "print \"Node2:\",T2_1,\"degree Celcius\"\n", + "print \"Node3:\",T3_1,\"degree Celcius\"\n", + "print \"Node4:\",T4_1,\"degree Celcius\"\n", + "print \"Node5:\",T5_1,\"degree Celcius\"\n", + "\n", + "Q_wall = hin*A*delt*(((round(T0_1)+T0_0)/2)-Tin)\t\t\t#[J]\n", + "print \"The amount of heat transfer during the first time step or during the first 15 min period is\",Q_wall,\"J\"\n", + "\n", + "#Similarly using values from the table given we can find temperature at various nodes after required time interval\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch6.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch6.ipynb new file mode 100644 index 00000000..52931aa7 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch6.ipynb @@ -0,0 +1,133 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6 : Fundamentals of Convection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 6.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T(y) = T0+(mu*(v**2)/(2*k))[(y/L)-((y/L)**2)]\n", + "Maximum temperature occurs at mid plane and its value is 20.0 degree Celcius\n", + "Heat fluxes at the two plates are equal in magnitude but opposite in sign and the value of magnitude is 30.1464 kW/m**2\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Temperature Rise of Oil is a Journal Bearing\n", + "\n", + "# Variables\n", + "k = 0.145\t\t\t#[W/m.K]\n", + "mu = 0.8374\t\t\t#[kg/m.s]or[N.s/m**2]\n", + "T1 = 20\t\t\t#Temperature of both the plates[degree Celcius]\n", + "t = 0.002\t\t\t#Thickness of oil film between the plates[m]\n", + "v = 12\t\t\t#Velocity with which plates move[m/s]\n", + "\n", + "# Calculations and Results\n", + "#Relation between velocity and temperature variation\n", + "print (\"T(y) = T0+(mu*(v**2)/(2*k))[(y/L)-((y/L)**2)]\")\n", + "#The location of maximum temperature is determined by setting dT/dy = 0 and solving for y\n", + "#(mu*(v**2)/(2*k*L))*(1-(2*y/L)) = 0\n", + "L = 1\t\t\t#Random initialisation of variable L, where L is length of plates\n", + "y = L/2.;\n", + "#T_max = T(L/2)\n", + "T_max = T1+((mu*(v**2)/(2*k))*(((L/2)/L)-(((L/2)**2)/(L**2))));\n", + "print \"Maximum temperature occurs at mid plane and its value is\",T_max,\"degree Celcius\"\n", + "\n", + "#heat flux q0 = -kdt/dy|y = 0; = -kmu*v**2/(2*k*L)\n", + "q0 = -(mu*k*(v**2)/(2*k*t))/1000\t\t\t#Heat flux from one plate [kW/m**2]\n", + "qL = -((k*mu*(v**2))*(1-2)/(2*k*t*1000))\t\t\t#Heat flux from another plate[kW/m**2]\n", + "print \"Heat fluxes at the two plates are equal in magnitude but opposite in sign and \\\n", + "the value of magnitude is\",qL,\"kW/m**2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 6.2" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Friction Factor and average heat transfer coefficient are 0.00242954324587 and 12.7060334544 W/m**2.degree Celcius respectively\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Finding Convection Coefficient from Drag Measurement\n", + "\n", + "# Variables\n", + "#Properties of air\n", + "rho = 1.204\t\t\t#[kg/m**3]\n", + "Cp = 1007\t\t\t#[J/kg.K]\n", + "Pr = 0.7309\t\t\t#Prandtl number\n", + "w = 2\t\t\t#Width of plate[m]\n", + "L = 3\t\t\t#Characteristic length of plate[m]\n", + "v = 7\t\t\t#velocity of air[m/s]\n", + "Fd = 0.86\t\t\t#Total grag force[N]\n", + "\n", + "# Calculations\n", + "As = 2*w*L\t\t\t#Since both sides of plate are math.exposed to air flow[m**2]\n", + "#For flat plates drag force is equivalent to friction coefficient Cf\n", + "Cf = Fd/(rho*As*(v**2)/2);\n", + "h = (Cf*rho*v*Cp)/(2*(Pr**(2./3)))\t\t\t#[W/m**2.degree Celcius]\n", + "\n", + "# Results\n", + "print \"Friction Factor and average heat transfer coefficient are\",Cf,\"and\",h,\"W/m**2.degree Celcius\",\"respectively\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch7.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch7.ipynb new file mode 100644 index 00000000..15eb8556 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch7.ipynb @@ -0,0 +1,611 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 7 : External Forced Convection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "We have laminar flow over the entire plate\n", + "(0.006630019984886925, 'The average friction coefficient is')\n", + "The drag force acting on the plate per unit width is 58.0789750676 N\n", + "Nusselt Number is 133.200201811\n", + "Convective heat transfer coefficient is 3.84682182831 W/m**.degree Celcius\n", + "Heat flow rate is 769.0 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Flow of hot oil over a Flat Plate\n", + "\n", + "# Variables\n", + "T_oil = 60\t\t\t#Temp of engine oil[degree Celcius]\n", + "T_plate = 20\t\t\t#Temp of flat plate[degree Celcius]\n", + "Rec = 5*10**5\t\t\t#Critical reynolds number for laminar flow\n", + "Tf = (T_oil+T_plate)/2\t\t\t#Film temperature[degree Celcius]\n", + "v = 2\t\t\t#[m/s]\n", + "#Properties of engine oil at film temperature\n", + "rho = 876\t\t\t#[kg/m**3]\n", + "Pr = 2962\t\t\t#Prandtl number\n", + "k = 0.1444\t\t\t#[W/m.degree Celcius]\n", + "nu = 2.485*10**(-4)\t\t\t#dynamic vismath.cosity[m**2/s]\n", + "L = 5\t\t\t#Length of plate[m]\n", + "\n", + "# Calculations and Results\n", + "ReL = (v*L)/nu;\n", + "if(ReL<Rec):\n", + " print (\"We have laminar flow over the entire plate\")\n", + " Cf = 1.33*(ReL**(-0.5));\n", + " print (Cf,\"The average friction coefficient is\")\n", + " #Pressure Drag is zero and thus Cd = Cf for parallel floe over a flat plate\n", + " Fd = Cf*5*1*rho*(v**2)/2\t\t\t#[N]\n", + " print \"The drag force acting on the plate per unit width is\",Fd,\"N\"\n", + "else:\n", + " print (\"flow is turbulent\")\n", + "\n", + "Nu = 0.664*(ReL**(0.5))*(Pr**(1/3))\t\t\t#Nusselt Number\n", + "print \"Nusselt Number is\",(Nu)\n", + "\n", + "h = k*Nu/L\t\t\t#[W/m**2.degree Celcius]\n", + "print \"Convective heat transfer coefficient is\",h,\"W/m**.degree Celcius\"\n", + "\n", + "Q = h*(5*1)*(T_oil-T_plate)\t\t\t#[W]\n", + "print \"Heat flow rate is\",round(Q),\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Flow is not laminar\n", + "Nusselt Number is 3003.67997076\n", + "Heat Flow Rate is 15965.7605166 W\n", + "Flow is laminar\n", + "Nusselt Number is 455.679409429\n", + "The heat transfer rate is 9688.47333151 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling of a Hot Block by Forced Air at High Elevation\n", + "\n", + "# Variables\n", + "ReC = 5*10**5\t\t\t#critical Reynolds number\n", + "v = 8\t\t\t#Velocity of air[m/s]\n", + "T_air = 20\t\t\t#Initial Temperature of air[degree Celcius]\n", + "T_plate = 140\t\t\t#Temperature of flat plate[degree Celcius]\n", + "T_film = (T_air+T_plate)/2\t\t\t#Film Temperature of air[degree Celcius]\n", + "\n", + "#Properties of air at film temperature[degree Celcius]\n", + "k = 0.02953\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7154\t\t\t#Prandtl Number\n", + "nu = 2.097*10**(-5)\t\t\t#Kinematic Vismath.cosity at 1 atm Pressure [m**2/s]\n", + "nu_ac = nu/0.823\t\t\t#Kinematic vismath.cosity at pressure 0.823 atm[m**2/s]\n", + "\n", + "#Solution(a)\n", + "L1 = 6\t\t\t#Characteristic length of plate along the flow of air[m]\n", + "w1 = 1.5\t\t\t#width[m]\n", + "ReL1 = (v*L1)/nu_ac\t\t\t#Reynolds number\n", + "if(ReL1>ReC):\n", + " print (\"Flow is not laminar\")\n", + " #We have average Nusselt Number\n", + " Nu1 = ((0.037*(ReL1**(0.8)))-871)*(Pr**(1/3));\n", + " print \"Nusselt Number is\",Nu1\n", + " h1 = k*Nu1/L1\t\t\t#[W/m**2.degree Celcius]\n", + " As1 = w1*L1\t\t\t #Flow Area of plate[m**2]\n", + " Q1 = h1*As1*(T_plate-T_air);\n", + " print \"Heat Flow Rate is\",Q1,\"W\"\n", + "else:\n", + " print (\"Flow is laminar\")\n", + "\n", + "#Solution(b)\n", + "L2 = 1.5\t \t\t#Characteristic length of plate along flow of air[m]\n", + "ReL2 = v*L2/nu_ac\t\t\t#Reynolds Number\n", + "if(ReL2<Rec):\n", + " print (\"Flow is laminar\")\n", + " Nu2 = 0.664*(ReL2**(0.5))*(Pr**(1/3));\n", + " print \"Nusselt Number is\",Nu2\n", + " h2 = k*Nu2/L2\t\t\t#[W/m**2.degree Celcius]\n", + " Q2 = h2*As1*(T_plate-T_air);\n", + " print \"The heat transfer rate is\",Q2,\"W\"\n", + "else:\n", + " print (\"Flow is turbulent\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Flow is laminar\n", + "The nusselt number is 289.3344611\n", + "The covection heat flow rate is 682.458980085 W\n", + "Radiation heat transfer rate is 768.157319003 W\n", + "The rate of cooling of the plastic sheet by combined convection and radiation is 1450.61629909 W\n", + "(b) The temperature of the plastic sheet as it leaves the cooling section is 91.0495198827 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling of Plastic Sheets by Forced Air\n", + "\n", + "# Variables\n", + "T_p = 95.\t\t\t#Temp of plastic Sheet[degree Celcius]\n", + "T_air = 25.\t\t\t#Temp of air[degree Celcius]\n", + "v = 3. \t\t\t#Velocity of flowing air[m/s]\n", + "L = 0.6\t \t\t#Length of plastic sheet[m]\n", + "w = 1.2\t\t \t#width[m]\n", + "k = 0.02808\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7202\t\t\t#Prandtl Number\n", + "nu = 1.896*10**(-5)\t\t\t#[m**2/s]\n", + "rho = 1200.\t\t\t#[kg/m**3]\n", + "Cp = 1700.\t\t\t#[J/kg.degree Celcius]\n", + "vp = (9./60)\t\t#Velocity of moving plastic[m/s]\n", + "tp = 0.001\t\t\t#Thickness of plastic[m]\n", + "ReC = 5.*10**5\t\t\t#Crictical Reynolds Number\n", + "e = 0.9 \t\t\t#emissivity\n", + "\n", + "# Calculations and Results\n", + "L1 = 2*L\t\t\t#Considering both sides of plastic sheet[m]\n", + "ReL1 = v*L1/nu\t\t\t#Reynolds number\n", + "if(ReL1<ReC):\n", + " print (\"(a) Flow is laminar\")\n", + " Nu1 = 0.664*(ReL1**0.5)*(Pr**(1/3));\n", + " print \"The nusselt number is\",Nu1\n", + " h = k*Nu1/L1\t\t\t#[W/m**2.degree Celcius]\n", + " As = L1*w\t\t\t #[m**2]\n", + " Q_conv = h*As*(T_p-T_air)\t\t\t#[W]\n", + " print \"The covection heat flow rate is\",Q_conv,\"W\"\n", + " Q_rad = e*(5.67*10**(-8))*As*(((T_p+273)**4)-((T_air+273)**4))\t\t\t#[W]\n", + " print \"Radiation heat transfer rate is\",(Q_rad),\"W\"\n", + " Q_total = Q_conv+Q_rad\t\t\t#[W]\n", + " print \"The rate of cooling of the plastic sheet by combined convection and radiation is\",(Q_total),\"W\"\n", + "else:\n", + " print (\"(a) The Flow is turbulent\")\n", + "\n", + "#Solution(b)\n", + "At = w*tp\t \t \t#[m**2]\n", + "m = rho*At*vp\t \t \t #ass of th plastic rolling out per unit time[kg/s]\n", + "T2 = T_p+(-Q_total/(m*Cp))\t\t\t#[degree Celcius]\n", + "print \"(b) The temperature of the plastic sheet as it leaves the cooling section is\",T2,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.4" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The drag force acting on the pipe is 5.275248 kN\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Drag Force Acting on a Pipe in a River\n", + "\n", + "# Variables\n", + "T_water = 15.\t\t\t#[degree Celcius]\n", + "vw = 4. \t\t\t#Velocity of water[m/s]\n", + "od = 0.022 \t\t\t#Outer diameter of pipe[m]\n", + "w = 30.\t \t\t#width of river[m]\n", + "#At 15 degree C properties of water\n", + "rho = 999.1\t\t\t#[kg/m**3]\n", + "\n", + "# Calculations\n", + "mu = 1.138*10**(-3)\t\t\t#vismath.cosity[kg/m.s]\n", + "Re = (rho*vw*od)/mu\t\t\t#Reynolds number\n", + "Cd = 1.0 \t \t\t#Dreag coefficient\n", + "A = w*od\t \t \t#Frontal area for flow past a cylinder[m**2]\n", + "Fd = Cd*A*rho*(vw**2)/2\t\t\t#[N]\n", + "\n", + "# Results\n", + "print \"The drag force acting on the pipe is\",Fd/1000,\"kN\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.5" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " The nusselt number is 124.0\n", + "The rate of heat loss from the pipe per unit of its length is 1098.0 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss from a Steam Pipe in Windy Air\n", + "\n", + "# Variables\n", + "d = 0.1 #diameter of pipe[m]\n", + "Ts = 110\t\t\t#Temp of ecternal surface of pipe[degree Celcius]\n", + "Ta = 10\t \t\t#Temp of air[degree Celcius]\n", + "va = 8\t\t \t#Velocity of air[m/s]\n", + "Tf = (Ts+Ta)/2\t\t\t#Film temperature[degree Celcius]\n", + "k = 0.02808\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7202\t\t\t#Prandtl Number\n", + "nu = 1.896*10**(-5)\t\t\t#Kinematic vismath.cosity[m**2/s]\n", + "\n", + "# Calculations and Results\n", + "Re = (va*d)/nu\t\t\t#Reynolds Number\n", + "Nu = 0.3+((0.62*(Re**(0.5))*(Pr**(1./3)))/((1+((0.4/Pr)**(2./3)))**(1./4))*((1+((Re/282000.)**(5./8)))**(4./5)));\n", + "print \"The nusselt number is\",round(Nu)\n", + "\n", + "h = k*Nu/d\t\t\t#[W/m**2.degree Celcius]\n", + "As = math.pi*d*1\t\t\t#Area of pipe per unit length[m**2]\n", + "Q = h*As*(Ts-Ta)\t\t\t#[W]\n", + "print \"The rate of heat loss from the pipe per unit of its length is\",math.ceil(Q),\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.6" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Nusselt number is 134.427397138\n", + "The average rate of heat transfer from Newtons Law of cooling is 605.997242164 W\n", + "The total heat transferred from the ball is 3163191.10308 J\n", + "The time of cooling is 1.44994751488 hour\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling of a Steel Ball by Forced Air\n", + "\n", + "# Variables\n", + "rho = 8055.\t\t\t#[kg/m**3]\n", + "Cp = 480.\t\t\t#[J/kg.degree Celcius]\n", + "To = 300.\t\t\t#Temp of oven[degree Celcius]\n", + "Ta = 25.\t\t\t#Temp of air[degree Celcius]\n", + "va = 3.\t \t\t#Velocity of air[m/s]\n", + "Ts = 200.\t\t\t#Dropped temp of surface of ball[degree Celcius]\n", + "Ts_avg = (Ts+To)/2\t\t\t#[degree Celcius]\n", + "d = 0.25\t\t\t#[m]\n", + "mu_s = 2.76*10**(-5)\t\t\t#Dynamic Vismath.cosity at average surface temperature[kg/m.s]\n", + "#Properties of air at 25 degree Celcius\n", + "k = 0.02551\t\t\t#[W/m.degree Celcius]\n", + "nu = 1.562*10**(-5)\t\t\t#kinematic vismath.cosity[m**2/s]\n", + "mu = 1.849*10**(-5)\t\t\t#Dynamic vismath.cosity of air at 25 degree C[kg/m.s]\n", + "\n", + "# Calculations and Results\n", + "Re = va*d/nu\t\t\t#[Reynolds Number]\n", + "Nu = 2+((0.4*(Re**(1./2)))+(0.06*(Re**(2./3))))*(Pr**(0.4))*((mu/mu_s)**(1/4.));\n", + "print \"The Nusselt number is\",Nu\n", + "\n", + "h = k*Nu/d\t\t\t#[W/m**2.degree Celcius]\n", + "As = math.pi*(d**2)\t\t\t#[m**2]\n", + "Q_avg = h*As*(Ts_avg-Ta)\t\t\t#[W]\n", + "print \"The average rate of heat transfer from Newtons Law of cooling is\",(Q_avg),\"W\"\n", + "\n", + "m = rho*math.pi*(d**3)/6\t\t\t#[kg]\n", + "Q_total = m*Cp*(To-Ts)\t\t\t#[J]\n", + "print \"The total heat transferred from the ball is\",Q_total,\"J\"\n", + "\n", + "delta_t = Q_total/Q_avg\t\t\t#[s]\n", + "print \"The time of cooling is\",delta_t/3600,\"hour\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.7" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reynolds number is 5085.55065452\n", + "The nusselt number is 52.11973288\n", + "Mass flow rate of air is 2.709 kg/s\n", + "Fluid exit temperature is 29.113969148 degree Celcius\n", + "Log mean temperature difference is 95.3704459553 degree Celcius\n", + "Rate of heat transfer is 24862.570619 W\n", + "The pressure drop across the tube bank is 21.0071020408 Pa\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Preheating Air by Geothermal Water in a Tube Bank\n", + "\n", + "# Variables\n", + "Ta_in = 20.\t\t\t#Temp of air whileentering the duct[degree Celcius]\n", + "v = 4.5\t\t \t#mean velocity[m/s]\n", + "T_tw = 120.\t\t\t#Temp of geothermal water[degree Celcius]\n", + "od = 0.015\t\t\t#Outer Diameter of tubes[m]\n", + "SL = 0.05\n", + "ST = 0.05\t\t\t#Longitudinal and transverse pitches[m]\n", + "#Properties of air at mean temp\n", + "k = 0.02808\t\t\t#[W/m.K]\n", + "rho = 1.059\t\t\t#[kg/m**3]\n", + "Cp = 1007\t\t\t#[J/kg.K]\n", + "Pr = 0.7202\t\t\t#Prandtl no\n", + "Pr_s = 0.7073\t\t\t#Prandtl no at temp = 120 degree C\n", + "mu = 2.008*10**(-5)\t\t\t#Vismath.cosity[kg/m.s]\n", + "rho_in = 1.204\t\t\t#density of air at inlet conditions[kg/m**3]\n", + "\n", + "# Calculations and Results\n", + "v_max = (ST*v)/(ST-od)\t\t\t#maximu velocity[m/s]\n", + "Re = rho*v_max*od/mu\t\t\t#Reynolds Number\n", + "print \"Reynolds number is\",Re\n", + "\n", + "Nu = 0.27*(Re**(0.63))*(Pr**(0.36))*((Pr/Pr_s)**0.25);\n", + "print \"The nusselt number is\",Nu\n", + "\n", + "Nl = 6\t\t\t#No of rows of tubes\n", + "Nt = 10\t\t\t#No of tubes in each row\n", + "F = 0.945\t\t\t#For Nl = 6, correction factor \n", + "Nu_Nl = F*Nu;\n", + "h = Nu_Nl*k/od\t\t\t#[W/m**2.degree Celcius]\n", + "N = Nl*Nt\t\t\t#Total no of tubes\n", + "\n", + "#For unit tube length\n", + "As = N*math.pi*od*1\t\t\t#[m**2]\n", + "m = rho_in*v*(Nt*ST*1)\t\t\t#[kg/s]\n", + "print \"Mass flow rate of air is\",m,\"kg/s\"\n", + "\n", + "Te = T_tw-((T_tw-Ta_in)*math.exp((-As*h)/(m*Cp)))\t\t\t#[degree Celcius]\n", + "print \"Fluid exit temperature is\",Te,\"degree Celcius\"\n", + "\n", + "T_ln = (((T_tw-Te)-(T_tw-Ta_in))/(math.log((T_tw-Te)/(T_tw-Ta_in))))\t\t\t#[degree Celcius]\n", + "print \"Log mean temperature difference is\",T_ln,\"degree Celcius\"\n", + "\n", + "Q = h*As*T_ln\t\t\t#[W]\n", + "print \"Rate of heat transfer is\",Q,\"W\"\n", + "\n", + "#For given Re and SL/od ratio friction coefficient is\n", + "f = 0.16;\n", + "delta_P = Nl*f*rho*(v_max**2)/2\t\t\t#[Pa]\n", + "print \"The pressure drop across the tube bank is\",delta_P,\"Pa\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.8" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\n", + "import math \n", + "# Effect of insulation on Surface Temperature\n", + "\n", + "# Variables\n", + "Ti = 120\t\t\t#Initial temp of hot water[degree Celcius]\n", + "k_pipe = 15\t\t\t#W/m.degree Celcius \n", + "ri = 0.008\n", + "ro = 0.01\t\t\t#Inner and outer radii[m]\n", + "t = 0.002\t\t\t#Thickness of pipe[m]\n", + "To = 25\t\t\t#Ambient temperature[degree Celcius]\n", + "Ts = 40\t\t\t#Maximum Temp of outer surface of insulation[degree Celcius]\n", + "hi = 70\n", + "ho = 20\t\t\t#Heat transfer coefficients inside and outside of the pipe[W/m**2.degree Celcius]\n", + "k_insu = 0.038\t\t\t#[W/m.degree Celcius]\n", + "L = 1\t\t\t#section of pipe[m]\n", + "\n", + "# Calculations\n", + "#Areas of surfaces math.exposed to convection\n", + "A1 = 2*math.pi*ri*L\t\t\t#[m**2]\n", + "#Individual Thermal Resismath.tances\n", + "R_conv1 = 1/(hi*A1)\t\t\t#[degree Celcius/W]\n", + "R_pipe = (math.log(ro/ri))/(2*math.pi*k_pipe*L)\t\t\t#[degree Celcius/W]\n", + "#R_insu = (math.log(r3/ri))/(2*math.pi*k_insu*L)\n", + "#R_conv2 = 1/(ho*2*math.pi*r3*L)\n", + "#R_total = R_conv1+R_conv2+R_pipe+R_insu\n", + "#Q = (Ti-To)/R_total;\n", + "#Q = (Ts-To)/R_conv2;\n", + "#Equating both Q we get\n", + "def radius(r3):\n", + " r[0] = 1884*r3[0]*(0.284+0.0024+4.188*math.log((r3[0])/0.01)+(1/(125.6*r3[0])))-95;\n", + "\n", + "\n", + "# Results\n", + "#print \"The outer radius of the insulation is\",xs,\"m\"\n", + "#t = xs-ro\t\t\t#[m]\n", + "#print \"The minimum thickness of fibreglass insulation required is\",100*t,\"cm\"\n", + "\n", + "#/Correct output will be print layed after executing the codes once and then re-executin them\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.9" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "402.123859659\n", + "The total amount of heat loss from the surrounding is 11034.5601958 Therms\n", + "The annual fuel math.cost of the oven before insulation is $ 8275.92014682 per year\n", + "Total energy consumption by oven on being insulated 823.391262875 therms\n", + "The sum of insulation math.cost and heat loss math.costs is $ 1703.27786824\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Optimum Thickness of insulation\n", + "\n", + "# Variables\n", + "k_insu = 0.024\t\t\t#[Btu/h.ft**2.degree Farenhiet]\n", + "Ts = 180 \t\t\t#temp of math.exposed surface of oven[degree F]\n", + "Ta = 75\t \t\t#temp of ambient air[degree F]\n", + "L = 12\t \t\t#length[ft]\n", + "d = 8\t\t \t #Diameter[m]\n", + "time = 5840\t\t \t#[h/year]\n", + "ho = 3.58\t\t\t #Heat transfer coefficient on the outer surface[tu/h.ft**2.degree F]\n", + "unit_c1 = 0.75\t\t\t#[$/therm]\n", + "unit_c2 = 2.70\t\t\t#Unit math.cost of insulation[4/ft**2]\n", + "neta = 0.8\t\t\t #Efficiency\n", + "\n", + "# Calculations and Results\n", + "As = (2*math.pi*((d/2)**2))+(2*math.pi*L*d/2)\t\t\t#math.exposed surface area[ft**2]\n", + "print (As)\n", + "Q = ho*As*(Ts-Ta) \t\t\t#[Btu/h]\n", + "Q_total = (1./neta)*Q*time/(100000)\t\t\t#[therms]\n", + "print \"The total amount of heat loss from the surrounding is\",Q_total,\"Therms\"\n", + "\n", + "annual_c1 = Q_total*unit_c1\t\t\t#[$/year]\n", + "print \"The annual fuel math.cost of the oven before insulation is $\",annual_c1,\"per year\"\n", + "\n", + "R_conv = 1./(ho*math.ceil(As));\n", + "R_insu = (1./12)/(k_insu*math.ceil(As))\t\t\t#Thickness id 1inch or 1/12 ft\n", + "Q_insu = (Ts-Ta)/(R_conv+R_insu)\t\t\t#[Btu/hr]\n", + "Q_insu_total = (1./neta)*Q_insu*time*(1./100000)\t\t\t#[therms]\n", + "print \"Total energy consumption by oven on being insulated\",Q_insu_total,\"therms\"\n", + "\n", + "annual_c2 = Q_insu_total*unit_c1\t\t\t#[$/yr]\n", + "insu_cost = (unit_c2*As)\t\t\t#Insulation math.cost[$]\n", + "Total_c = annual_c2+insu_cost\t\t\t#[$]\n", + "print \"The sum of insulation math.cost and heat loss math.costs is $\",Total_c\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch8.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch8.ipynb new file mode 100644 index 00000000..c034916e --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch8.ipynb @@ -0,0 +1,518 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 : Internal Forced Convection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.1" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The rate of heat transfer is 125.61 kW\n", + "Logrithmic Mean temperature difference is 32.8458738753 degree Celcius\n", + "Heat Transfer surface area is 4.78028079253 m**2\n", + "Required tube length is 61.0 m\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heating of water in a tube by Steam\n", + "\n", + "# Variables\n", + "id_ = 0.025 \t\t\t#Internal diameter[m]\n", + "Tin = 15.\t \t\t#Initial temp[degree Celcius]\n", + "m_ = 0.3\t\t \t#Flow rate[kg/s]\n", + "h = 800./1000\t\t\t#avg heat transfer coefficient[W/m**2.degree Celcius]\n", + "Tf = 115.\t\t\t#Final temp of water[degree Celcius]\n", + "Ts = 120.\t\t\t#[degree Celcius]\n", + "Hs = 2203.\t\t\t#Heat of condensation of steam at 120 degree Celcius[kJ/kg]\n", + "Tavg = (Tin+Tf)/2\t\t\t#[degree Celcius]\n", + "Cp = 4187.\t\t\t#Sp Heat of water at Tavg[J/kg.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "Q_ = m_*Cp*(Tf-Tin)/1000\t\t\t#[kW]\n", + "print \"The rate of heat transfer is\",Q_,\"kW\"\n", + "\n", + "del_Tf = Ts-Tf\t\t\t #[degree Celcius]\n", + "del_Tin = Ts-Tin\t\t\t#[degree Celcius]\n", + "ln_del_T = (del_Tf-del_Tin)/(math.log(del_Tf/del_Tin))\t\t\t#[degree Celcius]\n", + "print \"Logrithmic Mean temperature difference is\",ln_del_T,\"degree Celcius\"\n", + "\n", + "A = Q_/(h*ln_del_T)\t\t\t#[m**2]\n", + "print \"Heat Transfer surface area is\",A,\"m**2\"\n", + "\n", + "l = A/(math.pi*id_)\t\t\t#[m]\n", + "print \"Required tube length is\",round(l),\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The reynolds number is 1777.3074391\n", + "Friction factor is 0.0359955005624\n", + "The Pressure drop is 48.5890663667 kPa\n", + "Volumetric flow rate is 6.36172512352e-06 m**3/s\n", + "Mechanical Power Input of 0.309110284233 W\n", + "is needed to overcome the frictional losses in the flow due to viscosity\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Pressure Drop in a tube\n", + "\n", + "# Variables\n", + "Tw = 5\t\t\t#Temperature of water[degree Celcius]\n", + "#Properties of water at Tw\n", + "rho = 999.9\t\t\t#[kg/m**3]\n", + "mu = 1.519*10**(-3)\t\t\t#Vismath.cosity[kg/m.s]\n", + "d = 0.003\t\t\t#diameter[m]\n", + "l = 10\t\t\t#length[m]\n", + "v_avg = 0.9\t\t\t#Average flow velocity[m/s]\n", + "\n", + "# Calculations and Results\n", + "Re = (rho*v_avg*d)/mu;\n", + "print \"The reynolds number is \",Re\n", + "\n", + "f = 64/math.ceil(Re);\n", + "print \"Friction factor is\",f\n", + "\n", + "del_P = f*l*rho*(v_avg**2)/(2*d)\t\t\t#[N/m**2]\n", + "print \"The Pressure drop is \",del_P/1000,\"kPa\"\n", + "\n", + "V = v_avg*(math.pi*(d**2))/4\t\t\t#[m**3/s]\n", + "print \"Volumetric flow rate is\",V,\"m**3/s\"\n", + "\n", + "W_pump = V*del_P\t\t\t#[W]\n", + "print \"Mechanical Power Input of\",W_pump,\"W\"\n", + "print (\"is needed to overcome the frictional losses in the flow due to viscosity\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.3" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Reynolds number is 636.334712059\n", + "The thermal entry length is 103687.559656 m\n", + "Exit temperature of oil is 19.7139328074 degree Celcius\n", + "The logrithmic mean temperature difference is -19.856622966 degree Celcius\n", + "The rate of heat loss from the oil are -67522.7559473 W\n", + "1184133.33333\n", + "We need a 167.402906139 pump just to overcome the friction in the pipe as the oil flows\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Flow of Oil in a Pipeline through a Lake\n", + "\n", + "# Variables\n", + "Ts = 0\t\t\t#Temp of lake[degree Celcius]\n", + "Ti = 20\t\t\t#Temp of oil[degree Celcius]\n", + "d = 0.3\t\t\t#Diameter[m]\n", + "l = 200\t\t\t#length of pipe[m]\n", + "\n", + "#At 20 degree Celcius\n", + "rho = 888.1\t\t\t#[kg/m**3]\n", + "nu = 9.429*10**(-4)\t\t\t#Kinematic vismath.cosity[m**2/s]\n", + "k = 0.145\t\t\t#[W/m.degree Celcius]\n", + "Cp = 1880\t\t\t#[J/kg.degree Celcius]\n", + "Pr = 10863\t\t\t#Prandtl Number\n", + "v_avg = 2\t\t\t#[m/s]\n", + "\n", + "# Calculations and Results\n", + "Re = v_avg*d/nu;\n", + "print \"The Reynolds number is\",Re\n", + "\n", + "Lt = 0.05*Re*Pr*d\t\t\t#[m]\n", + "print \"The thermal entry length is\",Lt,\"m\"\n", + "\n", + "Nu = 3.66+((0.065*(d/l)*Re*Pr)/(1+(0.04*(((d/l)*Re*Pr)**(2./3)))));\n", + "h = (k*Nu)/d \t \t\t#[W/m**2.degree Celcius]\n", + "As = math.pi*d*l\t\t \t#[m**2]\n", + "m_ = rho*math.pi*((d/2)**2)*v_avg\t\t\t#[kg/s]\n", + "Te = Ts-((Ts-Ti)*math.exp((-h*As)/(m_*Cp)))\t\t\t#[degree Celcius]\n", + "print \"Exit temperature of oil is\",Te,\"degree Celcius\"\n", + "\n", + "#Solution(b):-\n", + "ln_del_T = (Ti-Te)/(math.log((Ts-Te)/(Ts-Ti)))\t\t\t#[degree Celcius]\n", + "print \"The logrithmic mean temperature difference is\",ln_del_T,\"degree Celcius\"\n", + "\n", + "Q = h*As*ln_del_T\t\t\t#[W]\n", + "print \"The rate of heat loss from the oil are\",Q,\"W\"\n", + "\n", + "#Solution(c)\n", + "f = 64/Re\t\t\t #Friction factor is\n", + "del_P = l*rho*(v_avg**2)/(2*d)\t\t\t#[N/m**2]\n", + "print (del_P);\n", + "\n", + "W_pump = m_*del_P/rho\t\t\t#[kW]\n", + "print \"We need a \",W_pump/1000,\"pump just to overcome the friction in the pipe as the oil flows\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.4" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Reynolds Number is 122961.598599\n", + "The required poer input tp overcome the frictional losses in the tube is 6512.73333333 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Pressure Drop in a Water tube\n", + "\n", + "# Variables\n", + "Tw = 15\t\t\t#temp of water while entering[degree Celcius]\n", + "rho = 999.1\t\t\t#[kg/m**3]\n", + "mu = 1.138*10**(-3)\t\t\t#Vismath.cosity[kg/m.s]\n", + "id_ = 0.05\t\t\t#Internal diameter[m]\n", + "V = 5.5*10**(-3)\t\t\t#Flow rate[m**3/s]\n", + "l = 60\t\t\t#length of tube[m]\n", + "e = 0.002*10**(-3)\t\t\t#[m]\n", + "#Solution:-\n", + "v = V/(math.pi*(id_**2)*(1./4))\t\t\t#Mean Velocity[m/s]\n", + "Re = rho*v*id_/mu;\n", + "print \"Reynolds Number is\",Re\n", + "\n", + "#Flow is turbulent\n", + "r = e/id_\t\t\t#Relative roughness of the tube\n", + "def fric(fac):\n", + " Func[0] = (1/(fac[0]**(1./2)))+(2*math.log((0.00004/3.7)+(2.51/(122900*fac[0]**(1./2)))));\n", + " \n", + " \n", + "#print \"Friction Factor is\",xs\n", + "#del_P = xs*l*rho*(v**2)/(2*id_)\t\t\t#[kPa]\n", + "#print \"The pressure drop is\",del_P,\"Pa\"\n", + "W_pump = V*del_P\t\t\t #[W]\n", + "print \"The required poer input tp overcome the frictional losses in the tube is\",W_pump,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.5" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The power rating of the heater is 34.475475 kW\n", + "Heat flux is 73.1592301559 kW/m**2\n", + "The nussel number is 69.3506779058\n", + "The surface temperature of the pipe at the exit becomes 115.0 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heating of water by Resismath.tance Heaters in a tube\n", + "\n", + "# Variables\n", + "Ti = 15 \t\t \t#Initial Temp[degree Celcius]\n", + "Tf = 65\t \t\t #Final Temp[degree Celcius]\n", + "d = 0.03\t \t \t#Internal diameter[m]\n", + "l = 5 \t\t \t#length[m]\n", + "V = 10.*10**(-3)\t\t\t#flow rate of water[m**3/s]\n", + "Tavg = (Ti+Tf)/2\t\t\t#[degree Celcius]\n", + "#Properties of water at Tavg\n", + "rho = 992.1\t\t \t#[kg/m**3]\n", + "Cp = 4170\t \t\t#[J/kg.degree Celcius]\n", + "k = 0.631 \t\t\t#[W/m.degree Celcius]\n", + "nu = 0.658*10**(-6)\t\t\t#[m**2/s]\n", + "Pr = 4.32 \t\t\t#Prandtl Number\n", + "\n", + "# Calculations and Results\n", + "Ac = math.pi*(d**2)*(1./4)\t\t#[m**2]\n", + "As = math.pi*d*l\t\t \t#[m**2]\n", + "m_ = rho*V*(1./60)\t \t\t#[kg/s]\n", + "Q_ = m_*Cp*(Tf-Ti)/1000\t\t\t#[kW]\n", + "print \"The power rating of the heater is\",Q_,\"kW\"\n", + "\n", + "qs = Q_/As \t\t\t#[kW/m**2]\n", + "print \"Heat flux is\",qs,\"kW/m**2\"\n", + "\n", + "v_avg = V/(Ac*60)\t\t\t#[m/s]\n", + "Re = v_avg*d/nu\t\t \t#[Reynolds Number]\n", + "Lt = 10*d\t\t \t #Entry length [m]\n", + "Nu = 0.023*(Re**(0.8))*(Pr**(0.4));\n", + "print \"The nussel number is\",Nu\n", + "\n", + "h = k*Nu/d\t \t\t#[W/m**2]\n", + "Ts = Tf+(qs*1000/h)\t\t\t#[degree Celcius]\n", + "print \"The surface temperature of the pipe at the exit becomes\",round(Ts),\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.6" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reynolds number is 35765.379113\n", + "The exit temperature of air is 71.2940188449 degree Celcius\n", + "The math.logrithmic mean temperature difference and the rate of heat loss from the air are -15.2346559432 degree Celcius and -1316.0 W respectively\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss from the ducts of a Heating System\n", + "\n", + "# Variables\n", + "Ti = 80\t\t\t#Inlet temp[degree Celcius]\n", + "A = 0.2*0.2\t\t\t#Area of cross section[m**2]\n", + "l = 8\t\t\t#Length of tube[m]\n", + "V = 0.15\t\t\t#[m**3/s]\n", + "Td = 60\t\t\t#Temperature of duct[degree Celcius]\n", + "#Properties of air at inlet conditions\n", + "rho = 0.9994\t\t\t#[kg/m**3]\n", + "Cp = 1008\t\t\t#[J/kg.degree Celcius]\n", + "k = 0.02953\t\t\t#[W/m.degree Celcius]\n", + "nu = 2.097*10**(-5)\t\t\t#[m**2/s]\n", + "Pr = 0.7154\t\t\t#Prandtl number\n", + "\n", + "# Calculations and Results\n", + "Dh = 4*A/(4*0.2)\t\t\t#Hydraulic Diameter[m]\n", + "v_avg = V/A\t\t\t#[m/s]\n", + "Re = v_avg*Dh/nu;\n", + "print \"Reynolds number is\",Re\n", + "\n", + "Lt = 10*Dh\t\t\t#Entry length\n", + "Nu = 0.023*(Re**(0.8))*(Pr**(0.3));\n", + "h = Nu*k/Dh\t\t\t#[W/m**2.degree Celcius]\n", + "As = 4*0.2*l\t\t\t#[m**2]\n", + "m_ = rho*V\t\t\t#[kg/s]\n", + "Te = Td-((Td-Ti)*math.exp((-h*As)/(m_*Cp)))\t\t\t#[degree Celcius]\n", + "print \"The exit temperature of air is\",Te,\"degree Celcius\"\n", + "\n", + "ln_delT = (Ti-Te)/(math.log((Td-Te)/(Td-Ti)))\t\t\t#[degree Celcius]\n", + "Q = h*As*ln_delT\t\t\t#[W]\n", + "print \"The math.logrithmic mean temperature difference and the rate of heat loss from the air are\" \\\n", + ",ln_delT,\"degree Celcius\",\"and\",round(Q),\"W\",\"respectively\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.7" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reynolds number is 7652.65549153\n", + "For bell mouth inlet friction coefficient is 0.00978680626691\n", + "For square edged inlet case coefficient of friction is 0.00818459567862\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Non-isothermal fully developed Friction in the Transition Region\n", + "\n", + "# Variables\n", + "q = 8\t\t\t#Wall heat flux[kW/m**2]\n", + "xm = 0.34\t\t\t#Mass fraction\n", + "d = 0.0158\t\t\t#Inside diameter[m]\n", + "V = 1.32*10**(-4)\t\t\t#Flow rate[m**3/s]\n", + "Pr = 11.6\t\t\t#Prandtl Number\n", + "nu = 1.39*10**(-6)\t\t\t#[m**2/s]\n", + "p = 1.14\t\t\t#(mu_b/mu_s)i.e. ratio of vismath.cosities of two subsmath.tances\n", + "Gr = 60800\t\t\t#Grashof number\n", + "\n", + "# Calculations and Results\n", + "Ac = math.pi*(d**2)*(1./4)\t\t\t#[m**2]\n", + "Re = (V/Ac)*d/nu;\n", + "print \"Reynolds number is\",Re\n", + "\n", + "#For bell mouth inlet shape\n", + "Cf1 = ((1+((round(Re)/5340)**(-0.099)))**(-6.32))*(p**(-2.58-0.42*(60.800**(-0.41))*(11.6**0.265)));\n", + "print \"For bell mouth inlet friction coefficient is\",Cf1\n", + "\n", + "#For square edged inlet Case\n", + "Cf2 = (0.0791/(Re**(0.25)))*(p**(-0.25));\n", + "print \"For square edged inlet case coefficient of friction is\",Cf2\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.8" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reynolds Number is 6715.3984427\n", + "(a) Nusselt number for re-entrant inlet is 88.259512708\n", + "(b) Nusselt number for square edged inlet is 85.3094482545\n", + "(c) Nusselt number for bell mouth inlet is 21.3233283966\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat transfer in the Transition Region\n", + "\n", + "# Variables\n", + "xm = 0.6\t\t\t#mass fraction of glycol\n", + "V = 2.6*10**(-4)\t\t\t#Flow rate[m**3/s]\n", + "d = 0.0158\t\t\t#inside diameter[m]\n", + "Gr = 51770\t\t\t#grashof number\n", + "Pr = 29.2\t\t\t#Prandtl number\n", + "nu = 3.12*10**(-6)\t\t\t#[m**2/s]\n", + "p = 1.77\t\t\t#mu_t/mu_s\n", + "q = 90\t\t\t#A particular loctaion x with x/d = q\n", + "\n", + "# Calculations and Results\n", + "Ac = math.pi*(d**2)/4;\n", + "Re = (V/Ac)*d/nu;\n", + "print \"Reynolds Number is\",Re\n", + "\n", + "#Value of Re lies in transition Region\n", + "Nu_lam = 1.24*(((Re*Pr/q)+(0.025*((Gr*Pr)**(0.75))))**(1./3))*(p**(0.14));\n", + "Nu_tur = 0.023*(Re**(0.8))*(Pr**0.385)*(q**(-0.0054))*(p**(0.14));\n", + "#(a)\n", + "Nu_tran_a = Nu_lam+((math.exp((1766-Re)/276)+(Nu_tur**(-0.955)))**(-0.955));\n", + "print \"(a) Nusselt number for re-entrant inlet is\",Nu_tran_a\n", + "\n", + "Nu_tran_b = Nu_lam+((math.exp((2617-Re)/207)+(Nu_tur**(-0.950)))**(-0.950));\n", + "print \"(b) Nusselt number for square edged inlet is\",Nu_tran_b\n", + "\n", + "Nu_tran_c = Nu_lam+((math.exp((6628-Re)/237)+(Nu_tur**(-0.980)))**(-0.980));\n", + "print \"(c) Nusselt number for bell mouth inlet is\",Nu_tran_c\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch9.ipynb b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch9.ipynb new file mode 100644 index 00000000..7e533fcb --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/ch9.ipynb @@ -0,0 +1,571 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 9 : Natural Convection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Rayleigh number is 0.0\n", + " The natural convection Nusselt number is 0.36\n", + "The pipe loses heat to the air in the room at a rate of 9.0 W by natural convection\n", + "The radiation heat transfer is 562.083528514 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss from Hot Water Pipes\n", + "\n", + "# Variables\n", + "l = 6\t \t\t#Length[m]\n", + "d = 0.08\t\t\t#diameter[m]\n", + "T_room = 20\t\t\t#[degree Celcius]\n", + "Ts = 70\t\t \t#Surface temperature of pipe[degree Celcius]\n", + "Tf = (Ts+T_room)/2\t\t\t#Film temperature[degree Celcius]\n", + "#Properties of air at Tf\n", + "k = 0.02699\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7241\t\t\t#Prandtl number\n", + "nu = 1.750*10**(-5)\t\t\t#[m**2/s]\n", + "b = (1/(Tf+273))\t\t\t#[K**-1]\n", + "g = 9.81\t\t \t#Acc dur to gravity[m/s**2]\n", + "e = 1\t\t \t#Emissivity\n", + "\n", + "# Calculations and Results\n", + "Lc = d\t\t\t#Characteristic length[m]\n", + "Ra_d = g*b*(Ts-T_room)*(d**3)*Pr/(nu**2);\n", + "print \"The Rayleigh number is\",Ra_d\n", + "\n", + "Nu = ((0.6+((0.387*(Ra_d**(1./6)))/((1+((0.559/Pr)**(9./16)))**(8./27))))**2);\n", + "print \" The natural convection Nusselt number is\",Nu\n", + "\n", + "h = k*Nu/d\t\t\t#[W/m**2.degree Celcius]\n", + "As = math.pi*d*l\t\t\t#[m**2]\n", + "Q = h*As*(Ts-T_room)\t\t\t#[W]\n", + "print \"The pipe loses heat to the air in the room at a rate of\",round(Q),\"W\",\"by natural convection\"\n", + "\n", + "Q_rad = e*As*(5.76*10**(-8))*(((Ts+273)**4)-((T_room+273)**4))\t\t\t#[W]\n", + "print \"The radiation heat transfer is\",Q_rad,\"W\"\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.2" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) The Rayleigh no is 764902757.268\n", + "The natural convection Nusselt number is 113.344693409\n", + "Heat loss to the surrounding is 114.577883674 W\n", + "(b) The Rayleigh number is 11951605.5823\n", + "The natural convection Nusselt number is 0.54\n", + "Heat Loss is 2.0 W\n", + "(c) Natural convection Nusselt number 0.27\n", + "Heat Loss is 1.0917504 W\n", + "Radiation heat loss is 182.0 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Cooling of a Plate in different orientaions\n", + "\n", + "# Variables\n", + "L = 0.6\t\t\t#side of square plate[m]\n", + "T_surr = 30.\t\t\t#[degree Celcius]\n", + "Tp = 90.\t\t\t#Temp of plate[degree Celcius]\n", + "Tf = (Tp+T_surr)/2\t\t\t#Film temperature[degree Celcius]\n", + "#Properties of air at Tf\n", + "k = 0.02808\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7202\t\t\t#Prandtl number\n", + "nu = 1.896*10**(-5)\t\t\t#Kinematic vismath.cosity[m**2/s]\n", + "b = 1./(Tf+273)\t\t\t#[K**-1]\n", + "g = 9.81\t\t\t#Acc due to gravity[m/s**2]\n", + "\n", + "\n", + "# Calculations and Results\n", + "Lc_a = L\t\t\t#Characteristic length\n", + "Ra_1 = g*b*(Tp-T_surr)*(L**3)*Pr/(nu**2);\n", + "print \"(a) The Rayleigh no is\",Ra_1\n", + "\n", + "Nu_a = ((0.825+(0.387*(Ra_1**(1./6)))/((1+((0.492/Pr)**(9./16)))**(8./27)))**2);\n", + "print \"The natural convection Nusselt number is\",Nu_a\n", + "\n", + "h_a = k*Nu_a/L\t\t\t#[W/m**2.degree Celcius]\n", + "As = L**2\t\t\t #[m**2]\n", + "Q_a = h_a*As*(Tp-T_surr)\t\t\t#[W]\n", + "print \"Heat loss to the surrounding is\",Q_a,\"W\"\n", + "\n", + "#Solution (b)\n", + "Lc_b = As/(4*L)\t\t\t#[m]\n", + "Ra_2 = g*b*(Tp-T_surr)*(Lc_b**3)*Pr/(nu**2);\n", + "print \"(b) The Rayleigh number is\",Ra_2\n", + "\n", + "Nu_b = 0.54*(Ra_2**(1/4));\n", + "print \"The natural convection Nusselt number is\",Nu_b\n", + "\n", + "h_b = k*Nu_b/Lc_b\t\t\t #[W/m**2.degree Celcius]\n", + "Q_b = h_b*As*(Tp-T_surr)\t\t\t#[W]\n", + "print \"Heat Loss is\",round(Q_b),\"W\"\n", + "\n", + "#Solution (c)\n", + "Lc_c = Lc_b\n", + "Nu_c = (0.27*Ra_2**(1/4));\n", + "print \"(c) Natural convection Nusselt number\",Nu_c\n", + "\n", + "h_c = k*Nu_c/Lc_c\t\t\t #[W/m**2.degree Celcius]\n", + "Q_c = h_c*As*(Tp-T_surr)\t\t\t#[W]\n", + "print \"Heat Loss is\",Q_c,\"W\"\n", + "\n", + "Q_rad = e*(5.67*10**(-8))*As*(((Tp+273)**4)-((T_surr+273)**4))\t\t\t#[W]\n", + "print \"Radiation heat loss is\",round(Q_rad),\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.3" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Rayleigh number is 18445278.9656\n", + "The optimum spacing is 0.745437165061 mm\n", + "The no of for this optimum fin spacing are 14.0\n", + "The rate of natural convection heat transfer 29.3947353567 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Optimum Fin Spacing of a Heat Sink\n", + "\n", + "# Variables\n", + "w = 0.12\t\t\t#width[m]\n", + "l = 0.18\t\t\t#length[m]\n", + "t = 0.001\t\t\t#thickness[m]\n", + "H = 0.024\t\t\t#height[m]\n", + "Ts = 80.\t \t\t#Bast temperature[degree Celcius]\n", + "T_surr = 30.\t\t#[degree Celcius]\n", + "Tf = (Ts+T_surr)/2\t\t\t#[degree Celcius]\n", + "#Properties of air at film temperature\n", + "k = 0.02772\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7215\t\t\t#Prandtl number\n", + "nu = 1.847*10**(-5)\t\t\t#[m**2/s]\n", + "b = 1/(Tf+273)\t\t\t#[K**-1]\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "\n", + "# Calculations and Results\n", + "Ra_l = g*b*(Ts-T_surr)*(l**3)*Pr/(nu**2);\n", + "print \"The Rayleigh number is\",Ra_l\n", + "\n", + "S_opt = 2.714*l/(Ra_l**(0.25))\t\t\t#[m]\n", + "print \"The optimum spacing is\",S_opt*100,\"mm\"\n", + "\n", + "n = w/(S_opt+t);\n", + "print \"The no of for this optimum fin spacing are\",round(n)\n", + "\n", + "Nu_opt = 1.307 \t\t \t#Optimum Nusselt number\n", + "h = Nu_opt*k/S_opt\t \t\t#[W/m**2.degree Celcius]\n", + "Q = h*2*round(n)*l*H*(Ts-T_surr)\t\t\t#[W]\n", + "print \"The rate of natural convection heat transfer\",Q,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.4" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Rayleigh Number is 10502.1341108\n", + "The Nusselt Number is 1.40068950621\n", + "Rate at which Heat is Lost through the window is 27.0725267761 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss through a Double Pane Window\n", + "\n", + "# Variables\n", + "H = 0.8 \t\t\t#Height[m]\n", + "L = 0.02\t\t\t#Air gap[m]\n", + "w = 2.\t \t\t#Width[m]\n", + "T1 = 12.\n", + "T2 = 2.\t\t \t#Glass Surface temperatures across the air gap\n", + "Tavg = (T1+T2)/2\t#[degree Celcius]\n", + "k = 0.02416\t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7344\t\t\t#Prandtl Number\n", + "nu = 1.4*10**(-5)\t#Kinematic Vismath.cosity[m**2/s]\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "\n", + "# Calculations and Results\n", + "Lc = L\t\t\t#Characteristic length\n", + "b = 1/(Tavg+273)\t\t\t#[K**-1]\n", + "Ra_L = g*b*(T1-T2)*Pr*(Lc**3)/(nu**2);\n", + "print \"The Rayleigh Number is\",Ra_L\n", + "\n", + "Nu = 0.42*(Ra_L**(1./4))*(Pr**(0.012))*((H/L)**(-0.3));\n", + "print \"The Nusselt Number is\",Nu\n", + "\n", + "As = H*w\t\t\t#[m**2]\n", + "h = k*Nu/L\t\t\t#[W/m**2.degree Celcius]\n", + "Q = h*As*(T1-T2);\n", + "print \"Rate at which Heat is Lost through the window is\",Q,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.5" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Rayleigh Number is 477453.533088\n", + "(0.0052291424278198, 0.11044889324463623)\n", + "The rate of heat transfer between the spheres is 16.6553007175 W\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Transfer through a Spherical Enclosure\n", + "\n", + "# Variables\n", + "Di = 0.2\t\t\t#Inner Diameter[m]\n", + "Do = 0.3\t\t\t#Outer Diameter[m]\n", + "Ti = 320\n", + "To = 280\t\t\t#The surface temperatures of two spheres enclomath.sing the air[K]\n", + "Tavg = (Ti+To)/2.\t\t\t#[K]\n", + "#Properties at Tavg\n", + "k = 0.02566\t\t\t#[W/m.K]\n", + "Pr = 0.7290\t\t\t#Prandtl Number\n", + "nu = 1.58*10**(-5)\t\t\t#[m**2/s]\n", + "b = (1/Tavg);\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "\n", + "# Calculations and Results\n", + "Lc = (Do-Di)/2\t\t\t#Characteristic length[m]\n", + "Ra_L = g*b*(Ti-To)*(Lc**3)*Pr/(nu**2);\n", + "print \"The Rayleigh Number is\",Ra_L\n", + "\n", + "Fsph = Lc/(((Di*Do)**4)*((((Di**(-7./5))+(Do**(-7./5))))**5));\n", + "keff = 0.74*k*((Pr/(0.861+Pr))**(1./4))*((Fsph*Ra_L)**(1./4))\t\t\t#[W/m.K]\n", + "print (Fsph,keff)\n", + "\n", + "Q = keff*(math.pi*Di*Do/Lc)*(Ti-To)\t\t\t#[W]\n", + "print \"The rate of heat transfer between the spheres is\",Q,\"W\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.6" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Rayleigh Number is 1823622.57723\n", + "The Nusselt number is 0.974169\n", + "The rate of natural convection heat transfer from the glass cover to the ambient air is 1.58408486914 W\n", + "The Rayleigh number on assuming higher temperatures 62581.6484932\n", + "The rate of heat transfer between the cylinders is 35.7293537245 W\n", + "Therefore tube will reach an equilibrium temperature of 82 degree Celcius when the pump fails\n" + ] + } + ], + "source": [ + "# Heating Water in a Tube by Solar Enegy\n", + "import math \n", + "\n", + "# Variables\n", + "Ts = 40. \t\t#Glass Temp[degree Celcius]\n", + "T_surr = 20.\t\t\t#Surrounding temperature[degree Celcius]\n", + "Tavg = (Ts+T_surr)/2\t\t\t#[degree Celcius]\n", + "Do = 0.1\t\t \t#[m]\n", + "Di = 0.05\t\t\t #[m]\n", + "L = 1\t\t\t #[m]\n", + "#Properties of glass at Tavg\n", + "k = 0.02588 \t\t\t#[W/m.degree Celcius]\n", + "Pr = 0.7282\t \t\t#Prandtl Number\n", + "nu = 1.608*10**(-5)\t\t\t#[m**2/s]\n", + "b = 1/(Tavg+273)\t\t\t#[K**-1]\n", + "\n", + "Q = 30\t\t\t#Rate pof absorpto\\ion of solar radiation[W]\n", + "g = 9.81\t\t\t#[m/s**2]\n", + "\n", + "# Calculations and Results\n", + "Ao = math.pi*Do*L\t\t\t#Heat transfer surface area of the glass cover[m**2]\n", + "Ra_D = g*b*(Ts-T_surr)*(Do**3)*Pr/(nu**2);\n", + "print \"The Rayleigh Number is\",Ra_D\n", + "\n", + "Nu = ((0.6+((0.387*(Ra_D**(1/6)))/((1+((0.550/Pr)**(9/16)))**(8/27))))**2);\n", + "print \"The Nusselt number is\",Nu\n", + "\n", + "ho = k*Nu/Do\t\t\t#[W/m**2.degree Celcius]\n", + "Qo = ho*Ao*(Ts-T_surr)\t\t\t#[W]\n", + "print \"The rate of natural convection heat transfer from the glass cover to the ambient air is\",Qo,\"W\"\n", + "\n", + "#Value of Qo is less than 30W so assuming a higher temp of glass cover\n", + "T_surr1 = 41 \t \t\t#[degree Celcius]\n", + "Ts1 = 90 \t \t \t#[degree Celcius]\n", + "Tavg1 = (T_surr1+Ts1)/2\t\t\t#[degree Celcius]\n", + "b1 = 1./(Tavg1+273)\t\t\t#[K**-1]\n", + "Lc = (Do-Di)/2\t\t\t#Characteristic length [m]\n", + "Ra_L1 = g*b1*(Ts1-T_surr1)*(Lc**3)*Pr/(nu**2);\n", + "print \"The Rayleigh number on assuming higher temperatures\",Ra_L1\n", + "\n", + "Fcyl = ((math.log(Do/Di))**4)/((Lc**3)*(((Di**(-3./5))+(Do**(-3./5)))**5));\n", + "keff = 0.386*k*((Pr/(0.861+Pr))**(1./4))*((Fcyl*Ra_L1)**(1./4))\t\t\t#[W/m.degree Celcius]\n", + "Q1 = 2*math.pi*keff*(Ts1-T_surr1)/(math.log(Do/Di)) \t\t\t#[W]\n", + "print \"The rate of heat transfer between the cylinders is\",Q1,\"W\"\n", + "\n", + "#Obtained value of Q1 is more than 30 W, so umath.sing hit and trial aand suuming more values we get the tube temperature to be 82 degree Celcius,\n", + "print (\"Therefore tube will reach an equilibrium temperature of 82 degree Celcius when the pump fails\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.7" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The center of glass U-factor value is 3.46107089988 W/m**2.degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# U factor for Center of glass Section of Windows\n", + "\n", + "# Variables\n", + "e = 0.84\t\t\t#Emissivity\n", + "#For winter season\n", + "hi = 8.29\t\t\t#[W/m**2.degree Celcius]\n", + "ho = 34.0\t\t\t#[W/m**2.degree Celcius]\n", + "\n", + "# Calculations\n", + "e_eff = 1./((1/e)+(1/e)-1)\t\t\t#Effective emissivity of air space\n", + "#the effective emissivity and an average air space temperature of 0 degree Celcius read \n", + "h_space = 7.2 \t\t\t#[W/m**2.degree Celcius]\n", + "U_center = 1/((1/hi)+(1/ho)+(1/h_space))\t\t\t#[W/m**s.degree Celcius]\n", + "\n", + "# Results\n", + "print \"The center of glass U-factor value is\",U_center,\"W/m**2.degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.8" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) The Inner surface temperature of the window glass is -3.56144578313 degree Celcius\n", + "(b) The Inner surface temperature of the window glass is 8.46746987952 degree Celcius\n", + "(c) The Inner surface temperature of the window glass is 14.5975903614 degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# Heat Loss through Aluminium Framed Windows\n", + "\n", + "# Variables\n", + "H = 1.2\t\t\t#Height[m]\n", + "w = 1.8\t\t\t#Width[m]\n", + "Ti = 22\t\t\t#Inside temp[degree Celcius]\n", + "To = -10\t\t#Outside temp[degree Celcius]\n", + "U_a = 6.63\n", + "U_b = 3.51\n", + "U_c = 1.92\n", + "hi = 8.3\t\t#[W/m**.degree Celcius]\n", + "\n", + "# Calculations and Results\n", + "A_win = h*w\t\t\t #[m**2]\n", + "Q_win_a = U_a*A_win*(Ti-To)\t\t\t#[W]\n", + "T_glass_a = Ti-(Q_win_a/(hi*A_win))\t\t\t#[degree Celcius]\n", + "print \"(a) The Inner surface temperature of the window glass is\",T_glass_a,\"degree Celcius\"\n", + "\n", + "Q_win_b = U_b*A_win*(Ti-To)\t\t\t#[W]\n", + "T_glass_b = Ti-(Q_win_b/(hi*A_win))\t\t\t#[degree Celcius\n", + "print \"(b) The Inner surface temperature of the window glass is\",T_glass_b,\"degree Celcius\"\n", + "\n", + "Q_win_c = U_c*A_win*(Ti-To)\t\t\t#[W]\n", + "T_glass_c = Ti-(Q_win_c/(hi*A_win))\t\t\t#[degree Celcius]\n", + "print \"(c) The Inner surface temperature of the window glass is\",T_glass_c,\"degree Celcius\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.9" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The overall U factor of the entire window is 3.28109722222 W/m**2.degree Celcius\n" + ] + } + ], + "source": [ + "\n", + "import math \n", + "# U-Factor of a Double-Door Window\n", + "\n", + "# Variables\n", + "A_win = 1.8*2.0\t\t\t #[m**2]\n", + "A_glazing = 2*1.72*0.94\t\t\t#[m**2]\n", + "U_c = 3.24\n", + "U_e = 3.71\n", + "U_f = 2.8\t\t\t#U factors for the center edge and frame sections respectively [W/m**2.degree Celcius]\n", + "\n", + "# Calculations\n", + "A_frame = A_win-A_glazing\t\t \t#[m**2]\n", + "A_center = 2*(1.72-0.13)*(0.94-0.13)\t\t\t#[m**2]\n", + "A_edge = A_glazing-A_center\t\t\t #[m**2]\n", + "U_win = ((U_c*A_center)+(U_e*A_edge)+(U_f*A_frame))/A_win\t\t\t#[W/m**2.degree Celcius]\n", + "\n", + "# Results\n", + "print \"The overall U factor of the entire window is\",U_win,\"W/m**2.degree Celcius\"\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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/14.png b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/14.png Binary files differnew file mode 100644 index 00000000..7c4a5678 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/14.png diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/2.png b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/2.png Binary files differnew file mode 100644 index 00000000..548f61ca --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/2.png diff --git a/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/5.png b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/5.png Binary files differnew file mode 100644 index 00000000..2ee8c9f0 --- /dev/null +++ b/Heat_And_Mass_Transfer_-_A_Practical_Approach_by_Y._A._Cengel/screenshots/5.png diff --git a/sample_notebooks/VineshSaini/ch10.ipynb b/sample_notebooks/VineshSaini/ch10.ipynb new file mode 100644 index 00000000..07f94034 --- /dev/null +++ b/sample_notebooks/VineshSaini/ch10.ipynb @@ -0,0 +1,351 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter10 Elliptical Partial Differential Equations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.1 page 441" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u:\n", + "[[ 0. 0. 0. 0. 0. ]\n", + " [ 0. 6.25 12.5 18.75 25. ]\n", + " [ 0. 12.5 25. 37.5 50. ]\n", + " [ 0. 18.75 37.5 56.25 75. ]\n", + " [ 0. 25. 50. 75. 100. ]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,zeros\n", + "from math import ceil\n", + "\n", + "h = 1/4\n", + "xf = 1\n", + "yf = 1\n", + "x = arange(0,h+xf,h)\n", + "y = arange(0,h+yf,h)\n", + "m = len(y)-1\n", + "n = len(x)-1\n", + "\n", + "u = zeros([m+1,n+1])\n", + "u[m,:] = [100*xx for xx in x]\n", + "u[:,n] = [100*yy for yy in y] # dash transpose\n", + "u0 = u\n", + "\n", + "I = int(ceil(m/2)) #\n", + "J = int(ceil(n/2)) #\n", + "\n", + "u[J,I] = (u0[J-2,I-2] + u0[J-2,I+2] + u0[J+2,I-2] + u0[J+2,I+2]) / 4\n", + "\n", + "for j in [J-1,J+1]:\n", + " for i in [I-1,I+1]:\n", + " u[j,i] = (u[j-1,i-1] + u[j-1,i+1] + u[j+1,i-1] + u[j+1,i+1]) / 4\n", + " \n", + "\n", + "# j and i may have loose 1\n", + "j1 = [J-1,J,J,J+1]\n", + "i1 = [I,I-1,I+1,I]\n", + "for k in range(0,4):\n", + " i = i1[(k)]\n", + " j = j1[(k)]\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4\n", + "\n", + "\n", + "print \"u:\\n\",u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.3 page 442" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " r u11 u21 u31 u12 u22 u32 u13 u23 u33\n", + " ------------------------------------------------------------------------------------------------\n", + " 1 6.2500 9.3750 6.2500 18.7500 25.0000 18.7500 43.7500 53.1250 43.7500 \n", + " 1 7.0312 9.5703 7.0801 18.9453 25.0977 18.9819 43.0176 52.9663 42.9871 \n", + " 1 7.1289 9.8267 7.2021 18.8110 25.1465 18.8339 42.9443 52.7695 42.9008 \n" + ] + } + ], + "source": [ + "from numpy import zeros\n", + "m = 5\n", + "n = 5\n", + "u = zeros([m,n])\n", + "u[m-1,:] = [50,100, 100, 100, 50]\n", + "u0 = u\n", + "I = int(ceil(m/2))-1\n", + "J = int(ceil(n/2))-1\n", + "\n", + "u[J,I] = (u0[J-2,I-2] + u0[J-2,I+2] + u0[J+2,I-2] + u0[J+2,I+2]) / 4\n", + "\n", + "for j in [J-1,J+1]:\n", + " for i in [I-1,I+1]:\n", + " u[j,i] = (u[j-1,i-1] + u[j-1,i+1] + u[j+1,i-1] + u[j+1,i+1]) / 4\n", + " \n", + "\n", + "j1 = [J-1, J ,J ,J+1]\n", + "i1 = [I ,I-1, I+1, I]\n", + "for k in range(0,4):\n", + " i = i1[(k)]\n", + " j = j1[(k)]\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4\n", + "\n", + "\n", + "kf = 2\n", + "tab = zeros([kf+1,(m-2)*(n-2)])\n", + "row = []\n", + "for j in range(1,n-1):\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + "\n", + "tab[0,:] = row;\n", + "for k in range(0,kf):\n", + " row = [];\n", + " for j in range(1,n-1):\n", + " for i in range(1,m-1):\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4;\n", + " for xx in u[j,range(1,m-1)]: \n", + " row.append(xx)\n", + " \n", + " row = [round(roww*10**4,4)/10**4 for roww in row]\n", + " tab[k+1,:] = row\n", + "\n", + "print \"%4s %9s %9s %9s %9s %10s %10s %10s %10s %10s\"%('r','u11','u21','u31','u12','u22','u32','u13','u23','u33')\n", + "print ' ','-'*96\n", + "for tabb in tab:\n", + " i=1;\n", + " print ' ',i,' ',\n", + " for tt in tabb:\n", + " print ' %0.4f'%(tt),' ',\n", + " i+=1;\n", + " print" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.4 page 444" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " r u11 u21 u12 u22\n", + " 1 1.3889 1.7670 2.0170 2.6466 \n", + " 2 2.3349 2.6651 2.9151 3.0957 \n", + " 3 2.7840 2.8897 3.1397 3.2079 \n", + " 4 2.8962 2.9458 3.1958 3.2360 \n", + " 5 2.9243 2.9598 3.2098 3.2430 \n" + ] + } + ], + "source": [ + "from numpy import arange\n", + "h = 1/3\n", + "x = arange(0,h+1,h)\n", + "y = arange(0,h+1,h)\n", + "m = len(y)\n", + "n = len(x)\n", + "u = zeros([m,n])\n", + "u[m-1,range(1,n-1)] = 1\n", + "\n", + "kf = 5\n", + "tab = zeros([kf,(m-2)*(n-2)])\n", + "for k in range(0,kf):\n", + " row = []\n", + " for j in range(1,n-1):\n", + " for i in range(1,m-1):\n", + " constant = 10/9* (5 + 1/9*(i-1)**2 + 1/9*(j-1)**2)\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i] + constant) / 4\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + " \n", + " row = [round(roww*10**4)/10**4 for roww in row]\n", + " tab[k,:] = row\n", + "\n", + "print \"%4s %9s %9s %9s %9s\"%('r','u11','u21','u12','u22')\n", + "i=1;\n", + "for tabb in tab:\n", + " \n", + " print ' ',i,' ',\n", + " for tt in tabb:\n", + " print ' %0.4f'%(tt),' ',\n", + " i+=1;\n", + " print" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.5 page 446" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u:\n", + "[[ 0. 0. 0. 0. 0. ]\n", + " [ 0. 4. 8. 12. 16. ]\n", + " [ 0. 6.5 16. 22.5 32. ]\n", + " [ 0. 6. 15. 30. 48. ]\n", + " [ 0. 1. 8. 27. 64. ]]\n", + "\n", + "\n", + "\t u11 u21 u31 u12 u22 u32 u13 u23 u33\n", + " 1 4.0000 8.0000 12.0000 6.5000 16.0000 22.5000 6.0000 15.0000 30.0000 \n", + " 2 3.5605 7.8712 11.5228 6.3712 12.4085 21.3079 5.5228 13.8079 27.1039 \n", + " 3 3.5606 6.7013 10.9128 5.2013 11.6421 20.2611 4.9128 12.7611 26.9886 \n", + " 4 2.8750 6.2983 10.5929 4.7983 10.9244 20.1033 4.5929 12.6033 26.9160 \n", + " 5 2.7568 6.0290 10.5228 4.5290 10.7975 20.0515 4.5228 12.5515 26.8981 \n", + " 6 2.6193 5.9773 10.5045 4.4773 10.7587 20.0384 4.5045 12.5384 26.8935 \n", + " 7 2.6127 5.9675 10.5010 4.4675 10.7520 20.0363 4.5010 12.5363 26.8931 \n", + " 8 2.6081 5.9649 10.5002 4.4649 10.7504 20.0358 4.5002 12.5358 26.8929 \n", + " 9 2.6073 5.9644 10.5000 4.4644 10.7501 20.0357 4.5000 12.5357 26.8929 \n", + " 10 2.6072 5.9643 10.5000 4.4643 10.7500 20.0357 4.5000 12.5357 26.8929 \n", + " 11 2.6072 5.9643 10.5000 4.4643 10.7500 20.0357 4.5000 12.5357 26.8929 \n" + ] + } + ], + "source": [ + "from math import ceil\n", + "from numpy import cos,pi,sqrt,zeros\n", + "x = range(0,5)\n", + "y = range(0,5)\n", + "m = len(y)\n", + "n = len(x)\n", + "u = zeros([m,n])\n", + "u[m-1,:] = [xx**3 for xx in x]\n", + "u[:,n-1] = [16*yy for yy in y]\n", + "u0 = u\n", + "\n", + "I = int(ceil(m/2))-1\n", + "J = int(ceil(n/2))-1\n", + "\n", + "u[J,I] = (u0[J-2,I-2] + u0[J-2,I+2] + u0[J+2,I-2] + u0[J+2,I+2]) / 4\n", + "\n", + "for j in [J-1,J+1]:\n", + " for i in [I-1,I+1]:\n", + " u[j,i] = (u[j-1,i-1] + u[j-1,i+1] + u[j+1,i-1] + u[j+1,i+1]) / 4\n", + " \n", + "\n", + "\n", + "j1 = [J-1,J ,J ,J+1]\n", + "i1 = [I, I-1, I+1, I]\n", + "for k in range(0,4):\n", + " i = i1[(k)]\n", + " j = j1[(k)]\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4\n", + "\n", + "print \"u:\\n\",u\n", + "\n", + "p = m-1\n", + "q = n-1\n", + "c = cos(pi/p) + cos(pi/q)\n", + "w = 4/(2+sqrt(4-c**2))\n", + "w = round(w*10**3)/10**3\n", + "\n", + "kf = 10\n", + "tab = zeros([kf+1,(m-2)*(n-2)])\n", + "row = []\n", + "for j in range(1,n-1):\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + "\n", + "tab[0,:] = row\n", + "for k in range(0,kf):\n", + " row = []\n", + " for j in range(1,n-1):\n", + " for i in range(1,m-1):\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) *w/4 + (1-w)*u[j,i]\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + " \n", + " row = [round(roww*10**4)/10**4 for roww in row]\n", + " tab[k+1,:] = row\n", + "\n", + "print \"\\n\\n\\t%8s %9s %10s %10s %9s %10s %10s %9s %9s\"%('u11','u21','u31','u12','u22','u32','u13','u23','u33')\n", + "i=1;\n", + "for tabb in tab:\n", + " \n", + " print ' ',i,' ',\n", + " for tt in tabb:\n", + " print ' %0.4f'%(tt),' ',\n", + " i+=1;\n", + " print\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 +} |