diff options
Diffstat (limited to 'Numerical_Methods_by_E._Balaguruswamy/chapter8.ipynb')
-rw-r--r-- | Numerical_Methods_by_E._Balaguruswamy/chapter8.ipynb | 317 |
1 files changed, 317 insertions, 0 deletions
diff --git a/Numerical_Methods_by_E._Balaguruswamy/chapter8.ipynb b/Numerical_Methods_by_E._Balaguruswamy/chapter8.ipynb new file mode 100644 index 00000000..12e74ff2 --- /dev/null +++ b/Numerical_Methods_by_E._Balaguruswamy/chapter8.ipynb @@ -0,0 +1,317 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 - Iterative solutions of linear equations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example No. 8_01 Page No. 254" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x1 = (5 - x2 - x3)/2 \n", + "x2 = (15 - 3x1 - 2x3)/5 \n", + "x3 = (8 - 2x1 - x2)/4\n", + "\n", + " Iteration Number : 1\n", + "\n", + " \n", + " x1 = 2.500000\n", + " x2 = 3.000000\n", + " x3 = 2.000000\n", + "\n", + "\n", + " Iteration Number : 2\n", + "\n", + " \n", + " x1 = 0.000000\n", + " x2 = 0.700000\n", + " x3 = 0.000000\n", + "\n", + "\n", + " Iteration Number : 3\n", + "\n", + " \n", + " x1 = 2.150000\n", + " x2 = 3.000000\n", + " x3 = 1.825000\n", + "\n", + "\n", + " Iteration Number : 4\n", + "\n", + " \n", + " x1 = 0.087500\n", + " x2 = 0.980000\n", + " x3 = 0.175000\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import mat\n", + "#Gauss Jacobi\n", + "\n", + "A = mat([[ 2, 1 , 1] ,[3, 5, 2],[2, 1, 4]])\n", + "B = mat([[ 5],[ 15],[ 8]])\n", + "x1old = 0 ;x2old = 0 ; x3old = 0 #intial assumption of x1,x2 & x3\n", + "\n", + "print 'x1 = (5 - x2 - x3)/2 '\n", + "print 'x2 = (15 - 3x1 - 2x3)/5 '\n", + "print 'x3 = (8 - 2x1 - x2)/4'\n", + "\n", + "for i in range(1,5):\n", + " print '\\n Iteration Number : %d\\n'%(i)\n", + " \n", + " x1 = (5 - x2old - x3old)/2 #\n", + " x2 = (15 - 3*x1old - 2*x3old)/5 # \n", + " x3 = (8 - 2*x1old - x2old)/4 #\n", + " \n", + " print ' \\n x1 = %f\\n x2 = %f\\n x3 = %f\\n'%(x1,x2,x3)\n", + " \n", + " x1old = x1#\n", + " x2old = x2#\n", + " x3old = x3#\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example No. 8_02 Page No.261" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(x1 = 5 - x2 - x3)/2 \n", + "(x2 = 15 - 3x1 - 2x3)/5 \n", + "(x3 = 8 - 2x1 - x2)/4\n", + "\n", + " Iteration Number : 1\n", + " \n", + " x1 = 2.500000\n", + " x2 = 1.500000\n", + " x3 = 0.375000\n", + "\n", + "\n", + " Iteration Number : 2\n", + " \n", + " x1 = 1.562500\n", + " x2 = 1.912500\n", + " x3 = 0.740625\n", + "\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import mat\n", + "#Gauss Seidel\n", + "\n", + "A = mat([[ 2, 1 , 1] ,[3, 5, 2],[2, 1, 4]])\n", + "B = mat([[ 5],[ 15],[ 8]])\n", + "\n", + "x1old = 0 ;x2old = 0 ; x3old = 0 #intial assumption\n", + "\n", + "print '(x1 = 5 - x2 - x3)/2 '\n", + "print '(x2 = 15 - 3x1 - 2x3)/5 '\n", + "print '(x3 = 8 - 2x1 - x2)/4'\n", + " \n", + "for i in range(1,3):\n", + " \n", + " print '\\n Iteration Number : %d'%(i)\n", + " \n", + " x1 = (5 - x2old - x3old)/2 #\n", + " x1old = x1# \n", + " x2 = (15 - 3*x1old - 2*x3old)/5 #\n", + " x2old = x2# \n", + " x3 = (8 - 2*x1old - x2old)/4 #\n", + " x3old = x3#\n", + " \n", + " print ' \\n x1 = %f\\n x2 = %f\\n x3 = %f\\n'%(x1,x2,x3)\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example No. 8_03 page no. 269" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using a matrix to display the results after each iteration, first row represents initial assumption\n", + "x1 = (5-x2)/3\n", + "x2 = (x1 - 5)/3\n", + "The system converges to the solution ( 1.999949 , -1.000017 ) in 4 iterations\n", + "\n", + "Final Result is as : \n", + "0.0000000000 \t0.0000000000 \t1.9999491947 \t1.00001693509\n", + "-1.1111111111 \t1.6666666667 \t0.3332825281 \t0.111094176023\n", + "-0.9876543210 \t2.0370370370 \t0.0370878423 \t0.0123626141002\n", + "-1.0013717421 \t1.9958847737 \t0.0040644211 \t0.00135480702467\n", + "-0.9998475842 \t2.0004572474 \t0.0005080526 \t0.000169350878084\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from numpy import array,zeros,ones,nditer,vstack,hstack\n", + "\n", + "#Gauss Seidel\n", + "\n", + "\n", + "A = array([[ 3, 1],[ 1 ,-3]])\n", + "B = array([[ 5],[5 ]])\n", + "\n", + "X=zeros([6,2])\n", + "print ('Using a matrix to display the results after each iteration, first row represents initial assumption')\n", + "X[0,0] = 0; X[0,1] = 0 ;#initial assumption\n", + "\n", + "maxit = 1000;#Maximum number of iterations\n", + "err = 0.0003 ;\n", + "\n", + "print('x1 = (5-x2)/3');\n", + "print('x2 = (x1 - 5)/3');\n", + "\n", + "for i in range(1,maxit):\n", + " \n", + " X[i,0] = (5 - X[i-1,1])/3 ;\n", + " X[i,1] = (X[i,0] - 5)/3 ;\n", + " \n", + " #Error Calculations\n", + " err1 =abs((X[i,0] - X[i-1,0])/X[i,0]) \n", + " err2 =abs((X[i,1]- X[i-1,1])/X[i,1])\n", + " \n", + " #Terminating Condition \n", + " if err >= err1 and err >= err2:\n", + " print 'The system converges to the solution ( %f , %f ) in %d iterations\\n'%(X[i,0],X[i,1],i-1) \n", + " break\n", + " \n", + " \n", + "\n", + "#calcution of true error i.e. difference between final result and results from each iteration\n", + "trueerr1 = abs(X[:,0] - X[i,0]*ones([i+1,1])) ;\n", + "trueerr2 = abs(X[:,1] - X[i,1]*ones([i+1,1])) ;\n", + "\n", + "#displaying final results\n", + "print 'Final Result is as : '\n", + "for i in range(0,5):\n", + " print '%.10f'%X[i,:][1],'\\t%.10f'%X[i,:][0],'\\t%.10f'%trueerr1[0,i],'\\t',trueerr2[0,i]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example No. 8_04 Page No.261" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x1 = 5 + 3*x2 \n", + "x2 = 5 - 3*x1 \n", + "\n", + " Iteration : 1 x1 = 5 and x2 = -10\n", + "\n", + "\n", + " Iteration : 2 x1 = -25 and x2 = 80\n", + "\n", + "\n", + " Iteration : 3 x1 = 245 and x2 = -730\n", + "\n", + "It is clear that the process do not converge towards the solution, rather it diverges.\n" + ] + } + ], + "source": [ + "from numpy import mat\n", + "#Gauss Seidel\n", + "\n", + "A = mat([[ 1, -3],[3, 1 ]])\n", + "B = mat([[ 5],[5] ])\n", + "x1old = 0 #intial assumption\n", + "x2old = 0 #intial assumption\n", + "\n", + "print 'x1 = 5 + 3*x2 '\n", + "print 'x2 = 5 - 3*x1 '\n", + " \n", + "for i in range(1,4):\n", + " x1 = 5 + 3*x2old \n", + " x1old = x1\n", + " x2 = 5 - 3*x1old \n", + " x2old = x2\n", + " \n", + " print '\\n Iteration : %d x1 = %d and x2 = %d\\n'%(i,x1,x2)\n", + " \n", + "print 'It is clear that the process do not converge towards the solution, rather it diverges.'" + ] + } + ], + "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 +} |