summaryrefslogtreecommitdiff
path: root/sample_notebooks
diff options
context:
space:
mode:
authorTrupti Kini2016-10-29 23:30:54 +0600
committerTrupti Kini2016-10-29 23:30:54 +0600
commit63c1ca7a6a2a4efd1de7560f30887f469b883138 (patch)
treee2a52a9c9fea5316770f22b0a89ccc5174898fac /sample_notebooks
parent413f40c85ad36ca9a28229baa02d0b5abd176135 (diff)
downloadPython-Textbook-Companions-63c1ca7a6a2a4efd1de7560f30887f469b883138.tar.gz
Python-Textbook-Companions-63c1ca7a6a2a4efd1de7560f30887f469b883138.tar.bz2
Python-Textbook-Companions-63c1ca7a6a2a4efd1de7560f30887f469b883138.zip
Added(A)/Deleted(D) following books
A "sample_notebooks/Suhaib Alam/ch2.ipynb"
Diffstat (limited to 'sample_notebooks')
-rw-r--r--sample_notebooks/Suhaib Alam/ch2.ipynb507
1 files changed, 507 insertions, 0 deletions
diff --git a/sample_notebooks/Suhaib Alam/ch2.ipynb b/sample_notebooks/Suhaib Alam/ch2.ipynb
new file mode 100644
index 00000000..b2b163f6
--- /dev/null
+++ b/sample_notebooks/Suhaib Alam/ch2.ipynb
@@ -0,0 +1,507 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 2 - Truncation Errors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 2.1 Page No:29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "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"
+ ]
+ }
+ ],
+ "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"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.2: Page No:32"
+ ]
+ },
+ {
+ "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"
+ ]
+ }
+ ],
+ "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"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 2.3 : Page No:35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\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=4# Input value of m\n",
+ "h=5# 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 2.4: Page No:42"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "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=1.232323 # 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 2.5: Page No: 45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "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 2.6: Page No: 46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "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": [
+ "from scipy.misc import derivative\n",
+ "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 2.7 : Page No:48"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "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
+}