summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrupti Kini2017-03-28 23:30:22 +0600
committerTrupti Kini2017-03-28 23:30:22 +0600
commit5bb207dcfc7ffcad774c729d5cf83a944501411c (patch)
tree8f366f4cae6fc5ad7415b840490e3a92bb9dec94
parent26aa9704628ed4f79be6dd102f2c12d13b3fa85d (diff)
downloadPython-Textbook-Companions-5bb207dcfc7ffcad774c729d5cf83a944501411c.tar.gz
Python-Textbook-Companions-5bb207dcfc7ffcad774c729d5cf83a944501411c.tar.bz2
Python-Textbook-Companions-5bb207dcfc7ffcad774c729d5cf83a944501411c.zip
Added(A)/Deleted(D) following books
A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter1.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter10.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter2.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter3.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter4.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter5.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter6_.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter7.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter8.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter9.ipynb A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/gauss_elimination_method.png A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/solution_by_tdma_method.png A Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/valueofx123.png
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter1.ipynb389
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter10.ipynb567
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter2.ipynb343
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter3.ipynb810
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter4.ipynb1473
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter5.ipynb586
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter6_.ipynb331
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter7.ipynb278
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter8.ipynb392
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter9.ipynb463
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/gauss_elimination_method.pngbin0 -> 58373 bytes
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/solution_by_tdma_method.pngbin0 -> 58276 bytes
-rw-r--r--Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/valueofx123.pngbin0 -> 38128 bytes
13 files changed, 5632 insertions, 0 deletions
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter1.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter1.ipynb
new file mode 100644
index 00000000..6864d1a1
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter1.ipynb
@@ -0,0 +1,389 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 1 - Linear Algebraic Equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa1.1 Page 3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the solution of ex 1.1 by TDMA method is\n",
+ "317.5\n",
+ "395.0\n",
+ "432.5\n",
+ "430.0\n",
+ "387.5\n",
+ "305.0\n",
+ "182.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import zeros\n",
+ "from __future__ import division\n",
+ "a=[0];b=[];c=[]\n",
+ "for i in range(1,7):\n",
+ " a.append(1) #sub diagonal assignment\n",
+ "\n",
+ "for j in range(0,7):\n",
+ " b.append(-2) #main diagonal assignment\n",
+ "\n",
+ "for k in range(0,6):\n",
+ " c.append(1) #super diagonal assignment\n",
+ "\n",
+ "d=[-240] #given values assignment\n",
+ "for l in range(1,6):\n",
+ " d.append(-40) \n",
+ "\n",
+ "d.append(-60)\n",
+ "i=1#\n",
+ "n=7#\n",
+ "beta1=[b[i-1]]# #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]]# #since c7=0\n",
+ "m=i+1\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-1-1]/beta1[j-1-1])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-1-1])/beta1[j-1])\n",
+ "\n",
+ "#x(n)=gamma1(n)# #since c7=0\n",
+ "x=zeros(n-1)\n",
+ "#x[n-1]=gamma1[n-1]\n",
+ "x=list(x)\n",
+ "x.append(gamma1[-1])\n",
+ "n1=n-i# \n",
+ "\n",
+ "for k in range(0,n1):\n",
+ " j=n-k-1\n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j+1-1]/beta1[j-1]\n",
+ "\n",
+ "\n",
+ "print \"the solution of ex 1.1 by TDMA method is\"\n",
+ "for i in range(0,7):\n",
+ " print x[i]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa1.2 Page 6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the solution using gauss elimination method is 3, 4 and 5\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "a1=10; a2=1; a3=2; #1st row\n",
+ "b1=2; b2=10; b3=1; #2nd row\n",
+ "c1=1; c2=2; c3=10; #3rd row \n",
+ "d1=44; d2=51; d3=61; #given values\n",
+ "\n",
+ "b3=b3-(b1/a1)*a3 # for making b1=0\n",
+ "b2=b2-(b1/a1)*a2\n",
+ "d2=d2-(b1/a1)*d1\n",
+ "b1=b1-(b1/a1)*a1\n",
+ "\n",
+ "c3=c3-(c1/a1)*a3 # for making c1=0\n",
+ "c2=c2-(c1/a1)*a2\n",
+ "d3=d3-(c1/a1)*d1\n",
+ "c1=c1-(c1/a1)*a1\n",
+ "\n",
+ "c3=c3-(c2/b2)*b3 # for making c2=0\n",
+ "d3=d3-(c2/b2)*d2\n",
+ "c2=c2-(c2/b2)*b2\n",
+ "\n",
+ "x3=d3/c3# # final values of x\n",
+ "x2=(d2-(b3*x3))/b2#\n",
+ "x1=(d1-(x3*a3)-(x2*a2))/a1#\n",
+ "print \"the solution using gauss elimination method is %d, %d and %d\"%(x1,x2,x3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa1.3 Page 7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the solution using gauss elimination method is 3, -2 and 0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "a1=3; a2=1; a3=-2; #1st row\n",
+ "b1=-1; b2=4; b3=-3; #2nd row\n",
+ "c1=1; c2=-1; c3=4; #3rd row \n",
+ "d1=9; d2=-8; d3=1; #given values\n",
+ "\n",
+ "b3=b3-(b1/a1)*a3 # for making b1=0\n",
+ "b2=b2-(b1/a1)*a2\n",
+ "d2=d2-(b1/a1)*d1\n",
+ "b1=b1-(b1/a1)*a1\n",
+ "\n",
+ "c3=c3-(c1/a1)*a3 # for making c1=0\n",
+ "c2=c2-(c1/a1)*a2\n",
+ "d3=d3-(c1/a1)*d1\n",
+ "c1=c1-(c1/a1)*a1\n",
+ "\n",
+ "c3=c3-(c2/b2)*b3 # for making c2=0\n",
+ "d3=d3-(c2/b2)*d2\n",
+ "c2=c2-(c2/b2)*b2\n",
+ "\n",
+ "x3=d3/c3# # final values of x\n",
+ "x2=(d2-(b3*x3))/b2#\n",
+ "x1=(d1-(x3*a3)-(x2*a2))/a1#\n",
+ "print \"the solution using gauss elimination method is %d, %d and %d\"%(x1,x2,x3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa1.4 Page 8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of MOLAR FLOW RATES of D1, B1, D2, B2 respectively are : 26, 18, 9 and 17\n",
+ "the composition of stream B is 0.077, 0.247, 0.467 & 0.210\n",
+ "the composition of stream D is 0.274 0.492 0.12 0.114\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "\n",
+ "a1=.35; a2=.16; a3=.21; a4=.01 #1st row \n",
+ "b1=.54; b2=.42; b3=.54; b4=.1 #2nd row\n",
+ "c1=.04; c2=.24; c3=.1; c4=.65 #3rd row\n",
+ "d1=.07; d2=.18; d3=.15; d4=.24 #4th row \n",
+ "r1=14; r2=28; r3=17.5; r4=10.5 #given values\n",
+ "\n",
+ "b4=b4-(b1/a1)*a4 # for making b1=0\n",
+ "b3=b3-(b1/a1)*a3\n",
+ "b2=b2-(b1/a1)*a2\n",
+ "r2=r2-(b1/a1)*r1\n",
+ "b1=b1-(b1/a1)*a1\n",
+ "\n",
+ "c4=c4-(c1/a1)*a4 # for making c1=0\n",
+ "c3=c3-(c1/a1)*a3\n",
+ "c2=c2-(c1/a1)*a2\n",
+ "r3=r3-(c1/a1)*r1\n",
+ "c1=c1-(c1/a1)*a1\n",
+ "\n",
+ "d4=d4-(d1/a1)*a4 # for making d1=0\n",
+ "d3=d3-(d1/a1)*a3\n",
+ "d2=d2-(d1/a1)*a2\n",
+ "r4=r4-(d1/a1)*r1\n",
+ "d1=d1-(d1/a1)*a1\n",
+ "\n",
+ "c4=c4-(c2/b2)*b4 # for making c2=0\n",
+ "c3=c3-(c2/b2)*b3\n",
+ "r3=r3-(c2/b2)*r2\n",
+ "c2=c2-(c2/b2)*b2\n",
+ "\n",
+ "d4=d4-(d2/b2)*b4 # for making d2=0\n",
+ "d3=d3-(d2/b2)*b3\n",
+ "r4=r4-(d2/b2)*r2\n",
+ "d2=d2-(d2/b2)*b2\n",
+ "\n",
+ "d4=d4-(d3/c3)*c4 #for making d3=0\n",
+ "r4=r4-(d3/c3)*r3\n",
+ "d3=d3-(d3/c3)*c3\n",
+ "\n",
+ "B2=r4/d4#\n",
+ "D2=(r3-(c4*B2))/c3#\n",
+ "B1=(r2-(D2*b3)-(B2*b4))/b2#\n",
+ "D1=(r1-(B2*a4)-(D2*a3)-(B1*a2))/a1#\n",
+ "print \"the values of MOLAR FLOW RATES of D1, B1, D2, B2 respectively are : %.f, %.f, %.f and %.f\"%(D1,B1,D2,B2)\n",
+ "\n",
+ "B=D2+B2#\n",
+ "x1B=(.21*D2 + .01*B2)/B#\n",
+ "x2B=(.54*D2 + .1*B2)/B#\n",
+ "x3B=(.1*D2 + .65*B2)/B#\n",
+ "x4B=(.15*D2 + .24*B2)/B#\n",
+ "print \"the composition of stream B is %.3f, %.3f, %.3f & %.3f\"%(x1B,x2B,x3B,x4B)\n",
+ "\n",
+ "D=D1+B1#\n",
+ "x1D=(.35*D1 + .16*B1)/D#\n",
+ "x2D=(.54*D1 + .42*B1)/D#\n",
+ "x3D=(.04*D1 + .24*B1)/D#\n",
+ "x4D=(.07*D1 + .18*B1)/D#\n",
+ "print \"the composition of stream D is\",x1D,x2D,x3D,x4D"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa1.5 Page 11"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of x1,x2,x3 respectively are\n",
+ "3\n",
+ "4\n",
+ "5\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "xnew=[];e=[]\n",
+ "for i in range(0,3):\n",
+ " xnew.append(2)\n",
+ " e.append(1)\n",
+ "\n",
+ "x=1e-6\n",
+ "while e[0]>x and e[1]>x and e[2]>x:\n",
+ " xold=[]\n",
+ " for i in range(0,3):\n",
+ " xold.append(xnew[i])\n",
+ " \n",
+ " xnew[0]=(44-xold[1]-2*xold[2])/10\n",
+ " xnew[1]=(-2*xnew[0]+51-xold[2])/10\n",
+ " xnew[2]=(-2*xnew[1]-xnew[0]+61)/10\n",
+ " e=[]\n",
+ " for i in range(0,3):\n",
+ " e.append(abs(xnew[i]-xold[i]))\n",
+ " \n",
+ "print \"the values of x1,x2,x3 respectively are\"\n",
+ "for i in range(0,3):\n",
+ " print '%.f'%xnew[i]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa1.6 Page 11"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of x1,x2,x3 respectively : \n",
+ "3\n",
+ "-2\n",
+ "-1\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "xnew=[];e=[];\n",
+ "for i in range(0,3):\n",
+ " xnew.append(2)\n",
+ " e.append(1)\n",
+ "\n",
+ "x=1e-6\n",
+ "while e[0]>x and e[1]>x and e[2]>x:\n",
+ " xold=[]\n",
+ " for i in range(0,3):\n",
+ " xold.append(xnew[i])\n",
+ " \n",
+ " xnew[0]=(9-xold[1]+2*xold[2])/3\n",
+ " xnew[1]=(xnew[0]-8+3*xold[2])/4\n",
+ " xnew[2]=(xnew[1]-xnew[0]+1)/4\n",
+ " e=[]\n",
+ " for i in range(0,3):\n",
+ " e.append(abs(xnew[i]-xold[i]))\n",
+ " \n",
+ "print \"the values of x1,x2,x3 respectively : \"\n",
+ "for i in range(0,3):\n",
+ " print '%.f'%xnew[i]"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter10.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter10.ipynb
new file mode 100644
index 00000000..0a942254
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter10.ipynb
@@ -0,0 +1,567 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 10 - Two-Dimensional Steady & Transient Heat Conduction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa10.1 Page 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of T from 1st element to last is:\n",
+ "\n",
+ "47.142854591 \t91.2499974482 \t182.857141581 \t57.3214260196 \t114.999997448 \t220.178570153 \t47.1428558669 \t91.2499987241 \t182.857142219 \t"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "tnew=[]\n",
+ "e=[]\n",
+ "for i in range(1,10):\n",
+ " tnew.append(101)\n",
+ " e.append(1) #assumed values\n",
+ "\n",
+ "t=1e-6\n",
+ "#since all the nodes are interior nodes so discretized eqn used is eqn 10.10\n",
+ "while e[0]>t and e[1]>t and e[2]>t and e[3]>t and e[4]>t and e[5]>t and e[6]>t and e[7]>t and e[8]>t:\n",
+ " told=[]\n",
+ " for i in range(1,10):\n",
+ " told.append(tnew[i-1])\n",
+ " tnew[0]=(told[1]+40+told[3])/4 #on solving eqns for various nodes we get,\n",
+ " tnew[1]=(tnew[0]+told[2]+told[4]+20)/4\n",
+ " tnew[2]=(tnew[1]+told[5]+420)/4\n",
+ " tnew[3]=(told[4]+tnew[0]+told[6]+20)/4\n",
+ " tnew[4]=(tnew[1]+told[7]+told[5]+tnew[3])/4\n",
+ " tnew[5]=(tnew[2]+tnew[4]+told[8]+400)/4\n",
+ " tnew[6]=(tnew[3]+told[7]+40)/4\n",
+ " tnew[7]=(tnew[4]+tnew[6]+told[8]+20)/4\n",
+ " tnew[8]=(tnew[5]+420+tnew[7])/4\n",
+ " e=[]\n",
+ " for i in range(1,10):\n",
+ " e.append(abs(tnew[i-1]-told[i-1]))\n",
+ " \n",
+ "\n",
+ "print \"the values of T from 1st element to last is:\\n\"\n",
+ "for i in range(1,10):\n",
+ " print tnew[i-1],'\\t',"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa10.2 Page 198"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of T from 1st element to last is:\n",
+ "\n",
+ "145.833332213 \t141.666666106 \t120.833333053 \t141.666666527 \t145.833333263 \t"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "tnew=[]\n",
+ "e=[]\n",
+ "for i in range(1,6):\n",
+ " tnew.append(101)\n",
+ " e.append(1)\n",
+ "\n",
+ "t=1e-6\n",
+ "#since there is no source term so we get the following eqns.\n",
+ "while e[0]>t and e[1]>t and e[2]>t and e[3]>t and e[4]>t:\n",
+ " told=[]\n",
+ " for i in range(1,6):\n",
+ " told.append(tnew[i-1])\n",
+ " \n",
+ " tnew[0]=(told[1]*2+300)/4\n",
+ " tnew[1]=(tnew[0]+told[2]+300)/4\n",
+ " tnew[2]=(tnew[1]+told[3]+200)/4\n",
+ " tnew[3]=(told[4]+tnew[2]+300)/4\n",
+ " tnew[4]=(2*tnew[3]+300)/4\n",
+ " \n",
+ " for i in range(1,6):\n",
+ " e[i-1]=(abs(tnew[0]-told[i-1]))\n",
+ " \n",
+ "\n",
+ "print \"the values of T from 1st element to last is:\\n\"\n",
+ "for i in range(1,6):\n",
+ " print tnew[i-1],'\\t',"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa10.3 Page 201"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of RED points respectively : 47.1429, 47.1429, 115.0000, 91.2500 & 47.1429\n",
+ "the value of BLUE points respectively : 91.2500, 220.1786, 57.3214 & 91.2500\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "tn=zeros([5,5])\n",
+ "for j in range(1,6):\n",
+ " tn[j-1,0]=400 #defining conditions\n",
+ "\n",
+ "for j in range(2,5):\n",
+ " tn[0,j-1]=20\n",
+ " tn[4,j-1]=20\n",
+ " tn[j-1,4]=20\n",
+ "\n",
+ "e=[] \n",
+ "for i in range(1,10):\n",
+ " e.append(1)\n",
+ "\n",
+ "for i in range(2,5):\n",
+ " tn[i-1,1:4]=60\n",
+ "\n",
+ "\n",
+ "t1=1e-6\n",
+ "t=zeros([4,4])\n",
+ "while e[0]>t1 and e[1]>t1 and e[2]>t1 and e[3]>t1 and e[4]>t1 and e[5]>t1 and e[6]>t1 and e[7]>t1 and e[8]>t1:\n",
+ " for i in range(1,4):\n",
+ " for j in range(1,4):\n",
+ " t[i,j]=tn[i,j]\n",
+ " \n",
+ " #using red-black gauss-seidel method\n",
+ " for i in range(1,4):\n",
+ " for j in range(1,4):\n",
+ " tn[i,j]=(tn[i+1,j]+tn[i-1,j]+tn[i,j+1]+tn[i,j-1])/4\n",
+ " #now getting the absolute difference of the 9 variables\n",
+ " e[0]=abs(t[1,1]-tn[1,1])\n",
+ " e[1]=abs(t[1,2]-tn[1,2])\n",
+ " e[2]=abs(t[1,3]-tn[1,3])\n",
+ " e[3]=abs(t[2,1]-tn[2,1])\n",
+ " e[4]=abs(t[2,2]-tn[2,2])\n",
+ " e[5]=abs(t[2,3]-tn[2,3])\n",
+ " e[6]=abs(t[3,1]-tn[3,1])\n",
+ " e[7]=abs(t[3,2]-tn[3,2])\n",
+ " e[8]=abs(t[3,3]-tn[3,3])\n",
+ "\n",
+ "#now defining positions of the various nodes according to red black combination\n",
+ "R1=t[1,3]\n",
+ "R2=t[3,3]\n",
+ "R3=t[2,2]\n",
+ "R4=t[1,2]\n",
+ "R5=t[1,3]\n",
+ "B1=t[3,2]\n",
+ "B2=t[2,1]\n",
+ "B3=t[2,3]\n",
+ "B4=t[1,2]\n",
+ "print \"the value of RED points respectively : %.4f, %.4f, %.4f, %.4f & %.4f\"%(R1,R2,R3,R4,R5)\n",
+ "\n",
+ "print \"the value of BLUE points respectively : %.4f, %.4f, %.4f & %.4f\"%(B1, B2, B3, B4)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa10.8 Page 202"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of T from 1st element to last is\n",
+ "157.831321254\n",
+ "192.469876146\n",
+ "280.72288988\n",
+ "184.939753978\n",
+ "231.325296989\n",
+ "330.421684639\n",
+ "175.903610664\n",
+ "217.469876356\n",
+ "309.638552636\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "tnew=[0];told=[0];e=[0];\n",
+ "for i in range(1,10):\n",
+ " tnew.append(101)\n",
+ " told.append(0)\n",
+ " e.append(1) #assumed values\n",
+ "\n",
+ "t=1e-6\n",
+ "while e[(1)]>t and e[(2)]>t and e[(3)]>t and e[(4)]>t and e[(5)]>t and e[(6)]>t and e[(7)]>t and e[(8)]>t and e[(9)]>t:\n",
+ " for i in range(1,10):\n",
+ " told[i]=tnew[(i)]\n",
+ " #using eqn 10.10 for the interior nodes and convective boundary conditions for corner nodes\n",
+ " tnew[(1)]=(told[(2)]+50+.5*told[(4)]+100/3)*3/7\n",
+ " tnew[(2)]=(tnew[(1)]+told[(3)]+told[(5)]+100)/4\n",
+ " tnew[(3)]=(tnew[(2)]+told[(6)]+600)/4\n",
+ " tnew[(4)]=(told[(5)]+.5*tnew[(1)]+.5*told[(7)]+100/3)*3/7\n",
+ " tnew[(5)]=(tnew[(2)]+told[(8)]+told[(6)]+tnew[(4)])/4\n",
+ " tnew[(6)]=(tnew[(3)]+tnew[(5)]+told[(9)]+500)/4\n",
+ " tnew[(7)]=(.5*tnew[(4)]+.5*told[(8)]+100/3)*3/4\n",
+ " tnew[(8)]=(tnew[(5)]+.5*tnew[(7)]+.5*told[(9)]+100/3)*3/7\n",
+ " tnew[(9)]=(tnew[(6)]+100/3+.5*tnew[(8)]+250)*3/7\n",
+ " for i in range(1,10):\n",
+ " e[i]=abs(tnew[i]-told[i])\n",
+ " \n",
+ "\n",
+ "print \"the values of T from 1st element to last is\"\n",
+ "for i in range(1,10):\n",
+ " print tnew[i]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa10.9 Page 211"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of T from 1st element to last is\n",
+ "83.6250164077\n",
+ "83.3426002934\n",
+ "81.8505046198\n",
+ "86.8385228347\n",
+ "86.864496399\n",
+ "86.0434332286\n",
+ "86.7854379748\n",
+ "87.2768602399\n",
+ "88.5496879219\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "tnew=[0];told=[0];e=[0];\n",
+ "for i in range(1,10):\n",
+ " tnew.append(101)\n",
+ " told.append(0)\n",
+ " e.append(1) #assumed values\n",
+ "\n",
+ "t=1e-6\n",
+ "while e[(1)]>t and e[(2)]>t and e[(3)]>t and e[(4)]>t and e[(5)]>t and e[(6)]>t and e[(7)]>t and e[(8)]>t and e[(9)]>t:\n",
+ " for i in range(1,10):\n",
+ " told[(i)]=tnew[(i)]\n",
+ " #using the basic discretization eqn. for all the nodes since the boundary conditions vary for each point\n",
+ " tnew[(1)]=(told[(2)]+1.25+told[(4)])/2.05\n",
+ " tnew[(2)]=(.5*tnew[(1)]+.5*told[(3)]+told[(5)]+1.25)/2.05\n",
+ " tnew[(3)]=(.5*tnew[(2)]+.5*told[(6)]+1.25)/1.05\n",
+ " tnew[(4)]=(told[(5)]+.5*tnew[(1)]+45)/2\n",
+ " tnew[(5)]=(tnew[(2)]+told[(8)]+90+tnew[(4)])/4\n",
+ " tnew[(6)]=(.5*tnew[(3)]+tnew[(5)]+.5*told[(7)]+91.25)/3.05\n",
+ " tnew[(7)]=(.5*tnew[(6)]+.5*told[(8)]+91.25)/2.05\n",
+ " tnew[(8)]=(91.25+.5*tnew[(7)]+.5*told[(9)])/2.05\n",
+ " tnew[(9)]=(47.125+.5*tnew[(8)])/1.025\n",
+ " for i in range(1,10):\n",
+ " e[i]=abs(tnew[i]-told[i])\n",
+ " \n",
+ "\n",
+ "print \"the values of T from 1st element to last is\"\n",
+ "for i in range(1,10):\n",
+ " print told[i]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa10.10 Page 213"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the soln of eg 10.10-->Alternating Direction Implicit Method\n",
+ "the soln by ADI method is\n",
+ "20.0 20.0 20.0\n",
+ "--------------\n",
+ "20.0 20.0 20.0\n",
+ "--------------\n",
+ "48.1904761905 43.6666666667 105.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "print \"the soln of eg 10.10-->Alternating Direction Implicit Method\"\n",
+ "nmax=25\n",
+ "a=[0,1,1] #defining variables\n",
+ "b=[-4,-4,-4]\n",
+ "c=[1,1]\n",
+ "t=zeros([6,6])\n",
+ "tstar=zeros([6,6])\n",
+ "t[1,2]=20 ; t[1,3]=20 ; t[1,4]=20; t[2,1]=20; t[3,1]=20 ; t[4,1]=20 ; t[5,2]=20 ; t[5,3]=20 ; t[5,4]=20 ; t[2,5]=400; t[3,5]=400; t[4,5]=400\n",
+ "tstar[1,2]=20 ; tstar[1,3]=20; tstar[1,4]=20 ; tstar[2,1]=20 ; tstar[3,1]=20 ; tstar[4,1]=20 ; tstar[5,2]=20 ; tstar[5,3]=20 ; tstar[5,4]=20 ; tstar[2,5]=400 ; tstar[3,5]=400 ; tstar[4,5]=400\n",
+ "for i in range(2,5):\n",
+ " for j in range(2,5):\n",
+ " t[i,j]=20\n",
+ " \n",
+ "\n",
+ "#solving by TDMA Method\n",
+ "d=zeros(4)\n",
+ "for nn in range(1,nmax+1):\n",
+ " for jj in range(2,5):\n",
+ " d[(1)]=-t[1,jj]-t[2,jj+1]-tstar[2,jj-1]\n",
+ " d[(2)]=-t[3,jj+1]-tstar[3,jj-1]\n",
+ " d[(3)]=-t[5,jj]-t[4,jj+1]-tstar[4,jj-1]\n",
+ " i=1 ; n=3\n",
+ " Beta=[0,b[i]]\n",
+ " Gamma=[0,d[i]/Beta[i]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[(j-1)]-a[(j-1)]*c[(j-2)]/Beta[(j-1)])\n",
+ " Gamma.append((d[(j)]-a[(j-1)]*Gamma[(j-1)])/Beta[(j)])\n",
+ " #end \n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[(j)]-c[(j-1)]*x[j-1]/Beta[j]\n",
+ " #end\n",
+ " tstar[2,jj]=x[0]\n",
+ " tstar[3,jj]=x[1]\n",
+ " tstar[4,jj]=x[2]\n",
+ "#end\n",
+ " for ii in range(2,5):\n",
+ " d[(1)]=-t[ii,1]-tstar[ii+1,2]-tstar[ii-1,2]\n",
+ " d[(2)]=-tstar[ii+1,3]-tstar[ii-1,3]\n",
+ " d[(3)]=-t[ii,5]-tstar[ii+1,4]-tstar[ii-1,4]\n",
+ " i=1 ; n=3\n",
+ " Beta[(i)]=b[i]\n",
+ " Gamma[i]=d[(i)]/Beta[(i)]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta[(j)]=b[(j-1)]-a[(j-1)]*c[j-2]/Beta[(j-1)]\n",
+ " Gamma[(j)]=(d[(j)]-a[(j-1)]*Gamma[(j-1)])/Beta[(j)]\n",
+ " #end \n",
+ " \n",
+ " x[-1]=Gamma[(n)]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j]=Gamma[(j)]-c[(j-1)]*x[(j)]/Beta[(j)]\n",
+ " #end\n",
+ " t[ii,2]=x[0]\n",
+ " t[ii,3]=x[1]\n",
+ " t[ii,4]=x[2]\n",
+ "\n",
+ "\n",
+ "print \"the soln by ADI method is\"\n",
+ "print t[2,4],t[2,3],t[2,2]\n",
+ "print \"--------------\"\n",
+ "print t[3,4],t[3,3],t[3,2]\n",
+ "print \"--------------\"\n",
+ "print t[4,4],t[4,3],t[4,2]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 10.11 Page 215"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the soln by ADI is\n",
+ "1.58563151796\n",
+ "1.90275782155\n",
+ "2.98098725376\n",
+ "5.25161158747\n",
+ "9.62288055617\n",
+ "17.8433017473\n",
+ "33.2010436374\n",
+ "61.8392029825\n",
+ "945.175268307\n",
+ "-467.149084346\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,zeros\n",
+ "a=[0,0];b=[0,0];c=[0,0]\n",
+ "for k in range(2,11):\n",
+ " a.append(-1)\n",
+ " b.append(2.4)\n",
+ " c.append(-1)\n",
+ "\n",
+ "alpha=1 ; delta_t=.05 ; delta_x=.1\n",
+ "m=alpha*delta_t/delta_x**2\n",
+ "b[1]=2.4\n",
+ "c[1]=-2\n",
+ "t=zeros([12,12])\n",
+ "tstar=zeros([12,12])\n",
+ "\n",
+ "for k in range(1,12):\n",
+ " t[11,k]=400 ; tstar[11,k]=400 ; t[k,11]=400 ; tstar[k,11]=400\n",
+ "\n",
+ "\n",
+ "for i in range(1,11):\n",
+ " for j in range(1,11):\n",
+ " t[i,j]=0\n",
+ " tstar[i,j]=0\n",
+ " \n",
+ "d=zeros(11)\n",
+ "for tm in arange(.05,5+.05,.05):\n",
+ " for jj in range(1,11):\n",
+ " if jj==1:\n",
+ " for ii in range(1,11):\n",
+ " d[(ii)]=2*t[ii,2]-1.6*t[ii,1]\n",
+ " d[(10)]=d[(10)]+400\n",
+ " else:\n",
+ " for ii in range(1,11):\n",
+ " d[(ii)]=t[ii,jj+1]+t[ii,jj-1]-1.6*t[ii,jj]\n",
+ " d[(10)]=d[(10)]+400\n",
+ " i=1 ; n=10\n",
+ " Beta=[0,b[i]]\n",
+ " Gamma=[0,d[i]/Beta[i]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[(j)]-a[(j)]*c[(j-1)]/Beta[(j-1)])\n",
+ " Gamma.append((d[(j)]-a[(j)]*Gamma[(j-1)])/Beta[(j)])\n",
+ " \n",
+ " x=zeros(n+1)\n",
+ " x[(n)]=Gamma[(n)] \n",
+ " x[(j)]=Gamma[(j)]-c[(j)]*x[(j)]/Beta[(j)]\n",
+ " for count in range(1,11):\n",
+ " tstar[count,jj]=x[(count)]\n",
+ " \n",
+ " for ii in range(1,11):\n",
+ " if ii==1:\n",
+ " for jj in range(1,11):\n",
+ " d[(jj)]=2*tstar[ii+1,1]-1.6*tstar[ii,1]\n",
+ " d[(10)]=d[(10)]+400\n",
+ " else:\n",
+ " for jj in range(1,11):\n",
+ " d[(jj)]=tstar[ii-1,jj]+tstar[ii+1,jj]-1.6*tstar[ii,jj]\n",
+ " d[(10)]=d[(10)]+400\n",
+ " \n",
+ " i=1 ; n=10\n",
+ " Beta[(i)]=b[i]\n",
+ " Gamma[(i)]=d[(i)]/Beta[(i)]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta[(j)]=b[(j)]-a[(j)]*c[(j-1)]/Beta[(j-1)]\n",
+ " Gamma[(j)]=(d[(j)]-a[(j)]*Gamma[(j-1)])/Beta[(j)]\n",
+ " \n",
+ " x[(n)]=Gamma[(n)]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j =n-k\n",
+ " x[(j)]=Gamma[(j)]-c[(j)]*x[(j+1)]/Beta[(j)]\n",
+ " \n",
+ " for count in range(1,11):\n",
+ " t[ii,count]=x[count]\n",
+ " \n",
+ "\n",
+ "print \"the soln by ADI is\"\n",
+ "for i in range(1,11):\n",
+ " print t[i,i]\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter2.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter2.ipynb
new file mode 100644
index 00000000..5c7b4ceb
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter2.ipynb
@@ -0,0 +1,343 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 2 - Nonlinear Algebraic Equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 2.1 Page 20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the root of the eqn is 0.20165449273\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy.misc import derivative\n",
+ "\n",
+ "x=.5 #initial value\n",
+ "xnew=0\n",
+ "e=1\n",
+ "while e>10**-4:\n",
+ " x=xnew\n",
+ " def Fa(x):\n",
+ " y=x**3-5*x+1# #defining fn \n",
+ " return y\n",
+ "\n",
+ " der=derivative(Fa,x) #differentiating the fn\n",
+ " xnew=x-Fa(x)/der\n",
+ " e=abs(xnew-x)\n",
+ " \n",
+ "print \"the root of the eqn is\",xnew"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 2.2 Page 20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the Reynolds no. is 13743.0167598\n",
+ "the fanning friction factor is 0.0290420879897407\n",
+ "the pressure drop in pascals is 11163.0525710566\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy.misc import derivative\n",
+ "from sympy import symbols, sqrt,log\n",
+ "ff=symbols('ff')\n",
+ "meu=1.79*10**-5\n",
+ "rough=.0000015 #roughness\n",
+ "dia=.004\n",
+ "e_by_D=rough/dia\n",
+ "rho=1.23\n",
+ "v=50 #velocity of air\n",
+ "l=1\n",
+ "Re=(rho*v*dia)/meu #Reynold's number\n",
+ "ffnew=0.01\n",
+ "e=1\n",
+ "t1=e_by_D/3.7 #term 1 of eqn.\n",
+ "t2=2.51/Re #term 2 of eqn.\n",
+ "print \"the Reynolds no. is\",Re\n",
+ "\n",
+ "\n",
+ "while e>1e-6:\n",
+ " fff=ffnew\n",
+ " ff=symbols('ff')\n",
+ " t3=sqrt(ff)\n",
+ " y=1/t3+2*log(t1+t2/t3)/2.3\n",
+ "\n",
+ " fdash=y.diff().subs(ff,fff)# #f'(ff)\n",
+ " ffnew=fff-y.subs(ff,fff)/fdash#\n",
+ " e=abs(fff-ffnew)\n",
+ "\n",
+ "print \"the fanning friction factor is\",fff\n",
+ "delta_p=(fff*l*v**2*rho)/(2*dia) #pressure drop\n",
+ "print \"the pressure drop in pascals is\",delta_p"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 2.3 Page 23"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the minimum fluidisation velocity in m/s is 0.00502529644298\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy.misc import derivative\n",
+ "from math import log,sqrt\n",
+ "\n",
+ "P=2*101325 #given data\n",
+ "T=298.15\n",
+ "M=28.97*10**-3\n",
+ "R=8.314\n",
+ "rho=(P*M)/(R*T)\n",
+ "rho_p=1000\n",
+ "dia=1.2*10**-4\n",
+ "ep=.42 #void fraction\n",
+ "sph=.88\n",
+ "meu=1.845*10**-5\n",
+ "t1=1.75*rho*(1-ep)/(sph*dia*ep**3) #these are the terms of the function.\n",
+ "t2=150*meu*(1-ep)**2/(sph**2*dia**2*ep**3)\n",
+ "t3=(1-ep)*(rho_p-rho)*9.8\n",
+ "vnew=0.1\n",
+ "e1=1\n",
+ "while e1>1e-6:\n",
+ " v=vnew\n",
+ " def Fb(v):\n",
+ " y=t1*v**2+t2*v-t3 #defining fn \n",
+ " return y\n",
+ " vdash=derivative(Fb,v) #differentiating the fn\n",
+ " vnew=v-Fb(v)/vdash\n",
+ " e1=abs(vnew-v)\n",
+ "\n",
+ "print \"the minimum fluidisation velocity in m/s is\",v"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 2.4 Page 25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the terminal velocity in m/s is 6.52652883498\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy.misc import derivative\n",
+ "from math import log,sqrt\n",
+ "\n",
+ "dia=2*10**-3\n",
+ "P=101325 #given data\n",
+ "T=298.15\n",
+ "M=28.89*10**-3\n",
+ "R=8.314\n",
+ "rho=(P*M)/(R*T)\n",
+ "rho_oil=900\n",
+ "meu=1.85*10**-5\n",
+ "Re_oil_by_v=rho*dia/meu\n",
+ "vnew=0.1\n",
+ "e=1\n",
+ "while e>1e-6:\n",
+ " v=vnew\n",
+ " Re_oil=Re_oil_by_v*v \n",
+ " Cd=24*(1+.15*Re_oil**.687)/Re_oil\n",
+ " vnew=sqrt(4*(rho_oil-rho)*9.81*dia/(3*Cd*rho))\n",
+ " e=abs(vnew-v)\n",
+ "\n",
+ "print \"the terminal velocity in m/s is\",v"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 2.5 Page 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of x and y respectively are -3.2443635355e-08 0.999999956342\n",
+ "such small value of x can be considered as zero.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy.misc import derivative\n",
+ "from math import log,sqrt,exp,sin,cos\n",
+ "\n",
+ "xnew=0.1\n",
+ "ynew=0.5\n",
+ "e1=1\n",
+ "e2=1\n",
+ "while e1>1e-6 and e2>1e-6:\n",
+ " x=xnew\n",
+ " y=ynew\n",
+ " y1=exp(x)+x*y-1\n",
+ " d_fx=exp(x)+y\n",
+ " d_fy=x\n",
+ " y2=sin(x*y)+x+y-1\n",
+ " d_gx=y*cos(x*y)+1\n",
+ " d_gy=x*cos(x*y)+1\n",
+ " t1=(y2*d_fy)\n",
+ " t2=(y1*d_gy)\n",
+ " D1=d_fx*d_gy-d_fy*d_gx\n",
+ " delta_x=(t1-t2)/D1\n",
+ " t3=(y1*d_gx)\n",
+ " t4=(y2*d_fx)\n",
+ " delta_y=(t3-t4)/D1\n",
+ " xnew=x+delta_x\n",
+ " ynew=y+delta_y\n",
+ " e1=abs(x-xnew)\n",
+ " e2=abs(y-ynew)\n",
+ "\n",
+ "print \"the values of x and y respectively are\",x,y\n",
+ "print \"such small value of x can be considered as zero.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 2.6 Page 28"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of x and y are respectively 3.0 4.00000000002\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy.misc import derivative\n",
+ "from math import log,sqrt\n",
+ "\n",
+ "xnew=0.1\n",
+ "ynew=0.5\n",
+ "e1=1\n",
+ "e2=1\n",
+ "while e1>10**-6 and e2>10**-6:\n",
+ " x=xnew\n",
+ " y=ynew\n",
+ " y1=3*x**3+4*y**2-145\n",
+ " d_fx=9*x**2\n",
+ " d_fy=8*y\n",
+ " y2=4*x**2-y**3+28\n",
+ " d_gx=8*x\n",
+ " d_gy=-3*y**2\n",
+ " D2=d_fx*d_gy-d_gx*d_fy\n",
+ " delta_x=(y2*d_fy-y1*d_gy)/D2\n",
+ " delta_y=(y1*d_gx-y2*d_fx)/D2\n",
+ " xnew=x+delta_x\n",
+ " ynew=y+delta_y\n",
+ " e1=abs(xnew-x)\n",
+ " e2=abs(ynew-y)\n",
+ "\n",
+ "print \"the values of x and y are respectively\",x,y"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter3.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter3.ipynb
new file mode 100644
index 00000000..ab7a3ef0
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter3.ipynb
@@ -0,0 +1,810 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 3 - Chemical Engineering Thermodynamics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.1 Page 32"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "all values in m3/mol\n",
+ "the soln by virial gas eqn. of volume in m3/mol by Z(T,P) is vold\n",
+ "the soln by virial gas eqn. of volume in m3/mol by Z(T,V) is 0.0302510618121734\n",
+ "the volume of saturated liq. and saturated vapour by peng-robinson method respectively is\n",
+ "0.0306180024673 2.2509412835e-05\n",
+ "the vol of saturated liq. and vapour by redlich kwong method respectively are\n",
+ "2.62463386857767e-5 2.64047733063277e-5\n",
+ "the vol of saturated liq. and vapour by vander waal method respectively are\n",
+ "0.0304707748423797 3.90181676996140e-5\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from sympy import symbols\n",
+ "vold=symbols('vold')\n",
+ "#from scipy.misc import derivative\n",
+ "print \"all values in m3/mol\"\n",
+ "T=373.15\n",
+ "P=101325\n",
+ "Tc=647.1\n",
+ "Pc=220.55*10**5\n",
+ "w=.345\n",
+ "R=8.314\n",
+ "Tr=T/Tc # reduced temperature\n",
+ "Pr=P/Pc #reduced pressure \n",
+ "b0=.083-.422*Tr**-1.6\n",
+ "b1=.139-.172*Tr**-4.2\n",
+ "B=(b0+w*b1)*R*Tc/Pc\n",
+ "vnew=1\n",
+ "e1=1\n",
+ "vold_=R*T/P+B\n",
+ "print \"the soln by virial gas eqn. of volume in m3/mol by Z(T,P) is\",vold\n",
+ "while e1>1e-6:\n",
+ " vold_=vnew\n",
+ " #def Fh(vold):\n",
+ " y=P*vold/(R*T)-1-B/vold\n",
+ " # return y\n",
+ " #ydash=derivative(Fh,vold)#\n",
+ " ydash=y.diff().subs(vold,vold_)\n",
+ " #vnew=vold-Fh(vold)/ydash#\n",
+ " vnew=vold_-y.subs(vold,vold_)/ydash\n",
+ " e1=abs(vold_-vnew)\n",
+ "\n",
+ "print \"the soln by virial gas eqn. of volume in m3/mol by Z(T,V) is\",vold_\n",
+ "#by peng robinson method\n",
+ "k=.37464+1.54226*w-.26992*w**2\n",
+ "s=1+k*(1-Tr**.5)\n",
+ "lpha=s**2\n",
+ "a=.45724*R**2*Tc**2*lpha/Pc\n",
+ "b=.0778*R*Tc/Pc\n",
+ "vnew=b\n",
+ "e2=1 \n",
+ "vol=b\n",
+ "fe=0\n",
+ "fd=0\n",
+ "print \"the volume of saturated liq. and saturated vapour by peng-robinson method respectively is\"\n",
+ "for i in range(0,3):\n",
+ " vol=vnew\n",
+ " y2=vol**3*P+vol**2*(P*b-R*T)-vol*(3*P*b**2+2*b*R*T-a)+P*b**3+b**2*R*T-a*b\n",
+ " ydash2=3*P*vol**2+(P*b-R*T)*2*vol-(3*P*b**2+2*b*R*T-a)\n",
+ " vnew=vol-y2/ydash2\n",
+ " e2=abs(vol-vnew)\n",
+ " if i==1 and e2<1e-6:\n",
+ " fd=vnew\n",
+ " vnew=R*T/P\n",
+ "\n",
+ "\n",
+ "print vol,fd\n",
+ "\n",
+ "#by redlich-kwong method\n",
+ "i=0\n",
+ "a=.42748*R**2*Tc**2.5/Pc\n",
+ "b=.08664*R*Tc/Pc\n",
+ "Vnew=b ; e3=1\n",
+ "print \"the vol of saturated liq. and vapour by redlich kwong method respectively are\"\n",
+ "\n",
+ "from math import sqrt\n",
+ "VV=symbols('VV')\n",
+ "for i in range(0,3):\n",
+ " V=Vnew\n",
+ " y3=VV**3*P-R*T*VV**2-VV*(P*b**2+b*R*T-a/sqrt(T))-a*b/sqrt(T)\n",
+ " deriv=y3.diff().subs(VV,V)\n",
+ " Vnew=V-y3.subs(VV,V)/deriv\n",
+ " e3=abs(Vnew-V)\n",
+ " if i==1 and e3<1e-6:\n",
+ " de=Vnew\n",
+ " Vnew=R*T/P #for saturated liq.\n",
+ " \n",
+ " print V,de\n",
+ "#vander waals method\n",
+ "i=0\n",
+ "a=27*R**2*Tc**2/(64*Pc)\n",
+ "b=R*Tc/(8*Pc)\n",
+ "vnew=b; v=b ; e=1\n",
+ "vv=symbols('vv')\n",
+ "for i in range(0,3):\n",
+ " v=vnew\n",
+ " v3=vv**3*P-vv**2*(P*b+R*T)+a*vv-a*b\n",
+ " deriva=v3.diff().subs(vv,v)\n",
+ " vnew=v-v3.subs(vv,v)/deriva\n",
+ " e4=abs(v-vnew)\n",
+ " if i==1 and e4<10**-6:\n",
+ " sol=vnew\n",
+ " vnew=R*T/P\n",
+ " \n",
+ "\n",
+ "print \"the vol of saturated liq. and vapour by vander waal method respectively are\"\n",
+ "print vnew,sol"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.2 Page 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the bubble point temp. in Celsius is 71.8054048538555\n",
+ "the dew point temp. in Celsius is 87.0799975600241\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols,log,exp\n",
+ "z1=.5 ; P=101.325 #given data\n",
+ "a1=14.3916 ; b1=2795.32 ;c1=230.002\n",
+ "a2=16.262 ; b2=3799.887 ;c2=226.346\n",
+ "x1=z1 ; x2=1-z1\n",
+ "T1sat=b1/(a1-log(P))-c1\n",
+ "T2sat=b2/(a2-log(P))-c2\n",
+ "Told_=273 ; e=1\n",
+ "Tnew=x1*T1sat+x2*T2sat\n",
+ "Told = symbols('Told')\n",
+ "while e>1e-6:\n",
+ " Told_=Tnew\n",
+ " \n",
+ " P1sat=exp(a1-b1/(Told+c1))\n",
+ " P2sat=exp(a2-b2/(Told+c2))\n",
+ " y1=P-x1*P1sat-x2*P2sat\n",
+ " \n",
+ " ydashd=y1.diff().subs(Told,Told_)\n",
+ " Tnew=Told_-y1.subs(Told,Told_)/ydashd\n",
+ " e=abs(Told_-Tnew)\n",
+ " \n",
+ "print \"the bubble point temp. in Celsius is\",Tnew\n",
+ "\n",
+ " #calc of dew point\n",
+ "y1=z1 ; y2=1-z1 ; e=1\n",
+ "Tnew=y1*T1sat+y2*T2sat\n",
+ "Told = symbols('Told')\n",
+ "while e>1e-6:\n",
+ " Told_=Tnew\n",
+ " P1sat=exp(a1-b1/(Told+c1))\n",
+ " P2sat=exp(a2-b2/(Told+c2))\n",
+ " y11=1/P-y1/P1sat-y2/P2sat\n",
+ " \n",
+ " ydashd=y11.diff().subs(Told,Told_)\n",
+ " Tnew=Told_-y11.subs(Told,Told_)/ydashd\n",
+ " e=abs(Told_-Tnew)\n",
+ " \n",
+ "print \"the dew point temp. in Celsius is\",Tnew"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.3 Page 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the bubble point pressure and dew point pressure respectively are 108.205 79.6944627367\n",
+ "mol frctn of acetone in liq. phase is 0.226211512882\n",
+ "mol frctn of acetone in vapour phase is 0.442809036467\n",
+ "mol frctn of acetonitrile in liq. phase is 0.30222391249\n",
+ "mol frctn of acetonitrile in vapour. phase is 0.29569587598\n",
+ "mol frctn of nitromethane in liq. phase is 0.481489923277\n",
+ "mol frctn of nitromethane in vapour phase is 0.242285729393\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols,log,exp\n",
+ "from numpy import zeros\n",
+ "psat=[0,195.75,97.84,50.32] #given data\n",
+ "z=[0,.3,.3,.4]\n",
+ "bpp=z[(1)]*psat[(1)]+z[(2)]*psat[(2)]+z[(3)]*psat[(3)] #Bubble point pressure\n",
+ "dpp=1/(z[(1)]/psat[(1)]+z[(2)]/psat[(2)]+z[(3)]/psat[(3)]) #dew point pressure\n",
+ "print \"the bubble point pressure and dew point pressure respectively are\",bpp,dpp\n",
+ "P=100 ; v=1 ; vnew=1 ; e=1 ; y2=0 ; der=0 #given pressure is between BPP & DPP\n",
+ "k=zeros(5)\n",
+ "for i in range(1,4): \n",
+ " k[(i)]=psat[(i)]/P\n",
+ "\n",
+ "while e>1e-6:\n",
+ " v=vnew\n",
+ " for i in range(1,4):\n",
+ " t1=(1-v+v*k[(i)])\n",
+ " y2=y2+z[(i)]*(k[(i)]-1)/t1\n",
+ " der=der-z[(i)]*(k[(i)]-1)**2/t1**2\n",
+ " \n",
+ " vnew=v-y2/der\n",
+ " e=abs(vnew-v)\n",
+ "x=zeros(5)\n",
+ "y=zeros(5)\n",
+ "for i in range(1,4):\n",
+ " x[(i)]=z[(i)]/(1-v+v*k[(i)])\n",
+ " y[i]=x[i]*k[i] \n",
+ " \n",
+ "print \"mol frctn of acetone in liq. phase is\",x[(1)]\n",
+ "print \"mol frctn of acetone in vapour phase is\",y[(1)]\n",
+ "print \"mol frctn of acetonitrile in liq. phase is\",x[(2)]\n",
+ "print \"mol frctn of acetonitrile in vapour. phase is\",y[(2)]\n",
+ "print \"mol frctn of nitromethane in liq. phase is\",x[(3)]\n",
+ "print \"mol frctn of nitromethane in vapour phase is\",y[(3)]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.4 Page 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "boiling point pressure in kPa is 204.264012744\n",
+ "boiling point temperature in Celsius is 81.4675225814\n",
+ "dew point pressure in kPa is 184.104082046\n",
+ "dew point temperature in Celsius is 84.0803584712\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import exp,log\n",
+ "a12=437.98*4.186\n",
+ "a21=1238*4.186\n",
+ "v1=76.92\n",
+ "v2=18.07 #calc of BPP\n",
+ "t=100\n",
+ "x1=.5 ; R=8.314\n",
+ "a1=16.678 ; b1=3640.2 ; c1=219.61\n",
+ "a2=16.2887 ; b2=3816.44 ; c2=227.02\n",
+ "x2=1-x1\n",
+ "p1sat=exp(a1-b1/(c1+t))\n",
+ "p2sat=exp(a2-b2/(c2+t))\n",
+ "h12=v2*exp(-a12/(R*(t+273.15)))/v1\n",
+ "h21=v1*exp(-a21/(R*(t+273.15)))/v2\n",
+ "m=h12/(x1+x2*h12)-h21/(x2+x1*h21)\n",
+ "g1=exp(-log(x1+x2*h12)+x2*m)\n",
+ "g2=exp(-log(x2+x1*h21)-x1*m)\n",
+ "p=x1*g1*p1sat+x2*g2*p2sat\n",
+ "print \"boiling point pressure in kPa is\",p\n",
+ " #calc of BPT\n",
+ "p=101.325 ; x1=.5 ; e=1\n",
+ "x2=1-x1\n",
+ "t1sat=b1/(a1-log(p))-c1\n",
+ "t2sat=b2/(a2-log(p))-c2\n",
+ "tnew=x1*t1sat+x2*t2sat\n",
+ "while e>10**-4:\n",
+ " told=tnew\n",
+ " p1sat=exp(a1-b1/(c1+told))\n",
+ " p2sat=exp(a2-b2/(c2+told))\n",
+ " p1sat=p/(g1*x1+g2*x2*(p2sat/p1sat))\n",
+ " tnew=b1/(a1-log(p1sat))-c1\n",
+ " e=abs(tnew-told)\n",
+ "\n",
+ "print \"boiling point temperature in Celsius is\",tnew\n",
+ " #calc of dpp\n",
+ "e1=1 ; e2=1 ; e3=1 ; pold=1\n",
+ "t=100 ; y1=.5\n",
+ "y2=1-y1\n",
+ "p1sat=exp(a1-b1/(c1+t))\n",
+ "p2sat=exp(a2-b2/(c2+t))\n",
+ "g1=1 ; g2=1 ; g11=1 ; g22=1\n",
+ "pnew=1/(y1/(g1*p1sat)+y2/(g2*p2sat))\n",
+ "while e1>.0001:\n",
+ " pold=pnew\n",
+ " while e2>.0001 and e3>.0001:\n",
+ " g1=g11 ; g2=g22\n",
+ " x1=y1*pold/(g1*p1sat)\n",
+ " x2=y2*pold/(g2*p2sat)\n",
+ " x1=x1/(x1+x2)\n",
+ " x2=1-x1\n",
+ " h12=v2*exp(-a12/(R*(t+273.15)))/v1\n",
+ " h21=v1*exp(-a21/(R*(t+273.15)))/v2\n",
+ " m=h12/(x1+x2*h12)-h21/(x2+x1*h21)\n",
+ " g11=exp(-log(x1+x2*h12)+x2*m)\n",
+ " g22=exp(-log(x2+x1*h21)-x1*m)\n",
+ " e2=abs(g11-g1) ; e3=abs(g22-g2)\n",
+ " \n",
+ " pnew=1/(y1/(g1*p1sat)+y2/(g2*p2sat))\n",
+ " e1=abs(pnew-pold)\n",
+ "\n",
+ "print \"dew point pressure in kPa is\",pnew\n",
+ " #calc dpt\n",
+ "p=101.325 ; y1=.5 ; e4=1 ; e5=1 ; e6=1\n",
+ "y2=1-y1\n",
+ "t1sat=b1/(a1-log(p))-c1\n",
+ "t2sat=b2/(a2-log(p))-c2\n",
+ "tnew=y1*t1sat+y2*t2sat\n",
+ "g11=1 ; g22=1\n",
+ "while e4>.0001:\n",
+ " told=tnew\n",
+ " p1sat=exp(a1-b1/(c1+told))\n",
+ " p2sat=exp(a2-b2/(c2+told))\n",
+ " while e5>.0001 and e6>.0001:\n",
+ " g1=g11\n",
+ " g2=g22\n",
+ " x1=y1*p/(g1*p1sat)\n",
+ " x2=y2*p/(g2*p2sat)\n",
+ " x1=x1/(x1+x2)\n",
+ " x2=1-x1\n",
+ " h12=v2*exp(-a12/(R*(t+273.15)))/v1\n",
+ " h21=v1*exp(-a21/(R*(t+273.15)))/v2\n",
+ " m=h12/(x1+x2*h12)-h21/(x2+x1*h21)\n",
+ " g11=exp(-log(x1+x2*h12)+x2*m)\n",
+ " g22=exp(-log(x2+x1*h21)-x1*m)\n",
+ " e5=abs(g11-g1)\n",
+ " e6=abs(g22-g2)\n",
+ " \n",
+ " p1sat=p*(y1/g1+y2*p1sat/(g2*p2sat))\n",
+ " tnew=b1/(a1-log(p1sat))-c1\n",
+ " e4=abs(tnew-told)\n",
+ "\n",
+ "print \"dew point temperature in Celsius is\",tnew"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.5 Page 36"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the bubble point pressure is 310.299302687235\n",
+ "the dew point pressure is 143.432965325576\n",
+ "the no. of moles in vapour phase is 0.540556419677788\n",
+ "x1 and y1 respectively are 0.0283277058050475 1.88246875380055\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols,log,exp\n",
+ "from numpy import zeros\n",
+ "a12=292.66*4.18\n",
+ "a21=1445.26*4.18\n",
+ "v1=74.05*10**-6\n",
+ "v2=18.07*10**-6\n",
+ "R=8.314\n",
+ "t=100\n",
+ "z1=.3\n",
+ "z2=1-z1\n",
+ "a1=14.39155 ; a2=16.262 ; b1=2795.82 ; b2=3799.89 ; c1=230.002 ; c2=226.35\n",
+ "e1=1 ;e2=1 ;e3=1 ;e4=1 ;e5=1 ;e6=1 ;vnew=0\n",
+ " #calc of BPP\n",
+ "x1=z1; x2=z2\n",
+ "p1sat=exp(a1-(b1/(t+c1)))\n",
+ "p2sat=exp(a2-(b2/(t+c2)))\n",
+ "h12=v2*exp(-a12/(R*(t+273.15)))/v1\n",
+ "h21=v1*exp(-a21/(R*(t+273.15)))/v2\n",
+ "m=(h12/(x1+x2*h12))-(h21/(x2+x1*h21))\n",
+ "g1=exp(-log(x1+x2*h12)+x2*m)\n",
+ "g2=exp(-log(x2+x1*h21)-x1*m)\n",
+ "p=x1*g1*p1sat+x2*g2*p2sat\n",
+ "print\"the bubble point pressure is\",p\n",
+ "bpp=p ; gb1=g1 ; gb2=g2 #g1 & g2 are activity co-efficients\n",
+ " #calc of DPP\n",
+ "y1=z1 ; y2=z2\n",
+ "g1=1 ; g2=1\n",
+ "pnew=1/(y1/(g1*p1sat)+y2/(g2*p2sat))\n",
+ "g1n=g1 ; g2n=g2\n",
+ "while e1>.0001:\n",
+ " pold=pnew\n",
+ " while e2>.0001 and e3>.0001:\n",
+ " g1=g1n ; g2=g2n\n",
+ " x1=y1*pold/(g1*p1sat)\n",
+ " x2=y2*pold/(g2*p2sat)\n",
+ " x1=x1/(x1+x2)\n",
+ " x2=1-x1\n",
+ " g1n=exp(-log(x1+x2*h12)+x2*m)\n",
+ " g2n=exp(-log(x2+x1*h21)-x1*m)\n",
+ " e2=abs(g1n-g1) ; e3=abs(g2n-g2)\n",
+ "\n",
+ " pnew=1/(y1/(g1n*p1sat)+y2/(g2n*p2sat))\n",
+ " e1=abs(pnew-pold)\n",
+ "\n",
+ "print \"the dew point pressure is\",pnew\n",
+ "dpp=pnew ; gd1=g1n ; gd2=g2n\n",
+ "p=200\n",
+ "v=(bpp-p)/(bpp-dpp)\n",
+ "g1=((p-dpp)*(gb1-gd1))/(bpp-dpp)+gd1\n",
+ "g2=((p-dpp)*(gb2-gd2))/(bpp-dpp)+gd2\n",
+ "\n",
+ "#calc of distribution co-efficients\n",
+ "from sympy import symbols, exp as exp_, log as log_\n",
+ "\n",
+ "v=symbols('v')\n",
+ "while e4>.0001 and e5>.0001:\n",
+ " g1n=g1 ; g2n=g2\n",
+ " k1=g1n*p1sat/p\n",
+ " k2=g2n*p2sat/p\n",
+ " while e6>.00001:\n",
+ " vv=vnew\n",
+ " y1=(k1*z1)/(1-v+v*k1)\n",
+ " y2=(k2*z2)/(1-v+v*k2)\n",
+ " x1_=y1/k1\n",
+ " x2_=y2/k2 \n",
+ " f=y1-x1_+y2-x2_\n",
+ " derv=f.diff().subs(v,vv)\n",
+ " vnew=vv-f.subs(v,vv)/derv\n",
+ " e6=abs(vnew-vv)\n",
+ " \n",
+ " h12=v2*exp(-a12/(R*(t+273.15)))/v1\n",
+ " h21=v1*exp(-a21/(R*(t+273.15)))/v2\n",
+ " m=(h12/(x1+x2*h12))-(h21/(x2+x1*h21))\n",
+ " g1=exp_(-log_(x1+x2*h12)+x2*m)\n",
+ " g2=exp_(-log_(x2+x1*h21)-x1*m)\n",
+ " e4=abs(g1-g1n)\n",
+ " e5=abs(g2-g2n)\n",
+ "\n",
+ "print \"the no. of moles in vapour phase is\",vv\n",
+ "print \"x1 and y1 respectively are\",x1.subs(v,v1),y1.subs(v,v1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.6 Page 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the vapour pressure of water in Pa is 154846.968055\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/asif/.local/lib/python2.7/site-packages/ipykernel/__main__.py:42: RuntimeWarning: overflow encountered in exp\n",
+ "/home/asif/.local/lib/python2.7/site-packages/ipykernel/__main__.py:44: RuntimeWarning: invalid value encountered in double_scalars\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy import sqrt,log,exp\n",
+ "t=373.15 ; tc=647.1 ; pc=220.55*10**5 ; w=.345 ; R=8.314 #given\n",
+ "f1=1 ; e1=1 ; e2=1 ; vnew=1 ; pnew=1 #assumed values\n",
+ "k=.37464+1.54226*w-.26992*w*2\n",
+ "s=(1+k*(1-(t/tc)**.5))**2\n",
+ "a=.45724*R*R*tc*tc*s/pc\n",
+ "b=.0778*R*tc/pc\n",
+ "#calc of vol. of liq.\n",
+ "while f1>10**-4:\n",
+ " p=pnew ; vnew=b ; \n",
+ " t1=(p*b-R*t) #co-efficients of vol. in the eqn.\n",
+ " t2=3*p*b**2+2*b*R*t-a\n",
+ " t3=p*b**3+b**2*R*t-a*b\n",
+ " while e1>1e-6 and vnew>0:\n",
+ " vold=vnew\n",
+ " y1=vold**3*p+vold**2*t1-vold*t2+t3\n",
+ " der=3*vold**2*p+2*vold*t1-t2\n",
+ " vnew=vold-y1/der\n",
+ " e1=abs(vnew-vold)\n",
+ " \n",
+ " vliq=vold\n",
+ " #fugacity of liq.\n",
+ " zliq=p*vliq/(R*t)\n",
+ " c=(a/(2*1.414*b*R*t))*(log((vliq+(1+sqrt(2))*b)/(vliq+(1-sqrt(2))*b)))\n",
+ " t5=zliq-p*b/(R*t)\n",
+ " fl2=p*exp(zliq-1-log(t5)-c)\n",
+ " vvnew=R*t/p #assumed value close to the ideal value\n",
+ " #calc of vol. of vapour\n",
+ " while e2>1e-6:\n",
+ " vvold=vvnew\n",
+ " x2=vvold**3*p+vvold**2*t1-vvold*t2+t3\n",
+ " der1=3*vvold**2*p+2*vvold*t1-t2\n",
+ " vvnew=vvold-x2/der1\n",
+ " e2=abs(vvnew-vvold)\n",
+ " \n",
+ " #fugacity of vapour\n",
+ " vvap=vvold\n",
+ " zvap=p*vvap/(R*t)\n",
+ " d=(a/(2*sqrt(2)*b*R*t))*(log((zvap+(1+sqrt(2))*b*p/(R*t))/(zvap+(1-sqrt(2))*p*b/(R*t))))\n",
+ " t6=zvap-p*b/(R*t)\n",
+ " fv2=p*exp(zvap-1-log(t6)-d)\n",
+ " pnew=p*fl2/fv2 #updating the value of P\n",
+ " f1=abs((fl2-fv2)/fv2)\n",
+ "\n",
+ "print \"the vapour pressure of water in Pa is\",p\n",
+ "# Note value of fv2 is infinite & it is the reason for warning"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.7 Page 39"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the amt. of methanol in vapour phase and system pressure in Pa respectively are 0.981547559133 344637.196487\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy import sqrt,log,exp\n",
+ "et=1 ; er=1 ; sold=0 ; snew=0 #assumed values\n",
+ "R=8.314 ; t=100 ; x1=.958 ; a12=107.38*4.18 ; a21=469.55*4.18\n",
+ "tc1=512.6 ; tc2=647.1 ; pc1=80.97*10**5 ; pc2=220.55*10**5 ; w1=.564 ; w2=.345 ; zc1=.224 ; zc2=.229 ; v1=40.73*10**-6 ; v2=18.07*10**-6 #given data\n",
+ "x2=1-x1\n",
+ "a1=16.5938 ; a2=16.262 ; b1=3644.3 ; b2=3799.89 ; c1=239.76 ; c2=226.35\n",
+ "p1sat=exp(a1-b1/(c1+t))*1000 #Saturation Pressure\n",
+ "p2sat=exp(a2-b2/(c2+t))*1000\n",
+ "t=t+273.15 #Temp in Kelvin req.\n",
+ "h12=(v2/v1)*exp(-a12/(R*t))\n",
+ "h21=(v1/v2)*exp(-a21/(R*t))\n",
+ "z=h12/(x1+x2*h12)-h21/(x2+x1*h21)\n",
+ "g1=exp(-log(x1+x2*h12)+x2*z) #Activity Co-efficients\n",
+ "g2=exp(-log(x2+x1*h21)-x1*z)\n",
+ "tr1=t/tc1 #Reduced Temp.\n",
+ "b0=.083-.422*tr1**-1.6\n",
+ "b1=.139-.172*tr1**-4.2\n",
+ "b11=(R*tc1/pc1)*(b0+b1*w1)\n",
+ "tr2=t/tc2\n",
+ "b0=.083-.422*tr2**-1.6\n",
+ "b1=.139-.172*tr2**-4.2\n",
+ "b22=(R*tc2/pc2)*(b0+b1*w2)\n",
+ "w12=(w1+w2)**.5\n",
+ "tc12=(tc1*tc2)**.5\n",
+ "zc12=(zc1+zc2)**.5\n",
+ "vc1=zc1*R*tc1/pc1 ; vc2=zc2*R*tc2/pc2\n",
+ "vc12=((vc1**.33+vc2**.33)/2)**3\n",
+ "pc12=zc12*R*tc12/vc12\n",
+ "tr12=t/tc12\n",
+ "b0=.083-.422*tr12**-1.6\n",
+ "b1=.139-.172*tr12**-4.2\n",
+ "b12=(R*tc12/pc12)*(b0+b1*w12)\n",
+ "d12=2*b12-b11-b22\n",
+ "p=x1*g1*p1sat+x2*p2sat*g2\n",
+ "y1=x1*g1*p1sat/p ; y2=x2*g2*p2sat/p\n",
+ "pnew=p\n",
+ "#calc of Pressure\n",
+ "while et>1e-6:\n",
+ " p=pnew\n",
+ " f1=p1sat*(exp(b11*p1sat/(R*t)))*(exp((v1*(p-p1sat)/(R*t))))\n",
+ " f2=p2sat*(exp(b22*p2sat/(R*t)))*(exp((v2*(p-p2sat)/(R*t))))\n",
+ " while er>1e-6:\n",
+ " sold=snew\n",
+ " fc1=exp((p/(R*t))*(b11+y2**2*d12))\n",
+ " fc2=exp((p/(R*t))*(b22+y1**2*d12))\n",
+ " k1=g1*f1/(fc1*p)\n",
+ " k2=g2*f2/(fc2*p)\n",
+ " snew=x1*k1+x2*k2\n",
+ " y1=x1*k1/snew\n",
+ " y2=x2*k2/snew\n",
+ " er=abs(snew-sold)\n",
+ "\n",
+ " pnew=(x1*g1*f1/fc1)+(x2*g2*f2/fc2)\n",
+ " y1=x1*g1*f1/(fc1*pnew)\n",
+ " y2=x2*g2*f2/(fc2*pnew)\n",
+ " et=abs(pnew-p)\n",
+ "\n",
+ "print \"the amt. of methanol in vapour phase and system pressure in Pa respectively are\",y1,p"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.9 Page 41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of X1 and X2 respectively is 0.912056278984 0.632839210308\n",
+ "the moles at eqm of CH4,H2O,CO,H2,CO2 are 0.0879437210164 3.45510451071 0.279217068676 3.36900804726 0.632839210308\n",
+ "total number of moles at eqm. is 7.82411255797\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy import sqrt,log,exp\n",
+ "#let x1 and x2 be the reaction co-ordinate for 1st and 2nd reactions\n",
+ "x1new=.9 ; x2new=.6 ; r1=1 ; r2=1 #assumed values\n",
+ "Kp=1 #since P=1 atm\n",
+ "K1=.574 ; K2=2.21 #given\n",
+ "Kye1=K1 ; Kye2=K2 #at eqm.\n",
+ "while r1>1e-6 and r2>1e-6:\n",
+ " x1=x1new ; x2=x2new\n",
+ " m_CH4=1-x1\n",
+ " m_H2O=5-x1-x2\n",
+ " m_CO=x1-x2\n",
+ " m_H2=3*x1+x2\n",
+ " m_CO2=x2 #moles of reactants and products at eqm.\n",
+ " total=m_CO2+m_H2+m_CO+m_H2O+m_CH4\n",
+ " Ky1=m_CO*m_H2**3/(m_CH4*m_H2O*total**2)\n",
+ " Ky2=m_CO2*m_H2/(m_CO*m_H2O)\n",
+ " f1=Ky1-.574 #1st function in x1 and x2\n",
+ " f2=Ky2-2.21 #2nd function in x1 and x2\n",
+ " d3=((3*x1+x2)**2*(12*x1-8*x2))/((1-x1)*(5-x1-x2)*(6+2*x1)**2)\n",
+ " d4=(3*x1+x2)**3*(x1-x2)*(8*x1**2+6*x1*x2-24*x1+2*x2-16)\n",
+ " d5=((1-x1)**2)*((5-x1-x2)**2)*((6+2*x1)**3)\n",
+ " df1_dx1=d3-(d4/d5) #df1/dx1- partial derivative of f1 wrt to x1\n",
+ " d6=3*(x1-x2)*((3*x1+x2)**2)-(3*x1+x2)**3\n",
+ " d7=(1-x1)*(5-x1-x2)*((6+x1*2)**2)\n",
+ " d8=((x1-x2)*(3*x1+x2)**3)/((1-x1)*((5-x1-x2)**2)*(6+2*x1)**2)\n",
+ " df1_dx2=(d6/d7)+d8 #df1/dx2- partial derivative of f1 wrt to x2 \n",
+ " d9=(x1-x2)*(5-x1-x2)\n",
+ " df2_dx1=3*x2/d9-(x2*(3*x1+x2)*(5-2*x1))/(d9**2) #df1/dx2- partial derivative of f1 wrt to x2\n",
+ " d10=(3*x1+2*x2)/d9\n",
+ " d11=x2*(3*x1+x2)*(2*x2-5)/(d9**2)\n",
+ " df2_dx2=d10-d11 #df1/dx2- partial derivative of f1 wrt to x2\n",
+ " dm=df1_dx1*df2_dx2-df1_dx2*df2_dx1\n",
+ " delta_x1=(f2*df1_dx2-f1*df2_dx2)/dm\n",
+ " delta_x2=(f1*df2_dx1-f2*df1_dx1)/dm\n",
+ " x1new=x1+delta_x1 #updating the values of x1 & x2\n",
+ " x2new=x2+delta_x2\n",
+ " r1=abs(x1-x1new)\n",
+ " r2=abs(x2new-x2)\n",
+ "\n",
+ "print \"the value of X1 and X2 respectively is\",x1,x2\n",
+ "m_CH4=1-x1 ; m_H2O=5-x1-x2 ; m_CO=x1-x2 ; m_H2=3*x1+x2 ; m_CO2=x2 #moles of reactants and products at eqm.\n",
+ "total=m_CO2+m_H2+m_CO+m_H2O+m_CH4\n",
+ "print \"the moles at eqm of CH4,H2O,CO,H2,CO2 are\",m_CH4,m_H2O,m_CO,m_H2,m_CO2\n",
+ "print \"total number of moles at eqm. is\",total"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 3.10 Page 45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the adiabatic flame temp in K is 2090.37132921579\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from scipy import sqrt,log,exp\n",
+ "from sympy.abc import t\n",
+ "\n",
+ "u1=1 ; u2=3.5 ; u3=2 ; u4=3 #moles given 1-C2H6, 2-O2, 3-CO2, 4-H2O\n",
+ "a1=1.648 ; a2=6.085 ; a3=5.316 ; a4=7.7\n",
+ "b1=4.124e-2 ; b2=.3631e-2 ; b3=1.4285e-2 ; b4=.04594e-2\n",
+ "c1=-1.53e-5 ; c2=-.1709e-5 ; c3=-.8362e-5 ; c4=.2521e-5\n",
+ "d1=1.74e-9 ; d2=.3133e-9 ; d3=1.784e-9 ; d4=-.8587e-9\n",
+ "n1=1 ; n2=4 ; n3=10 ; n4=0 ; t0=298.15 ; t1=25 ; e1=1\n",
+ "t1=t1+273.15\n",
+ "#calc. of sum of co-efficients of heat capacity of the rxn.\n",
+ "sa=n1*a1+n2*a2+n3*a3+n4*a4\n",
+ "sb=n1*b1+n2*b2+n3*b3+n4*b4\n",
+ "sc=n1*c1+n2*c2+n3*c3+n4*c4\n",
+ "sd=n1*d1+n2*d2+n3*d3+n4*d4\n",
+ "da=u4*a4+u3*a3-u2*a2-u1*a1\n",
+ "db=u4*b4+u3*b3-u2*b2-u1*b1\n",
+ "dc=u4*c4+u3*c3-u2*c2-u1*c1\n",
+ "dd=u4*d4+u3*d3-u2*d2-u1*d1\n",
+ "h0=(u4*(-57.798)+u3*(-94.05)-u2*0-u1*(-20.236))*1000 #enthalpy of the rxn.\n",
+ "tnew=1000\n",
+ "\n",
+ "while e1>1e-6:\n",
+ " tt=tnew\n",
+ " ft=sa*(t-t1)+(sb/2)*(t**2-t1**2)+(sc/3)*(t**3-t1**3)+(sd/4)*(t**4-t1**4)+h0+da*(t-t0)+(db/2)*(t**2-t0**2)+(dc/3)*(t**3-t0**3)+(dd/4)*(t**4-t0**4)\n",
+ " dr=ft.diff().subs(t,tt)\n",
+ " tnew=tt-ft.subs(t,tt)/dr\n",
+ " e1=abs((tnew-tt)/tnew)\n",
+ "\n",
+ "print \"the adiabatic flame temp in K is\",tnew"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter4.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter4.ipynb
new file mode 100644
index 00000000..b312c767
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter4.ipynb
@@ -0,0 +1,1473 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 4 - Initial Value Problems"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.1 Page 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of y at x=.2 using Runge Kutta method is 0.0214025708507\n",
+ "the value of y at x=0.2 from analytical eqn is 0.0214027581602\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange,exp\n",
+ "from __future__ import division\n",
+ "# in this problem dy/dx=x+y\n",
+ "x_0=0 ; y_0=0 #initial values given\n",
+ "\n",
+ "\n",
+ "def fs(x,y):\n",
+ " ydash=x+y\n",
+ " return ydash\n",
+ "\n",
+ "for x_0 in arange(0,0.3,0.1):\n",
+ " h=0.1 #step increment of 0.1\n",
+ " f_0=fs(x_0,y_0)\n",
+ " k1=h*f_0\n",
+ " k2=h*fs(x_0+h/2,y_0+k1/2)\n",
+ " k3=h*fs(x_0+h/2,y_0+k2/2)\n",
+ " k4=h*fs(x_0+h,y_0+k3)\n",
+ " y_0=y_0+(k1+2*k2+2*k3+k4)/6\n",
+ "\n",
+ "y_0=y_0-(k1+2*k2+2*k3+k4)/6 #to get value at x=0.2\n",
+ "print \"the value of y at x=.2 using Runge Kutta method is\",y_0\n",
+ "ae=exp(x_0)-x_0-1 #analytical eqn given\n",
+ "print \"the value of y at x=0.2 from analytical eqn is\",ae"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.2 Page 57"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of y at x=2.5 using Runge Kutta method is 0.571428571429\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange,exp\n",
+ "from __future__ import division\n",
+ "# in this problem dy/dx=-y/(1+x)\n",
+ "x_0=0; y_0=2 #initial values given\n",
+ "\n",
+ "def fr(x,y):\n",
+ " ydash=-y/(1+x)\n",
+ " return ydash\n",
+ "for x_0 in arange(0,2.5+0.01,0.01):\n",
+ " h=0.01 #step increment of 0.01\n",
+ " f_0=fr(x_0,y_0)\n",
+ " k1=h*f_0\n",
+ " k2=h*fr(x_0+h/2,y_0+k1/2)\n",
+ " k3=h*fr(x_0+h/2,y_0+k2/2)\n",
+ " k4=h*fr(x_0+h,y_0+k3)\n",
+ " y_0=y_0+(k1+2*k2+2*k3+k4)/6\n",
+ "\n",
+ "y_0=y_0-(k1+2*k2+2*k3+k4)/6 #final value at x=2.5\n",
+ "print \"the value of y at x=2.5 using Runge Kutta method is\",y_0"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.3 Page 58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of T in deg Celsius at z=5 m using Runge Kutta method is 28.9818069623\n",
+ "the value of T in deg Celsius at z=10 m using Runge Kutta method is 37.5959411201\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange,exp,pi\n",
+ "from __future__ import division\n",
+ "rho=1000; v=1; dia=2.4*10**-2; Cp=4184 #given data \n",
+ "mdot=rho*v*pi*dia**2/4\n",
+ "t1=mdot*Cp\n",
+ "U=200\n",
+ "Ts=250\n",
+ "z=0 #initial values given\n",
+ "# dT/dz=U*pi*dia*(Ts-T)/(mdot*Cp)\n",
+ "def fr(z,T):\n",
+ " Tgrad=U*pi*dia*(Ts-T)/(mdot*Cp)\n",
+ " return Tgrad\n",
+ "T=20\n",
+ "for z in arange(0,10+0.01,0.01):\n",
+ " h=0.01 #step increment of 0.01\n",
+ " k1=h*fr(z,T)\n",
+ " k2=h*fr(z+h/2,T+k1/2)\n",
+ " k3=h*fr(z+h/2,T+k2/2)\n",
+ " k4=h*fr(z+h,T+k3)\n",
+ " T=T+(k1+2*k2+2*k3+k4)/6\n",
+ " if z==5 :\n",
+ " T=T-(k1+2*k2+2*k3+k4)/6\n",
+ " print \"the value of T in deg Celsius at z=5 m using Runge Kutta method is\",T\n",
+ " \n",
+ "T=T-(k1+2*k2+2*k3+k4)/6 #final value at z=10 m\n",
+ "print \"the value of T in deg Celsius at z=10 m using Runge Kutta method is\",T"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.4 Page 59"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the time at which exit temp. in sec. is 28 C is 686\n",
+ "the value of steady Temp in Celsius is 30.4924053747\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange\n",
+ "vol=.5*.5*2 #given data\n",
+ "rho=1000\n",
+ "m=vol*rho\n",
+ "vol_rate=.001\n",
+ "mdot=vol_rate*rho\n",
+ "out_A=1\n",
+ "U=200\n",
+ "Cp=4184\n",
+ "T1=20; Ts=250; T_exit=28 #temp in Celsius\n",
+ "t1=(mdot*Cp*T1+U*out_A*Ts)/(m*Cp) #terms of the function\n",
+ "t2=(mdot*Cp+U*out_A)/(m*Cp)\n",
+ "#dt/dt=(mdot*Cp(T1-T)+Q_dot)/m*Cp\n",
+ "def fv(tm,T):\n",
+ " tgrad=t1-t2*T\n",
+ " return tgrad\n",
+ "T=20 #initial value\n",
+ "\n",
+ "for tm in arange(0,5001,1):\n",
+ " h=1 #step increment of 1 sec\n",
+ " k1=h*fv(tm,T)\n",
+ " k2=h*fv(tm+h/2,T+k1/2)\n",
+ " k3=h*fv(tm+h/2,T+k2/2)\n",
+ " k4=h*fv(tm+h,T+k3)\n",
+ " e1=abs(T-T_exit)\n",
+ " if e1<1e-3 :\n",
+ " print \"the time at which exit temp. in sec. is 28 C is\",tm\n",
+ " \n",
+ " T=T+(k1+2*k2+2*k3+k4)/6\n",
+ " \n",
+ "T=T-(k1+2*k2+2*k3+k4)/6 #final steady state temp.\n",
+ "print \"the value of steady Temp in Celsius is\",T"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.5 Page 62"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of T in deg C after 50 mins is 49.7501698463\n",
+ "the steady state temp in deg C is 61.7647058824\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange\n",
+ "m=760 #given data\n",
+ "mdot=12/60\n",
+ "U_into_A=11.5/60\n",
+ "Cp=2.3\n",
+ "T1=25; Ts=150\n",
+ "t1=(mdot*Cp*T1+U_into_A*Ts)/(m*Cp)\n",
+ "t2=(mdot*Cp+U_into_A)/(m*Cp)\n",
+ "#using energy balance we know accumulation=input-output\n",
+ "#T is the temp. of fluid in stirred tank\n",
+ "def fg(t,T):\n",
+ " tgrade=(t1-t2*T)\n",
+ " return tgrade\n",
+ "T=25\n",
+ "for t in arange(0,3001,1):\n",
+ " h=1 #step increment of 1 sec\n",
+ " k1=h*fg(t,T)\n",
+ " k2=h*fg(t+h/2,T+k1/2)\n",
+ " k3=h*fg(t+h/2,T+k2/2)\n",
+ " k4=h*fg(t+h,T+k3)\n",
+ " T=T+(k1+2*k2+2*k3+k4)/6\n",
+ " \n",
+ "T=T-(k1+2*k2+2*k3+k4)/6 #to get value at x=0.2\n",
+ "print \"the value of T in deg C after 50 mins is\",T\n",
+ "T_steady=(mdot*Cp*T1+U_into_A*Ts)/(mdot*Cp+U_into_A)\n",
+ "print \"the steady state temp in deg C is\",T_steady"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.6 Page 64"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of v at the end of the pneumatic conveyor is 10.9043471355\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,sqrt,pi\n",
+ "\n",
+ "dia=3*10**-4 #given data\n",
+ "v_sprfcl=12\n",
+ "rho_p=900\n",
+ "meu=1.8*10**-5\n",
+ "P=101325\n",
+ "T=298.15\n",
+ "R=8.314\n",
+ "M=28.84*10**-3\n",
+ "rho_air=P*M/(R*T)\n",
+ "proj_A=pi*(dia**2)/4\n",
+ "volm=pi*(dia**3)/6\n",
+ "t1=rho_air*proj_A/(volm*rho_p) #terms of the function\n",
+ "t2=((rho_air/rho_p)-1)*9.81*2\n",
+ "y=0\n",
+ "for z in arange(.01,10.01,0.01):\n",
+ " h=.01\n",
+ " vn1=sqrt(y)\n",
+ " Re=rho_air*(12-vn1)*dia/meu\n",
+ " Cd=24*(1+.15*Re**.687)/Re\n",
+ " def fy(z,y):\n",
+ " dy_by_dz=t1*Cd*(12-sqrt(y))**2+t2\n",
+ " return dy_by_dz\n",
+ "\n",
+ " kk1=h*fy(z,y)\n",
+ " kk2=h*fy(z+h/2,y+kk1/2)\n",
+ " kk3=h*fy(z+h/2,y+kk2/2)\n",
+ " kk4=h*fy(z+h,y+kk3)\n",
+ " y=y+(kk1+2*kk2+2*kk3+kk4)/6\n",
+ " \n",
+ "v=sqrt(y) #final value of velocity\n",
+ "print \"the value of v at the end of the pneumatic conveyor is\",v"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.7 Page 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of x and y repectively are 10.5385351539 11.7141482239\n",
+ "the analytical values of x and y are respectively 10.5396252201 11.7157840648\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "def fw(t,x,y):\n",
+ " dx_dt=x+2*y\n",
+ " return dx_dt\n",
+ "def fq(t,x,y):\n",
+ " dy_dt=3*x+2*y\n",
+ " return dy_dt\n",
+ "y=4;x=6 #initial values\n",
+ "#solving by Runge-Kutta method\n",
+ "for t in arange(0,.3,.1):\n",
+ " h=.1 #step increment of 0.1\n",
+ " k1=h*fw(t,x,y)\n",
+ " l1=h*fq(t,x,y)\n",
+ " k2=h*fw(t+h/2,x+k1/2,y+l1/2)\n",
+ " l2=h*fq(t+h/2,x+k1/2,y+l1/2)\n",
+ " k3=h*fw(t+h/2,x+k2/2,y+l2/2)\n",
+ " l3=h*fq(t+h/2,x+k2/2,y+l2/2)\n",
+ " k4=h*fw(t+h,x+k3,y+l3)\n",
+ " l4=h*fq(t+h,x+k3,y+l3)\n",
+ " x=x+(k1+2*k2+2*k3+k4)/6\n",
+ " y=y+(l1+2*l2+2*l3+l4)/6\n",
+ " \n",
+ "x=x-(k1+2*k2+2*k3+k4)/6\n",
+ "y=y-(l1+2*l2+2*l3+l4)/6\n",
+ "print \"the values of x and y repectively are\",x,y\n",
+ "t_an=.2\n",
+ "x_an=4*exp(4*t)+2*exp(-t)\n",
+ "y_an=6*exp(4*t)-2*exp(-t)\n",
+ "print \"the analytical values of x and y are respectively\",x_an,y_an"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.8 Page 66"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of y and z respectively are -1.83886143329 -1.27223682875\n",
+ "the analytical values of y and z are -1.83886498514 -1.27223251272\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "from math import atan,exp,sin,cos\n",
+ "def fw(x,y,z):\n",
+ " dy_dx=z\n",
+ " return dy_dx\n",
+ " \n",
+ "def fq(x,y,z):\n",
+ " dz_dx=-y\n",
+ " return dz_dx\n",
+ "y=2; z=1 #initial values\n",
+ "for x in arange(0,3.1,0.1):\n",
+ " h=.1 #step increment of 0.1\n",
+ " k1=h*fw(x,y,z)\n",
+ " l1=h*fq(x,y,z)\n",
+ " k2=h*fw(x+h/2,y+k1/2,z+l1/2)\n",
+ " l2=h*fq(x+h/2,y+k1/2,z+l1/2)\n",
+ " k3=h*fw(x+h/2,y+k2/2,z+l2/2)\n",
+ " l3=h*fq(x+h/2,y+k2/2,z+l2/2)\n",
+ " k4=h*fw(x+h,y+k3,z+l3)\n",
+ " l4=h*fq(x+h,y+k3,z+l3)\n",
+ " y=y+(k1+2*k2+2*k3+k4)/6\n",
+ " z=z+(l1+2*l2+2*l3+l4)/6\n",
+ " \n",
+ "y=y-(k1+2*k2+2*k3+k4)/6\n",
+ "z=z-(l1+2*l2+2*l3+l4)/6\n",
+ "print \"the values of y and z respectively are\",y,z\n",
+ "# for the given analytical eqns the values of A and alpha can be determined using initial values of y and z\n",
+ "alpha=atan(2)\n",
+ "A=2/sin(alpha)\n",
+ "y_an=A*sin(alpha+x)\n",
+ "z_an=A*cos(alpha+x)\n",
+ "print \"the analytical values of y and z are\",y_an,z_an"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.9 Page 67"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of y and z repectively are -1.90009675418 -1.14870918402\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "def fw(x,y,z): #let us have dy/dx=z, therefore d2y/dx2=dz/dx\n",
+ " dy_dx=z\n",
+ " return dy_dx\n",
+ "def fq(x,y,z):\n",
+ " dz_dx=-y*x\n",
+ " return dz_dx\n",
+ "y=2 ; z=1\n",
+ "for x in arange(0,3.1,0.1):\n",
+ " h=0.1 #step increment of 0.1\n",
+ " k1=h*fw(x,y,z)\n",
+ " l1=h*fq(x,y,z)\n",
+ " k2=h*fw(x+h/2,y+k1/2,z+l1/2)\n",
+ " l2=h*fq(x+h/2,y+k1/2,z+l1/2)\n",
+ " k3=h*fw(x+h/2,y+k2/2,z+l2/2)\n",
+ " l3=h*fq(x+h/2,y+k2/2,z+l2/2)\n",
+ " k4=h*fw(x+h,y+k3,z+l3)\n",
+ " l4=h*fq(x+h,y+k3,z+l3)\n",
+ " y=y+(k1+2*k2+2*k3+k4)/6\n",
+ " z=z+(l1+2*l2+2*l3+l4)/6\n",
+ " \n",
+ "y=y-(k1+2*k2+2*k3+k4)/6\n",
+ "z=z-(l1+2*l2+2*l3+l4)/6\n",
+ "print \"the values of y and z repectively are\",y,z"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.10 Page 67"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the steady state temperature of tank 1 is 30.9523809524\n",
+ "the steady state temperature of tank 2 is 41.3832199546\n",
+ "the steady state temperature of tank 3 is 51.3173523378\n",
+ "the approx. time when Temperature in 3rd tank is 99% of steady value is 3150\n",
+ "the approx. time when Temperature in 3rd tank is 99% of steady value is 3151\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "\n",
+ "Cp=2000 ; A=1 ; U=200 ; m=1000 ; mdot=2; Ts=250 #given data\n",
+ "T0=20; T1=0; T2=0 ; T3=0\n",
+ "\n",
+ "#from energy balances for the tanks we have accumulation=inlet-outlet\n",
+ "T1_steady=(mdot*Cp*(T0)+U*A*(Ts))/(mdot*Cp+U*A)\n",
+ "print \"the steady state temperature of tank 1 is\",T1_steady\n",
+ "T2_steady=(mdot*Cp*(T1_steady)+U*A*(Ts))/(mdot*Cp+U*A)\n",
+ "print \"the steady state temperature of tank 2 is\",T2_steady\n",
+ "T3_steady=(mdot*Cp*(T2_steady)+U*A*(Ts))/(mdot*Cp+U*A)\n",
+ "print \"the steady state temperature of tank 3 is\",T3_steady\n",
+ "final_T3=.99*T3_steady\n",
+ "def f1(t,T1,T2,T3):\n",
+ " dT1_by_dt=(mdot*Cp*(T0-T1)+U*A*(Ts-T1))/(m*Cp)\n",
+ " return dT1_by_dt\n",
+ "def f2(t,T1,T2,T3):\n",
+ " dT2_by_dt=(mdot*Cp*(T1-T2)+U*A*(Ts-T2))/(m*Cp)\n",
+ " return dT2_by_dt\n",
+ "def f3(t,T1,T2,T3):\n",
+ " dT3_by_dt=(mdot*Cp*(T2-T3)+U*A*(Ts-T3))/(m*Cp)\n",
+ " return dT3_by_dt\n",
+ "T1=20 ; T2=20 ; T3=20\n",
+ "#solving by Newton's Method\n",
+ "for t in arange(0,10001,1):\n",
+ " h=1 #step increment of 1\n",
+ " k1=h*f1(t,T1,T2,T3)\n",
+ " l1=h*f2(t,T1,T2,T3)\n",
+ " m1=h*f3(t,T1,T2,T3)\n",
+ " k2=h*f1(t+h/2,T1+k1/2,T2+l1/2,T3+m1/2)\n",
+ " l2=h*f2(t+h/2,T1+k1/2,T2+l1/2,T3+m1/2)\n",
+ " m2=h*f3(t+h/2,T1+k1/2,T2+l1/2,T3+m1/2)\n",
+ " k3=h*f1(t+h/2,T1+k2/2,T2+l2/2,T3+m2/2)\n",
+ " l3=h*f2(t+h/2,T1+k2/2,T2+l2/2,T3+m2/2)\n",
+ " m3=h*f3(t+h/2,T1+k2/2,T2+l2/2,T3+m2/2)\n",
+ " k4=h*f1(t+h,T1+k3,T2+l3,T3+m3)\n",
+ " l4=h*f2(t+h,T1+k3,T2+l3,T3+m3)\n",
+ " m4=h*f3(t+h,T1+k3,T2+l3,T3+m3)\n",
+ " T1=T1+(k1+2*k2+2*k3+k4)/6\n",
+ " T2=T2+(l1+2*l2+2*l3+l4)/6\n",
+ " e1=abs(T3-final_T3)\n",
+ " if e1<1e-3:\n",
+ " print \"the approx. time when Temperature in 3rd tank is 99% of steady value is\",t\n",
+ " T3=T3+(m1+2*m2+2*m3+m4)/6"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.11 Page 68"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of conc. at t=3 using Runge Kutta method is 0.0497872036658\n",
+ "the analytical soln. is 0.0497870683679\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "#rxn given A--> B\n",
+ "rate_const_k=1\n",
+ "def fs1(t,Ca):\n",
+ " dCa_by_dt=-rate_const_k*Ca\n",
+ " return dCa_by_dt\n",
+ "Ca=1\n",
+ "for t in arange(0.1,3.1,0.1):\n",
+ " h=0.1 #step increment of 0.1\n",
+ " k1=h*fs1(t,Ca)\n",
+ " k2=h*fs1(t+h/2,Ca+k1/2)\n",
+ " k3=h*fs1(t+h/2,Ca+k2/2)\n",
+ " k4=h*fs1(t+h,Ca+k3)\n",
+ " Ca=Ca+(k1+2*k2+2*k3+k4)/6\n",
+ "\n",
+ "print \"the value of conc. at t=3 using Runge Kutta method is\",Ca\n",
+ "Ca_anl=exp(-t) #analytical solution\n",
+ "print \"the analytical soln. is\",Ca_anl"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.12 Page 69"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of Ca at t=10 s using Runge Kutta method is 0.0909090909091\n",
+ "the steady state value of conc. is 0.0909090909091\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "#rxn A-->B\n",
+ "#input=FCa0, output=FCa\n",
+ "#applying mass balance of component A we get d(V*Ca)/dt=F*Ca0-F*Ca-k*Ca*V\n",
+ "rate_const_k=1\n",
+ "Ca0=1 ; F=1 ; V=10\n",
+ "\n",
+ "def fr(t,Ca1):\n",
+ " dVCa_by_dt=F*Ca0-F*Ca1-rate_const_k*Ca1*V\n",
+ " return dVCa_by_dt\n",
+ "Ca1=1\n",
+ "for t in arange(0.1,10.1,0.1):\n",
+ " h=0.1 #step increment of 0.1\n",
+ " k1=h*fr(t,Ca1)\n",
+ " k2=h*fr(t+h/2,Ca1+k1/2)\n",
+ " k3=h*fr(t+h/2,Ca1+k2/2)\n",
+ " k4=h*fr(t+h,Ca1+k3)\n",
+ " Ca1=Ca1+(k1+2*k2+2*k3+k4)/6\n",
+ " #final value\n",
+ "print \"the value of Ca at t=10 s using Runge Kutta method is\",Ca1\n",
+ "Ca_steady=F*Ca0/(F+rate_const_k*V)\n",
+ "print \"the steady state value of conc. is\",Ca_steady"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.13 Page 70"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the conc. of A,B,C after 0.5 secs is 0.606530934423 0.303264070711 0.0902049948655\n",
+ "the conc. of A,B,C after 1.0 secs is 0.367879774412 0.367878080371 0.264242145217\n",
+ "the conc. of A,B,C after 2.0 secs is 0.135335528422 0.270669810436 0.593994661142\n",
+ "the conc. of A,B,C after 5.0 secs is 0.00673797751675 0.0336897324459 0.959572290037\n",
+ "the conc. of A,B,C after 10 secs respectively is 4.54003410163e-05 0.000454001319532 0.999500598339\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "\n",
+ "#given rxn A-->B-->C\n",
+ "k1=1; k2=1 #given data\n",
+ "def f1a(t,A,B,C): #functions defined\n",
+ " dA_by_dt=-A\n",
+ " return dA_by_dt\n",
+ "def f2a(t,A,B,C):\n",
+ " dB_by_dt=A-B\n",
+ " return dB_by_dt\n",
+ "def f3a(t,A,B,C):\n",
+ " dC_by_dt=B\n",
+ " return dC_by_dt\n",
+ "A=1 ;B=0 ;C=0 #initial values\n",
+ "for t in arange(0.1,10.1,0.1):\n",
+ " h=.1 #step increment of 0.1\n",
+ " k1=h*f1a(t,A,B,C)\n",
+ " l1=h*f2a(t,A,B,C)\n",
+ " m1=h*f3a(t,A,B,C)\n",
+ " k2=h*f1a(t+h/2,A+k1/2,B+l1/2,C+m1/2)\n",
+ " l2=h*f2a(t+h/2,A+k1/2,B+l1/2,C+m1/2)\n",
+ " m2=h*f3a(t+h/2,A+k1/2,B+l1/2,C+m1/2)\n",
+ " k3=h*f1a(t+h/2,A+k2/2,B+l2/2,C+m2/2)\n",
+ " l3=h*f2a(t+h/2,A+k2/2,B+l2/2,C+m2/2)\n",
+ " m3=h*f3a(t+h/2,A+k2/2,B+l2/2,C+m2/2)\n",
+ " k4=h*f1a(t+h,A+k3,B+l3,C+m3)\n",
+ " l4=h*f2a(t+h,A+k3,B+l3,C+m3)\n",
+ " m4=h*f3a(t+h,A+k3,B+l3,C+m3)\n",
+ " A=A+(k1+2*k2+2*k3+k4)/6\n",
+ " B=B+(l1+2*l2+2*l3+l4)/6\n",
+ " C=C+(m1+2*m2+2*m3+m4)/6\n",
+ " if t==.5 or t==1 or t==2 or t==5 :\n",
+ " print \"the conc. of A,B,C after\",t,\"secs is\",A,B,C\n",
+ " \n",
+ "print \"the conc. of A,B,C after 10 secs respectively is\",A,B,C"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.14 Page 71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the conc. of A,B,C,D after 10 secs respectively is 0.909221602698 0.904970552714 0.0865273473177 0.00425104998406\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.834171033289 0.819591322892 0.151249256314 0.0145797103969\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.771526698493 0.743175149135 0.20012175215 0.0283515493576\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.718763584219 0.67487940149 0.237352233053 0.0438841827281\n",
+ "the conc. of A,B,C,D after 0.5 secs is 0.673948358905 0.613838104858 0.265941387048 0.0601102540469\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.673948358905 0.613838104858 0.265941387048 0.0601102540469\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.635587969272 0.55922762747 0.288051688925 0.0763603418024\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.602518712698 0.510295639479 0.305258214083 0.0922230732191\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.573825046136 0.466370377686 0.318720285414 0.10745466845\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.548779962461 0.426859807297 0.329299882375 0.121920155164\n",
+ "the conc. of A,B,C,D after 1.0 secs is 0.52680094957 0.391245989895 0.337644090755 0.135554959675\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.52680094957 0.391245989895 0.337644090755 0.135554959675\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.507417223315 0.359077536366 0.344243089736 0.148339686949\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.490245152639 0.329961657439 0.349471352161 0.1602834952\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.474969674462 0.303556564616 0.353617215693 0.171413109846\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.461330119618 0.27956455757 0.356904318334 0.181765562048\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.449109312513 0.257725910909 0.359507285883 0.191383401604\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.438125119864 0.23781355818 0.361563318452 0.200311561684\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.428223846389 0.219628516078 0.363180823301 0.208595330311\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.419275034438 0.202995969535 0.364445900659 0.216279064903\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.411167339142 0.187761933365 0.36542725508 0.223405405777\n",
+ "the conc. of A,B,C,D after 2.0 secs is 0.403805233709 0.173790409818 0.366179942399 0.230014823891\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.403805233709 0.173790409818 0.366179942399 0.230014823891\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.397106360172 0.160960968915 0.366748248571 0.236145391257\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.390999385517 0.149166687328 0.367167916295 0.241832698188\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.385422256195 0.138312390419 0.36746787803 0.247109865775\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.380320768708 0.128313150237 0.367671612821 0.252007618471\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.375647392533 0.119092999585 0.36779821452 0.256554392948\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.37136029568 0.11058382858 0.36786323722 0.2607764671\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.367422533931 0.102724435507 0.367879367645 0.264698098424\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.363801372979 0.0954597083513 0.367856962394 0.268341664627\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.360467719057 0.0887399171885 0.367804479075 0.271727801868\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.357395638584 0.0825201008309 0.367728823663 0.274875537753\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.354561951166 0.0767595337823 0.367635631451 0.277802417384\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.351945883361 0.0714212617803 0.367529495058 0.280524621581\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.349528772976 0.0664716960569 0.367414150106 0.283057076919\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.347293815565 0.0618802579883 0.367292626859 0.285413557576\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.345225846335 0.0576190670956 0.367167374425 0.287606779239\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.343311151848 0.0536626664309 0.367040362736 0.289648485417\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.341537306905 0.0499877802859 0.366913166476 0.291549526619\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.339893032801 0.0465730999121 0.36678703431 0.293319932889\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.338368073749 0.0433990935763 0.366662946079 0.294968980172\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.336953088837 0.0404478378093 0.366541660135 0.296505251028\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.335639557286 0.0377028671538 0.366423752583 0.297936690132\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.334419695135 0.0351490400977 0.366309649828 0.299270655037\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.333286381788 0.0327724192024 0.366199655626 0.300513962586\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.332233095079 0.0305601637072 0.366093973549 0.301672931372\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.331253853723 0.0285004331231 0.365992725677 0.3027534206\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.330343166195 0.0265823005295 0.365895968139 0.303760865666\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.329495985212 0.0247956744548 0.365803704032 0.304700310757\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.328707667101 0.0231312283662 0.365715894165 0.305576438734\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32797393547 0.0215803369203 0.365632465979 0.30639359855\n",
+ "the conc. of A,B,C,D after 5.0 secs is 0.327290848644 0.0201350182323 0.365553320944 0.307155830412\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.327290848644 0.0201350182323 0.365553320944 0.307155830412\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.326654770412 0.0187878815118 0.365478340688 0.3078668889\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.326062343718 0.0175320794959 0.365407392061 0.308530264222\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.325510466935 0.0163612651761 0.365340331307 0.309149201758\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32499627244 0.0152695523777 0.365277007498 0.309726720062\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.324517107234 0.0142514797992 0.365217265332 0.310265627434\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.324070515374 0.0133019781679 0.36516094742 0.310768537206\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.323654222036 0.0124163402028 0.36510789613 0.311237881834\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.323266119025 0.0115901931149 0.365057955064 0.31167592591\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.322904251582 0.0108194734013 0.365010970238 0.31208477818\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32256680636 0.010100403717 0.364966790997 0.312466402643\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.322252100453 0.00942947163274 0.364925270727 0.31282262882\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32195857136 0.00880341010523 0.364886267385 0.313155161255\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.321684767811 0.00821917950607 0.364849643884 0.313465588305\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.321429341352 0.0076739510701 0.364815268365 0.313755390282\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.321191038641 0.0071650916388 0.364783014357 0.314025947002\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320968694361 0.00669014958624 0.364752760865 0.314278544774\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320761224716 0.00624684182645 0.364724392395 0.314514382889\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320567621448 0.00583304181063 0.364697798914 0.314734579638\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320386946326 0.00544676843143 0.36467287578 0.314940177894\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320218326064 0.00508617575939 0.364649523631 0.315132150305\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320060947646 0.00474954354349 0.364627648251 0.315311404103\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319914053998 0.00443526841398 0.364607160417 0.315478785584\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319776940002 0.00414185573132 0.364587975728 0.31563508427\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319648948802 0.00386791202995 0.364570014426 0.315781036772\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319529468398 0.00361213801035 0.364553201214 0.315917330388\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319417928488 0.00337332203659 0.364537465062 0.316044606451\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319313797541 0.00315033410046 0.364522739018 0.316163463441\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319216580097 0.0029421202165 0.364508960022 0.316274459881\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319125814253 0.00274769721536 0.364496068709 0.316378117038\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319041069335 0.00256614790527 0.364484009235 0.31647492143\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318961943743 0.00239661657445 0.364472729088 0.316565327169\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318888062945 0.00223830480885 0.364462178919 0.316649758136\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318819077617 0.00209046760225 0.364452312369 0.316728610015\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318754661915 0.00195240973716 0.364443085908 0.316802252177\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318694511869 0.00182348241684 0.364434458678 0.316871029453\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318638343895 0.00170308013039 0.36442639234 0.316935263765\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.3185858934 0.0015906377339 0.364418850933 0.316995255667\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318536913498 0.00148562773249 0.364411800736 0.317051285766\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318491173806 0.00138755774864 0.364405210136 0.317103616058\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318448459329 0.00129596816386 0.364399049506 0.317152491165\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318408569419 0.00121042992125 0.364393291084 0.317198139497\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318371316807 0.0011305424778 0.364387908864 0.317240774329\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318336526703 0.0010559318958 0.364382878489 0.317280594807\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318304035957 0.000986249063808 0.364378177149 0.317317786893\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318273692274 0.000921168038026 0.36437378349 0.317352524236\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318245353488 0.000860384495848 0.36436967752 0.317384968992\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318218886882 0.000803614293751 0.364365840529 0.317415272588\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318194168558 0.000750592122388 0.364362255007 0.317443576435\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318171082842 0.000701070252194 0.364358904569 0.317470012589\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318149521739 0.000654817363294 0.364355773886 0.317494704375\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "\n",
+ "#given rxn A+B--k1-->C\n",
+ "# B+C--k2-->D\n",
+ "k1=1; k2=1 #given rate constants\n",
+ "def f1a(t,A,B,C,D):\n",
+ " dA_by_dt=-A*B\n",
+ " return dA_by_dt\n",
+ "def f2a(t,A,B,C,D):\n",
+ " dB_by_dt=-A*B-B*C\n",
+ " return dB_by_dt\n",
+ "def f3a(t,A,B,C,D):\n",
+ " dC_by_dt=A*B-B*C\n",
+ " return dC_by_dt\n",
+ "def f4a(t,A,B,C,D):\n",
+ " dD_by_dt=B*C\n",
+ " return dD_by_dt\n",
+ "A=1; B=1 ; C=0 ; D=0 #initial values\n",
+ "for t in arange(.1,10.1,0.1):\n",
+ " h=.1 #step increment of 0.1\n",
+ " k1=h*f1a(t,A,B,C,D)\n",
+ " l1=h*f2a(t,A,B,C,D)\n",
+ " m1=h*f3a(t,A,B,C,D)\n",
+ " n1=h*f4a(t,A,B,C,D)\n",
+ " k2=h*f1a(t+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " l2=h*f2a(t+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " m2=h*f3a(t+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " n2=h*f4a(t+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " k3=h*f1a(t+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " l3=h*f2a(t+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " m3=h*f3a(t+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " n3=h*f4a(t+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " k4=h*f1a(t+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " l4=h*f2a(t+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " m4=h*f3a(t+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " n4=h*f4a(t+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " A=A+(k1+2*k2+2*k3+k4)/6\n",
+ " B=B+(l1+2*l2+2*l3+l4)/6\n",
+ " C=C+(m1+2*m2+2*m3+m4)/6\n",
+ " D=D+(n1+2*n2+2*n3+n4)/6\n",
+ " if t==.5 or t==1 or t==2 or t==5:\n",
+ " print \"the conc. of A,B,C,D after\",t,\"secs is\",A,B,C,D\n",
+ " \n",
+ " print \"the conc. of A,B,C,D after 10 secs respectively is\",A,B,C,D"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.15 Page 72"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.9048375\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.818730901406\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.740818422001\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.670320288917\n",
+ "length is 0.5 the value of conc. at 0.5 length is 0.606530934423\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.606530934423\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.548811934376\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.496585618671\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.449329289734\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.4065699912\n",
+ "length is 1.0 the value of conc. at 1.0 length is 0.367879774412\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.367879774412\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.33287141538\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.301194539314\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.272532113966\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.246597276671\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.22313046333\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.201896810613\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.182683805373\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.165299157744\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.149568876646\n",
+ "length is 2.0 the value of conc. at 2.0 length is 0.135335528422\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.135335528422\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.122456661198\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.110803379177\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.100259052606\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0907181505125\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0820851845144\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.074273753143\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0672056771095\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0608102168616\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0550233645995\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0497872036658\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.045049328897\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0407623221358\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0368832776556\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0333733727457\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0301974791617\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.027323811551\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0247236093343\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.022370848861\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0202419829563\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0183157052532\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.016572736952\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0149956338718\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0135686118635\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0122773888371\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0111090418218\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0100518776295\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00909531582456\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00822978283241\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00744661612362\n",
+ "length is 5.0 the value of conc. at 5.0 length is 0.00673797751675\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00673797751675\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00609677473132\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00551659040595\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00499161787144\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00451660303575\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00408679179936\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00369788247475\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00334598273375\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00302757065185\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00273945945969\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00247876564886\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0022428801128\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00202944203407\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0018363152565\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0016615669059\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00150344804522\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00136037617062\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00123091937328\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00111378200842\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.00100779172804\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000911887747724\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000825110229931\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000746590677676\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000675543242311\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000611256858515\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000553088127716\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000500454878763\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000452830341362\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000409737874002\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000370746193568\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000335465058922\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000303541365253\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000274655610082\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000248518695587\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000224869035219\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000203469935655\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000184107227903\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000166587123828\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000150734276656\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000136390026054\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.0001234108102\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000111666728974\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 0.000101040243878\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 9.142500167e-05\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 8.27247699485e-05\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 7.48524740283e-05\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 6.77293254686e-05\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 6.12840335337e-05\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 5.54520916925e-05\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 5.01751320168e-05\n",
+ "the value of Ca at x=10 using Runge Kutta method in plug flow reactor is 4.54003410163e-05\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp\n",
+ "\n",
+ "rc_k1=1 #given rate constant\n",
+ "u=1 #mean axial velocity\n",
+ "def fm(x,Ca):\n",
+ " dCa_by_dx=-Ca\n",
+ " return dCa_by_dx\n",
+ "Ca=1\n",
+ "for x in arange(.1,10.1,0.1):\n",
+ " h=0.1 #step increment of 0.1\n",
+ " k1=h*fm(x,Ca)\n",
+ " k2=h*fm(x+h/2,Ca+k1/2)\n",
+ " k3=h*fm(x+h/2,Ca+k2/2)\n",
+ " k4=h*fm(x+h,Ca+k3)\n",
+ " Ca=Ca+(k1+2*k2+2*k3+k4)/6\n",
+ " if x==.5 or x==1 or x==2 or x==5:\n",
+ " print \"length is\",x,\"the value of conc. at\",x,\"length is\",Ca\n",
+ " print \"the value of Ca at x=10 using Runge Kutta method in plug flow reactor is\",Ca"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.16 Page 73"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the conc. of A,B,C at a distance of 10 mtr is 0.9048375 0.0904833333333 0.00467916666667\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.818730901406 0.16374542625 0.0175236723438\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.740818422001 0.222244503187 0.0369370748121\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.670320288917 0.26812688087 0.0615528302129\n",
+ "the conc. of A,B,C at a distance of 0.5 mtr is 0.606530934423 0.303264070711 0.0902049948655\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.606530934423 0.303264070711 0.0902049948655\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.548811934376 0.329285644298 0.121902421325\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.496585618671 0.347608332368 0.15580604896\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.449329289734 0.359461776502 0.191208933763\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.4065699912 0.365911307095 0.227518701705\n",
+ "the conc. of A,B,C at a distance of 1.0 mtr is 0.367879774412 0.367878080371 0.264242145217\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.367879774412 0.367878080371 0.264242145217\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.33287141538 0.366156870802 0.300971713818\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.301194539314 0.36143178282 0.337373677867\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.272532113966 0.354290116686 0.373177769348\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.246597276671 0.345234597569 0.40816812576\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.22313046333 0.334694153762 0.442175382908\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.201896810613 0.323033409445 0.475069779942\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.182683805373 0.310561039032 0.506755155595\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.165299157744 0.297537113811 0.537163728444\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.149568876646 0.284179557008 0.566251566346\n",
+ "the conc. of A,B,C at a distance of 2.0 mtr is 0.135335528422 0.270669810436 0.593994661142\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.135335528422 0.270669810436 0.593994661142\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.122456661198 0.257157804331 0.620385534471\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.110803379177 0.24376631167 0.645430309153\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.100259052606 0.230594759128 0.669146188265\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0907181505125 0.217722558639 0.691559290848\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0820851845144 0.205212016305 0.712702799181\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.074273753143 0.193110868916 0.732615377941\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0672056771095 0.181454492616 0.751339830274\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0608102168616 0.170267823146 0.768921959992\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0550233645995 0.159567022548 0.785409612852\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0497872036658 0.149360923205 0.800851873129\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.045049328897 0.139652276496 0.815298394607\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0407623221358 0.130438830177 0.828798847687\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0368832776556 0.121714255781 0.841402466563\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0333733727457 0.113468944822 0.853157682432\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0301974791617 0.105690690371 0.864111830467\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.027323811551 0.0983652686215 0.874310919828\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0247236093343 0.0914769332948 0.883799457371\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.022370848861 0.0850088342147 0.892620316924\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0202419829563 0.0789433700032 0.900814647041\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0183157052532 0.0732624836464 0.9084218111\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.016572736952 0.0679479086101 0.915479354438\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0149956338718 0.0629813722389 0.922022993889\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0135686118635 0.0583447623414 0.928086625795\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0122773888371 0.0540202621252 0.933702349038\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0111090418218 0.0499904579973 0.938900500181\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0100518776295 0.0462384241723 0.943709698198\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00909531582456 0.0427477875262 0.948156896649\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00822978283241 0.0395027756892 0.952267441478\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00744661612362 0.036488250981 0.956065132895\n",
+ "the conc. of A,B,C at a distance of 5.0 mtr is 0.00673797751675 0.0336897324459 0.959572290037\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00673797751675 0.0336897324459 0.959572290037\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00609677473132 0.0310934079477 0.962809817321\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00551659040595 0.0286861380141 0.96579727158\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00499161787144 0.0264554528939 0.968552929235\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00451660303575 0.0243895440817 0.971093852883\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00408679179936 0.022477251391 0.97343595681\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00369788247475 0.0207080465001 0.975594071025\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00334598273375 0.0190720137577 0.977582003509\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00302757065185 0.0175598289195 0.979412600429\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00273945945969 0.0161627363844 0.981097804156\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00247876564886 0.0148725254067 0.982648708944\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0022428801128 0.0136815056861 0.984075614201\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00202944203407 0.0125824826701 0.985388075296\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0018363152565 0.0115687328431 0.9865949519\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0016615669059 0.0106339792294 0.987704453865\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00150344804522 0.00977236729316 0.988724184662\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00136037617062 0.00897844138125 0.989661182448\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00123091937328 0.00824712182381 0.990521958803\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00111378200842 0.00757368278121 0.99131253521\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.00100779172804 0.00695373090227 0.99203847737\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000911887747724 0.00638318484014 0.992704927412\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000825110229931 0.00585825565583 0.993316634114\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000746590677676 0.00537542812596 0.993877981196\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000675543242311 0.00493144296007 0.994393013798\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000611256858515 0.00452327992376 0.994865463218\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000553088127716 0.0041481418561 0.995298770016\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000500454878763 0.00380343956414 0.995696105557\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000452830341362 0.00348677757223 0.996060392086\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000409737874002 0.00319594070023 0.996394321426\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000370746193568 0.00292888144198 0.996700372364\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000335465058922 0.00268370811317 0.996980826828\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000303541365253 0.0024586737366 0.997237784898\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000274655610082 0.00225216563167 0.997473178758\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000248518695587 0.00206269567487 0.99768878563\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000224869035219 0.00188889119768 0.997886239767\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000203469935655 0.00172948648895 0.998067043575\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000184107227903 0.00158331486896 0.998232577903\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000166587123828 0.00144930130341 0.998384111573\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000150734276656 0.00132645552638 0.998522810197\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000136390026054 0.00121386564215 0.998649744332\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.0001234108102 0.00111069217717 0.998765897013\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000111666728974 0.00101616255434 0.998872170717\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 0.000101040243878 0.00092956596312 0.998969393793\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 9.142500167e-05 0.000850248600221 0.999058326398\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 8.27247699485e-05 0.000777609256704 0.999139665973\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 7.48524740283e-05 0.000711095228747 0.999214052297\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 6.77293254686e-05 0.0006501985304 0.999282072144\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 6.12840335337e-05 0.000594452387883 0.999344263579\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 5.54520916925e-05 0.000543427996156 0.999401119912\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 5.01751320168e-05 0.000496731519568 0.999453093348\n",
+ "the conc. of A,B,C at a distance of 10 mtr is 4.54003410163e-05 0.000454001319532 0.999500598339\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange\n",
+ "#given rxn A-->B-->C\n",
+ "rc_k1=1 ; rc_k2=1 #given rate constants\n",
+ "u=1 #mean axial velocity\n",
+ "def f1e(x,A,B,C):\n",
+ " dA_by_dx=-A\n",
+ " return dA_by_dx\n",
+ "def f2e(x,A,B,C):\n",
+ " dB_by_dx=A-B\n",
+ " return dB_by_dx\n",
+ "def f3e(x,A,B,C):\n",
+ " dC_by_dx=B\n",
+ " return dC_by_dx\n",
+ "A=1 ; B=0 ; C=0\n",
+ "for x in arange(.1,10.1,0.1):\n",
+ " h=.1 #step increment of 0.1\n",
+ " k1=h*f1e(x,A,B,C)\n",
+ " l1=h*f2e(x,A,B,C)\n",
+ " m1=h*f3e(x,A,B,C)\n",
+ " k2=h*f1e(x+h/2,A+k1/2,B+l1/2,C+m1/2)\n",
+ " l2=h*f2e(x+h/2,A+k1/2,B+l1/2,C+m1/2)\n",
+ " m2=h*f3e(x+h/2,A+k1/2,B+l1/2,C+m1/2)\n",
+ " k3=h*f1e(x+h/2,A+k2/2,B+l2/2,C+m2/2)\n",
+ " l3=h*f2e(x+h/2,A+k2/2,B+l2/2,C+m2/2)\n",
+ " m3=h*f3e(x+h/2,A+k2/2,B+l2/2,C+m2/2)\n",
+ " k4=h*f1e(x+h,A+k3,B+l3,C+m3)\n",
+ " l4=h*f2e(x+h,A+k3,B+l3,C+m3)\n",
+ " m4=h*f3e(x+h,A+k3,B+l3,C+m3)\n",
+ " A=A+(k1+2*k2+2*k3+k4)/6\n",
+ " B=B+(l1+2*l2+2*l3+l4)/6\n",
+ " C=C+(m1+2*m2+2*m3+m4)/6\n",
+ " if x==.5 or x==1 or x==2 or x==5:\n",
+ " print \"the conc. of A,B,C at a distance of\",x,\"mtr is\",A,B,C\n",
+ " print \"the conc. of A,B,C at a distance of 10 mtr is\",A,B,C"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.17 Page 74"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the conc. of A,B,C,D after 10 secs respectively is 0.909221602698 0.904970552714 0.0865273473177 0.00425104998406\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.834171033289 0.819591322892 0.151249256314 0.0145797103969\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.771526698493 0.743175149135 0.20012175215 0.0283515493576\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.718763584219 0.67487940149 0.237352233053 0.0438841827281\n",
+ "the conc. of A,B,C,D after 0.5 secs is 0.673948358905 0.613838104858 0.265941387048 0.0601102540469\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.673948358905 0.613838104858 0.265941387048 0.0601102540469\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.635587969272 0.55922762747 0.288051688925 0.0763603418024\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.602518712698 0.510295639479 0.305258214083 0.0922230732191\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.573825046136 0.466370377686 0.318720285414 0.10745466845\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.548779962461 0.426859807297 0.329299882375 0.121920155164\n",
+ "the conc. of A,B,C,D after 1.0 secs is 0.52680094957 0.391245989895 0.337644090755 0.135554959675\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.52680094957 0.391245989895 0.337644090755 0.135554959675\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.507417223315 0.359077536366 0.344243089736 0.148339686949\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.490245152639 0.329961657439 0.349471352161 0.1602834952\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.474969674462 0.303556564616 0.353617215693 0.171413109846\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.461330119618 0.27956455757 0.356904318334 0.181765562048\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.449109312513 0.257725910909 0.359507285883 0.191383401604\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.438125119864 0.23781355818 0.361563318452 0.200311561684\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.428223846389 0.219628516078 0.363180823301 0.208595330311\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.419275034438 0.202995969535 0.364445900659 0.216279064903\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.411167339142 0.187761933365 0.36542725508 0.223405405777\n",
+ "the conc. of A,B,C,D after 2.0 secs is 0.403805233709 0.173790409818 0.366179942399 0.230014823891\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.403805233709 0.173790409818 0.366179942399 0.230014823891\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.397106360172 0.160960968915 0.366748248571 0.236145391257\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.390999385517 0.149166687328 0.367167916295 0.241832698188\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.385422256195 0.138312390419 0.36746787803 0.247109865775\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.380320768708 0.128313150237 0.367671612821 0.252007618471\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.375647392533 0.119092999585 0.36779821452 0.256554392948\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.37136029568 0.11058382858 0.36786323722 0.2607764671\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.367422533931 0.102724435507 0.367879367645 0.264698098424\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.363801372979 0.0954597083513 0.367856962394 0.268341664627\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.360467719057 0.0887399171885 0.367804479075 0.271727801868\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.357395638584 0.0825201008309 0.367728823663 0.274875537753\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.354561951166 0.0767595337823 0.367635631451 0.277802417384\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.351945883361 0.0714212617803 0.367529495058 0.280524621581\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.349528772976 0.0664716960569 0.367414150106 0.283057076919\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.347293815565 0.0618802579883 0.367292626859 0.285413557576\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.345225846335 0.0576190670956 0.367167374425 0.287606779239\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.343311151848 0.0536626664309 0.367040362736 0.289648485417\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.341537306905 0.0499877802859 0.366913166476 0.291549526619\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.339893032801 0.0465730999121 0.36678703431 0.293319932889\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.338368073749 0.0433990935763 0.366662946079 0.294968980172\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.336953088837 0.0404478378093 0.366541660135 0.296505251028\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.335639557286 0.0377028671538 0.366423752583 0.297936690132\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.334419695135 0.0351490400977 0.366309649828 0.299270655037\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.333286381788 0.0327724192024 0.366199655626 0.300513962586\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.332233095079 0.0305601637072 0.366093973549 0.301672931372\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.331253853723 0.0285004331231 0.365992725677 0.3027534206\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.330343166195 0.0265823005295 0.365895968139 0.303760865666\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.329495985212 0.0247956744548 0.365803704032 0.304700310757\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.328707667101 0.0231312283662 0.365715894165 0.305576438734\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32797393547 0.0215803369203 0.365632465979 0.30639359855\n",
+ "the conc. of A,B,C,D after 5.0 secs is 0.327290848644 0.0201350182323 0.365553320944 0.307155830412\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.327290848644 0.0201350182323 0.365553320944 0.307155830412\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.326654770412 0.0187878815118 0.365478340688 0.3078668889\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.326062343718 0.0175320794959 0.365407392061 0.308530264222\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.325510466935 0.0163612651761 0.365340331307 0.309149201758\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32499627244 0.0152695523777 0.365277007498 0.309726720062\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.324517107234 0.0142514797992 0.365217265332 0.310265627434\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.324070515374 0.0133019781679 0.36516094742 0.310768537206\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.323654222036 0.0124163402028 0.36510789613 0.311237881834\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.323266119025 0.0115901931149 0.365057955064 0.31167592591\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.322904251582 0.0108194734013 0.365010970238 0.31208477818\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32256680636 0.010100403717 0.364966790997 0.312466402643\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.322252100453 0.00942947163274 0.364925270727 0.31282262882\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.32195857136 0.00880341010523 0.364886267385 0.313155161255\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.321684767811 0.00821917950607 0.364849643884 0.313465588305\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.321429341352 0.0076739510701 0.364815268365 0.313755390282\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.321191038641 0.0071650916388 0.364783014357 0.314025947002\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320968694361 0.00669014958624 0.364752760865 0.314278544774\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320761224716 0.00624684182645 0.364724392395 0.314514382889\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320567621448 0.00583304181063 0.364697798914 0.314734579638\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320386946326 0.00544676843143 0.36467287578 0.314940177894\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320218326064 0.00508617575939 0.364649523631 0.315132150305\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.320060947646 0.00474954354349 0.364627648251 0.315311404103\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319914053998 0.00443526841398 0.364607160417 0.315478785584\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319776940002 0.00414185573132 0.364587975728 0.31563508427\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319648948802 0.00386791202995 0.364570014426 0.315781036772\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319529468398 0.00361213801035 0.364553201214 0.315917330388\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319417928488 0.00337332203659 0.364537465062 0.316044606451\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319313797541 0.00315033410046 0.364522739018 0.316163463441\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319216580097 0.0029421202165 0.364508960022 0.316274459881\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319125814253 0.00274769721536 0.364496068709 0.316378117038\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.319041069335 0.00256614790527 0.364484009235 0.31647492143\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318961943743 0.00239661657445 0.364472729088 0.316565327169\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318888062945 0.00223830480885 0.364462178919 0.316649758136\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318819077617 0.00209046760225 0.364452312369 0.316728610015\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318754661915 0.00195240973716 0.364443085908 0.316802252177\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318694511869 0.00182348241684 0.364434458678 0.316871029453\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318638343895 0.00170308013039 0.36442639234 0.316935263765\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.3185858934 0.0015906377339 0.364418850933 0.316995255667\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318536913498 0.00148562773249 0.364411800736 0.317051285766\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318491173806 0.00138755774864 0.364405210136 0.317103616058\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318448459329 0.00129596816386 0.364399049506 0.317152491165\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318408569419 0.00121042992125 0.364393291084 0.317198139497\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318371316807 0.0011305424778 0.364387908864 0.317240774329\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318336526703 0.0010559318958 0.364382878489 0.317280594807\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318304035957 0.000986249063808 0.364378177149 0.317317786893\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318273692274 0.000921168038026 0.36437378349 0.317352524236\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318245353488 0.000860384495848 0.36436967752 0.317384968992\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318218886882 0.000803614293751 0.364365840529 0.317415272588\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318194168558 0.000750592122388 0.364362255007 0.317443576435\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318171082842 0.000701070252194 0.364358904569 0.317470012589\n",
+ "the conc. of A,B,C,D after 10 secs respectively is 0.318149521739 0.000654817363294 0.364355773886 0.317494704375\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange\n",
+ "#given rxn A+B--k1-->C\n",
+ "# B+C--k2-->D\n",
+ "rc_k1=1 ; rc_k2=1 #rate constants\n",
+ "def f1a(x,A,B,C,D):\n",
+ " dA_by_dx=-A*B\n",
+ " return dA_by_dx\n",
+ "def f2a(x,A,B,C,D):\n",
+ " dB_by_dx=-A*B-B*C\n",
+ " return dB_by_dx\n",
+ "def f3a(x,A,B,C,D):\n",
+ " dC_by_dx=A*B-B*C\n",
+ " return dC_by_dx\n",
+ "def f4a(x,A,B,C,D):\n",
+ " dD_by_dx=B*C\n",
+ " return dD_by_dx\n",
+ "A=1 ; B=1 ; C=0 ;D=0\n",
+ "for x in arange(.1,10.1,0.1):\n",
+ " h=.1 #step increment of 0.1\n",
+ " k1=h*f1a(x,A,B,C,D)\n",
+ " l1=h*f2a(x,A,B,C,D)\n",
+ " m1=h*f3a(x,A,B,C,D)\n",
+ " n1=h*f4a(x,A,B,C,D)\n",
+ " k2=h*f1a(x+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " l2=h*f2a(x+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " m2=h*f3a(x+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " n2=h*f4a(x+h/2,A+k1/2,B+l1/2,C+m1/2,D+n1/2)\n",
+ " k3=h*f1a(x+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " l3=h*f2a(x+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " m3=h*f3a(x+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " n3=h*f4a(x+h/2,A+k2/2,B+l2/2,C+m2/2,D+n2/2)\n",
+ " k4=h*f1a(x+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " l4=h*f2a(x+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " m4=h*f3a(x+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " n4=h*f4a(x+h,A+k3,B+l3,C+m3,D+n3)\n",
+ " A=A+(k1+2*k2+2*k3+k4)/6\n",
+ " B=B+(l1+2*l2+2*l3+l4)/6\n",
+ " C=C+(m1+2*m2+2*m3+m4)/6\n",
+ " D=D+(n1+2*n2+2*n3+n4)/6\n",
+ " if x==.5 or x==1 or x==2 or x==5:\n",
+ " print \"the conc. of A,B,C,D after\",x,\"secs is\",A,B,C,D\n",
+ " \n",
+ " print \"the conc. of A,B,C,D after 10 secs respectively is\",A,B,C,D"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 4.18 Page 75"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the height of the tower required for 90% conversion in mtrs is 199.2\n",
+ "the height of the tower required for 90% conversion in mtrs is 199.3\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,exp,pi\n",
+ "T=294.15\n",
+ "#rxn A-->B\n",
+ "R=8.314; rho=980.9; MW=200; U=1900; Cp=15.7; H_rxn=92900; T1=388.71; mdot=1.26; dia=2.54*10**-2; E=108847 #given data\n",
+ "b=E/(R*T1) ; k1=5.64*10**13*exp(-b); A=pi*dia**2/4; na0=mdot*1000/MW; Ts=388.71\n",
+ "k=k1*exp(b*(1-T1/T))\n",
+ "\n",
+ "#dX_by_dV=ra/na0\n",
+ "#dX_by_dV=k*(1-X)/F\n",
+ "#from energX balance\n",
+ "#mdot*Cp*dT_by_dz+ra*A*H_RXN-q=0\n",
+ "#q=U*pi*dia*(Ts-T)\n",
+ "#-mdot*Cp*dT_by_dV+4*U/dia*(Ts-T)-ra*H_rxn=0\n",
+ "F=mdot/rho\n",
+ "t1=A*k1/F\n",
+ "\n",
+ "s1=mdot*Cp/A\n",
+ "s2=4*U/dia\n",
+ "s3=H_rxn*t1\n",
+ "\n",
+ "def fg1(z,X,T):\n",
+ " dX_by_dz=t1*(1-X)*exp(b*(1-T1/T))\n",
+ " return dX_by_dz\n",
+ "def fd1(z,X,T):\n",
+ " ra=na0/A*(t1*(1-X)*exp(b*(1-T1/T)))\n",
+ " dT_by_dz=(ra*H_rxn-s2*(Ts-T))/-s1\n",
+ " return dT_by_dz\n",
+ " \n",
+ " \n",
+ "X=0 ; T=294.15\n",
+ "for z in arange(0,350.1,0.1):\n",
+ " h=.1 #szep incremenz of 0.1\n",
+ " k1=h*fg1(z,X,T)\n",
+ " l1=h*fd1(z,X,T)\n",
+ " k2=h*fg1(z+h/2,X+k1/2,T+l1/2)\n",
+ " l2=h*fd1(z+h/2,X+k1/2,T+l1/2)\n",
+ " k3=h*fg1(z+h/2,X+k2/2,T+l2/2)\n",
+ " l3=h*fd1(z+h/2,X+k2/2,T+l2/2)\n",
+ " k4=h*fg1(z+h,X+k3,T+l3)\n",
+ " l4=h*fd1(z+h,X+k3,T+l3)\n",
+ " X=X+(k1+2*k2+2*k3+k4)/6\n",
+ " T=T+(l1+2*l2+2*l3+l4)/6\n",
+ " #condition for height calc. for 90% conversion\n",
+ " if X>.9 and X<.9005 :\n",
+ " print \"the height of the tower required for 90% conversion in mtrs is\",z\n",
+ " "
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter5.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter5.ipynb
new file mode 100644
index 00000000..6ad157f3
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter5.ipynb
@@ -0,0 +1,586 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 5 - Boundary Value Problems"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 5.1 Page 87"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of y at x=.5 from finite difference method is -0.25\n",
+ "the value of y from exact soln at x=.5 is -0.25\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "\n",
+ "#finite difference method\n",
+ "#given d2y_by_dx2-2=0 hence it is dirichlet's problem\n",
+ "\n",
+ "x_1=0 ; y_1=0 #initial boundary conditions\n",
+ "x_3=1 ; y_3=0\n",
+ "\n",
+ "delta_x=.5 #since we have to find y_2 at x=.5 so x_2=.5 \n",
+ "#in the central difference method substituting i=2 we have\n",
+ "#(y_3-2*y_2+y_1)/(delta_x)**2=2\n",
+ "#since y_1 & y_3=0 as per B.C.\n",
+ "y_2=(y_3+y_1-2*delta_x**2)/2\n",
+ "print \"the value of y at x=.5 from finite difference method is\",y_2\n",
+ "x=.5\n",
+ "y_exact=x**2-x\n",
+ "print \"the value of y from exact soln at x=.5 is\",y_exact"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 5.2 Page 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "to solve this problem we will take delta x=.5 since we have to find the value at x=.5\n",
+ "the value of y at x=.5 is -0.25\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "#boundary conditions are: x=0 at y=0# dy/dx=1 at x=1\n",
+ "print \"to solve this problem we will take delta x=.5 since we have to find the value at x=.5\"\n",
+ "delta_x=.5\n",
+ "y_1=0\n",
+ "#using central difference eqn\n",
+ "dy_by_dx=1 #at x=1, i=3\n",
+ "#y_4=dy/dx*2*delta_x+y_2 sincefrom B.C. at node 3\n",
+ "\n",
+ "#y_2=delta_x**2+y_3-delta_x on substituting the value of y_4\n",
+ "y_3=-(2*delta_x**2+2*(delta_x**2-delta_x)-y_1) #on substituting the value of y_2\n",
+ "y_2=delta_x**2+y_3-delta_x\n",
+ "print \"the value of y at x=.5 is\",y_2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 5.3 Page 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " the solution of eg 5.3 -->Discretization in 1-D space\n",
+ "the value of y at x= 0.333333333333 0.666666666667 is respectively 0.111111111111 -0.222222222222\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange\n",
+ "print \"the solution of eg 5.3 -->Discretization in 1-D space\"\n",
+ "#given the source term f(x)=4x**2-2x-4\n",
+ "#given eqn d2y/dx2-2y=f(x)\n",
+ "y_1=0\n",
+ "y_4=-1\n",
+ "delta_x=1/3 #since given 3 parts and length=1\n",
+ "for i in range(0,4):\n",
+ " j=arange(0,1+delta_x,delta_x)\n",
+ "\n",
+ "#given to divide the line in 3 parts\n",
+ "#at node 2\n",
+ "#y_3-2*y_2\n",
+ "def fx3(x):\n",
+ " d=(4*x**2-2*x-4)\n",
+ " return d\n",
+ "f2=fx3(j[1])\n",
+ "f3=fx3(j[2])\n",
+ "y_3=((f2)*delta_x**2+(2+2*delta_x**2)*((f3)*delta_x**2-y_4)-y_1)/(1-(2+2*delta_x**2)**2)\n",
+ "y_2=(f3+2*y_3)*delta_x**2+2*y_3-y_4\n",
+ "print \"the value of y at x=\",j[1],j[2],\"is respectively\",y_2,y_3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ " ## Exa 5.4 Page 90"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the exact analytical soln are\n",
+ "0.111111111111\n",
+ "-0.222222222222\n",
+ "-1.0\n",
+ "the value of f(x) at node 2 3 and 4 are -4.22222222222 -3.55555555556 -2.0\n",
+ "the values of y2, y3, y4 by TDMA method are\n",
+ "0.111111111111\n",
+ "-0.222222222222\n",
+ "-1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,zeros\n",
+ "y_1=0\n",
+ "dy_by_dx=-3 #at x=1\n",
+ "delta_x=1/3 #since given 3 parts and length=1\n",
+ "for i in range(0,4):\n",
+ " j=arange(0,1+delta_x,delta_x)\n",
+ "\n",
+ "#given to divide the line in 3 parts\n",
+ "def fx3(x):\n",
+ " d=(4*x**2-2*x-4)\n",
+ " return d\n",
+ "\n",
+ "f2=fx3(j[1])\n",
+ "f3=fx3(j[2])\n",
+ "f4=fx3(j[3])\n",
+ "print \"the exact analytical soln are\"\n",
+ "y=[]\n",
+ "for i in range(1,4):\n",
+ " y.append(-2*j[i]**2+j[i])\n",
+ " print y[i-1]\n",
+ "\n",
+ "#using B.C.-2 at node 4 we get\n",
+ "#(y_5-y_3)/(2*delta_x)=-3\n",
+ "#eqn at node 2\n",
+ "#-20*y_2+9*y_3=f2\n",
+ "#at node 3\n",
+ "#9*y_2-20*y_3+9*y_4=f3\n",
+ "#at node 4\n",
+ "#18*y_3-20*y_4=16\n",
+ "print \"the value of f(x) at node 2 3 and 4 are\",f2,f3,f4\n",
+ "#now solving the equations using TDMA method \n",
+ "\n",
+ "a=[0,9,18] #sub diagonal assignment\n",
+ "\n",
+ "b=[]\n",
+ "for j in range(1,4):\n",
+ " b.append(-20) #main diagonal assignment\n",
+ "c=[]\n",
+ "for k in range(1,3):\n",
+ " c.append(9) #super diagonal assignment\n",
+ "\n",
+ "d=[f2,f3,16] #given values assignment\n",
+ "\n",
+ "i=1#\n",
+ "n=3#\n",
+ "beta1=[b[i-1]]# #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1#\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "x=zeros(n)\n",
+ "x[-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k# \n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "\n",
+ "print \"the values of y2, y3, y4 by TDMA method are\"\n",
+ "for i in range(1,4):\n",
+ " print x[i-1]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 5.5 Page 91"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the analytical soln are\n",
+ "0.648054273664\n",
+ "0.651297246159\n",
+ "0.661058620401\n",
+ "0.677436091507\n",
+ "0.70059357071\n",
+ "0.730762825846\n",
+ "0.768245800962\n",
+ "0.81341763827\n",
+ "0.8667304327\n",
+ "0.92871775662\n",
+ "the values of y from y1 to y10 by TDMA method are\n",
+ "0.648259699273\n",
+ "0.65150099777\n",
+ "0.661257306244\n",
+ "0.67762618778\n",
+ "0.700771331194\n",
+ "0.730924187921\n",
+ "0.768386286526\n",
+ "0.813532247997\n",
+ "0.866813531948\n",
+ "0.928762951218\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import cosh\n",
+ "from numpy import zeros\n",
+ "delta_x=.1\n",
+ "y_11=1\n",
+ "dy_by_dx_1=0 #dy/dx at x=0\n",
+ "# given eqn d2y/dx2=y\n",
+ "print \"the analytical soln are\"\n",
+ "y_an=[]\n",
+ "for i in range(1,11):\n",
+ " y_an.append(cosh((i-1)/10)/cosh(1))\n",
+ " print y_an[i-1]\n",
+ "\n",
+ "#using central difference method we have \n",
+ "#y(i-1) - (2+delat_x**2)y(i) + y(i+1)=0\n",
+ "#therefore the eqns can be solved using TDMA method\n",
+ "a=[None]\n",
+ "for i in range(2,11):\n",
+ " a.append(1) #sub diagonal assignment\n",
+ "b=[]\n",
+ "for j in range(1,11):\n",
+ " b.append(-2.01) #main diagonal assignment\n",
+ "\n",
+ "c=[2]\n",
+ "for k in range(2,10):\n",
+ " c.append(1) #super diagonal assignment\n",
+ "d=[]\n",
+ "for l in range(1,10):\n",
+ " d.append(0)\n",
+ " #given values assignment\n",
+ "d.append(-1)\n",
+ "i=1#\n",
+ "n=10#\n",
+ "beta1=[b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1#\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "\n",
+ "x=zeros(10)\n",
+ "x[n-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "\n",
+ "print \"the values of y from y1 to y10 by TDMA method are\"\n",
+ "for i in range(1,11):\n",
+ " print x[i-1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 5.6 Page 92"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of T from T2 to T9 by TDMA method are\n",
+ "111.111111111\n",
+ "122.222222222\n",
+ "133.333333333\n",
+ "144.444444444\n",
+ "155.555555556\n",
+ "166.666666667\n",
+ "177.777777778\n",
+ "188.888888889\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "T_1=100 ; T_10=200\n",
+ "delta_x=(T_10-T_1)/9 #since 9 divisions are to be made\n",
+ "#using central difference method we get\n",
+ "#for node 2--> 2*T_2-T_3=100\n",
+ "a=[0]\n",
+ "for i in range(2,9):\n",
+ " a.append(-1) #sub diagonal assignment\n",
+ "b=[]\n",
+ "for j in range(1,9):\n",
+ " b.append(2) #main diagonal assignment\n",
+ "c=[]\n",
+ "for k in range(1,8):\n",
+ " c.append(-1) #super diagonal assignment\n",
+ "\n",
+ "d=[100]\n",
+ "for l in range(2,8):\n",
+ " d.append(0); #given values assignment\n",
+ "\n",
+ "d.append(200)\n",
+ "\n",
+ "\n",
+ "i=1;\n",
+ "n=8;\n",
+ "beta1=[b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]]; #since c7=0\n",
+ "m=i+1;\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "\n",
+ "x=zeros(n) \n",
+ "x[-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i;\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1];\n",
+ "\n",
+ "print \"the values of T from T2 to T9 by TDMA method are\"\n",
+ "for i in range(1,9):\n",
+ " print x[i-1]\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 5.7 Page 93"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of T from T1 to T4 in Celsius by TDMA method are\n",
+ "231.893171899\n",
+ "199.529667042\n",
+ "180.886766374\n",
+ "174.799288605\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import pi,sqrt\n",
+ "from numpy import zeros\n",
+ "dia=.02\n",
+ "l=.05\n",
+ "T_0=320\n",
+ "delta_x=l/4\n",
+ "k=50\n",
+ "h=100\n",
+ "T_surr=20\n",
+ "#B.C--> d(theta)/dx+h(theta)/k=0 at x=0.05\n",
+ "#let m=sqrt(hP/kA)\n",
+ "P=pi*dia\n",
+ "A=pi*dia**2/4\n",
+ "m=sqrt(h*P/(k*A))#\n",
+ "#using central difference method we get \n",
+ "#-theta(i-1)+(2+(m*delta_x**2)*theta(i)+theta(i+1))=0\n",
+ "theta_0=T_0-T_surr\n",
+ "#using B.C. at node 4 we get--> theta(5)=theta(3)-2h*theta(4)*delta_x/k\n",
+ "#now the eqns can be solved using TDMA method\n",
+ "a=[None]\n",
+ "for i in range(2,4):\n",
+ " a.append(-1 ) #sub diagonal assignment\n",
+ "\n",
+ "a.append(-2)\n",
+ "b=[]\n",
+ "for j in range(1,4):\n",
+ " b.append(2.0625)# #main diagonal assignment\n",
+ "\n",
+ "b.append(2.1125)\n",
+ "for k in range(1,4):\n",
+ " c.append(-1) #super diagonal assignment\n",
+ "d=[300]\n",
+ "for l in range(2,5):\n",
+ " d.append(0)\n",
+ " #given values assignment\n",
+ "\n",
+ "i=1#\n",
+ "n=4#\n",
+ "beta1=[b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1-1]-a[j-1]*c[j-2-1]/beta1[j-1-1])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "\n",
+ "x=zeros(n) \n",
+ "x[n-1]=gamma1[n-1]# #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k#\n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "\n",
+ "print \"the values of T from T1 to T4 in Celsius by TDMA method are\"\n",
+ "for i in range(1,5):\n",
+ " print x[i-1]-T_surr\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 5.8 Page 94"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of conc. at x=.5mm or at the 50th node is 0.730764441227\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import pi,sqrt\n",
+ "from numpy import zeros\n",
+ "\n",
+ "lnght=.001\n",
+ "k_const=.001\n",
+ "D=10**-9\n",
+ "delta_x=l/100\n",
+ "C=1 #in mol/m3\n",
+ "#B.C. are C=1 at x=0\n",
+ "# dC/dx=0 at x=10**-3 since at the end point conc. is const.\n",
+ "#using central difference method we get the following eqns which can be solved using TDMA method\n",
+ "a=[0]\n",
+ "for i in range(2,100):\n",
+ " a.append(1) #sub diagonal assignment\n",
+ "\n",
+ "a.append(2) #since C99=C100 using B.C. \n",
+ "\n",
+ "b=[]\n",
+ "for j in range(1,101):\n",
+ " b.append(-2.0001) #main diagonal assignment\n",
+ "\n",
+ "c=[]\n",
+ "for k in range(1,100):\n",
+ " c.append(1) #super diagonal assignment\n",
+ "\n",
+ "d=[-1]\n",
+ "for l in range(2,101):\n",
+ " d.append(0)\n",
+ " #given values assignment\n",
+ "i=1#\n",
+ "n=100#\n",
+ "beta1 =[b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1#\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "\n",
+ "x=zeros(n) \n",
+ "x[n-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k# \n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "\n",
+ "print \"the values of conc. at x=.5mm or at the 50th node is\",x[49]"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter6_.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter6_.ipynb
new file mode 100644
index 00000000..675b6be7
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter6_.ipynb
@@ -0,0 +1,331 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 6 - Convection-Diffusion Problems"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 6.1 Page 106"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of conc. using CDS method for x=.84 to 1 are\n",
+ "0.000152415790276\n",
+ "0.000457247370828\n",
+ "0.00137174211248\n",
+ "0.00411522633745\n",
+ "0.0123456790123\n",
+ "0.037037037037\n",
+ "0.111111111111\n",
+ "0.333333333333\n",
+ "the values of conc. using CDS/UDS method for x=.84 to 1 are\n",
+ "0.00390625\n",
+ "0.0078125\n",
+ "0.015625\n",
+ "0.03125\n",
+ "0.0625\n",
+ "0.125\n",
+ "0.25\n",
+ "0.5\n",
+ "the analytical soln is\n",
+ "0.000335462627903\n",
+ "0.000911881965555\n",
+ "0.00247875217667\n",
+ "0.00673794699909\n",
+ "0.0183156388887\n",
+ "0.0497870683679\n",
+ "0.135335283237\n",
+ "0.367879441171\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros,exp\n",
+ "#given convective diffusive eqn--> -u*(dc/dx)+D*(d2C/dx2)=0\n",
+ "C_ini=0 #at x=0\n",
+ "C_end=1 #at x=1\n",
+ "\n",
+ "\n",
+ "#using central difference method for both diffusion and convective term \n",
+ "#-u*(C(i+1)-C(i-1))/(2*delta_x) + D*(C(i+1)+C(i-1)-2*C(i))/delta_x**2 = 0\n",
+ "delta_x=1/50\n",
+ "#on solving the given eqns and by using the given boundary eqns we have\n",
+ "Pe=50 #given \n",
+ "Pe_local=50*delta_x #u/D=50 as l=1\n",
+ "alpha=Pe_local-2 #co-eff of C(i+1)\n",
+ "Beta=Pe_local+2 #co-eff of C(i-1)\n",
+ "#multipling with -2*delta_x**2/D we get\n",
+ "#-(Pe_local+2)*C(i-1) + 4*C(i) + (Pe_local-2)*C(i+1)=0\n",
+ "#solving eqns using TDMA method\n",
+ "a=[0]\n",
+ "for i in range(2,50):\n",
+ " a.append(-Beta) #sub diagonal assignment\n",
+ "\n",
+ "b=[]\n",
+ "for j in range(1,50):\n",
+ " b.append(4) #main diagonal assignment\n",
+ "\n",
+ "c=[]\n",
+ "for k in range(1,49):\n",
+ " c.append(alpha) #super diagonal assignment\n",
+ "\n",
+ "d=zeros(49) \n",
+ "d[0]=Beta*C_ini\n",
+ "d[-1]=-alpha*C_end\n",
+ "for l in range(2,49):\n",
+ " d[l-1]=0\n",
+ " #given values assignment\n",
+ "i=1#\n",
+ "n=49#\n",
+ "beta1=[b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1#\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "\n",
+ "x=zeros(n)\n",
+ "x[-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k#\n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "\n",
+ "print \"the values of conc. using CDS method for x=.84 to 1 are\"\n",
+ "for i in range(42,50):\n",
+ " print x[i-1]\n",
+ " \n",
+ "#part (ii) using CDS and UDS method\n",
+ "#multipling with -delta_x**2/D we get\n",
+ "#-(Pe_local+1)*C(i-1) + (Pe_local+2)*C(i)-C(i+1)=0\n",
+ "BEta=Pe_local+2\n",
+ "Gamma=Pe_local+1\n",
+ "a=[0]\n",
+ "for i in range(2,50):\n",
+ " a.append(-Gamma) #sub diagonal assignment\n",
+ "b=[]\n",
+ "for j in range(1,50):\n",
+ " b.append(BEta) #main diagonal assignment\n",
+ "c=[]\n",
+ "for k in range(1,49):\n",
+ " c.append(-1) #super diagonal assignment\n",
+ "\n",
+ "d=zeros(49) \n",
+ "d[0]=Gamma*C_ini\n",
+ "d[-1]=C_end\n",
+ "for l in range(2,49):\n",
+ " d[l-1]=0 #given values assignment\n",
+ "i=1#\n",
+ "n=49#\n",
+ "beta1=[b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1=[d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1#\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "x=zeros(n)\n",
+ "x[-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k# \n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "\n",
+ "print \"the values of conc. using CDS/UDS method for x=.84 to 1 are\"\n",
+ "for i in range(42,50):\n",
+ " print x[i-1]\n",
+ "\n",
+ "print \"the analytical soln is\"\n",
+ "C_an=zeros(50)\n",
+ "for i in range(42,50):\n",
+ " C_an[i-1]=C_ini+((exp(Pe*.02*i)-1)*(C_end-C_ini)/(exp(Pe)-1))\n",
+ " print C_an[i-1] "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 6.2 Page 112"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of conc. using CDS method for x=.84 to 1 are\n",
+ "0.0390184408035\n",
+ "-0.0585276651261\n",
+ "0.0877914937683\n",
+ "-0.131687244573\n",
+ "0.197530862939\n",
+ "-0.296296298329\n",
+ "0.444444443573\n",
+ "-0.666666669281\n",
+ "the values of conc. using CDS/UDS method for x=.84 to 1 are\n",
+ "4.6650738021e-09\n",
+ "5.13158118231e-08\n",
+ "5.64473930054e-07\n",
+ "6.20921323059e-06\n",
+ "6.83013455365e-05\n",
+ "0.000751314800902\n",
+ "0.00826446280992\n",
+ "0.0909090909091\n",
+ "the analytical soln is\n",
+ "1.80485138785e-35\n",
+ "3.97544973591e-31\n",
+ "8.7565107627e-27\n",
+ "1.92874984796e-22\n",
+ "4.24835425529e-18\n",
+ "9.35762296884e-14\n",
+ "2.06115362244e-09\n",
+ "4.53999297625e-05\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros,exp\n",
+ "#given convective diffusive eqn--> -u*(dc/dx)+D*(d2C/dx2)=0\n",
+ "C_ini=0 #at x=0\n",
+ "C_end=1 #at x=1\n",
+ "\n",
+ "#using central difference method for both diffusion and convective term \n",
+ "#-u*(C(i+1)-C(i-1))/(2*delta_x) + D*(C(i+1)+C(i-1)-2*C(i))/delta_x**2 = 0\n",
+ "delta_x=1/50\n",
+ "#on solving the given eqns and by using the given boundary eqns we have\n",
+ "Pe=500 #given \n",
+ "Pe_local=500*delta_x #u/D=50 as l=1\n",
+ "alpha=Pe_local-2 #co-eff of C(i+1)\n",
+ "Beta=Pe_local+2 #co-eff of C(i-1)\n",
+ "#multipling with -2*delta_x**2/D we get\n",
+ "#-(Pe_local+2)*C(i-1) + 4*C(i) + (Pe_local-2)*C(i+1)=0\n",
+ "#solving eqns using TDMA method\n",
+ "a=[0]\n",
+ "for i in range(2,50):\n",
+ " a.append(-Beta) #sub diagonal assignment\n",
+ "b=[]\n",
+ "for j in range(1,50):\n",
+ " b.append(4) #main diagonal assignment\n",
+ "\n",
+ "c=[]\n",
+ "for k in range(1,49):\n",
+ " c.append(alpha)# #super diagonal assignment\n",
+ "\n",
+ "d=zeros(49)\n",
+ "d[0]=Beta*C_ini\n",
+ "d[-1]=-alpha*C_end\n",
+ "for l in range(2,49):\n",
+ " d[l-1]=0 #given values assignment\n",
+ "i=1#\n",
+ "n=49#\n",
+ "beta1=[b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1 = [d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1#\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "\n",
+ "x=zeros(n)\n",
+ "x[-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k# \n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "\n",
+ "print \"the values of conc. using CDS method for x=.84 to 1 are\"\n",
+ "for i in range(42,50):\n",
+ " print x[i-1]\n",
+ " \n",
+ "#part (ii) using CDS and UDS method\n",
+ "#multipling with -delta_x**2/D we get\n",
+ "#-(Pe_local+1)*C(i-1) + (Pe_local+2)*C(i)-C(i+1)=0\n",
+ "BEta=Pe_local+2\n",
+ "Gamma=Pe_local+1\n",
+ "a=[0]\n",
+ "for i in range(2,50):\n",
+ " a.append(-Gamma) #sub diagonal assignment\n",
+ "b=[]\n",
+ "for j in range(1,50):\n",
+ " b.append(BEta) #main diagonal assignment\n",
+ "c=[]\n",
+ "for k in range(1,49):\n",
+ " c.append(-1) #super diagonal assignment\n",
+ "\n",
+ "d=zeros(49)\n",
+ "d[0]=Gamma*C_ini\n",
+ "d[-1]=C_end\n",
+ "for l in range(2,49):\n",
+ " d[l-1]=0 #given values assignment\n",
+ "i=1#\n",
+ "n=49#\n",
+ "beta1 = [b[i-1]] #initial b is equal to beta since a1=0\n",
+ "gamma1 = [d[i-1]/beta1[i-1]] #since c7=0\n",
+ "m=i+1#\n",
+ "for j in range(m,n+1):\n",
+ " beta1.append(b[j-1]-a[j-1]*c[j-2]/beta1[j-2])\n",
+ " gamma1.append((d[j-1]-a[j-1]*gamma1[j-2])/beta1[j-1])\n",
+ "x=zeros(n)\n",
+ "x[-1]=gamma1[n-1] #since c7=0\n",
+ "n1=n-i#\n",
+ "for k in range(1,n1+1):\n",
+ " j=n-k# \n",
+ " x[j-1]=gamma1[j-1]-c[j-1]*x[j]/beta1[j-1]\n",
+ "print \"the values of conc. using CDS/UDS method for x=.84 to 1 are\"\n",
+ "for i in range(42,50):\n",
+ " print x[i-1]\n",
+ "\n",
+ "print \"the analytical soln is\"\n",
+ "C_an=zeros(50)\n",
+ "for i in range(42,50):\n",
+ " C_an[i-1]=C_ini+((exp(Pe*.02*i)-1)*(C_end-C_ini)/(exp(Pe)-1))\n",
+ " print C_an[i-1]\n",
+ " "
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter7.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter7.ipynb
new file mode 100644
index 00000000..61135da4
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter7.ipynb
@@ -0,0 +1,278 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "# Chapter 7 - Tubular Reactor with Axial Dispersion"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 7.1 Page 122"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "First Order Reaction-50 parts - \n",
+ "0.999699990083\n",
+ "3.12062838745e-11\n",
+ "0.000249850053626\n",
+ "8.66524048103e-08\n",
+ "0.000208139054698\n",
+ "7.22363767651e-08\n",
+ "0.000173451600052\n",
+ "6.01978238317e-08\n",
+ "0.0001445450073\n",
+ "5.01655498325e-08\n",
+ "0.000120455845492\n",
+ "4.18052053996e-08\n",
+ "0.000100381265215\n",
+ "3.48381549557e-08\n",
+ "8.36522160046e-05\n",
+ "2.90321989598e-08\n",
+ "6.97111480663e-05\n",
+ "2.41938351073e-08\n",
+ "5.80934301186e-05\n",
+ "2.01618092385e-08\n",
+ "4.84118640498e-05\n",
+ "1.68017410206e-08\n",
+ "4.03437802862e-05\n",
+ "1.40016452881e-08\n",
+ "3.36202837822e-05\n",
+ "1.16681997736e-08\n",
+ "2.80172922214e-05\n",
+ "9.72363484122e-09\n",
+ "2.33480677471e-05\n",
+ "8.10314156079e-09\n",
+ "1.94569933173e-05\n",
+ "6.75271174067e-09\n",
+ "1.62143862631e-05\n",
+ "5.62733792942e-09\n",
+ "1.35121761931e-05\n",
+ "4.6895133967e-09\n",
+ "1.12603031968e-05\n",
+ "3.90798209982e-09\n",
+ "9.38371630679e-06\n",
+ "3.25669697484e-09\n",
+ "7.81987218174e-06\n",
+ "2.71395183372e-09\n",
+ "6.51665064666e-06\n",
+ "2.26165793522e-09\n",
+ "5.43061761928e-06\n",
+ "1.88474111898e-09\n",
+ "4.52557752837e-06\n",
+ "1.57063941036e-09\n",
+ "3.77136697934e-06\n",
+ "1.30953827722e-09\n",
+ "3.14441964484e-06\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "e1=1 ; e2=1 #assumed values\n",
+ "u=1 ; D=10**-4 ; k=1 ; C_a_in=1 ; delta_x=10/50 #given data\n",
+ "cf_ca1_n1=-2*D/delta_x**2-3*u/delta_x-k-2*u**2/D #co-efficient of C-A1 at node 1\n",
+ "cf_ca2_n1=2*D/delta_x**2+u/delta_x\n",
+ "cf_da1_n1=-(2*u**2/D+2*u/delta_x)*C_a_in #right hand side co-efficient\n",
+ "cf_ca1_n2=D/delta_x**2+u/delta_x\n",
+ "cf_ca2_n2=-2*D/delta_x**2-u/delta_x-k\n",
+ "cf_ca3_n2=D/delta_x**2\n",
+ "cf_da1_n2=0\n",
+ "cf_ca2_n3=cf_ca1_n2\n",
+ "cf_ca3_n3=cf_ca2_n2\n",
+ "cf_ca4_n3=cf_ca3_n2\n",
+ "cf_da1_n3=0\n",
+ "cf_ca50_n51=2*D/delta_x**2+u/delta_x #co-efficient of C-A50 at node 51\n",
+ "cf_ca51_n51=-2*D/delta_x**2-u/delta_x-k\n",
+ "cf_da51_n51=0\n",
+ "a=[0]\n",
+ "for i in range(2,51):\n",
+ " a.append(cf_ca1_n2)\n",
+ " \n",
+ "a[49]=cf_ca2_n1\n",
+ "c=[cf_ca2_n1]\n",
+ "for i in range(2,51):\n",
+ " c.append(cf_ca3_n2)\n",
+ "\n",
+ "d=[cf_da1_n1]\n",
+ "for i in range(2,52):\n",
+ " d.append(cf_da1_n2)\n",
+ "x=[]\n",
+ "for i in range(1,52):\n",
+ " x.append(0)\n",
+ "\n",
+ "b=[cf_ca1_n1]\n",
+ "x1=[]\n",
+ "for i in range(2,52):\n",
+ " b.append(cf_ca2_n2)\n",
+ "while e1>1e-6 and e2>1e-6:\n",
+ " for i in range(1,52):\n",
+ " x1.append(x[i-1])\n",
+ "\n",
+ " i=1 ; n=51 ; Beta=[b[i-1]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1,\n",
+ " for j in range(2,52):\n",
+ " Beta.append(b[j-1-1]-a[j-1-1]*c[j-2-1]/Beta[j-2-1])\n",
+ " Gamma.append((d[j-1]-a[j-1-1]*Gamma[j-2-1])/Beta[j-1-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k ; x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " e1=abs(x[(41)]-x1[(41)]); e2=abs(x[(17)]-x1[(17)])\n",
+ "\n",
+ "print \"First Order Reaction-50 parts - \"\n",
+ "for i in range(1,52):\n",
+ " print x[i-1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 7.2 Page 131"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Second Order Reaction-20 parts\n",
+ "0.999899990007\n",
+ "-99989995.0013\n",
+ "-7.99620241884\n",
+ "-499875443627.0\n",
+ "-3.99760071124\n",
+ "-2.50037661937e+19\n",
+ "-3.99784153685\n",
+ "-1.25099285374e+31\n",
+ "-3.99749207478\n",
+ "-6.26163384772e+46\n",
+ "-3.99765851293\n",
+ "-3.13583861982e+66\n",
+ "-3.99757331924\n",
+ "-1.57118962175e+90\n",
+ "-3.9976154302\n",
+ "-7.87634360632e+117\n",
+ "-3.99759424268\n",
+ "-3.95035153098e+149\n",
+ "-3.99760512762\n",
+ "-1.98227988436e+185\n",
+ "-3.98527206101e-36\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "e1=1 ; e2=1\n",
+ "u=1 ; D=10**-4 ; k=1 ; C_a_in=1 ; delta_x=10/20\n",
+ "cff_ca2_n1=2*D/delta_x**2+u/delta_x #co-efficient of C-A2 at node 1\n",
+ "cff_da1_n1=-(2*u**2/D+2*u/delta_x)*C_a_in #right hand side co-efficient\n",
+ "cff_ca1_n2=D/delta_x**2+u/delta_x\n",
+ "cf_ca1_n2=D/delta_x**2+u/delta_x\n",
+ "cff_ca3_n2=D/delta_x**2 #co-efficient of C-A3 at node 2\n",
+ "cf_ca3_n2=D/delta_x**2\n",
+ "cff_da1_n2=0\n",
+ "cff_ca2_n3=cf_ca1_n2\n",
+ "cff_ca4_n3=cf_ca3_n2\n",
+ "cff_da1_n3=0\n",
+ "cff_ca20_n21=2*D/delta_x**2+u/delta_x #co-efficient of C-A20 at node 21\n",
+ "cff_da21_n21=0\n",
+ "a=[0]\n",
+ "\n",
+ "for i in range(2,21):\n",
+ " a.append(cff_ca1_n2)\n",
+ "\n",
+ "a.append(cff_ca2_n1) ; c=[cff_ca2_n1]\n",
+ "c=[0]\n",
+ "for i in range(2,21):\n",
+ " c.append(cff_ca3_n2)\n",
+ "\n",
+ "d=[cff_da1_n1]\n",
+ "for i in range(2,22):\n",
+ " d.append(cff_da1_n1)\n",
+ " \n",
+ "x=[] ; x1=[]\n",
+ "for i in range(1,22):\n",
+ " x.append(0) \n",
+ "\n",
+ "while e1>1e-6 and e2>1e-6:\n",
+ " for i in range(1,22):\n",
+ " x1.append(x[i-1])\n",
+ " cff_ca1_n1=-2*D/delta_x**2-3*u/delta_x-x1[0]-2*u**2/D # //main diagonal elements dependence on conc.\n",
+ " b=[cff_ca1_n1]\n",
+ " for i in range(2,22):\n",
+ " b.append(-2*D/delta_x**2-u/delta_x-x[i-1])\n",
+ "\n",
+ " #solving by TDMA method\n",
+ " i=1 ; n=21 ; Beta=[b[i-1]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append((b[j-1]-a[j-1]*c[j-2])/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " e1=abs(x[0]-x1[0]) ; e2=abs(x[20]-x1[20])\n",
+ "\n",
+ "print \"Second Order Reaction-20 parts\" \n",
+ "for i in range(1,22):\n",
+ " print x[i-1]\n",
+ " "
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter8.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter8.ipynb
new file mode 100644
index 00000000..66f739dd
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter8.ipynb
@@ -0,0 +1,392 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 8 - Chemical Reaction & Dissusion in a spherical Catalyst Pellet"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 8.1 Page 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the solution by TDMA of node 77 to 99 by 1st order rxn. is 1\n",
+ "2.11327608271e-05\n",
+ "-6.97708390547e-06\n",
+ "-6.19992402138e-05\n",
+ "2.04759969916e-05\n",
+ "0.000182009868277\n",
+ "-6.01295131167e-05\n",
+ "-0.000534648505839\n",
+ "0.000176680552708\n",
+ "0.0015714263084\n",
+ "-0.000519440824961\n",
+ "-0.00462125771268\n",
+ "0.00152798240852\n",
+ "0.0135974017665\n",
+ "-0.00449702200409\n",
+ "-0.0400286588926\n",
+ "0.0132417745751\n",
+ "0.117895160831\n",
+ "-0.0390097044184\n",
+ "-0.34739360391\n",
+ "0.114972976752\n",
+ "1.02409485606\n",
+ "-0.339006034307\n",
+ "-3.02025227398\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "x=[];x1=[]\n",
+ "for i in range(1,101):\n",
+ " x.append(0)\n",
+ "\n",
+ "Iter=0 ; e1=1 ; f=1\n",
+ "a=[0]\n",
+ "while e1>1e-6 and f>1e-6:\n",
+ " Iter=Iter+1\n",
+ " for i in range(1,101):\n",
+ " x1.append(x[i-1])\n",
+ " for i in range(2,101):\n",
+ " a.append(1-(1/(i-1)))\n",
+ " b=[-6.01]\n",
+ " for i in range(2,101):\n",
+ " b.append(-2.01)\n",
+ " c=[6]\n",
+ " for i in range(2,100):\n",
+ " c.append(1+(1/(i-1)))\n",
+ " #for i=1:99,d(i)=0, end, d(100)=-100/99,\n",
+ " d=zeros(100)\n",
+ " d[99]=-100/99\n",
+ " i=1 ; n=100 ; Beta = [b[i-1]]\n",
+ " Gamma = [d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append((b[j-1]-a[j-1]*c[j-2])/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " e1=abs(x[0]-x1[0])\n",
+ " f=abs(x[99]-x1[99])\n",
+ "\n",
+ "print \"the solution by TDMA of node 77 to 99 by 1st order rxn. is\",Iter\n",
+ "for i in range(78,101):\n",
+ " print x[i-1]\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 8.2 Page 162"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the solution by TDMA of node 77 to 99 by 2nd order rxn. is\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "-0.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "x=zeros(100)\n",
+ "Iter=0 ; e1=1 ; f=1\n",
+ "k=.1 ; D=10**-9 ; r=.01 ; delta_r=r/10 ; t1=k*delta_r**2/D\n",
+ "x1=[]; a=[0] ; b=[0] ;d=[0]\n",
+ "while e1>1e-6 and f>1e-6:\n",
+ " Iter=Iter+1\n",
+ " for i in range(1,101):\n",
+ " x1.append(x[i-1])\n",
+ " for i in range(2,101):\n",
+ " a.append(1-(1/(i-1)))\n",
+ " b=[-6-t1*x1[0]]\n",
+ " for i in range(2,101):\n",
+ " b.append(-2-t1*x1[i-1])\n",
+ " c=[6]\n",
+ " for i in range(2,100):\n",
+ " c.append(1+(1/(i-1)))\n",
+ " for i in range(1,100):\n",
+ " d.append(0)\n",
+ " d.append(-100/99)\n",
+ " i=1 ; n=100 ; Beta=[b[i-1]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[j-1]-a[j-1]*c[j-2]/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j-1]/Beta[j-1]\n",
+ " e1=abs(x[0]-x1[0])\n",
+ " f=abs(x[99]-x1[99])\n",
+ "\n",
+ "print \"the solution by TDMA of node 77 to 99 by 2nd order rxn. is\"\n",
+ "for i in range(77,101):\n",
+ " print x[i-1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 8.3 Page 163"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the solution by TDMA of node 77 to 100 by 1st order rxn. is\n",
+ "0.0604887704253\n",
+ "0.0678168756519\n",
+ "0.0760392035241\n",
+ "0.0852643022272\n",
+ "0.095613536562\n",
+ "0.107222479921\n",
+ "0.120242419314\n",
+ "0.134841969734\n",
+ "0.151208788326\n",
+ "0.169551370725\n",
+ "0.190100900502\n",
+ "0.213113107034\n",
+ "0.238870065591\n",
+ "0.26768184402\n",
+ "0.299887860369\n",
+ "0.335857761202\n",
+ "0.375991556122\n",
+ "0.420718642949\n",
+ "0.470495220437\n",
+ "0.525799398375\n",
+ "0.587123060992\n",
+ "0.654959197343\n",
+ "0.729782956961\n",
+ "0.812024100415\n",
+ "0.902027799616\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros,exp\n",
+ "x=zeros(100) ; x1=zeros(100); a=zeros(100) ; #initial values\n",
+ "\n",
+ "e2=1 ; f1=1 ; Iter=0 #assumed values\n",
+ "k=.1*10**-2 ; D=10**-9 ; r=.01 ; delta_r=r/100 ; t1=k*delta_r**2/D #given data\n",
+ "#now solving the eqns for all the nodes and then simplifying we get the following relations\n",
+ "d=[]\n",
+ "while e2>1e-6 and f1>1e-6:\n",
+ " Iter=Iter+1\n",
+ " for i in range(1,101):\n",
+ " x1[i-1]=x[i-1]\n",
+ " \n",
+ " for i in range(2,101):\n",
+ " a[i-1]=1-(1/(i-1))\n",
+ " b=[-6-t1*exp((1-x1[0])/(2-x1[0]))]\n",
+ " for i in range(2,101):\n",
+ " b.append(-2-t1*exp((1-x[i-1])/(2-x[i-1])))\n",
+ " c=[6]\n",
+ " for i in range(2,100):\n",
+ " c.append(1+(1/(i-1)))\n",
+ " for i in range(1,100):\n",
+ " d.append(0)\n",
+ " d.append(-100/99)\n",
+ " i=1 ; n=100 ; Beta = [b[i-1]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[j-1]-a[j-1]*c[j-2]/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n) \n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " e2=abs(x[0]-x1[0])\n",
+ " f1=abs(x[99]-x1[99])\n",
+ "\n",
+ "print \"the solution by TDMA of node 77 to 100 by 1st order rxn. is\"\n",
+ "for i in range(76,101):\n",
+ " print x[i-1]\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 8.4 Page 164"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the solution by TDMA of node 77 to 99 by 1st order rxn. is\n",
+ "0.0274150220283\n",
+ "0.0316615335985\n",
+ "0.0365714178414\n",
+ "0.0422488399165\n",
+ "0.0488143356681\n",
+ "0.0564073663768\n",
+ "0.0651892620654\n",
+ "0.0753466078611\n",
+ "0.087095133412\n",
+ "0.100684170249\n",
+ "0.116401745411\n",
+ "0.134580380148\n",
+ "0.155603657639\n",
+ "0.179913609207\n",
+ "0.208018937265\n",
+ "0.240504032341\n",
+ "0.278038627503\n",
+ "0.321387721808\n",
+ "0.371421006027\n",
+ "0.429120250921\n",
+ "0.495581544008\n",
+ "0.572005825625\n",
+ "0.659662934735\n",
+ "0.759791838019\n",
+ "0.873325342972\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros,exp\n",
+ "x=zeros(100);x=zeros(100)\n",
+ "Iter=0 ; e1=1 ; f1=1\n",
+ "while e1>1e-6 and f1>1e-6:\n",
+ " Iter=Iter+1\n",
+ " for i in range(1,101):\n",
+ " x1[i-1]=x[i-1]\n",
+ " for i in range(2,101):\n",
+ " a[i-1]=1-(1/(i-1))\n",
+ " b=[-6-.01*exp((10-10*x1[0])/(11-10*x1[0]))]\n",
+ " for i in range(2,101):\n",
+ " b.append(-2-.01*exp((10-10*x1[i-1])/(11-10*x1[i-1])))\n",
+ " c=[6]; d= []\n",
+ " for i in range(2,100):\n",
+ " c.append(1+(1/(i-1)))\n",
+ " for i in range(1,100):\n",
+ " d.append(0)\n",
+ " d.append(-100/99)\n",
+ " i=1 ; n=100 ; \n",
+ " Beta=[b[i-1]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[j-1]-a[j-1]*c[j-2]/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " e1=abs(x[0]-x1[0])\n",
+ " f1=abs(x[99]-x1[99])\n",
+ "\n",
+ "print \"the solution by TDMA of node 77 to 99 by 1st order rxn. is\"\n",
+ "for i in range(76,101):\n",
+ " print x[i-1]"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter9.ipynb b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter9.ipynb
new file mode 100644
index 00000000..a61b49d1
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/chapter9.ipynb
@@ -0,0 +1,463 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 9 - One Dimensional Transient Heat Conduction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 9.1 Page 174"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the values of Temp measured from centre at the gap of .2 cm are\n",
+ "31.914893617\n",
+ "37.8723404255\n",
+ "61.7021276596\n",
+ "127.234042553\n",
+ "-----------------\n",
+ "----------END---------\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import arange,zeros\n",
+ "print \"the values of Temp measured from centre at the gap of .2 cm are\"\n",
+ "alpha=10**-5 ; delta_t=.1 ; delta_x=10**-3 #given data\n",
+ "m=alpha*delta_t/(delta_x**2)\n",
+ "a=[0]\n",
+ "for i in range(2,5):\n",
+ " a.append(m) #sub-diagonal\n",
+ "\n",
+ "b=[(-2*m-1)/2]\n",
+ "for i in range(2,5):\n",
+ " b.append(-2*m-1) #diagonal\n",
+ "c=[]\n",
+ "for i in range(1,4):\n",
+ " c.append(m) #super-diagonal\n",
+ "x=[]\n",
+ "for i in range(1,5):\n",
+ " x.append(20) #initial temperature\n",
+ "y=[]\n",
+ "for t in arange(0.1,3.2,.1):\n",
+ " for i in range(1,5):\n",
+ " y.append(x[i-1])\n",
+ " #TDMA method\n",
+ " d=[-.5*y[0],\n",
+ " -y[1],\n",
+ " -y[2],\n",
+ " -y[3]-300]\n",
+ " i=1 ; n=4\n",
+ " Beta=[b[i-1]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[j-1]-a[j-1]*c[j-2]/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ "for i in range(1,5):\n",
+ " print x[i-1] #solution of temperature\n",
+ "\n",
+ "print \"-----------------\"\n",
+ "\n",
+ "print \"----------END---------\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 9.2 Page 175"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "time when centre temp is 425 K in secs. is\n",
+ "2860\n",
+ "the values of temp. at req. time is\n",
+ "415.830778173\n",
+ "409.161921067\n",
+ "407.289372709\n",
+ "412.10629054\n",
+ "424.920334418\n",
+ "446.302352324\n",
+ "475.988566837\n",
+ "512.861107143\n",
+ "555.026826929\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros\n",
+ "delta_t=1 ; delta_x=.05 ; alpha=10**-5\n",
+ "t1=alpha*delta_t/delta_x**2\n",
+ "a=[0]\n",
+ "for i in range(2,10):\n",
+ " a.append(-t1)\n",
+ "\n",
+ "b=[]\n",
+ "for i in range(1,10):\n",
+ " b.append(1+2*t1)\n",
+ "\n",
+ "c=[]\n",
+ "for i in range(1,9):\n",
+ " c.append(-t1)\n",
+ "\n",
+ "\n",
+ "t=1 ; tf=3000\n",
+ "x=[]\n",
+ "for i in range(1,10):\n",
+ " x.append(300)\n",
+ "\n",
+ "e1=425\n",
+ "print \"time when centre temp is 425 K in secs. is\"\n",
+ "y=zeros(10)\n",
+ "for t in range(1,tf+1):\n",
+ " for i in range(1,10):\n",
+ " y[i-1]=x[i-1]\n",
+ " d=zeros(9)\n",
+ " d[0]=y[0]+1.7\n",
+ " d[8]=y[8]+2.4\n",
+ " \n",
+ " for i in range(2,9):\n",
+ " d[i-1]=y[i-1]\n",
+ " \n",
+ " i=1 ; n=9\n",
+ " Beta=[b[i]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " \n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[j-1]-a[j-1]*c[j-2]/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " if abs(x[4]-e1)>0 and abs(x[4]-e1)<.1:\n",
+ " print t\n",
+ " break\n",
+ " \n",
+ "\n",
+ "print \"the values of temp. at req. time is\"\n",
+ "for i in range(1,10):\n",
+ " print x[i-1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 9.3 Page 176"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "T1,T2,T2 & T4 at time interval of .1 sec is\n",
+ "145.908706385 81.3038645321 55.3676141531 48.2940913225\n",
+ "--------------------\n",
+ "203.484090902 137.507282499 102.483825782 91.6458788902\n",
+ "--------------------\n",
+ "234.561182928 180.311474047 146.967547978 135.90321416\n",
+ "--------------------\n",
+ "253.657260062 211.777427681 183.93231189 174.326492344\n",
+ "--------------------\n",
+ "266.42505656 234.835425713 212.930038344 205.209329144\n",
+ "--------------------\n",
+ "275.387525045 251.785736583 235.049836974 229.081735408\n",
+ "--------------------\n",
+ "281.845998761 264.286279996 251.687473273 247.1663257\n",
+ "--------------------\n",
+ "286.564174449 273.5252396 264.112294324 260.723100599\n",
+ "--------------------\n",
+ "290.035348701 280.36239094 273.35699646 270.830217288\n",
+ "--------------------\n",
+ "292.598329474 285.425737959 280.222548126 278.344081958\n",
+ "--------------------\n",
+ "294.494232563 289.176912624 285.316278945 283.921839548\n",
+ "--------------------\n",
+ "295.898007646 291.956531063 289.093561344 288.059216985\n",
+ "--------------------\n",
+ "296.937902328 294.016445785 291.893904508 291.126967003\n",
+ "--------------------\n",
+ "297.708431547 295.543088011 293.969705086 293.40115747\n",
+ "--------------------\n",
+ "298.279442258 296.674544089 295.50832191 295.086889022\n",
+ "--------------------\n",
+ "298.702624888 297.513124139 296.648729623 296.336361503\n",
+ "--------------------\n",
+ "299.01626097 298.134643482 297.49397346 297.262451069\n",
+ "--------------------\n",
+ "299.248712123 298.595288596 298.12044287 297.94884451\n",
+ "--------------------\n",
+ "299.420994656 298.936700895 298.584761024 298.457577721\n",
+ "--------------------\n",
+ "299.548683446 299.189742715 298.928897257 298.83463335\n",
+ "--------------------\n",
+ "299.643321393 299.377287795 299.183958571 299.114093527\n",
+ "--------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros,arange\n",
+ "delta_t=.1 ; delta_r=.001 ;alpha=10**-5 #given data\n",
+ "t1=alpha*delta_t/delta_r**2\n",
+ "a=[0,\n",
+ ".5*t1,.75*t1,.833*t1] #sub-diagonal\n",
+ "b=[-4*t1-1]\n",
+ "for i in range(2,5):\n",
+ " b.append(-2*t1-1) #main diagonal\n",
+ "\n",
+ "c=[4*t1,1.5*t1,1.25*t1] #super-diagonal\n",
+ "x=[]\n",
+ "for i in range(1,5):\n",
+ " x.append(20)\n",
+ "\n",
+ "print \"T1,T2,T2 & T4 at time interval of .1 sec is\"\n",
+ "y=zeros(5)\n",
+ "d=zeros(5)\n",
+ "for t in arange(.1,2.2,.1):\n",
+ " for i in range(1,5):\n",
+ " y[i-1]=x[i-1] #TDMA Method\n",
+ " \n",
+ " d[3]=-y[3]-7*t1*300/6\n",
+ " for i in range(1,4):\n",
+ " d[i-1]=-y[i-1]\n",
+ " \n",
+ " i=1 ; n=4\n",
+ " Beta=[b[i-1]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[j-1]-a[j-1]*c[j-2]/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " print x[3],x[2],x[1],x[0]\n",
+ " print \"--------------------\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 9.4 Page 178"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "T1,T2,T2 & T4 at time interval of .1 sec is\n",
+ "257.170280019 171.439218947 42.8591053357 85.7098332796\n",
+ "-------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import zeros,arange\n",
+ "delta_t=.1 ; delta_r=.001 ; alpha=10**-5\n",
+ "t1=alpha*delta_t/delta_r**2\n",
+ "\n",
+ "a=[0,0,.5,.667]\n",
+ "b=[-7*t1]\n",
+ "for i in range(2,):\n",
+ " b.append(-3)\n",
+ "\n",
+ "x=[6,2,1.5]\n",
+ "x=[]\n",
+ "for i in range(1,5):\n",
+ " x.append(20)\n",
+ "\n",
+ "print \"T1,T2,T2 & T4 at time interval of .1 sec is\"\n",
+ "y=zeros(4) ; d=zeros(4)\n",
+ "for t in arange(.1,1.5,.1):\n",
+ " for i in range(1,5):\n",
+ " y[i-1]=x[i-1]\n",
+ " \n",
+ " d[3]=-y[3]-400\n",
+ " for i in range(1,4):\n",
+ " d[i-1]=-y[i-1]\n",
+ " \n",
+ " i=1 ; n=4\n",
+ " Beta=[b[i]]\n",
+ " Gamma=[d[i-1]/Beta[i-1]]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta.append(b[j-2]-a[j-1]*c[j-2]/Beta[j-2])\n",
+ " Gamma.append((d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1])\n",
+ " x=zeros(n)\n",
+ " x[-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ "print x[3],x[2],x[1],x[0]\n",
+ "print \"-------------------\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Exa 9.5 Page 184"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the initial conc. of drug is 69.0789433935\n",
+ "Conc. at centre at t=3hr, 12 hr, 24 hr,48 hr is\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n",
+ "0.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import pi\n",
+ "from numpy import arange,zeros\n",
+ "R=.326 ; D=3*10^-7\n",
+ "delta_t=1 ; delta_r=.0326 ; conc_ini=10/(1.33*pi*R**3)\n",
+ "t1=D*delta_t/delta_r**2\n",
+ "print \"the initial conc. of drug is\",conc_ini\n",
+ "a=[0]\n",
+ "for i in range(2,11):\n",
+ " a.append(-(1-1/(i-1)))\n",
+ "\n",
+ "b=[591.4]\n",
+ "for i in range(2,11):\n",
+ " b.append(3544.5)\n",
+ "\n",
+ "c=[-1]\n",
+ "for i in range(2,10):\n",
+ " c.append(-(1+1/(i-1)))\n",
+ "x=[]\n",
+ "for i in range(1,11):\n",
+ " x.append(conc_ini)\n",
+ "#y=[]\n",
+ "y=zeros(10)\n",
+ "d=zeros(10)\n",
+ "Beta=zeros(10)\n",
+ "Gamma=zeros(10)\n",
+ "x=zeros(10)\n",
+ "print \"Conc. at centre at t=3hr, 12 hr, 24 hr,48 hr is\"\n",
+ "for t in arange(1,172800+delta_t,delta_t):\n",
+ " for i in range(1,11):\n",
+ " y[i-1]=x[i-1]\n",
+ " d[0]=y[0]*590.4\n",
+ " for i in range(2,11):\n",
+ " d[i-1]=3542.5*y[i-1]\n",
+ " \n",
+ " i=1 ; n=10\n",
+ " Beta[i-1]=b[i-1]\n",
+ " Gamma[i-1]=d[i-1]/Beta[i-1]\n",
+ " i1=i+1\n",
+ " for j in range(i1,n+1):\n",
+ " Beta[j-1]=b[j-1]-a[j-1]*c[j-2]/Beta[j-2]\n",
+ " Gamma[j-1]=(d[j-1]-a[j-1]*Gamma[j-2])/Beta[j-1]\n",
+ " \n",
+ " x[n-1]=Gamma[n-1]\n",
+ " n1=n-i\n",
+ " for k in range(1,n1+1):\n",
+ " j=n-k\n",
+ " x[j-1]=Gamma[j-1]-c[j-1]*x[j]/Beta[j-1]\n",
+ " \n",
+ " if t==10800 or t==43200 or t==86400 or t==172800:\n",
+ " print x[5]\n",
+ " "
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/gauss_elimination_method.png b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/gauss_elimination_method.png
new file mode 100644
index 00000000..21a2415e
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/gauss_elimination_method.png
Binary files differ
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/solution_by_tdma_method.png b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/solution_by_tdma_method.png
new file mode 100644
index 00000000..4843f486
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/solution_by_tdma_method.png
Binary files differ
diff --git a/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/valueofx123.png b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/valueofx123.png
new file mode 100644
index 00000000..890680e6
--- /dev/null
+++ b/Introduction_To_Numerical_Methods_In_Chemical_Engineering_by_P._Ahuja/screenshots/valueofx123.png
Binary files differ