diff options
Diffstat (limited to 'sample_notebooks/VineshSaini/ch10.ipynb')
-rw-r--r-- | sample_notebooks/VineshSaini/ch10.ipynb | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/sample_notebooks/VineshSaini/ch10.ipynb b/sample_notebooks/VineshSaini/ch10.ipynb new file mode 100644 index 00000000..07f94034 --- /dev/null +++ b/sample_notebooks/VineshSaini/ch10.ipynb @@ -0,0 +1,351 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter10 Elliptical Partial Differential Equations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.1 page 441" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u:\n", + "[[ 0. 0. 0. 0. 0. ]\n", + " [ 0. 6.25 12.5 18.75 25. ]\n", + " [ 0. 12.5 25. 37.5 50. ]\n", + " [ 0. 18.75 37.5 56.25 75. ]\n", + " [ 0. 25. 50. 75. 100. ]]\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import arange,zeros\n", + "from math import ceil\n", + "\n", + "h = 1/4\n", + "xf = 1\n", + "yf = 1\n", + "x = arange(0,h+xf,h)\n", + "y = arange(0,h+yf,h)\n", + "m = len(y)-1\n", + "n = len(x)-1\n", + "\n", + "u = zeros([m+1,n+1])\n", + "u[m,:] = [100*xx for xx in x]\n", + "u[:,n] = [100*yy for yy in y] # dash transpose\n", + "u0 = u\n", + "\n", + "I = int(ceil(m/2)) #\n", + "J = int(ceil(n/2)) #\n", + "\n", + "u[J,I] = (u0[J-2,I-2] + u0[J-2,I+2] + u0[J+2,I-2] + u0[J+2,I+2]) / 4\n", + "\n", + "for j in [J-1,J+1]:\n", + " for i in [I-1,I+1]:\n", + " u[j,i] = (u[j-1,i-1] + u[j-1,i+1] + u[j+1,i-1] + u[j+1,i+1]) / 4\n", + " \n", + "\n", + "# j and i may have loose 1\n", + "j1 = [J-1,J,J,J+1]\n", + "i1 = [I,I-1,I+1,I]\n", + "for k in range(0,4):\n", + " i = i1[(k)]\n", + " j = j1[(k)]\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4\n", + "\n", + "\n", + "print \"u:\\n\",u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.3 page 442" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " r u11 u21 u31 u12 u22 u32 u13 u23 u33\n", + " ------------------------------------------------------------------------------------------------\n", + " 1 6.2500 9.3750 6.2500 18.7500 25.0000 18.7500 43.7500 53.1250 43.7500 \n", + " 1 7.0312 9.5703 7.0801 18.9453 25.0977 18.9819 43.0176 52.9663 42.9871 \n", + " 1 7.1289 9.8267 7.2021 18.8110 25.1465 18.8339 42.9443 52.7695 42.9008 \n" + ] + } + ], + "source": [ + "from numpy import zeros\n", + "m = 5\n", + "n = 5\n", + "u = zeros([m,n])\n", + "u[m-1,:] = [50,100, 100, 100, 50]\n", + "u0 = u\n", + "I = int(ceil(m/2))-1\n", + "J = int(ceil(n/2))-1\n", + "\n", + "u[J,I] = (u0[J-2,I-2] + u0[J-2,I+2] + u0[J+2,I-2] + u0[J+2,I+2]) / 4\n", + "\n", + "for j in [J-1,J+1]:\n", + " for i in [I-1,I+1]:\n", + " u[j,i] = (u[j-1,i-1] + u[j-1,i+1] + u[j+1,i-1] + u[j+1,i+1]) / 4\n", + " \n", + "\n", + "j1 = [J-1, J ,J ,J+1]\n", + "i1 = [I ,I-1, I+1, I]\n", + "for k in range(0,4):\n", + " i = i1[(k)]\n", + " j = j1[(k)]\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4\n", + "\n", + "\n", + "kf = 2\n", + "tab = zeros([kf+1,(m-2)*(n-2)])\n", + "row = []\n", + "for j in range(1,n-1):\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + "\n", + "tab[0,:] = row;\n", + "for k in range(0,kf):\n", + " row = [];\n", + " for j in range(1,n-1):\n", + " for i in range(1,m-1):\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4;\n", + " for xx in u[j,range(1,m-1)]: \n", + " row.append(xx)\n", + " \n", + " row = [round(roww*10**4,4)/10**4 for roww in row]\n", + " tab[k+1,:] = row\n", + "\n", + "print \"%4s %9s %9s %9s %9s %10s %10s %10s %10s %10s\"%('r','u11','u21','u31','u12','u22','u32','u13','u23','u33')\n", + "print ' ','-'*96\n", + "for tabb in tab:\n", + " i=1;\n", + " print ' ',i,' ',\n", + " for tt in tabb:\n", + " print ' %0.4f'%(tt),' ',\n", + " i+=1;\n", + " print" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.4 page 444" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " r u11 u21 u12 u22\n", + " 1 1.3889 1.7670 2.0170 2.6466 \n", + " 2 2.3349 2.6651 2.9151 3.0957 \n", + " 3 2.7840 2.8897 3.1397 3.2079 \n", + " 4 2.8962 2.9458 3.1958 3.2360 \n", + " 5 2.9243 2.9598 3.2098 3.2430 \n" + ] + } + ], + "source": [ + "from numpy import arange\n", + "h = 1/3\n", + "x = arange(0,h+1,h)\n", + "y = arange(0,h+1,h)\n", + "m = len(y)\n", + "n = len(x)\n", + "u = zeros([m,n])\n", + "u[m-1,range(1,n-1)] = 1\n", + "\n", + "kf = 5\n", + "tab = zeros([kf,(m-2)*(n-2)])\n", + "for k in range(0,kf):\n", + " row = []\n", + " for j in range(1,n-1):\n", + " for i in range(1,m-1):\n", + " constant = 10/9* (5 + 1/9*(i-1)**2 + 1/9*(j-1)**2)\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i] + constant) / 4\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + " \n", + " row = [round(roww*10**4)/10**4 for roww in row]\n", + " tab[k,:] = row\n", + "\n", + "print \"%4s %9s %9s %9s %9s\"%('r','u11','u21','u12','u22')\n", + "i=1;\n", + "for tabb in tab:\n", + " \n", + " print ' ',i,' ',\n", + " for tt in tabb:\n", + " print ' %0.4f'%(tt),' ',\n", + " i+=1;\n", + " print" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.5 page 446" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u:\n", + "[[ 0. 0. 0. 0. 0. ]\n", + " [ 0. 4. 8. 12. 16. ]\n", + " [ 0. 6.5 16. 22.5 32. ]\n", + " [ 0. 6. 15. 30. 48. ]\n", + " [ 0. 1. 8. 27. 64. ]]\n", + "\n", + "\n", + "\t u11 u21 u31 u12 u22 u32 u13 u23 u33\n", + " 1 4.0000 8.0000 12.0000 6.5000 16.0000 22.5000 6.0000 15.0000 30.0000 \n", + " 2 3.5605 7.8712 11.5228 6.3712 12.4085 21.3079 5.5228 13.8079 27.1039 \n", + " 3 3.5606 6.7013 10.9128 5.2013 11.6421 20.2611 4.9128 12.7611 26.9886 \n", + " 4 2.8750 6.2983 10.5929 4.7983 10.9244 20.1033 4.5929 12.6033 26.9160 \n", + " 5 2.7568 6.0290 10.5228 4.5290 10.7975 20.0515 4.5228 12.5515 26.8981 \n", + " 6 2.6193 5.9773 10.5045 4.4773 10.7587 20.0384 4.5045 12.5384 26.8935 \n", + " 7 2.6127 5.9675 10.5010 4.4675 10.7520 20.0363 4.5010 12.5363 26.8931 \n", + " 8 2.6081 5.9649 10.5002 4.4649 10.7504 20.0358 4.5002 12.5358 26.8929 \n", + " 9 2.6073 5.9644 10.5000 4.4644 10.7501 20.0357 4.5000 12.5357 26.8929 \n", + " 10 2.6072 5.9643 10.5000 4.4643 10.7500 20.0357 4.5000 12.5357 26.8929 \n", + " 11 2.6072 5.9643 10.5000 4.4643 10.7500 20.0357 4.5000 12.5357 26.8929 \n" + ] + } + ], + "source": [ + "from math import ceil\n", + "from numpy import cos,pi,sqrt,zeros\n", + "x = range(0,5)\n", + "y = range(0,5)\n", + "m = len(y)\n", + "n = len(x)\n", + "u = zeros([m,n])\n", + "u[m-1,:] = [xx**3 for xx in x]\n", + "u[:,n-1] = [16*yy for yy in y]\n", + "u0 = u\n", + "\n", + "I = int(ceil(m/2))-1\n", + "J = int(ceil(n/2))-1\n", + "\n", + "u[J,I] = (u0[J-2,I-2] + u0[J-2,I+2] + u0[J+2,I-2] + u0[J+2,I+2]) / 4\n", + "\n", + "for j in [J-1,J+1]:\n", + " for i in [I-1,I+1]:\n", + " u[j,i] = (u[j-1,i-1] + u[j-1,i+1] + u[j+1,i-1] + u[j+1,i+1]) / 4\n", + " \n", + "\n", + "\n", + "j1 = [J-1,J ,J ,J+1]\n", + "i1 = [I, I-1, I+1, I]\n", + "for k in range(0,4):\n", + " i = i1[(k)]\n", + " j = j1[(k)]\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) / 4\n", + "\n", + "print \"u:\\n\",u\n", + "\n", + "p = m-1\n", + "q = n-1\n", + "c = cos(pi/p) + cos(pi/q)\n", + "w = 4/(2+sqrt(4-c**2))\n", + "w = round(w*10**3)/10**3\n", + "\n", + "kf = 10\n", + "tab = zeros([kf+1,(m-2)*(n-2)])\n", + "row = []\n", + "for j in range(1,n-1):\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + "\n", + "tab[0,:] = row\n", + "for k in range(0,kf):\n", + " row = []\n", + " for j in range(1,n-1):\n", + " for i in range(1,m-1):\n", + " u[j,i] = (u[j,i-1] + u[j,i+1] + u[j-1,i] + u[j+1,i]) *w/4 + (1-w)*u[j,i]\n", + " for xx in u[j,range(1,m-1)]:\n", + " row.append(xx)\n", + " \n", + " row = [round(roww*10**4)/10**4 for roww in row]\n", + " tab[k+1,:] = row\n", + "\n", + "print \"\\n\\n\\t%8s %9s %10s %10s %9s %10s %10s %9s %9s\"%('u11','u21','u31','u12','u22','u32','u13','u23','u33')\n", + "i=1;\n", + "for tabb in tab:\n", + " \n", + " print ' ',i,' ',\n", + " for tt in tabb:\n", + " print ' %0.4f'%(tt),' ',\n", + " i+=1;\n", + " print\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} |