summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrupti Kini2016-05-02 23:30:25 +0600
committerTrupti Kini2016-05-02 23:30:25 +0600
commit09174527d359bd85404d15d76fabd891c7e5ad6b (patch)
tree7f243aba0ba204ce510633f2b32607e2b13fb22f
parenta50c96a8653eda4256bb1e27242273373ad94732 (diff)
downloadPython-Textbook-Companions-09174527d359bd85404d15d76fabd891c7e5ad6b.tar.gz
Python-Textbook-Companions-09174527d359bd85404d15d76fabd891c7e5ad6b.tar.bz2
Python-Textbook-Companions-09174527d359bd85404d15d76fabd891c7e5ad6b.zip
Added(A)/Deleted(D) following books
A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter1.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter10.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter11.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter13.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter14.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter15.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter17.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter18.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter19.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter21.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter22.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter23.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter25.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter26.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter3.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter4.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter5.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter6.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter7.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter9.ipynb A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14PathOfAscent.png A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14RandomNumberGenerator.png A Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch26EulerMethod.png A sample_notebooks/testingtesting/fameetha.ipynb
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter1.ipynb121
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter10.ipynb259
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter11.ipynb303
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter13.ipynb193
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter14.ipynb260
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter15.ipynb358
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter17.ipynb607
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter18.ipynb268
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter19.ipynb268
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter21.ipynb725
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter22.ipynb334
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter23.ipynb271
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter25.ipynb178
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter26.ipynb401
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter3.ipynb382
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter4.ipynb513
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter5.ipynb528
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter6.ipynb686
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter7.ipynb717
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter9.ipynb606
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14PathOfAscent.pngbin0 -> 31554 bytes
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14RandomNumberGenerator.pngbin0 -> 37659 bytes
-rw-r--r--Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch26EulerMethod.pngbin0 -> 21044 bytes
-rw-r--r--sample_notebooks/testingtesting/fameetha.ipynb87
24 files changed, 8065 insertions, 0 deletions
diff --git a/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter1.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter1.ipynb
new file mode 100644
index 00000000..4e34a107
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter1.ipynb
@@ -0,0 +1,121 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# CHAPTER 1 : Mathematical Modeling And Engineering Problem Solving"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 1.1 Pg : 14"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Time(s) = 0\tv(m/s) = 0.00\n",
+ "Time(s) = 2\tv(m/s) = 16.40\n",
+ "Time(s) = 4\tv(m/s) = 27.77\n",
+ "Time(s) = 6\tv(m/s) = 35.64\n",
+ "Time(s) = 8\tv(m/s) = 41.10\n",
+ "Time(s) = 10\tv(m/s) = 44.87\n",
+ "Time(s) = inf\tv(m/s) = 53.39\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange, exp, inf\n",
+ "g=9.8##m/s**2# acceleration due to gravity\n",
+ "m=68.1##kg\n",
+ "c=12.5##kg/sec# drag coefficient\n",
+ "v=[]\n",
+ "j=0\n",
+ "for i in arange(0,12,2):\n",
+ " v.append(g*m*(1-exp(-c*i/m))/c)\n",
+ " print \"Time(s) = %d\\t\"%i,\"v(m/s) = %0.2f\"%v[j]\n",
+ " j+=1\n",
+ "print \"Time(s) = %0.2f\\t\"%inf,\"v(m/s) = %0.2f\"%(g*m/c)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 1.2 Pg :17"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Time(s) = 0\tv(m/s) = 0.00\n",
+ "Time(s) = 2\tv(m/s) = 19.60\n",
+ "Time(s) = 4\tv(m/s) = 12.40\n",
+ "Time(s) = 6\tv(m/s) = 34.65\n",
+ "Time(s) = 8\tv(m/s) = 19.29\n",
+ "Time(s) = 10\tv(m/s) = 47.17\n",
+ "Time(s) = 12\tv(m/s) = 21.57\n",
+ "Time(s) = inf\tv(m/s) = 53.39\t\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange, exp, inf\n",
+ "g=9.8##m/s**2# acceleration due to gravity\n",
+ "m=68.1##kg\n",
+ "c=12.5##kg/sec# drag coefficient\n",
+ "count=0#\n",
+ "v=[]\n",
+ "v.append(0)\n",
+ "print \"Time(s) = %d\\t\"%(0),\"v(m/s) = %0.2f\"%v[0]\n",
+ "\n",
+ "for i in arange(1,13,2):\n",
+ " v.append(v[(count-1)]+(g-c*v[(count)]/m)*(2))\n",
+ " print \"Time(s) = %d\\t\"%(i+1),\"v(m/s) = %0.2f\"%v[(count+1)]\n",
+ " count=count+1#\n",
+ "\n",
+ "print \"Time(s) = %0.2f\\t\"%inf,\"v(m/s) = %0.2f\\t\"%(g*m/c)\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter10.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter10.ipynb
new file mode 100644
index 00000000..54d12f92
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter10.ipynb
@@ -0,0 +1,259 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 10 : LU Decomposition and matrix inverse"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex10.1 Page 277"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A = [[ 3. -0.1 -0.2]\n",
+ " [ 0.1 7. -0.3]\n",
+ " [ 0.3 -0.2 10. ]]\n",
+ "\n",
+ "U = \n",
+ "[[ 3. -0.1 -0.2 ]\n",
+ " [ 0. 7.00333333 -0.29333333]\n",
+ " [ 0. 0. 10.01204188]]\n",
+ "\n",
+ "L calculated based on gauss elimination method = \n",
+ "[[ 1. 0. 0. ]\n",
+ " [ 0.03333333 1. 0. ]\n",
+ " [ 0.1 -0.02712994 1. ]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "from numpy.linalg import det\n",
+ "A = mat([[3,-0.1,-0.2],[0.1,7,-0.3],[0.3,-0.2,10]])\n",
+ "U = A#\n",
+ "print \"A =\",A\n",
+ "m = U[0,0]\n",
+ "n = U[1,0]\n",
+ "a = n/m#\n",
+ "U[1:2] = U[1:2] - U[0:1] / (m/n)#\n",
+ "n = U[2,0]\n",
+ "b = n/m\n",
+ "\n",
+ "U[2:3] = U[2:3] - U[0:1] / (m/n)#\n",
+ "m = U[1,1]\n",
+ "n = U[2,1]\n",
+ "c = n/m#\n",
+ "U[2:3] = U[2:3] - U[1:2] / (m/n)#\n",
+ "print \"\\nU = \\n\",U\n",
+ "L = mat([[1,0,0],[a,1,0],[b,c,1]])\n",
+ "print \"\\nL calculated based on gauss elimination method = \\n\",L"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex10.2 Page 279"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "X = \n",
+ "[[ 3. ]\n",
+ " [-2.5]\n",
+ " [ 7. ]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "A = mat([[3,-0.1,-0.2],[0.1,7,-0.3],[0.3,-0.2,10]])\n",
+ "B = mat([[7.85],[-19.3],[71.4]])\n",
+ "X = (A**-1) * B\n",
+ "print \"X = \\n\",X"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex10.3 Page 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "B=\n",
+ "[[ 0.33248872 0.00494409 0.00679813]\n",
+ " [-0.00518174 0.14290333 0.00418348]\n",
+ " [-0.01007834 0.00270975 0.09988014]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat,array\n",
+ "A = mat([[3,-0.1,-0.2],[0.1,7,-0.3],[0.3,-0.2,10]])\n",
+ "B = (A**-1)\n",
+ "L = mat([[1,0,0],[0.033333,1,0],[0.1,-0.02713,1]])\n",
+ "U = mat([[3,-0.1,-0.2],[0,7.0033,-0.293333],[0,0,10.012]])\n",
+ "for i in range(1,4):\n",
+ " if i==1:\n",
+ " m = mat([[1],[0],[0]])\n",
+ " else:\n",
+ " if i==2:\n",
+ " m = mat([[0],[1],[0]])\n",
+ " else:\n",
+ " m = mat([[0],[0],[1]])\n",
+ " \n",
+ " \n",
+ " d = (L**-1) * m#\n",
+ " x = (U**-1) * d#\n",
+ " B[:,i-1] = x\n",
+ "\n",
+ "print \"B=\\n\",B"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex10.4 Page 291"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "A = \n",
+ "[[ 1. 0.5 0.33333333]\n",
+ " [ 1. 0.66666667 0.5 ]\n",
+ " [ 1. 0.75 0.6 ]]\n",
+ "\n",
+ "Condition number for the matrix =\n",
+ "451.2\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "from __future__ import division\n",
+ "A = mat([[1,1/2,1/3],[1/2,1/3,1/4],[1/3,1/4,1/5]])\n",
+ "n = A[1,0]\n",
+ "A[1,:] = A[1,:]/n\n",
+ "n = A[2,0]\n",
+ "A[2,:] = A[2,:]/n\n",
+ "B = (A**-1)#\n",
+ "print \"A = \\n\",A\n",
+ "\n",
+ "m=range(1,4)\n",
+ "su=range(1,4)\n",
+ "for j in range(1,4):\n",
+ " a = 0#\n",
+ " for i in range(1,4):\n",
+ " m[i-1]= A[j-1,i-1]\n",
+ " su[j-1] = a + m[i-1]#\n",
+ " a = su[j-1]#\n",
+ "\n",
+ "\n",
+ "if su[0]< su[1]:\n",
+ " if su[1]< su[2]:\n",
+ " z = su[2]\n",
+ " else:\n",
+ " z = su[1]\n",
+ " \n",
+ "else:\n",
+ " if su[0] < su[2]:\n",
+ " z = su[2]#\n",
+ " else:\n",
+ " z = su[0]#\n",
+ " \n",
+ "m=range(1,4)\n",
+ "sm=range(1,4)\n",
+ "for j in range(1,4):\n",
+ " a = 0#\n",
+ " for i in range(1,4):\n",
+ " m[i-1]= B[j-1,i-1]\n",
+ " sm[j-1]= a + abs(m[i-1])\n",
+ " a = sm[j-1]#\n",
+ "\n",
+ "\n",
+ "if sm[0]< sm[1]:\n",
+ " if sm[1]< sm[2] :\n",
+ " y = sm[2]\n",
+ " else:\n",
+ " y = sm[1]\n",
+ " \n",
+ "else:\n",
+ " if sm[0]< sm[2]:\n",
+ " y = sm[2]\n",
+ " else:\n",
+ " y = sm[0]#\n",
+ " \n",
+ "\n",
+ "C = z*y#\n",
+ "print \"\\nCondition number for the matrix =\\n\",C\n",
+ "\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter11.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter11.ipynb
new file mode 100644
index 00000000..352fdcac
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter11.ipynb
@@ -0,0 +1,303 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter - 11 : Special Matrices and Gauss-Seidel"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:11.1 Pg: 297"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "T1 = 151.165722019\n",
+ "T2 = 267.578072919\n",
+ "T3 = 236.681195836\n",
+ "T4 = 214.451566586\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "A = mat([[2.04,-1,0,0],[-1,2.04,-1,0],[0,-1,2.04,-1],[0,0,-1,2.04]])\n",
+ "B = mat([[40.8],[0.8],[0.8],[200.8]])\n",
+ "g = A[0,1]\n",
+ "f1 =A[0,0]\n",
+ "e2 = A[1,0]\n",
+ "f2 = A[0,0] - e2 * A[1,0]\n",
+ "e3 = A[1,0]/f2\n",
+ "f3 = A[0,0] - e3 * A[1,0]\n",
+ "e4 = A[1,0]/f3#\n",
+ "f4 = A[0,0] - e4 * A[1,0]\n",
+ "M = mat([[f1,g,0,0],[e2,f2,g,0],[0,e3,f3,g],[0,0,e4,f4]])\n",
+ "L = mat([[1,0,0,0],[M[1,0],1,0,0],[0,M[2,1],1,0],[0,0,M[3,2],1]])\n",
+ "U = mat([[M[0,0],g,0,0],[0,M[1,1],g,0],[0,0,M[2,2],g],[0,0,0,M[3,3]]])\n",
+ "r1 = B[0,0]\n",
+ "r2 = B[1,0] - e2*B[0,0]\n",
+ "r3 = B[2,0] - e3*r2#\n",
+ "r4= B[3,0] - e4*r3# \n",
+ "N = mat([[r1],[r2],[r3],[r4]])\n",
+ "T4 = r4/U[3,3]\n",
+ "T3 = (r3 - g*T4)/U[2,2]\n",
+ "T2 = (r2 - g*T3)/U[1,1]\n",
+ "T1 = (r1 - g*T2)/U[0,0]\n",
+ "print \"T1 = \",T1\n",
+ "print \"T2 = \",T2\n",
+ "print \"T3 = \",T3\n",
+ "print \"T4 = \",T4"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:11.2 Pg: 299"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "L = \n",
+ "[[ 2.44948974 0. 0. ]\n",
+ " [ 6.12372436 4.18330013 0. ]\n",
+ " [ 22.45365598 20.91650066 6.11010093]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat,sqrt\n",
+ "A = mat([[6,15,55],[15,55,225],[55,225,979]])\n",
+ "sl = 0\n",
+ "l11 = sqrt(A[0,0])\n",
+ "#for second row\n",
+ "l21 = (A[1,0])/l11\n",
+ "l22 = (A[1,1] - l21**2)**(0.5)\n",
+ "#for third row\n",
+ "l31 = (A[2,0])/l11#\n",
+ "l32 = (A[2,1] - l21*l31)/l22#\n",
+ "l33 = (A[2,2] - l31**2 - l32**2)**(0.5)#\n",
+ "L = mat([[l11,0,0],[l21,l22,0],[l31,l32,l33]])\n",
+ "print \"\\nL = \\n\",L"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:11.3 Pg: 301"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x through two iterations = [2.6166666666666667]\n",
+ "y through two iterations = [-2.7945238095238096]\n",
+ "z through two iterations = [7.005609523809525]\n",
+ "error of x = 12.50234999 %\n",
+ "error of y = -11.7977361365 %\n",
+ "error of z = -0.075978454143 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "#3x - 0.1y - 0.2z = 7.85\n",
+ "#0.1x + 7y - 0.3z = -19.3\n",
+ "#0.3x - 0.2y + 10z = 71.4\n",
+ "Y = 0# \n",
+ "Z = 0#\n",
+ "x=range(1,3)\n",
+ "y=range(1,3)\n",
+ "z=range(1,3)\n",
+ "for i in range(1,3):\n",
+ " x[i-1]= (7.85 +0.1*Y+0.2*Z)/3#\n",
+ " X = x[i-1]\n",
+ " y[i-1]= (-19.3 - 0.1*X +0.3*Z)/7#\n",
+ " Y = y[i-1]#\n",
+ " z[i-1]= (71.4 - 0.3*X+0.2*Y)/10#\n",
+ " Z = z[i-1]\n",
+ " if i==2:\n",
+ " ex = (x[i-1] - x[(i-2)])*100/x[i-1]\n",
+ " ey = (y[i-1] - y[i-2])*100/y[i-1]\n",
+ " ez = (z[i-1] - z[i-2])*100/z[i-1]\n",
+ " \n",
+ "\n",
+ "print \"x through two iterations =\",x[0:1]\n",
+ "print \"y through two iterations =\",y[0:1]\n",
+ "print \"z through two iterations =\",z[0:1]\n",
+ "print \"error of x = \",ex,\"%\"\n",
+ "print \"error of y = \",ey,\"%\"\n",
+ "print \"error of z = \",ez,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:11.4 Pg: 307"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = 0.999991\n",
+ "y = 1.000044\n",
+ "z = 0.99996\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "\n",
+ "from numpy import mat\n",
+ "A = mat([[1,0.5,1/3],[1,2/3,1/2],[1,3/4,3/5]])\n",
+ "B = mat([[1.833333],[2.166667],[2.35]])\n",
+ "U = A**-1\n",
+ "X = U*B#\n",
+ "x = X[0,0]\n",
+ "y = X[1,0]\n",
+ "z = X[2,0]\n",
+ "print \"x = \",x\n",
+ "print \"y = \",y\n",
+ "print \"z = \",z"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:11.5 Pg: 309"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = 0.999991\n",
+ "y = 1.000044\n",
+ "z = 0.99996\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from numpy import mat\n",
+ "A = mat([[1,0.5,1/3],[1,2/3,1/2],[1,3/4,3/5]])\n",
+ "B = mat([[1.833333],[2.166667],[2.35]])\n",
+ "U = A**-1\n",
+ "X = U*B#\n",
+ "x = X[0,0]\n",
+ "y = X[1,0]\n",
+ "z = X[2,0]\n",
+ "print \"x = \",x\n",
+ "print \"y = \",y\n",
+ "print \"z = \",z"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:11.6 Pg: 310"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = 0.999999\n",
+ "y = 1.000008\n",
+ "z = 0.99999\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "A = mat([[1,0.5,1/3],[1/2,1/3,1/4],[1/3,1/4,1/5]])\n",
+ "B = mat([[1.833333],[1.083333],[0.783333]])\n",
+ "U = A**-1\n",
+ "X = U*B#\n",
+ "x = X[0,0]\n",
+ "y = X[1,0]\n",
+ "z = X[2,0]\n",
+ "print \"x = \",x\n",
+ "print \"y = \",y\n",
+ "print \"z = \",z"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter13.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter13.ipynb
new file mode 100644
index 00000000..c37c77de
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter13.ipynb
@@ -0,0 +1,193 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter - 13 : One-Dimensional Unconstrained Optimization"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:13.1 Pg: 356"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "xl = [0, 0, 0, 0, 0, 0.9442719099991588, 0.9442719099991588, 0.9442719099991588, 0.9442719099991588, 0.9442719099991588, 0.9442719099991588]\n",
+ "\n",
+ "x2 = [1.5278640450004204, 1.5278640450004204, 0.0, 0.9442719099991588, 0.9442719099991588, 0.9442719099991588, 0.9442719099991588, 1.5278640450004206, 1.5278640450004206, 1.5278640450004206]\n",
+ "\n",
+ "x1 = [2.4721359549995796, 2.4721359549995796, 2.4721359549995796, 1.5278640450004208, 1.5278640450004208, 1.5278640450004208, 2.4721359549995796, 1.8885438199983178, 1.8885438199983178, 1.8885438199983178]\n",
+ "\n",
+ "xu = [4, 2.4721359549995796, 2.4721359549995796, 2.4721359549995796, 2.4721359549995796, 2.4721359549995796, 2.4721359549995796, 2.4721359549995796, 2.4721359549995796, 1.8885438199983178, 1.8885438199983178]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sin\n",
+ "#f(x) = 2sinx - x**2/10\n",
+ "xl=[]\n",
+ "xu=[]\n",
+ "xl.append(0)\n",
+ "xu.append(4)\n",
+ "d=[]\n",
+ "x1=[]\n",
+ "x2=[]\n",
+ "m=[]\n",
+ "n=[]\n",
+ "for i in range(0,10):\n",
+ " d.append(((5)**(0.5) - 1)*(xu[i-1] - xl[i-1])/2)\n",
+ " x1.append(xl[i-1] + d[i-1])\n",
+ " x2.append(xu[i-1] - d[i-1])\n",
+ " m.append(2*sin(x1[i-1]) - (x1[i-1]**2)/10)\n",
+ " n.append(2*sin(x2[i-1]) - (x2[i-1]**2)/10)\n",
+ " if n[i-1] > m[i-1]:\n",
+ " xu.append(x1[(i-1)])\n",
+ " xl.append(xl[(i-1)])\n",
+ " else:\n",
+ " xl.append(x2[i-1])\n",
+ " xu.append(xu[i-1])\n",
+ " \n",
+ "\n",
+ "print \"xl =\",xl\n",
+ "print \"\\nx2 =\",x2\n",
+ "print \"\\nx1 =\",x1\n",
+ "print \"\\nxu =\",xu"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:13.2 Pg: 360"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x0 = [0, 1, 1, 1.3813008689454946, 1.382057051632978, 1.4273175717149764, 1.4274221422858844]\n",
+ "\n",
+ "x1 = [1, 1.5921843781407843, 1.3813008689454946, 1.382057051632978, 1.4273175717149764, 1.4274221422858844, 1.4275508501677177]\n",
+ "\n",
+ "x2 = [4, 4, 1.5921843781407843, 1.5921843781407843, 1.5921843781407843, 1.5921843781407843, 1.5921843781407843]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sin\n",
+ "#f(x) = 2sinx - x**2/10\n",
+ "x0= [0]#\n",
+ "x1= [1]\n",
+ "x2= [4]#\n",
+ "m=[];n=[];r=[];x3=[];s=[]\n",
+ "for i in range(0,6):\n",
+ " m.append(2*sin(x0[(i)]) - (x0[(i)]**2)/10)\n",
+ " n.append(2*sin(x1[(i)]) - (x1[(i)]**2)/10)\n",
+ " r.append(2*sin(x2[(i)]) - (x2[(i)]**2)/10)\n",
+ " x3.append(((m[(i)]*(x1[(i)]** 2 -x2[(i)] ** 2)) + (n[(i)]*(x2[(i)] ** 2 -x0[(i)] ** 2)) + (r[(i)]*(x0[(i)] ** 2 -x1[(i)] ** 2)))/((2*m[(i)]*(x1[(i)] -x2[(i)]))+(2*n[(i)]*(x2[(i)] -x0[(i)]))+(2*r[(i)]*(x0[(i)] -x1[(i)]))))\n",
+ " s.append(2*sin(x3[(i)]) - (x3[(i)]**2)/10)\n",
+ " if x1[(i) ]> x3[(i) ]:\n",
+ " if n[(i)]<s[(i)]:\n",
+ " x0.append(x0[(i)])\n",
+ " x1.append(x3[(i)])\n",
+ " x2.append(x1[(i)])\n",
+ " else:\n",
+ " x0.append(x1[(i)])\n",
+ " x1.append(x3[(i)])\n",
+ " x2.append(x2[(i)])\n",
+ " \n",
+ " else:\n",
+ " if n[(i)]>s[(i)]:\n",
+ " x0.append(x0[(i)])\n",
+ " x1.append(x3[(i)])\n",
+ " x2.appedn(x1[(i)])\n",
+ " else:\n",
+ " x0.append(x1[(i)])\n",
+ " x1.append(x3[(i)])\n",
+ " x2.append(x2[(i)])\n",
+ " \n",
+ " \n",
+ "\n",
+ "\n",
+ "print \"x0 = \",x0\n",
+ "print \"\\nx1 = \",x1\n",
+ "print \"\\nx2 = \",x2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:13.3 Pg: 361"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [0.5, 2.2261962395657777, 1.1766358162650659, 1.465127166023216, 1.4238568730046828, 1.4279262963228776, 1.427513951598196, 1.427555600748671, 1.4275513926124817, 1.4275518177794067]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sin, cos\n",
+ "#f(x) = 2sinx - x**2/10\n",
+ "x= [.5]\n",
+ "#f'(x) = 2cosx - x/5\n",
+ "#f\"(x) = -2sinx - 1/5\n",
+ "for i in range(1,10):\n",
+ " x.append(x[(i-1)] - (2*cos(x[(i-1)]) - x[(i-1)]/5)/(-2*sin(x[(i-1)]) - 1/5))\n",
+ "\n",
+ "print \"x = \",x"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter14.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter14.ipynb
new file mode 100644
index 00000000..b3607eab
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter14.ipynb
@@ -0,0 +1,260 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-14 : Multidimensional Unconstrained Optimization"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:14.1 Pg: 368"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Iteration: 1\n",
+ "x: 1.53606983054\n",
+ "y: 1.86168445446\n",
+ "function value: -13.5786300816\n",
+ "------------------------------------------\n",
+ "Iteration: 1001\n",
+ "x: 1.76453990766\n",
+ "y: 1.86004762993\n",
+ "function value: -16.155728181\n",
+ "------------------------------------------\n",
+ "Iteration: 2001\n",
+ "x: -0.735800459375\n",
+ "y: 1.48176151402\n",
+ "function value: 1.11970176233\n",
+ "------------------------------------------\n",
+ "Iteration: 3001\n",
+ "x: -0.493690866305\n",
+ "y: 2.74840585243\n",
+ "function value: -2.08537362139\n",
+ "------------------------------------------\n",
+ "Iteration: 4001\n",
+ "x: 0.191618544017\n",
+ "y: 2.12536130424\n",
+ "function value: -3.47137052343\n",
+ "------------------------------------------\n",
+ "Iteration: 5001\n",
+ "x: 0.556097851317\n",
+ "y: 2.75235702552\n",
+ "function value: -9.05885931809\n",
+ "------------------------------------------\n",
+ "Iteration: 6001\n",
+ "x: -1.3315420382\n",
+ "y: 1.98026194153\n",
+ "function value: 1.11796226726\n",
+ "------------------------------------------\n",
+ "Iteration: 7001\n",
+ "x: -1.30334156994\n",
+ "y: 2.2803362443\n",
+ "function value: 0.930459972575\n",
+ "------------------------------------------\n",
+ "Iteration: 8001\n",
+ "x: -1.42505981694\n",
+ "y: 1.24322307994\n",
+ "function value: 0.604422816099\n",
+ "------------------------------------------\n",
+ "Iteration: 9001\n",
+ "x: -1.04901290775\n",
+ "y: 1.83044616216\n",
+ "function value: 1.16839305819\n",
+ "------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy.random import rand\n",
+ "def f(x,y):\n",
+ " z=y-x-(2*(x**2))-(2*x*y)-(y**2)\n",
+ " return z\n",
+ "x1=-2#\n",
+ "x2=2#\n",
+ "y1=1#\n",
+ "y2=3#\n",
+ "fmax=-1*10**(-15)#\n",
+ "n=10000#\n",
+ "for j in range(0,n):\n",
+ " r=rand(1,2)\n",
+ " x=x1+(x2-x1)*r[0,0]\n",
+ " y=y1+(y2-y1)*r[0,1]\n",
+ " fn=f(x,y)#\n",
+ " if fn>fmax:\n",
+ " fmax=fn#\n",
+ " xmax=x#\n",
+ " ymax=y#\n",
+ " \n",
+ " if j%1000==0:\n",
+ " \n",
+ " print \"Iteration:\",(j+1)\n",
+ " print \"x:\",x\n",
+ " print \"y:\",y\n",
+ " print \"function value:\",fn\n",
+ " print \"------------------------------------------\"\n",
+ " \n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:14.2 Pg: 374"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Elevation: 8\n",
+ "Theta: 1.107\n",
+ "slope: 8.94\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import atan\n",
+ "def f(x,y):\n",
+ " z=x*y*y\n",
+ " return z\n",
+ "p1=[2, 2]\n",
+ "elevation=f(p1[0],p1[1])\n",
+ "dfx=p1[0]*p1[0]\n",
+ "dfy=2*p1[0]*p1[1]\n",
+ "theta=atan(dfy/dfx)\n",
+ "slope=(dfx**2 + dfy**2)**0.5#\n",
+ "print \"Elevation:\",elevation\n",
+ "print \"Theta: %0.3f\"%theta\n",
+ "print \"slope: %0.2f\"%slope"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:14.3 Pg: 380"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The final equation is= 180*h**2 + 72*h - 7\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x,y):\n",
+ " z=2*x*y + 2*x - x**2 - 2*y**2\n",
+ " return z\n",
+ "x=-1#\n",
+ "y=1#\n",
+ "dfx=2*y+2-2*x#\n",
+ "dfy=2*x-4*y#\n",
+ "#the function can thus be expressed along h axis as\n",
+ "#f((x+dfx*h),(y+dfy*h))\n",
+ "print \"The final equation is=\",\"180*h**2 + 72*h - 7\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:14.4 Pg: 381"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The final values are: [-1, 1]\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x,y):\n",
+ " z=2*x*y + 2*x - x**2 - 2*y**2\n",
+ " return z\n",
+ "x=-1#\n",
+ "y=1#\n",
+ "d2fx=-2#\n",
+ "d2fy=-4#\n",
+ "d2fxy=2#\n",
+ "\n",
+ "modH=d2fx*d2fy-(d2fxy)**2#\n",
+ "\n",
+ "for i in range(0,25):\n",
+ " dfx=2*y+2-2*x#\n",
+ " dfy=2*x - 4*y#\n",
+ " #the function can thus be expressed along h axis as\n",
+ " #f((x+dfx*h),(y+dfy*h))\n",
+ " def g(h):\n",
+ " d=2*(x+dfx*h)*(y+dfy*h) + 2*(x+dfx*h) - (x+dfx*h)**2 - 2*(y+dfy*h)**2\n",
+ " return d\n",
+ " #2*dfx*(y+dfy*h)+2*dfy*(x+dfx*h)+2*dfx-2*(x+dfx*h)*dfx-4*(y+dfy*h)*dfy=g'(h)=0\n",
+ " #2*dfx*y + 2*dfx*dfy*h + 2*dfy*x + 2*dfy*dfx*h + 2*dfx - 2*x*dfx - 2*dfx*dfx*h - 4*y*dfy - 4*dfy*dfy*h=0\n",
+ " #h(2*dfx*dfy+2*dfy*dfx-2*dfx*dfx-4*dfy*dfy)=-(2*dfx*y+2*dfy*x-2*x*dfx-4*y*dfy)\n",
+ " h=(2*dfx*y+2*dfy*x-2*x*dfx-4*y*dfy+2*dfx)/(-1*(2*dfx*dfy+2*dfy*dfx-2*dfx*dfx-4*dfy*dfy))#\n",
+ " x=x+dfx*h#\n",
+ " y=y+dfy*h#\n",
+ "print \"The final values are:\",[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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter15.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter15.ipynb
new file mode 100644
index 00000000..1573bb78
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter15.ipynb
@@ -0,0 +1,358 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-15 : Constrained Optimization"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:15.1 Pg: 388"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Maximize z=150*x1+175*x2\n",
+ "subject to\n",
+ "7*x1+11*x2<=77 (Material constraint)\n",
+ "10*x1+8*x2<=80 (Time constraint)\n",
+ "x1<=9 (Regular storage constraint)\n",
+ "x2<=6 (Premium storage constraint)\n",
+ "x1,x2>=0 (Positivity constraint)\n"
+ ]
+ }
+ ],
+ "source": [
+ "regular=[7, 10, 9 ,150]#\n",
+ "premium=[11, 8, 6, 175]#\n",
+ "res_avail=[77, 80]#\n",
+ "#total profit(to be maximized)=z=150*x1+175*x2\n",
+ "#total gas used=7*x1+11*x2 (has to be less than 77 m**3/week)\n",
+ "#similarly other constraints are developed\n",
+ "print \"Maximize z=150*x1+175*x2\"\n",
+ "print \"subject to\"\n",
+ "print \"7*x1+11*x2<=77 (Material constraint)\"\n",
+ "print \"10*x1+8*x2<=80 (Time constraint)\"\n",
+ "print \"x1<=9 (Regular storage constraint)\"\n",
+ "print \"x2<=6 (Premium storage constraint)\"\n",
+ "print \"x1,x2>=0 (Positivity constraint)\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:15.2 Pg: 389"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\nv4hIHvr/jNG1VBcwIEMAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fa838951c50>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot,xlabel,ylabel,title ,show\n",
+ "x21=[];x22=[];x23=[];x24=[];x25=[];x26=[]\n",
+ "\n",
+ "for x1 in range(0,9):\n",
+ " x21.append(-(7/11)*x1+7)\n",
+ " x22.append((80-10*x1)/8)\n",
+ " x23.append(6)\n",
+ " x24.append(-150*x1/175)\n",
+ " x25.append((600-150*x1)/175)\n",
+ " x26.append((1400-150*x1)/175)\n",
+ "\n",
+ "x1=range(0,9)\n",
+ "\n",
+ "plot(x1,x24)\n",
+ "plot(x1,x25)\n",
+ "plot(x1,x26)\n",
+ "#h1=legend(['Z=0'#'Z=600'#'Z=1400'])\n",
+ "plot(x1,x21)#\n",
+ "plot(x1,x22)#\n",
+ "plot(x1,x23)#\n",
+ "title('x2 vs x1')\n",
+ "xlabel('x1 (tonnes)')\n",
+ "ylabel('x2 (tonnes)')\n",
+ "show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:15.3 Pg: 399"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The maximized profit is= 1413.888925\n"
+ ]
+ }
+ ],
+ "source": [
+ "x1=[0,4.888889, 3.888889]\n",
+ "x2=[0,7, 11]#\n",
+ "x3=[0,10, 8]#\n",
+ "x4=[0,150, 175]#\n",
+ "x5=[0,77, 80, 9, 6]\n",
+ "profit=[0,x1[(1)]*x4[(1)], x1[(2)]*x4[(2)]]#\n",
+ "total=[0,x1[(1)]*x3[(1)]+x1[(2)]*x3[(2)], x1[(1)]*x3[(1)]+x1[(2)]*x3[(2)], x1[(1)], x1[(2)], profit[(1)]+profit[(2)]]\n",
+ "e=1000#\n",
+ "\n",
+ "while e>total[(5)]:\n",
+ " if total[(1)]<=x5[(1)]:\n",
+ " if total[(2)]<=x5[(2)]:\n",
+ " if total[(3)]<=x5[(3)]:\n",
+ " if total[(4)]<=x5[(4)]:\n",
+ " l=1#\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " if l==1:\n",
+ " x1[(1)]=x1[(1)]+4.888889\n",
+ " x1[(2)]=x1[(2)]+3.888889# \n",
+ " profit=[0,x1[(1)]*x4[(1)], x1[(2)]*x4[(2)]]\n",
+ " total[(5)]=profit[(1)]+profit[(2)]\n",
+ " \n",
+ "\n",
+ "print \"The maximized profit is=\",total[(5)]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:15.4 Pg: 401"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The final value of velocity=19.980\n",
+ "6 The final no. of load parcels= 6\n",
+ "The chute radius=2.944 m\n",
+ "The minimum cost = 4377.264 $\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,exp\n",
+ "\n",
+ "Mt=2000##kg\n",
+ "g=9.8##m/s**2\n",
+ "c0=200##$\n",
+ "c1=56##$/m\n",
+ "c2=0.1##$/m**2\n",
+ "vc=20##m/s\n",
+ "kc=3##kg/(s*m**2)\n",
+ "z0=500##m\n",
+ "t=27#\n",
+ "r=2.943652#\n",
+ "n=6#\n",
+ "A=2*pi*r*r#\n",
+ "l=(2**0.5)*r#\n",
+ "c=3*A#\n",
+ "m=Mt/n#\n",
+ "def f(t):\n",
+ " y=(z0+g*m*m/(c*c)*(1-exp(-c*t/m)))*c/(g*m)#\n",
+ " return y\n",
+ "\n",
+ "while abs(f(t)-t)>0.00001:\n",
+ " t=t+0.00001\n",
+ " \n",
+ "v=g*m*(1-exp(-c*t/m))/c#\n",
+ "print \"The final value of velocity=%0.3f\"%v\n",
+ "print n,\"The final no. of load parcels=\",n\n",
+ "print \"The chute radius=%0.3f m\"%r\n",
+ "print \"The minimum cost = %0.3f $\"%((c0+c1*l+c2*A*A)*n)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:15.5 Pg: 406"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Optimization terminated successfully.\n",
+ " Current function value: -1.775726\n",
+ " Iterations: 26\n",
+ " Function evaluations: 52\n",
+ "After maximization:\n",
+ "x= [ 1.4275625]\n",
+ "f(x)= [-1.77572565]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.optimize import fmin\n",
+ "from math import sin\n",
+ "def fx(x):\n",
+ " y=-(2*sin(x))+x**2/10\n",
+ " return y\n",
+ "x=fmin(fx,0)\n",
+ "print \"After maximization:\"\n",
+ "print \"x=\",x\n",
+ "print \"f(x)=\",fx(x)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:15.6 Pg: 407"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Optimization terminated successfully.\n",
+ " Current function value: -2.000000\n",
+ " Iterations: 45\n",
+ " Function evaluations: 86\n",
+ "After maximization:\n",
+ "x= [ 1.99993372 0.99996476]\n",
+ "f(x)= -1.99999999779\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.optimize import fmin\n",
+ "def fx(x):\n",
+ " f=-(2*x[0]*x[1]+2*x[0]-x[0]**2-2*x[1]**2)\n",
+ " return f\n",
+ "x=fmin(fx,[-1, 1])\n",
+ "print \"After maximization:\"\n",
+ "print \"x=\",x\n",
+ "print \"f(x)=\",fx(x)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:15.7 Pg: 408"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Optimization terminated successfully.\n",
+ " Current function value: -1.775726\n",
+ " Iterations: 26\n",
+ " Function evaluations: 52\n",
+ "After maximization:\n",
+ "x= [ 1.4275625]\n",
+ "f(x)= [-1.77572565]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.optimize import fmin\n",
+ "from math import sin\n",
+ "\n",
+ "def fx(x):\n",
+ " y=-(2*sin(x)-x**2/10)\n",
+ " return y\n",
+ "x=fmin(fx,0)\n",
+ "print \"After maximization:\"\n",
+ "print \"x=\",x\n",
+ "print \"f(x)=\",fx(x)"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter17.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter17.ipynb
new file mode 100644
index 00000000..14e89b11
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter17.ipynb
@@ -0,0 +1,607 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-17 : Least-squares Regression"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.1 Pg: 458"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "sum of product of x and y = 119.5\n",
+ "sum of square of x = 140\n",
+ "sum of all the x = 28\n",
+ "sum of all the y = 24.0\n",
+ "a1 = 0.839285714286\n",
+ "a0 = 0.0714285714286\n",
+ "The equation of the line obtained is y = a0 + a1*x\n"
+ ]
+ }
+ ],
+ "source": [
+ "x = [1,2,3,4,5,6,7]#\n",
+ "y = [0.5,2.5,2,4,3.5,6,5.5]#\n",
+ "n = 7#\n",
+ "s = 0#\n",
+ "xsq = 0#\n",
+ "xsum = 0#\n",
+ "ysum = 0#\n",
+ "\n",
+ "for i in range(0,7):\n",
+ " s = s + (x[i])*y[i]\n",
+ " xsq = xsq + x[i]**2\n",
+ " xsum = xsum + x[i]\n",
+ " ysum = ysum + y[i]\n",
+ "\n",
+ "print \"sum of product of x and y =\",s\n",
+ "print \"sum of square of x = \",xsq\n",
+ "print \"sum of all the x = \",xsum\n",
+ "print \"sum of all the y = \",ysum\n",
+ "a = xsum/n#\n",
+ "b = ysum/n#\n",
+ "a1 = (n*s - xsum*ysum)/(n*xsq -xsum**2)#\n",
+ "a0 = b - a*a1#\n",
+ "print \"a1 = \",a1\n",
+ "print \"a0 = \",a0\n",
+ "print \"The equation of the line obtained is y = a0 + a1*x\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.2 Pg: 462"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "sum of all y = 24.0\n",
+ "\n",
+ "(yi - yavg)**2 = [0.010204081632653073, 2.010204081632653, 1.510204081632653, 3.510204081632653, 3.010204081632653, 5.510204081632653, 5.010204081632653]\n",
+ "\n",
+ "total (yi - yavg)**2 = 20.5714285714\n",
+ "\n",
+ "(yi - a0 - a1*x)**2 = [-0.4107142857142855, -0.9285714285714284, -5.625, -9.5, -17.55357142857143, -24.285714285714285, -35.69642857142857]\n",
+ "\n",
+ "total (yi - a0 - a1*x)**2 = -94.0\n",
+ "\n",
+ "sy = 1.85164019955\n",
+ "r = 2.35996704308\n",
+ "The result indicate that 86.8 percent of the original uncertainty has been explained by linear model\n"
+ ]
+ }
+ ],
+ "source": [
+ "x = [1,2,3,4,5,6,7]#\n",
+ "y = [0.5,2.5,2,4,3.5,6,5.5]#\n",
+ "n = 7#\n",
+ "s = 0#\n",
+ "ssum = 0#\n",
+ "xsq = 0#\n",
+ "xsum = 0#\n",
+ "ysum = 0#\n",
+ "msum = 0#\n",
+ "for i in range(0,7):\n",
+ " s = s + x[i]*y[i]\n",
+ " xsq = xsq + x[i]**2\n",
+ " xsum = xsum + x[i]\n",
+ " ysum = ysum + y[i]\n",
+ "\n",
+ "a = xsum/n#\n",
+ "b = ysum/n#\n",
+ "a1 = (n*s - xsum*ysum)/(n*xsq -xsum**2)#\n",
+ "a0 = b - a*a1#\n",
+ "m=[];si=[]\n",
+ "for i in range(0,7):\n",
+ " m.append(y[i] - ysum/7**2)\n",
+ " msum = msum +m[i]#\n",
+ " si.append(y[i] - a0 - a1*x[i]**2)\n",
+ " ssum = ssum + si[i]\n",
+ "\n",
+ "print \"sum of all y =\",ysum\n",
+ "print \"\\n(yi - yavg)**2 = \",m\n",
+ "print \"\\ntotal (yi - yavg)**2 = \",msum\n",
+ "print \"\\n(yi - a0 - a1*x)**2 = \",si\n",
+ "print \"\\ntotal (yi - a0 - a1*x)**2 = \",ssum\n",
+ "sy = (msum / (n-1))**(0.5)#\n",
+ "#sxy = (ssum/(n-2))**(0.5)#\n",
+ "print \"\\nsy = \",sy\n",
+ "#print \"sxy = \",sxy\n",
+ "r2 = (msum - ssum)/(msum)#\n",
+ "r = r2**0.5#\n",
+ "print \"r = \",r\n",
+ "print \"The result indicate that 86.8 percent of the original uncertainty has been explained by linear model\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.3 Pg: 463"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "time = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]\n",
+ "\n",
+ "measured v = [10, 16.3, 23, 27.5, 31, 35.6, 39, 41.5, 42.9, 45, 46, 45.5, 46, 49, 50]\n",
+ "\n",
+ "using equation(1.10) v1 = [8.953182207901257, 16.404980802870615, 22.607166909502304, 27.769291463870154, 32.06576523242002, 35.641751563129084, 38.61807096510561, 41.09528322582064, 43.15708498693595, 44.87313757134839, 46.30142060418256, 47.490190948641704, 48.479613142547706, 49.30311642251821, 49.988524185047744]\n",
+ "\n",
+ "using equation((17.3)) v2 = [11.240084210526316, 18.57057391304348, 23.729066666666665, 27.556335483870967, 30.5088, 32.855630769230764, 34.765841860465116, 36.35091063829787, 37.68734117647059, 38.82938181818182, 39.81656949152543, 40.678399999999996, 41.43732537313433, 42.11073802816901, 42.712320000000005]\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\nAyM6fhLOY0unAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f2a3c39d2d0>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, title,xlabel,ylabel,show\n",
+ "from math import exp\n",
+ "s = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]#\n",
+ "v = [10,16.3,23,27.5,31,35.6,39,41.5,42.9,45,46,45.5,46,49,50]#\n",
+ "g = 9.8#m/s**2\n",
+ "m = 68.1##kg\n",
+ "c = 12.5#kg/s\n",
+ "v1=[]\n",
+ "v2=[]\n",
+ "for i in range(0,15):\n",
+ " v1.append(g*m*(1 - exp(-c*s[(i)]/m))/c)\n",
+ " v2.append(g*m*s[(i)]/(c*(3.75+s[(i)])))\n",
+ "\n",
+ "print \"time = \",s\n",
+ "print \"\\nmeasured v =\",v\n",
+ "print \"\\nusing equation(1.10) v1 = \",v1\n",
+ "print \"\\nusing equation((17.3)) v2 = \",v2\n",
+ "plot(v,v1)#\n",
+ "title('v vs v1')\n",
+ "xlabel('v')\n",
+ "ylabel('v1')#\n",
+ "show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.4 Pg: 468"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a= 0.501187233627\n",
+ "x= [1, 2, 3, 4, 5]\n",
+ "y= [0.5011872336272722, 1.6857861925123965, 3.4273795077270295, 5.670286264671531, 8.379102586654781]\n",
+ "m= [0.0, 0.3010299956639812, 0.47712125471966244, 0.6020599913279624, 0.6989700043360189]\n",
+ "n= [-0.30000000000000004, 0.226802492411967, 0.5349621957594092, 0.7536049848239341, 0.9231975075880328]\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\nYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f7763106d50>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\nzMwsl38FAoe+bnMSv0IAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f7762cd79d0>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from math import log10\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, title,xlabel,ylabel,show\n",
+ "\n",
+ "#y = a*x**b\n",
+ "a1 = -0.3000#\n",
+ "a = 10**(a1)#\n",
+ "b = 1.75#\n",
+ "print \"a=\",a\n",
+ "x=[];y=[];m=[];n=[];\n",
+ "for i in range(0,5):\n",
+ " x.append(i+1)\n",
+ " y.append(a*x[(i)]**b)\n",
+ " m.append(log10(x[(i)]))\n",
+ " n.append(log10(y[(i)]))\n",
+ "\n",
+ "print \"x=\",x\n",
+ "print \"y=\",y\n",
+ "print \"m=\",m\n",
+ "print \"n=\",n\n",
+ "plot(x,y)\n",
+ "title('y vs x')\n",
+ "xlabel('x')\n",
+ "ylabel('y')\n",
+ "show()\n",
+ "plot(m,n)\n",
+ "title('log y vs log x')\n",
+ "xlabel('log x')\n",
+ "ylabel('log y')\n",
+ "show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.5 Pg: 471"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "sum y = 152.6\n",
+ "sum x = 15\n",
+ "xavg = 2\n",
+ "yavg = 25.4333333333\n",
+ "sum x**2 = 55\n",
+ "sum x**3 = 225\n",
+ "sum x**4 = 979\n",
+ "sum x*y = 585.6\n",
+ "sum x**2 * y = 2488.8\n",
+ "(yi - yavg)**2 = [4.41, 41.173611111111114, 60.58027777777777, 60.580277777777745, 33.446944444444505, 1332.2500000000005]\n",
+ "(yi - a0 - a1*x - a2*x**2)**2 = [0.14331632653056853, 1.0028591836732743, 1.0816000000005044, 0.80486530612177265, 0.61959387755180939, 0.094336734693502053]\n",
+ "The standard error of the estimate based on regression polynomial = 1.11752277062\n",
+ "Percentage of original uncertainty that has been explained by the model = 99.7555161238 %\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f777c4e0a90>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, title,xlabel,ylabel,show\n",
+ "from numpy import mat\n",
+ "x = [0,1,2,3,4,5]#\n",
+ "y = [2.1,7.7,13.6,27.2,40.9,61.1]#\n",
+ "sumy = 0#\n",
+ "sumx = 0#\n",
+ "m = 2#\n",
+ "n = 6#\n",
+ "xsqsum = 0#\n",
+ "xcsum = 0#\n",
+ "x4sum = 0#\n",
+ "xysum = 0#\n",
+ "x2ysum = 0#\n",
+ "rsum = 0#\n",
+ "usum = 0#\n",
+ "r=[];s=0\n",
+ "for i in range(0,6):\n",
+ " s = s + x[i]*y[i]\n",
+ " sumy = sumy+y[(i)]\n",
+ " sumx = sumx+x[(i)]\n",
+ " r.append((y[(i)] - s/n)**2)\n",
+ " xsqsum = xsqsum + x[(i)]**2\n",
+ " xcsum = xcsum +x[(i)]**3\n",
+ " x4sum = x4sum + x[(i)]**4\n",
+ " xysum = xysum + x[(i)]*y[(i)]\n",
+ " x2ysum = x2ysum + y[(i)]*x[(i)]**2\n",
+ " rsum = r[(i)] + rsum\n",
+ "\n",
+ "print \"sum y =\",sumy\n",
+ "print \"sum x =\",sumx\n",
+ "xavg = sumx/n#\n",
+ "yavg = sumy/n#\n",
+ "print \"xavg = \",xavg\n",
+ "print \"yavg = \",yavg\n",
+ "print \"sum x**2 =\",xsqsum\n",
+ "print \"sum x**3 =\",xcsum\n",
+ "print \"sum x**4 =\",x4sum\n",
+ "print \"sum x*y =\",xysum\n",
+ "print \"sum x**2 * y =\",x2ysum\n",
+ "J = mat([[n,sumx,xsqsum],[sumx,xsqsum,xcsum],[xsqsum,xcsum,x4sum]])\n",
+ "I = mat([[sumy],[xysum],[x2ysum]])\n",
+ "X = (J**-1)* I\n",
+ "a0 = X[0,0]\n",
+ "a1 = X[1,0]\n",
+ "a2 = X[2,0]\n",
+ "u=[]\n",
+ "for i in range(0,6):\n",
+ " u.append((y[(i) ]- a0 - a1*x[(i)] - a2*x[(i)]**2)**2)\n",
+ " usum = usum + u[i]\n",
+ "\n",
+ "print \"(yi - yavg)**2 = \",r\n",
+ "print \"(yi - a0 - a1*x - a2*x**2)**2 = \",u\n",
+ "plot(x,y)#\n",
+ "title('x vs y')\n",
+ "xlabel('x')\n",
+ "ylabel('y') \n",
+ "syx = (usum/(n-3))**0.5#\n",
+ "print \"The standard error of the estimate based on regression polynomial =\",syx\n",
+ "R2 = (rsum - usum)/(rsum)#\n",
+ "print \"Percentage of original uncertainty that has been explained by the model = \",R2*100,'%'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.6 Pg: 475"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a0= -0.850183257587\n",
+ "a1= 7.17727605923\n",
+ "a2= 2.80543175487\n",
+ "Thus, y = a0 + a1*x1 + a2*x2\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "x1 = [0,2,2.5,1,4,7]\n",
+ "x2 = [0,1,2,3,6,2]\n",
+ "x1sum = 0#\n",
+ "x2sum = 0#\n",
+ "ysum = 0#\n",
+ "x12sum = 0#\n",
+ "x22sum = 0#\n",
+ "x1ysum = 0#\n",
+ "x2ysum = 0#\n",
+ "x1x2sum = 0#\n",
+ "n = 6#\n",
+ "x12=[];x22=[];x1x2=[];x1y=[];x2y=[]\n",
+ "for i in range(0,6):\n",
+ " y.append(5 + 4*x1[(i)] - 3*x2[(i)])\n",
+ " x12.append(x1[(i)]**2)\n",
+ " x22.append(x2[(i)]**2)\n",
+ " x1x2.append(x1[(i)] * x2[(i)])\n",
+ " x1y.append(x1[(i)] * y[(i)])\n",
+ " x2y.append(x2[(i)] * y[(i)])\n",
+ " x1sum = x1sum + x1[(i)]\n",
+ " x2sum = x2sum + x2[(i)]\n",
+ " ysum = ysum + y[(i)]\n",
+ " x1ysum = x1ysum + x1y[(i)]#\n",
+ " x2ysum = x2ysum + x2y[(i)]#\n",
+ " x1x2sum = x1x2sum + x1x2[(i)]#\n",
+ " x12sum = x12sum + x12[(i)]#\n",
+ " x22sum = x22sum + x22[(i)]#\n",
+ "\n",
+ "X = mat([[n,x1sum,x2sum],[x1sum,x12sum,x1x2sum],[x2sum,x1x2sum,x22sum]])\n",
+ "Y = mat([[ysum],[x1ysum],[x2ysum]])\n",
+ "Z = (X**-1)*Y\n",
+ "a0 = Z[0,0]\n",
+ "a1 = Z[1,0]\n",
+ "a2 = Z[2,0]\n",
+ "print \"a0=\",a0\n",
+ "print \"a1=\",a1\n",
+ "print \"a2=\",a2\n",
+ "print \"Thus, y = a0 + a1*x1 + a2*x2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.7 Pg: 479"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a0= -0.858655686175\n",
+ "a1= 1.03160389481\n",
+ "standard error of co efficient a0 = 0.716371758333\n",
+ "standard error of co efficient a1 = 0.0186248847544\n",
+ "interval of a0 = [-2.4062823089821084, 0.68897093663270859]\n",
+ "interval of a1 = [0.99136728978321009, 1.0718404998372961]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat,exp,transpose,shape,array\n",
+ "#y = -0.859 + 1.032*x\n",
+ "Z = mat([[1,10],[1,16.3],[1,23],[1,27.5],[1,31],[1,35.6],[1,39],[1,41.5],[1,42.9],[1,45],[1,46],[1,45.5],[1,46],[1,49],[1,50]])\n",
+ "Y=[]\n",
+ "for i in range(0,15):\n",
+ " Y.append(9.8*68.1*(1-exp(-12.5*(i+1)/68.1))/12.5)\n",
+ "Y=array(Y)\n",
+ "Y=Y.reshape(15,1)\n",
+ "M = transpose(Z)\n",
+ "R = M*Z#\n",
+ "S = M*Y#\n",
+ "P = (R**-1)#\n",
+ "X = (R**-1)*S#\n",
+ "a0 = X[0,0]\n",
+ "a1 = X[1,0]\n",
+ "print \"a0=\",a0\n",
+ "print \"a1=\",a1\n",
+ "sxy = 0.863403#\n",
+ "sa0 = ((P[0,0]) * sxy**2)**0.5\n",
+ "sa1 = (P[1,1] * sxy**2)**0.5\n",
+ "print \"standard error of co efficient a0 = \",sa0\n",
+ "print \"standard error of co efficient a1 = \",sa1\n",
+ "TINV = 2.160368#\n",
+ "a0 = [a0 - TINV*(sa0),a0 + TINV*(sa0)]#\n",
+ "a1 = [a1 - TINV*(sa1),a1 + TINV*(sa1)]#\n",
+ "print \"interval of a0 = \",a0\n",
+ "print \"interval of a1 = \",a1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:17.8 Pg: 481"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Z0 = [[ 0.22119922 0.1947002 ]\n",
+ " [ 0.52763345 0.35427491]\n",
+ " [ 0.7134952 0.358131 ]\n",
+ " [ 0.82622606 0.3041044 ]\n",
+ " [ 0.89460078 0.23714826]]\n",
+ "D = [[ 0.05880078]\n",
+ " [ 0.04236655]\n",
+ " [-0.0334952 ]\n",
+ " [-0.08622606]\n",
+ " [-0.10460078]]\n",
+ "X = [[-0.27147736]\n",
+ " [ 0.50193087]]\n",
+ "The value of a0 after 1st iteration = 0.728522640015\n",
+ "The value of a1 after 1st iteration = 1.5019308677\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "from numpy import array,transpose,mat\n",
+ "x = [0.25,0.75,1.25,1.75,2.25]#\n",
+ "y = [0.28,0.57,0.68,0.74,0.79]#\n",
+ "a0 = 1#\n",
+ "a1 = 1#\n",
+ "sr = 0.0248#\n",
+ "pda0=[];pda1=[]\n",
+ "for i in range(0,5):\n",
+ " pda0.append(1 - exp(-a1 * x[(i)]))\n",
+ " pda1.append(a0 * x[(i)]*exp(-a1*x[(i)]))\n",
+ "\n",
+ "Z0 = mat([[pda0[0],pda1[0]],[pda0[1],pda1[1]],[pda0[2],pda1[2]],[pda0[3],pda1[3]],[pda0[4],pda1[4]]])\n",
+ "print \"Z0 = \",Z0\n",
+ "R = transpose(Z0)*Z0\n",
+ "S = (R**-1)\n",
+ "y1=[];D=[]\n",
+ "for i in range(0,5):\n",
+ " y1.append(a0 * (1-exp(-a1*x[(i)])))\n",
+ " D.append(y[(i)] - y1[(i)])\n",
+ "D=array(D) \n",
+ "D=D.reshape(5,1)\n",
+ "print \"D = \",D\n",
+ "M = transpose(Z0)*D\n",
+ "X = S *M#\n",
+ "print \"X = \",X\n",
+ "a0 = a0 + X[0,0]\n",
+ "a1 = a1 + X[1,0]\n",
+ "print \"The value of a0 after 1st iteration = \",a0\n",
+ "print \"The value of a1 after 1st iteration = \",a1"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter18.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter18.ipynb
new file mode 100644
index 00000000..e44e3a7b
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter18.ipynb
@@ -0,0 +1,268 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-18 : Interpolation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:18.1 Pg: 490"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of ln2 for interpolation region 1 to 6 = 0.3583518\n",
+ "error by interpolation for interval[1,6] = 48.3007635246 %\n",
+ "value of ln2 for interpolation region 1 to 6 = 0.462098\n",
+ "error by interpolation for interval[1,6] = 33.3333506995 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "#f1(x) = f0(x) +(f(x1) - f(x0) *(x - x0)/ (x1 - x0)\n",
+ "x = 2#\n",
+ "x0 = 1#\n",
+ "x1 = 6#\n",
+ "m = 1.791759#\n",
+ "n = 0#\n",
+ "r = log(2)#\n",
+ "f = 0 + (m - n) * (x - x0) / (x1 - x0)#\n",
+ "print \"value of ln2 for interpolation region 1 to 6 =\",f\n",
+ "e = (r - f) * 100/r#\n",
+ "print \"error by interpolation for interval[1,6] =\",e,\"%\"\n",
+ "x2 = 4#\n",
+ "p = 1.386294#\n",
+ "f = 0 + (p - n) * (x - x0) / (x2 - x0)#\n",
+ "print \"value of ln2 for interpolation region 1 to 6 =\",f\n",
+ "e = (r - f) * 100/r#\n",
+ "print \"error by interpolation for interval[1,6] =\",e,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:18.2 Pg: 492"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "b0 = 0\n",
+ "b1 = 0.462098\n",
+ "b2 = -0.0518731\n",
+ "f(2) = 0.5658442\n",
+ "error = 18.3659378744 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "x = 2#\n",
+ "x0 = 1#\n",
+ "m = 0#\n",
+ "x1 = 4#\n",
+ "n = 1.386294#\n",
+ "x2 = 6#\n",
+ "p = 1.791759#\n",
+ "b0 = m#\n",
+ "b1 = (n - m)/(x1 - x0)#\n",
+ "b2 = ((p - n)/(x2 - x1) - (n - m)/(x1 - x0))/(x2 - x0)#\n",
+ "print \"b0 = \",b0\n",
+ "print \"b1 = \",b1\n",
+ "print \"b2 = \",b2\n",
+ "f = b0 + b1*(x - x0) + b2*(x - x0)*(x - x1)#\n",
+ "print \"f(2) = \",f\n",
+ "r = log(2)#\n",
+ "e = (r -f)*100/r#\n",
+ "print \"error = \",e,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:18.3 Pg: 494"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "b0 = 0\n",
+ "b1 = 0.462098\n",
+ "b2 = -0.0518731\n",
+ "b3 = 0.0078654\n",
+ "f(2) = 0.6287674\n",
+ "error = 9.28803901474 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "x = 2#\n",
+ "x0 = 1#\n",
+ "m = 0#\n",
+ "x1 = 4#\n",
+ "n = 1.386294#\n",
+ "x3 = 5#\n",
+ "p = 1.609438#\n",
+ "x2 = 6#\n",
+ "o = 1.791759#\n",
+ "f01 = (m - n)/(x0 - x1)#\n",
+ "f12 = (n - o)/(x1 - x2)#\n",
+ "f23 = (p - o)/(x3 - x2)#\n",
+ "f210 = (f12 - f01)/(x2 - x0)#\n",
+ "f321 = (f23 - f12)/(x3 - x1)#\n",
+ "f0123 = (f321 - f210) / (x3 - x0)#\n",
+ "b0 = m#\n",
+ "b1 = f01#\n",
+ "b2 = f210#\n",
+ "b3 = f0123#\n",
+ "print \"b0 = \",b0\n",
+ "print \"b1 = \",b1\n",
+ "print \"b2 = \",b2\n",
+ "print \"b3 = \",b3\n",
+ "f = b0 + b1*(x - x0) + b2*(x - x0)*(x - x1) + b3*(x - x0)*(x - x1)*(x - x2)#\n",
+ "print \"f(2) = \",f\n",
+ "r = log(2)#\n",
+ "e = (r -f)*100/r#\n",
+ "print \"error = \",e,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:18.4 Pg: 496"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "error R2 = 0.0629232\n"
+ ]
+ }
+ ],
+ "source": [
+ "x = 2#\n",
+ "x0 = 1#\n",
+ "m = 0#\n",
+ "x1 = 4#\n",
+ "n = 1.386294#\n",
+ "x3 = 5#\n",
+ "p = 1.609438#\n",
+ "x2 = 6#\n",
+ "o = 1.791759#\n",
+ "f01 = (m - n)/(x0 - x1)#\n",
+ "f12 = (n - o)/(x1 - x2)#\n",
+ "f23 = (p - o)/(x3 - x2)#\n",
+ "f210 = (f12 - f01)/(x2 - x0)#\n",
+ "f321 = (f23 - f12)/(x3 - x1)#\n",
+ "f0123 = (f321 - f210) / (x3 - x0)#\n",
+ "b0 = m#\n",
+ "b1 = f01#\n",
+ "b2 = f210#\n",
+ "b3 = f0123#\n",
+ "R2 = b3 * (x - x0) * (x - x1)*(x-x2)#\n",
+ "print \"error R2 = \",R2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:18.6 Pg: 501"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "first order polynomial f1(2) = 0.462098\n",
+ "second order polynomial f2(2) = 0.5658442\n"
+ ]
+ }
+ ],
+ "source": [
+ "x = 2#\n",
+ "x0 = 1#\n",
+ "m = 0#\n",
+ "x1 = 4#\n",
+ "n = 1.386294#\n",
+ "x2 = 6#\n",
+ "p = 1.791759#\n",
+ "f1 = (x - x1)*m/((x0 - x)) + (x- x0) * n/(x1 - x0)#\n",
+ "print \"first order polynomial f1(2) = \",f1\n",
+ "f2 = (x - x1)*(x - x2)*m/((x0 - x1)*(x0 - x2)) + (x - x0)*(x - x2)*n/((x1-x0)*(x1-x2)) + (x - x0)*(x - x1)*p/((x2 - x0)*(x2 - x1))#\n",
+ "print \"second order polynomial f2(2) = \",f2"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter19.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter19.ipynb
new file mode 100644
index 00000000..cbe17ebc
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter19.ipynb
@@ -0,0 +1,268 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "# Chapter-19 : Fourier Approximation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:19.1 Pg: 529"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The least square fit is y=A0+A1*cos(w0*t)+A2*sin(w0*t), where\n",
+ "A0= 1.70003783298\n",
+ "A1= 0.500211429839\n",
+ "B1= -0.866058310862\n",
+ "Alternatively, the least square fit can be expressed as\n",
+ "y=A0+C1*cos(w0*t + theta), where\n",
+ "A0= 1.70003783298\n",
+ "Theta= 1.04703092349\n",
+ "C1= 1.00013422717\n",
+ "Or\n",
+ "y=A0+C1*sin(w0*t + theta + pi/2), where\n",
+ "A0= 1.70003783298\n",
+ "Theta= 1.04703092349\n",
+ "C1= 1.00013422717\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sin,cos,atan\n",
+ "def f(t):\n",
+ " y=1.7+cos(4.189*t+1.0472)\n",
+ " return y\n",
+ "deltat=0.15#\n",
+ "t1=0#\n",
+ "t2=1.35#\n",
+ "omega=4.189#\n",
+ "Del=(t2-t1)/9#\n",
+ "t=[]\n",
+ "for i in range(1,11):\n",
+ " t.append(t1+Del*(i-1))\n",
+ "\n",
+ "sumy=0#\n",
+ "suma=0#\n",
+ "sumb=0#\n",
+ "y=[];a=[];b=[]\n",
+ "for i in range(1,11):\n",
+ " y.append(f(t[i-1]))\n",
+ " a.append(y[(i-1)]*cos(omega*t[(i-1)]))\n",
+ " b.append(y[i-1]*sin(omega*t[i-1]))\n",
+ " sumy=sumy+y[i-1]\n",
+ " suma=suma+a[i-1]\n",
+ " sumb=sumb+b[i-1]\n",
+ "\n",
+ "A0=sumy/10#\n",
+ "A1=2*suma/10#\n",
+ "B1=2*sumb/10#\n",
+ "print \"The least square fit is y=A0+A1*cos(w0*t)+A2*sin(w0*t), where\"\n",
+ "print \"A0=\",A0\n",
+ "print \"A1=\",A1\n",
+ "print \"B1=\",B1\n",
+ "theta=atan(-B1/A1)#\n",
+ "C1=(A1**2 + B1**2)**0.5#\n",
+ "print \"Alternatively, the least square fit can be expressed as\"\n",
+ "print \"y=A0+C1*cos(w0*t + theta), where\"\n",
+ "print \"A0=\",A0\n",
+ "print \"Theta=\",theta\n",
+ "print \"C1=\",C1\n",
+ "print \"Or\"\n",
+ "print \"y=A0+C1*sin(w0*t + theta + pi/2), where\"\n",
+ "print \"A0=\",A0\n",
+ "print \"Theta=\",theta\n",
+ "print \"C1=\",C1\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:19.2 Pg: 532"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The fourier approximtion is:\n",
+ "4/(pi)*cos(w)*t) - 4/(3*pi)*cos(3*(w)*t) + 4/(5*pi)*cos(5*(w)*t) - 4/(7*pi)*cos(7*(w)*t) + .....\n"
+ ]
+ }
+ ],
+ "source": [
+ "a0=0#\n",
+ "#f(t)=-1 for -T/2 to -T/4\n",
+ "#f(t)=1 for -T/4 to T/4\n",
+ "#f(t)=-1 for T/4 to T/2\n",
+ "#ak=2/T* (integration of f(t)*cos(w0*t) from -T/2 to T/2)\n",
+ "#ak=2/T*((integration of f(t)*cos(w0*t) from -T/2 to -T/4) + (integration of f(t)*cos(w0*t) from -T/4 to T/4) + (integration of f(t)*cos(w0*t) from T/4 to T/2))\n",
+ "#Therefore, \n",
+ "#ak=4/(k*pi) for k=1,5,9,.....\n",
+ "#ak=-4/(k*pi) for k=3,7,11,.....\n",
+ "#ak=0 for k=even integers\n",
+ "#similarly we find the b's.\n",
+ "#all the b's=0\n",
+ "print \"The fourier approximtion is:\"\n",
+ "print \"4/(pi)*cos(w)*t) - 4/(3*pi)*cos(3*(w)*t) + 4/(5*pi)*cos(5*(w)*t) - 4/(7*pi)*cos(7*(w)*t) + .....\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:19.3 Pg: 550"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f1a75daff90>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from numpy import arange,log\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, title,xlabel,ylabel,show\n",
+ "x=arange(0.5,5.6,0.5)\n",
+ "y=[]\n",
+ "for i in range(1,12):\n",
+ " y.append(0.9846*log(x[i-1])+1.0004)\n",
+ "\n",
+ "plot(x,y)\n",
+ "title(\"y vs x\")\n",
+ "xlabel(\"x\")\n",
+ "ylabel(\"y\")\n",
+ "show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:19.6 Pg: 555"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The cubic polynomial is y=a0 + a1*x + a2*x**2 + a3*x**3, where a0, a1, a2 and a3 are\n",
+ "[[ 1.67644593 0.76697402 0.5511316 0.46451844]\n",
+ " [ 2.56065822 1.84003582 1.55086475 1.40157818]\n",
+ " [ 3.36495108 2.83613174 2.5631251 2.40990305]\n",
+ " [ 3.94388659 3.56424723 3.35117872 3.23471752]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import nditer,mat,divide\n",
+ "x=[0.05, 0.12, 0.15, 0.3, 0.45 ,0.7 ,0.84 ,1.05]\n",
+ "y=[0.957, 0.851, 0.832, 0.72 ,0.583, 0.378, 0.295, 0.156]\n",
+ "sx=sum(x)#\n",
+ "sxx=0\n",
+ "for xx in x:\n",
+ " sxx+=xx*xx\n",
+ "sx3=0\n",
+ "for xx in x:\n",
+ " sx3+=xx*xx*xx\n",
+ "sx4=0\n",
+ "for xx in x:\n",
+ " sx4+=xx*xx*xx*xx\n",
+ "\n",
+ "sx5=0\n",
+ "for xx in x:\n",
+ " sx5+=xx*xx*xx*xx*xx\n",
+ " \n",
+ "sx6=0\n",
+ "for xx in x:\n",
+ " sx6+=xx*xx*xx*xx*xx*xx\n",
+ "\n",
+ "n=8#\n",
+ "sy=sum(y)#\n",
+ "sxy=0\n",
+ "for xx,yy in nditer([x,y]):\n",
+ " sxy+=xx*yy\n",
+ " \n",
+ " \n",
+ "sx2y=0\n",
+ "for xx,yy in nditer([x,y]):\n",
+ " sx2y+=xx*xx*yy\n",
+ "\n",
+ "sx3y=0\n",
+ "for xx,yy in nditer([x,y]):\n",
+ " sx3y+=xx*xx*xx*yy\n",
+ "\n",
+ "m=mat([[n, sx, sxx ,sx3],[sx, sxx, sx3, sx4],[sxx, sx3, sx4, sx5],[sx3, sx4, sx5, sx6]])\n",
+ "p=mat([[sy],[sxy],[sx2y],[sx3y]])\n",
+ "a=divide(m,p)\n",
+ "print \"The cubic polynomial is y=a0 + a1*x + a2*x**2 + a3*x**3, where a0, a1, a2 and a3 are\"\n",
+ "print a"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter21.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter21.ipynb
new file mode 100644
index 00000000..507735ab
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter21.ipynb
@@ -0,0 +1,725 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 21 Newtin-cotes integration formula"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 21.1 Pg : 612"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The Error Et= 1.468\n",
+ "The percent relative error et= 89.467 %\n",
+ "The approximate error estimate without using the true value= 2.56\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "def f(x):\n",
+ " y=(0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5)\n",
+ " return y\n",
+ "tval=1.640533#\n",
+ "a=0#\n",
+ "b=0.8#\n",
+ "fa=f(a)#\n",
+ "fb=f(b)#\n",
+ "l=(b-a)*((fa+fb)/2)#\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "\n",
+ "#by using approximate error estimate\n",
+ "\n",
+ "#the second derivative of f\n",
+ "def g(x):\n",
+ " y=-400+4050*x-10800*x**2+8000*x**3\n",
+ " return y\n",
+ "\n",
+ "from sympy.mpmath import quad\n",
+ "f2x=quad(g,[0,0.8])/(b-a)##average value of second derivative\n",
+ "Ea=-(1/12)*(f2x)*(b-a)**3#\n",
+ "print \"The Error Et=\",round(Et,3)\n",
+ "print \"The percent relative error et=\",round(et,3),\"%\"\n",
+ "print \"The approximate error estimate without using the true value=\",Ea"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 21.2 Pg : 613"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The Error Et= 0.572\n",
+ "The percent relative error et= 34.85 %\n",
+ "The approximate error estimate without using the true value= 0.64\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=(0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5)\n",
+ " return y\n",
+ "a=0#\n",
+ "b=0.8#\n",
+ "tval=1.640533#\n",
+ "n=2#\n",
+ "h=(b-a)/n#\n",
+ "fa=f(a)#\n",
+ "fb=f(b)#\n",
+ "fh=f(h)#\n",
+ "l=(b-a)*(fa+2*fh+fb)/(2*n)#\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "\n",
+ "#by using approximate error estimate\n",
+ "\n",
+ "#the second derivative of f\n",
+ "def g(x):\n",
+ " y=-400+4050*x-10800*x**2+8000*x**3\n",
+ " return y\n",
+ "f2x=quad(g,[0,0.8])/(b-a)##average value of second derivative\n",
+ "Ea=-(1/12)*(f2x)*(b-a)**3/(n**2)#\n",
+ "print \"The Error Et=\",round(Et,3)\n",
+ "print \"The percent relative error et=\",round(et,3),\"%\"\n",
+ "print \"The approximate error estimate without using the true value=\",Ea"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex :21.3 Pg : 614"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "No. of segments= 10\n",
+ "Segment size= 1.0\n",
+ "Estimated d= 288.749146143 m\n",
+ "0.237014701487 et(%)\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 20\n",
+ "Segment size= 0.5\n",
+ "Estimated d= 289.263574224 m\n",
+ "0.0592795228803 et(%)\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 50\n",
+ "Segment size= 0.2\n",
+ "Estimated d= 298.382319223 m\n",
+ "et(%) -3.09125177877\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 100\n",
+ "Segment size= 0.1\n",
+ "Estimated d= 293.915596452 m\n",
+ "et(%) -1.54799665905\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 100\n",
+ "Segment size= 0.1\n",
+ "Estimated d= 293.915596452 m\n",
+ "et(%) -1.54799665905\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 200\n",
+ "Segment size= 0.05\n",
+ "Estimated d= 289.43343055 m\n",
+ "et(%) 0.000594070904571\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 200\n",
+ "Segment size= 0.05\n",
+ "Estimated d= 289.43343055 m\n",
+ "et(%) 0.000594070904571\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 500\n",
+ "Segment size= 0.02\n",
+ "Estimated d= 290.332334709 m\n",
+ "et(%) -0.309977799375\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 1000\n",
+ "Segment size= 0.01\n",
+ "Estimated d= 289.883809248 m\n",
+ "et(%) -0.155012011658\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 2000\n",
+ "Segment size= 0.005\n",
+ "Estimated d= 289.435129352 m\n",
+ "et(%) 7.13401428866e-06\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 2000\n",
+ "Segment size= 0.005\n",
+ "Estimated d= 289.435129352 m\n",
+ "et(%) 7.13401428866e-06\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 5000\n",
+ "Segment size= 0.002\n",
+ "Estimated d= 289.435143766 m\n",
+ "et(%) 2.15393877364e-06\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 5000\n",
+ "Segment size= 0.002\n",
+ "Estimated d= 289.435143766 m\n",
+ "et(%) 2.15393877364e-06\n",
+ "---------------------------------------------------------\n",
+ "No. of segments= 10000\n",
+ "Segment size= 0.001\n",
+ "Estimated d= 289.480018962 m\n",
+ "et(%) -0.0155022506708\n",
+ "---------------------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "g=9.8##m/s**2# acceleration due to gravity\n",
+ "m=68.1##kg\n",
+ "c=12.5##kg/sec# drag coefficient\n",
+ "def f(t):\n",
+ " from numpy import exp\n",
+ " v=g*m*(1-exp(-c*t/m))/c\n",
+ " return v\n",
+ "tval=289.43515##m\n",
+ "a=0#\n",
+ "b=10#\n",
+ "fa=f(a)#\n",
+ "fb=f(b)#\n",
+ "from numpy import arange, exp\n",
+ "for i in arange(10,21,10):\n",
+ " n=i#\n",
+ " h=(b-a)/n#\n",
+ " print \"No. of segments=\",i\n",
+ " print \"Segment size=\",h\n",
+ " j=a+h#\n",
+ " s=0#\n",
+ " while j<b:\n",
+ " s=s+f(j)#\n",
+ " j=j+h#\n",
+ " \n",
+ " l=(b-a)*(fa+2*s+fb)/(2*n)#\n",
+ " Et=tval-l##error\n",
+ " et=Et*100/tval##percent relative error\n",
+ " print \"Estimated d=\",l,\"m\"\n",
+ " print et,\"et(%)\"\n",
+ " print \"---------------------------------------------------------\"\n",
+ "\n",
+ "for i in arange(50,101,50):\n",
+ " n=i#\n",
+ " h=(b-a)/n#\n",
+ " print \"No. of segments=\",i\n",
+ " print \"Segment size=\",h\n",
+ " j=a+h#\n",
+ " s=0#\n",
+ " while j<b:\n",
+ " s=s+f(j)#\n",
+ " j=j+h#\n",
+ " \n",
+ " l=(b-a)*(fa+2*s+fb)/(2*n)#\n",
+ " Et=tval-l##error\n",
+ " et=Et*100/tval##percent relative error\n",
+ " print \"Estimated d=\",l,\"m\"\n",
+ " print \"et(%)\",et\n",
+ " print \"---------------------------------------------------------\"\n",
+ "\n",
+ "for i in arange(100,201,100):\n",
+ " n=i#\n",
+ " h=(b-a)/n#\n",
+ " print \"No. of segments=\",i\n",
+ " print \"Segment size=\",h\n",
+ " j=a+h#\n",
+ " s=0#\n",
+ " while j<b:\n",
+ " s=s+f(j)#\n",
+ " j=j+h#\n",
+ " \n",
+ " l=(b-a)*(fa+2*s+fb)/(2*n)#\n",
+ " Et=tval-l##error\n",
+ " et=Et*100/tval##percent relative error\n",
+ " print \"Estimated d=\",l,\"m\"\n",
+ " print \"et(%)\",et\n",
+ " print \"---------------------------------------------------------\"\n",
+ "\n",
+ "for i in arange(200,501,300):\n",
+ " n=i#\n",
+ " h=(b-a)/n#\n",
+ " print \"No. of segments=\",i\n",
+ " print \"Segment size=\",h\n",
+ " j=a+h#\n",
+ " s=0#\n",
+ " while j<b:\n",
+ " s=s+f(j)#\n",
+ " j=j+h#\n",
+ " \n",
+ " l=(b-a)*(fa+2*s+fb)/(2*n)#\n",
+ " Et=tval-l##error\n",
+ " et=Et*100/tval##percent relative error\n",
+ " print \"Estimated d=\",l,\"m\"\n",
+ " print \"et(%)\",et\n",
+ " print \"---------------------------------------------------------\"\n",
+ "\n",
+ "for i in arange(1000,2001,1000):\n",
+ " n=i#\n",
+ " h=(b-a)/n#\n",
+ " print \"No. of segments=\",i\n",
+ " print \"Segment size=\",h\n",
+ " j=a+h#\n",
+ " s=0#\n",
+ " while j<b:\n",
+ " s=s+f(j)#\n",
+ " j=j+h#\n",
+ " \n",
+ " l=(b-a)*(fa+2*s+fb)/(2*n)#\n",
+ " Et=tval-l##error\n",
+ " et=Et*100/tval##percent relative error\n",
+ " print \"Estimated d=\",l,\"m\"\n",
+ " print \"et(%)\",et\n",
+ " print \"---------------------------------------------------------\"\n",
+ "\n",
+ "for i in arange(2000,5001,3000):\n",
+ " n=i#\n",
+ " h=(b-a)/n#\n",
+ " print \"No. of segments=\",i\n",
+ " print \"Segment size=\",h\n",
+ " j=a+h#\n",
+ " s=0#\n",
+ " while j<b:\n",
+ " s=s+f(j)#\n",
+ " j=j+h#\n",
+ " \n",
+ " l=(b-a)*(fa+2*s+fb)/(2*n)#\n",
+ " Et=tval-l##error\n",
+ " et=Et*100/tval##percent relative error\n",
+ " print \"Estimated d=\",l,\"m\"\n",
+ " print \"et(%)\",et\n",
+ " print \"---------------------------------------------------------\"\n",
+ "\n",
+ "for i in arange(5000,10001,5000):\n",
+ " n=i#\n",
+ " h=(b-a)/n#\n",
+ " print \"No. of segments=\",i\n",
+ " print \"Segment size=\",h\n",
+ " j=a+h#\n",
+ " s=0#\n",
+ " while j<b:\n",
+ " s=s+f(j)#\n",
+ " j=j+h#\n",
+ " \n",
+ " l=(b-a)*(fa+2*s+fb)/(2*n)#\n",
+ " Et=tval-l##error\n",
+ " et=Et*100/tval##percent relative error\n",
+ " print \"Estimated d=\",l,\"m\"\n",
+ " print \"et(%)\",et\n",
+ " print \"---------------------------------------------------------\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 21.4 Pg : 618"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "l= 1.37\n",
+ "The Error Et= 0.27\n",
+ "The percent relative error et= 16.645 %\n",
+ "The approximate error estimate without using the true value= 0.273\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=(0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5)\n",
+ " return y\n",
+ "a=0#\n",
+ "b=0.8#\n",
+ "tval=1.640533#\n",
+ "n=2#\n",
+ "h=(b-a)/n#\n",
+ "fa=f(a)#\n",
+ "fb=f(b)#\n",
+ "fh=f(h)#\n",
+ "l=(b-a)*(fa+4*fh+fb)/(3*n)#\n",
+ "print\"l=\", round(l,2)\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "\n",
+ "#by using approximate error estimate\n",
+ "\n",
+ "#the fourth derivative of f\n",
+ "def g(x):\n",
+ " y=-21600+48000*x\n",
+ " return y\n",
+ "\n",
+ "f4x=quad(g,[0,0.8])/(b-a)##average value of fourth derivative\n",
+ "Ea=-(1/2880)*(f4x)*(b-a)**5#\n",
+ "print \"The Error Et=\",round(Et,2)\n",
+ "print \"The percent relative error et=\",round(et,3),\"%\"\n",
+ "print \"The approximate error estimate without using the true value=\",round(Ea,3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 23.5 Pg : 620"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "l= 1.62\n",
+ "The Error Et= 0.02\n",
+ "The percent relative error et= 1.04 %\n",
+ "The approximate error estimate without using the true value= 0.017\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=(0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5)\n",
+ " return y\n",
+ "a=0#\n",
+ "b=0.8#\n",
+ "tval=1.640533#\n",
+ "n=4#\n",
+ "h=(b-a)/n#\n",
+ "fa=f(a)#\n",
+ "fb=f(b)#\n",
+ "j=a+h#\n",
+ "s=0#\n",
+ "count=1#\n",
+ "while j<b:\n",
+ " if (-1)**count==-1:\n",
+ " s=s+4*f(j)#\n",
+ " else:\n",
+ " s=s+2*f(j)#\n",
+ " \n",
+ " count=count+1#\n",
+ " j=j+h#\n",
+ "\n",
+ "l=(b-a)*(fa+s+fb)/(3*n)#\n",
+ "print\"l=\", round(l,2)\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "\n",
+ "#by using approximate error estimate\n",
+ "\n",
+ "#the fou:rth derivative of f\n",
+ "def g(x):\n",
+ " y=-21600+48000*x\n",
+ " return y\n",
+ "f4x=quad(g,[0,0.8])/(b-a)##average value of fourth derivative\n",
+ "Ea=-(1/(180*4**4))*(f4x)*(b-a)**5#\n",
+ "print \"The Error Et=\",round(Et,2)\n",
+ "print \"The percent relative error et=\",round(et,3),\"%\"\n",
+ "print \"The approximate error estimate without using the true value=\",round(Ea,3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex :23.6 Pg : 625"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Part A:\n",
+ "l= 1.519\n",
+ "The Error Et= 0.12\n",
+ "The percent relative error et= 7.398 %\n",
+ "The approximate error estimate without using the true value= 0.121\n",
+ "---------------------------------------------------\n",
+ "Part B:\n",
+ "l= 1.645\n",
+ "The Error Et= -0.005\n",
+ "The percent relative error et= -0.277 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=(0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5)\n",
+ " return y\n",
+ "a=0#\n",
+ "b=0.8#\n",
+ "tval=1.640533#\n",
+ "#part a\n",
+ "n=3#\n",
+ "h=(b-a)/n#\n",
+ "fa=f(a)#\n",
+ "fb=f(b)#\n",
+ "j=a+h#\n",
+ "s=0#\n",
+ "count=1#\n",
+ "while j<b:\n",
+ " s=s+3*f(j)#\n",
+ " count=count+1#\n",
+ " j=j+h#\n",
+ "\n",
+ "l=(b-a)*(fa+s+fb)/(8)#\n",
+ "print \"Part A:\"\n",
+ "print \"l=\",round(l,3)\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "\n",
+ "#by using approximate error estimate\n",
+ "\n",
+ "#the fourth derivative of f\n",
+ "def g(x):\n",
+ " y=-21600+48000*x\n",
+ " return y\n",
+ "f4x=quad(g,[0,0.8])/(b-a)##average value of fourth derivative\n",
+ "Ea=-(1/6480)*(f4x)*(b-a)**5#\n",
+ "print \"The Error Et=\",round(Et,2)\n",
+ "print \"The percent relative error et=\",round(et,3),\"%\"\n",
+ "print \"The approximate error estimate without using the true value=\",round(Ea,3)\n",
+ "#part b\n",
+ "n=5#\n",
+ "h=(b-a)/n#\n",
+ "l1=(a+2*h-a)*(fa+4*f(a+h)+f(a+2*h))/6#\n",
+ "l2=(a+5*h-a-2*h)*(f(a+2*h)+3*(f(a+3*h)+f(a+4*h))+fb)/8#\n",
+ "l=l1+l2#\n",
+ "print \"---------------------------------------------------\"\n",
+ "print \"Part B:\"\n",
+ "print \"l=\", round(l,3)\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "print \"The Error Et=\", round(Et,3)\n",
+ "print \"The percent relative error et=\", round(et,3), \"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 23.7 Pg : 626"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "l= 1.59480096\n",
+ "The Error Et= 0.04573204\n",
+ "The percent relative error et= 2.78763304365 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=(0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5)\n",
+ " return y\n",
+ "tval=1.640533#\n",
+ "x=[0, 0.12, 0.22, 0.32, 0.36, 0.4 ,0.44 ,0.54 ,0.64 ,0.7 ,0.8]\n",
+ "func=[]\n",
+ "for i in range(0,11):\n",
+ " func.append(f(x[i]))#\n",
+ "\n",
+ "l=0#\n",
+ "for i in range(0,10):\n",
+ " l=l+(x[i+1]-x[i])*(func[i]+func[i+1])/2#\n",
+ "\n",
+ "print \"l=\",l\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "print \"The Error Et=\",Et\n",
+ "print \"The percent relative error et=\",et,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 23.8 Pg : 230"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "l= 1.60364091733\n",
+ "The Error Et= 0.0368920826667\n",
+ "The percent relative error et= 2.2487863802 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=(0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5)\n",
+ " return y\n",
+ "tval=1.640533#\n",
+ "x=[0, 0.12, 0.22, 0.32, 0.36, 0.4 ,0.44 ,0.54, 0.64, 0.7, 0.8]\n",
+ "func =[]\n",
+ "for i in range(0,11):\n",
+ " func.append(f(x[i]))\n",
+ "\n",
+ "l1=(x[1]-x[0])*((f(x[0])+f(x[1]))/2)#\n",
+ "l2=(x[3]-x[1])*(f(x[3])+4*f(x[2])+f(x[1]))/6#\n",
+ "l3=(x[6]-x[3])*(f(x[3])+3*(f(x[4])+f(x[5]))+f(x[6]))/8#\n",
+ "l4=(x[8]-x[6])*(f(x[6])+4*f(x[7])+f(x[8]))/6\n",
+ "l5=(x[9]-x[8])*((f(x[9])+f(x[8]))/2)#\n",
+ "l6=(x[10]-x[9])*((f(x[10])+f(x[9]))/2)#\n",
+ "l=l1+l2+l3+l4+l5+l6#\n",
+ "print \"l=\",l\n",
+ "Et=tval-l##error\n",
+ "et=Et*100/tval##percent relative error\n",
+ "print \"The Error Et=\",Et\n",
+ "print \"The percent relative error et=\",et,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 23.9 Pg : 629"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The average termperature is= 53.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x,y):\n",
+ " t=2*x*y+2*x-x**2-2*y**2+72\n",
+ " return t\n",
+ "Len=8##m,length\n",
+ "wid=6##m,width\n",
+ "a=0#\n",
+ "b=Len#\n",
+ "n=2#\n",
+ "h=(b-a)/n#\n",
+ "a1=0#\n",
+ "b1=wid#\n",
+ "h1=(b1-a1)/n#\n",
+ "\n",
+ "fa=f(a,0)#\n",
+ "fb=f(b,0)#\n",
+ "fh=f(h,0)#\n",
+ "lx1=(b-a)*(fa+2*fh+fb)/(2*n)#\n",
+ "\n",
+ "fa=f(a,h1)#\n",
+ "fb=f(b,h1)#\n",
+ "fh=f(h,h1)#\n",
+ "lx2=(b-a)*(fa+2*fh+fb)/(2*n)#\n",
+ "\n",
+ "fa=f(a,b1)#\n",
+ "fb=f(b,b1)#\n",
+ "fh=f(h,b1)#\n",
+ "lx3=(b-a)*(fa+2*fh+fb)/(2*n)#\n",
+ "\n",
+ "l=(b1-a1)*(lx1+2*lx2+lx3)/(2*n)#\n",
+ "\n",
+ "avg_temp=l/(Len*wid)#\n",
+ "print\"The average termperature is=\", avg_temp"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter22.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter22.ipynb
new file mode 100644
index 00000000..50a8dfb0
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter22.ipynb
@@ -0,0 +1,334 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-22 : Integration of Equations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:22.1 Pg: 624"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Error of the improved integral for segment 1 and 2 = 16.6449765615 %\n",
+ "Error of the improved integral for segment 4 and 2 = 1.04029198641 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "h = [0,0.8,0.4,0.2]#\n",
+ "I = [0,0.1728,1.0688,1.4848]#\n",
+ "E = [0,89.5,34.9,9.5]#\n",
+ "I1 = 4 * I[(2)] / 3 - I[(1)] / 3#\n",
+ "t = 1.640533#\n",
+ "et1 = t - I1 #\n",
+ "Et1 = et1 * 100/t#\n",
+ "print \"Error of the improved integral for segment 1 and 2 = \",Et1,\"%\"\n",
+ "I2 = 4 * I[(3)] / 3 - I[(2)] / 3#\n",
+ "et2 = t - I2 #\n",
+ "Et2 = et2 * 100/t#\n",
+ "print \"Error of the improved integral for segment 4 and 2 = \",Et2,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:22.2 Pg: 645"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Obtained integral which is the correct answer till the seventh decimal 1.64053366667\n"
+ ]
+ }
+ ],
+ "source": [
+ "I1 = 1.367467#\n",
+ "I2 = 1.623467#\n",
+ "I = 16 * I2 /15 - I1 / 15#\n",
+ "print \"Obtained integral which is the correct answer till the seventh decimal\",I"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:22.3 Pg: 645"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Integral obtained using gauss legendre formulae = 1.9648\n",
+ "error = -19.7659541137 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "#f(x) = 0.2 + 25*x - 200*x**2 + 675*x**3 - 900*x**4 + 400*x**5\n",
+ "# for using two point gauss legendre formulae, the intervals have to be changed to -1 and 1\n",
+ "#therefore, x = 0.4 + 0.4 * xd\n",
+ "#thus the integral is transferred to \n",
+ "#(0.2 + 25*(0.4+0.4*x) - 200*(0.4 + 0.4*x)**2 + 675*(0.4 + 0.4*x)**3 - 900*(0.4 + 0.4*x)**4 + 400*(0.4 + 0.4*x)**5)*0.4\n",
+ "#for three point gauss legendre formulae\n",
+ "x1 = -(1/3) ** 0.5#\n",
+ "x2 = (1/3) ** 0.5#\n",
+ "I1 = (0.2 + 25*(0.4+0.4*x1) - 200*(0.4 + 0.4*x1)**2 + 675*(0.4 + 0.4*x1)**3 - 900*(0.4 + 0.4*x1)**4 + 400*(0.4 + 0.4*x1)**5)*0.4#\n",
+ "I2 = (0.2 + 25*(0.4+0.4*x2) - 200*(0.4 + 0.4*x2)**2 + 675*(0.4 + 0.4*x2)**3 - 900*(0.4 + 0.4*x2)**4 + 400*(0.4 + 0.4*x2)**5)*0.4#\n",
+ "I = I1 + I2#\n",
+ "print \"Integral obtained using gauss legendre formulae =\",I\n",
+ "t = 1.640533#\n",
+ "e = (t - I)*100/t#\n",
+ "print \"error = \",e,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Ex:22.4 Pg: 647"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "integral obtained using three point gauss legendre formulae = 1.64053334735\n"
+ ]
+ }
+ ],
+ "source": [
+ "# f(x) = 0.2 + 25*x - 200*x**2 + 675*x**3 - 900*x**4 + 400*x**5\n",
+ "# for using three point gauss legendre formulae, the intervals have to be changed to -1 and 1\n",
+ "#therefore, x = 0.4 + 0.4 * xd\n",
+ "#thus the integral is transferred to \n",
+ "#(0.2 + 25*(0.4+0.4*x) - 200*(0.4 + 0.4*x)**2 + 675*(0.4 + 0.4*x)**3 - 900*(0.4 + 0.4*x)**4 + 400*(0.4 + 0.4*x)**5)*0.4\n",
+ "#for three point gauss legendre formulae\n",
+ "x1 = -0.7745967#\n",
+ "x2 = 0#\n",
+ "x3 = 0.7745967#\n",
+ "c0 = 0.5555556#\n",
+ "c1 = 0.8888889#\n",
+ "c2 = 0.5555556#\n",
+ "I1 = (0.2 + 25*(0.4+0.4*x1) - 200*(0.4 + 0.4*x1)**2 + 675*(0.4 + 0.4*x1)**3 - 900*(0.4 + 0.4*x1)**4 + 400*(0.4 + 0.4*x1)**5)*0.4#\n",
+ "I2 = (0.2 + 25*(0.4+0.4*x2) - 200*(0.4 + 0.4*x2)**2 + 675*(0.4 + 0.4*x2)**3 - 900*(0.4 + 0.4*x2)**4 + 400*(0.4 + 0.4*x2)**5)*0.4#\n",
+ "I3 = (0.2 + 25*(0.4+0.4*x3) - 200*(0.4 + 0.4*x3)**2 + 675*(0.4 + 0.4*x3)**3 - 900*(0.4 + 0.4*x3)**4 + 400*(0.4 + 0.4*x3)**5)*0.4#\n",
+ "I = c0 * I1 + c1 * I2 + c2 * I3#\n",
+ "print \"integral obtained using three point gauss legendre formulae = \",I"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:22.5 Pg: 647"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "integral by two point method = 320.657652324\n",
+ "integral by three point method = 289.439308244\n",
+ "integral by four point method = 289.435164941\n",
+ "integral by five point method = 289.435160633\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "#f(t) = g*m*(int(0,10,(1-exp(-c*t/m))))/c\n",
+ "#for using gauss quadrature method, limits are changed to -1 to 1 by replcing x = 5 + 5*xd\n",
+ "#the new integral obtained is\n",
+ "#(1 - exp(-c*(5 + 5*x)/m ))*5\n",
+ "g = 9.8#\n",
+ "c = 12.5#\n",
+ "m = 68.1#\n",
+ "#for two point method\n",
+ "x1 = -(1/3)**0.5#\n",
+ "x2 = (1/3)**0.5#\n",
+ "I1 = g*m*(1 - exp(-c*(5 + 5*x1)/m ))*5 / c#\n",
+ "I2 = g*m*(1 - exp(-c*(5 + 5*x2)/m ))*5 / c#\n",
+ "I = I1 + I2#\n",
+ "print \"integral by two point method = \",I\n",
+ "x1 = -0.7745967#\n",
+ "x2 = 0#\n",
+ "x3 = 0.7745967#\n",
+ "c0 = 0.5555556#\n",
+ "c1 = 0.8888889#\n",
+ "c2 = 0.5555556#\n",
+ "I1 = g*m*(1 - exp(-c*(5 + 5*x1)/m ))*5 / c#\n",
+ "I2 = g*m*(1 - exp(-c*(5 + 5*x2)/m ))*5 / c#\n",
+ "I3 = g*m*(1 - exp(-c*(5 + 5*x3)/m ))*5 / c#\n",
+ "I = c0*I1 + c1 * I2 + c2 * I3#\n",
+ "print \"integral by three point method =\",I\n",
+ "x1 = -0.861136312#\n",
+ "x2 = -0.339981044#\n",
+ "x3 = 0.339981044#\n",
+ "x4 = 0.861136312#\n",
+ "c1 = 0.3478548#\n",
+ "c2 = 0.6521452#\n",
+ "c3 = 0.6521452#\n",
+ "c4 = 0.3478548#\n",
+ "I1 = g*m*(1 - exp(-c*(5 + 5*x1)/m ))*5 / c#\n",
+ "I2 = g*m*(1 - exp(-c*(5 + 5*x2)/m ))*5 / c#\n",
+ "I3 = g*m*(1 - exp(-c*(5 + 5*x3)/m ))*5 / c#\n",
+ "I4 = g*m*(1 - exp(-c*(5 + 5*x4)/m ))*5 / c#\n",
+ "I = c1*I1 + c2 * I2 + c3 * I3 + c4 * I4#\n",
+ "print \"integral by four point method =\",I\n",
+ "x1 = -0.906179846#\n",
+ "x2 = -0.538469310#\n",
+ "x3 = 0#\n",
+ "x4 = 0.538469310#\n",
+ "x5 = 0.906179846\n",
+ "c1 = 0.2369269#\n",
+ "c2 = 0.4786287#\n",
+ "c3 = 0.5688889#\n",
+ "c4 = 0.4786287#\n",
+ "c5 = 0.2369269# \n",
+ "I1 = g*m*(1 - exp(-c*(5 + 5*x1)/m ))*5 / c#\n",
+ "I2 = g*m*(1 - exp(-c*(5 + 5*x2)/m ))*5 / c#\n",
+ "I3 = g*m*(1 - exp(-c*(5 + 5*x3)/m ))*5 / c#\n",
+ "I4 = g*m*(1 - exp(-c*(5 + 5*x4)/m ))*5 / c#\n",
+ "I5 = g*m*(1 - exp(-c*(5 + 5*x5)/m ))*5 / c#\n",
+ "I = c1*I1 + c2 * I2 + c3 * I3 + c4 * I4 + c5 * I5#\n",
+ "print \"integral by five point method =\",I"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:22.6 Pg: 649"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the value of first integral = 0.0\n",
+ "The value of second integral = 1.93292644948\n",
+ "Therefore the final result can be computed as : 0.771126085603\n",
+ "error = 8.34112853886 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp,pi\n",
+ "#N(x) = (int(-infinity,-2,exp(-(x**2)/2)) + int(-2,1,exp(-(x**2)/2)))/(2*pi)**0.5\n",
+ "#first integral can be solved as\n",
+ "#int(-infinity,-2,exp(-(x**2)/2)) = int(-0.5,0,exp(-1/(2*t**2))/t**2)\n",
+ "h = 1/8#\n",
+ "#int(-0.5,0,exp(-1/(2*t**2))/t**2) = h*(f(x-7/16) + f(x-5/16) + f(x-3/16) + f(x-1/16)) \n",
+ "t1 = -7/16#\n",
+ "t2 = -5/16#\n",
+ "t3 = -3/16#\n",
+ "t4 = -1/16#\n",
+ "m1 = exp(-1/(2*t1**2))/t1**2#\n",
+ "m2 = exp(-1/(2*t2**2))/t2**2#\n",
+ "m3 = exp(-1/(2*t3**2))/t3**2#\n",
+ "m4 = exp(-1/(2*t4**2))/t4**2#\n",
+ "I1 = h*(m1 + m2 + m3 + m4)#\n",
+ "print \"the value of first integral = \",I1\n",
+ "#simpsons 1/3rd sule is applied for the second integral\n",
+ "h1 = 0.5#\n",
+ "x1 = -2#\n",
+ "x2 = -1.5#\n",
+ "x3 = -1#\n",
+ "x4 = -0.5#\n",
+ "x5 = 0#\n",
+ "x6 = 0.5#\n",
+ "x7 = 1#\n",
+ "n1 = exp(-(x1**2)/2)#\n",
+ "n2 = exp(-(x2**2)/2)#\n",
+ "n3 = exp(-(x3**2)/2)#\n",
+ "n4 = exp(-(x4**2)/2)#\n",
+ "n5 = exp(-(x5**2)/2)#\n",
+ "n6 = exp(-(x6**2)/2)#\n",
+ "n7 = exp(-(x7**2)/2)#\n",
+ "I2 =(1-(-2)) * (n1 + 4 *(n2 + n4 + n6) + 2*(n3 + n5) + n7)/(18)#\n",
+ "print \"The value of second integral = \",I2\n",
+ "f = (I1 + I2)/(2 * pi)**0.5#\n",
+ "print \"Therefore the final result can be computed as :\",f\n",
+ "N = 0.8413#\n",
+ "e = (N - f) * 100 / N#\n",
+ "print \"error = \",e,\"%\""
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter23.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter23.ipynb
new file mode 100644
index 00000000..fd068f1e
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter23.ipynb
@@ -0,0 +1,271 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-23 : Numerical Differentiation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:23.1 Pg: 656"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [ 0. 0.25 0.5 0.75 1. ]\n",
+ "f(x) = [0, 1.2, 1.103515625, 0.92499999999999993, 0.63632812499999991, 0.19999999999999996]\n",
+ "by forward difference : -0.859375\n",
+ "error in forward difference method = 5.82191780822 %\n",
+ "by backward difference -0.878125\n",
+ "error in backward difference method = 3.76712328767 %\n",
+ "by central difference : -0.9125\n",
+ "error in central difference method = -2.43336553343e-14 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "#f(x) = -0.1*x**4 - 0.15*x**3 - 0.5 * x**2 - 0.25 *x + 1.2\n",
+ "h = 0.25#\n",
+ "t = -0.9125#\n",
+ "x = arange(0,1.1,h)\n",
+ "print \"x = \",x\n",
+ "fx=[0]\n",
+ "for xx in x:\n",
+ " fx.append(-0.1*xx**4 - 0.15*xx**3 - 0.5 * xx**2 - 0.25 *xx + 1.2)\n",
+ "print \"f(x) = \",fx\n",
+ "fd = (- fx[(5)] + 4*fx[(4)] - 3 * fx[(3)])/(2 * h)\n",
+ "efd = (t - fd) * 100 / t#\n",
+ "print \"by forward difference : \",fd\n",
+ "print \"error in forward difference method = \",efd,\"%\"\n",
+ "bd = (3 * fx[(3)] - 4 * fx[(2)] + fx[(1)])/ (2*h)\n",
+ "ebd = (t - bd) * 100 / t#\n",
+ "print \"by backward difference\",bd\n",
+ "print \"error in backward difference method = \",ebd,\"%\"\n",
+ "cdm = (-fx[(5)] + 8*(fx[(4)]) -8*fx[(2)] + fx[(1)] ) / (12*h)\n",
+ "ecdm = (t - cdm) * 100 / t\n",
+ "print \"by central difference : \",cdm\n",
+ "print \"error in central difference method = \",ecdm,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:23.2 Pg: 657"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x with h = 0.5 is [ 0. 0.5 1. ]\n",
+ "f(x) with h = 0.5 is [0, 1.2, 0.92499999999999993, 0.19999999999999996]\n",
+ "by central difference ( h = 0.5 ) -1.0\n",
+ "error in central difference method ( h = 0.5 ) = -9.58904109589 %\n",
+ "x with h = 0.25 is [ 0. 0.25 0.5 0.75 1. ]\n",
+ "fx with h = 0.25 is [0, 1.2, 1.103515625, 0.92499999999999993, 0.63632812499999991, 0.19999999999999996]\n",
+ "by central difference ( h = 0.25 ) = -0.934375 error in central difference method ( h = 0.25 ) = -2.39726027397 %\n",
+ "improved estimate = -0.9125\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "#f(x) = -0.1*x**4 - 0.15*x**3 - 0.5 * x**2 - 0.25 *x + 1.2\n",
+ "h = 0.5#\n",
+ "t = -0.9125#\n",
+ "x = arange(0,1.1,h)\n",
+ "print \"x with h = 0.5 is\",x\n",
+ "fx=[0]\n",
+ "for xx in x:\n",
+ " fx.append(-0.1*xx**4 - 0.15*xx**3 - 0.5 * xx**2 - 0.25 *xx + 1.2)\n",
+ "print \"f(x) with h = 0.5 is\",fx\n",
+ "cdm = (fx[(3)] - fx[(1)])/ 1#\n",
+ "ecdm = (t - cdm) * 100 / t#\n",
+ "print \"by central difference ( h = 0.5 ) \",cdm\n",
+ "print \"error in central difference method ( h = 0.5 ) = \",ecdm,\"%\"\n",
+ "h1 = 0.25#\n",
+ "x1 = arange(0,1.1,h1)\n",
+ "print \"x with h = 0.25 is\",x1\n",
+ "fx1=[0]\n",
+ "for xx in x1:\n",
+ " fx1.append(-0.1*xx**4 - 0.15*xx**3 - 0.5 * xx**2 - 0.25 *xx + 1.2)\n",
+ "print \"fx with h = 0.25 is\",fx1\n",
+ "cdm1 = (fx1[(4)] - fx1[(2)])/ (2*h1)\n",
+ "ecdm1 = (t - cdm1) * 100 / t#\n",
+ "print \"by central difference ( h = 0.25 ) = \",cdm1,\n",
+ "print \"error in central difference method ( h = 0.25 ) = \",ecdm1,\"%\"\n",
+ "D = 4 * cdm1 /3 - cdm / 3#\n",
+ "print \"improved estimate =\",D"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:23.3 Pg: 658"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(dT/dz) = -1.33333333333 C/cm\n",
+ "q(z = 0) = 70.56 W/m**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "#q(z = 0) = -k*p*C*(dT/dz)/(z = 0)\n",
+ "k = 3.5 * 10** - 7##m**2/s\n",
+ "p = 1800##kg/m**3\n",
+ "C = 840# #(J/(kg.C))\n",
+ "x = 0#\n",
+ "fx0 = 13.5#\n",
+ "fx1 = 12#\n",
+ "fx2 = 10#\n",
+ "x0 = 0#\n",
+ "x1 = 1.25#\n",
+ "x2 = 3.75#\n",
+ "dfx = fx0 *(2*x - x1 - x2)/((x0 - x1)*(x0 - x2)) + fx1 *(2*x - x0 - x2)/((x1 - x0)*(x1 - x2)) + fx2 *(2*x - x1 - x0)/((x2 - x1)*(x2 - x0))#\n",
+ "print \"(dT/dz) = \",dfx,\"C/cm\"\n",
+ "q = - k * p *C * dfx*100#\n",
+ "print \"q(z = 0) =\",q,\"W/m**2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:23.4 Pg: 662"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Q= 1.64053333333333\n",
+ "intergral= -1.40920096\n",
+ "diff(x)= [ 0.12 0.1 0.1 0.04 0.04 0.04 0.1 0.1 0.06 0.1 ]\n",
+ "d= [ 9.247744 -0.04488 4.38152 8.287744 9.527424 9.674624\n",
+ " 6.64312 -3.25368 -13.648816 -21.31 ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy.mpmath import quad\n",
+ "from numpy import trapz,diff\n",
+ "def f(x):\n",
+ " y=0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5\n",
+ " return y\n",
+ "a=0#\n",
+ "b=0.8#\n",
+ "Q=quad(f,[0,0.8])\n",
+ "print \"Q=\",Q\n",
+ "x=[0, 0.12 ,0.22 ,0.32 ,0.36 ,0.4 ,0.44 ,0.54 ,0.64, 0.7 ,0.8]\n",
+ "y=[]\n",
+ "for xx in x:\n",
+ " y.append(f(xx))\n",
+ "integral=trapz(x,y)\n",
+ "print \"intergral=\",integral\n",
+ "print \"diff(x)=\",diff(x)\n",
+ "d=diff(y)/diff(x)#\n",
+ "print \"d=\",d"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:23.5 Pg: 664"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Computed= 1.64053333333333\n",
+ "Error estimate= 2.03185997099678e-5\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from sympy.mpmath import quad\n",
+ "def f(x):\n",
+ " y=0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5\n",
+ " return y\n",
+ "a=0#\n",
+ "b=0.8#\n",
+ "Qt=1.640533#\n",
+ "Q=quad(f,[0,0.8])\n",
+ "print \"Computed=\",Q\n",
+ "Er=abs(Q-Qt)*100/Qt\n",
+ "print \"Error estimate=\",Er"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter25.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter25.ipynb
new file mode 100644
index 00000000..e4e7a3f4
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter25.ipynb
@@ -0,0 +1,178 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-25 : Runge-Kutta Methods"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:25.1 Pg: 708"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. ]\n",
+ "\n",
+ "true values of y = [1.0, 3.21875, 3.0, 2.21875, 2.0, 2.71875, 4.0, 4.71875, 3.0]\n",
+ "\n",
+ "y by euler method = [1.0, 5.25, 5.875, 5.125, 4.5, 4.75, 5.875, 7.125, 7.0]\n",
+ "\n",
+ "error = [0.0, -63.106796116504853, -95.833333333333329, -130.98591549295776, -125.0, -74.712643678160916, -46.875, -50.993377483443709, -133.33333333333334]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "#dy/dx = -2*x**3 + 12*x**2 - 20*x + 8.5\n",
+ "#therefore, y = -0.5*x**4 + 4*x**3 - 10*x**2 + 8.5 + c\n",
+ "x1 = 0#\n",
+ "y1 = 1#\n",
+ "h = 0.5#\n",
+ "c =-(-0.5*x1**4 + 4*x1**3 - 10*x1**2 + 8.5*x1 - y1)#\n",
+ "x = arange(0,4.1,0.5)\n",
+ "print \"x = \",x\n",
+ "y=[]\n",
+ "for xx in x:\n",
+ " y.append(-0.5*xx**4 + 4*xx**3 - 10*xx**2 + 8.5*xx + c)\n",
+ "print \"\\ntrue values of y = \",y\n",
+ "fxy=[]\n",
+ "for xx in x:\n",
+ " fxy.append(-2*xx**3 + 12*xx**2 - 20*xx + 8.5)\n",
+ "y2=[y[0]]\n",
+ "e = [(y[0] - y2[0]) * 100 / y[0]]\n",
+ "for i in range(1,9):\n",
+ " y2.append(y2[(i-1)] + fxy[(i-1)]*h)\n",
+ " e.append((y[(i)] - y2[(i)])*100/y[(i)])\n",
+ "\n",
+ "print \"\\ny by euler method =\",y2\n",
+ "print \"\\nerror =\",e"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:25.2 Pg: 712"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total truncation error = -2.03125\n"
+ ]
+ }
+ ],
+ "source": [
+ "#f(x,y) = dy/dx = -2*x**3 + 12*x**2 - 20*x + 8.5\n",
+ "#f'(x,y) = -6*x**2 + 24*x - 20\n",
+ "#f\"(x,y) = -12*x + 24\n",
+ "#f\"'(x,y) = -12\n",
+ "x = 0#\n",
+ "Et2 = (-6*x**2 + 24*x - 20) * 0.5**2 / 2\n",
+ "Et3 = (-12*x + 24) * (0.5)**3 / 6#\n",
+ "Et4 = (-12) *(0.5 ** 4) / 24#\n",
+ "Et = Et2 + Et3 + Et4#\n",
+ "print \"Total truncation error =\",Et"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:25.3 Pg: 713"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [ 0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. 2.25 2.5 2.75\n",
+ " 3. 3.25 3.5 3.75 4. ]\n",
+ "\n",
+ "true values of y = [1.0, 2.560546875, 3.21875, 3.279296875, 3.0, 2.591796875, 2.21875, 1.998046875, 2.0, 2.248046875, 2.71875, 3.341796875, 4.0, 4.529296875, 4.71875, 4.310546875, 3.0]\n",
+ "\n",
+ "y by euler method = [1.0, 3.125, 4.1796875, 4.4921875, 4.34375, 3.96875, 3.5546875, 3.2421875, 3.125, 3.25, 3.6171875, 4.1796875, 4.84375, 5.46875, 5.8671875, 5.8046875, 5.0]\n",
+ "\n",
+ "error = [0.0, -22.04424103737605, -29.854368932038835, -36.986301369863014, -44.791666666666664, -53.127354935945739, -60.2112676056338, -62.267839687194524, -56.25, -44.569939183318851, -33.045977011494251, -25.073056691992985, -21.09375, -20.741699008193187, -24.337748344370862, -34.662437698232893, -66.666666666666671]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "#dy/dx = -2*x**3 + 12*x**2 - 20*x + 8.5\n",
+ "#therefore, y = -0.5*x**4 + 4*x**3 - 10*x**2 + 8.5 + c\n",
+ "x1 = 0#\n",
+ "y1 = 1#\n",
+ "h = 0.25#\n",
+ "c =-(-0.5*x1**4 + 4*x1**3 - 10*x1**2 + 8.5*x1 - y1)#\n",
+ "xx = arange(0,4.1,h)\n",
+ "print \"x = \",xx\n",
+ "y=[]\n",
+ "for x in xx:\n",
+ " y.append(-0.5*x**4 + 4*x**3 - 10*x**2 + 8.5*x + c)\n",
+ "print \"\\ntrue values of y = \",y\n",
+ "fxy=[]\n",
+ "for x in xx:\n",
+ " fxy.append(-2*x**3 + 12*x**2 - 20*x + 8.5)\n",
+ "y2= [y[0]]\n",
+ "e = [(y[0] - y2[0]) * 100 / y[0]]\n",
+ "for i in range(1,17):\n",
+ " y2.append(y2[(i-1)] + fxy[(i-1)]*h)\n",
+ " e.append((y[(i)] - y2[(i)])*100/y[(i)])\n",
+ "\n",
+ "print \"\\ny by euler method =\",y2\n",
+ "print \"\\nerror =\",e"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter26.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter26.ipynb
new file mode 100644
index 00000000..b52f1078
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter26.ipynb
@@ -0,0 +1,401 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter-26 : Stiffness & Multi step Methods"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:26.1 Pg: 754"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\ngCEiIkX5P35bsBSB1IexAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fbf23e04950>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEZCAYAAABiu9n+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHhFJREFUeJzt3X2QVdWZ7/HvQ4MvIEQNBiJqKA1xRKXQBORF5AhGWxjT\nxoxxSDJTGS1HM4XzUqlEnamSvnVnrLEmM9dktCLXt4neO1oBEcEgqJFjEBFEUaICAZUAYkRU3kSx\noZ/5Y51jtydnd5/uPnvvs/v8PlW7OC/r7H560/SPtdbea5u7IyIiUk6ftAsQEZHapZAQEZFICgkR\nEYmkkBARkUgKCRERiaSQEBGRSAoJERGJpJAQSZiZNZvZ/WnXIVIJhYSIiERSSEhdM7Mfmdncktd+\nZma3lml7vZnNKXntp2b208Lj75vZ62a2x8zeMLPvlNlHI3AjcIWZ7TWzNdX9jkSqy7Qsh9QzMxsK\nbAKGuftuM+sLvAU0uvuakrYnAeuAIe6+z8wagK3ApcCrwHbga+6+0cyGAJ9399fKfM1ZwCnu/pex\nfnMiVaCehNQ1d/8DsAy4vPBSI/BuaUAU2m4BXgS+WXhpCrDf3VcVnrcCZ5rZke7+TrmAKLDCJlLz\nFBIi8Avge4XH3wM6mlT+b2BG4fF3gP8P4O4fAlcA1wLbzexRMzs1nnJFkqPhJql7ZnYkYYjpPGAF\ncJq7b4toexzwe2AE8Aowzt03lLQ5HPgXYKy7n1dmHzcBI9z9L6r6jYjEQD0JqXvu/hHwEKGXsDIq\nIApt3wXywH8BbxQDwsy+YGZNZjYAaAE+BA5F7OYdYLiZachJap5CQiT4BXAGHQ81Ff03MLXwZ1Ef\n4B8IPZL3gEnADyI+XzxD6j0zW92takUSEutwk5ndA0wHdrj7mWXeHwz8P2Ao0Bf4ibv/V2wFiUQw\nsxOB9RTOXEq7HpFaEXdP4l7C2SJRZgJr3H00kAP+vXAKokhizKwP8EPgAQWEyGfF+gvZ3ZeZ2fAO\nmrwNjCo8HgS85+4H46xJpL3CHMI7wJt0/B8akbqU9v/a7wSeMrPtwEDg2ynXI3WmcOrqUWnXIVKr\n0p64/kfgJXc/HhgN3G5mA1OuSURECtLuSUwgnE+Ou79uZm8CpwKfOePDzHQxh4hIN7h7j061Trsn\nsR64AKCw1s2pwBvlGrp7TW2zZs1KvYYs1FSrdakm1VQPdVVDrD0JM3sAmAwMNrOtwCygH4C7zwZu\nBu41s5cJgfVjd38/zppERKRycZ/dNKOT93cCl8RZg4iIdF/aw02Zlcvl0i7hj9RiTVCbdammyqim\nytVqXT2ViQX+zMyzUKeISC0xMzzjE9ciIlLDFBIiIhJJISEiIpEUEiIiEkkhISIikRQSIiISSSEh\nIiKRFBIiIhJJISEiIpEUEiIiEkkhISLSTS0t8PzzcPvt0NqadjXxSPumQyIimbFjB6xYEbZnn4UX\nX4STT4YJE2D/fjiqF94IVwv8iYiUcegQvPZaCIPitnMnjBsH48eHYBg7FgYNSrvSaNVY4E8hISIC\n7NkDK1e2BcLKlTB0aAiDCRNCMJx2GvTJ0CB9zYeEmd0DTAd2uPuZEW1ywP8h3LFup7vnyrRRSIhI\n1bjD5s2wfHkIhOXL4fXX4atf/WwoDB6cdqU9k4WQmATsA+4rFxJmdjSwHLjI3beZ2eDC3epK2ykk\nRKTbWlpgzZoQBsVgcIeJE9u20aPhsMPSrrS6aj4kAMxsOLAwIiT+Bhjq7jd1sg+FhIhUbNeuMLn8\nzDMhFFavDhPM7UNh+HCwHv36rH3VCIm0z24aAfQzs6XAQOCn7n5/yjWJSIa4w+9/H8LgmWfCtnkz\njBkTwuCGG8Jk89FHp11pNqUdEv2As4GpQH9ghZk95+4bSxs2Nzd/+jiXy/Xa+8mKSMcOHYLf/rYt\nEJ55Bg4ehHPPDaFw5ZVh6Khfv7QrTV4+nyefz1d1n2kPN10PHOnuzYXndwGL3X1uSTsNN4nUqY8+\nglWrYNmyEAgrVsDxx4dQKG4nn9z7h466ozcMNz0C3GZmDcDhwDnAf6Rbkoik6f3323oIy5bB2rVw\nxhkwaRJcey3cfz8cd1zaVdaPWEPCzB4AJgODzWwrMIswxIS7z3b39Wa2GFgLtAJ3uvtrcdYkIrVl\n69YQBsVtyxY455wQCjffHC5YGzAg7Srrly6mE5HEuMPvfge/+U1bKOzbFwKhuI0eDX3THuPoJTJx\nCmw1KCREsunQoTBc1D4UjjwyhMF554U/Tz1V8wlxUUiISE355JNwTcJvfhO2Z58Nk8ztQ+Gkk9Ku\nsn4oJEQkVR99FNY4evrpEAqrVsGIEW2BMGkSfOELaVdZvxQSIpKofftC76AYCmvWhDOPJk8OwTBx\noi5aqyUKCRGJ1e7d4Urmp58O2yuvwFlnhVCYPDksgtcb76HQWygkRKSqdu0Kk8tPPw35PKxfH05B\nLfYUxo0LE8+SDQoJEemRDz4Iw0bFUNi4MQRBsacwdiwcfnjaVUp3KSREpEs++CD0FPJ5WLo03ENh\n/PgQCLkcfO1rvW+57HqmkBCRDhWHj4qhsHFjCIXzz28LhXpcCK9eKCRE5DP27AmhsHRpCIYNG8Lw\nUftQUE+hfigkROrchx+GhfCWLg3bq6+GeYTzzw/bmDGaU6hnCgmROvPxx2Gp7KeeCqHw0ktw9tkw\nZUroKYwbB0cckXaVUisUEiK93CefwPPPh1B46qnw+MwzQy9hyhSYMAH690+7SqlVCgmRXubQodA7\nKIbC8uXw5S+HUJg6NdxgZ9CgtKuUrFBIiGScO6xb1xYK+TwMHRp6CVOmhFNTP//5tKuUrFJIiGTQ\nli3w61+H7amnwtlGU6e2BcMXv5h2hdJb1HxImNk9wHRgR7l7XLdrNwZYAXzb3eeVeV8hIZm1c2eY\nZH7yyRAMe/a0BcLUqbo/s8QnCyExCdgH3BcVEoX7Wz8B7AfudfeHyrRRSEhm7N8frlX49a9DMGza\nFNY9mjo1bGecAX36pF2l1INqhESsNwl092VmNryTZtcBc4ExcdYiEpeDB+GFF0IgPPlkOAPp7LND\nIPznf4brFnRVs2RVqneSNbNhQBMwhRAS6i5IzSvep7kYCvl8uNvaBRfAj34Ueg1aPlt6i7RvN34r\ncIO7u5kZENktam5u/vRxLpcjl8vFXpxI0Y4dIRCeeCL8aRZC4fLL4Y47YMiQtCsUgXw+Tz6fr+o+\nYz+7qTDctLDcnISZvUFbMAwmzEtc7e4LStppTkISVZxXeOKJsG3ZEq5ovuAC+PrXwy06Ndksta7m\n5yQ64+4nFx+b2b2EMFnQwUdEYtHaGm7FWQyFVatg9OgQCHfcEdZA6pt2v1skBbH+2JvZA8BkYLCZ\nbQVmAf0A3H12nF9bpDNbt4ZAePzxcCbS4MEhFP7+70OvYeDAtCsUSZ8uppO6sW9fuAPb44+H7d13\nw/DRhReGcDjxxLQrFKmumr9OoloUEtIdra1hHaTHH4clS8KpqWPGhFC48EI46yxdryC9m0JCpMTb\nb7f1FJ54Ao49NgTCRReFdZB0aqrUE4WE1L0DB8JNd5YsCduWLeEitosuCuHwpS+lXaFIehQSUnfc\nw32aFy8OobBsGZx+egiFiy7SWUgi7SkkpC7s2RNWS12yJITDwYNtoTB1ahhSEpE/lvnrJETKcYeX\nXw6BsHhxWBdp/PgQCo8+CiNH6kI2kaSoJyE14f33w2RzcRhp4EBobAzb5MkwYEDaFYpkj4abJLNa\nW2H1anjssRAMr74awqAYDKecknaFItmnkJBM2bkz9BIeeyz8edxxcPHFYTv3XDjiiLQrFOldFBJS\n04q9hUWLQjCsXw/nnx9CobFRp6eKxE0hITWnOLewaFEYRir2FqZNC72Fww5Lu0KR+qGQkNS5h6Uv\nHnssBMPatWFxvGnTQjiotyCSHoWEpGLv3nDjnV/9KgTDgAEwfXoIhvPO09yCSK1QSEgiirfrLIbC\nqlXhuoVp08I2YkTaFYpIOQoJic2BA2FZ7V/9KmwHDoRAmD4dpkzRQnkiWaArrqWqtm9vC4WlS+GM\nM+BP/xTmzYMzz9RVziL1KNaehJndA0wHdkTc4/q7wI8J97neC/zA3deWaaeeRAyKp6g++mjYNm8O\nS19Mnx5OUR08OO0KRaQnan64ycwmAfuA+yJCYjzwmrvvNrNGoNndx5Vpp5Cokr17w30WHn00zC8c\ne2zoLUyfDhMnagVVkd6k5kMCwMyGAwvLhURJu2OA37r7CWXeU0j0wJtvtvUWnn02TDoXg0HLX4j0\nXr1tTuIqYFHaRfQGhw7BypWwcGHYduwIgXDNNTB3blg8T0SkEjUREmZ2PnAlMDGqTXNz86ePc7kc\nuVwu9rqyZO/ecKXzwoVhGGnoULjkErjzThg7Fhoa0q5QROKWz+fJ5/NV3Wfqw01mNgqYBzS6+6aI\nNhpuKmPLlrbeQnEY6ZJLwlDS8OFpVyciacv8cJOZnUQIiO9FBYS0aW2FF1+EBQtCMGzdGoaRrr4a\n5szRMJKIVF/cZzc9AEwGBgPvALOAfgDuPtvM7gK+CWwpfKTF3ceW2U/d9iQ+/jhcs/DIIyEYjjoK\nmppCj2H8eJ2NJCLRMnF2UzXUW0js3BnmFR55JKyRNGpUWzCcemra1YlIVigkepFNm0IoPPJIuL/z\n1KnwjW+E4aTjjku7OhHJIoVEhhWvdi4Gw86dIRSamkJAaCVVEekphUTGHDgQ5hfmzw+Tz5/7XAiF\npiY45xzo0yftCkWkN8n82U31YPfucEOe+fPDndpOPz2EwtKlml8QkdqnnkQMtm8PPYX588P1C5Mm\nwaWXhonnoUPTrk5E6oWGm2rI734HDz8ctg0bwr0XLr00rKaq6xdEJA0KiRS5wwsvhN7Cww/DBx+E\nULj00nCP58MOS7tCEal3ComEHToEzzwTbsIzfz4cfjh885thGztWE88iUls0cZ2AAwfCBW0PPxzm\nGU44AS67LFzsNnKk7tYmIr2behJl7N0bzkiaNy+ckTRqVFuPQQvniUhWaLipit5/P6yNNG9eOD11\nwoTQY2hqgiFDYv3SIiKxUEj00B/+EOYW5s2D554LVzp/61thqe2jj676lxMRSZRCohu2b4eHHgpL\na69dG05VvewyuPhiGDCgKl9CRKQmKCQq9NZbbcHwyivhorbLL4cLLwxnKImI9EYKiQ60tsJ998Fd\nd8Frr7UFw9e/rmAQkfpQ86fAmtk9wHRgRwe3L/0ZcDGwH/i+u6/p6dfdtCncrW3/frjpphAMurhN\nRKTr4r78616gMepNM5sGfNndRwB/Dfy8J1/s4EH4yU9g3Liw7Pazz4b7MSggRES6J9aehLsvM7Ph\nHTT5BvCLQtuVZna0mQ1x93e6+rXWroWrroJBg2DVKjj55O7VLCIibdJeSGIYsLXd823ACV3ZwYED\nYUjpggvg2mvD1dEKCBGR6qiFZTlKJ1UqnqHevz/crOeUU+Cll+D446tcmYhInUs7JN4CTmz3/ITC\na3+kubn508e5XI5cLseWLfDRR2FdJa2hJCL1Lp/Pk8/nq7rP2E+BLcxJLCx3dlNh4nqmu08zs3HA\nre4+rky7sqfArlwJ110X5iBEROSzsnAK7APAZGCwmW0FZgH9ANx9trsvMrNpZrYJ+BD4q67sf9eu\ncJ9oERGJR9xnN82ooM3M7u5/926tsSQiEqe0z27qkd271ZMQEYlTpkNCw00iIvHKdEhouElEJF6Z\nDwn1JERE4pPpkNBwk4hIvDIdEhpuEhGJV6chYWZ/a2bHJFFMV2m4SUQkXpX0JIYAz5vZL82s0ax2\nFsDQcJOISLw6DQl3/yfgK8A9wPeBjWZ2s5mdEnNtndJwk4hIvCqak3D3VuAPwDvAIeAYYK6Z/VuM\ntXVKPQkRkXh1usCfmf0d8JfAe8BdwMPu3mJmfYCN7h57j6LcAn+trdCvX7ifRN+017IVEalBSS3w\ndyxwmbv/vv2L7t5qZpf05Iv3xL590L+/AkJEJE6d/op191kdvPdadcupnIaaRETil9nrJDRpLSIS\nv0yHhHoSIiLxymxIaLhJRCR+sYZE4eK79Wa20cyuL/P+YDNbbGYvmdkrZvb9Svet4SYRkfjFFhJm\n1gDcBjQCI4EZZnZaSbOZwBp3Hw3kgH83s4rOV9Jwk4hI/OLsSYwFNrn7ZndvAR4EmkravA0MKjwe\nBLzn7gcr2bmGm0RE4hfnVQbDgK3tnm8DzilpcyfwlJltBwYC365057t3wzE1ueygiEjvEWdPouNL\nuYN/BF5y9+OB0cDtZjawkp2rJyEiEr84exJvASe2e34ioTfR3gTgXwDc/XUzexM4FVhdurPm5uZP\nH+dyOXbvzmniWkSknXw+Tz6fr+o+O127qds7DhPQG4CpwHZgFTDD3de1a/MfwG53/19mNgR4ARjl\n7u+X7OuP1m66+GK47jqYNi2W8kVEMi+ptZu6xd0PmtlMYAnQANzt7uvM7JrC+7OBm4F7zexlwtDX\nj0sDIoqGm0RE4hdbT6KayvUkRo6EOXPg9NNTKkpEpMZVoyeR2SuudZ2EiEj8MhsSGm4SEYlfJkOi\npSXcbOioo9KuRESkd8tkSOzZA4MGgfVopE1ERDqTyZDYtUuL+4mIJCGTIaFJaxGRZCgkREQkUiZD\nQsNNIiLJyGRIqCchIpKMTIaErpEQEUlGJkNCty4VEUlGZkNCPQkRkfhlMiQ03CQikoxMhoSGm0RE\nkpHZkFBPQkQkfpkMCV0nISKSjFhDwswazWy9mW00s+sj2uTMbI2ZvWJm+Ur2q56EiEgyYrt9qZk1\nALcBFwBvAc+b2YKSe1wfDdwOXOTu28xscCX7VkiIiCQjzp7EWGCTu2929xbgQaCppM13gIfcfRuA\nu+/sbKfuOrtJRCQpcYbEMGBru+fbCq+1NwI41syWmtlqM/uLznb68cfQpw8ccUQVKxURkbJiG24C\nvII2/YCzgalAf2CFmT3n7htLGzY3NwOwdy8ceWQOyFWrThGRXiGfz5PP56u6T3Ov5Hd5N3ZsNg5o\ndvfGwvMbgVZ3v6Vdm+uBI929ufD8LmCxu88t2ZcX61y/HpqaYMOGWMoWEek1zAx379E9POMcbloN\njDCz4WZ2GHAFsKCkzSPAuWbWYGb9gXOA1zraqSatRUSSE9twk7sfNLOZwBKgAbjb3deZ2TWF92e7\n+3ozWwysBVqBO929w5DQpLWISHJiG26qpvbDTb/8JcyZEzYREYlW68NNsdBwk4hIcjIXElqSQ0Qk\nOZkLCfUkRESSo5AQEZFImQsJDTeJiCQncyGhnoSISHIUEiIiEilzIaHhJhGR5GQuJNSTEBFJTuZC\nQj0JEZHkZGpZjtZW6NcPPvkEGhrSrkpEpLbV3bIc+/ZB//4KCBGRpGQqJDTUJCKSrEyFhCatRUSS\npZAQEZFImQoJDTeJiCQr1pAws0YzW29mGwv3s45qN8bMDprZZR3tTz0JEZFkxRYSZtYA3AY0AiOB\nGWZ2WkS7W4DFQIenaikkRESSFWdPYiywyd03u3sL8CDQVKbddcBc4N3OdqjhJhGRZMUZEsOAre2e\nbyu89ikzG0YIjp8XXurwyj71JEREktU3xn1Xcin3rcAN7u5mZnQw3NTc3MyTT8IXvwj5fI5cLlet\nOkVEeoV8Pk8+n6/qPmNblsPMxgHN7t5YeH4j0Orut7Rr8wZtwTAY2A9c7e4LSvbl7s6f/zk0NcGM\nGbGULCLSq1RjWY44exKrgRFmNhzYDlwBfObXu7ufXHxsZvcCC0sDoj0NN4mIJCu2kHD3g2Y2E1gC\nNAB3u/s6M7um8P7sru5TE9ciIsnK1CqwI0fCnDlw+ulpVyQiUvvqbhVYDTeJiCQrUyGh4SYRkWRl\nJiRaWuDAARgwIO1KRETqR2ZCYs8eGDQIrEejayIi0hWZCQkNNYmIJC8zIaFJaxGR5GUmJNSTEBFJ\nXmZCQj0JEZHkKSRERCRSZkJCw00iIsnLTEioJyEikjyFhIiIRMpMSGi4SUQkeZkJCfUkRESSl6mQ\nUE9CRCRZmQmJXbvUkxARSVrsIWFmjWa23sw2mtn1Zd7/rpm9bGZrzWy5mY0qtx8NN4mIJC/WkDCz\nBuA2oBEYCcwws9NKmr0BnOfuo4D/DfzfcvvScJOISPLi7kmMBTa5+2Z3bwEeBJraN3D3Fe6+u/B0\nJXBCuR1puElEJHlxh8QwYGu759sKr0W5ClhU7o0+feDww6tYmYiIdKpvzPv3Shua2fnAlcDEcu/3\n7dtMc3N4nMvlyOVyPS5ORKQ3yefz5PP5qu7T3Cv+Pd71nZuNA5rdvbHw/Eag1d1vKWk3CpgHNLr7\npjL78a98xdmwIbZSRUR6HTPD3Xt0P8+4h5tWAyPMbLiZHQZcASxo38DMTiIExPfKBUSR5iNERJIX\n63CTux80s5nAEqABuNvd15nZNYX3ZwM3AccAP7dwA+sWdx9bui+d2SQikrxYh5uqxcz8z/7MmTMn\n7UpERLIjC8NNVaOehIhI8jITEpqTEBFJnkJCREQiZSYkNNwkIpK8zISEehIiIslTSIiISKTMhISG\nm0REkpeZkFBPQkQkeQoJERGJlJmQ0HCTiEjyMhMSgwalXYGISP3JTEg0NKRdgYhI/clMSIiISPIU\nEiIiEkkhISIikWINCTNrNLP1ZrbRzK6PaPOzwvsvm9lZcdYjIiJdE1tImFkDcBvQCIwEZpjZaSVt\npgFfdvcRwF8DP4+rnmqr9s3Gq6EWa4LarEs1VUY1Va5W6+qpOHsSY4FN7r7Z3VuAB4GmkjbfAH4B\n4O4rgaPNbEiMNVVNLf5A1GJNUJt1qabKqKbK1WpdPRVnSAwDtrZ7vq3wWmdtToixJhER6YI4Q6LS\nm2eX3n+19m+6LSJSJ8w9nt/JZjYOaHb3xsLzG4FWd7+lXZs7gLy7P1h4vh6Y7O7vlOxLwSEi0g3u\nXvof8S7pW61CylgNjDCz4cB24ApgRkmbBcBM4MFCqOwqDQjo+TcpIiLdE1tIuPtBM5sJLAEagLvd\nfZ2ZXVN4f7a7LzKzaWa2CfgQ+Ku46hERka6LbbhJRESyL9UrrntysV0ln02prs1mttbM1pjZqqRq\nMrM/MbMVZvaxmf2wq99PCjWldZy+W/g7W2tmy81sVKWfTbGutI5VU6GmNWb2gplNqfSzKdWUynFq\n126MmR00s2919bMJ19S14+TuqWyEIahNwHCgH/AScFpJm2nAosLjc4DnKv1sGnUVnr8JHJvCsToO\n+Brwz8APu/LZpGtK+TiNBz5XeNxYQz9TZetK+VgNaPf4TMJ1T2n/TJWtKc3j1K7dU8CjwLfSPk5R\nNXXnOKXZk+juxXZDK/xs0nW1vwiw2hPtndbk7u+6+2qgpaufTaGmojSO0wp33114upK263JS/Znq\noK6iNI7Vh+2eHgXsrPSzKdRUlPhxKrgOmAu8243PJllTUcXHKc2Q6O7FdsOA4yv4bBp1QbjO40kz\nW21mVydYUxyfjXO/tXCcrgIWdfOzSdUFKR4rM7vUzNYBjwF/25XPJlwTpHSczGwY4Zd0cVmh4kRv\nasepg5qKjys+TnGeAtuZ7l5sF7ee1nWuu283s+OAJ8xsvbsvS6iman82zv1OdPe30zpOZnY+cCUw\nsauf7Yae1AUpHit3nw/MN7NJwP1m9ic9/LpVrwk4tfBWWsfpVuAGd3czM9p+N6T5by+qJujicUoz\nJN4CTmz3/ERCInbU5oRCm34VfDbput4CcPfthT/fNbOHCV3Dnv6gVlJTHJ+Nbb/u/nbhz8SPU2FS\n+E6g0d0/6MpnU6gr1WPVroZlZtYXOLbQLvWfqWJNZvZ5d38vxeP0VcK1XgCDgYvNrKWr308SNbn7\ngi4fp2pM7nRz8qUv8Dph8uUwOp8gHkfbJGOnn02prv7AwMLjAcBy4MIkamrXtpnPTlzHcqx6WFNq\nxwk4iTDpN66730/CdaV5rE6h7TT5s4HX0/6Z6qCm1P/tFdrfC1yW9nHqoKYuH6ce/wPo4Td7MbCh\n8I/jxsJr1wDXtGtzW+H9l4GzO/ps2nUBJxf+wl4CXqlmXZ3VBAwljFPuBj4AtgBHxXmsultTysfp\nLuA9YE1hW1ULP1NRdaV8rH5c+JprCP/THBP3sepuTWkep5K2n/5CTvM4RdXUneOki+lERCSSbl8q\nIiKRFBIiIhJJISEiIpEUEiIiEkkhISIikRQSIiISSSEh0k1m9jkz+0HadYjESSEh0n3HAH+TdhEi\ncVJIiHTfvwKnFG7eckvaxYjEQVdci3STmX0JeNTdz0y7FpG4qCch0n1JL2MvkjiFhIiIRFJIiHTf\nXmBg2kWIxEkhIdJN7v4esNzMfquJa+mtNHEtIiKR1JMQEZFICgkREYmkkBARkUgKCRERiaSQEBGR\nSAoJERGJpJAQEZFICgkREYn0P5bbRGIvXNRJAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fbf23882f10>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot,xlabel,ylabel,show,title,legend\n",
+ "from numpy import arange,exp\n",
+ "def f(t,y):\n",
+ " yp=-1000*y+3000-2000*exp(-t)\n",
+ " return yp\n",
+ "y0=0#\n",
+ "#explicit euler\n",
+ "h1=0.0005#\n",
+ "y1 =[y0]\n",
+ "count=1#\n",
+ "t=arange(0,0.0061,0.0001)\n",
+ "for i in arange(0,0.00591,0.0001):\n",
+ " y1.append(y1[(count-1)]+f(i,y1[(count-1)])*h1)\n",
+ " count=count+1#\n",
+ "\n",
+ "plot(t,y1)\n",
+ "h2=0.0015#\n",
+ "y2=[y0]#\n",
+ "count=1#\n",
+ "t=arange(0,0.0061,0.0001)\n",
+ "for i in arange(0,0.00591,0.0001):\n",
+ " y2.append(y2[(count-1)]+f(i,y2[(count-1)])*h2)\n",
+ " count=count+1#\n",
+ "\n",
+ "plot(t,y2)\n",
+ "title(\"y vs t\")\n",
+ "xlabel(\"t\")\n",
+ "ylabel(\"y\")\n",
+ "h=legend([\"h-0.0005\",\"h=0.0015\"])\n",
+ "show()\n",
+ "#implicit order\n",
+ "h3=0.05#\n",
+ "y3=[y0]#\n",
+ "count=1#\n",
+ "t=arange(0,0.401,0.01)\n",
+ "for j in arange(0,0.40,0.01):\n",
+ " y3.append((y3[(count-1)]+3000*h3-2000*h3*exp(-(j+0.01)))/(1+1000*h3))\n",
+ " count=count+1#\n",
+ "\n",
+ "plot(t,y3)\n",
+ "title(\"y vs t\")\n",
+ "xlabel(\"t\")\n",
+ "ylabel(\"y\")\n",
+ "show()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:26.2 Pg: 758"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "f(x,y) = 4*exp(0.8*x) - 0.5*y\n",
+ "the first corrector yields y = 15.7669298488\n",
+ "error = -6.21810039929 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "print \"f(x,y) = 4*exp(0.8*x) - 0.5*y\"\n",
+ "#f'(x,y) = 4*exp(0.8*x) - 0.5*y\n",
+ "h = 1#\n",
+ "x=range(0,5)\n",
+ "y = [2]\n",
+ "x1 = -1#\n",
+ "y1 = -0.3929953#\n",
+ "y10 = y1 + (4*exp(0.8*x[0]) - 0.5*y[0])*2\n",
+ "y11 = y[0] + (4*exp(0.8*x[0]) - 0.5*y[0] + 4*exp(0.8*x[0]) - 0.5*y10)*h/2\n",
+ "y12 = y[0] + (3 + 4*exp(0.8*x[1]) - 0.5*y11)*h/2#\n",
+ "t = 6.360865#\n",
+ "y20 = y[0] + (4*exp(0.8*x[1]) - 0.5*t) *2\n",
+ "y21 = t + (4*exp(0.8*x[1]) - 0.5*t + 4*exp(0.8*x[2]) - 0.5*y20)*h/2\n",
+ "print \"the first corrector yields y = \",y21\n",
+ "t = 14.84392\n",
+ "e = (t - y21)*100/t#\n",
+ "print \"error = \",e,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:26.3 Pg: 762"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Ec (x = 1) = -0.150772\n",
+ "true error (x = 1) = -0.166234\n",
+ "Ec (x = 2) = -0.371756\n",
+ "true error (x = 2) = -0.45832\n"
+ ]
+ }
+ ],
+ "source": [
+ "x1 = 1#\n",
+ "x2 = 2#\n",
+ "y1 = 6.194631#\n",
+ "y2 = 14.84392#\n",
+ "y10 = 5.607005#\n",
+ "y11 = 6.360865#\n",
+ "y20 = 13.44346#\n",
+ "y21 = 15.30224#\n",
+ "Ec1 = -(y11 - y10)/5#\n",
+ "print \"Ec (x = 1) = \",Ec1\n",
+ "e1 = y1 - y11#\n",
+ "print \"true error (x = 1) = \",e1\n",
+ "Ec2 = -(y21 - y20)/5#\n",
+ "print \"Ec (x = 2) = \",Ec2\n",
+ "e2 = y2 - y21#\n",
+ "print \"true error (x = 2) = \",e2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:26.4 Pg: 763"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "ym = 6.210093\n",
+ "error = -0.249603245133 %\n",
+ "y20 = 13.5942344279\n",
+ "error = 8.41883796235 %\n",
+ "y20 = 14.1973224279\n",
+ "error = 4.35597586123 %\n",
+ "y2 = 14.8882708856\n",
+ "error = -0.2987814916 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "x0 = 0#\n",
+ "x1 = 1#\n",
+ "x2 = 2#\n",
+ "y1 = 6.194631#\n",
+ "y2 = 14.84392#\n",
+ "y10 = 5.607005#\n",
+ "y11 = 6.360865#\n",
+ "y1m = y11 - (y11 - y10)/5#\n",
+ "e = (y1 - y1m)*100/y1#\n",
+ "print \"ym =\",y1m\n",
+ "print \"error = \",e,\"%\"\n",
+ "y20 =2+(4*exp(0.8*x1) - 0.5*y1m)*2#\n",
+ "e2 = (y2 - y20)*100/y2#\n",
+ "print \"y20 = \",y20\n",
+ "print \"error = \",e2,\"%\"\n",
+ "y2o = y20 + 4* (y11 - y10)/5#\n",
+ "e2 = (y2 - y2o)*100/y2#\n",
+ "print \"y20 = \",y2o\n",
+ "print \"error = \",e2,\"%\"\n",
+ "y21 = 15.21178#\n",
+ "y23 = y21 - (y21 - y20)/5#\n",
+ "print \"y2 = \",y23\n",
+ "e3 = (y2 - y23)*100/y2#\n",
+ "print \"error = \",e3,\"%\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:26.5 Pg: 773"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "f(x,y) = 4*exp(0.8*x) - 0.5*y\n",
+ "x = [ 1. 2. 3. 4.]\n",
+ "y0 = [2, 6.0227228499844756, 20.083112587836688, 41.872835141608761]\n",
+ "corrected y1 = [6.9056637734795867, 19.136474376155903, 38.385462010990274, 82.755745651588995]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange,exp\n",
+ "print \"f(x,y) = 4*exp(0.8*x) - 0.5*y\"\n",
+ "#f'(x,y) = 4*exp(0.8*x) - 0.5*y\n",
+ "h = 1#\n",
+ "x = arange(-3,4.1,h)\n",
+ "y=[-4.547302,-2.306160,-0.3929953,2,2]\n",
+ "y1=[0,0,0,0]\n",
+ "for i in range(3,7):\n",
+ " y.append(y[(i-3)] + 4*h*(2*(4*exp(0.8*x[(i)]) - 0.5*y[(i)]) - 4*exp(0.8*x[(i-1)]) + 0.5*y[(i-1)] + 2*(4*exp(0.8*x[(i-2)]) - 0.5*y[(i-2)]))/3)\n",
+ " y1.append(y[(i-1)] + h*(4*exp(0.8*x[(i-1)]) - 0.5*y[(i-1)] +4 * (4*exp(0.8*x[(i)]) - 0.5*y[(i)]) + 4*exp(0.8*x[(i+1)]) - 0.5*y[(i+1)])/3)\n",
+ "\n",
+ "print \"x = \",x[4:8]\n",
+ "print \"y0 = \",y[4:8]\n",
+ "print \"corrected y1 = \",y1[4:8]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:26.6 Pg: 774"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "f(x,y) = 4*exp(0.8*x) - 0.5*y\n",
+ "x = [ 1. 2. 3. 4.]\n",
+ "y0 = [2, 6.0075392692969114, 6.2532143855636217, 14.488238413222703]\n",
+ "y1 = [6.0075392692969114, 6.2532143855636217, 14.488238413222703, 16.39224775082873]\n"
+ ]
+ }
+ ],
+ "source": [
+ "print \"f(x,y) = 4*exp(0.8*x) - 0.5*y\"\n",
+ "#f'(x,y) = 4*exp(0.8*x) - 0.5*y\n",
+ "h = 1#\n",
+ "x = arange(-3,4.1,h)\n",
+ "y = [-4.547302,-2.306160,-0.3929953,2]\n",
+ "m= [0,0,0,0,y[3]]\n",
+ "for i in range(3,7):\n",
+ " y.append(y[(i)] + h *(55* (4*exp(0.8*x[(i)]) - 0.5*y[(i)]) / 24 - 59 * (4*exp(0.8*x[(i-1)]) - 0.5*y[(i-1)]) / 24 + 37*(4*exp(0.8*x[(i-2)]) - 0.5*y[(i-2)])/24 - 9*(4*exp(0.8*x[(i-3)]) - 0.5*y[(i-3)])/24))\n",
+ " m.append(y[(i+1)])\n",
+ " y.append(y[(i)] + h*(9*(4*exp(0.8*x[(i+1)]) - 0.5*y[(i+1)])/24 +19*(4*exp(0.8*x[(i)]) - 0.5*y[(i)])/24 - 5*(4*exp(0.8*x[(i-1)]) - 0.5*y[(i-1)])/24 + (4*exp(0.8*x[(i-2)]) - 0.5*y[(i-2)])/24))\n",
+ "\n",
+ "print \"x = \",x[4:8]\n",
+ "print \"y0 = \",m[4:8]\n",
+ "print \"y1 = \",y[4:8]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:26.7 Pg: 775"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "x = [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5 7.\n",
+ " 7.5 8. 8.5 9. 9.5]\n",
+ "\n",
+ "y0(milnes method) = [1, 0.62312747952608971, 0.60341314566242521, 0.35581682815742122, 0.3173461560388694, -0.073744603832379019, 0.05769466447055438, 0.097016353530268939, 0.21274204327392865, -0.36734037063735558, 0.09724068674400127, 0.43888095058828192, 0.3040024218422181, -0.1934006684100632, -0.1160863384290636, 0.32478026608871907, -0.052055689173705413, -0.36964931180484378, 0.00024232753216428538, 0.55995471612928904]\n",
+ "\n",
+ "corrected y1(milnes method) = [1, 0.62312747952608971, 0.60341314566242521, 0.35581682815742122, 0.3173461560388694, -0.073744603832379019, 0.05769466447055438, 0.097016353530268939, 0.21274204327392865, -0.36734037063735558, 0.09724068674400127, 0.43888095058828192, 0.3040024218422181, -0.1934006684100632, -0.1160863384290636, 0.32478026608871907, -0.052055689173705413, -0.36964931180484378, 0.00024232753216428538, 0.55995471612928904]\n",
+ "\n",
+ "y0(fourth order adams method) = [1, 0.27152768648678072, 0.65650943823969443, -0.097035945241965349, 0.90661897200241937, -0.41645854530303128, -0.006339328628468005, 0.0808211944939453, -0.031548281043396395, -0.01627399436000334, 0.0039276970657568626, -0.002208005756050492, -0.0027943948998587478, -0.00042783320198906672, -0.00032845203812321728, -0.00042142028381515442, -0.00017932875240256902, -8.560953717861569e-05, -7.1995388648036731e-05, -4.2020211202092437e-05]\n",
+ "\n",
+ "y1(fourth order adams method) = [1, 0.56419948638876194, 0.68342664355034821, -0.010131383289966767, -0.11667598191807985, -0.0076991693311919962, -0.015405634984349756, -0.02283279228603189, -0.0093238635936440419, -0.0046392587796136846, -0.0040348813308916029, -0.0023127486894963844, -0.0011969855369064737, -0.00079981133060367615, -0.00049813831748820084, -0.00028031874518611127, -0.00017096177282523818, -0.00010605960387014003, -6.2547086111287706e-05, -3.7396246727791117e-05]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange,exp\n",
+ "#dy/dx = -y\n",
+ "#y = exp(-x)\n",
+ "h = 0.5#\n",
+ "x = arange(-1.5,10.1,h)\n",
+ "y=[exp(-x[0]),exp(-x[1]),exp(-x[2]),1]\n",
+ "m=[0,0,0,y[3]]\n",
+ "for i in range(3,23):\n",
+ " y.append(y[(i-3)] + 4*h*(2*(-y[(i)]) + y[(i-1)] + 2*(-y[(i-2)]))/3)\n",
+ " m.append(y[(i+1)])\n",
+ " y.append(y[(i-1)] + h*(-y[(i-1)] +4 * (-y[(i)]) + (-y[(i+1)]))/3)\n",
+ "\n",
+ "print \"\\nx = \",x[3:23]\n",
+ "print \"\\ny0(milnes method) = \",m[3:23]\n",
+ "print \"\\ncorrected y1(milnes method) = \",y[3:23]\n",
+ "for i in range(3,23):\n",
+ " y[(i+1)] = y[(i)] + h *(55* (-y[(i)]) / 24 - 59 * (-y[(i-1)]) / 24 + 37*(-y[(i-2)])/24 - 9*(-y[(i-3)])/24)#\n",
+ " m[(i+1)] = y[(i+1)]\n",
+ " y[(i+1)] = y[(i)] + h*(9*(-y[(i+1)])/24 +19*(-y[(i)])/24 - 5*(-y[(i-1)])/24 + (-y[(i-2)])/24)#\n",
+ "\n",
+ "print \"\\ny0(fourth order adams method) = \",m[3:23]\n",
+ "print \"\\ny1(fourth order adams method) = \",y[3:23]"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter3.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter3.ipynb
new file mode 100644
index 00000000..b0cdc8c4
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter3.ipynb
@@ -0,0 +1,382 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# CHAPTER 3 : Approximations and Round off Errors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex : 3.1 Pg : 56"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a. The true error is\n",
+ "for the bridge : 1 cm\n",
+ "for the rivet : 1 cm\n",
+ "b. The percent relative error is\n",
+ "for the bridge : 0.01 cm\n",
+ "for the rivet : 10.0 cm\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "lbm=9999# #cm, measured length of bridge\n",
+ "lrm=9##cm, measured length of rivet\n",
+ "lbt=10000##cm, true length of bridge\n",
+ "lrt=10##cm,true length of rivet\n",
+ "#calculating true error below#\n",
+ "Etb=lbt-lbm##cm, true error in bridge\n",
+ "Etr=lrt-lrm##cm, true error in rivet\n",
+ "#calculating percent relative error below\n",
+ "etb=Etb*100/lbt##percent relative error for bridge\n",
+ "etr=Etb*100/lrt##percent relative error for rivet\n",
+ "print \"a. The true error is\"\n",
+ "print \"for the bridge : \",Etb,\"cm\"\n",
+ "print \"for the rivet : \",Etr,\"cm\"\n",
+ "print \"b. The percent relative error is\"\n",
+ "print \"for the bridge : \",etb,\"cm\"\n",
+ "print \"for the rivet : \",etr,\"cm\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex 3.2 : Pg : 58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Terms\t\t\tResult\t\t\t\tet(%)\t\t\t\tea(%)\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "1 \t\t\t1.00000 \t\t\t39.3469240702 \t\t\t100\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "2 \t\t\t2.00000 \t\t\t-21.3061518595 \t\t\t50.0\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "3 \t\t\t2.50000 \t\t\t-51.6326898244 \t\t\t20.0\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "4 \t\t\t2.62500 \t\t\t-59.2143243156 \t\t\t4.7619047619\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "5 \t\t\t2.64583 \t\t\t-60.4779300642 \t\t\t0.787401574803\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "6 \t\t\t2.64844 \t\t\t-60.6358807827 \t\t\t0.0983284169125\n",
+ "----------------------------------------------------------------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import factorial\n",
+ "n=3##number of significant figures\n",
+ "es=0.5*(10**(2-n))##percent, specified error criterion\n",
+ "x=0.5#\n",
+ "f=[]\n",
+ "f.append(1)##first estimate f=e**x = 1\n",
+ "ft=1.648721##true value of e**0.5=f\n",
+ "et=[]\n",
+ "et.append((ft-f[0])*100/ft)\n",
+ "ea=[]\n",
+ "ea.append(100)\n",
+ "i=1\n",
+ "while ea[i-1]>=es:\n",
+ " f.append(f[(i-1)]+(x**(i-1))/(factorial(i-1)))\n",
+ " et.append((ft-f[(i)])*100/ft)\n",
+ " ea.append((f[(i)]-f[(i-1)])*100/f[(i)])\n",
+ " i=i+1#\n",
+ "\n",
+ "print \"Terms\\t\\t\\tResult\\t\\t\\t\\tet(%)\\t\\t\\t\\tea(%)\"\n",
+ "print '-'*100\n",
+ "for j in range(0,i-1):\n",
+ " print j+1,'\\t\\t\\t%0.5f'%f[j],'\\t\\t\\t',et[j],'\\t\\t\\t',ea[j]\n",
+ " print '-'*100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex 3.3 Pg: 60"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Thus a 16-bit computer word can store decimal integers ranging from -32767 to 32767\n"
+ ]
+ }
+ ],
+ "source": [
+ "n=16##no of bits\n",
+ "num=0#\n",
+ "for i in range(0,(n-1)):\n",
+ " num=num+(1*(2**i))#\n",
+ "\n",
+ "print \"Thus a 16-bit computer word can store decimal integers ranging from\",(-1*num),\"to\",num"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex 3.4: Pg :63"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The smallest possible positive number for this system is : 0.0625\n"
+ ]
+ }
+ ],
+ "source": [
+ "n=7##no. of bits\n",
+ "#the maximum value of exponents is given by\n",
+ "max=1*(2**1)+1*(2**0)#\n",
+ "#mantissa is found by\n",
+ "mantissa=1*(2**-1)+0*(2**-3)+0*(2**-3)#\n",
+ "num=mantissa*(2**(max*-1))##smallest possible positive number for this system\n",
+ "print \"The smallest possible positive number for this system is : \",num"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex 3.5: Pg :65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "value of epsilon= 0.25\n"
+ ]
+ }
+ ],
+ "source": [
+ "b=2##base\n",
+ "t=3##number of mantissa bits\n",
+ "E=2**(1-t)##epsilon\n",
+ "print \"value of epsilon=\",E"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex 3.6: Pg :68"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Input a number: 15\n",
+ "The number summed up 100,000 times is= 1500000\n"
+ ]
+ }
+ ],
+ "source": [
+ "num=input(\"Input a number: \")\n",
+ "Sum=0#\n",
+ "for i in range(0,100000):\n",
+ " Sum=Sum+num#\n",
+ "\n",
+ "print \"The number summed up 100,000 times is=\",Sum"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex 3.7: Pg :71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of the quadratic equation (x**2)+(3000.001*x)+3=0 are = -0.000999999999976 & -3000.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "a=1#\n",
+ "b=3000.001#\n",
+ "c=3#\n",
+ "#the roots of the quadratic equation x**2+3000.001*x+3=0 are found as\n",
+ "D=(b**2)-4*a*c#\n",
+ "x1=(-b+(D**0.5))/(2*a)#\n",
+ "x2=(-b-(D**0.5))/(2*a)#\n",
+ "print \"The roots of the quadratic equation (x**2)+(3000.001*x)+3=0 are = \",x1,'&',x2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex 3.8: Pg :73"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Input value of x:1.25\n",
+ "sum: 1 term: 1 i: 0\n",
+ "-------------------------------------\n",
+ "sum: 2.25 term: 1.25 i: 1\n",
+ "-------------------------------------\n",
+ "sum: 3.03125 term: 0.78125 i: 2\n",
+ "-------------------------------------\n",
+ "sum: 3.35677083333 term: 0.325520833333 i: 3\n",
+ "-------------------------------------\n",
+ "sum: 3.45849609375 term: 0.101725260417 i: 4\n",
+ "-------------------------------------\n",
+ "sum: 3.48392740885 term: 0.0254313151042 i: 5\n",
+ "-------------------------------------\n",
+ "sum: 3.4892255995 term: 0.0052981906467 i: 6\n",
+ "-------------------------------------\n",
+ "sum: 3.49017170497 term: 0.000946105472625 i: 7\n",
+ "-------------------------------------\n",
+ "sum: 3.49031953395 term: 0.000147828980098 i: 8\n",
+ "-------------------------------------\n",
+ "sum: 3.49034006576 term: 2.05318027913e-05 i: 9\n",
+ "-------------------------------------\n",
+ "sum: 3.49034263223 term: 2.56647534892e-06 i: 10\n",
+ "-------------------------------------\n",
+ "sum: 3.49034292388 term: 2.91644926013e-07 i: 11\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295426 term: 3.03796797931e-08 i: 12\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295718 term: 2.92112305703e-09 i: 13\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295744 term: 2.60814558663e-10 i: 14\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295746 term: 2.17345465553e-11 i: 15\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295746 term: 1.69801144963e-12 i: 16\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295746 term: 1.24853783061e-13 i: 17\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295746 term: 8.67040160146e-15 i: 18\n",
+ "-------------------------------------\n",
+ "sum: 3.49034295746 term: 5.7042115799e-16 i: 19\n",
+ "-------------------------------------\n",
+ "Exact Value: 3.49034295746\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "def f(x):\n",
+ " y=exp(x)\n",
+ " return y\n",
+ "Sum=1#\n",
+ "test=0#\n",
+ "i=0#\n",
+ "term=1#\n",
+ "x=input(\"Input value of x:\")\n",
+ "while Sum!=test:\n",
+ " print \"sum:\",Sum,\"term:\",term,\"i:\",i\n",
+ " print \"-------------------------------------\"\n",
+ " i=i+1#\n",
+ " term=term*x/i#\n",
+ " test=Sum#\n",
+ " Sum=Sum+term#\n",
+ "\n",
+ "print \"Exact Value:\",f(x)"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter4.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter4.ipynb
new file mode 100644
index 00000000..ac35f0f7
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter4.ipynb
@@ -0,0 +1,513 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 4 : Truncation Errors and the Taylor Series"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 4.1 Page No:79"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The value of f at x=0 : 1.2\n",
+ "The value of f at x=1 due to zero order approximation : 1.2\n",
+ "Truncation error : -1.0\n",
+ "----------------------------------------------\n",
+ "The value of first derivative of f at x=0 : -0.4\n",
+ "The value of f at x=1 due to first order approximation : 0.8\n",
+ "Truncation error : -0.6\n",
+ "----------------------------------------------\n",
+ "The value of second derivative of f at x=0 : -1.8\n",
+ "The value of f at x=1 due to second order approximation : -0.1\n",
+ "Truncation error : 0.3\n",
+ "----------------------------------------------\n",
+ "The value of third derivative of f at x=0 : -0.9\n",
+ "The value of f at x=1 due to third order approximation : -0.25\n",
+ "Truncation error : 0.45\n",
+ "----------------------------------------------\n",
+ "The value of fourth derivative of f at x=0 : -2.4\n",
+ "The value of f at x=1 due to fourth order approximation : -0.35\n",
+ "Truncation error : 0.55\n",
+ "----------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import factorial\n",
+ "from scipy.misc import derivative\n",
+ "def f(x):\n",
+ " y=-0.1*x**4-0.15*x**3-0.5*x**2-0.25*x+1.2#\n",
+ " return y\n",
+ "xi=0#\n",
+ "xf=1#\n",
+ "h=xf-xi#\n",
+ "fi=f(xi)##function value at xi\n",
+ "ffa=f(xf)##actual function value at xf\n",
+ "\n",
+ "#for n=0, i.e, zero order approximation\n",
+ "ff=fi#\n",
+ "Et_1=ffa-ff##truncation error at x=1\n",
+ "print \"The value of f at x=0 :\",fi\n",
+ "print \"The value of f at x=1 due to zero order approximation :\",ff\n",
+ "print \"Truncation error :\",Et_1\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "#for n=1, i.e, first order approximation\n",
+ "def f1(x):\n",
+ " y=derivative(f,x)\n",
+ " return y\n",
+ "f1i=f1(xi)##value of first derivative of function at xi\n",
+ "f1f=fi+f1i*h##value of first derivative of function at xf\n",
+ "Et_2=ffa-f1f##truncation error at x=1\n",
+ "print \"The value of first derivative of f at x=0 :\",f1i\n",
+ "print \"The value of f at x=1 due to first order approximation :\",f1f\n",
+ "print \"Truncation error :\",Et_2\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "\n",
+ "#for n=2, i.e, second order approximation\n",
+ "def f2(x):\n",
+ " y=derivative(f1,x)\n",
+ " return y\n",
+ "f2i=f2(xi)##value of second derivative of function at xi\n",
+ "f2f=f1f+f2i*(h**2)/factorial(2)##value of second derivative of function at xf\n",
+ "Et_3=ffa-f2f##truncation error at x=1\n",
+ "print \"The value of second derivative of f at x=0 :\",f2i\n",
+ "print \"The value of f at x=1 due to second order approximation :\",f2f\n",
+ "print \"Truncation error :\",Et_3\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "#for n=3, i.e, third order approximation\n",
+ "def f3(x):\n",
+ " y=derivative(f2,x)\n",
+ " return y\n",
+ "f3i=f3(xi)##value of third derivative of function at xi\n",
+ "f3f=f2f+f3i*(h**3)/factorial(3)##value of third derivative of function at xf\n",
+ "Et_4=ffa-f3f##truncation error at x=1\n",
+ "print \"The value of third derivative of f at x=0 :\",f3i\n",
+ "print \"The value of f at x=1 due to third order approximation :\",f3f\n",
+ "print \"Truncation error :\", Et_4\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "#for n=4, i.e, fourth order approximation\n",
+ "def f4(x):\n",
+ " y=derivative(f3,x)\n",
+ " return y\n",
+ "f4i=f4(xi)##value of fourth derivative of function at xi\n",
+ "f4f=f3f+f4i*(h**4)/factorial(4)##value of fourth derivative of function at xf\n",
+ "Et_5=ffa-f4f##truncation error at x=1\n",
+ "print \"The value of fourth derivative of f at x=0 :\",f4i\n",
+ "print \"The value of f at x=1 due to fourth order approximation :\",f4f\n",
+ "print \"Truncation error :\",Et_5\n",
+ "print \"----------------------------------------------\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.2: Page No:82"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The value of f at x=1 due to zero order approximation : 0.707106781187\n",
+ "% relative error : -41.4213562373\n",
+ "----------------------------------------------\n",
+ "The value of f at x=1 due to first order approximation : 0.551333569463\n",
+ "% relative error : -10.2667138927\n",
+ "----------------------------------------------\n",
+ "The value of f at x=1 due to second order approximation : 0.534175415889\n",
+ "% relative error : -6.83508317772\n",
+ "----------------------------------------------\n",
+ "The value of f at x=1 due to third order approximation : 0.535435376789\n",
+ "% relative error : -7.08707535775\n",
+ "----------------------------------------------\n",
+ "The value of f at x=1 due to fourth order approximation : 0.535504768061\n",
+ "% relative error : -7.10095361216\n",
+ "----------------------------------------------\n",
+ "The value of f at x=1 due to fifth order approximation : 0.535501917392\n",
+ "% relative error : -7.10038347839\n",
+ "----------------------------------------------\n",
+ "The value of f at x=1 due to sixth order approximation : 0.535501819651\n",
+ "% relative error : -7.10036393016\n",
+ "----------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,cos,factorial\n",
+ "from scipy.misc import derivative\n",
+ "def f(x):\n",
+ " y=cos(x)\n",
+ " return y\n",
+ "xi=pi/4#\n",
+ "xf=pi/3#\n",
+ "h=xf-xi#\n",
+ "fi=f(xi)##function value at xi\n",
+ "ffa=f(xf)##actual function value at xf\n",
+ "\n",
+ "#for n=0, i.e, zero order approximation\n",
+ "ff=fi#\n",
+ "et1=(ffa-ff)*100/ffa##percent relative error at x=1\n",
+ "print \"The value of f at x=1 due to zero order approximation :\",ff\n",
+ "print \"% relative error :\",et1\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "#for n=1, i.e, first order approximation\n",
+ "def f1(x):\n",
+ " y=derivative(f,x)\n",
+ " return y\n",
+ "f1i=f1(xi)##value of first derivative of function at xi\n",
+ "f1f=fi+f1i*h##value of first derivative of function at xf\n",
+ "et2=(ffa-f1f)*100/ffa##% relative error at x=1\n",
+ "print \"The value of f at x=1 due to first order approximation :\",f1f\n",
+ "print \"% relative error :\",et2\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "\n",
+ "#for n=2, i.e, second order approximation\n",
+ "def f2(x):\n",
+ " y=derivative(f1,x)\n",
+ " return y\n",
+ "f2i=f2(xi)##value of second derivative of function at xi\n",
+ "f2f=f1f+f2i*(h**2)/factorial(2)##value of second derivative of function at xf\n",
+ "et3=(ffa-f2f)*100/ffa##% relative error at x=1\n",
+ "print \"The value of f at x=1 due to second order approximation :\",f2f\n",
+ "print \"% relative error :\",et3\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "\n",
+ "#for n=3, i.e, third order approximation\n",
+ "def f3(x):\n",
+ " y=derivative(f2,x)\n",
+ " return y\n",
+ "f3i=f3(xi)##value of third derivative of function at xi\n",
+ "f3f=f2f+f3i*(h**3)/factorial(3)##value of third derivative of function at xf\n",
+ "et4=(ffa-f3f)*100/ffa##% relative error at x=1\n",
+ "print \"The value of f at x=1 due to third order approximation :\",f3f\n",
+ "print \"% relative error :\",et4\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "\n",
+ "#for n=4, i.e, fourth order approximation\n",
+ "def f4(x):\n",
+ " y=derivative(f3,x)\n",
+ " return y\n",
+ "f4i=f4(xi)##value of fourth derivative of function at xi\n",
+ "f4f=f3f+f4i*(h**4)/factorial(4)##value of fourth derivative of function at xf\n",
+ "et5=(ffa-f4f)*100/ffa##% relative error at x=1\n",
+ "print \"The value of f at x=1 due to fourth order approximation :\",f4f\n",
+ "print \"% relative error :\",et5\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "\n",
+ "#for n=5, i.e, fifth order approximation\n",
+ "f5i=(f4(1.1*xi)-f4(0.9*xi))/(2*0.1)##value of fifth derivative of function at xi (central difference method)\n",
+ "f5f=f4f+f5i*(h**5)/factorial(5)##value of fifth derivative of function at xf\n",
+ "et6=(ffa-f5f)*100/ffa##% relative error at x=1\n",
+ "print \"The value of f at x=1 due to fifth order approximation :\",f5f\n",
+ "print \"% relative error :\",et6\n",
+ "print \"----------------------------------------------\"\n",
+ "\n",
+ "\n",
+ "#for n=6, i.e, sixth order approximation\n",
+ "def f6(x):\n",
+ " y=derivative(f5,x)\n",
+ " return y\n",
+ "f6i=(f4(1.1*xi)-2*f4(xi)+f4(0.9*xi))/(0.1**2)##value of sixth derivative of function at xi (central difference method)\n",
+ "f6f=f5f+f6i*(h**6)/factorial(6)##value of sixth derivative of function at xf\n",
+ "et6=(ffa-f6f)*100/ffa##% relative error at x=1\n",
+ "print \"The value of f at x=1 due to sixth order approximation :\",f6f\n",
+ "print \"% relative error :\", et6\n",
+ "print \"----------------------------------------------\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.3 : Page No:85"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Input value of m:4\n",
+ "Input value of h:5\n",
+ "\n",
+ "Remainder: 21 \n",
+ "The value by first order approximation: 1275\n",
+ "True Value at x2: 1296\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,cos,factorial\n",
+ "m=input(\"Input value of m:\")\n",
+ "h=input(\"Input value of h:\")\n",
+ "def f(x):\n",
+ " y=x**m\n",
+ " return y\n",
+ "x1=1#\n",
+ "x2=x1+h#\n",
+ "fx1=f(x1)#\n",
+ "fx2=fx1+m*(fx1**(m-1))*h#\n",
+ "if m==1:\n",
+ " R=0#\n",
+ "elif m==2 :\n",
+ " R=2*(h**2)/factorial(2)#\n",
+ " \n",
+ "elif m==3:\n",
+ " R=(6*(x1)*(h**2)/factorial(2))+(6*(h**3)/factorial(3))#\n",
+ " \n",
+ "elif m==4:\n",
+ " R=(12*(x1**2)*(h**2)/factorial(2))+(24*(x1)*(h**3)/factorial(3))+(24*(h**4)/factorial(4))\n",
+ " \n",
+ "print \"\\nRemainder:\",fx2,\"\\nThe value by first order approximation:\",R\n",
+ "print \"True Value at x2:\",f(x2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.4: Page No:92"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Input h:1.232323\n",
+ "For h= 1.232323\n",
+ "and percent error= -2.70944264922 Derivative at x by forward difference method= 114.60931875\n",
+ "and percent error= -0.178591334206 Derivative at x by backward difference method= 85.854151746\n",
+ "and percent error= -1.44401699172 Derivative at x by central difference method= 14.3775835022\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.misc import derivative\n",
+ "def f(x):\n",
+ " y=-0.1*(x**4)-0.15*(x**3)-0.5*(x**2)-0.25*(x)+1.2\n",
+ " return y\n",
+ "x=0.5#\n",
+ "h=input(\"Input h:\")\n",
+ "x1=x-h#\n",
+ "x2=x+h#\n",
+ "#forward difference method\n",
+ "fdx1=(f(x2)-f(x))/h##derivative at x\n",
+ "et1=abs((fdx1-derivative(f,x))/derivative(f,x))*100#\n",
+ "#backward difference method\n",
+ "fdx2=(f(x)-f(x1))/h##derivative at x\n",
+ "et2=abs((fdx2-derivative(f,x))/derivative(f,x))*100#\n",
+ "#central difference method\n",
+ "fdx3=(f(x2)-f(x1))/(2*h)##derivative at x\n",
+ "et3=abs((fdx3-derivative(f,x))/derivative(f,x))*100#\n",
+ "print \"For h=\",h\n",
+ "print \"and percent error=\",fdx1,\"Derivative at x by forward difference method=\",et1\n",
+ "print \"and percent error=\",fdx2,\"Derivative at x by backward difference method=\",et2\n",
+ "print \"and percent error=\",fdx3,\"Derivative at x by central difference method=\",et3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.5: Page No: 95"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "true value is between : 15.4275 and 15.8225\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.misc import derivative\n",
+ "def f(x):\n",
+ " y=x**3\n",
+ " return y\n",
+ "x=2.5#\n",
+ "delta=0.01#\n",
+ "deltafx=abs(derivative(f,x))*delta#\n",
+ "fx=f(x)#\n",
+ "print \"true value is between : \",fx-deltafx,\"and\",fx+deltafx"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.6: Page No: 96"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The value of y is between: 0.528721343471 and 0.596278656529\n",
+ "ymin is calculated at lower extremes of F, L, E, I values as = 0.524066539965\n",
+ "ymax is calculated at higher extremes of F, L, E, I values as = 0.602846335915\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(F,L,E,I):\n",
+ " y=(F*(L**4))/(8*E*I)\n",
+ " return y\n",
+ "Fbar=50##lb/ft\n",
+ "Lbar=30##ft\n",
+ "Ebar=1.5*(10**8)##lb/ft**2\n",
+ "Ibar=0.06##ft**4\n",
+ "deltaF=2##lb/ft\n",
+ "deltaL=0.1##ft\n",
+ "deltaE=0.01*(10**8)##lb/ft**2\n",
+ "deltaI=0.0006##ft**4\n",
+ "ybar=(Fbar*(Lbar**4))/(8*Ebar*Ibar)#\n",
+ "def f1(F):\n",
+ " y=(F*(Lbar**4))/(8*Ebar*Ibar)\n",
+ " return y\n",
+ "def f2(L):\n",
+ " y=(Fbar*(L**4))/(8*Ebar*Ibar)\n",
+ " return y\n",
+ "def f3(E):\n",
+ " y=(Fbar*(Lbar**4))/(8*E*Ibar)\n",
+ " return y\n",
+ "def f4(I):\n",
+ " y=(Fbar*(Lbar**4))/(8*Ebar*I)\n",
+ " return y\n",
+ "\n",
+ "deltay=abs(derivative(f1,Fbar))*deltaF+abs(derivative(f2,Lbar))*deltaL+abs(derivative(f3,Ebar))*deltaE+abs(derivative(f4,Ibar))*deltaI#\n",
+ "\n",
+ "print \"The value of y is between:\",ybar-deltay,\"and\",ybar+deltay\n",
+ "ymin=((Fbar-deltaF)*((Lbar-deltaL)**4))/(8*(Ebar+deltaE)*(Ibar+deltaI))#\n",
+ "ymax=((Fbar+deltaF)*((Lbar+deltaL)**4))/(8*(Ebar-deltaE)*(Ibar-deltaI))#\n",
+ "print \"ymin is calculated at lower extremes of F, L, E, I values as =\",ymin\n",
+ "print \"ymax is calculated at higher extremes of F, L, E, I values as =\",ymax"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 4.7 : Page No:98"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The condition number of function for x = 0.18201112073 is : 1.72787595947\n",
+ "The condition number of function for x = 0.0160083243793 is : 1.58650429006\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi,tan\n",
+ "from scipy.misc import derivative\n",
+ "def f(x):\n",
+ " y=tan(x)\n",
+ " return y\n",
+ "x1bar=(pi/2)+0.1*(pi/2)#\n",
+ "x2bar=(pi/2)+0.01*(pi/2)#\n",
+ "#computing condition number for x1bar\n",
+ "condnum1=x1bar*derivative(f,x1bar)/f(x1bar)#\n",
+ "print \"The condition number of function for x =\",condnum1,\"is :\",x1bar\n",
+ "if abs(condnum1)>1:\n",
+ " print \"Function is ill-conditioned for x =\",x1bar\n",
+ "\n",
+ "#computing condition number for x2bar\n",
+ "condnum2=x2bar*derivative(f,x2bar)/f(x2bar)#\n",
+ "print \"The condition number of function for x =\",condnum2,\"is :\",x2bar\n",
+ "if abs(condnum2)>1:\n",
+ " print \"Function is ill-conditioned for x =\",x2bar"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter5.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter5.ipynb
new file mode 100644
index 00000000..2b0b77e2
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter5.ipynb
@@ -0,0 +1,528 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 5 : Bracketing Methods"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex5.1: Pg:120"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "For various values of c and f(c) is found as:\n",
+ "[4, 34.114844174677984]\n",
+ "[8, 17.653427509399428]\n",
+ "[12, 6.066935998372109]\n",
+ "[16, -2.2687619693477643]\n",
+ "[20, -8.400628721768179]\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fa7dfe0c990>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "from math import exp\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n",
+ "m=68.1##kg\n",
+ "v=40##m/s\n",
+ "t=10##s\n",
+ "g=9.8##m/s**2\n",
+ "def f(c):\n",
+ " y=g*m*(1-exp(-c*t/m))/c - v#\n",
+ " return y\n",
+ "print \"For various values of c and f(c) is found as:\"\n",
+ "i=0#\n",
+ "Fc=[]\n",
+ "for c in arange(4,21,4):\n",
+ " i=i+1#\n",
+ " bracket=[c, f(c)]\n",
+ " print bracket\n",
+ " Fc.append(f(c))\n",
+ "\n",
+ "c=arange(4,21,4)\n",
+ "plot(c,Fc)\n",
+ "title('f(c) vs c')\n",
+ "xlabel('c')\n",
+ "ylabel('f(c) (m/s)')\n",
+ "show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex5.2: Pg:123"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\njXMbWAkg26AAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f01da57e590>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.55 \t0.60 \t0.65 \t0.70 \t0.75 \t0.80 \t0.85 \t0.90 \t0.95 \t"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "from math import sin,cos\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, title, xlabel, ylabel, show\n",
+ "\n",
+ "def f(x):\n",
+ " y=sin(10*x)+cos(3*x)#\n",
+ " return y\n",
+ "count=1#\n",
+ "func=[]\n",
+ "val=[]\n",
+ "for i in arange(0.55,1,0.05):\n",
+ " val.append(i)\n",
+ " func.append(f(i))\n",
+ " count=count+1#\n",
+ "\n",
+ "plot(val,func)\n",
+ "title(\"x vs f(x)\")\n",
+ "xlabel('x')\n",
+ "ylabel('f(x)')\n",
+ "show()\n",
+ "for v in val:\n",
+ " print '%0.2f'%v,'\\t',"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex5.3: Pg:125"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter the tolerable true percent error=1.24\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "m=68.1##kg\n",
+ "v=40##m/s\n",
+ "t=10##s\n",
+ "g=9.8##m/s**2\n",
+ "def f(c):\n",
+ " y=g*m*(1-exp(-c*t/m))/c - v#\n",
+ " return y\n",
+ "x1=12#\n",
+ "x2=16#\n",
+ "xt=14.7802##true value\n",
+ "e=input(\"enter the tolerable true percent error=\")\n",
+ "xr=(x1+x2)/2#\n",
+ "etemp=abs(xr-xt)/xt*100##error\n",
+ "while etemp>e:\n",
+ " if f(x1)*f(xr)>0:\n",
+ " x1=xr#\n",
+ " xr=(x1+x2)/2#\n",
+ " etemp=abs(xr-xt)/xt*100#\n",
+ " \n",
+ " if f(x1)*f(xr)<0:\n",
+ " x2=xr#\n",
+ " xr=(x1+x2)/2#\n",
+ " etemp=abs(xr-xt)/xt*100#\n",
+ " \n",
+ " if f(x1)*f(xr)==0:\n",
+ " break\n",
+ " \n",
+ "print \"The result is =\",xr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex5.4: Pg:126"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter the tolerable approximate error=21.03\n",
+ "Iteration: 1\n",
+ "xl: 12\n",
+ "xu: 16\n",
+ "xr: 14\n",
+ "et: 5.27868364433 %\n",
+ "----------------------------------------\n",
+ "Iteration: 2\n",
+ "xl: 14\n",
+ "xu: 15\n",
+ "xr: 14\n",
+ "et(%): 5.27868364433 %\n",
+ "ea 0 %\n",
+ "----------------------------------------\n",
+ "The result is= 14\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "m=68.1##kg\n",
+ "v=40##m/s\n",
+ "t=10##s\n",
+ "g=9.8##m/s**2\n",
+ "def f(c):\n",
+ " y=g*m*(1-exp(-c*t/m))/c - v#\n",
+ " return y\n",
+ "x1=12#\n",
+ "x2=16#\n",
+ "xt=14.7802##true value\n",
+ "e=input(\"enter the tolerable approximate error=\")\n",
+ "xr=(x1+x2)/2#\n",
+ "i=1#\n",
+ "et=abs(xr-xt)/xt*100##error\n",
+ "print \"Iteration:\",i\n",
+ "print \"xl:\",x1\n",
+ "print \"xu:\",x2\n",
+ "print \"xr:\",xr\n",
+ "print \"et:\",et,\"%\"\n",
+ "print \"----------------------------------------\"\n",
+ "etemp=100#\n",
+ "while etemp>e:\n",
+ " if f(x1)*f(xr)>0:\n",
+ " x1=xr\n",
+ " xr=(x1+x2)/2\n",
+ " etemp=abs(xr-x1)/xr*100\n",
+ " et=abs(xr-xt)/xt*100\n",
+ " \n",
+ " if f(x1)*f(xr)<0:\n",
+ " x2=xr\n",
+ " xr=(x1+x2)/2\n",
+ " etemp=abs(xr-x2)/xr*100\n",
+ " et=abs(xr-xt)/xt*100\n",
+ " \n",
+ " if f(x1)*f(xr)==0:\n",
+ " break#\n",
+ " \n",
+ " i=i+1#\n",
+ " print \"Iteration:\",i\n",
+ " print \"xl:\",x1\n",
+ " print \"xu:\",x2\n",
+ " print \"xr:\",xr\n",
+ " print \"et(%):\",et,\"%\"\n",
+ " print \"ea\",etemp,\"%\"\n",
+ " print \"----------------------------------------\"\n",
+ "\n",
+ "\n",
+ "print \"The result is=\",xr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex5.5: Pg:133"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "enter the tolerable true percent error=24.36\n",
+ "The result is= 14.9113031791\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "m=68.1##kg\n",
+ "v=40##m/s\n",
+ "t=10##s\n",
+ "g=9.8##m/s**2\n",
+ "def f(c):\n",
+ " y=g*m*(1-exp(-c*t/m))/c - v#\n",
+ " return y\n",
+ "x1=12#\n",
+ "x2=16#\n",
+ "xt=14.7802##true value\n",
+ "e=input(\"enter the tolerable true percent error=\")\n",
+ "xr=x1-(f(x1)*(x2-x1))/(f(x2)-f(x1))#\n",
+ "etemp=abs(xr-xt)/xt*100##error\n",
+ "while etemp>e:\n",
+ " if f(x1)*f(xr)>0:\n",
+ " x1=xr\n",
+ " xr=x1-(f(x1)*(x2-x1))/(f(x2)-f(x1))\n",
+ " etemp=abs(xr-xt)/xt*100\n",
+ " \n",
+ " if f(x1)*f(xr)<0:\n",
+ " x2=xr\n",
+ " xr=x1-(f(x1)*(x2-x1))/(f(x2)-f(x1))\n",
+ " etemp=abs(xr-xt)/xt*100\n",
+ " \n",
+ " if f(x1)*f(xr)==0:\n",
+ " break\n",
+ " \n",
+ "\n",
+ "print \"The result is=\",xr"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex5.6: Pg:135"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "BISECTION METHOD:\n",
+ "Iteration: 1\n",
+ "xl: 0\n",
+ "xu: 1.3\n",
+ "xr: 0.65\n",
+ "et(%): 35.0 %\n",
+ "----------------------------------------\n",
+ "Iteration: 2\n",
+ "xl: 0.65\n",
+ "xu: 1.3\n",
+ "xr: 0.975\n",
+ "et(%): 2.5 %\n",
+ "ea(%) 33.3333333333 %\n",
+ "----------------------------------------\n",
+ "Iteration: 3\n",
+ "xl: 0.975\n",
+ "xu: 1.3\n",
+ "xr: 1.1375\n",
+ "et(%): 13.75 %\n",
+ "ea(%) 14.2857142857 %\n",
+ "----------------------------------------\n",
+ "Iteration: 4\n",
+ "xl: 0.975\n",
+ "xu: 1.1375\n",
+ "xr: 1.05625\n",
+ "et(%): 5.625 %\n",
+ "ea(%) 7.69230769231 %\n",
+ "----------------------------------------\n",
+ "Iteration: 5\n",
+ "xl: 0.975\n",
+ "xu: 1.05625\n",
+ "xr: 1.015625\n",
+ "et(%): 1.5625 %\n",
+ "ea(%) 4.0 %\n",
+ "----------------------------------------\n",
+ "FALSE POSITION METHOD:\n",
+ "Iteration: 1\n",
+ "xl: 0\n",
+ "xu: 1.3\n",
+ "xr: 0.0942995953723\n",
+ "et(%): 90.5700404628 %\n",
+ "----------------------------------------\n",
+ "Iteration: 2\n",
+ "xl: 0.0942995953723\n",
+ "xu: 1.3\n",
+ "xr: 0.181758872519\n",
+ "et(%): 81.8241127481 %\n",
+ "ea(%) 48.1182986748 %\n",
+ "----------------------------------------\n",
+ "Iteration: 3\n",
+ "xl: 0.181758872519\n",
+ "xu: 1.3\n",
+ "xr: 0.26287401252\n",
+ "et(%): 73.712598748 %\n",
+ "ea(%) 30.8570403075 %\n",
+ "----------------------------------------\n",
+ "Iteration: 4\n",
+ "xl: 0.26287401252\n",
+ "xu: 1.3\n",
+ "xr: 0.338105103322\n",
+ "et(%): 66.1894896678 %\n",
+ "ea(%) 22.2508001396 %\n",
+ "----------------------------------------\n",
+ "Iteration: 5\n",
+ "xl: 0.338105103322\n",
+ "xu: 1.3\n",
+ "xr: 0.407877916593\n",
+ "et(%): 59.2122083407 %\n",
+ "ea(%) 17.1062983388 %\n",
+ "----------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=x**10 - 1#\n",
+ " return y\n",
+ "x1=0#\n",
+ "x2=1.3#\n",
+ "xt=1#\n",
+ "\n",
+ "#using bisection method\n",
+ "print \"BISECTION METHOD:\"\n",
+ "xr=(x1+x2)/2#\n",
+ "et=abs(xr-xt)/xt*100##error\n",
+ "print \"Iteration:\",1\n",
+ "print \"xl:\",x1\n",
+ "print \"xu:\",x2\n",
+ "print \"xr:\",xr\n",
+ "print \"et(%):\",et,\"%\"\n",
+ "print \"----------------------------------------\"\n",
+ "for i in range(2,6):\n",
+ " if f(x1)*f(xr)>0:\n",
+ " x1=xr\n",
+ " xr=(x1+x2)/2\n",
+ " ea=abs(xr-x1)/xr*100#\n",
+ " et=abs(xr-xt)/xt*100#\n",
+ " else:\n",
+ " if f(x1)*f(xr)<0:\n",
+ " x2=xr#\n",
+ " xr=(x1+x2)/2#\n",
+ " ea=abs(xr-x2)/xr*100#\n",
+ " et=abs(xr-xt)/xt*100#\n",
+ " \n",
+ " \n",
+ " if f(x1)*f(xr)==0:\n",
+ " break\n",
+ " \n",
+ " print \"Iteration:\",i\n",
+ " print \"xl:\",x1\n",
+ " print \"xu:\",x2\n",
+ " print \"xr:\",xr\n",
+ " print \"et(%):\",et,\"%\"\n",
+ " print \"ea(%)\",ea,\"%\"\n",
+ " print \"----------------------------------------\"\n",
+ "\n",
+ "\n",
+ "#using false position method\n",
+ "print \"FALSE POSITION METHOD:\"\n",
+ "x1=0#\n",
+ "x2=1.3#\n",
+ "xt=1#\n",
+ "xr=x1-(f(x1)*(x2-x1))/(f(x2)-f(x1))##\n",
+ "et=abs(xr-xt)/xt*100##error\n",
+ "print \"Iteration:\",1\n",
+ "print \"xl:\",x1\n",
+ "print \"xu:\",x2\n",
+ "print \"xr:\",xr\n",
+ "print \"et(%):\",et,\"%\"\n",
+ "print \"----------------------------------------\"\n",
+ "for i in range(2,6):\n",
+ " if f(x1)*f(xr)>0:\n",
+ " x1=xr#\n",
+ " xr=x1-(f(x1)*(x2-x1))/(f(x2)-f(x1))#\n",
+ " ea=abs(xr-x1)/xr*100#\n",
+ " et=abs(xr-xt)/xt*100#\n",
+ " \n",
+ " elif f(x1)*f(xr)<0:\n",
+ " x2=xr#\n",
+ " xr=x1-(f(x1)*(x2-x1))/(f(x2)-f(x1))#\n",
+ " ea=abs(xr-x2)/xr*100#\n",
+ " et=abs(xr-xt)/xt*100#\n",
+ " \n",
+ " \n",
+ " elif f(x1)*f(xr)==0:\n",
+ " break#\n",
+ " \n",
+ " print \"Iteration:\",i\n",
+ " print \"xl:\",x1\n",
+ " print \"xu:\",x2\n",
+ " print \"xr:\",xr\n",
+ " print \"et(%):\",et,'%'\n",
+ " print \"ea(%)\",ea,\"%\"\n",
+ " print \"----------------------------------------\""
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter6.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter6.ipynb
new file mode 100644
index 00000000..01ab6a06
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter6.ipynb
@@ -0,0 +1,686 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 6 : Open Methods"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.1: Pg: 143"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = :\n",
+ "0\n",
+ "1.0\n",
+ "0.367879441171\n",
+ "0.692200627555\n",
+ "0.500473500564\n",
+ "0.606243535086\n",
+ "0.545395785975\n",
+ "0.579612335503\n",
+ "0.560115461361\n",
+ "0.57114311508\n",
+ "0.564879347391\n",
+ "\n",
+ "e = :\n",
+ "100.0\n",
+ "-171.828182846\n",
+ "46.8536394613\n",
+ "-38.3091465933\n",
+ "17.4467896812\n",
+ "-11.1566225254\n",
+ "5.90335081441\n",
+ "-3.48086697962\n",
+ "1.93080393126\n",
+ "-1.10886824205\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "#f(x) = exp(-x) - x#\n",
+ "#using simple fixed point iteration, Xi+1 = exp(-Xi)\n",
+ "x = 0##initial guess\n",
+ "y=[]\n",
+ "e=[]\n",
+ "y.append(0)\n",
+ "e.append(0)\n",
+ "for i in range(1,12):\n",
+ " if i == 1 :\n",
+ " y.append(x)\n",
+ " else:\n",
+ " y.append(exp(-y[(i-1)]))\n",
+ " e.append((y[(i)] - y[(i-1)]) * 100 / y[(i)])\n",
+ " \n",
+ "print \"x = :\"\n",
+ "for x in y[1:]:\n",
+ " print x\n",
+ "print \"\\ne = :\"\n",
+ "for e in e[1:]:\n",
+ " print e\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.2: Pg: 144"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0]\n",
+ "y1 = [0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0]\n",
+ "y2 = [1.0, 0.8187307530779818, 0.6703200460356393, 0.5488116360940264, 0.44932896411722156, 0.36787944117144233]\n",
+ "answer using two curve graphical method = 5.7\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\nAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f6dbdac5f50>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot,title,xlabel,ylabel,show\n",
+ "#y1 = x\n",
+ "#y2 = exp(-x)\n",
+ "x=[]\n",
+ "y1=[]\n",
+ "y2=[]\n",
+ "for i in range(0,6):\n",
+ " if i == 0:\n",
+ " x.append(0)\n",
+ " else:\n",
+ " x.append(x[(i-1)] + 0.2)\n",
+ " \n",
+ " y1.append(x[(i)])\n",
+ " y2.append(exp(-x[(i)]))\n",
+ "\n",
+ "print \"x = \",x\n",
+ "print \"y1 = \",y1\n",
+ "print \"y2 = \",y2\n",
+ "plot(x,y1)\n",
+ "plot(x,y2)#\n",
+ "title(\"f(x) vs x\")\n",
+ "xlabel(\"x\")\n",
+ "y=(\"f(x)\")\n",
+ "# from the graph, we get\n",
+ "x7 = 5.7#\n",
+ "print \"answer using two curve graphical method = \",x7"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.3: Pg: 149"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [0.5, 0.5663110031972182, 0.5671431650348622, 0.5671432904097811, 0.5671432904097811]\n",
+ "et = [100.0, 11.709290976662398, 0.14672870783743905, 2.2106391984397626e-05]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "#f(x) = exp(-x)-x\n",
+ "#f'(x) = -exp(-x)-1\n",
+ "x=[]\n",
+ "et=[]\n",
+ "for i in range(0,5):\n",
+ " if i == 0:\n",
+ " x.append(0)\n",
+ " else:\n",
+ " x.append(x[(i-1)] - (exp(-x[(i-1)])-x[(i-1)])/(-exp(-x[(i-1)])-1))\n",
+ " et.append((x[(i)] - x[(i-1)]) * 100 / x[(i)])\n",
+ " x[(i-1)] = x[(i)]\n",
+ " \n",
+ "\n",
+ "print \"x =\",x\n",
+ "print \"et =\",et"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.4: Pg: 150"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Et1 = 0.0582022389721 which is close to the true error of 0.06714329\n",
+ "Et2 = 0.000815754223141 which is close to the true error of 0.0008323\n",
+ "Et3 = 1.253469828e-07 which is close to the true error of 0.0008323\n",
+ "Et4 = 2.84303276339e-15 which is close to the true error of 0.0008323\n",
+ "Thus it illustratres that the error of newton raphson method for this case is proportional(by a factor of 0.18095) to the square of the error of the previous iteration\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "#f(x) = exp(-x) - x\n",
+ "#f'(x) = -exp(-x) - 1\n",
+ "#f\"(x) = exp(-x)\n",
+ "xr = 0.56714329#\n",
+ "#E(ti+1) = -f\"(x)* E(ti) / 2 * f'(x)\n",
+ "Et0 = 0.56714329#\n",
+ "Et1 = -exp(-xr)* ((Et0)**2) / (2 * (-exp(-xr) - 1))#\n",
+ "print \"Et1 = \",Et1,\"which is close to the true error of 0.06714329\"\n",
+ "Et1true = 0.06714329#\n",
+ "Et2 = -exp(-xr)* ((Et1true)**2) / (2 * (-exp(-xr) - 1))#\n",
+ "print \"Et2 = \",Et2,\"which is close to the true error of 0.0008323\"\n",
+ "Et2true = 0.0008323#\n",
+ "Et3 = -exp(-xr)* ((Et2true)**2) / (2 * (-exp(-xr) - 1))#\n",
+ "print \"Et3 = \",Et3,\"which is close to the true error of 0.0008323\"\n",
+ "Et4 = -exp(-xr)* ((Et3)**2) / (2 * (-exp(-xr) - 1))#\n",
+ "print \"Et4 = \",Et4,\"which is close to the true error of 0.0008323\"\n",
+ "print \"Thus it illustratres that the error of newton raphson method for this case is proportional(by a factor of 0.18095) to the square of the error of the previous iteration\"\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.5: Pg: 151"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "y =\n",
+ "0.5\n",
+ "51.65\n",
+ "46.485\n",
+ "41.8365\n",
+ "37.65285\n",
+ "33.887565\n",
+ "30.4988085\n",
+ "27.44892765\n",
+ "24.704034885\n",
+ "22.2336313965\n",
+ "20.0102682569\n",
+ "18.0092414312\n",
+ "16.208317288\n",
+ "14.5874855592\n",
+ "13.1287370033\n",
+ "11.815863303\n",
+ "10.6342769727\n",
+ "9.57084927551\n",
+ "8.61376434811\n",
+ "7.75238791368\n",
+ "6.9771491233\n",
+ "6.27943421352\n",
+ "5.65149079876\n",
+ "5.08634173588\n",
+ "4.57770760618\n",
+ "4.11993695885\n",
+ "3.70794355537\n",
+ "3.33714995458\n",
+ "3.00343690726\n",
+ "2.70309824497\n",
+ "2.43280139954\n",
+ "2.18955475922\n",
+ "1.97068573981\n",
+ "1.7738402371\n",
+ "1.59703134797\n",
+ "1.43880793143\n",
+ "1.29871134273\n",
+ "1.17835471562\n",
+ "1.08334975351\n",
+ "1.02366466118\n",
+ "Thus, after the first poor prediction, the technique is converging on to the true root of 1 but at a very slow rate\n"
+ ]
+ }
+ ],
+ "source": [
+ "z = 0.5#\n",
+ "#f(x) = x**10 - 1\n",
+ "#f'(x) = 10*x**9\n",
+ "y=[]\n",
+ "for i in range(0,40):\n",
+ " if i==0:\n",
+ " y.append(z)\n",
+ " else:\n",
+ " y.append(y[(i-1)] - (y[(i-1)]**10 - 1)/(10*y[(i-1)]**9))\n",
+ " \n",
+ "print \"y =\"\n",
+ "for yy in y:\n",
+ " print yy\n",
+ "print \"Thus, after the first poor prediction, the technique is converging on to the true root of 1 but at a very slow rate\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.6: Pg: 155"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x =\n",
+ "0\n",
+ "1\n",
+ "0.61269983678\n",
+ "0.563838389161\n",
+ "0.56717035842\n",
+ "\n",
+ "et =\n",
+ "-8.03263435953\n",
+ "0.582727662867\n",
+ "-0.00477276558181\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "#f(x) = exp(-x)-x\n",
+ "x=[]\n",
+ "er=[]\n",
+ "for i in range(0,5):\n",
+ " if i==0:\n",
+ " x.append(0)\n",
+ " else:\n",
+ " if i==1:\n",
+ " x.append(1)\n",
+ " else:\n",
+ " x.append(x[(i-1)] - (exp(-x[(i-1)])-x[(i-1)])*(x[(i-2)] - x[(i-1)])/((exp(-x[(i-2)])-x[(i-2)])-(exp(-x[(i-1)])-x[(i-1)])))\n",
+ " er.append((0.56714329 - x[(i)]) * 100 / 0.56714329)\n",
+ " \n",
+ "print \"x =\"\n",
+ "for xx in x:\n",
+ " print xx\n",
+ "\n",
+ "print \"\\net =\"\n",
+ "for xx in er:\n",
+ " print xx\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.7: Pg: 156"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "secant method\n",
+ "x =\n",
+ "[0.5, 5, 1.8546349804879152, -0.1043807923822424]\n",
+ "[0.5, 5, 1.8546349804879152, -0.1043807923822424]\n",
+ "[0.5, 5, 1.8546349804879152, -0.1043807923822424]\n",
+ "[0.5, 5, 1.8546349804879152, -0.1043807923822424]\n",
+ "thus, secant method is divergent\n",
+ "Now, False position method\n",
+ "xr = 1.85463498049\n",
+ "xr = 1.21630781847\n",
+ "xr = 1.05852096245\n",
+ "thus, false position method is convergent\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "#f(x) = log(x)\n",
+ "print \"secant method\"\n",
+ "x=[]\n",
+ "for i in range(0,4):\n",
+ " if i==0:\n",
+ " x.append(0.5)\n",
+ " else:\n",
+ " if i==1:\n",
+ " x.append(5)\n",
+ " else:\n",
+ " x.append(x[(i-1)] - log(x[(i-1)]) * (x[(i-2)] - x[(i-1)])/(log(x[(i-2)]) - log(x[(i-1)])))\n",
+ " \n",
+ " \n",
+ "print \"x =\"\n",
+ "for xx in x:\n",
+ " print x\n",
+ "print \"thus, secant method is divergent\"\n",
+ "print \"Now, False position method\"\n",
+ "xl = 0.5#\n",
+ "xu = 5#\n",
+ "for i in range(0,3):\n",
+ " m = log(xl)#\n",
+ " n = log(xu)#\n",
+ " xr = xu - n*(xl - xu)/(m - n)#\n",
+ " print \"xr = \",xr\n",
+ " w = log(xr)#\n",
+ " if m*w < 0:\n",
+ " xu = xr#\n",
+ " else:\n",
+ " xl = xr#\n",
+ " \n",
+ "\n",
+ " \n",
+ "print \"thus, false position method is convergent\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.8: Pg: 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x1 = 1\n",
+ "x = 0.537262665537\n",
+ "error = 5.26861993966 %\n",
+ "x = 0.567009685365\n",
+ "error = 0.0235574743537 %\n",
+ "x = 0.567143424147\n",
+ "error = -2.3653190891e-05 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "Del = 0.01#\n",
+ "z = 0.56714329\n",
+ "x1 = 1#\n",
+ "#f(x) = exp(-x) - x\n",
+ "x=[]\n",
+ "print \"x1 = \",x1\n",
+ "for i in range(0,4):\n",
+ " if i == 0:\n",
+ " x.append(1)\n",
+ " else :\n",
+ " w = x[(i-1)]\n",
+ " m = exp(-x[(i-1)]) - x[(i-1)]\n",
+ " x[(i-1)] = x[(i-1)]*(1+Del)#\n",
+ " n = exp(-x[(i-1)]) - x[(i-1)]#\n",
+ " x.append(w - (x[(i-1)]- w) * m/(n-m))\n",
+ " em = (z - x[(i)])*100/z#\n",
+ " print \"x = \",x[(i)]\n",
+ " print \"error = \",em,\"%\"\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.9: Pg: 161"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "standard Newton Raphson method\n",
+ "x = 0.428571428571\n",
+ "error = 57.1428571429 %\n",
+ "x = 0.685714285714\n",
+ "error = 31.4285714286 %\n",
+ "x = 0.832865400495\n",
+ "error = 16.7134599505 %\n",
+ "x = 0.913329893257\n",
+ "error = 8.66701067434 %\n",
+ "x = 0.955783292966\n",
+ "error = 4.42167070343 %\n",
+ "x = 0.977655101273\n",
+ "error = 2.23448987271 %\n",
+ "Modified Newton Raphson method\n",
+ "x = 1.10526315789\n",
+ "error = -10.5263157895 %\n",
+ "x = 1.0030816641\n",
+ "error = -0.30816640986 %\n",
+ "x = 1.00000238149\n",
+ "error = -0.000238149381548 %\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "#f(x) = x**3 - 5*x**2 + 7*x -3\n",
+ "#f'(x) = 3*x**2 - 10*x + 7\n",
+ "print \"standard Newton Raphson method\"\n",
+ "x=[]\n",
+ "et=[]\n",
+ "for i in range(0,7):\n",
+ " if i == 0:\n",
+ " x.append(0)\n",
+ " else:\n",
+ " x.append(x[(i-1)] - ((x[(i-1)])**3 - 5*(x[(i-1)])**2 + 7*x[(i-1)] -3)/(3*(x[(i-1)])**2 - 10*(x[(i-1)]) + 7)) \n",
+ " et.append((1 - x[(i)]) * 100 / 1)\n",
+ " print \"x = \",x[i]\n",
+ " print \"error = \",et[(i-1)],\"%\"\n",
+ " x[(i-1)] = x[(i)]\n",
+ " \n",
+ "\n",
+ "print \"Modified Newton Raphson method\"\n",
+ "#f\"(x) = 6*x - 10\n",
+ "x=[]\n",
+ "et=[]\n",
+ "for i in range(0,4):\n",
+ " if i == 0:\n",
+ " x.append(0)\n",
+ " else:\n",
+ " x.append(x[(i-1) ]- ((x[(i-1)])**3 - 5*(x[(i-1)])**2 + 7*x[(i-1)] -3)*((3*(x[(i-1)])**2 - 10*(x[(i-1)]) + 7))/((3*(x[(i-1)])**2 - 10*(x[(i-1)]) + 7)**2 - ((x[(i-1)])**3 - 5*(x[(i-1)])**2 + 7*x[(i-1)] -3) * (6*x[(i-1)] - 10)))\n",
+ " et.append((1 - x[(i)]) * 100 / 1)\n",
+ " print \"x = \",x[i]\n",
+ " print \"error = \",et[i-1],'%'\n",
+ " x[(i-1) ]= x[(i)]\n",
+ " \n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.10: Pg: 165"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = 2.17944947177\n",
+ "y = 2.86050598812\n",
+ "x = 1.94053387891\n",
+ "y = 3.04955067322\n",
+ "x = 2.02045628588\n",
+ "y = 2.98340474674\n",
+ "Thus the approaching to the true value 0f x = 2 and y = 3\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sqrt\n",
+ "#u(x,y) = x**2 + x*y - 10\n",
+ "#v(x,y) = y + 3*x*y**2 -57\n",
+ "x=[]\n",
+ "y=[]\n",
+ "for i in range(0,4):\n",
+ " if i == 0:\n",
+ " x.append(1.5)\n",
+ " y.append(3.5)\n",
+ " else:\n",
+ " x.append(sqrt(10 - (x[(i-1)])*(y[(i-1)])))\n",
+ " y.append(sqrt((57 - y[(i-1)])/(3*x[(i)])))\n",
+ " print \"x =\",x[(i)]\n",
+ " print \"y =\",y[i]\n",
+ " \n",
+ "\n",
+ "print \"Thus the approaching to the true value 0f x = 2 and y = 3\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex6.11:Pg 168"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "bracket: [1.9999999838762603, 2.9999994133889132]\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "from numpy.linalg import det\n",
+ "def u(x,y):\n",
+ " z=x**2+x*y-10\n",
+ " return z\n",
+ "def v(x,y):\n",
+ " z=y+3*x*y**2-57\n",
+ " return z\n",
+ "x=1.5#\n",
+ "y=3.5#\n",
+ "e=[100,100]#\n",
+ "while e[0]>0.0001 and e[1]>0.0001:\n",
+ " J=mat([[2*x+y, x],[3*y**2, 1+6*x*y]])\n",
+ " deter=det(J)#\n",
+ " u1=u(x,y)#\n",
+ " v1=v(x,y)#\n",
+ " x=x-((u1*J[1,1]-v1*J[0,1])/deter)#\n",
+ " y=y-((v1*J[0,0]-u1*J[1,0])/deter)#\n",
+ " e[(0)]=abs(2-x)#\n",
+ " e[(1)]=abs(3-y)#\n",
+ "\n",
+ "bracket=[x ,y]#\n",
+ "print \"bracket:\",bracket"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter7.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter7.ipynb
new file mode 100644
index 00000000..022a81d0
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter7.ipynb
@@ -0,0 +1,717 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 7 : Roots of polynomials"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.1: Pg: 179"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The quptient is a(1)+a(2)*x where :\n",
+ "a(1)= 6\n",
+ "a(2)= 1\n",
+ "remainder= 0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "def f(x):\n",
+ " y=(x-4)*(x+6)\n",
+ " return y\n",
+ "n=2\n",
+ "a=[0,-24,2,1]\n",
+ "t=4\n",
+ "r=a[(3)]\n",
+ "a[(3)]=0\n",
+ "for i in arange(n,0,-1):\n",
+ " s=a[(i)]\n",
+ " a[(i)]=r\n",
+ " r=s+r*t\n",
+ "\n",
+ "print \"The quptient is a(1)+a(2)*x where :\"\n",
+ "print \"a(1)=\",a[1]\n",
+ "print \"a(2)=\",a[2]\n",
+ "print \"remainder=\",r"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.2: Pg: 183"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "iteration: 0\n",
+ "xr: 5\n",
+ "---------------------------------------------\n",
+ "iteration: 0\n",
+ "xr: 3.97648704224\n",
+ "ea(%): 25.7391246818 %\n",
+ "---------------------------------------------\n",
+ "iteration: 1\n",
+ "xr: 4.00105049882\n",
+ "ea(%): 0.613925182444 %\n",
+ "---------------------------------------------\n",
+ "iteration: 2\n",
+ "xr: 4.00000070527\n",
+ "ea(%): 0.026244833989 %\n",
+ "---------------------------------------------\n",
+ "iteration: 3\n",
+ "xr: 4.0\n",
+ "ea(%): 1.76317506373e-05 %\n",
+ "---------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=x**3 - 13*x - 12\n",
+ " return y\n",
+ "\n",
+ "x1t=-3\n",
+ "x2t=-1\n",
+ "x3t=4\n",
+ "x0=4.5\n",
+ "x1=5.5\n",
+ "x2=5\n",
+ "print \"iteration:\",0\n",
+ "print \"xr:\",x2\n",
+ "print \"---------------------------------------------\"\n",
+ "for i in range(0,4):\n",
+ "\n",
+ " h0=x1-x0\n",
+ " h1=x2-x1\n",
+ " d0=(f(x1)-f(x0))/(x1-x0)\n",
+ " d1=(f(x2)-f(x1))/(x2-x1)\n",
+ " a=(d1-d0)/(h1+h0)\n",
+ " b=a*h1+d1\n",
+ " c=f(x2)\n",
+ " d=(b**2 - 4*a*c)**0.5\n",
+ " if abs(b+d)>abs(b-d):\n",
+ " x3=x2+((-2*c)/(b+d))\n",
+ " else:\n",
+ " x3=x2+((-2*c)/(b-d))\n",
+ " ea=abs(x3-x2)*100/x3\n",
+ " x0=x1\n",
+ " x1=x2\n",
+ " x2=x3\n",
+ " print \"iteration:\",i\n",
+ " print \"xr:\",x2\n",
+ " print \"ea(%):\",ea,\"%\"\n",
+ " print \"---------------------------------------------\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.3: Pg: 187"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Iteration: 1\n",
+ "delata r: 0.212481426449\n",
+ "delata s: 1.61961367013\n",
+ "r: -0.787518573551\n",
+ "s: 0.619613670134\n",
+ "Error in r: 26.9811320755\n",
+ "Error in s: 261.39088729\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 2\n",
+ "delata r: 4.04595826496\n",
+ "delata s: 5.2325468461\n",
+ "r: 3.25843969141\n",
+ "s: 5.85216051623\n",
+ "Error in r: 124.168579079\n",
+ "Error in s: 89.4122235982\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 3\n",
+ "delata r: 2.4536017174\n",
+ "delata s: -24.7953826358\n",
+ "r: 5.71204140882\n",
+ "s: -18.9432221196\n",
+ "Error in r: 42.9549007403\n",
+ "Error in s: 130.893163155\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 4\n",
+ "delata r: -7.89009085\n",
+ "delata s: 22.0401977474\n",
+ "r: -2.17804944119\n",
+ "s: 3.09697562788\n",
+ "Error in r: 362.254901143\n",
+ "Error in s: 711.668427386\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 5\n",
+ "delata r: -58.1023530819\n",
+ "delata s: 185.887882155\n",
+ "r: -60.2804025231\n",
+ "s: 188.984857783\n",
+ "Error in r: 96.386803422\n",
+ "Error in s: 98.3612572646\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 6\n",
+ "delata r: 1160.70485616\n",
+ "delata s: 90001.7445985\n",
+ "r: 1100.42445363\n",
+ "s: 90190.7294562\n",
+ "Error in r: 105.477922844\n",
+ "Error in s: 99.7904608834\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 7\n",
+ "delata r: -21882.7802726\n",
+ "delata s: 31520060.138\n",
+ "r: -20782.355819\n",
+ "s: 31610250.8675\n",
+ "Error in r: 105.294993807\n",
+ "Error in s: 99.7146788558\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 8\n",
+ "delata r: 411986.000256\n",
+ "delata s: 11197461422.1\n",
+ "r: 391203.644438\n",
+ "s: 11229071673.0\n",
+ "Error in r: 105.312413653\n",
+ "Error in s: 99.7184963122\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 9\n",
+ "delata r: -7758767.67604\n",
+ "delata s: 3.9700158833e+12\n",
+ "r: -7367564.0316\n",
+ "s: 3.98124495498e+12\n",
+ "Error in r: 105.309809901\n",
+ "Error in s: 99.7179507466\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 10\n",
+ "delata r: 146111056.094\n",
+ "delata s: 1.4079763212e+15\n",
+ "r: 138743492.063\n",
+ "s: 1.41195756615e+15\n",
+ "Error in r: 105.310205129\n",
+ "Error in s: 99.7180336683\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 11\n",
+ "delata r: -2751543853.16\n",
+ "delata s: 4.99319657786e+17\n",
+ "r: -2612800361.1\n",
+ "s: 5.00731615352e+17\n",
+ "Error in r: 105.310145166\n",
+ "Error in s: 99.718021087\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 12\n",
+ "delata r: 51816650788.5\n",
+ "delata s: 1.77078151694e+20\n",
+ "r: 49203850427.4\n",
+ "s: 1.7757888331e+20\n",
+ "Error in r: 105.310154263\n",
+ "Error in s: 99.7180229957\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 13\n",
+ "delata r: -9.75803357309e+11\n",
+ "delata s: 6.27987270746e+22\n",
+ "r: -9.26599506881e+11\n",
+ "s: 6.29763059579e+22\n",
+ "Error in r: 105.310152883\n",
+ "Error in s: 99.7180227061\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 14\n",
+ "delata r: 1.83761812944e+13\n",
+ "delata s: 2.22708488435e+25\n",
+ "r: 1.74495817875e+13\n",
+ "s: 2.23338251495e+25\n",
+ "Error in r: 105.310153092\n",
+ "Error in s: 99.7180227501\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 15\n",
+ "delata r: -3.46057469143e+14\n",
+ "delata s: 7.89810111349e+27\n",
+ "r: -3.28607887356e+14\n",
+ "s: 7.92043493864e+27\n",
+ "Error in r: 105.310153061\n",
+ "Error in s: 99.7180227434\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 16\n",
+ "delata r: 6.51690195935e+15\n",
+ "delata s: 2.80097098525e+30\n",
+ "r: 6.18829407199e+15\n",
+ "s: 2.80889142018e+30\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227444\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 17\n",
+ "delata r: -1.22725312811e+17\n",
+ "delata s: 9.93332238103e+32\n",
+ "r: -1.16537018739e+17\n",
+ "s: 9.96141129523e+32\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 18\n",
+ "delata r: 2.31114454359e+18\n",
+ "delata s: 3.5227388664e+35\n",
+ "r: 2.19460752485e+18\n",
+ "s: 3.53270027769e+35\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 19\n",
+ "delata r: -4.35231247656e+19\n",
+ "delata s: 1.24929893994e+38\n",
+ "r: -4.13285172407e+19\n",
+ "s: 1.25283164021e+38\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 20\n",
+ "delata r: 8.19620908009e+20\n",
+ "delata s: 4.43049541996e+40\n",
+ "r: 7.78292390768e+20\n",
+ "s: 4.44302373636e+40\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 21\n",
+ "delata r: -1.54349770717e+22\n",
+ "delata s: 1.57122439144e+43\n",
+ "r: -1.46566846809e+22\n",
+ "s: 1.57566741518e+43\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 22\n",
+ "delata r: 2.90669155552e+23\n",
+ "delata s: 5.57216711507e+45\n",
+ "r: 2.76012470871e+23\n",
+ "s: 5.58792378922e+45\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 23\n",
+ "delata r: -5.47383760902e+24\n",
+ "delata s: 1.97610516534e+48\n",
+ "r: -5.19782513815e+24\n",
+ "s: 1.98169308913e+48\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 24\n",
+ "delata r: 1.03082482601e+26\n",
+ "delata s: 7.00803034767e+50\n",
+ "r: 9.78846574632e+25\n",
+ "s: 7.02784727856e+50\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 25\n",
+ "delata r: -1.94123373367e+27\n",
+ "delata s: 2.48531759419e+53\n",
+ "r: -1.8433490762e+27\n",
+ "s: 2.49234544147e+53\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 26\n",
+ "delata r: 3.6557020297e+28\n",
+ "delata s: 8.81389382974e+55\n",
+ "r: 3.47136712208e+28\n",
+ "s: 8.83881728416e+55\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 27\n",
+ "delata r: -6.88436281433e+29\n",
+ "delata s: 3.12574636833e+58\n",
+ "r: -6.53722610212e+29\n",
+ "s: 3.13458518562e+58\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 28\n",
+ "delata r: 1.29645280097e+31\n",
+ "delata s: 1.10851010324e+61\n",
+ "r: 1.23108053995e+31\n",
+ "s: 1.11164468843e+61\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 29\n",
+ "delata r: -2.44146032172e+32\n",
+ "delata s: 3.93120395638e+63\n",
+ "r: -2.31835226773e+32\n",
+ "s: 3.94232040327e+63\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 30\n",
+ "delata r: 4.59772118049e+33\n",
+ "delata s: 1.39415639979e+66\n",
+ "r: 4.36588595372e+33\n",
+ "s: 1.3980987202e+66\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 31\n",
+ "delata r: -8.65835904252e+34\n",
+ "delata s: 4.94421578898e+68\n",
+ "r: -8.22177044714e+34\n",
+ "s: 4.95819677619e+68\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 32\n",
+ "delata r: 1.63052908966e+36\n",
+ "delata s: 1.75340942893e+71\n",
+ "r: 1.54831138518e+36\n",
+ "s: 1.75836762571e+71\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 33\n",
+ "delata r: -3.07058773973e+37\n",
+ "delata s: 6.21826545742e+73\n",
+ "r: -2.91575660121e+37\n",
+ "s: 6.23584913368e+73\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 34\n",
+ "delata r: 5.78248442618e+38\n",
+ "delata s: 2.20523653295e+76\n",
+ "r: 5.49090876606e+38\n",
+ "s: 2.21147238208e+76\n",
+ "Error in r: 105.310153065\n",
+ "Error in s: 99.7180227443\n",
+ "-----------------------------------------------------\n",
+ "Iteration: 35\n",
+ "delata r: -inf\n",
+ "delata s: inf\n",
+ "r: -inf\n",
+ "s: inf\n",
+ "Error in r: nan\n",
+ "Error in s: nan\n",
+ "-----------------------------------------------------\n",
+ "[nan, -inf] The roots are:\n",
+ "x**3 - 4*x**2 + 5.25*x - 2.5 The quotient is:\n",
+ "-----------------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "def f(x):\n",
+ " y=x**5-3.5*x**4+2.75*x**3+2.125*x**2-3.875*x+1.25\n",
+ " return y\n",
+ "r=-1\n",
+ "s=-1\n",
+ "es=1##%\n",
+ "n=6\n",
+ "count=1\n",
+ "ear=100\n",
+ "eas=100\n",
+ "a=[0,1.25, -3.875, 2.125, 2.75, -3.5, 1]\n",
+ "b=a\n",
+ "c=a\n",
+ "while (ear>es) and (eas>es):\n",
+ " \n",
+ " b[(n)]=a[(n)]\n",
+ " b[(n-1)]=a[(n-1)]+r*b[(n)]\n",
+ " for i in arange(n-2,0,-1):\n",
+ " b[(i)]=a[(i)]+r*b[(i+1)]+s*b[(i+2)]\n",
+ "\n",
+ " c[(n)]=b[(n)]\n",
+ " c[(n-1)]=b[(n-1)]+r*c[(n)]\n",
+ " for i in arange((n-2),1,-1):\n",
+ " c[(i)]=b[(i)]+r*c[(i+1)]+s*c[(i+2)]\n",
+ " \n",
+ " #c(3)*dr+c(4)*ds=-b(2)\n",
+ " #c(2)*dr+c(3)*ds=-b(1)\n",
+ " ds=((-b[(1)])+(b[(2)]*c[(2)]/c[(3)]))/(c[(3)]-(c[(4)]*c[(2)]/c[(3)]))\n",
+ " dr=(-b[(2)]-c[(4)]*ds)/c[(3)]\n",
+ " r=r+dr\n",
+ " s=s+ds\n",
+ " ear=abs(dr/r)*100\n",
+ " eas=abs(ds/s)*100\n",
+ " print \"Iteration:\",count\n",
+ " print \"delata r:\",dr\n",
+ " print \"delata s:\",ds\n",
+ " print \"r:\",r\n",
+ " print \"s:\",s\n",
+ " print \"Error in r:\",ear\n",
+ " print \"Error in s:\",eas\n",
+ " print \"-----------------------------------------------------\"\n",
+ " count=count+1\n",
+ "\n",
+ "x1=(r+(r**2 + 4*s)**0.5)/2\n",
+ "x2=(r-(r**2 + 4*s)**0.5)/2\n",
+ "bracket=[x1, x2]\n",
+ "print bracket,\"The roots are:\"\n",
+ "print \"x**3 - 4*x**2 + 5.25*x - 2.5\",\"The quotient is:\"\n",
+ "print \"-----------------------------------------------------\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.4: Pg: 191"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The root is= 0.738868466337\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import cos\n",
+ "def f(x):\n",
+ " y=x-cos(x)\n",
+ " return y\n",
+ "x1=0\n",
+ "if f(x1)<0:\n",
+ " x2=x1+0.001\n",
+ " while f(x2)<0:\n",
+ " x2=x2+0.001\n",
+ " \n",
+ "elif x20==x1+0.001:\n",
+ " while f(x2)>0:\n",
+ " x2=x2+0.001\n",
+ " \n",
+ "else:\n",
+ " print \"The root is=\",x1\n",
+ "\n",
+ "x=x2-(x2-x1)*f(x2)/(f(x2)-f(x1))\n",
+ "print \"The root is=\",x"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.5: Pg: 191"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x= 2\n",
+ "y= 3.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "def u(x,y):\n",
+ " z=x**2+x*y-10\n",
+ " return z\n",
+ "def v(x,y):\n",
+ " z=y+3*x*y**2-57\n",
+ " return z\n",
+ "x=1\n",
+ "y=3.5\n",
+ "while u(x,y)!=v(x,y):\n",
+ " x=x+1\n",
+ " y=y-0.5\n",
+ "\n",
+ "print \"x=\",x\n",
+ "print \"y=\",y"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.6: Pg: 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of the polynomial are:\n",
+ "-1\n",
+ "1\n",
+ "-1/4 + sqrt(5)/4 - I*sqrt(sqrt(5)/8 + 5/8)\n",
+ "-1/4 + sqrt(5)/4 + I*sqrt(sqrt(5)/8 + 5/8)\n",
+ "1/4 + sqrt(5)/4 - I*sqrt(-sqrt(5)/8 + 5/8)\n",
+ "1/4 + sqrt(5)/4 + I*sqrt(-sqrt(5)/8 + 5/8)\n",
+ "-sqrt(5)/4 - 1/4 - I*sqrt(-sqrt(5)/8 + 5/8)\n",
+ "-sqrt(5)/4 - 1/4 + I*sqrt(-sqrt(5)/8 + 5/8)\n",
+ "-sqrt(5)/4 + 1/4 - I*sqrt(sqrt(5)/8 + 5/8)\n",
+ "-sqrt(5)/4 + 1/4 + I*sqrt(sqrt(5)/8 + 5/8)\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols,solve\n",
+ "x=symbols('s')\n",
+ "p=x**10 -1\n",
+ "print \"The roots of the polynomial are:\"\n",
+ "for r in solve(p):\n",
+ " print r"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.7: Pg: 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The roots of the polynomial are:\n",
+ "-1.00000000000000\n",
+ "0.500000000000000\n",
+ "2.00000000000000\n",
+ "1.0 - 0.5*I\n",
+ "1.0 + 0.5*I\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols,solve\n",
+ "x=symbols('s')\n",
+ "p=x**5 - 3.5*x**4 +2.75*x**3 +2.125*x**2 - 3.875*x + 1.25\n",
+ "print \"The roots of the polynomial are:\"\n",
+ "for r in solve(p):\n",
+ " print r"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex7.8: Pg: 196"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The root is= 0.739083980074\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import cos\n",
+ "def f(x):\n",
+ " y=x-cos(x)\n",
+ " return y\n",
+ "x1=0\n",
+ "if f(x1)<0:\n",
+ " x2=x1+0.00001\n",
+ " while f(x2)<0:\n",
+ " x2=x2+0.00001\n",
+ " \n",
+ "elif x2==x1+0.00001:\n",
+ " while f(x2)>0:\n",
+ " x2=x2+0.00001\n",
+ " \n",
+ "else:\n",
+ " print x1,\"The root is=\"\n",
+ "\n",
+ "x=x2-(x2-x1)*f(x2)/(f(x2)-f(x1))\n",
+ "print \"The root is=\",x"
+ ]
+ }
+ ],
+ "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/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter9.ipynb b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter9.ipynb
new file mode 100644
index 00000000..83d8625a
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/Chapter9.ipynb
@@ -0,0 +1,606 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter - 9 : Gauss Eliminations"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.1 Pg: 242"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The lines meet at=x2= 3 and x1= 4\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7fc740383550>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot,title,xlabel,ylabel,show\n",
+ "#the equations are:\n",
+ "#3*x1 + 2*x2=18 and -x1 + 2*x2=2\n",
+ "\n",
+ "#equation 1 becomes,\n",
+ "#x2=-(3/2)*x1 + 9\n",
+ "#equation 2 becomes,\n",
+ "#x2=-(1/2)*x1 + 1\n",
+ "\n",
+ "#plotting equation 1\n",
+ "x2=[0]\n",
+ "for x1 in range(1,7):\n",
+ " x2.append(-(3/2)*x1 + 9)\n",
+ "\n",
+ "x1=[1, 2, 3, 4, 5, 6]\n",
+ "#plotting equation 2\n",
+ "x4=[0]\n",
+ "for x3 in range(1,7):\n",
+ " x4.append((1/2)*x3 + 1)\n",
+ "\n",
+ "x3=[1, 2, 3, 4, 5, 6]\n",
+ "plot(x1,x2[1:])\n",
+ "plot(x3,x4[1:])\n",
+ "title(\"x2 vs x1\")\n",
+ "xlabel(\"x1\")\n",
+ "ylabel(\"x2\")\n",
+ "#the lines meet at x1=4 amd x2=3\n",
+ "print \"The lines meet at=x2=\",3,\"and x1=\",4"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.2 Pg: 244"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The value of determinant for system repesented in fig 9.1 = 8.0\n",
+ "The value of determinant for system repesented in fig 9.2 (a) = 0.0\n",
+ "The value of determinant for system repesented in fig 9.2 (b) = 0.0\n",
+ "The value of determinant for system repesented in fig 9.2 (c) = -0.04\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy.linalg import det\n",
+ "from numpy import mat\n",
+ "#For fig9.1\n",
+ "a=mat([[3, 2],[-1, 2]])\n",
+ "print \"The value of determinant for system repesented in fig 9.1 =\",det(a)\n",
+ "#For fig9.2 (a)\n",
+ "a=mat([[-0.5, 1],[-0.5, 1]])\n",
+ "print \"The value of determinant for system repesented in fig 9.2 (a) =\",det(a)\n",
+ "#For fig9.2 (b)\n",
+ "a=mat([[-0.5, 1],[-1, 2]])\n",
+ "print \"The value of determinant for system repesented in fig 9.2 (b) =\",det(a)\n",
+ "#For fig9.2 (c)\n",
+ "a=mat([[-0.5, 1],[-2.3/5, 1]])\n",
+ "print \"The value of determinant for system repesented in fig 9.2 (c) =\",det(a)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.3 Pg: 245"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The values are:\n",
+ "x1= -14.9\n",
+ "x2= -29.5\n",
+ "x3= 19.8\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "from numpy.linalg import det\n",
+ "#the matrix or the system\n",
+ "b1=-0.01#\n",
+ "b2=0.67#\n",
+ "b3=-0.44#\n",
+ "a=mat([[0.3, 0.52, 1],[0.5, 1, 1.9],[0.1, 0.3, 0.5]])\n",
+ "a1=mat([[a[1,1], a[1,2]],[a[2,1], a[2,2]]])\n",
+ "A1=det(a1)\n",
+ "a2=mat([[a[1,0], a[1,2]],[a[2,0], a[2,2]]])\n",
+ "A2=det(a2)\n",
+ "a3=mat([[a[1,0], a[1,1]],[a[2,0], a[2,1]]])\n",
+ "A3=det(a3)\n",
+ "D=a[0,0]*A1-a[0,1]*A2+a[0,2]*A3\n",
+ "p=mat([[b1, 0.52, 1],[b2, 1, 1.9],[b3, 0.3, 0.5]])\n",
+ "q=mat([[0.3, b1, 1],[0.5, b2, 1.9],[0.1, b3, 0.5]])\n",
+ "r=mat([[0.3, 0.52, b1],[0.5, 1, b2],[0.1 ,0.3, b3]])\n",
+ "x1=det(p)/D#\n",
+ "x2=det(q)/D#\n",
+ "x3=det(r)/D#\n",
+ "print \"The values are:\"\n",
+ "print \"x1=\",x1\n",
+ "print \"x2=\",x2\n",
+ "print \"x3=\",x3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.4 Pg: 246"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x1= 4.0\n",
+ "x2= 3.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "#the equations are:\n",
+ "#3*x1+2*x2=18\n",
+ "#-x1+2*x2=2\n",
+ "a11=3#\n",
+ "a12=2#\n",
+ "b1=18#\n",
+ "a21=-1#\n",
+ "a22=2#\n",
+ "b2=2#\n",
+ "x1=(b1*a22-a12*b2)/(a11*a22-a12*a21)#\n",
+ "x2=(b2*a11-a21*b1)/(a11*a22-a12*a21)#\n",
+ "print \"x1=\",x1\n",
+ "print \"x2=\",x2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.5 Pg: 251"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x1= 2.61666666667\n",
+ "x2= -2.79319371728\n",
+ "x3= 7.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import arange\n",
+ "\n",
+ "n=3#\n",
+ "b=[7.85,-19.3,71.4] # ################################\n",
+ "a=mat([[3, -0.1, -0.2],[0.1, 7, -0.3],[0.3, -0.2, 10]])\n",
+ "for k in range(1,n):\n",
+ " for i in range(k+1,n+1):\n",
+ " fact=a[i-1,k-1]/a[k-1,k-1]\n",
+ " for j in range(k+1,n+1):\n",
+ " a[i-1,j-1]=a[i-1,j-1]-fact*(a[k-1,j-1])\n",
+ " \n",
+ " b[(i-1)]=b[(i-1)]-fact*b[(k-1)]\n",
+ " \n",
+ "x=[0,0,b[(n-1)]/a[n-1,n-1]]\n",
+ "for i in arange(n-1,0,-1):\n",
+ " s=b[i-1]#\n",
+ " for j in range(i+1,n+1):\n",
+ " s=s-a[i-1,j-1]*x[j-1]\n",
+ " \n",
+ " x[i-1]=b[i-1]/a[i-1,i-1]\n",
+ "\n",
+ "print \"x1=\",x[0]\n",
+ "print \"x2=\",x[1]\n",
+ "print \"x3=\",x[2]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.6 Pg:255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "For the original system:\n",
+ "x1= 4.0\n",
+ "x2= 3.0\n",
+ "For the new system:\n",
+ "x1= 8.0\n",
+ "x2= 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "a11=1#\n",
+ "a12=2#\n",
+ "b1=10#\n",
+ "a21=1.1#\n",
+ "a22=2#\n",
+ "b2=10.4#\n",
+ "x1=(b1*a22-a12*b2)/(a11*a22-a12*a21)#\n",
+ "x2=(b2*a11-a21*b1)/(a11*a22-a12*a21)#\n",
+ "print \"For the original system:\"\n",
+ "print \"x1=\",x1\n",
+ "print \"x2=\",x2\n",
+ "a21=1.05#\n",
+ "x1=(b1*a22-a12*b2)/(a11*a22-a12*a21)#\n",
+ "x2=(b2*a11-a21*b1)/(a11*a22-a12*a21)#\n",
+ "print \"For the new system:\"\n",
+ "print \"x1=\",x1\n",
+ "print \"x2=\",x2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.7 Pg: 257"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The determinant for part(a)= 8.0\n",
+ "The determinant for part(b)= -0.2\n",
+ "The determinant for part(c)= -20.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy.linalg import det\n",
+ "from numpy import mat\n",
+ "#part a\n",
+ "a=mat([[3, 2],[-1, 2]])\n",
+ "b1=18#\n",
+ "b2=2#\n",
+ "print \"The determinant for part(a)=\",det(a)\n",
+ "#part b\n",
+ "a=mat([[1, 2],[1.1, 2]])\n",
+ "b1=10\n",
+ "b2=10.4#\n",
+ "print \"The determinant for part(b)=\",det(a)\n",
+ "#part c\n",
+ "a1=a*10#\n",
+ "b1=100#\n",
+ "b2=104#\n",
+ "print \"The determinant for part(c)=\",det(a1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.8 Pg: 258"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The determinant for part(a)= 1.3335\n",
+ "The determinant for part(b)= -0.05\n",
+ "The determinant for part(c)= -0.05\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy.linalg import det\n",
+ "from numpy import mat\n",
+ "#part a\n",
+ "a=mat([[1, 0.667],[-0.5, 1]])\n",
+ "b1=6#\n",
+ "b2=1#\n",
+ "print \"The determinant for part(a)=\",det(a)\n",
+ "#part b\n",
+ "a=mat([[0.5, 1],[0.55, 1]])\n",
+ "b1=5\n",
+ "b2=5.2\n",
+ "print \"The determinant for part(b)=\",det(a)\n",
+ "#part c\n",
+ "b1=5#\n",
+ "b2=5.2#\n",
+ "print \"The determinant for part(c)=\",det(a)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.9 Pg: 260"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x2 = 0.666666666667\n",
+ "x1 = 0.333333333334\n",
+ "The error varies depending on the no. of significant figures used\n"
+ ]
+ }
+ ],
+ "source": [
+ "#0.0003*x1 + 3*x2 = 2.0001\n",
+ "#1*x1 + 1*x2 = 1\n",
+ "a11 = 0.000#\n",
+ "#multiplying first equation by 1/0.0003, we get, x1 + 10000*x2 = 6667\n",
+ "x2 = (6667-1)/(10000-1)#\n",
+ "x1 = 6667 - 10000*x2#\n",
+ "print \"x2 = \",x2\n",
+ "print \"x1 = \",x1\n",
+ "print \"The error varies depending on the no. of significant figures used\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.10 Pg: 262"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "without scaling, applying forward elimination\n",
+ "x2 = 1.0\n",
+ "x1 = 0\n",
+ "error for x1 = 100.0\n",
+ "with scaling\n",
+ "x1 = 1\n",
+ "x2 = 1\n",
+ "pivot and retaining original coefficients\n",
+ "x1 = 1\n",
+ "x2 = 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "#2*x1 + 10000*x2 = 10000\n",
+ "#x1 + x2 = 2\n",
+ "x1 = 1#\n",
+ "x2 = 1#\n",
+ "print \"without scaling, applying forward elimination\"\n",
+ "#x1 is too small and can be neglected\n",
+ "x21 = 10000/10000#\n",
+ "x11 = 0#\n",
+ "e1 = (x1 - x11)*100/x1#\n",
+ "print \"x2 = \",x21\n",
+ "print \"x1 = \",x11\n",
+ "print \"error for x1 = \",e1\n",
+ "print \"with scaling\"\n",
+ "#0.00002*x1 + x2 = 1\n",
+ "#now x1 is neglected because of the co efficient\n",
+ "x22 = 1#\n",
+ "x12 = 2 - x1#\n",
+ "print \"x1 = \",x12\n",
+ "print \"x2 = \",x22\n",
+ "#using original co efficient\n",
+ "#x1 can be neglected\n",
+ "print \"pivot and retaining original coefficients\"\n",
+ "x22 = 10000/10000#\n",
+ "x12 = 2 - x1#\n",
+ "print \"x1 = \",x12\n",
+ "print \"x2 = \",x22"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.11 Pg: 265"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a= 8.59411764706 m/s**2\n",
+ "T= 34.4117647059 N\n",
+ "R= 36.7647058824 N\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat\n",
+ "from numpy.linalg import solve\n",
+ "a=mat([[70, 1, 0],[60, -1, 1],[40, 0, -1]])\n",
+ "b=mat([[636],[518],[307]])\n",
+ "x=abs(solve(a,b))\n",
+ "print \"a=\",x[0,0],\"m/s**2\"\n",
+ "print \"T=\",x[1,0],\"N\"\n",
+ "print \"R=\",x[2,0],\"N\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:9.12 Pg: 269"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Equation in matrix form can be written as : \n",
+ "[[ 3. -0.1 -0.2 7.85]\n",
+ " [ 0.1 7. -0.3 -19.3 ]\n",
+ " [ 0.3 -0.2 10. 71.4 ]]\n",
+ "final matrix = \n",
+ "[[ 1. 0. 0. 3. ]\n",
+ " [ 0. 1. 0. -2.5]\n",
+ " [ 0. 0. 1. 7. ]]\n",
+ "\n",
+ "x1 = 3.0\n",
+ "x2 = -2.5\n",
+ "x3 = 7.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from numpy import mat,vstack\n",
+ "from numpy.linalg import det\n",
+ "#3*x1 - 0.1*x2 - 0.2*x3 = 7.85\n",
+ "#0.1*x1 + 7*x2 - 0.3*x3 = -19.3\n",
+ "#0.3*x1 - 0.2*x2 + 10*x3 = 71.4\n",
+ "# this can be written in matrix form as\n",
+ "A = mat([[3,-0.1,-0.2,7.85],[0.1,7,-0.3,-19.3],[0.3,-0.2,10,71.4]])\n",
+ "print \"Equation in matrix form can be written as : \\n\",A\n",
+ "X = A[0:1] / (A[0,0])#\n",
+ "Y = A[1:2] - 0.1*X#\n",
+ "Z = A[2:3] - 0.3*X#\n",
+ "\n",
+ "Y = Y/(Y[0,1])\n",
+ "X = X - Y * (X[0,1])\n",
+ "Z = Z - Y * (Z[0,1])#\n",
+ "Z = Z/(Z[0,2])#\n",
+ "X = X - Z*(X[0,2])#\n",
+ "Y = Y - Z*(Y[0,2])#\n",
+ "A = vstack((X,Y,Z))\n",
+ "print \"final matrix = \\n\",A\n",
+ "print \"\\nx1 = \",A[0,3]\n",
+ "print \"x2 = \",A[1,3]\n",
+ "print \"x3 = \",A[2,3]"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14PathOfAscent.png b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14PathOfAscent.png
new file mode 100644
index 00000000..f4f76738
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14PathOfAscent.png
Binary files differ
diff --git a/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14RandomNumberGenerator.png b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14RandomNumberGenerator.png
new file mode 100644
index 00000000..de7353a3
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch14RandomNumberGenerator.png
Binary files differ
diff --git a/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch26EulerMethod.png b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch26EulerMethod.png
new file mode 100644
index 00000000..0bf7e18d
--- /dev/null
+++ b/Numerical_Methods_For_Engineers_by_S._C._Chapra_And_R._P._Canale/screenshots/Ch26EulerMethod.png
Binary files differ
diff --git a/sample_notebooks/testingtesting/fameetha.ipynb b/sample_notebooks/testingtesting/fameetha.ipynb
new file mode 100644
index 00000000..70f5ad4b
--- /dev/null
+++ b/sample_notebooks/testingtesting/fameetha.ipynb
@@ -0,0 +1,87 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 7:Starting And Speed Control Of Induction Motor "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 7.1,Page 7-6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x= 0.7453\n",
+ "Thus 74.53 % tapping is required\n",
+ "Ist= 3.33 IF.L\n",
+ "Thus supply starting current is 3.33 times the full load current\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#variable declaration\n",
+ "Isc=6 # starting current at rated voltage(amp)\n",
+ "Sf=5 # full load slip\n",
+ "Tfl=Tst=1 # full load torque=starting torque(N-m)\n",
+ "Ifl=1 # full load current(amp)\n",
+ "\n",
+ "#calculation\n",
+ "x=math.sqrt((Tst/Tfl) * ((float(Ifl)/float(Isc))**2)*(1/(float(Sf)/100)))\n",
+ "print 'x=',str (x)[:6]\n",
+ "print 'Thus',str(x*100)[:5],'% tapping is required'\n",
+ "\n",
+ "#Ist(supply)=x**2 * 6\n",
+ "Ist=(x**2) * Isc # supply starting current(IF.L)\n",
+ "Ist=round(Ist,2)\n",
+ "print 'Ist=',Ist,'IF.L'\n",
+ "print 'Thus supply starting current is',Ist,'times the full load current'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}