summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrupti Kini2016-01-24 23:30:10 +0600
committerTrupti Kini2016-01-24 23:30:10 +0600
commite72db949abd5bf2bc47e860845dd94f3ed8137ae (patch)
tree5fdc94a97811519bb5d6b9b518769f958bfcf840
parentadee49b26142063171e1bc9a9b3ef39727b8a2aa (diff)
downloadPython-Textbook-Companions-e72db949abd5bf2bc47e860845dd94f3ed8137ae.tar.gz
Python-Textbook-Companions-e72db949abd5bf2bc47e860845dd94f3ed8137ae.tar.bz2
Python-Textbook-Companions-e72db949abd5bf2bc47e860845dd94f3ed8137ae.zip
Added(A)/Deleted(D) following books
A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter11.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter13.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter14.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter15.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter16.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter17.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter2.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter21.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter22.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter23.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter26.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter4.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter5.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter9.ipynb A A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21AOQCurve.png A A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21X&RChart.png A A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/22CuttingVvsCutterDia.png A sample_notebooks/MohdAkhlak/Chap_5.ipynb
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter11.ipynb116
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter13.ipynb515
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter14.ipynb827
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter15.ipynb403
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter16.ipynb57
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter17.ipynb86
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter2.ipynb745
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter21.ipynb651
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter22.ipynb357
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter23.ipynb393
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter26.ipynb61
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter4.ipynb869
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter5.ipynb1736
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter9.ipynb477
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21AOQCurve.pngbin0 -> 17618 bytes
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21X&RChart.pngbin0 -> 39330 bytes
-rw-r--r--A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/22CuttingVvsCutterDia.pngbin0 -> 42089 bytes
-rw-r--r--sample_notebooks/MohdAkhlak/Chap_5.ipynb304
18 files changed, 7597 insertions, 0 deletions
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter11.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter11.ipynb
new file mode 100644
index 00000000..1a908ccf
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter11.ipynb
@@ -0,0 +1,116 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:882d0a29420fd532411cf2a1433449566384dac9a948fb939a8549e651a69140"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11 : Surface Finish"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 11.1 : Page 436"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "v = 15000 # vertical magnification\n",
+ "h = 100 # horizontal magnification\n",
+ "l = 0.8 # sampling length in mm\n",
+ "a1 = 160 # area above datum line in mm**2\n",
+ "a2 = 90 # area above datum line in mm**2\n",
+ "a3 = 180 # area above datum line in mm**2\n",
+ "a4 = 50 # area above datum line in mm**2\n",
+ "a5 = 95 # area below datum line in mm**2\n",
+ "a6 = 65 # area below datum line in mm**2\n",
+ "a7 = 170 # area below datum line in mm**2\n",
+ "a8 = 150 # area below datum line in mm**2\n",
+ "a = (a1+a2+a3+a4+a5+a6+a7+a8)/(v*h)\n",
+ "CLA= a/l\n",
+ "print \"C.L.A value = %0.2f*10**-6 m \" %(CLA*1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "C.L.A value = 0.00*10**-6 m \n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 11.2 : Page 436"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sqrt\n",
+ "# from figure 11.23\n",
+ "y1 = 0.15 # mu_m\n",
+ "y2 = 0.25 # mu_m\n",
+ "y3 = 0.35 # mu_m\n",
+ "y4 = 0.25 # mu_m\n",
+ "y5 = 0.30 # mu_m\n",
+ "y6 = 0.15 # mu_m\n",
+ "y7 = 0.10 # mu_m\n",
+ "y8 = 0.30 # mu_m\n",
+ "y9 = 0.35 # mu_m\n",
+ "y10 = 0.10 # mu_m\n",
+ "y1sqr = y1**2 # mu_m\n",
+ "y2sqr = y2**2# mu_m\n",
+ "y3sqr = y3**2 # mu_m\n",
+ "y4sqr = y4**2 # mu_m\n",
+ "y5sqr = y5**2 # mu_m\n",
+ "y6sqr = y6**2 # mu_m\n",
+ "y7sqr = y7**2 # mu_m\n",
+ "y8sqr = y8**2 # mu_m\n",
+ "y9sqr = y9**2 # mu_m\n",
+ "y10sqr = y10**2 # mu_m\n",
+ "n = 10\n",
+ "yn = (y1+y2+y3+y4+y5+y6+y7+y8+y9+y10)/n # arithmetic average in mu_m\n",
+ "rms = sqrt((y1sqr+y2sqr+y3sqr+y4sqr+y5sqr+y6sqr+y7sqr+y8sqr+y9sqr+y10sqr)/n) # r.m.s value in mu_m\n",
+ "print \" The arithmetic average = %0.2f*10**-6 m \\n The r.m.s. value = %0.3f*10**-6 m\"%(yn,rms)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The arithmetic average = 0.23*10**-6 m \n",
+ " The r.m.s. value = 0.248*10**-6 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter13.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter13.ipynb
new file mode 100644
index 00000000..54dc2c04
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter13.ipynb
@@ -0,0 +1,515 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:7588291f0540c3e755e9a78f3b9dd480a79433969d6b295aae701bc4d870af4e"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13 : Analysis of Metal Forming Process"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.1 : page 515"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "from math import sqrt, pi, tan, exp\n",
+ "sigma_0 = 240 # N/mm**2\n",
+ "d1 = 5 # initial wire diameter in mm\n",
+ "d0 = 5.5 # final wire diameter in mm\n",
+ "x = d1/d0 # mm\n",
+ "alpha = 8 # angle of contact\n",
+ "alpha = alpha*pi/180\n",
+ "mu = 0.1 # coefficient of friction\n",
+ "B = mu/tan(alpha) \n",
+ "sigma_d = (sigma_0*(1+B)*(1-(x)**(2*B)))/B # N/mm**2\n",
+ "l = 3 # die land in mm\n",
+ "mu = 0.1 # coefficient of friction\n",
+ "r1 = d1/2 # mm\n",
+ "sigma_t = sigma_0 - (sigma_0 - sigma_d)/exp((2*mu*l)/r1) # N/mm**2\n",
+ "dl = sigma_t*pi*(r1)**2 # drawing load in N\n",
+ "print \"Total drawing load = %0.1f N\"%(dl)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total drawing load = 2136.5 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.2 : page 517"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import log10\n",
+ "alpha = 15 # angle of contact\n",
+ "alpha = alpha*pi/180\n",
+ "bita = 0 # degree\n",
+ "mu = 0.1 # coefficient of friction\n",
+ "mu1 = mu\n",
+ "mu2 = mu\n",
+ "h1 = 1.75 # mm\n",
+ "h0 = 2.5 # mm\n",
+ "B = (mu1+mu2)/(tan(alpha)-tan(bita)) \n",
+ "y1 = (1+B)*(1-(h1/h0)**B)/B #sigma_d/sigma_0 for plug mandrels in N/mm**2\n",
+ "z = 1/((h0/h1)-1)\n",
+ "y2 = log10(z)# sigma_d/sigma_0 for movable mandrels in N/mm**2\n",
+ "print \" The pipe drawing force force on plug mandrels = %0.3f \\n The pipe drawing forcw on mandrels = %0.3f\"%(y1,y2)\n",
+ "print \" Use of movable mandrel substantially reduces drawing force\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The pipe drawing force force on plug mandrels = 0.547 \n",
+ " The pipe drawing forcw on mandrels = 0.368\n",
+ " Use of movable mandrel substantially reduces drawing force\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.3 : page 517"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import acos, atan, log\n",
+ "h0 = 25 # thickness of plate in mm \n",
+ "h1 = 20 # mm \n",
+ "delta_h = h0-h1 # mm\n",
+ "sigma = 100 # maximum pressure in N/mm**2\n",
+ "D = 500 # rolled diameter in mm\n",
+ "r = D/2 # rolled radius in mm\n",
+ "alpha = acos(1-(delta_h/D)) # angle of contact in radians\n",
+ "mu = tan(alpha) # coefficient of friction\n",
+ "Ho = 2*sqrt(r/h1)*atan(sqrt(r/h1)*mu)\n",
+ "Hn = (Ho - (log(h0/h1))/mu)/2\n",
+ "theta = sqrt(h1/r)*tan(sqrt(h1/r)*(Hn/2)) # radian\n",
+ "hn = h1 + r*theta**2 # neutral section in mm\n",
+ "x = hn/h0 \n",
+ "bs = (1-x)*100 # backward slip\n",
+ "y = hn/h1\n",
+ "fs = (y-1)*100 # forward slip\n",
+ "sigma0 = 2*sigma/sqrt(3)\n",
+ "pn = sigma0*hn*exp(mu*Hn)/h1 #N/mm**2\n",
+ "print \"Neutral section = %0.1f mm\"%(hn)\n",
+ "print \"Backward slip = %0.1f percent\\nForward slip = %0.1f percent\"%(bs,fs)\n",
+ "print \"Maximum pressure = %0.1f N/mm**2\"%(pn)\n",
+ " # Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Neutral section = 20.3 mm\n",
+ "Backward slip = 18.8 percent\n",
+ "Forward slip = 1.5 percent\n",
+ "Maximum pressure = 132.6 N/mm**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.4 : page 519"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Do = 250 # diameter in mm\n",
+ "ho = 250 # hieght in mm\n",
+ "delta_h = 100 # mm\n",
+ "h = 150 # mm\n",
+ "sigma0 = 55 # N/mm**2\n",
+ "d = Do*sqrt(ho/(ho-delta_h)) # diameter in mm \n",
+ "mu = 0.42 # coefficient of friction\n",
+ "R = 162.5 # mm\n",
+ "pa = sigma0/2*(h/(mu*R))**2*(exp(2*mu*R/h)-2*mu*R/h-1) # N/mm**2\n",
+ "p = pa*pi*(R)**2 # force in kN\n",
+ "print \"Force = %d kN\"%(p/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Force = 6328 kN\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.5 : page 519"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import log\n",
+ "d = 150 # diameter in mm\n",
+ "h = 10 # thickness in mm\n",
+ "R = d/2 # radius in mm\n",
+ "mu = 0.2 # coefficient of friction\n",
+ "sigma_0 = 200 # N/mm**2\n",
+ "Rs = R - (h/(2*mu))*log(1/(sqrt(3)*mu)) # sticking radius in mm\n",
+ "Ps = sigma_0*exp(2*mu*(R-Rs)/h) # pressure at sticking radius in N/mm**2\n",
+ "from sympy import symbols, diff, solve, exp\n",
+ "y=lambda r:2*pi*r*sigma_0*exp(2*mu/h*(R-r))\n",
+ "from sympy.mpmath import quad\n",
+ "L_sld = quad(y,[48.5,75])\n",
+ "L_sld = L_sld/1000 # load on sliding portion in kN\n",
+ "Pc = Ps + (2*sigma_0*Rs)/(h*sqrt(3)) # pressure at centre in N/mm**2\n",
+ "L_sp = (Pc+Ps)*pi*(Rs)**2/(2*1000) # load on sticking portion in kN\n",
+ "F_l = L_sld + L_sp # total forging load in kN\n",
+ "print \" Sticking radius = %0.1f mm \\n Total forging load = %0.3f MN\"%(Rs ,F_l/1000)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Sticking radius = 48.5 mm \n",
+ " Total forging load = 11.927 MN\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.7 : page 522"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "RA = 0.30\n",
+ "d = 12 # diameter in mm\n",
+ "alpha = 6 # angle of contact in degree\n",
+ "alpha = 6*pi/180 # angle of contact in radian\n",
+ "mu = 0.10 # coefficient of friction\n",
+ "sigma_0 = 240 # N/mm**2\n",
+ "B = mu/tan(alpha)\n",
+ "x = 1 - RA\n",
+ "sigma_d = (sigma_0*(1+B)*(1-(x)**B))/B # N/mm**2\n",
+ "r1 = sqrt(x)*(d/2) # mm\n",
+ "l = sigma_d*pi*(r1)**2 # load in kN\n",
+ "ita = 98 # efficiency\n",
+ "ita = ita/100\n",
+ "s = 2.3 # drawing speed in m/s\n",
+ "P = (l*s)/ita # kW\n",
+ "print \"Drawing load = %0.2f kN\\nPower of motor = %0.2f kW\"%(l/1000 ,P/1000 )\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Drawing load = 11.21 kN\n",
+ "Power of motor = 26.32 kW\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.8 : page 522"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "mu1 = 0.15 # coefficient of friction \n",
+ "mu2 = 0.18 # coefficient of fricton\n",
+ "alpha = 14 # angle of contact in degree\n",
+ "alpha = alpha*pi/180\n",
+ "bita = 10 # semi-cone angle in degree\n",
+ "bita = bita*pi/180\n",
+ "sigma_0 = 1.40 # kN/mm**2\n",
+ "h0 = 1.5 #mm\n",
+ "h1 = 1 # mm\n",
+ "B = (mu1+mu2)/(tan(alpha)+tan(bita))\n",
+ "sigmad = (sigma_0*(1+B)*(1-(h1/h0)**B))/B # drawing stress in kN/mm**2\n",
+ "d1 = 11 # outside diameter in mm\n",
+ "t = 1 # thickness in mm\n",
+ "d2 = d1-2*t # mm\n",
+ "a = (pi*((d1)**2-(d2)**2))/4 # area in mm**2\n",
+ "l = sigmad*a # load in kN\n",
+ "s = 0.65 # drawing speed in m/s\n",
+ "w = l*s # work in kJ/s\n",
+ "p = w # power in kW\n",
+ "print \" Drawing load = %0.3f kN\\n Power rating of motor = %0.2f kW\"%(l , p)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Drawing load = 27.166 kN\n",
+ " Power rating of motor = 17.66 kW\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.9 : page 523"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "sigma_0 = 50 # pressure at start in MPa\n",
+ "B = 0.9 # width in m\n",
+ "h1 = 0.2 # thickness in m\n",
+ "b = 0.3 # tool bite in m\n",
+ "# At commencement of forging\n",
+ "FL = sigma_0*B*b*(1+(b/(4*h1))) # forging load in MN\n",
+ "# At completion of forging\n",
+ "h2 = 0.1 # thickness in m\n",
+ "sigma_0c = 150 # pressure at completion in MPa\n",
+ "FL2 = sigma_0c*B*b*(1+(b/(4*h2))) # forging load in MN\n",
+ "print \" Forging load at start of forging = %0.4f MN\\n Forging load at completion of forging = %0.3f MN\"%(FL , FL2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Forging load at start of forging = 18.5625 MN\n",
+ " Forging load at completion of forging = 70.875 MN\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.10 : page 524"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "sigma_0 = 250 # N/mm**2\n",
+ "d1 = 5 # initial wire diameter in mm\n",
+ "d0 = 15 # final wire diameter in mm \n",
+ "r0 = d0/2\n",
+ "r1 = d1/2\n",
+ "x = (r0/r1)**2 # mm\n",
+ "alpha = 45 # angle of contact\n",
+ "alpha = alpha*pi/180\n",
+ "mu = 0.1 # coefficient of friction\n",
+ "B = mu/tan(alpha) \n",
+ "sigma_x0 = (sigma_0*(1+B)*(1-(x)**B))/B # N/mm**2\n",
+ "sigma_x0 = -sigma_x0\n",
+ "l = 37.5 # length 0f billet in mm\n",
+ "tau1 = sigma_0/2 # Mpa\n",
+ "Pe = sigma_x0 + (4*tau1*l)/d0 # extrusion pressure in Mpa\n",
+ "el = Pe*pi*(r0)**2 # extrusion load in MN\n",
+ "print \"Extrusion load = %d MN\"%(el/10000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Extrusion load = 34 MN\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.11 : page 524"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import cos\n",
+ "h0 = 4.05 # thickness of plate in mm \n",
+ "h1 = 3.55 # mm\n",
+ "D = 500 # rolled diameter in mm\n",
+ "r = D/2 # rolled radius in mm\n",
+ "mu = 0.04 # coefficient of friction\n",
+ "sigma = 210 # N/mm**2\n",
+ "delta_h = h0-h1 # mm\n",
+ "p = 2*sigma/sqrt(3) # N/mm**2\n",
+ "alpha = acos(1-(delta_h/D)) # angle of contact\n",
+ "Ho = 2*sqrt(r/h1)*atan(sqrt(r/h1)*alpha)\n",
+ "Hn1 = (Ho - (log(h0/h1))/mu)/2\n",
+ "theta = sqrt(h1/r)*tan(sqrt(h1/r)*(Hn1/2)) # radians\n",
+ "hn = h1 + 2*r*(1-cos(theta)) # mm\n",
+ "pn1 = p*hn*exp(mu*Hn1)/h1 # roll pressure in N/mm**2\n",
+ "# b) roll pressure when coefficient of friction is 0.4\n",
+ "mu2 = 0.4 # coefficient of friction\n",
+ "Hn2 = (Ho - (log(h0/h1))/mu2)/2\n",
+ "theta = sqrt(h1/r)*tan(sqrt(h1/r)*(Hn2/2)) # radians\n",
+ "hn2 = h1 + r*theta**2 # mm\n",
+ "pn2 = (p*hn2*exp(mu2*Hn2))/h1 # roll pressure in N/mm**2\n",
+ "# c) if tension is applied of 35 N/mm**2\n",
+ "sigma_f = 35 # front tension in N/mm**2\n",
+ "pn3 = (p-sigma_f)*hn*exp(mu*Hn1)/h1 # roll ressure in N/mm**2\n",
+ "print \"(a) Roll pressure at enter and exit = %0.1f N/mm**2\\n Roll pressure at neutral plane = %0.2f N/mm**2\"%(p , pn1)\n",
+ "print \"(b) Roll pressure at neutral point when co-efficient of friction is 0.40 = %0.2f N/mm**2\"%(pn2)\n",
+ "print \"(c) Roll pressure when 35 N/mm**2 tension is applied at neutral point = %0.2f N/mm**2\"%(pn3)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a) Roll pressure at enter and exit = 242.5 N/mm**2\n",
+ " Roll pressure at neutral plane = 257.81 N/mm**2\n",
+ "(b) Roll pressure at neutral point when co-efficient of friction is 0.40 = 779.97 N/mm**2\n",
+ "(c) Roll pressure when 35 N/mm**2 tension is applied at neutral point = 220.60 N/mm**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 13.12 : page 526"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import acos, atan\n",
+ "h1 = 6.35 # thickness in mm\n",
+ "mu = 0.2 # coefficient of friction\n",
+ "r = 50 # rolled radius in cm\n",
+ "r = r*10 # mm\n",
+ "R = 30 # reduction in percent\n",
+ "h0 = h1*100/(100-R) # mm \n",
+ "delta_h = h0-h1 # mm\n",
+ "alpha = acos(1-(delta_h/(2*r))) # angle of contact\n",
+ "Ho = 2*sqrt(r/h1)*atan(sqrt(r/h1)*alpha)\n",
+ "Hn = (Ho - (log(h0/h1))/mu)/2 \n",
+ "theta = sqrt(h1/r)*tan(sqrt(h1/r)*(Hn/2)) # neutral plane in radians\n",
+ "theta = theta*180/pi # neutral plane in degrees\n",
+ "print \"Neutral plane = %0.2f degree\"%(theta)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Neutral plane = 1.58 degree\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter14.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter14.ipynb
new file mode 100644
index 00000000..44e9db0e
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter14.ipynb
@@ -0,0 +1,827 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:8396cc313a5f7ac528d04440985334b94cac20ea3e5313976a84c2a105bcc18d"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14 : Theory of Metal Cutting"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.1 : page 563"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "v1 = 18 # cutting speed in m/min\n",
+ "t1 = 3 # tool life in hours\n",
+ "n = 0.125 # exponent\n",
+ "c = v1*(t1*60)**n # constant\n",
+ "v2 = 24 # cutting speed in m/min\n",
+ "t = (c/v2)**(1/0.125) # tool life in min.\n",
+ "print \"Tool life = %d min.\"%(t)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Tool life = 18 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.2 : page 564"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "c_t = 8 # tool change time in min.\n",
+ "r_t = 5 # tool re-grind time in min.\n",
+ "mr_c = 5 # machine running cost per hour\n",
+ "d = 30 # total depreciation per re-grind in paisa\n",
+ "n = 0.25 # exponent\n",
+ "c = 150 # constant\n",
+ "c_c = mr_c*c_t/60 # total change cost in Rs\n",
+ "r_c = mr_c*r_t/60 # regrind cost in Rs\n",
+ "ct = c_c+r_c+d/100 # tooling cost in Rs\n",
+ "cm = mr_c/60 # machining cost in Rs\n",
+ "v = c*((cm*n)/(ct*(1-n)))**n # cutting speed in m/min.\n",
+ "print \"Cutting speed = %0.1f m/min.\"%(v) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Cutting speed = 56.5 m/min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.3 : page 564"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import pi, tan, atan, cos, sin\n",
+ "mu1 = 0.15 # coefficient of friction \n",
+ "mu2 = 0.18 # coefficient of fricton\n",
+ "alpha = 14 # angle of contact in degree\n",
+ "alpha = alpha*pi/180\n",
+ "bita = 10 # semi-cone angle in degree\n",
+ "bita = bita*pi/180\n",
+ "sigma_0 = 1.40 # kN/mm**2\n",
+ "h0 = 1.5 #mm\n",
+ "h1 = 1 # mm\n",
+ "B = (mu1+mu2)/(tan(alpha)+tan(bita))\n",
+ "sigmad = (sigma_0*(1+B)*(1-(h1/h0)**B))/B # drawing stress in kN/mm**2\n",
+ "d1 = 11 # outside diameter in mm\n",
+ "t = 1 # thickness in mm\n",
+ "d2 = d1-t # mm\n",
+ "a = (pi*((d1)**2-(d2)**2))/4 # area in mm**2\n",
+ "l = sigmad*a # load in kN\n",
+ "s = 0.65 # drawing speed in m/s\n",
+ "w = l*s # work in kJ/s\n",
+ "p = w # power in kW\n",
+ "print \"Drawing load = %0.3f kN\\nPower rating of motor = %0.2f kW\"%(l , p)\n",
+ "t = 0.127 # uncut chip thickness in mm\n",
+ "b = 6.35 # width of cut in mm\n",
+ "v = 2 # cutting speed in m/s\n",
+ "alpha = 10 # rake angle in degrees\n",
+ "fc = 567 # cutting force in N\n",
+ "ft = 227 # thrust force in N\n",
+ "tc = 0.228 # chip thickness in mm\n",
+ "r = t/tc # chip thickness ratio\n",
+ "alpha = alpha*pi/180 # rake angle in radians\n",
+ "phi = atan(r*cos(alpha)/(1-(r*sin(alpha)))) # shear angle \n",
+ "phi1 = phi*180/pi # shear angle\n",
+ "print \"Shear angle = %0.2f degree\"%(phi1) \n",
+ "mu =((fc*sin(alpha)+ft*cos(alpha))/(fc*cos(alpha)-ft*sin(alpha))) #coefficient of friction\n",
+ "bita = atan(mu) # friction angle\n",
+ "bita = bita*180/(pi)\n",
+ "print \"Friction angle = %0.2f degree\"%(bita )\n",
+ "fs = fc*cos(phi)-ft*sin(phi) #shear force in N\n",
+ "taus = (fs*sin(phi))/(b*t) # shear stress\n",
+ "print \"Shear stress = %0.1f N/mm**2\"%(taus)\n",
+ "cp = fc*v/1000 # cutting power in kw\n",
+ "print \"Cutting power = %0.3f kw \"%(cp)\n",
+ "vc = v*r # chip velocity in m/s\n",
+ "print \"Chip velocity = %0.3f m/s\"%(vc)\n",
+ "ss = 1/tan(phi) + tan(phi-alpha) # shear strain\n",
+ "print \"shear strain = %0.3f\"%(ss)\n",
+ "spl = t/sin(phi) # shear plane length\n",
+ "vs = v*cos(alpha)/cos(phi-alpha) # shear velocity\n",
+ "S = vs*10/spl # shear strain rate\n",
+ "S = S*10**3 # shear strain rate\n",
+ "print \"Shear strain rate = %.3f s**-1\"%(S)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Drawing load = 14.262 kN\n",
+ "Power rating of motor = 9.27 kW\n",
+ "Shear angle = 31.27 degree\n",
+ "Friction angle = 31.82 degree\n",
+ "Shear stress = 236.1 N/mm**2\n",
+ "Cutting power = 1.134 kw \n",
+ "Chip velocity = 1.114 m/s\n",
+ "shear strain = 2.036\n",
+ "Shear strain rate = 86386.645 s**-1\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.4 : page 566"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "v = 30 # cutting speed in m/min\n",
+ "feed = 0.3 # feed rate in mm/rev.\n",
+ "d = 2.5 # depth of cut in mm\n",
+ "t = 60 # tool life in min.\n",
+ "c = v*t**0.13*feed**0.77*d**0.37 # constant\n",
+ "print \"constant = %0.2f \"%(c)\n",
+ "v2 = v*1.2 # cutting speed in m/min \n",
+ "t2 = (c/(v2*feed**0.77*d**0.37)) # tool life when cutting speed increased by 20% in min.\n",
+ "t2 = t2**(1/0.13)\n",
+ "f2 = feed*1.2 # feed rate in mm/rev.\n",
+ "t3 = (c/(v*d**0.37*f2**0.77)) # tool life when feed rate increased by 20% in min.\n",
+ "t3 = t3**(1/0.13)\n",
+ "d2 = d*1.2 # depth of cut in mm\n",
+ "t4 = (c/(v*feed**0.77*d2**0.37)) # tool life when depth of cut increased by 20% in min.\n",
+ "t4 = t4**(1/0.13)\n",
+ "t5 = (c/(v2*d2**0.37*f2**0.77)) # tool lfe in min.\n",
+ "t5 = t5**(1/0.13)\n",
+ "print \"Tool life when cutting speed increased by 20 = %0.2f min.\"%(t2)\n",
+ "print \"Tool life when feed rate increased by 20 = %0.2f min.\"%(t3)\n",
+ "print \"Tool life when depth of cut increased by 20 = %0.2f min.\"%(t4)\n",
+ "print \"Tool life when all taken together after increasing by 20 = %0.2f min.\"%(t5)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "constant = 28.37 \n",
+ "Tool life when cutting speed increased by 20 = 14.76 min.\n",
+ "Tool life when feed rate increased by 20 = 20.38 min.\n",
+ "Tool life when depth of cut increased by 20 = 35.71 min.\n",
+ "Tool life when all taken together after increasing by 20 = 2.98 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.5 : page 567"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "t = 0.25 # uncut chip thickness in mm\n",
+ "b = 2.5 # width of cut in mm\n",
+ "v = 2.5 # cutting speed in m/s\n",
+ "alpha = 10 # rake angle in degrees\n",
+ "fc = 1130 # cutting force in N\n",
+ "ft = 295 # thrust force in N\n",
+ "tc = 0.45 # chip thickness in mm\n",
+ "r = t/tc # chip thickness ratio\n",
+ "alpha = alpha*pi/180 # rake angle in radians\n",
+ "phi = atan((r*cos(alpha))/(1-r*sin(alpha))) # shear angle \n",
+ "phi2 = phi*180/pi # shear angle\n",
+ "fs = fc*cos(phi) - ft*sin(phi) #shear force in N\n",
+ "print \"Force of shear at shear plane = %0.2f N\"%(fs)\n",
+ "mu = atan((fc*sin(alpha)+ft*cos(alpha))/(fc*cos(alpha)-ft*sin(alpha))) #friction anglele\n",
+ "print \"Friction angle = %0.3f degree\"%(mu )\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Force of shear at shear plane = 813.80 N\n",
+ "Friction angle = 0.430 degree\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.6 : page 568"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "t = 0.2 # uncut chip thickness in mm\n",
+ "alpha = 15 # rake angle in degrees\n",
+ "tc = 0.62 # chip thickness in mm\n",
+ "r = t/tc # chip thickness ratio\n",
+ "crc = 1/r # chip reduction coefficient\n",
+ "print \"Cutting ratio = %0.3f\\nChip reduction co-efficient = %0.1f\"%(r , crc)\n",
+ "alpha = alpha*pi/180 # rake angle in radians\n",
+ "phi = atan(r*cos(alpha)/(1-r*sin(alpha))) # shear angle \n",
+ "phi = phi*180/pi # shear angle\n",
+ "print \"Shear angle = %0.2f degree\"%(phi) \n",
+ "ss = 1/tan(phi*pi/180) + tan((phi*pi)/180-(alpha*pi)/180) # shear strain\n",
+ "print \"shear strain = %0.3f\"%(ss)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Cutting ratio = 0.323\n",
+ "Chip reduction co-efficient = 3.1\n",
+ "Shear angle = 18.78 degree\n",
+ "shear strain = 3.276\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.7 : page 568"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import log\n",
+ "v1 = 25 # cutting speed in m/min\n",
+ "t1 = 90 # tool life in min.\n",
+ "v2 = 35 # cutting speed in m/min\n",
+ "t2 = 20 # tool life in min\n",
+ "n = log(v2/v1)/log(t1/t2) # exponent\n",
+ "C = v1*(t1)**n # constant\n",
+ "t = 60 # tool life in min.\n",
+ "v = C/(t)**n # cutting speed in m/min.\n",
+ "print \" n = %0.3f\\n C = %0.1f\\n Cutting speed = %0.2f m/min.\"%(n , C,v)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " n = 0.224\n",
+ " C = 68.4\n",
+ " Cutting speed = 27.37 m/min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.8 : page 569"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import ceil\n",
+ "t = 0.5 # uncut chip thickness in mm\n",
+ "b = 3 # width of cut in mm\n",
+ "alpha = 15 # rake angle in degrees\n",
+ "alpha = alpha*pi/180 # rake angle in radians\n",
+ "r = 0.383 # chip thickness ratio\n",
+ "mu = 0.7 # average coefficient of friction on tool face\n",
+ "bita = atan(mu) # friction angle\n",
+ "tau = 280 # yield stress in N/mm**2\n",
+ "phi = atan((r*cos(alpha))/(1-r*sin(alpha))) # shear angle \n",
+ "fc = (tau*b*t)/(1/cos(bita-alpha)*cos(phi+bita-alpha)*sin(phi)) # cutting force in N\n",
+ "ft = (fc*(mu-tan(alpha)))/(1+mu*tan(alpha)) # thrust force in N\n",
+ "F = fc*sin(alpha)+ft*cos(alpha) # tangential force on tool face in N\n",
+ "F = ceil(F)\n",
+ "N = fc*cos(alpha)-ft*sin(alpha) # normal force on tool face in N\n",
+ "print \" Tangential force on tool face = %d N\\n normal force on tool face = %0.1f N\"%(F,N)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Tangential force on tool face = 858 N\n",
+ " normal force on tool face = 1225.0 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.9 : page 570"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sqrt\n",
+ "t = 0.25 # uncut chip thickness in mm\n",
+ "b = 0.5 # width of cut in cm\n",
+ "v = 8.2 # cutting speed in m/min.\n",
+ "alpha = 20 # rake angle in degrees\n",
+ "alpha2 = alpha*pi/180 # rake angle in radians\n",
+ "r = 0.351 # cutting ratio\n",
+ "phi = atan(r*cos(alpha2)/(1-r*sin(alpha2))) # shear angle in radians\n",
+ "phi2 = phi*180/pi # shear angle in degrees\n",
+ "alpha2 = alpha*pi/180 # rake angle in radians\n",
+ "bita = 35+alpha-phi2 # degrees\n",
+ "s = 1/tan(phi) + tan(phi-alpha2) # shear strain\n",
+ "e = s/sqrt(3) # natural strain\n",
+ "sigma = 784*(e)**0.15 # tensile property in N/mm**2\n",
+ "tau = sigma/sqrt(3) # yield shear stress in N/mm**2\n",
+ "As = (b*10*t)/sin(phi) # shear plane area in mm**2\n",
+ "Fs = tau*As # shear gorce in N\n",
+ "R = Fs/cos(phi+(bita*pi/180)-alpha2)\n",
+ "Fc = R*cos((bita*pi/180)-alpha2) # cutting force in N\n",
+ "Ft = R*sin((bita*pi/180)-alpha2) # thrust force in N\n",
+ "print \" Cutting force= %0.1f N\\n Thrust force = %0.1f N\"%(Fc , Ft)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Cutting force= 2034.3 N\n",
+ " Thrust force = 524.3 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.10 : page 571"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import pi, atan, cos, sin, tan\n",
+ "f = 0.2 # feed in mm/rev.\n",
+ "t = 0.2 # uncut chip thickness in mm\n",
+ "alpha = 10 # rake angle in degrees\n",
+ "fc = 1600 # cutting force in N\n",
+ "ft = 850 # thrust force in N\n",
+ "tc = 0.39 # chip thickness in mm\n",
+ "r = t/tc # chip thickness ratio\n",
+ "d = 2 # depth of cut in mm\n",
+ "b = 2 # mm\n",
+ "alpha2 = alpha*pi/180 # rake angle in radians\n",
+ "phi = atan(r*cos(alpha2)/(1-r*sin(alpha2))) # shear angle in radians\n",
+ "phi2 = phi*180/pi # shear angle in degree\n",
+ "fs = fc*cos(phi)-ft*sin(phi) #shear force in N\n",
+ "fn = fc*sin(phi)+ft*cos(phi) # normal force in N\n",
+ "f = fc*sin(alpha2)+ft*cos(alpha2) # friction force in N\n",
+ "mu =((fc*tan(alpha2)+ft)/(fc-ft*tan(alpha2))) #kinetic coefficient of friction\n",
+ "s = fc/(b*t) # specific cutting energy in N/mm**2\n",
+ "print \" Shear force = %d N\\n Normal force = %0.1f N\\n Friction force = %0.1f N\\n Kinetic coefficient of friction = %0.3f\"%(fs , fn ,f , mu)\n",
+ "print \" Specific cutting energy = %d N/mm**2\"%(s)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Shear force = 987 N\n",
+ " Normal force = 1519.2 N\n",
+ " Friction force = 1114.9 N\n",
+ " Kinetic coefficient of friction = 0.781\n",
+ " Specific cutting energy = 4000 N/mm**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.11 : page 572"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sqrt\n",
+ "cs = 20 # side cutting edge angle in degree\n",
+ "ce = 30 # end cutting edge angle in degree\n",
+ "f = 0.1 # feed in mm/rev.\n",
+ "r = 3 # nose radius in mm\n",
+ "cs2 = cs*pi/180 # side cutting edge angle in radians\n",
+ "ce2 = ce*pi/180 # end cutting edge angle in radians\n",
+ "h = (1-cos(ce2))*r + f*sin(ce2)*cos(ce2) - sqrt((2*f*r*(sin(ce2))**3)-((f**2)*(sin(ce2))**4))\n",
+ "Ra = h/4 # Centre line average roughness in mm\n",
+ "print \"Centre line average roughness = %0.2f*10**-6m\"%(Ra*10**3)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Centre line average roughness = 43.13*10**-6m\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.12 : page 572"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "i = 0 # inclination angle in degree\n",
+ "alpha = 10 # orthogonal rake angle in degree\n",
+ "lemda = 75 # principal cutting edge angle in degree\n",
+ "alpha = alpha*pi/180 # orthogonal rake angle in radian\n",
+ "lemda = lemda*pi/180 # principal cutting edge angle in radian\n",
+ "alpha_b = atan(cos(lemda)*tan(alpha)+sin(lemda)*tan(i)) #back rake angle in radians\n",
+ "alpha_b = alpha_b*180/pi # back rake angle in degree\n",
+ "alpha_s = atan(sin(lemda)*tan(alpha)-cos(lemda)*tan(i)) # side rake angle in radians\n",
+ "alpha_s = alpha_s*180/pi # side rake angle in degree\n",
+ "print \" Back rake angle = %0.2f degree\\n Side rake angle = %0.2f degree\"%(alpha_b,alpha_s)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Back rake angle = 2.61 degree\n",
+ " Side rake angle = 9.67 degree\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.13 : page 572"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "alphab = 8 # back rake in degree\n",
+ "alphas = 4 # side rake in degree\n",
+ "cs = 15 # side cutting edge angle in degree\n",
+ "lemda = 90 - cs # approach angle in degree\n",
+ "alphab = alphab*pi/180 # back rake in radian\n",
+ "alphas = alphas*pi/180 # side rake in radian\n",
+ "cs = cs*pi/180 # side cutting edge angle in radian\n",
+ "lemda = lemda*pi/180 # approach angle in radian\n",
+ "alpha = atan(tan(alphas)*sin(lemda)+tan(alphab)*cos(lemda)) # orthogonal rake angle in radian\n",
+ "alpha = alpha*180/pi # orthogonal rake angle in degree\n",
+ "i = atan(sin(lemda)*tan(alphab)-cos(lemda)*tan(alphas)) # inclnation angle in radian\n",
+ "i = i*180/pi # inclnation angle in degree\n",
+ "print \" Othogonal rake angle = %0.2f degree\\n Inclination angle = %0.1f degree\"%(alpha , i)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Othogonal rake angle = 5.93 degree\n",
+ " Inclination angle = 6.7 degree\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.14 : page 573"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "cs = 15 # side cutting edge angle in degree\n",
+ "v = 0.2 # cutting speed in m/s\n",
+ "f = 0.5 # feed rate in mm/rev.\n",
+ "d = 3.2 # depth of cut in mm\n",
+ "fc = 1593*(f)**0.85*(d)**0.98 # cutting force in N\n",
+ "pc = fc*v/1000 # cutting power in kw\n",
+ "ita_mt = 0.85 # efficiency of lathe\n",
+ "pm = pc/ita_mt # motor power in kw\n",
+ "a = f*d # area of uncut chio in mm**2\n",
+ "r = fc/a # specific cutting resistance in N/mm**2\n",
+ "p = pc/(a*v)# unit power in W/(mm**3)*s\n",
+ "print \" Cutting power = %0.3f kw\\n Motor power = %0.2f kw\\n Specific cutting resistance = %0.2f N/mm**2\\n Unit power = %0.3f W/(mm**3)*s\"%(pc,pm,r,p)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Cutting power = 0.553 kw\n",
+ " Motor power = 0.65 kw\n",
+ " Specific cutting resistance = 1726.90 N/mm**2\n",
+ " Unit power = 1.727 W/(mm**3)*s\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.15 : page 574"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "C = 400\n",
+ "n=0.5\n",
+ "a=2 # (T1/T2)**n\n",
+ "b=2**(1/n) # T2\n",
+ "i = (b-1)*100 # percentage increase\n",
+ "print \"Percentage increase = %d percent\"%(i)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Percentage increase = 300 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.16 : page 574"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import acos\n",
+ "t = 0.127 # uncut chip thickness in mm\n",
+ "b = 6.35 # width of cut in mm\n",
+ "v = 1.20 # cutting speed in m/min.\n",
+ "alpha = 10 # rake angle in degrees\n",
+ "fc = 556.25 # cutting force in N\n",
+ "ft = 222.50 # thrust force in N\n",
+ "tc = 0.229 # chip thickness in mm\n",
+ "r = t/tc # chip thickness ratio\n",
+ "R = sqrt((fc**2)+(ft**2))\n",
+ "bita = (acos(fc/R)) + alpha*pi/180 #\n",
+ "f = R*sin(bita) # \n",
+ "fe = f*r # friction energy\n",
+ "p = (f*r*100)/fc # percentage of fricton enrgy and total energy \n",
+ "print \"The percentage of total energy that goes into overcoming friction at tool chip interface = %0.2f percent\"%(p)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The percentage of total energy that goes into overcoming friction at tool chip interface = 31.48 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.17 : page 575"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "D = 300 # diameter in mm\n",
+ "r = 45 # rev/min.\n",
+ "d = 2 # depth of cut in mm\n",
+ "f = 0.3 # feed in mm/rev\n",
+ "fc = 1850 # cutting force in N\n",
+ "ff = 450 # feed force in N\n",
+ "V = 2.5*10**6 # metal removed in mm\n",
+ "v = (pi*D*r)/(60*1000) # cutting velocity in m/s\n",
+ "pc = fc*v/1000 # cutting power in kW\n",
+ "fv = f*r/60*1000 # feed velocity in m/s\n",
+ "fp = fv*ff # feed power in W\n",
+ "mrr = d*f*v*60*1000 # mm**3/min.\n",
+ "ce = pc*1000*60/mrr # specific cutting energy in W*s/mm**2\n",
+ "E = ce*V/(3600*1000) # energy consumed\n",
+ "print \" Power consumption = %0.2f W\\n Specific cutting energy = %0.2f W*s/mm**3\\n Energy consumed = %0.3f kWh\"%(pc,ce,E)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Power consumption = 1.31 W\n",
+ " Specific cutting energy = 3.08 W*s/mm**3\n",
+ " Energy consumed = 2.141 kWh\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 14.18 : page 576"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import atan, degrees\n",
+ "D = 100 # diameter in mm\n",
+ "cs = 30 # side cutting edge angle in degree\n",
+ "lemda = 90 - cs # approach angle in degree\n",
+ "d = 2.5 # depth of cut in mm\n",
+ "f = 0.125 # feed in mm/rev.\n",
+ "N = 300 # turning speed of job in rev./min.\n",
+ "mu = 0.6 # coefficient of friction\n",
+ "tau = 400 # ultimate shear stress in Mpa\n",
+ "bita = degrees(atan(mu)) # friction angle in radian\n",
+ "alphas = 10 # side rake angle\n",
+ "alphab = 6 # back rake angle\n",
+ "alpha = degrees(atan(tan(alphas))*sin(lemda*pi/180)+tan(alphab*pi/180)*cos(lemda*pi/180)) # orthogonal rake angle in degree\n",
+ "phi = 45 - ( bita - alpha) # shear angle\n",
+ "Fc = tau*d*f/(1/cos((bita-alpha)*pi/180)*cos((phi+bita-alpha)*pi/180)*sin(phi*pi/180)) # cutting force in N\n",
+ "Ft = Fc*tan((bita-alpha)*pi/180) # thrust component in N\n",
+ "Ff = Ft*sin(lemda*pi/180) # feed force along axis of job in N\n",
+ "Rf = Ft*cos(lemda*pi/180) # radial force normal to axis of job in N\n",
+ "v = pi*D*N/(1000*60) # velocity in m/s\n",
+ "p = Fc*v # power in watts\n",
+ "print \" Cutting force = %d N\\n Thrust force = %0.3f N\\n Feed force = %0.1f N\\n Radial force = %0.3f N\\n Cutting power = %d watts\"%(Fc,Ft,Ff,Rf,p)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Cutting force = 247 N\n",
+ " Thrust force = -2.546 N\n",
+ " Feed force = -2.2 N\n",
+ " Radial force = -1.273 N\n",
+ " Cutting power = 388 watts\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter15.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter15.ipynb
new file mode 100644
index 00000000..671351b1
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter15.ipynb
@@ -0,0 +1,403 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:5fe0c68fefb75785fd894e58c37514a459393889af7095bba75150f60adaa3d7"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 15 : Design & Manufacture of Cutting Tools"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.1 : page 597"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "w = 10 # width of cut in cm\n",
+ "h = 0.32 # depth of cut in cm\n",
+ "n = 8 # number of teeth in cutter\n",
+ "ft = 0.033 # feed rate per tooth\n",
+ "N = 200 # cutter speed in rpm\n",
+ "ita = 60/100 # efficiency\n",
+ "f = n*ft*N # feed rate in cm/min.\n",
+ "mrr = w*h*f # metal removal rate in cm**3/min.\n",
+ "k = 8.2 # machinibility factor from table 15.3\n",
+ "hpc = mrr/k # horsepower at cutter\n",
+ "hpm = hpc/ita # horsepower at motor\n",
+ "print \" Horsepower at cutter = %0.2f\\n Horsepower at motor = %0.2f\"%(hpc , hpm)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Horsepower at cutter = 20.60\n",
+ " Horsepower at motor = 34.34\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.2 : page 603"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import pi, sqrt\n",
+ "l = 300 # length in mm\n",
+ "w = 100 # width in mm\n",
+ "f = 0.25 # feed in mm/tooth\n",
+ "d = 3.2 # depth of cut in mm\n",
+ "D = 50 # cutter diameter in mm\n",
+ "n = 20 # number of cutter teeth\n",
+ "N = 100 # cutter speed in rev./min.\n",
+ "tf = f*n*N # table feed in mm/min.\n",
+ "mrr = w*d*tf # metal removal rate in mm**3/min.\n",
+ "mrr = mrr/60 # mm**3/s\n",
+ "p = 6*mrr # cutting power from table 14.2 in watts\n",
+ "omega = 2*pi*N/60 # rpm\n",
+ "T = p/omega # torque in N.m\n",
+ "att = sqrt((D*d)-(d**2)) # added table travel in mm\n",
+ "t = (l+att)/tf # cutting time in min.\n",
+ "t = t*60 # s\n",
+ "print \" MRR = %0.2f mm**3/s\\n Cutting power = %d watts\\n Torque = %0.2f N.m\\n Cutting time = %0.1fs\"%(mrr,p,T,t)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " MRR = 2666.67 mm**3/s\n",
+ " Cutting power = 16000 watts\n",
+ " Torque = 1527.89 N.m\n",
+ " Cutting time = 37.5s\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.3 : page 610"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "l = 35 # length of bore in mm\n",
+ "v = 0.15 # cutting speed in m/s\n",
+ "t1 = 0.01 # upper limit in mm\n",
+ "t2 = 0.05 # upper limit in mm\n",
+ "D = 32.25 # finished broach in mm\n",
+ "D1 = 32.25+t2 # mm\n",
+ "d = 32.75 # finish diameter in mm\n",
+ "d1 = 32.75 + t1 #finish diameter of hole in mm\n",
+ "s = 0.05 # mm\n",
+ "B = 1.30 # blunt broach factor\n",
+ "c = 45 # specific cutting force in N/mm**2\n",
+ "n = 3 # number of teeth cutting at a time\n",
+ "F = n*pi*d1*s*c*B # force needed for broaching in N\n",
+ "bp = F*v/1000 # Broaching power in kw\n",
+ "# broach design\n",
+ "p = 1.75*sqrt(l) # pitch in mm\n",
+ "theta = 10 # face angle in degree\n",
+ "alha1 = 1.5 # relief angle for roughing in degree\n",
+ "alha2 = 1.0 # relief angle for finishing in degree\n",
+ "w = 0.3*p # width of land in mm\n",
+ "h = 0.4*p # depth of cutting teeth in mm\n",
+ "r = 0.3*p # tooth fillet radius in mm\n",
+ "T = (d1-D1)/2 # mm\n",
+ "n = T/s # number of cutting teeth\n",
+ "n = round(n)\n",
+ "l = (n+7)*p #length of toothed portion of broach in mm\n",
+ "print \"(i)Broaching power = %0.4f kW\"%bp\n",
+ "print \"(ii) Broach Design\"\n",
+ "print \"(a) Pitch diameter = %0.2fmm\\n (b) width of land = %0.2f mm \\n depth of cutting teeth = %0.2f mm\\n Tooth fillet radius= %0.2f mm\"%(p,w,h,r)\n",
+ "print \"(c) Length of toothed portion of broach = %d mm\"%(l)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(i)Broaching power = 0.1355 kW\n",
+ "(ii) Broach Design\n",
+ "(a) Pitch diameter = 10.35mm\n",
+ " (b) width of land = 3.11 mm \n",
+ " depth of cutting teeth = 4.14 mm\n",
+ " Tooth fillet radius= 3.11 mm\n",
+ "(c) Length of toothed portion of broach = 124 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.4 : page 616"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Hb = 200 # brinell hardness\n",
+ "d = 12.7 # diameter in mm\n",
+ "f = 0.254 # feed in mm/rev.\n",
+ "N = 100 # rpm\n",
+ "M = (Hb*(d)**2*f)/8 #moment in kgf-mm\n",
+ "k = 1.1 #material factor\n",
+ "p = (1.25*(d)**2*k*N*(0.056+1.5*f))/(10)**5 # power in kW\n",
+ "T1a = (1.7*M)/d # thrust force kgf\n",
+ "T1b = (3.5*M)/d # kgf\n",
+ "T1 = (T1a+T1b)/2 # average\n",
+ "w = 0.14*d # thickness in mm\n",
+ "T2a = (0.1*pi*(w)**2*Hb)/4 # thrust force kgf\n",
+ "T2b = (0.2*pi*(w)**2*Hb)/4 # thrust force kgf\n",
+ "T2 = (T2a+T2b)/2 # average\n",
+ "avg = T1+T2 # kgf\n",
+ "thrust = 1.16*k*d*(100*f)**0.85 # kgf\n",
+ "print \" Moment = %0.1f kgf-mm\\n Power = %0.3f hp\\n Average force = %d kgf\\n Thrust force = %0.1f kgf\"%(M, p ,avg , thrust)\n",
+ "# Error in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Moment = 1024.2 kgf-mm\n",
+ " Power = 0.097 hp\n",
+ " Average force = 284 kgf\n",
+ " Thrust force = 253.4 kgf\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.5 : page 617"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import ceil\n",
+ "d = 55 # diameter in mm\n",
+ "ul = 0.035 # upper limit in mm\n",
+ "ll = 0.000 # lower limit in mm\n",
+ "Dmax = d+ul # maximum diameter of hole in mm\n",
+ "Dmin = d+ll # minimum diameter of hole in mm\n",
+ "IT = 0.035 # hole tolerence in mm\n",
+ "dmax = Dmax-0.15*IT # maximum diameter of reamer in mm\n",
+ "dmin = dmax-0.35*IT # minimum diameter of reamer in mm\n",
+ "l = ((d/4)+(d/3))/2 # length of guiding section in mm\n",
+ "Z = 1.5*sqrt(d)+2 # number of teeth\n",
+ "Z = ceil(Z)\n",
+ "print \"1 Diameter of reamer \\n Maximum diameter of reamer = %0.3f mm \\n Minimum diameter of reamer = %0.3f mm \\n 2 Back taper = 0.05 mm \\n 3 Values of various angles \\n Rake angle = 5 degree \\n Plan approach angle = 45 degree \\n Circular land = 0.25 to 0.50 mm \\n Secondary clearance angle = 10 degree \\n 4 Length of reamer \\n Length of fluted portion = 82.5 mm \\n Length of reaming allowance = 0.18 mm \\n Length of cutting section = 2.25 mm \\n Length of guiding section = %d mm \\n 5 Number of teeth = %d\"%(dmax,dmin,l,Z) \n",
+ "# Answer vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "1 Diameter of reamer \n",
+ " Maximum diameter of reamer = 55.030 mm \n",
+ " Minimum diameter of reamer = 55.017 mm \n",
+ " 2 Back taper = 0.05 mm \n",
+ " 3 Values of various angles \n",
+ " Rake angle = 5 degree \n",
+ " Plan approach angle = 45 degree \n",
+ " Circular land = 0.25 to 0.50 mm \n",
+ " Secondary clearance angle = 10 degree \n",
+ " 4 Length of reamer \n",
+ " Length of fluted portion = 82.5 mm \n",
+ " Length of reaming allowance = 0.18 mm \n",
+ " Length of cutting section = 2.25 mm \n",
+ " Length of guiding section = 16 mm \n",
+ " 5 Number of teeth = 14\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.8 : page 629"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Pm = 10 # power of motor in kw\n",
+ "v = 40 # cutting speed in m/min.\n",
+ "ita = 70 # efficiency\n",
+ "ita = ita/100\n",
+ "Pc = Pm*ita \n",
+ "Fc = (Pc*1000*60)/v # cutting force\n",
+ "sigmab = 250 # stress in Mpa\n",
+ "B = sqrt((Fc*1.25*6)/(sigmab*1.6)) # width of shank in mm\n",
+ "h = 1.6*B # hieght of shank in mm\n",
+ "l = 1.25*h # shank overang in mm\n",
+ "print \" The width of shank = %0.1f mm\\n Height of shank = %0.2f mm\\n Shank overhang = %0.1f mm\"%(B,h,l)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The width of shank = 14.0 mm\n",
+ " Height of shank = 22.45 mm\n",
+ " Shank overhang = 28.1 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.9 : page 630"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "l = 150 # length in mm\n",
+ "D = 12.70 # diameter in mm\n",
+ "dia = 12.19 # diameter on centre lathe in mm \n",
+ "N = 400 # spindle speed in rev./min\n",
+ "s = 203.20 # axial speed in mm/min.*####\n",
+ "v = (pi*D*N)/(1000*60) # cutting velocity in m/s\n",
+ "d = (D-dia)/2 # depth of cut in mm\n",
+ "f = s/N # feed in mm/rev.\n",
+ "Dave = (D+dia)/2 # average diameter in mm\n",
+ "V = pi*Dave*N\n",
+ "a = d*f # area of cut in mm**2\n",
+ "mrr = a*V # metal removal rate in mm**3/min.\n",
+ "T = l/(f*N) # machine timing in min.\n",
+ "c = 56 # constant from table \n",
+ "p = d*f*v*60*c # power in watts\n",
+ "omega = (2*pi*N)/60 # rpm\n",
+ "t = p/omega # torque in Nm\n",
+ "Fc = (2*t*1000)/Dave # cutting force in N\n",
+ "print \" Cutting speed = %0.2f m/s\\n MRR = %d mm**3/min.\\n Time to cut = %0.2f min.\\n Power = %0.1f watts\\n Cutting force = %d N\"%(v , mrr , T ,p ,Fc)\n",
+ "# Answers are given wrong in book"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Cutting speed = 0.27 m/s\n",
+ " MRR = 2025 mm**3/min.\n",
+ " Time to cut = 0.74 min.\n",
+ " Power = 115.8 watts\n",
+ " Cutting force = 444 N\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 15.10 : page 630"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "f = 0.2 # feed in mm/rev.\n",
+ "N = 800 # spindle speed in rev./min.\n",
+ "d = 10 # doameter of hole in mm\n",
+ "mrr = pi*(d**2)*f*N/4 # metal removal rate in mm**3/min.\n",
+ "mrr = mrr/60 # mm**3/s\n",
+ "p = 0.5*mrr # cutting power from table 14.2 in watts\n",
+ "omega = 2*pi*N/60 # rpm\n",
+ "T = p/omega # torque in N.m\n",
+ "print \" MRR = %0.2f mm**3/s\\n Cutting power = %0.3f watts\\n Torque = %0.2f N.m\"%(mrr,p,T\n",
+ " )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " MRR = 209.44 mm**3/s\n",
+ " Cutting power = 104.720 watts\n",
+ " Torque = 1.25 N.m\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter16.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter16.ipynb
new file mode 100644
index 00000000..595c1b91
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter16.ipynb
@@ -0,0 +1,57 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:5bc56c95b22d583a7568a500392ee20c7c472ceecf3eb82a9988fbcc6ba64b17"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 16 : Gear Manufacturing"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 16.1 : Page 648"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sin, pi, cos\n",
+ "n = 34 # number of teeths\n",
+ "m = 5 # module in mm\n",
+ "w = m*n*sin (pi/(n*2)) #tooth thickness in mm\n",
+ "h = m*(1+(n*(1 - cos(pi/(n*2)))/2)) # chordal addendum in mm\n",
+ "print \" Tooth thickness = %0.3f mm\\n Chordal addendum = %0.3f mm\"%(w ,h)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Tooth thickness = 7.851 mm\n",
+ " Chordal addendum = 5.091 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter17.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter17.ipynb
new file mode 100644
index 00000000..d71f918b
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter17.ipynb
@@ -0,0 +1,86 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:b347fea808576317f67f0205b2752c88edd172e2df6e58c7a21795b0d2990635"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 17 : Thread Manufacturing"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 17.1 : Page 670"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "d = 80 # outside diameter in mm\n",
+ "p = 6 # pitch diameter in mm\n",
+ "d = 0.5774*p # best wire size in mm\n",
+ "print \"Best wire size = %0.3f mm\"%d"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Best wire size = 3.464 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 17.2 : Page 670"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "D = 20 # diameter in mm\n",
+ "p = 2.5 # pitch diameter in mm\n",
+ "d = 0.5774*p # mm\n",
+ "W = D+3*d-1.5156*p# best wire size in mm\n",
+ "print \" Best wire size = %0.3f mm\\n Distance over wires = %0.3f mm\"%(d, W)\n",
+ "# Answer vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Best wire size = 1.444 mm\n",
+ " Distance over wires = 20.541 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter2.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter2.ipynb
new file mode 100644
index 00000000..64a0c9b8
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter2.ipynb
@@ -0,0 +1,745 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:90c0df1e9a80bde2cd11144eafc3d656fa8d55de7054ede0bb23a0e05283f6d7"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2 - Press Tool Design"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.1 : page 132"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "from math import pi, sqrt\n",
+ "D = 50 # Diameter of washer in mm\n",
+ "t = 4 # thickness of material in mm\n",
+ "d = 24 # diameter of hole in mm\n",
+ "p = 360 # shear strength of material in N/mm**2\n",
+ "F1 = pi*D*t*p # blanking pressure in N\n",
+ "F2 = pi*d*t*p # piercing pressure in N\n",
+ "F = F1 + F2 # total pressure in N\n",
+ "d1 = d + 0.4 # piercing die diameter in mm\n",
+ "d2 = D - 0.4 # blank punch diameter in mm\n",
+ "c = 0.8*F # press capacity in N\n",
+ "print \" Blanking pressure = %d kN\\n Piercing pressure = %0.3f KN\\n Total pressure required = %0.1f KN\"%(F1/1000,F2/1000,F/1000)\n",
+ "print \" piercing punch diameter = %0.2f cm\\n blanking punch diametre = %0.2f cm \\n press capacity = %0.2f KN\\n\"%(d1/10 , d2/10 , c/1000)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Blanking pressure = 226 kN\n",
+ " Piercing pressure = 108.573 KN\n",
+ " Total pressure required = 334.8 KN\n",
+ " piercing punch diameter = 2.44 cm\n",
+ " blanking punch diametre = 4.96 cm \n",
+ " press capacity = 267.81 KN\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.2 : page 133"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "h = 10 # height of cup in cm\n",
+ "d = 5 # diameter of cup in cm\n",
+ "D = sqrt(d**2 + 4*d*h) # blank diameter in cm\n",
+ "# height daimeter ratio is 2 . Therefore from table 2.9 total reductions are 3\n",
+ "r1 = 0.45*D # first reduction is 45% \n",
+ "d1 = D - r1 # diameter at first draw in cm\n",
+ "r2 = d1*0.25 # second reduction is 25% \n",
+ "d2 = d1 - r2 # diameter at second draw in cm\n",
+ "r3 = d2*0.2 # third reduction is 20% \n",
+ "d3 = d2 - r3 # diameter at third draw in cm\n",
+ "print \" Diameter at first draw = %0.2f cm\\n Diameter at second draw = %0.2f cm\\n Diameter at third draw =%0.3f cm\"%( d1 , d2 , d3)\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Diameter at first draw = 8.25 cm\n",
+ " Diameter at second draw = 6.19 cm\n",
+ " Diameter at third draw =4.950 cm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.3 : page 133"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "K = 1.20 # die-opening factor\n",
+ "L = 37.5 # Length of strip in cm\n",
+ "T = 2.5 # thickness of strip in mm\n",
+ "sigma_ut = 630 # tensile strength in N/mm**2\n",
+ "W = 16*T # width of die opening in mm\n",
+ "F = (K*L*10*sigma_ut*T**2)/W # bending force in N\n",
+ "print \"bending force = %0.1f KN\"%( F/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "bending force = 44.3 KN\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.4 : page 134"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "b = 25 # width of blank in mm\n",
+ "l = 30 # length of blank in mm\n",
+ "tau = 450 # ultimate shear stress of material in N/mm**2\n",
+ "t = 1.5 # thickness of metal strip in mm\n",
+ "p = 2*(l + b) # perimeter of blank in mm\n",
+ "f = p*t*tau # blanking force in N\n",
+ "Pt = 0.25*t # punch travel in mm\n",
+ "w = f*Pt # work done in Nmm\n",
+ "print \" blanking force = %0.2f KN\\n work done = %0.2f Nm\"%(f/1000,w/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " blanking force = 74.25 KN\n",
+ " work done = 27.84 Nm\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.5 : page 134"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "t = 1.5 # thickness in mm\n",
+ "c = 0.05*t # clearance in mm\n",
+ "D = 25.4 # outside diameter in mm \n",
+ "D_o = D - 0.05 # blank die opening in mm\n",
+ "B_s = D_o - 2*c # blanking punch size in mm\n",
+ "d = 12.7 # internal diameter in mm \n",
+ "P_s = d + 0.05 # piercing punch size in mm\n",
+ "D_s = P_s + 2*c # piercing die size in mm\n",
+ "print \" clearance = %0.3f mm\\n blank die opening size = %0.2f mm \"%(c ,D_o)\n",
+ "print \" blanking punch size = %0.2f mm\\n piercing punch size = %0.2f mm\\n piercing die size = %0.2f mm\"%(B_s,P_s,D_s )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " clearance = 0.075 mm\n",
+ " blank die opening size = 25.35 mm \n",
+ " blanking punch size = 25.20 mm\n",
+ " piercing punch size = 12.75 mm\n",
+ " piercing die size = 12.90 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.6 : page 135"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "D = 25.4 # outside diameter in mm \n",
+ "d = 12.7 # internal diameter in mm\n",
+ "t = 1.5 # thickness in mm\n",
+ "tau = 280 # ultimate shearing strength in N/mm**2\n",
+ "F = pi*(D + d)*t*tau # total cutting force in N\n",
+ "F_s = pi*D*t*tau # cutting force when punches are staggered in N\n",
+ "k = 0.6 # penetration\n",
+ "i = 1 # shear of punch in mm\n",
+ "F_p = (t*k*F)/(k*t +i)# cutting force when both punches act together in N \n",
+ "print \"shear force when both punch act at same time and no shear is applied = %0.2f kN\"%( F/1000)\n",
+ "print \"cutting force when punches are staggered = %0.1f kN\"%(F_s/1000)\n",
+ "print \"cutting force when there is penetration and shear on punch = %0.1f kN\"%(F_p/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "shear force when both punch act at same time and no shear is applied = 50.27 kN\n",
+ "cutting force when punches are staggered = 33.5 kN\n",
+ "cutting force when there is penetration and shear on punch = 23.8 kN\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.7 : page 135"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "D = 60 # hole diameter in mm\n",
+ "tau = 450 # ultimate shear strength in N/mm**2\n",
+ "t = 2.5 # thickness in mm\n",
+ "F = pi*D*t*tau # maximum punch force in N\n",
+ "w = F*0.4*t # work done in Nm\n",
+ "f = F/2 # punching force in N\n",
+ "k = 0.4 # penetration percentage\n",
+ "i = k*t*(F-f)/f # shear on punch in mm\n",
+ "print \"Amount of shear on punch = %d mm\"%( i)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Amount of shear on punch = 1 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.8 : page 136"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import ceil\n",
+ "# from fig 2.27\n",
+ "w = 2.5 # cm\n",
+ "t = 3.2 # strip thickness in mm\n",
+ "h = 10 # cm\n",
+ "a = t + 0.015*h*10 # back scrap and front scrap in mm\n",
+ "b = t # scrap bridge in mm\n",
+ "W = h + (2*a)/10 # width of strip in cm\n",
+ "W = ceil(W) # cm\n",
+ "s = w + b/10 # length of one piece of stock in cm\n",
+ "L = 240 # length of strip in cm\n",
+ "N = (L-b)/s # number of parts\n",
+ "y = L - (N*s + b/10) # scrap remaining at the end in mm\n",
+ "print \" Value of back scrap = %0.1f mm\\n Value of scrap bridge = %0.1f mm \"%( a , b )\n",
+ "print \" Width of strip = %0.2f cm\\n Length of one piece of stock needed to produce one part = %0.2f cm\"%( W , s)\n",
+ "print \" Number of parts = %0.1f blanks\\n Scrap remaining at the end = %0.2f mm\"%( N , y)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Value of back scrap = 4.7 mm\n",
+ " Value of scrap bridge = 3.2 mm \n",
+ " Width of strip = 11.00 cm\n",
+ " Length of one piece of stock needed to produce one part = 2.82 cm\n",
+ " Number of parts = 84.0 blanks\n",
+ " Scrap remaining at the end = 2.88 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.9 : page 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from figure 2.73\n",
+ "t = 0.8 # thickness in mm\n",
+ "d = 50 # shell diameter in mm\n",
+ "r = 1.6 # radius of bottom corner in mm\n",
+ "h = 50 # height in mm\n",
+ "D = sqrt(d**2 + 4*d*h) # shell blank size in mm\n",
+ "el = 6.4 # extra length required to add in shell blank size\n",
+ "D = D + el # mm\n",
+ "pr = 100*(1-(d/D)) # percentage reduction\n",
+ "ratio = h/d \n",
+ "n = 2 # number of draws\n",
+ "R1 = 45 # first reduction\n",
+ "D1 = D - R1*D/100 # diameter at first reduction in mm\n",
+ "R2 = 100*(1-(d/D1)) # second reduction \n",
+ "PR = 4*t # punch radius in mm\n",
+ "PR = ceil(PR)\n",
+ "DR = 6 # die radius in mm\n",
+ "DC1 = 0.87 # die clearance for first draw in mm\n",
+ "DC2 = 0.88 # die clearance for second draw in mm\n",
+ "PD2 = d - 2*t # punch diameter for second draw in mm\n",
+ "DD2 = PD2 + 2*DC2 # Die opening diameter for second draw in mm\n",
+ "PD1 = D1 - 2*t # punch diameter for first draw in mm\n",
+ "DD1 = D1 + 2*DC1 # Die opening diameter for first draw in mm\n",
+ "# Drawing pressure\n",
+ "c = 0.65 # constant\n",
+ "sigma = 427 # N/mm**2\n",
+ "F = pi*d*t*sigma*(D/d-c) # Drawing pressure in mm\n",
+ "Bhp = 30.8 # blanking holding pressure in kN\n",
+ "pc = 150 # press capacity in kN\n",
+ "print \"(i) size of blank = %0.2f mm \\n(ii) Percentage reduction = %0.1f percent \\n(iii) Number of draws = %d \\n(iv) Radius on punch = %d mm \\n Die Radius = %d mm \\n(v) Die clearance for first draw = %0.2f mm \\n die clearance for second draw = %0.2f mm\"%( D , pr,n,PR,DR,DC1,DC2)\n",
+ "print \" Punch diameter for second draw = %0.1f mm \\n Die opening diameter for second draw = %0.2f mm \\n Punch diameter for first draw = %0.3f mm \\n Die opening diameter for first draw = %0.3f mm\\n(vi) Drawing pressure = %0.2f mm \\n(vii) Blank holding pressure = %d kN \\n(viii) Press capacity = %d kN\"%( PD2 , DD2 ,PD1 ,DD1 , F/1000 ,Bhp , pc) \n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(i) size of blank = 118.20 mm \n",
+ "(ii) Percentage reduction = 57.7 percent \n",
+ "(iii) Number of draws = 2 \n",
+ "(iv) Radius on punch = 4 mm \n",
+ " Die Radius = 6 mm \n",
+ "(v) Die clearance for first draw = 0.87 mm \n",
+ " die clearance for second draw = 0.88 mm\n",
+ " Punch diameter for second draw = 48.4 mm \n",
+ " Die opening diameter for second draw = 50.16 mm \n",
+ " Punch diameter for first draw = 63.412 mm \n",
+ " Die opening diameter for first draw = 66.752 mm\n",
+ "(vi) Drawing pressure = 91.97 mm \n",
+ "(vii) Blank holding pressure = 30 kN \n",
+ "(viii) Press capacity = 150 kN\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.10 : page 138"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from figure 2.74\n",
+ "l1 = 76 - ( 2.3 + 0.90) # length1 in mm\n",
+ "l2 = 115 - (2.3 + 0.90) # length2 in mm\n",
+ "t = 2.3 # mm\n",
+ "r = 0.90 # inner radius in mm\n",
+ "k = t/3 # mm\n",
+ "B = 0.5*pi*(r + k) # bending allowance in mm\n",
+ "d = l1 + l2 + B # developed length in mm\n",
+ "print \"Developed length = %0.2f mm\"%( d)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Developed length = 187.22 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.11 : page 139"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import floor\n",
+ "t = 3.2 # thickness of blank in mm\n",
+ "l = 900 # bending length in mm\n",
+ "sigma = 400 # ultimate tensile strength in N/mm**2\n",
+ "k = 0.67 # die opening factor\n",
+ "r1 = 9.5 # punch radius in mm\n",
+ "r2 = 9.5 # die edge radius in mm\n",
+ "c = 3.2 # clearance in mm\n",
+ "w = r1 + r2 + c # width between contact points batween die and punch in mm\n",
+ "F= (k*l*sigma*t**2)/w # bending force in N\n",
+ "F=floor(F/10)*10 # N\n",
+ "print \"bending force = %0.2f kN\"%(F/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "bending force = 111.25 kN\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.12 : page 139"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "k = 1.33 # die opening factor\n",
+ "l = 1200 # bend length in mm\n",
+ "sigma = 455 # ultimate tensile strength in N/mm**2\n",
+ "t = 1.6 # blank thickness in mm\n",
+ "w = 8*t # width of die opening in mm\n",
+ "F = k*l*sigma*t**2/w # bending force in N \n",
+ "print \"bending force = %0.2f kN\"%(F/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "bending force = 145.24 kN\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.13 : page 140"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "c = 1.25 # clearance in mm\n",
+ "r1 = 3 # die radius in mm\n",
+ "r2 = 1.5 # punch radius in mm\n",
+ "sigma = 315 # ultimate tensile strength in MPa\n",
+ "t = 1 # thickness in mm\n",
+ "l = 50 # width at bend in mm\n",
+ "w = r1 + r2 +c # width between contact points on die and punch in mm\n",
+ "F = 0.67*l*sigma*t**2/w # bending force in N\n",
+ "F_p = 0.67*sigma*l*t # pad force in N\n",
+ "sigma_c = 560 # setting pressure in MPa\n",
+ "b1 = 2 # beads on punch\n",
+ "b = b1*r1 # mm\n",
+ "F_b = sigma_c*l*b # bottoming force in N\n",
+ "F_o = F_p + F_b # Force required when bottoming is used in N\n",
+ "F_n = F +F_p # Force required when bottoming is not used in N\n",
+ "print \"Force required when bottoming is used = %0.1f tonnes\"%(F_o/(9.81*1000))\n",
+ "print \"Force required when bottoming is not used = %0.3f tonnes\"%( F_n/(9.81*1000))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Force required when bottoming is used = 18.2 tonnes\n",
+ "Force required when bottoming is not used = 1.263 tonnes\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.14 : page 140"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sin, pi\n",
+ "w = 2 # width in mm\n",
+ "t = 5 # thickness in mm\n",
+ "theta=6 # shear in degrees\n",
+ "tau = 382.5 # ultimate shear stress in MPa\n",
+ "F = w*t*tau*1000 # cutting force in N\n",
+ "l = t/sin(theta*pi/180) # length to be cut in mm\n",
+ "F_i = l*t*tau # cutting force in N\n",
+ "print \"cutting force with parallel cutting edges = %0.3f MN\\ncutting force when shear is considered = %0.2f kN \"%(F/10**6 ,F_i/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "cutting force with parallel cutting edges = 3.825 MN\n",
+ "cutting force when shear is considered = 91.48 kN \n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.15 : page 141"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "d1 = 105 # inside diameter in mm\n",
+ "h = 90 # depth in mm\n",
+ "t = 1 # thickness in mm\n",
+ "D = sqrt(d1**2+4*d1*h) # blank diameter in mm\n",
+ "tr = t*100/D # thickness ratio\n",
+ "# from table safe drawing ratio is 1.82\n",
+ "r = 1.82 # draw ratio\n",
+ "d2 = D/r # diameter for first draw in mm\n",
+ "d = 130 # Let diameter for first draw in mm\n",
+ "ratio1 = D/d # D/d for first draw \n",
+ "ratio2 = d/d1 # D/d for second draw\n",
+ "h1 =((D)**2-(d)**2)/(4*d) # Depth of first draw in mm\n",
+ "sigma = 415 # N/mm**2\n",
+ "c = 0.65 # constant\n",
+ "pc = pi*d*t*sigma*(D/d - c) # press capacity in kN\n",
+ "print \" Blank diameter = %d mm \\n Thickness ratio = %0.3f \\n Diameter for first draw = %d mm \\n Depth of first draw = %0.2f mm \\n Press capacity = %0.2f kN\"%(D,tr,d2,h1,pc/1000)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Blank diameter = 220 mm \n",
+ " Thickness ratio = 0.453 \n",
+ " Diameter for first draw = 121 mm \n",
+ " Depth of first draw = 61.39 mm \n",
+ " Press capacity = 177.92 kN\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.16 : page 142"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "d = 80 # diameter in mm\n",
+ "h = 250 # height in mm\n",
+ "D = sqrt((d**2+4*d*h))/10 # blank diameter in cm\n",
+ "D1 = 0.5*D # diameter after first draw in cm\n",
+ "# let reduction be 40% in second draw\n",
+ "D2 = D1-0.4*D1 # diameter after scond draw in cm\n",
+ "R = (1 - (d/(10*D2)))*100 # percentage reduction for third draw\n",
+ "l1 = ((D)**2-(D1)**2)/(4*D1) # height of cup after first draw in cm\n",
+ "l2 = ((D)**2-(D2)**2)/(4*D2) # height of cup after first draw in cm\n",
+ "l3 = ((D)**2-(d/10)**2)/(4*d/10) # height of cup after first draw in cm\n",
+ "t = 3 # mm\n",
+ "sigma = 250 # N/mm**2\n",
+ "C = 0.66\n",
+ "F = pi*d/10*t*sigma*((D*10/d)-C) # drawing force in kN\n",
+ "print \" Diameter after first draw = %0.1f \\n Diameter after second draw = %0.2f \\n Percentage reduction after third draw = %d percent\"%(D1,D2,R)\n",
+ "print \" Height of cup after first draw = %0.2f cm\\n Height of cup after second draw = %0.2f cm\\n Height of cup after third draw = %0.2f cm\"%(l1,l2,l3)\n",
+ "print \" Drawing force = %0.3f kN\"%(F/1000)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Diameter after first draw = 14.7 \n",
+ " Diameter after second draw = 8.82 \n",
+ " Percentage reduction after third draw = 9 percent\n",
+ " Height of cup after first draw = 11.02 cm\n",
+ " Height of cup after second draw = 22.29 cm\n",
+ " Height of cup after third draw = 25.00 cm\n",
+ " Drawing force = 56.817 kN\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 2.17 : page 143"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from figure 2.75 (a)\n",
+ "r1 = 30 # radius in mm\n",
+ "t = 10 # thickness in mm\n",
+ "h1 = 300 # height in mm\n",
+ "ir1 = r1-t # inner radius of bends in mm\n",
+ "L1 = h1-(ir1+t) # mm\n",
+ "alpha1 = 90 # degree\n",
+ "r2 = 2*t # mm\n",
+ "k = 0.33*t # mm\n",
+ "L2 = alpha1*2*pi*(r2+k)/360 # mm\n",
+ "w = 200 # mm\n",
+ "L3 = w-2*(t+ir1)# mm\n",
+ "L4 = L2 #mm\n",
+ "h2 = 100 # mm\n",
+ "L5 = h2 -(t+ir1) # mm\n",
+ "r3 = 150 #mm \n",
+ "ir2 = r3 - t # inner radius in mm\n",
+ "alpha2 = 180 # degree\n",
+ "L6 = alpha2*2*pi*(ir2+k)/360 # mm\n",
+ "dl = L1+L2+L3+L4+L5+L6 # Total developed length in mm\n",
+ "print \"Total developed length = %0.2f mm\"%( dl)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total developed length = 1003.39 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter21.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter21.ipynb
new file mode 100644
index 00000000..ce855c6a
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter21.ipynb
@@ -0,0 +1,651 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:07da98a10783f18d707fb37c31a3acea9225ecbeaf714a43a7659cf50c01d3e3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 21 : Statistical Quality Control"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.1 : page 740"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "n = 10 # number of samples\n",
+ "A2 = 0.577\n",
+ "D3 = 0\n",
+ "D4 = 2.115\n",
+ "# number of defectives\n",
+ "x1 = 11.274\n",
+ "x2 = 11.246\n",
+ "x3 = 11.204\n",
+ "x4 = 11.294\n",
+ "x5 = 11.252\n",
+ "x6 = 11.238\n",
+ "x7 = 11.230\n",
+ "x8 = 11.276\n",
+ "x9 = 11.208\n",
+ "x10 = 11.266\n",
+ "r1 = 0.15\n",
+ "r2 = 0.20\n",
+ "r3 = 0.33\n",
+ "r4 = 0.46\n",
+ "r5 = 0.10\n",
+ "r6 = 0.15\n",
+ "r7 = 0.20\n",
+ "r8 = 0.23\n",
+ "r9 = 0.50\n",
+ "r10 = 0.30\n",
+ "x = x1+x2+x3+x4+x5+x6+x7+x8+x9+x10\n",
+ "r = r1+r2+r3+r4+r5+r6+r7+r8+r9+r10\n",
+ "Xavg = x/n\n",
+ "Ravg = r/n\n",
+ "# for X chart\n",
+ "ucl1 = Xavg + A2*Ravg\n",
+ "lcl1 = Xavg - A2*Ravg\n",
+ "# for R chart\n",
+ "ucl2 = D4*Ravg\n",
+ "lcl2 = D3*Ravg\n",
+ "print \"control limits \\nFor X charts \\n UCL = %0.2f cm \\n LCL = %0.2f cm\\n For R charts \\n UCl = %0.3f \\n LCL = %0.3f\"%(ucl1,lcl1,ucl2,lcl2)\n",
+ "# X chart\n",
+ "x=[1,2,3,4,5,6,7,8,9,10] \n",
+ "y=[11.274,11.246,11.204,11.294,11.252,11.238,11.230,11.276,11.208,11.266]\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, subplot, title, show\n",
+ "subplot(211)\n",
+ "plot(x,y)\n",
+ "title(\"X chart\")\n",
+ "xlabel(\"Sample No.\")\n",
+ "ylabel(\"X\")\n",
+ "# R chart\n",
+ "z = [0.15,0.20,0.33,0.46,0.10,0.15,0.20,0.23,0.50,0.30]\n",
+ "subplot(212)\n",
+ "plot(x,z)\n",
+ "title(\"R chart\")\n",
+ "xlabel(\"Sample no.\")\n",
+ "ylabel( \"R\")\n",
+ "show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "control limits \n",
+ "For X charts \n",
+ " UCL = 11.40 cm \n",
+ " LCL = 11.10 cm\n",
+ " For R charts \n",
+ " UCl = 0.554 \n",
+ " LCL = 0.000\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f1c5ed46550>"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.2 : page 741"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "from math import sqrt\n",
+ "n = 100 # total number of sub groups\n",
+ "s = 10 # number of samples\n",
+ "# number of defectives\n",
+ "d = [3,2,3,5,3,3,2,4,3,2]\n",
+ "p = sum(d) # total number of defectives\n",
+ "pbar = p/(n*s) # average fraction of defectives\n",
+ "sigmapbar = sqrt(pbar*(1-pbar)/n)\n",
+ "ucl1 = pbar + 3*sigmapbar\n",
+ "lcl1 = pbar - 3*sigmapbar\n",
+ "# percent defective (mean)\n",
+ "pbar = pbar*100\n",
+ "sigmap2 = sqrt(pbar*(100-pbar)/n)\n",
+ "ucl2 = pbar + 3*sigmap2\n",
+ "lcl2 = pbar - 3*sigmap2\n",
+ "print \" Control limits \\n Fraction defectives \\n UCL = %0.3f\\n LCL = %0.4f = %d (-ve fraction defective is meaningless)\\n Percent defectives \\n UCL = %0.1f \\n LCL = %0.1f = %d (-ve fraction defective is meaningless)\"%( ucl1,lcl1,lcl1,ucl2,lcl2,0)\n",
+ "\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, subplot, xlabel, ylabel, show, title\n",
+ "# control chart for fraction defectives\n",
+ "from numpy import arange\n",
+ "x = arange(0,10.2,1.111)\n",
+ "y = arange(0,0.081,0.009)\n",
+ "subplot(211)\n",
+ "plot(x, y)\n",
+ "title(\"Control chart for fraction defectives\")\n",
+ "xlabel(\"Samples\")\n",
+ "ylabel(\"Fraction defectives\")\n",
+ "show()\n",
+ "# control chart for percent defect\n",
+ "#z = linspace(0,8.1,10)\n",
+ "z = arange(0.8,9,0.9)\n",
+ "\n",
+ "subplot(212)\n",
+ "plot(x,z)\n",
+ "title(\"Control chart for percent defects\")\n",
+ "xlabel(\"Sample No.\")\n",
+ "ylabel(\"Percent defects\")\n",
+ "show()\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Control limits \n",
+ " Fraction defectives \n",
+ " UCL = 0.081\n",
+ " LCL = -0.0212 = 0 (-ve fraction defective is meaningless)\n",
+ " Percent defectives \n",
+ " UCL = 8.1 \n",
+ " LCL = -2.1 = 0 (-ve fraction defective is meaningless)\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAACfCAYAAADnEp6MAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXmYXFW1t98fYQgzKGMIEGYFAQOCkYDkkyRCxAkQRbiI\n+jkjOF7kelUEuep3rzIIhpkryqAiKHhRiEq4IEMgzKOMMgTCHAIJkJDf98felT6pdFWdrq7q6upe\n7/PU0+fss4e1T3Wddfbaa68t2wRBEARBLZbptABBEATB4CYURRAEQVCXUBRBEARBXUJRBEEQBHUJ\nRREEQRDUJRRFEARBUJdQFEFLkfSIpD36WGaMpEWSBvT/UdIPJD0jaVaL6hsv6X5JcyV9oBV1Nmhv\nrqQxA9DOf0s6pmTerSTdKuklSYe2WI4B6W+wNKEouhBJH5d0U/7hzJJ0maTxLai39AOhDs6fjpIV\nz6Z1rm8EfA14i+1RLWr2aOBE26vavqRFdQIgabqkTxfTcjuPtLKdGvTlO/1X4K+2V7N9UrMNdri/\nQRWhKLoMSV8DjgN+AKwDbAicDAzEG+yy7W6jv1TJqDpZNwKes/1cP9uorvPuGmUkqZ48jei08i0r\n+8bUuAd9pNP9DYrYjk+XfIDVgbnAvnXyrAAcDzyRP8cBy+drE4DHSW/Ss4FZwCH52meB14HXcht/\nyOmPkN4SbwfmAyNISuku4AXgStJbeaX9h4H31JBtReAnuc4XgauzvGOARcDBwD+BZ4B/K5TbGbgu\ntzcL+BmwXOH6IuCLwD+Ah4CrctrLuS8fqZJjIjAPeCNfPyun1+tX9X1YpqrOB3N984CXgOWB6SSF\n/vecvhnwSdKD9KVc5rNV9XwQuBWYAzwAvBc4FliY251LGrVU+r1p4X/jHODpLOu3AeVrhwDXAP8J\nPJ/v0Z51/ofGAjdnGS8AzgeOKVzfO8v4Qu7btjn9bwU5XwI2z9/vf+Xv9SlgKjCyP/0F3gk8Welf\nvvZh4LZ8vAzwrVzfs8CvgTXztZHAr3L6C8AMYJ1O/7YH+6fjAsSnD18W7AksqH5IVeU5GrgWWCt/\n/g4cna9NyOWPIj3w9wJeAVbP18+u5C3U90h+aGyQf/Rbkh7Ae+Q6vgncDyyb89dTFCfnh8n6+cc8\njvRAHZMfAqfmNrYDXgW2yuV2ICmLZeh5Yz28UO8i4HJgDWCFQtqmde7T7sBjhfNG/VriPtSoc4m+\nkxTFI8Bbs+zLAlOATfL1d+f7Pzaf70xSoHvk81GFe3Al8Kmq9oqK4hzgYmDlfI/uq+QnKYrXgU+T\nRgafB56o0YflSQ/1w/N92DeXrfwPjSW9ZOyU6zo493u53uQkvaj8Pn83qwCXAP/Rgv4+AEwsXPst\n8K/5+HDSb2AUsBxwCnBevva5LMPILP9YYNVO/7YH+6fjAsSnD18WHAg82SDPAxTeFoHJwMP5eALp\nzXaZwvXZwM75+GwKb4457WHyqCOffwe4oHAu0ijl3YX8SykK0oNyHvnts+ramPwQGFVIuwH4aI0+\nfgW4qHC+CJhQlaeRopjAkoqiTL8OqVVfb33PD7ujGpS5GDgsH58K/KRGviuBT/fWR9ID/TWWHAF9\nFrgyHx8C3F+4tlIuu9SbNEl5PVGVVnzZmMrSLxP3ArtVy5nv4cvF7wF4F/BQf/qbj48BzszHq+Z2\nNsznd1d9D+uTlN0I0ohu8SgoPuU+MUfRXTwHrNXAO2gU6Y2wwqM5bXEdthcVzueR3vTq8VjheP1c\nJwBOv8THSG/a9ViL9Bb3YJ08T1XJtTKApC0l/VHSk5LmkEwTb64jYzOU6VczbSxRRtJekq6X9Jyk\nF0gjjEpfRlP//rhG+lqkN+fq770o++J7a3tePuztex9FMlkWKda7MfB1SS9UPlnu4v9YRc61SUpp\nZiHvn7K80Hx/IZnD9pG0PLAPMNN25V6PAS4utHk3yZS1DvBL0ujzAklPSPpxN8y9dZpQFN3FdaQ3\nxw/XyTOL9EOpsFFOK0OtH2YxfRbpYQGkSVrShHr1w6WaZ0nmpM1LylJkKunHvrnt1Un29+r/3XoP\nlTKU6VczbSwuI2kF4HfA/yO9za8JXEbPRPFj1L4/9dp+lmRSHFNI24g0IuorT7K00t+4cPwocKzt\nNQufVWz/uoZc84GtC3nXsL1avt5sf7F9N0mB7QV8HDivSsY9q2RcyfaTthfaPtr2NsAupPmWg+u1\nFYSi6CpszwG+C5ws6YOSVpK0XH5L/XHOdj7w75LWkrRWzv/Lkk3MJpky6vEb4H2S3iNpOeDrJAVw\nbQPZFwFnAT+VtL6kEZLeld8IG7EKaVJznqS3AF8oUWY2afK4LE31qwRFb6Hl8+dZYJGkvUimwQpn\nAp/MMiwjaQNJW+VrNftj+40s/7GSVpG0MfBV0qRtX7kWWCjpsPy/tQ9pPqLC6cDnJe2cHblWlvQ+\nScXRibJci3L+4yWtDZD7VOlzU/0tcB7JDLkbaY6iwinAf2QXaCStXVnXImmCpG0ljSD9Ty0gOSEE\ndQhF0WXY/inJa+nfSR4uj5I8fi7OWX4A3ETyzrk9H/+gWEWd6s8Ets5D9otqtP8P4CCS59EzwPuA\n99teWEL8bwB3ADeSzGg/pOdBWk+ub5DeGl8CTiN54hTz91b2KOAXuS/71ah3cbl+9qsexTbmAoeR\nHurPAwcAfyhcv5FkQz+ONMk7nTQyADgB2E/S85KO76WdL5Mmxh8ieZOdS5pzqshQfY96vd+2F5BM\nOYeQvqP9SaOgyvWZwGeAk3If7ie9kdf6Po4gzZtdn82G00iOA/3tL6SXoneT1m08X0g/gTRhfYWk\nl0gj8Z3ztfVISmUOaZQ6nfIvUsOWivtceyqX9iS5ao4AzrD9417ynEgaPs4jTRbektMPB/4v6UFy\nuu0T2iZoEARBUJO2jSjy0O4kkkvn1sABkt5alWcKye68BclLY2pOfxtJSewEbA/sLakvZoQgCIKg\nRbTT9LQz8IDtR/Jw9gLS4poiHwB+AWD7BmANSeuR/M5vsP1qtr9eRRoOB0EQBANMOxXFBizpGvg4\nS3tT9JZnFMmOvZukN0laiWQvHt1GWYMgCIIatNN/uOzkx1IxZGzfm714riBN0N1CWmyzZEGpfRMs\nQRAEQxjbpWOPtXNE8QTJD73Chizt112dZ3ROw/ZZtt9he3eSR8R9vTXS6RWLg+Xzve99r+MyDJZP\n3Iu4F3Ev6n/6SjsVxU3AFkp7DSwPfJTkslbkEvJiF0njgBdtz87n6+S/G5EWmJ1HEARBMOC0zfRk\ne6HSxiWXk9xjz7R9j6TP5eun2r5M0hRJD5BMTJ8sVHGhpDeTFsR80fZL7ZI1CIIgqE1bY5zY/hMp\ntksx7dSq8153wbL97jaKNuSYMGFCp0UYNMS96CHuRQ9xL5qnTwvuJL0JGG379vaJVB5JbsbeFgRB\nMJyRhFs5mS3pKkmrZSUxEzhD0nH9ETIIgiDoHspMZq+e5wf2Ac6xvTNph7CGSNpT0r1KG84fUSPP\nifn6bZLGFtKPlHSXpDsknZcjbwZBEAQDTBlFMULS+qTgYP+T0xrae/oZwmMMKfDYDra3JU2Gf6yE\nrEEQBEGLKaMojiZ5Lj1oe0aOuXR/iXLNhvBYlxQldAGwUt5UZCUa73cQBEEQNKCZad2GXk+2f0sh\n1rvtB0n76Dait/Ac7yyRZwPbN0v6CSmE9nzgctt/KdFmEARBUMULL8Df/gZXXJE+faXMZPZWkv4q\n6a58vp2kfy9Rd9MhPPKo5SukHbtGAatIOrBkfUEQBMOaBQvgmmvgu9+FceNgo43gjDPgLW+BSy/t\ne31l1lGcDnyTtGsUpIB957PkZji90Z8QHhOAa20/B5A30dmFtBnLEhx11FGLjydMmBC+0kEQDDts\neOABmDYtjRimT4dNN4XJk+HYY+GNN6Zz7bXTmTMHLryw7/U3XEch6Sbb75B0i+2xOe1W229vUG5Z\nUnymPUj7Ec8ADrB9TyHPFOBQ21NyCI/jbY+T9HbSNo47kbaj/G9ghu2Tq9qIdRRBEAxLqs1Jr78O\nkyYl5TBxIqyzTu2yfV1HUWZE8YykxRug520ln2xUqD8hPGzfKukcUryoRcDNpC0wgyAIhiULFsAN\nN/Qohrvugl13TYrhsMNg661BpR/9faPMiGIz0kN6F+AF4GHgQNuPtEek8sSIIgiCoUo9c9LkybDL\nLjByZHN193VEUUZRjLD9hqRVgGUGU3C+UBRBEAwl+mNO6gvtUBSPAn8Gfg38bTA9mUNRBEHQzdQz\nJ02e3D5zUjsUxcrA3qSV0TsAlwK/tn11fwRtBaEogiDoJtppTuoLLVcUVZWvCZwIfNz2iBL59wSO\nJ01mn2H7x73kORHYC5gHHGL7FklbkVZyV9gU+I7tE6vKhqIIgmBQ05s5afLkZFJqpTmpL7RFUUia\nQNqhbk/gRtKI4ncNyowgucdOJK2NuJH67rHvBE6wPa6qnmVy+Z1tP1Z1LRRFEASDiqI5ado0uPPO\ngTEn9YWWu8dKegS4lTRH8U3bL5ese3Gsp1xPJdbTPYU8S8R6krSGpHUr26FmJpLiTC2hJIIgCAYD\nNjz4YM+IoXqx20CZk9pJmXUU2zXp6dRsrKfRQFFRfIzYLzsIgkFE0Zw0bRq89lpSDPvvD6ed1hlz\nUjupqSgkHZHnFI7V0uMk2z6sQd3NxnpaXE7S8sD7gV73soAI4REEQftZsABmzOgZNRTNSe1e7NYK\npk+fzvTp05suX3OOQtL7bV8q6RCWfOiLpCh+UbfiFJLjKNt75vMjgUXFCW1JpwDTbV+Qz+8Fdq+Y\nniR9EPhCpY5e2og5iiAIWk49c9KkSTB+fHebk1o2R2G7EmNwnu3fVDWyf4m6bwK2yJsQzSJNhh9Q\nlecS4FDggqxYXqyanziAFIAwCIKgrbz44pLeSa++OrTNSX2hzDqKxcEA66XVKLsXPe6xZ9r+YTHW\nU85T2QXvFeCTtm/O6SsD/wQ2sT23Rv0xogiCoCnqmZMmTYJtthnc5qT+0DL32PyQn0IaCVxAz1zC\nqsDWee/sjhKKIgiCshTNSdOmwZVXwiab9Litdrs5qS+00j12FjCT5NI6kzw3AcwFvtofIYMgCAaC\nWuakj3wETjkF1l230xJ2B2VMT6sBr9h+I5+PAFawPW8A5KtLjCiCICiycOGSi93uuCONFCqjhqFs\nTuoL7Yj1dD0wsbLQTtKqpD2sdykhTFMhPHL6GsAZwDakkcynbF9fVTYURRAMc4reScPZnNQX2rFx\n0cjiamzbcyWtVEKQEcBJFEJ4SLqklxAem9veIofwmApUQnicAFxme7+8W97KZTsVBMHQpTdz0qRJ\nsO++YU5qF2UUxSuSdrQ9E0DSO4D5Jco1HcKDtP3pbrY/ka8tBOaU61IQBEOJijmpEnG1aE469NAw\nJw0EZRTFV4DfSpqVz9cneUI1oj8hPN4gbcF6NrA9aTL98MEwLxIEQfupZU465pgwJ3WChorC9o05\n7PdWJM+ne20vKFF3f0J4LEva++LQ3P7xwLeA71YXjhAeQdD91PJO2m+/MCe1graF8FicIS18+xqw\nke3PSNoC2Mr2HxuUazqEB0l5XGd7k5y+K/At23tXtRGT2UHQhdQzJ4V3Uvtpx2T22STTT8XLaRZw\nIVBXUdDPEB6SHpO0pe1/kCbE7yohaxAEg5QwJ3UvZRTFZrb3l/QxANuv9BJNdilsL5R0KHA5PSE8\n7imG8LB9maQpkh4gh/AoVPFl4NwcQfbBqmtBEAxyYrHb0KGM6elaYA/gWttjJW0GnB8hPIIgKBLm\npO6hHQvuJgPfBrYGpgHjSQvjruyPoK0gFEUQdJZY7NadtDIo4Hjbf5c0EliFnoVwN9h+pv+i9p9Q\nFEEwsNQyJ02eDHvsEeakbqGVimKm7R0l3Wx7hyaF6U8Ij0eAl0hrKhb0ZuoKRREE7aWWOWnSJHjv\ne8Oc1K200utpoaTTgdH5YV6stOFWqC0I4WFggu3ny3YmCIL+E95JQTX1FMXepEnsySwZZrzytxFN\nh/Ao7HIX7ypB0GaK5qRp02D+/PBOCpak3laoz5DWN9xr+9Ym6m42hMcGwGySMvqLpDeAU22f3oQM\nQRBUEbGTgr5SZh3FfEl/BdazvY2k7YAP2P5Bg3LNhvCosKvtWZLWBqZlhXV1daYI4REEjQlz0vBm\nIEJ4/C/wTeCUvI5CwJ22t2lQrukQHgXTUyXf94CXbf+kKj0ms4OgF2qZk8I7KYD2hPBYKc8fAGkW\nW1KZoIBNh/DI+12MyHtfrEyaJ/l+mQ4FwXAkzElBOymjKJ6RtHnlRNJ+wJONCvUzhMd6wEVZOS0L\nnGv7ir50LAiGOmFOCgaKMqanzYDTSEEBXwAeBg6seDN1kjA9BcOJMCcFraLlITwKFa8MLGN7brPC\ntZpQFMFQZuFCmDGjZ9QQsZOCVtHKldlfL5wulcn2T/suXmsJRREMNXozJ1VWQYc5KWgVrZzMXpWk\nILYCdiJNPIu0EG9Gf4QMgiBRy5wUO7sFg4kycxRXA1MqJidJqwKX2d6tYeX9iPWUr40geU89bvv9\nvZSNEUXQVYQ5KRgMtMM9dh2g6A67IKc1EqS/sZ4ADgfuJo1ugqArCe+koNspoyjOAWZIuohkevoQ\nOT5TA/oV60nSaGAKcCxpz+4g6ArCnBQMNRoqCtvHSvozsBtpzmIJ81Ad+hvr6TjSivDVSrQVBB2j\nnjkpFrsFQ4EyIwpszyRFkO0LzcZ6kqS9gadt3yJpQr3CEesp6ARhTgq6ibbHemq64uZjPU0ADgP+\nBVgIjCSNKn5n++CqNmIyOxgQapmTJk2CiRPDnBR0F21bcNeEIMsC95H2tJhFcqk9oJfJ7ENtT8mK\n5Xjb46rq2R34Rng9BQNJeCcFQ5l2eD01RT9jPS1VXbvkDIIKYU4Kgt4ps45iX+BHwLr0zCfYdscn\nmWNEEfSHijmpEnF1/vxkSpo8OcxJwdCm5aYnSQ8CexdNRoOFUBRBXwhzUhAk2qEo/m57fL8lawOh\nKIJGFM1J06fDmDE9k9C77hrmpGB40g5FcQJpf4jfA6/nZNu+qIQwTYXwkDQSuApYAVge+IPtI3sp\nG4oiWIIXX0zzCxXlMG9ez4ghzElBkGjHZPbqwHzSLnNF6iqK/oTwsP2qpP9je172nrpG0q62rynb\nsWB4UM+c9KUvhTkpCFpBmZXZhzRZd79CeNiel/MsTxqRPN+kHMEQo2JOmjYtjR423jgphqOPDnNS\nELSDhopC0obAicCuOel/gcNtP96gaLMhPEYDs/OIZCawGTDV9t2NZA2GJrXMSfvuC1OnhjkpCNpN\nGdPT2cC5wP75/MCcNqlBuWZDeBjA9hvA2yWtDlwuaYLt6dWFI4TH0KNoTpo2DW6/PZmTJk2CL34R\n3va2MCcFQV9oewgPSbfZ3r5RWi/lmg3hsbvt2VV1fQeYb/u/qtJjMnuI8NBDSy52q5iTJk8Oc1IQ\ntJp2TGY/J+lfgPNIb/8fA54tUe4mYAtJY0ghPD4KHFCV5xLgUOCCrFhezCHG1wIW2n5R0oqk0cv3\nS7QZdAlz5vTETiqak/bZB37+c1hvvU5LGARBhTKK4lPAz4DKHtnXUjvUxmL6GcJjfeAXkpYBlgF+\nafuvfelYMLiomJMqq6Bvvx3e9a60F3SYk4JgcNO2oIADQZieBjdhTgqCwUnLFtxJOsL2jyX9rJfL\ntn1Ys0K2ilAUg4vezEnF2ElhTgqCwUEr5ygq7qgzWdKDSUQ014DezUm77JIUQ5iTgmDoUMbraX/b\nv2mUVqd8s2E8NiTt170OSTGdZvvEqnIxohhgwpwUBN1PO2I93WJ7bKO0GmVHkDYvWhzGg/qbF70T\nOMH2OEnrAevZvlXSKqSRzYeqyoaiaDNhTgqCoUfLTE+S9gKmABvkN/5KpasCC0rW358wHk8BT+X0\nlyXdA4yqKhu0mDAnBUFQTb05ilmkt/gP5r+VuYm5wFdL1t+vMB6VhLwWYyxwQ8l2gz5Qy5z0/e+H\nOSkIgjqKwvZtwG2SLgJeySE1KuakFUrW368wHrm9VYALSfGlXq4uGCE8+k4sdguC4cVAhPC4HphY\neUhLWhW43PYuDSvvZxgPScsBfwT+ZPv4XuqPOYoS1DMnTZ4c5qQgGG60I4THyOKbvO25klYqWX9/\nwngIOBO4uzclEdQnzElBELSKMoriFUk72p4JIOkdpI2MGtLPMB7jgYOA2yXdktOOtP3n0r0bRhTN\nSdOmwSuvhDkpCILWUMb0tBNwAfBkTlof+Kjtm9osW0OGs+kpzElBEDRLy9dR5EqXB7YiTTLfZ7us\ne2xbGW6KIha7BUHQCtqlKLYFtgZG0rOx0DnNCtkqhrqiqGVOmjQpFrsFQdA87ViZfRSwO7AN8D+k\nUBvX2N6vpEBNhfDI6WcB7wOetr1tL+WGlKIIc1IQBANBOxTFncD2wM22t5e0LnCu7YklhGk6hEe+\nthvwMnDOUFUUYU4KgmCgaYd77Hzbb0hamPevfhrYsGT9zYbwWM/2U7avzq61Q4bwTgqCoNsooyhu\nlLQmcDppXcQrpF3uytBsCI8NyHGeup2InRQEQbdTV1HkRW8/sv0CcIqky4HVcniPMvQ7hEc3Eovd\ngiAYSpQZUVwGvA3A9sN9rP8JljRTbUgaMdTLMzqnlWIwxHqqmJMqo4YwJwVBMJgYiFhPvwBOtj2j\nz5VLy5Ims/cghfCYQf3J7HHA8ZXJ7Hx9DHDpYJrMXrgQbryxZ9RQNCdNmgTbbhvmpCAIBi/t8Hq6\nD9gc+CdpfgLSntnblRRoL3rcY8+0/cNiCI+c5yRgz1z/J23fnNPPJ7nmvpk0if5d22cX6h4wRRHe\nSUEQDBVapigkbWT70fxGb6rmESqeTJ2knYqiN3NS7OwWBMFQoJWKYvF2p5J+Z3vfFsnYMlqpKOqZ\nk2KxWxAEQ4l2rKMA2LRJeQY1tcxJRx2VzEkrrthpCYMgCDpPWUUxJJgzJymEinJ4+eXwTgqCIGjE\nMnWubSdprqS5wLaV4/x5qUzlkvaUdK+k+yUdUSPPifn6bZLG9qVsIxYuhOuuS+sXxo+H0aNh6lTY\nbDO4+GJ48kk45xw46KDuVxL9cX0basS96CHuRQ9xL5qnpqKwPcL2qvmzbOF4VdurNao4x3mqeDNt\nDRwg6a1VeaYAm9veAvgsMLVs2Vo89BCccgrsuy+svTZ84QtpIvqoo+Dpp+Hyy+HrXx96LqzxI+gh\n7kUPcS96iHvRPO00PTUd5wnYpERZoLY56cMfhpNP7v6RQhAEQadpp6LoT5ynUSXKAsmcVPFOuvji\n8E4KgiBoNaU2LmqqYmlfYE/bn8nnBwHvtP3lQp5LSbGk/p7P/wIcAYxpVDand3VMqCAIgk7RDvfY\nZmg2ztPjwHIlyvapo0EQBEFz1PN66i83AVtIGpP33P4ocElVnkuAgwFynKcXbc8uWTYIgiAYANo2\norC9UNKhwOX0xHm6pxjnyfZlkqZIeoAc56le2XbJGgRBENSmbXMUQRAEwdCgnaanttKKBXlDAUkb\nSrpS0l2S7pR0WKdl6jSSRki6JTtLDFuyu/mFku6RdHc27w5LJB2ZfyN3SDpP0gqdlmmgkHSWpNmS\n7iikvUnSNEn/kHSFpDXq1dGViqI/C/KGIAuAr9reBhgHfGkY34sKhwN30+U7JbaAE4DLbL8V2I5e\n1iENB3IE7M8AO+R9bUYAH+ukTAPM2aRnZZFvAdNsbwn8NZ/XpCsVBYXFfLYXAJUFecMO20/ZvjUf\nv0x6GIzqrFSdQ9JoYApwBktvsTtskLQ6sJvtsyDN+9me02GxOsVLpBeqlfJmaivRh100ux3bVwMv\nVCUvXuyc/36oXh3dqihqLdQb1uQ3p7HADZ2VpKMcB3wTWNRpQTrMJsAzks6WdLOk0yWt1GmhOoHt\n54GfAI+Sdtp80fZfOitVx1k3e5gCzAbWrZe5WxXFcDcpLIWkVYALgcPzyGLYIWlv4GnbtzCMRxOZ\nZYEdgJ/b3oHkVVjXvDBUkbQZ8BXSQt5RwCqSDuyoUIOIvKlP3WdqtyqKMov5hg2SlgN+B/zK9u87\nLU8H2QX4gKSHgfOB90g6p8MydYrHgcdt35jPLyQpjuHIO4BrbT9neyFwEel/ZTgzO8fVQ9L6pK2m\na9KtiiIW5GUkCTgTuNv28Z2Wp5PY/jfbG9rehDRZ+TfbB3dark5g+yngMUlb5qSJwF0dFKmT3AuM\nk7Ri/r1MJDk7DGcuAT6Rjz8B1H3B7MqNi2JB3hKMBw4Cbpd0S0470vafOyjTYGG4myi/DJybX6Ye\nJC9oHW7Yvi2PLG8izV3dDJzWWakGDknnA7sDa0l6DPgu8CPgN5I+DTwC7F+3jlhwFwRBENSjW01P\nQRAEwQARiiIIgiCoSyiKIAiCoC6hKIIgCIK6hKIIgiAI6hKKIgiCIKhLKIogyEj6dg7VflsOU75z\nG9uaLmnHdtUfBK2kKxfcBUGrkfQu4H3AWNsLJL0JaOeeBQ3j6wTBYCFGFEGQWA94Noetx/bztp+U\n9B1JM/KGN6dWMucRwU8l3Zg3BtpJ0sV5I5hjcp4xeXOtX+WNg34racXqhiVNlnStpJmSfiNp5Zz+\no7zZzm2S/nOA7kMQLEUoiiBIXAFsKOk+SSdLendOP8n2znnDmxVzhFpIo4HXbO8ETAX+AHweeBtw\niKQ1c74tgZNtb03aF+GLxUYlrQV8G9jD9o7ATOBreUTzIdvb2N4eOKZdHQ+CRoSiCALA9ivAjsBn\ngWeAX0v6BCkC7fWSbgfeQ9pRsUIlEOWdwJ22Z9t+HXiInujGj9m+Lh//Cti1UF6kXQm3Bq7NsboO\nBjYC5gCvSjpT0oeB+a3tcRCUJ+YogiBjexFwFXBV3l/488C2wI62n5D0PWBkochr+e+iwnHlvPLb\nKs5DiN7nJabZ/nh1Yp5M3wPYDzg0HwfBgBMjiiAAJG0paYtC0lhSeGoDz+WNoT7SRNUbSRqXjz8O\nXF24ZuB6YHzeXAdJK0vaIs9TrGH7T8DXgO2baDsIWkKMKIIgsQrwM0lrAAuB+4HPAS+STEtPUXuL\n2XoeTPew1NmNAAAAdElEQVQBX5J0Fmk/iKlLFLSflXQIcL6kipfVt4G5wB8kjSSNRL7aZL+CoN9E\nmPEgaBN5D/NL80R4EHQtYXoKgvYSb2JB1xMjiiAIgqAuMaIIgiAI6hKKIgiCIKhLKIogCIKgLqEo\ngiAIgrqEogiCIAjq8v8BOsGfviq7ZrsAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f1c45917650>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAACfCAYAAAD3XhIVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAG8hJREFUeJzt3XmcXFWZ//HPNwlbCLKFLZAYZEcWwybKFlkCDgjujqgQ\nXBhlFAYElUVgQPHnAArOICrIJosyCDowDCQiqwgECPui7GFLCHuCrP38/jin0jdFdXVVd9+u6urv\n+/WqV1fd9dxbXU+deu655ygiMDOzzjWi1QUwM7NyOdCbmXU4B3ozsw7nQG9m1uEc6M3MOpwDvZlZ\nh3Ogtz6R9JikHZpcZ6KkLkmD+n8n6QeSnpP09GDud6hp5j2V9AlJsyS9Kmnjsstm/eNA38Yk7Snp\n1vxhelrS5ZK2GoDtniXp2H5uJvKjpfIXx/vqzJ8AHASsGxHjBq9krSXpGklfaXK1Zt7TE4D9ImKp\niLizyf0s0Nv7ZwPDgb5NSToI+CnwA2BFYDxwCrD7IOx7VNn76K+qMqrOohOA5yPi+X7uY8CVvP3S\nvoQliXRe7xuoTQ7QdqwnEeFHmz2ApYFXgU/VWWYx4CTgqfz4KbBonjcZeJJUk50NPA1MzfP2Bd4E\n3sj7+GOe/hjwHeAu4B/ASNKXyr3Ai8DVpFpxZf+PAtv3ULYlgBPzNl8Crs/lnQh0AXsBjwPPAYcV\n1tsC+Gve39PAfwKLFOZ3AfsBfwMeAa7N0+blY/lMVTl2BF4D3snzz8jT6x1X9XkYUeP4uoBvAQ/n\nY/gPQIX5XyYFwReAK4AJNY7h78DDedoewB3Ay8BDwM6F/4Nf53PxJHBspTzAVOAG4Pi8n0eAXfK8\nHwJv5/K/Cvysh/fpS/l9mAscVnxPScH3e7k8c4HfAcvm93Fe4bz/PS8/Dvg9MCeX5VuF/YzI238I\neAWYAawGXFf9/gFjgcvye/N8Xka1yu9HEzGl1QXwo8abArsAb9UKMoVljgFuzB+MscBfgGPyvMl5\n/aNJAfujwHxg6Tz/zMqyhe09BtwOrJo/zGvnD+AOeRuH5OA0Ki9fL9CfAvwZWCV/yLcEFqU70P8y\n72Mj4HVgnbzeJqRgPwJ4LylYHlDYbhdwJbAMsFhh2vvqnKftgFmF170d10LnoYdtdgFX5XKMBx4E\nvpLn7ZG3t04+jsOBv/R0DPl4XwJ2yPPHFc7HJcCppC/OFYCbgX3zvKmkL+yvkILy14GnCvu5Gvhy\nnfOyPim4bp3fmxPz/0wl0B9A+v8aBywC/AI4v+o43pefjwBuA44ARgGrk74Ep+T5h5C+ONfKrzcC\nlqv1/gE/ysc8Mj+2avXnsRMeLS+AHzXeFPgC8EwvyzxErsHl11OAR/PzyaSa7IjC/NnAFvn5mcCx\nVdt7lFzrz6+/D/y28FqkWuW2heXfFejzh/41YMMa8ybmD/a4wrSbgc/1cIz/BlxceN0FTK5aprdA\nP5mFA30jxzW1p+0V9jml8PobwJ/y8/8rBth8PuYD42sdA+lL78Qa+1iJ9CW4eGHa54E/5+dTybXp\n/Hp03vaK+fXV5C+fHo7hSBYO3KNJv/Iqgf6+4vtL+tJ+k+5fFMVA/0Hg8artH0r3L6gHgY/VOZfF\nQP/vwB+ANQbr8zYcHm2fix2mngfGShoREV09LDOO9LO74ok8bcE2qtZ9DRjTy35nFZ6vkrcJQESE\npFmkmm49Y4HFSTW6njxbVa4lASStDfwE2JQUeEYBt9YpY180clyN7KO4TPHcvxc4WdKJVcuvWlin\nuO5qwP/W2P57STXpZ1JKHEhfGk8UlllwHiPitbzcGFL6BOrn6VchfcEV1y9ex5gIXCKp+D/0NukL\n6JkaZR0n6cXCtJGktAukY6z3/1B0POmX6LR8PL+KiB83uK71wBdj29NfSbWrT9RZ5mnSh7FiQp7W\niJ4CQHH606QPMLDgAtx40vWAeuaSaqJrNliWolNJNck1I2JpUtqj+n+0vxcZGzmuRvYxoep5Zf0n\nSOmVZQuPJSPiph62P4va52oW6X9g+cJ2lo6IDRsoWyPH8AzpuAGQNBpYvjD/CdIvxuJxjI6I6iBf\nWfbRqmXfExG79XKM7y50xLyIODgi1iBdSzlI0vaNrGs9c6BvQxHxMumn9SmS9pA0WtIikj4qqVK7\nuQA4QtJYSWPz8r9pcBezgd6atF0I7Cppe0mLAN8mBfAbeyl7F3AG8BNJq0gaKelDkhZtoFxjSHnj\n1yStS0qJ9GY2sEYDy1X06bhqOFjSMpLGA/uTLlZCymUfJml9AElLS/pMne38Gtgnl2eEpFUlrZMD\n6jTSeVwqz1tD0rYNlq+383IRsJukrfJ7cwwLx4NfAMfl5qlIWkFSTy2+bgFelfQdSUvk93wDSZvl\n+acDx0paU8lGkparVU5Ju1aWI124fSc/rD9anTvyo+cHsCephcI8Ug3sUmDLPG8x4GRSDfVpUguc\nYqubJ6q2VWxRsSYwk9Sy4eLq+YV1Pk5qnfISKee7Xq3t1Sj34qRWQE/mda+hu9XNOyx87WDBRUNg\nG+B+UrC/jpSvva6w7DtU5eOBf8nH/yLw6RplqXUu+nRchWW6gG+S0hFzSemG4jF9kXTx8WVSbff0\nXo7h48CdpMD2d2CnPP09wM9JNeKXSBeJP5vn7V08N9XbJl0Af5DUIuekHo6j0vqp0urmERZudXMg\n8EAu10PAD3o6DlIq6HzS/+kLpC/OyrYqF6Ufydu6mXydpur9+wzpusyjpP/5WcDhrf4cdsJD+WSX\nQtIBwFfzP81pEXFyaTszGyQ5b71mRDzS6rKYNaK01I2kDUhBfnNgY9LPxGZ+YpuZ2QAoM0e/LnBz\nRLweEe+Qbm75ZIn7Mxss5f0MNitBmYH+HmAbScvlK/q7kppZmQ1pETHSaRsbSkprRx8RD+QWItNI\nN4zMJF3EWkCSa0ZmZn0QEQ33EVRq88qIOCMiNouI7UitBh6ssYwfERx11FEtL0O7PHwufC58LhZ+\nvPpqcNllwf77B+uu23z9uNRAL2nF/HcC6eaf88vcn5lZJ+jqgltvheOOg498BFZZBU48Mf0999zm\nt1d2FwgXSVqe1FnSfhHxSsn7MzMbkmbNgunTYdo0+NOfYKWVYKed4JBDYLvtYMkl+77tUgN9RDR6\nF9+wN3ny5FYXoW34XHTzuejWaedi3jy49toU2KdNg7lzYccdYeed4YQTYLUBbLpS6g1Tve5cilbu\n38xssHR1we23p6A+fXpKzWy+OUyZkmrukybBiAaT6ZKIJi7GOtCbmZWkOh2z4oopsE+Z0r90TFsF\nekmHkvr96ALuBvaJiDcK8x3ozaxjVKdjnnsu1dYrtfaBSse0TaCXNJE0ytB6EfGGpN8Bl0fE2YVl\nHOjNbMjqKR1TCe7NpGOa0WygL/Ni7Cuk1jajJb1DGkiit77MzczaWk/pmEMOgW23hTG9De/TAmWn\nbvYljUX5D+DKiPhS1XzX6M2srQ1WOqYZ7ZS6WYPUf/o2pH65/xu4KCLOKyzjQG9mbaVWOmazzbov\nopaVjmlGO6VuNgNujIjnASRdDHwYOK+40NFHH73g+eTJkzuurayZtb92T8dcc801XHPNNX1ev8wa\n/cakoL45aai2s4BbIuKUwjKu0ZvZoOspHVN5jB/f+zZaacBTN5KOB44l5dmvIA0icmBE9Do+qaTv\nkIY86yINg/bViHirMN+B3sxKV52OmTGj+2aldknHNKOMQH9nRGws6RPAbsBBwPURsVH/iupAb2bl\nqXezUjukY/qjjBx9ZZndSBdTX3Y/8mbWbuq1jjn++PZPx5SpkUB/qaQHSHn2b+Suh18vt1hmZvXV\nS8ece+7QS8eUqZHUzeLAksDLEfG2pCWBpSLi2X7v3KkbM2tCJ6djmlFGjv72iNikt2k9rLsO8NvC\npPcB34+In+X5DvRm1qOh3jqmLAOWo5e0CjCO1IXBJoCAAN5D6s6gVxHxIDApb28EqQuESxotnJkN\nL07HlKNejn4KMBVYldSNQcWrwGF92NeOwMMRMasP65pZh2r3m5U6QSOpm09FxO/7vSPpDODWiPh5\nYZpTN2bDTK10zI47dvcdM1zTMc0oo3nlZpKuioiX8g6WBb4dEUc0UahFgY8B362e5y4QzDpbJR1T\nqbU7HdO80rtAkHRHRHygatrMiJjU8E6kPYBvRMQuVdNdozfrQG4dU64yavQjJC0eEa/nHSwBLNpk\nuT4PXNDkOmY2RPhmpfbWSKA/D7gq59gF7AOc0+gOcrv7HYGv9amEZtZ2nI4ZWhrqvVLSR4Ed8svp\nEXHlgOzcqRuzIcPpmPZRysAjefzXtSJiuqTRwMiIeLXPpezergO9WZuqTsfMnbtw65hWjKxkSRl3\nxu5LSrssFxFrSFobODUidqi7YiM7d6A3axvV6Zh2HFnJklK6KQa2AG6qtLSRdHdEbNhAYZYBTgfe\nT7qr9ssRcVNhvgO9WQs5HTM0ldHq5o2IeENSZQejSEG7EScDl0fEp/N6SzZaMDMbeMV0zPTp3Tcr\n7bwznHCC0zGdqpFAf62kw0l93uwE7Eca9LsuSUsD20TE3gAR8TZpkHAzGyQ9pWN22gl+8xunY4aL\nRlI3I4Cvkvq+AbgSOL23nIukDwC/BO4jDT94G3BARLxWWMapG7MB5nRM5xvI3iuvyhdcfxQR3wV+\n1WRZRgGbAN+MiBmSTgK+BxxZXMhdIJj1T0+tY5yO6RyldYEg6T5STf4MYM/q+RFxe90NSysDf42I\n1fPrrYHvRcRuhWVcozdrklvH2EBejD2KVPuu7qa44iP1NhwRz0qaJWntiPgb6e7YexstmJl1c1e+\n1h+N5OiPjIhj+rRxaWNS88pFgYeBfSLi5cJ81+jNavDNSlZPGe3oRwBfAFaPiGMkTQBWjohb+ldU\nB3qzCqdjrBllBPpfAF3A9hGxrqTlgGkRsVn/iupAb8ObW8dYX5Vxw9QHI2KSpJkAEfGCpEX6XEKz\nYcqtY6xVGgn0b0oaWXkhaQVSDb8hkh4DXgHeAd6KiC2aLaTZUFQvHeOufG0wNRLo/xO4BFhR0nHA\np4GGhxEkdZcwOSJe6EP5zIaUWumYnXZy6xhrrUa7KV6P7v7or4qI+xvegfQosFlEPF9jnnP0NqRV\n0jGV4D5nTgrslYdHVrIyDNjF2HzRdaFJ+W9AytU3WKBHSH3cvAP8MiJOK8xzoLchpasLZs7szrO7\ndYy1wkBejL2dFNQFTABezNOXBR4HVm9wH1tFxDM5tz9d0gMRcX1lprtAsHZXScdMn57SMSuskIL6\nwQfDdts5HWPlK60LhAULSKcBl0TE5fn1R4FPRMS+Te9MOgqYFxEn5teu0VvbmT9/4dYxc+YsfLOS\n0zHWamW0o78nIjbobVoP6y4YdjAPEj4N+PeImJbnO9BbyzkdY0NNGe3on5Z0BHAuKY2zJ/BUg9tf\nCbgkD1oyCjivEuTNWunJJxduHTN2rNMx1rkaqdEvT+rgbJs86TpSrbzfzSVdo7fB4nSMdZIBT92U\nyYHeylJJx1Rq7TNmdI+sVEnHjBzZ+3bM2pEDvQ1bPaVjpkxxOsY6iwO9DRvFdMz06TB7NuywQ3c6\nZsKEVpfQrBxltLrZOiJuqJq2VUT8pcECjQRuBZ6MiI9VzXOgt4Z1dcEdd3Tn2WfMgE03Xbh1jNMx\nNhyUEehnRsSk3qbVWf8gYFNgqYjYvWqeA73V5XSM2bsN5ODgHwI+DKyQg3Vlo0sBDbUqlrQa8E/A\nD4GDGi2UDV/10jE//rHTMWZ9Ua8d/aKkoD4y/614hdSDZSN+ChwCvKdPpbOOVy8dc/bZTseYDYQe\nA31EXAtcK+msiHis2Q1L2g2YExEzJU3uaTn3dTP89JSO+fa3nY4xq2Uw+rpZBzgYmEj3F0NExPa9\nrHcc8CXgbWBxUq3+9xGxV2EZ5+iHgVo3K7l1jFnflXEx9i7gVFJvlu/kyRERtzVRqO2Ag93qZnio\nvlnpllve3XeM0zFmfVdGXzdvRcSp/ShThSN6B3M6xqx9NVKjPxp4DrgYeKMy3X3dDG++WcmsdcpI\n3TxGjdp4RDQ68Ei9bTvQDxG10jGbbgo77+x0jNlgcxcINmB8s5JZeyqjRr8k6WanCRHxNUlrAetE\nxGUNFGZx4FpgMVK7/D9GxKGF+Q70bcStY8yGhjIC/YXAbcBeEfH+HPhvjIiNGyzQ6Ih4TdIo4AZS\n65sb8jwH+hZy6xizoamMVjdrRMRnJf0zQETMzyNGNSQiXstPFyXdZdvvi7jWd24dYzb8NBLo35C0\nROWFpDUotL7pjaQRpDb4awCnRsR9TZfS+qynkZV22sl9x5gNF40E+qOBK4DVJJ0PbAVMbXQHEdEF\nfEDS0sCVkiZHxDULNu4uEAZUvXTMOec4HWM2FJXeBQKApLHAlvnlTRExt087k74P/CMiTsivnaMf\nAG4dYza8lHEx9pPAnyPipfx6GWByRPyhgcKMBd6OiJdy+udK0sDiV+X5DvR9UC8d49YxZp2vjEB/\nZ3ULG0l3RMQHGijMhsDZpP7rRwC/iYjjC/Md6Bvg1jFmVlRGq5taG2sorETE3cAmjRbGulWnY5Zf\nPt2F6tYxZtasRmr0ZwIvAqeQgv6/AstGxNR+79w1+gVq9R3jdIyZ1VLWnbFHAjvkSdOBH0TE/D6X\nsnvbwzbQe6BrM+urAQ30+W7W6RHxkT4WZjxwDrAiqWO0X0XEzwrzh1Wgd+sYMxsIZdTorwI+VWl1\n02RhVgZWjog7JI0hdaXw8Yi4P8/v6EDvdIyZlaGMi7HzgbslTc/PIY0wtX9vK0bEs8Cz+fk8SfcD\n44D7Gy3gUOKBrs2sHTVSo5+an1YWFCnQn93UjqSJpJ4s3x8R8/K0IV+jdzrGzAbbgNfoI+IsSaNJ\n3RQ/0MdCjQEuAg6oBPmKodYFQr10jPuOMbMylN4FgqTdgeOBxSJioqRJpLtbd29oB9IiwGXA/0XE\nSVXz2r5G79YxZtZuyrgYezuwPXB1REzK0+6JiA0aKIxId8Y+HxEH1pjfloHe6Rgza2dlXIx9K/dV\nU5zW1eD2twK+CNwlaWaedmhEXNFoAQdDJR1TCe5Ox5hZJ2kk0N8r6QvAqDyM4P7AjY1sPI8kNaIf\n5StFvXTMWWfBJps4HWNmnaOR1M1o4AhgSp50JXBsRLze750PYurG6Rgz6xQDlqPP3Qp/HVgTuAs4\nIyLeGpBSdu+jtEBfKx3jga7NrBMMZKC/EHiTNKD3LsDjEXFAk4U5A9gVmBMRG9aYP2CB3q1jzGy4\nGMhAf3clOOc+b2ZUWt00UZhtgHnAOWUEeqdjzGw4GshWN29XnkTE21WtbhoSEdfnO2IHxPz5cN11\n3bX2YjrGrWPMzGqrF+g3kvRq4fUShdcREe8psVyA+44xMxsIPQb6iGhJCO0pHXPQQSkds9RSrSiV\nmdnQ1Ug7+lIddtjRPP44PPwwPPvsZObNm+x0jJlZQel93fRXztFf2tPF2DFjwq1jzMyaMOB93fSz\nMBcA2wHLA3OAIyPizML8eOWVcDrGzKwJbRXoe915m3ZqZmbWzpoN9G3XD42ZmQ0sB3ozsw7nQG9m\n1uFKDfSSdpH0gKS/S/pumfsa6vrTdKrT+Fx087no5nPRd6UFekkjgf8idYi2PvB5SeuVtb+hzv/E\n3XwuuvlcdPO56Lsya/RbAA9FxGO5e+PfAnuUuD8zM6uhzEC/KjCr8PrJPM3MzAZRae3oJX0K2CUi\nvpZffxH4YER8q7CMG9GbmfXBQA8O3ldPAeMLr8eTavULNFNQMzPrmzJTN7cCa0maKGlR4HPA/5S4\nPzMzq6G0Gn0erOSbpMHERwK/joj7y9qfmZnV1tK+bszMrHwtuzPWN1MlksZLulrSvZLukbR/q8vU\napJGSpop6dJWl6WVJC0j6SJJ90u6T9KWrS5Tq0g6NH9G7pZ0vqTFWl2mwSLpDEmzJd1dmLacpOmS\n/iZpmqRl6m2jJYHeN1Mt5C3gwIh4P7Al8K/D+FxUHADcBwz3n5snA5dHxHrARsCwTH3mMS2+BmyS\nx7UYCfxzK8s0yM4kxcqi7wHTI2Jt4Kr8uketqtH7ZqosIp6NiDvy83mkD/O41paqdSStBvwTcDow\nbFtlSVoa2CYizoB0zSsiXm5xsVrlFVKFaLSkUcBoUqu+YSEirgderJq8O3B2fn428PF622hVoPfN\nVDXkmssk4ObWlqSlfgocAnS1uiAttjrwnKQzJd0u6TRJo1tdqFaIiBeAE4EngKeBlyLiT60tVcut\nFBGz8/PZwEr1Fm5VoB/uP8nfRdIY4CLggFyzH3Yk7QbMiYiZDOPafDYK2AT4eURsAsynl5/nnUrS\nGsC/ARNJv3bHSPpCSwvVRvLoTXVjaqsCfa83Uw0nkhYBfg+cGxF/aHV5WujDwO6SHgUuALaXdE6L\ny9QqTwJPRsSM/PoiUuAfjjYDboyI5yPibeBi0v/KcDZb0soAklYhDdXao1YFet9MlUkS8Gvgvog4\nqdXlaaWIOCwixkfE6qSLbX+OiL1aXa5WiIhngVmS1s6TdgTubWGRWukBYEtJS+TPy46ki/XD2f8A\ne+fnewN1K4hldoHQI99MtZCtgC8Cd0mamacdGhFXtLBM7WK4p/i+BZyXK0MPA/u0uDwtERF35l92\nt5Ku3dwO/Kq1pRo8ki4AtgPGSpoFHAn8P+BCSV8BHgM+W3cbvmHKzKyzeShBM7MO50BvZtbhHOjN\nzDqcA72ZWYdzoDcz63AO9GZmHc6B3oYUSYfn7pzvzF0Zb1Hy/q6RtGkTy58l6cnc9h1JY/OdvmYt\n05Ibpsz6QtKHgF2BSRHxlqTlgLL7Je+1H5Ea3ga+DPxi4Itj1jzX6G0oWRmYm7u2JiJeiIhnACR9\nX9IteWCKX1ZWyDXyn0iakQfw2FzSJXnAhmPzMhPzIDjn5gE+/lvSEtU7lzRF0o2SbpN0oaQla5Qx\nSP3IHyhpRNX6knR8LuNdkurezWg2UBzobSiZBoyX9KCkUyRtW5j3XxGxRR6YYoncEyakwPtGRGwO\nnAr8Efg6sAEwVdKyebm1gVMiYn1S/+f7FXcsaSxwOLBDRGwK3AYc1EM5nwBuAPZi4V8DnwQ2Jg0i\nsiNwfKVjKrMyOdDbkBER84FNgX2B54DfSap07LS9pJsk3QVsTxq5rKLSYd49wD0RMTsi3gQeobsX\n1VkR8df8/Fxg68L6Io3+tT5wY+6TaC9gQk9FBX5E6le/+BnbGjg/kjnAtcDmDZ8Asz5yjt6GlIjo\nIgXIa/MYmntL+i3wc9JQc09JOgpYvLDaG/lvV+F55XXlM1CseYvaefnpEbFng+V8SNIdpJ5ZF0zm\n3f3su7MpK51r9DZkSFpb0lqFSZNIPfctTgqYz+cBXD7Th81PKAy+vSdwfWFeADcBW+VBMJC0ZFVZ\nFipq/vtD4GC6g/n1wOckjZC0ArAtcEsfymrWFAd6G0rGAGdJulfSncC6wNF5LNXTSKmZK+h5KMZ6\nLWgeJA3Mfh+wNCmf371ixFxgKnBB3veNwDp19kNE3EfK5Ve2cQlwF3AnaUDnQyJijqRxkv633oGb\n9Ye7KbZhL4/Ve2m+kGvWcVyjN0tc47GO5Rq9mVmHc43ezKzDOdCbmXU4B3ozsw7nQG9m1uEc6M3M\nOtz/Bw0zxXUEgApzAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f1c4544aa90>"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.4 : page 742"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import exp, factorial\n",
+ "n = 1000 # number of units\n",
+ "s = 4 # random sample\n",
+ "d = 50 # defectives\n",
+ "z = d*s/n\n",
+ "pp0 = exp(-0.2)*1 # poisson probabilities for 0 defectives\n",
+ "pp1 = exp(-0.2)*(z) # poisson probabilities for 1 defectives\n",
+ "pp2 = exp(-0.2)*(z**2/factorial(2)) # poisson probabilities for 2 defectives\n",
+ "pp3 = exp(-0.2)*(z**3/factorial(3))# poisson probabilities for 3 defectives\n",
+ "print \"Proabilities for 0,1,2 and 3 defectives are : %0.3f ,%0.4f, %0.4f, %0.5f\"%(pp0,pp1,pp2,pp3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Proabilities for 0,1,2 and 3 defectives are : 0.819 ,0.1637, 0.0164, 0.00109\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.5 : page 744"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "d = 50 # defectives\n",
+ "l = 1000 # lot of pieces\n",
+ "p = d/l # proability of an event happening\n",
+ "q = 1-p # proability of an event not happening\n",
+ "n = 4 # sample size\n",
+ "p0 = q**n #probabilities for 0 defectives\n",
+ "p1 = 4*(q)**3*p # probabilities for 1 defectives\n",
+ "p2 = 6*(q)**2*p**2 # probabilities for 2 defectives\n",
+ "p3 = 4*q*(p)**3 # probabilities for 3 defectives\n",
+ "print \" Proabilities for 0,1,2 and 3 defectives are : %0.4f %0.4f %0.4f %0.6f\"%(p0,p1,p2,p3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Proabilities for 0,1,2 and 3 defectives are : 0.8145 0.1715 0.0135 0.000475\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.6 : page 747"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import ceil\n",
+ "# producer's risk\n",
+ "n = 71 # sample size\n",
+ "AQL = 0.005\n",
+ "LTPD = 0.05\n",
+ "l_s = 500 # lot size\n",
+ "z1 = n*AQL # mean number of defects\n",
+ "pp1 = exp(-z1)+z1*exp(-z1) # poisson proability for 1 or less defective\n",
+ "alpha = (1-pp1)*100 # producer's risk\n",
+ "alpha = ceil(alpha)\n",
+ "# consumer's risk\n",
+ "z2 = n*LTPD # mean number of defects\n",
+ "pp2 = exp(-z2)+z2*exp(-z2) # poisson proability for 1 or less defective\n",
+ "bita = pp2*100 # consumer's risk\n",
+ "print \" Producers risk = %d percent\\n Consumers risk = %0.2f percent\"%( alpha,bita)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Producers risk = 5 percent\n",
+ " Consumers risk = 13.07 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.7 : page 748"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sqrt\n",
+ "td1= 20 # total number of days\n",
+ "n1 = 200 # sample size \n",
+ "# number of defectives\n",
+ "d1 = 10 \n",
+ "d2 = 15\n",
+ "d3 = 10\n",
+ "d4 = 12\n",
+ "d5 = 11\n",
+ "d6 = 9\n",
+ "d7 = 22\n",
+ "d8 = 4\n",
+ "d9 = 12\n",
+ "d10 = 24\n",
+ "d11 = 21\n",
+ "d12 = 15\n",
+ "d13 = 8\n",
+ "d14 = 14\n",
+ "d15 = 4\n",
+ "d16 = 10\n",
+ "d17 = 11\n",
+ "d18 = 11\n",
+ "d19 = 26 \n",
+ "d20 = 13\n",
+ "d = d1+d2+d3+d4+d5+d6+d7+d8+d9+d10+d11+d12+d13+d14+d15+d16+d17+d18+d19+d20 # total number of defectives\n",
+ "p1 = d/(n1*td1) # average fraction of defectives\n",
+ "sigmap1 = sqrt(p1*(1-p1)/n1)\n",
+ "ucl1 = p1 + 3*sigmap1\n",
+ "lcl1 = p1 - 3*sigmap1\n",
+ "# revised control limits\n",
+ "td2 = 18 # total number of days\n",
+ "D = d - (d10+d19) # number of defects\n",
+ "p2 = D/(n1*td2)\n",
+ "sigmap2 = sqrt(p2*(1-p2)/n1)\n",
+ "ucl2 = p2 + 3*sigmap2\n",
+ "lcl2 = p2 - 3*sigmap2\n",
+ "print \" Preliminary control limits \\n UCL = %0.3f \\n LCL = %0.3f \\n Revised control limits \\n UCL = %0.3f \\n LCL = %0.3f\"%(ucl1,lcl1,ucl2,lcl2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Preliminary control limits \n",
+ " UCL = 0.118 \n",
+ " LCL = 0.013 \n",
+ " Revised control limits \n",
+ " UCL = 0.109 \n",
+ " LCL = 0.009\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.8 : page 750"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "n1 = 15 # total number of sub groups\n",
+ "# number of defectives\n",
+ "d1 = 77\n",
+ "d2 = 64\n",
+ "d3 = 75\n",
+ "d4 = 93\n",
+ "d5 = 45\n",
+ "d6 = 61\n",
+ "d7 = 49\n",
+ "d8 = 65\n",
+ "d9 = 45\n",
+ "d10 = 77\n",
+ "d11 = 59\n",
+ "d12 = 54\n",
+ "d13 = 84\n",
+ "d14 = 40\n",
+ "d15 = 92\n",
+ "d = d1+d2+d3+d4+d5+d6+d7+d8+d9+d10+d11+d12+d13+d14+d15 # total number of defectives\n",
+ "c1 = d/n1\n",
+ "ucl1 = c1 + 3*sqrt(c1)\n",
+ "lcl1 = c1 - 3*sqrt(c1)\n",
+ "# revised control limits\n",
+ "n2 = 12 # total number of sub groups\n",
+ "D = d - (d4+d14+d15) # number of defects\n",
+ "c2 = D/n2\n",
+ "ucl2 = c2 + 3*sqrt(c2)\n",
+ "lcl2 = c2 - 3*sqrt(c2)\n",
+ "print \" Preliminary control limits \\n UCL = %0.2f \\n LCL = %0.2f \\n Revised control limits \\n UCL = %0.3f \\n LCL = %0.3f\"%(ucl1,lcl1,ucl2,lcl2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Preliminary control limits \n",
+ " UCL = 89.58 \n",
+ " LCL = 41.08 \n",
+ " Revised control limits \n",
+ " UCL = 86.713 \n",
+ " LCL = 39.121\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.9 : page 750"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "n = 20 # number of samples\n",
+ "A = 1.342\n",
+ "A1 = 1.596\n",
+ "A2 = 0.577\n",
+ "d2 = 2.326\n",
+ "d3 = 0.864\n",
+ "D1 = 0\n",
+ "D2 = 4.918\n",
+ "D3 = 0\n",
+ "D4 = 2.115\n",
+ "# number of defectives\n",
+ "x1 = 3290\n",
+ "x2 = 3180\n",
+ "x3 = 3350\n",
+ "x4 = 3470\n",
+ "x5 = 3080\n",
+ "x6 = 3240\n",
+ "x7 = 3260\n",
+ "x8 = 3310\n",
+ "x9 = 3640\n",
+ "x10 = 4110\n",
+ "x11 = 3220\n",
+ "x12 = 3590\n",
+ "x13 = 4270\n",
+ "x14 = 4040\n",
+ "x15 = 3580\n",
+ "x16 = 3500\n",
+ "x17 = 3570\n",
+ "x18 = 3560\n",
+ "x19 = 2740\n",
+ "x20 = 3200\n",
+ "r1 = 560\n",
+ "r2 = 410\n",
+ "r3 = 200\n",
+ "r4 = 300\n",
+ "r5 = 90\n",
+ "r6 = 650\n",
+ "r7 = 890\n",
+ "r8 = 410\n",
+ "r9 = 1120\n",
+ "r10 = 520\n",
+ "r11 = 580\n",
+ "r12 = 670\n",
+ "r13 = 480\n",
+ "r14 = 250\n",
+ "r15 = 170\n",
+ "r16 = 670\n",
+ "r17 = 440\n",
+ "r18 = 660\n",
+ "r19 = 560\n",
+ "r20 = 590\n",
+ "x = x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20\n",
+ "r = r1+r2+r3+r4+r5+r6+r7+r8+r9+r10+r11+r12+r13+r14+r15+r16+r17+r18+r19+r20\n",
+ "Xavg = x/n\n",
+ "Ravg = r/n\n",
+ "# for X chart\n",
+ "ucl1 = Xavg + A2*Ravg\n",
+ "lcl1 = Xavg - A2*Ravg\n",
+ "# for R chart\n",
+ "ucl2 = D4*Ravg\n",
+ "lcl2 = D3*Ravg\n",
+ "# Revised control limits\n",
+ "n1 = 15\n",
+ "n2 = 19\n",
+ "X = (x - (x5+x10+x13+x14+x19))/n1\n",
+ "R = (r - (r9))/n2\n",
+ "# for X chart\n",
+ "ucl3 = X + A2*R\n",
+ "lcl3 = X - A2*R\n",
+ "# for R chart\n",
+ "ucl4 = D4*R\n",
+ "lcl4 = D3*R\n",
+ "print \" Preliminary control limits \\n For X charts \\n UCL = %0.2f \\n LCL = %0.2f\\n For R charts \\n UCl = %0.3f \\n LCL = %0.3f \\n Revised control limits \\n For X chart \\n UCL = %0.3f \\n LCL = %0.3f\\n For R charts \\n UCl = %0.3f \\n LCL = %0.3f\"%(ucl1,lcl1,ucl2,lcl2,ucl3,ucl3,ucl4,lcl4)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Preliminary control limits \n",
+ " For X charts \n",
+ " UCL = 3754.85 \n",
+ " LCL = 3165.15\n",
+ " For R charts \n",
+ " UCl = 1080.765 \n",
+ " LCL = 0.000 \n",
+ " Revised control limits \n",
+ " For X chart \n",
+ " UCL = 3673.686 \n",
+ " LCL = 3673.686\n",
+ " For R charts \n",
+ " UCl = 1012.974 \n",
+ " LCL = 0.000\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 21.10 : page 752"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import exp\n",
+ "n = 50 # sample size\n",
+ "rn = 2 # rejection number\n",
+ "AQL = 0.02\n",
+ "LTPD = 0.08\n",
+ "# Producer's risk\n",
+ "z1 = n*AQL # mean number of defectives\n",
+ "pp1 = exp(-z1)+z1*exp(-z1) # poisson proability for 1 or less defective\n",
+ "alpha = (1-pp1)*100 # producer's risk\n",
+ "# consumer's risk\n",
+ "z2 = n*LTPD # mean number of defectives\n",
+ "bita = (exp(-z2)+z2*exp(-z2))*100 # consumer's risk\n",
+ "d1 = 1 # incoming defective in percent\n",
+ "z3 = n*d1/100 # average number of defective\n",
+ "ppa1 = exp(-z3)+z3*exp(-z3) # proability of acceptance\n",
+ "ppa1 = ppa1*100\n",
+ "ppr1 = 100-ppa1 # proability of rejection\n",
+ "AOQ1 = ppr1*0 + ppa1*d1/100\n",
+ "d2 = 2 # incoming defective in percent\n",
+ "z4 = n*d2/100 # average number of defective\n",
+ "ppa2 = exp(-z4)+z4*exp(-z4) # proability of acceptance\n",
+ "ppa2 = ppa2*100\n",
+ "ppr2 = 100-ppa2 # proability of rejection\n",
+ "AOQ2 = ppr2*0 + ppa2*d2/100\n",
+ "d3 = 4 # incoming defective in percent\n",
+ "z5 = n*d3/100 # average number of defective\n",
+ "ppa3 = exp(-z5)+z5*exp(-z5) # proability of acceptance\n",
+ "ppa3 = ppa3*100\n",
+ "ppr3 = 100-ppa3 # proability of rejection\n",
+ "AOQ3 = ppr3*0 + ppa3*d3/100\n",
+ "d4 = 6 # incoming defective in percent\n",
+ "z6 = n*d4/100 # average number of defective\n",
+ "ppa4 = exp(-z6)+z6*exp(-z6) # proability of acceptance\n",
+ "ppa4 = ppa4*100\n",
+ "ppr4 = 100-ppa4 # proability of rejection\n",
+ "AOQ4 = ppr4*0 + ppa4*d4/100\n",
+ "d5 = 8 # incoming defective in percent\n",
+ "z7 = n*d5/100 # average number of defective\n",
+ "ppa5 = exp(-z7)+z7*exp(-z7) # proability of acceptance\n",
+ "ppa5 = ppa5*100\n",
+ "ppr5 = 100-ppa5 # proability of rejection\n",
+ "AOQ5 = ppr5*0 + ppa5*d5/100\n",
+ "print \" Producers risk = %0.2f percent\\n Consumers risk = %0.3f percent\"%( alpha,bita)\n",
+ "x = [1,2,4,6,8]\n",
+ "y = [0.91,1.4716,1.624,1.194,0.733]\n",
+ "%matplotlib inline\n",
+ "from matplotlib import pyplot as plt\n",
+ "plt.plot(x,y)\n",
+ "plt.title(\"AOQ curve\")\n",
+ "plt.xlabel(\"Percent dectives\")\n",
+ "plt.ylabel(\"AOQ of lot\")\n",
+ "plt.show()\n",
+ "\n",
+ "\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Producers risk = 26.42 percent\n",
+ " Consumers risk = 9.158 percent\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f1c459419d0>"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter22.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter22.ipynb
new file mode 100644
index 00000000..1c0709f3
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter22.ipynb
@@ -0,0 +1,357 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:38fdf43d554838723eb76234a1d8252c42596d1109a096bee316105d7ab6d358"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 22 : Kinematics of Machine Tools"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 22.2 : page 778"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "from math import pi\n",
+ "d1 = 10 # min. dia of cutter in mm\n",
+ "d2 = 60 # max. dia of cutter in mm\n",
+ "v = 30e3 # operating speed in mm/min\n",
+ "z= 6 # required speeds\n",
+ "nmin = v / (pi * d2) # n_min in rpm\n",
+ "nmax = v / (pi * d1) # n_max in rpm\n",
+ "phi = (nmax / nmin)**(1/(z-1))\n",
+ "import numpy as np\n",
+ "spindle_speeds = [1]*6 # initializing\n",
+ "print \"Spindle Speeds are :\" \n",
+ "for i in range(0,6):\n",
+ " spindle_speeds[i] = (phi**i)*nmin\n",
+ " print '%d\\t'%spindle_speeds[i],\n",
+ " \n",
+ "\n",
+ "cutter_dia = [1]*6 # initializing\n",
+ "for i in range(0,6):\n",
+ " cutter_dia[i] = (v/pi)/spindle_speeds[i]\n",
+ "y = [0,v/1e3]\n",
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, show, title, text, xlabel, ylabel\n",
+ "plot([0,cutter_dia[0]], y, [0,cutter_dia[1]], y, [0,cutter_dia[2]], y, [0,cutter_dia[3]], y, [0,cutter_dia[4]], y, [0,cutter_dia[5]], y)\n",
+ "title(\"cutting velocity Vs Cutter diameter\")\n",
+ "xlabel('Cutter Diameter(mm)')\n",
+ "ylabel('Cutting velocity(m/min)')\n",
+ "text(5,28,'%d'%spindle_speeds[5])\n",
+ "text(9,25,'%d'%spindle_speeds[4])\n",
+ "text(12,22,'%d'%spindle_speeds[3])\n",
+ "text(15,18,'%d'%spindle_speeds[2])\n",
+ "text(18,15,'%d'%spindle_speeds[1])\n",
+ "text(20,11,'%d'%spindle_speeds[0])\n",
+ "show()\n",
+ "# from graph\n",
+ "vmax1 = 36 # m/min\n",
+ "vmin1 = 24.5 # m/min\n",
+ "r1 = vmax1 - vmin1 # Range of cutting speed for 12 mm diameter in m/min\n",
+ "vmax2 = 36.5 # m/min.\n",
+ "vmin2 = 26 # m/min.\n",
+ "r2 = vmax2 - vmin2 # Range of cutting speed for 36 mm diameter in m/min\n",
+ "print \" Range of cutting speed for 12 mm diameter = %0.1f m/min.\\n Range of cutting speed for 36 mm diameter = %0.1f m/min.\"%(r1 , r2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Spindle Speeds are :\n",
+ "159\t227\t325\t466\t667\t954\t"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7fcd99dc3fd0>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Range of cutting speed for 12 mm diameter = 11.5 m/min.\n",
+ " Range of cutting speed for 36 mm diameter = 10.5 m/min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 22.2 : page 790"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import floor, ceil\n",
+ "m = 2.5 # module in mm\n",
+ "phi = 1.2 # common ratio\n",
+ "n = 150 # speed in rev/min. of driving shaft\n",
+ "n1 = 70 # speed in rev/min. of driven shaft\n",
+ "n2 = (phi)**1*n1 # speed in rev/min. of driven shaft\n",
+ "n3 = (phi)**2*n1 # speed in rev/min. of driven shaft\n",
+ "n4 = (phi)**3*n1 # speed in rev/min. of driven shaft\n",
+ "from sympy import solve, symbols\n",
+ "T1=symbols('T1')\n",
+ "t1=n1/n*T1\n",
+ "expr = t1+T1-80\n",
+ "T1=solve(expr,T1)[0]\n",
+ "t1=n1/n*T1\n",
+ "T2=symbols('T2')\n",
+ "t2=n2/n*T2\n",
+ "expr = t2+T2-80\n",
+ "T2=solve(expr, T2)[0]\n",
+ "t2=n2/n*T2\n",
+ "\n",
+ "T3=symbols('T3')\n",
+ "t3=n3/n*T3\n",
+ "expr=t3+T3-80\n",
+ "T3=solve(expr, T3)[0]\n",
+ "t3=n3/n*T3\n",
+ "T4=symbols('T4')\n",
+ "t4=n4/n*T4\n",
+ "expr=t4+T4-80\n",
+ "T4=solve(expr, T4)[0]\n",
+ "t4=n4/n*T4\n",
+ "t1 = floor(t1) # number of teeth on driving shaft\n",
+ "T1 = ceil(T1) # number of teeth on driven shaft\n",
+ "t2 = ceil(t2) # number of teeth on driving shaft\n",
+ "T2 = floor(T2) # number of teeth on driven shaft\n",
+ "t3 = floor(t3) # number of teeth on driving shaft\n",
+ "T3 = ceil(T3) # number of teeth on driven shaft\n",
+ "t4 = ceil(t4) # number of teeth on driving shaft\n",
+ "T4 = floor(T4) # number of teeth on driven shaft\n",
+ "# running speeds\n",
+ "n1 = n*t1/T1\n",
+ "n2 = n*t2/T2\n",
+ "n3 = n*t3/T3\n",
+ "n4 = n*t4/T4\n",
+ "print \"Number of teeth on driver and driven are :- \\n t1 = %d ,T1 = %d\\n t2 = %d ,T2 = %d \\n t3 = %d ,T3 = %d \\n t4 = %d ,T4 = %d \"%(t1,T1,t2,T2,t3,T3,t4,T4)\n",
+ "print \"The actual running speed of driven shaft will be : \\n n1 = %0.2f rev/min\\n n2 = %0.2f rev/min \\n n3 = %0.2f rev/min \\n n4 = %0.2f rev/min\"%(n1,n2,n3,n4)\n",
+ "# Answer of n3 is given wrong in book\n",
+ "# Answer vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of teeth on driver and driven are :- \n",
+ " t1 = 25 ,T1 = 55\n",
+ " t2 = 29 ,T2 = 51 \n",
+ " t3 = 32 ,T3 = 48 \n",
+ " t4 = 36 ,T4 = 44 \n",
+ "The actual running speed of driven shaft will be : \n",
+ " n1 = 68.18 rev/min\n",
+ " n2 = 85.29 rev/min \n",
+ " n3 = 100.00 rev/min \n",
+ " n4 = 122.73 rev/min\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 22.3 : page 791"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "z = 6 # number of steps\n",
+ "n1 = 180 # rev/min\n",
+ "n2 = 100 # rev/min\n",
+ "Rn = n1/n2 \n",
+ "phi = (Rn)**(1/(z-1)) # common ratio\n",
+ "n3 = phi*n2 # rev/min\n",
+ "n4 = (phi)**2*n2 # rev/min\n",
+ "n5 = (phi)**3*n2 # rev/min\n",
+ "n6 = (phi)**4*n2 # rev/min\n",
+ "n7 = 225 # speed of input shaft in rev/min\n",
+ "from sympy import symbols, solve\n",
+ "Ta=symbols('Ta')\n",
+ "tb=n7/n5*Ta\n",
+ "Ta=solve(tb+Ta-52, Ta)[0]\n",
+ "tb=n7/n5*Ta\n",
+ "tb = ceil(tb)\n",
+ "Tc=symbols('Tc')\n",
+ "td=n7/n6*Tc\n",
+ "Tc=solve(td+Tc-52, Tc)[0]\n",
+ "td=n7/n6*Tc\n",
+ "Tc = ceil(Tc)\n",
+ "Te=symbols('Te') \n",
+ "tf=n7/n1*Te\n",
+ "Te=solve(tf+Te-52, Te)[0]\n",
+ "tf=n7/n1*Te\n",
+ "tf = ceil(tf)\n",
+ "Th=symbols('Th')\n",
+ "tj=n2/n5*Th\n",
+ "Th=solve(tj+Th-46, Th)[0]\n",
+ "Th = ceil(Th)\n",
+ "tj=n2/n5*Th\n",
+ "tj = floor(tj)\n",
+ "Ti=symbols('Ti')\n",
+ "tg=n5/n5*Ti\n",
+ "Ti=solve(tg+Ti-46, Ti)[0]\n",
+ "tg=n5/n5*Ti\n",
+ "print \" Ta = %d Tb = %d \\n Tc = %d Td = %d \\n Te = %d tf = %d \\n Th = %d Tj = %d \\n Ti = %d Tg = %d\"%(Ta,tb,Tc,td,Te,tf,tj,Th,Ti,tg)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Ta = 20 Tb = 32 \n",
+ " Tc = 22 Td = 30 \n",
+ " Te = 23 tf = 29 \n",
+ " Th = 19 Tj = 28 \n",
+ " Ti = 23 Tg = 23\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 22.4 : page 793"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "v = 21 # cutting speed in rev/min.\n",
+ "z = 6\n",
+ "dmin = 5 # daimeter in mm\n",
+ "dmax = 20 # daimeter in mm\n",
+ "nmax = 1000*v/(pi*dmin) # spindle speed in rev/min.\n",
+ "nmin = 1000*v/(pi*dmax) # spindle speed in rev/min.\n",
+ "phi = (nmax/nmin)**(1/(z-1)) # common ratio\n",
+ "n1 = nmin # rev/min.\n",
+ "n2 = phi*n1 # rev/min.\n",
+ "n3 = (phi)**2*n1 # rev/min.\n",
+ "n4 = (phi)**3*n1 # rev/min.\n",
+ "n5 = (phi)**4*n1 # rev/min.\n",
+ "n6 = (phi)**5*n1 # rev/min.\n",
+ "print \" Common ratio = %0.2f \\n Spindle speeds are : %0.2f , %0.1f , %0.2f , %0.2f ,%0.2f and %0.1f rev/min.\"%(phi,n1,n2,n3,n4,n5,n6)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Common ratio = 1.32 \n",
+ " Spindle speeds are : 334.23 , 441.0 , 581.92 , 767.85 ,1013.18 and 1336.9 rev/min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 22.5 : page 793"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from fig. 22.18A\n",
+ "# Three gear ratios between input and intermediate shaft\n",
+ "nmax = 1400 # maximum speed in rev/min.\n",
+ "i1 = 1/1\n",
+ "i2 = 1/1.26\n",
+ "i3 = 1/(1.26)**2\n",
+ "# The two ratios between intermediate and output shaft\n",
+ "i4 = 1/1\n",
+ "i5 = 1/(1.26)**3\n",
+ "# number of teeth for input and intermediate shaft\n",
+ "t1 = 27/27\n",
+ "t2 = 24/30\n",
+ "t3 = 21/33\n",
+ "# number of teeth for output and intermediate shaft\n",
+ "t4 = 34/34\n",
+ "t5 = 20/48\n",
+ "# output speeds in rev./min\n",
+ "n1 = t3*t5*nmax\n",
+ "n2 = t2*t5*nmax\n",
+ "n3 = t1*t5*nmax\n",
+ "n4 = t3*t4*nmax\n",
+ "n5 = t2*t4*nmax\n",
+ "n6 = t1*t4*nmax\n",
+ "print \" Three gear ratios between input and intermediate shaft i1 = %d i2 = %0.2f i3 = %0.3f \\n The two ratios between intermediate and output shaft i4 = %d i5 = %0.3f \\n number of teeth for each pair between input and intermediate shaft t1 = 27/27 ,t2 = 24/30 , t3 = 21/33 \\n number of teeth for each pair between output and intermediate shaft = t4 = 34/34 ,t5 = 20/48 \\n Output speeds \\n n1 = %d rev/min , n2 = %d rev/min , n3 = %d rev/min \\n n4 = %d rev/min, n5 = %d rev/min , n6 = %d rev/min\"%(i1 , i2 , i3 , i4 , i5 , n1 , n2, n3,n4,n5,n6)\n",
+ "# Answer vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Three gear ratios between input and intermediate shaft i1 = 1 i2 = 0.79 i3 = 0.630 \n",
+ " The two ratios between intermediate and output shaft i4 = 1 i5 = 0.500 \n",
+ " number of teeth for each pair between input and intermediate shaft t1 = 27/27 ,t2 = 24/30 , t3 = 21/33 \n",
+ " number of teeth for each pair between output and intermediate shaft = t4 = 34/34 ,t5 = 20/48 \n",
+ " Output speeds \n",
+ " n1 = 371 rev/min , n2 = 466 rev/min , n3 = 583 rev/min \n",
+ " n4 = 890 rev/min, n5 = 1120 rev/min , n6 = 1400 rev/min\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter23.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter23.ipynb
new file mode 100644
index 00000000..9241adf2
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter23.ipynb
@@ -0,0 +1,393 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:c5985d3c2e3fc0309bf6ab59905fa2aa4218e760d878ddba8e4f1720de96a7c3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 23 : Production Planning & Control"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.1 : page 812"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "d1 = 90 # demand for first quarter\n",
+ "d2 = 100 # demand for second quarter\n",
+ "d3 = 80 # demand for third quarter\n",
+ "sa = (d1+d2+d3)/3 # simple average\n",
+ "print \"Forecast = %d\"%(sa)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Forecast = 90\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.2 : page 812"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "d1 = 300 # demand for july\n",
+ "d2 = 350 # demand for august\n",
+ "d3 = 400 # demand for september\n",
+ "d4 = 500 # demand for october\n",
+ "d5 = 600 # demand for november\n",
+ "d6 = 700 # demand for december\n",
+ "# assuming n = 3 , where n is number of time period\n",
+ "forecast = (d6+d5+d4)/3 # forecast\n",
+ "print \"Forecast = %d\"%(forecast)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Forecast = 600\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.3 : page 813"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "d1 = 500 # demand for october\n",
+ "d2 = 600 # demand for november\n",
+ "d3 = 700 # demand for december\n",
+ "w1 = 0.25 # relative weight with december\n",
+ "w2 = 0.25 # relative weight with november\n",
+ "w3 = 0.5 # relative weight with october\n",
+ "f = w1*d1 + w2*d2 + w3*d3 # forecast\n",
+ "print \"Forecast by weighted moving average = %d\"%(f)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Forecast by weighted moving average = 625\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.4 : page 814"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import ceil\n",
+ "alpha = 0.7 # smoothing coefficient\n",
+ "d1 = 250 # demand for november\n",
+ "d2 = 300 # demand for december\n",
+ "f1 = 200 # forecast for november\n",
+ "f2 = alpha*d1 + (1-alpha)*f1 # forecast for december\n",
+ "f3 = alpha*d2 + (1-alpha)*f2 # forecast for january\n",
+ "f3 = ceil(f3)\n",
+ "print \"Forecast for january = %d units\"%(f3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Forecast for january = 281 units\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.5 : page 817"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "from math import sqrt\n",
+ "s = 600 # set up cost per lot in Rs\n",
+ "c = 6 # unit cost of item in Rs\n",
+ "a = 100000 # annual demand for item\n",
+ "i = 25 # annual carrying charges of average inventory\n",
+ "i = 25/100 \n",
+ "k = c*i # carrying cost factor in unit/year\n",
+ "n = sqrt(2*s*a/k) # most economic lot size\n",
+ "tc = a*c + s*a/n + k*n/2 # total cost in Rs\n",
+ "print \"Total cost = Rs %0.2f\"%(tc)\n",
+ "# 'Answers vary due to round off error'"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total cost = Rs 613416.41\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.6 : page 835"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "a = 8000 # annual requirement of parts\n",
+ "c = 60 # unit cost of part in Rs\n",
+ "r = 150 # ordering cost per lot in Rs\n",
+ "i = 30 # annual carrying charges of average inventory\n",
+ "i = 30/100 \n",
+ "k = i*c # carrying cost per unit per year\n",
+ "n = sqrt(2*r*a/k) # most economical order quantity\n",
+ "print \"Most economical ordering quantity = %d units\"%(n)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Most economical ordering quantity = 365 units\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.7 : page 841"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "a = 12000 # annual requirement\n",
+ "c = 5 # unit cost of part\n",
+ "s = 60 # set up cost per lot\n",
+ "p = 18750 # production rate per year\n",
+ "i = 20 # inventory carrying cost\n",
+ "i = 20/100 \n",
+ "k = i*c # carrying cost per unit per year\n",
+ "n = sqrt(2*s/(1/a-1/p)*k) # Most economic lot size\n",
+ "print \"Most economic lot size = %d parts\"%(n)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Most economic lot size = 2000 parts\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.8 : page 841"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "a = 15625 # annual requirement of parts\n",
+ "c = 12 # unit cost of part in Rs\n",
+ "r = 60 # ordering cost per lot in Rs\n",
+ "k = 1.2 # inventory carrying cost per unit \n",
+ "n = sqrt(2*r*a/k) # economical order quantity\n",
+ "oc = r*a/n # ordering cost in Rs\n",
+ "cc = k*n/2 # carrying cost in Rs\n",
+ "tc = oc + cc # total inventory cost in Rs\n",
+ "print \" Economical order quantity = %d units\\n order cost = Rs %d\\n carrying cost = Rs %d\\n Total inventory cost = Rs %d\"%(n , oc , cc , tc)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Economical order quantity = 1250 units\n",
+ " order cost = Rs 750\n",
+ " carrying cost = Rs 750\n",
+ " Total inventory cost = Rs 1500\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.9 : page 842"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# case a\n",
+ "a = 50 # annual requirement of parts in tonnes\n",
+ "c = 500 # unit cost of part in Rs\n",
+ "r = 100 # ordering cost per order in Rs\n",
+ "i = 20 # inventory carrying cost \n",
+ "i = i/100\n",
+ "d = 2 # discount of purchase cost in percent\n",
+ "k = i*c # inventory carrying cost per unit \n",
+ "n1 = sqrt(2*r*a/k) # economical order quantity\n",
+ "oc1 = r*a/n1 # ordering cost in Rs\n",
+ "cc1 = k*n1/2 # carrying cost in Rs\n",
+ "tc1 = oc1 + cc1 # total inventory cost in Rs\n",
+ "# case b\n",
+ "n2 = 25 # order per lot\n",
+ "oc2 = r*a/n2 # ordering cost in Rs\n",
+ "cc2 = k*n2/2 # carrying cost in Rs\n",
+ "tc2 = oc2 + cc2 # total inventory cost in Rs\n",
+ "i = tc2-tc1 # increase in cost in Rs\n",
+ "d_o = d*c*a/100 # discount offered\n",
+ "print \" Increase in inventory cost = Rs %d\\n Discount offered = Rs%d\"%(i,d_o)\n",
+ "print \" offer is worth accepting\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Increase in inventory cost = Rs 450\n",
+ " Discount offered = Rs500\n",
+ " offer is worth accepting\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 23.10 : page 843"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sqrt\n",
+ "a = 1000000 # annual requirement of parts\n",
+ "r = 32 # ordering cost per lot in Rs\n",
+ "k = 4 # inventory carrying cost per unit \n",
+ "d1 = 250 # number of working days\n",
+ "d2 = 2 # days for safety stock\n",
+ "d3 = 4 # lead time in days\n",
+ "eoq = sqrt(2*r*a/k) # economical order quantity\n",
+ "oc = r*a/eoq # ordering cost in Rs\n",
+ "cc = k*eoq/2 # carrying cost in Rs\n",
+ "tc = oc + cc # total inventory cost in Rs\n",
+ "ss = a*d2/d1 # safety stock\n",
+ "ro_p = ss+eoq*d3 # reorder point\n",
+ "print \" Economic order qunantity = %d components\\n Re-order point = %d components\"%(eoq ,ro_p)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Economic order qunantity = 4000 components\n",
+ " Re-order point = 24000 components\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter26.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter26.ipynb
new file mode 100644
index 00000000..53a9b185
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter26.ipynb
@@ -0,0 +1,61 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:d15eaabae5c16008290b8d4157cd9d9005929cebb25c80eb1f530cce514c355d"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 26 : Plant Layout"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 26.1 : Page 901"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "N = 100000 # annual output of parts\n",
+ "s = 2 # expected scrap\n",
+ "t = 105 # estimated time per part in s\n",
+ "ita = 80 # production efficiency of machine\n",
+ "a = 2300 # number of working hours\n",
+ "output = (3600*ita)/(t*100) # parts required per hour\n",
+ "pr = N*(100+s)/(a*100) # output from one machine per hour\n",
+ "mr = pr/output # machines required\n",
+ "print \"Number of machines required = %0.2f\"%mr\n",
+ "print \"If machine is to be used exclusively for part considered two machines required\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of machines required = 1.62\n",
+ "If machine is to be used exclusively for part considered two machines required\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter4.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter4.ipynb
new file mode 100644
index 00000000..7fd3e894
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter4.ipynb
@@ -0,0 +1,869 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:623428c7bf9c66925a22a6d261e29dd9f82f6a7d55fe7becff2ce98dd72db346"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4 : Cost Estimating"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.1 : page 206"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "d_m = 5500 # cost of direct material in Rs\n",
+ "d_l = 3000 # manufacturing wages in Rs\n",
+ "# factory overhead is 100% 0f manufacturing wages\n",
+ "f_o = (100*d_l)/100 # factory overheads in Rs\n",
+ "FC = d_m + d_l + f_o # factory cost in Rs\n",
+ "nm_o = 15*FC/100 # non-manufacturing overheads in Rs\n",
+ "tc = FC+nm_o # total cost in Rs\n",
+ "p = 12*tc/100 # profit in Rs\n",
+ "sp = tc+p # selling price in Rs\n",
+ "print \" Total cost = Rs %d\\n Selling price = Rs %d\"%(tc,sp)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Total cost = Rs 13225\n",
+ " Selling price = Rs 14812\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.2 : page 207"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# given\n",
+ "OS_RM = 20000 # opening stock of raw materials in Rs\n",
+ "CS_RM = 30000 # closing stock of raw materials in Rs\n",
+ "TP_RM = 170000 # total purchase in year in Rs\n",
+ "OS_FG = 10000 # opening stock of finished goods in Rs\n",
+ "CS_FG = 15000 # closing stock of finished goods in Rs\n",
+ "sales = 489500 # sales of finished goods in Rs\n",
+ "D_W = 120000 # direct wages in Rs\n",
+ "F_E1 = 120000 # factory expenses in Rs\n",
+ "NM_E = 50000 # non-manufacturing expenses in Rs\n",
+ "DMC = OS_RM + TP_RM - CS_RM # direct material cost\n",
+ "FC = DMC + D_W + F_E1 # factory cost\n",
+ "TC = FC + NM_E # total cost\n",
+ "FG_S = OS_FG + TC - CS_FG # cost of finished goods sold in Rs\n",
+ "P = sales - FG_S # profit in Rs\n",
+ "F_E2 = (F_E1)/D_W*100 # factory expenses in percent\n",
+ "NM_C = (NM_E)/FC*100 # non-manufacturing expenses to factory cost\n",
+ "P_C = (P/FG_S)*100 # profit to cost of sales\n",
+ "dm = 20000 # direct material in Rs\n",
+ "dw = 30000 # direct wages in Rs\n",
+ "fe = dw # factory expenses\n",
+ "fc = dm+dw+fe # factory cost in Rs\n",
+ "nme = NM_C*fc/100 # non-manufacturing expenses in Rs\n",
+ "tc = fc+nme # total cost in Rs\n",
+ "p = (P_C*tc)/100 # profit in Rs\n",
+ "sp = tc+p # selling price in Rs\n",
+ "print \"Selling price = Rs %d\"%(sp) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Selling price = Rs 99000\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.3 : page 208"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import pi\n",
+ "d = 38 # diameter of bar in mm\n",
+ "l = 25 # length of bar in mm\n",
+ "p = 8.6 # density gm/cm**3\n",
+ "g = 9.81 # acceleration due to gravity in m/s**2\n",
+ "w = (pi*d**2*l*p*g)/(4*10**6) # weight of material in N\n",
+ "mc = w*1.625 # material cost in Rs\n",
+ "lc = (2*90)/60 # labour cost in Rs\n",
+ "fo = 0.5*lc # factory overheads in Rs\n",
+ "fc = mc + lc + fo # factory cost in Rs\n",
+ "print \"factory cost = Rs %0.2f \"%fc\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "factory cost = Rs 8.39 \n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.4 : page 208"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "sp = 65 # selling price in Rs\n",
+ "profit = 0.2*sp # profit in Rs\n",
+ "tc = sp - profit # total cost in Rs \n",
+ "P = (sp - profit)/1.4 # production cost in Rs\n",
+ "DM = 15 # cost of direct material in Rs\n",
+ "W = (P - DM)/ 1.4 # direct labour cost in Rs\n",
+ "tt = W/2 # time taken in hours\n",
+ "print \"Time taken = %0.3f Hours\"%(tt )\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time taken = 7.908 Hours\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.5 : page 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "mp = 6000 # market price of machine in Rs\n",
+ "d = 0.2*mp # discount in Rs\n",
+ "sp = mp - d # selling price of factory in Rs\n",
+ "mc = 400 # material cost in Rs\n",
+ "lc = 1600 # labour cost in Rs\n",
+ "fo = 800 # factory overheads in Rs\n",
+ "F = mc + lc + fo # factory cost in Rs\n",
+ "se = 0.5*F # selling expenses in Rs\n",
+ "profit = sp - (F + se ) # Rs\n",
+ "print \"profit = Rs %d\"%(profit)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "profit = Rs 600\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.6 : page 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sqrt\n",
+ "a = 1500 # requirements of components\n",
+ "s = 30 # cost of each set up in Rs\n",
+ "k = 0.2 # charge factor\n",
+ "c = 5 # cost of each part in Rs\n",
+ "N = 5*sqrt(a*s)/(k*c) # economic lot size\n",
+ "print \"Economic lot size = %d pieces\"%(N)\n",
+ "S = (N*s)/a # time for each set up in hours\n",
+ "print \"Time for each set up = %0.2f hours\"%(S )\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Economic lot size = 1060 pieces\n",
+ "Time for each set up = 21.21 hours\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.7 : page 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Tc = 2 # time taken by cutter per cycle in minutes\n",
+ "Tk = 10 # time taken to change cutter in minutes\n",
+ "T = 240 # tool life in minutes\n",
+ "t = (Tc*Tk)/T # time to change the cutter in min.\n",
+ "print \"Unit time to change the cutter = %0.3f min\"%(t )\n",
+ "# Error in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Unit time to change the cutter = 0.083 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.8 : page 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Tk = 360 # time taken by tool to cut before sharpening in min.\n",
+ "Tc = 20 # time taken to change the tool in min.\n",
+ "T = 4320 # time taken before it is discarded in min.\n",
+ "t = (Tc*Tk)/T # tool change time per cycle in min.\n",
+ "print \"Unit tool change time per cycle = %0.2f min\"%(t )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Unit tool change time per cycle = 1.67 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.9 : page 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Tc = 10 # time taken to check hole in secs\n",
+ "F = 2 # frequency of checking dimension\n",
+ "tc = Tc*F # time taken to check one piece in secs\n",
+ "N = 200 # number of pieces\n",
+ "Tc = tc*(N + 1) # Total time in sec\n",
+ "print \"Total time taken to check dimensions = %d min\"%(Tc/60)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total time taken to check dimensions = 67 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.10 : page 209"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "forgings = 40\n",
+ "setup = 4 \n",
+ "Tc = 12 # machining time in min. per forging\n",
+ "nmt = 21 # non-machining in min. per forging\n",
+ "st = 45 # set up time per set up\n",
+ "ts = 5 # total sharpening in min. per forging\n",
+ "f = 20 # fatigue in percent\n",
+ "f = f/100\n",
+ "pn = 5 # personal needs in percent\n",
+ "pn = pn/100\n",
+ "Tk = 10 # tool chanhe time in min.\n",
+ "T = 8 # tool life in hours\n",
+ "ct = 15 # checking time with 5 checks in 15 secs\n",
+ "R = 1.4 # performance factor\n",
+ "dlc = 5 # direct labour cost in Rs per hour\n",
+ "tt = Tc+nmt # machining and non-machining time in min.\n",
+ "ft = f*tt # fatigue time in min.\n",
+ "pnt = pn*tt # personal needs in min.\n",
+ "t = (Tc*Tk)/(T*60) # total sharpening time in min. per forging\n",
+ "mct = (ts*ct)/60 # measuring and checking time in min.per forging\n",
+ "su = Tc + nmt+ pnt + ft + t + mct # sum of times in min.\n",
+ "tf = su*forgings # time for 40 forgings in min.\n",
+ "tst = st*setup # total set up time in min.\n",
+ "Te = tf+tst # total estimated time in min.\n",
+ "Ta = Te*R # total actual time in min.\n",
+ "lc = (Ta*dlc)/60 # direct labour cost in Rs\n",
+ "print \"Direct labour cost = Rs %0.1f\"%(lc)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Direct labour cost = Rs 220.5\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.11 : page 216"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from figure 4.4\n",
+ "v = 100 # cutting speed in m/min\n",
+ "D = 50 # mm\n",
+ "l1 = 76 # mm\n",
+ "f = 7.5 # feed in mm/rev.\n",
+ "# Case 1 , time to turn 38 mm diameter by 76 mm length of cut\n",
+ "N1 = (1000*v)/(pi*D)# r.p.m\n",
+ "tm1 = l1*10/(f*N1) # min.\n",
+ "# Case 2 , time to turn 25 mm by 38 mm length\n",
+ "N2 = (1000*v)/(pi*38) # r.p.m\n",
+ "l2 = 38 # mm\n",
+ "tm2 = l2*10/(f*N2) # min\n",
+ "tt = tm1 + tm2 # total time in min\n",
+ "print \"Total time = %0.2f min.\"%(tt)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total time = 0.22 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.12 : page 218"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from figure 4.5\n",
+ "v = 60 # cutting speed m/min.\n",
+ "f = 0.375 # feed in mm/rev\n",
+ "D = 38 # mm\n",
+ "N = (1000*60)/(pi*D) # rev/min\n",
+ "l = 32 # mm\n",
+ "Tm = l/(f*N) # min\n",
+ "print \"Time to turn external relief = %0.2f min.\"%(Tm )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time to turn external relief = 0.17 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.13 : page 220"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from figure 4.11\n",
+ "l = 7.5 # cm\n",
+ "Dave = (25+ 10)/2 # average diameter in cm\n",
+ "v = 27 # cutting speed in m/min\n",
+ "f = 0.8 # feed in mm/rev\n",
+ "N = (1000*v)/(pi*Dave*10) # r.p.m.\n",
+ "tm = l*10/(f*N) # min.\n",
+ "print \"The machining time to face on lathe = %0.2f min.\"%(tm)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The machining time to face on lathe = 1.91 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.14 : page 221"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "D = 12.7 # diameter in mm\n",
+ "d = 50 # depth in mm\n",
+ "v = 75 # cutting speed in m/min.\n",
+ "f = 0.175 # feed in mm/rev\n",
+ "l = d + 2*0.29*D # lemgth of drill travel in mm\n",
+ "N = (1000*v)/(pi*D) # r.p.m.\n",
+ "tm = l/(f*N) # min\n",
+ "print \"Time taken to drill hole = %0.3f min.\"%(tm)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time taken to drill hole = 0.174 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.15 : page 223"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "k = 1/4 # return time to cutting ratio\n",
+ "l = 900 + 2*75 # length of stroke in mm\n",
+ "v = 6 # cutting stroke in m/min\n",
+ "f = 2 # feed mm/stroke\n",
+ "w = 600 # breadth in mm\n",
+ "N = (v*1000)/(l*1.25) # r.p.m\n",
+ "N = round(N)\n",
+ "time = w/(f*N) # min\n",
+ "print \"Time required for shaper to complete one cut = %d min\"%(time )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time required for shaper to complete one cut = 60 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.16 : page 223"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "l = 70 # length of stroke in cm\n",
+ "cs = 11 # cutting speed in m/min\n",
+ "rs = 24 # return speed in m/min\n",
+ "tm = (l/(100*cs)) + (l/(100*rs)) # min\n",
+ "print \"Time taken to broach a four spline brass = %0.4f min\"%(tm)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time taken to broach a four spline brass = 0.0928 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.17 : page 228"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "v = 50 # cutting speed in m/min\n",
+ "D = 150 # diameter of face cutter in mm\n",
+ "N = (1000*v)/(pi*D) # r.p.m.\n",
+ "f = 0.25 # feed mm/tooth\n",
+ "n = 10 #number of tooth\n",
+ "tf = N*f*n # table feed in mm/min\n",
+ "l = 200 # length of work piece in mm\n",
+ "d = 25 # depth of slot in mm\n",
+ "tot = sqrt(D*d - d**2) # total overtravel in mm\n",
+ "tct = l + tot # total cutter travel in mm\n",
+ "time = tct/tf # min.\n",
+ "print \" Table feed = %d mm/min. \\n Total cutter travel = %0.1f mm\\n Time required to machine the slot = %0.3f min.\"%(tf , tct ,time )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Table feed = 265 mm/min. \n",
+ " Total cutter travel = 255.9 mm\n",
+ " Time required to machine the slot = 0.965 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.18 : page 228"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "D = 63.5 # diameter of plain milling cutter in mm\n",
+ "w = 30 # width of block in mm\n",
+ "l = 180 # length of block in mm\n",
+ "f = 0.125 # feed in mm/tooth\n",
+ "n = 6 # no. of teeth\n",
+ "N = 1500 # spindle speed in r.p.m\n",
+ "tot = (D - sqrt(D**2 - w**2))/2 # total over travel in mm\n",
+ "tct = l + tot # total cutter travel in mm\n",
+ "Tm = tct/(f*n*N) # cutting time in min\n",
+ "print \" Cutting time = %0.3f min.\"%(Tm)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Cutting time = 0.163 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.19 : page 229"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# from figure 4.17\n",
+ "d = 19 # depth of cut in mm\n",
+ "D1 = 5 # diameter of round bar in cm\n",
+ "v = 50 # cutting speed in m/min\n",
+ "n = 8 # number of teeth\n",
+ "f = 0.2 # feed in mm/tooth\n",
+ "l = 2*sqrt(d*D1*10 - d**2) # length of chord in mm\n",
+ "D2 = 10 # daimeter of cutter in cm\n",
+ "overrun = sqrt(D2*10*d+D1*10*d-d**2) - sqrt(D1*10*d-d**2)# mm\n",
+ "tt = l + overrun # table travel in mm\n",
+ "N = (1000*v)/(pi*D2*10) # r.p.m\n",
+ "tm = tt/(f*n*N) # time in min.\n",
+ "print \"The milling time = %0.2f min.\"%(tm )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The milling time = 0.29 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.20 : page 230"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "w = 50 # width of grinding wheep in mm\n",
+ "f = w/2 # feed in mm\n",
+ "t = 0.25 # toatal stock in mm\n",
+ "d = 0.025 # depth of cut in mm\n",
+ "n = t/d # number of cuts \n",
+ "v = 15 # cutting speed in m/min\n",
+ "D = 38 # diameter in mm\n",
+ "N = (1000*v)/(pi*D) # r.p.m.\n",
+ "l = 200 # length of part in mm\n",
+ "Tm = (l*10)/(f*N) # min.\n",
+ "print \"Time required to grind the shaft = %0.2f min.\"%(Tm)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time required to grind the shaft = 0.64 min.\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.21 : page 231"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "v = 6 # cutting speed in m/min\n",
+ "n = 5 # number of cuts\n",
+ "D = 44 # diameter in mm\n",
+ "N = (1000*v)/(pi*D) # r.p.m\n",
+ "f = 0.5 # feed in cm\n",
+ "l = 8.9 # length of cut in cm\n",
+ "Tm = (l*n)/(f*N) # time in min\n",
+ "print \"Time to cut the threads = %0.2f min\"%(Tm)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time to cut the threads = 2.05 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 4.22 : page 232"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "vt = 40 # cutting speed for turning in m/min\n",
+ "vs = 8 # cutting speed for cutting and knurling in m/min\n",
+ "ft = 0.4 # feed for turning in mm/rev.\n",
+ "ff = 0.2 # feed for forming in mm/rev\n",
+ "d1 = 25 # diameter in mm\n",
+ "l1 = 50 # mm\n",
+ "N1 = 1000*vt/(pi*d1) # spindle speed in rev./min.\n",
+ "time1 = l1/(ft*N1) # min.\n",
+ "tt = 2*time1 # total time in min.\n",
+ "d2 = 15 # mm\n",
+ "N2 = 1000*vt/(pi*d2)# rev/min.\n",
+ "l2 = 30 # mm\n",
+ "time2 = l2/(ft*N2) # min.\n",
+ "eft = 0.15 # end forming time in min.\n",
+ "d3 = 10 # mm\n",
+ "N3 = 1000*vs/(pi*d3) # rev./min.\n",
+ "l3 = 15 # mm\n",
+ "f = 1.5 # feed in min.\n",
+ "time3 = l3/(f*N3) # min.\n",
+ "N4 = 1000*vs/(pi*d1) # rev./min.\n",
+ "l4 = 10 # mm\n",
+ "time4 = l4/(ft*N4) # min.\n",
+ "time5 = 0.15 # time for chamfering in min.\n",
+ "Dave = d1/2 # mm\n",
+ "N5 = 1000*vt/(pi*Dave) # r.p.m.\n",
+ "time6 = Dave/(N5*ff) # min,\n",
+ "tmt = tt+time2+time3+time4+time5+time6+eft # total machining time in min.\n",
+ "t = 0.05 # min.\n",
+ "ht = time5+6*time6+4*t+3*t # handling time in min.\n",
+ "tot = ht+tmt # total handling time in min.\n",
+ "ct = 15*tot/100 # contingency in min.\n",
+ "tct = tot+ct # total cycle time in min.\n",
+ "st = 60 # set up time for turret lathe\n",
+ "p = 100 # total pieces\n",
+ "stp = st/p # set up time per piece in min.\n",
+ "tpt = tct+stp # Total production timr per piece in min.\n",
+ "print \"Total production timr per piece = %0.2f min\"%(tpt)\n",
+ "#Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total production timr per piece = 3.01 min\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter5.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter5.ipynb
new file mode 100644
index 00000000..59ab8ead
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter5.ipynb
@@ -0,0 +1,1736 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:63156b16328291704e9d5c32aedf48f7438f0e2d19eee38cfe9fef58dc7d317c"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5 : Economics of Tooling"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.1 : page 238"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "Co = 250000 # original value of machine tool in Rs\n",
+ "Cs = 25000 # salvage value in Rs\n",
+ "n = 20 #useful life in years\n",
+ "d = (Co-Cs)/n # depreciation per year in Rs\n",
+ "v1 = Co - 10*d # value of machine tool at the end of 10 years in Rs\n",
+ "s = Co - Cs # sum at the end of useful life in Rs\n",
+ "i = 8/100 # annual interst rate \n",
+ "D = (s*i)/((1 + i)**n-1) # annual deposit\n",
+ "a = D*((1+i)**10-1)/i #amount at the end of 10 years in Rs\n",
+ "v2 = Co - a # value at the end of 10 years\n",
+ "print \"Value of machine at the end of 10 years through straight line depreciation method = Rs %d\"%(v1)\n",
+ "print \"Value of machine at the end of 10 years through sinking fund method = Rs %d\"%(v2)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Value of machine at the end of 10 years through straight line depreciation method = Rs 137500\n",
+ "Value of machine at the end of 10 years through sinking fund method = Rs 178773\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.2 : page 249"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "p = 200000 # present worth in Rs\n",
+ "i = 10 # annual interest rate\n",
+ "i = 10/100\n",
+ "n = 20 # number of years\n",
+ "a1 = (p*i)/((1+i)**n-1) # annual investment using sinking fund factor in Rs\n",
+ "a2 = (p*i*(i+1)**n)/((i+1)**n-1)# annual investment using capital recovery factor in Rs\n",
+ "print \"Annual investment using sinking fund factor = Rs %d /- per year\"%(a1)\n",
+ "print \"Annual investment using capital recovery factor = Rs %d /- per year\"%(a2)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Annual investment using sinking fund factor = Rs 3491 /- per year\n",
+ "Annual investment using capital recovery factor = Rs 23491 /- per year\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.3 : page 252"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# cash in flows\n",
+ "a = 21240 # annual revenue in Rs\n",
+ "i = 10 # annual interest rate\n",
+ "i = 10/100\n",
+ "n = 5 # perod in years\n",
+ "f1 = 8000 # salvage value in Rs\n",
+ "p1 = (a*((i+1)**n-1))/(i*(i+1)**5)# annual revenue in Rs\n",
+ "p2 = f1/(i+1)**5 #present worth in Rs\n",
+ "t1 = p1 + p2 # total cash in flows in Rs\n",
+ "# cash out flows\n",
+ "I = 40000 # investment in Rs\n",
+ "f2 = 12000 # annual payment in Rs\n",
+ "p3 = (f2*((1+i)**5-1))/(i*(1+i)**5) # annual payments in Rs\n",
+ "t2 = I + p3 # total cash out flows in Rs\n",
+ "print \"Total cash in flows = Rs %0.2f\\nTotal cash out flows = Rs %0.2f\"%(t1 ,t2) \n",
+ "print \"Since cash out flows are more than cash in flows therefore project is not economical\"\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total cash in flows = Rs 85483.68\n",
+ "Total cash out flows = Rs 85489.44\n",
+ "Since cash out flows are more than cash in flows therefore project is not economical\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.4 : page 252"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Machine A\n",
+ "f1 = 2000 # annual benefit from better production quality in Rs\n",
+ "i = 10 # interest rate\n",
+ "i = 10/100\n",
+ "f2 = 12000 # salvage value in Rs\n",
+ "f3 = 8000 # operating and maintenance cost in Rs\n",
+ "I1 = 100000 # initial cost in Rs\n",
+ "n = 5 # years\n",
+ "p1 = (f1*((1+i)**n-1))/(i*(i+1)**n)\n",
+ "p2 = f2/(1+i)**n\n",
+ "c1 = p1 + p2 # cash in flows in Rs\n",
+ "p3 = (f3*((1+i)**n-1))/(i*(i+1)**n)\n",
+ "c2 = I1 + p3 # cash out flows in Rs\n",
+ "Pa = c1 - c2 # net P.W.in Rs\n",
+ "#Machine B\n",
+ "I2 = 60000 # initial cost in Rs\n",
+ "f4 = 16000 # operating and maintenance cost in Rs\n",
+ "f5 = 14000 # reconditioning at the end of third year in Rs\n",
+ "p4 = (16000*((1+i)**5-1))/(i*(1+i)**5)\n",
+ "p5 = f5/(1+i)**5\n",
+ "Pb = -I2 - p4 - p5 # net P.W.in Rs\n",
+ "print \" Net P.W.of Machine A= Rs %0.2f\\n Net P.W.of Machine B = Rs%0.2f\"%(Pa ,Pb)\n",
+ "print \" It is clear that Net P.W of Machine A is less nagative as compared to that of Machine B , therefore Machine A is economcal.\"\n",
+ "# Answers vary due to round off erro"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Net P.W.of Machine A= Rs -115293.66\n",
+ " Net P.W.of Machine B = Rs-129345.49\n",
+ " It is clear that Net P.W of Machine A is less nagative as compared to that of Machine B , therefore Machine A is economcal.\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.5 : page 254"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#machine A\n",
+ "c1 = 20000 # manual cost in Rs\n",
+ "c2 = 40000 # operating cost in Rs\n",
+ "n1 = 2 # machine life in years\n",
+ "i = 10 # interest rate \n",
+ "i = 10/100\n",
+ "crf1 = ((1+i)**n1-1)/(i*(i+1)**n1) # capital recovery factor\n",
+ "pw1 = c1+c2*crf1 # present worth in Rs\n",
+ "# machine B\n",
+ "c3 = 50000 # manual cost in Rs\n",
+ "c4 = 30000 # operating cost in Rs\n",
+ "n2 = 4 # machine life in years\n",
+ "i = 10/100 # interest rate \n",
+ "crf2 = ((1+i)**n2-1)/(i*(i+1)**n2) # capital recovery factor\n",
+ "pw2 = c3+c4*crf2 # present worth in Rs for 4 years\n",
+ "pw3 = (pw2*crf1)/crf2 # present worth in Rs for 2 years\n",
+ "print \" P.W. of expenses for A = Rs %d\\n P.W. of expenses for B = Rs %0.2f\" %(pw1,pw3)\n",
+ "print \" As the expenses of machine B are less , so this is economical\"\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " P.W. of expenses for A = Rs 89421\n",
+ " P.W. of expenses for B = Rs 79441.68\n",
+ " As the expenses of machine B are less , so this is economical\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.6 : page 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Machine A\n",
+ "i = 8 # # interest rate\n",
+ "i = i/100 # interest rate\n",
+ "n1 = 10 # economic life in years\n",
+ "CRF1 = i*(1+0.08)**n1/((1+i)**n1-1) # capital recovery factor\n",
+ "p1 = 46000 # first cost in Rs\n",
+ "s1 = 8000 # salvage value in Rs\n",
+ "o1 = 10000 # operating charges in Rs\n",
+ "AC1 = (p1-s1)*CRF1 + s1*i + o1 # annual cost in Rs\n",
+ "#Machine B\n",
+ "n2 = 15 # economic life in years\n",
+ "CRF2 = i*(1+0.08)**n2/((1+i)**n2-1) # capital recovery factor\n",
+ "p2 = 60000 # first cost in Rs\n",
+ "s2 = 10000 # salvage value in Rs\n",
+ "o2 = 9200 # operating charges in Rs\n",
+ "AC2 = (p2-s2)*CRF2 + s2*i + o2 # annual cost in Rs\n",
+ "print \" Annual cost of machine A = Rs %0.2f\\n Annual cost of Machine B = Rs %0.2f\" %(AC1, AC2 )\n",
+ "print \" Machine B will be economical\"\n",
+ "# Error in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Annual cost of machine A = Rs 16303.12\n",
+ " Annual cost of Machine B = Rs 15841.48\n",
+ " Machine B will be economical\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.7 : page 257"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "a = 100000 # Ej(p/f,e%,j) in Rs\n",
+ "n = 5 # life in years\n",
+ "e = 20 # M.A.R.R.\n",
+ "e = e/100 # M.A.R.R.\n",
+ "i = e\n",
+ "A = 32000 # savings in Rs\n",
+ "s = 20000 # salvage value in Rs\n",
+ "b = ((A*(((i+1)**n)-1)/i)+s)/a # (F/p,I,5)\n",
+ "i2 = (b)**(1/n)-1 # internal rate of return\n",
+ "print \" ERR = %0.4f\\n Internal rate of return = %0.2f percent\"%(b , i2*100)\n",
+ "print \" Since Internal rate of return is > M.A.R.R , therefore project is feasible\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " ERR = 2.5813\n",
+ " Internal rate of return = 20.88 percent\n",
+ " Since Internal rate of return is > M.A.R.R , therefore project is feasible\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.9 : page 259"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "e = 20 # M,A.R.R.\n",
+ "i = e # interest rste\n",
+ "i = i/100 \n",
+ "n = 5 # life in years\n",
+ "s = 32000 # annual net savings in Rs\n",
+ "p = 100000 # present worth in Rs\n",
+ "S = 20000 # salvage value in Rs\n",
+ "a = (p-S)*(i/((1+i)**n-1)) # (p-s)(A/F,e%,n)\n",
+ "E = (s-a)/p # E.R.R.R\n",
+ "print \"ERRR = %0.2f percent\"%(E*100)\n",
+ "print \"Since E.R.R.R is > M.A.R.R. therefore project is feasible.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "ERRR = 21.25 percent\n",
+ "Since E.R.R.R is > M.A.R.R. therefore project is feasible.\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.10 : page 259"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# machine A\n",
+ "r_e1 = 9600 #cash flow in Rs\n",
+ "p1 = 46000 # intial cost in Rs\n",
+ "s = 0 # salvage value\n",
+ "e = 8 # M.A.R.R\n",
+ "e = e/100\n",
+ "i = 8 # investment rate\n",
+ "i = i/100\n",
+ "n = 6 # life in years\n",
+ "x = i/((1+i)**n-1) \n",
+ "ERRR1 = (r_e1 - (p1-s)*x)/p1\n",
+ "#machine B\n",
+ "r_e2 = 7200 #cash flow in Rs\n",
+ "p2 = 32000 # intial cost in Rs \n",
+ "ERRR2 = (r_e2 - (p2-s)*x)/p2\n",
+ "print \" ERRR1 = %0.2f percent \\n ERRR2 = %0.2f percent\"%(ERRR1*100 ,ERRR2*100)\n",
+ "print \" Only machine B is accepteble\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " ERRR1 = 7.24 percent \n",
+ " ERRR2 = 8.87 percent\n",
+ " Only machine B is accepteble\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.11 : page 261"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "pmv = 15000 # present market value in Rs\n",
+ "ss = 6000 # sum needed to make it serviceable in Rs\n",
+ "ic = ss + pmv # investment cost in Rs\n",
+ "pbv = 30000 # present book value in Rs\n",
+ "sv = 15000 # salvage value in Rs\n",
+ "ui = pbv - sv # unamortized investment in Rs\n",
+ "print \" Investment cost = Rs %d\\n Unamortized investment = Rs %d\"%(ic , ui)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Investment cost = Rs 21000\n",
+ " Unamortized investment = Rs 15000\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.13 : page 262"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Existing machine\n",
+ "pmp = 100000 # present market price in Rs\n",
+ "io = 50000 # immediate overhauling in Rs\n",
+ "asl = 5 # additional service life in years\n",
+ "aoc = 50000 # annual operating cost in Rs\n",
+ "svo = 10000 # salvage value after overhauling in Rs\n",
+ "pc = io + pmp # present cost in Rs\n",
+ "i = 10 # interest rate\n",
+ "i = 10/100\n",
+ "crf1 = (i*(1+i)**asl)/((1+i)**asl - 1) # capital recovery factor\n",
+ "AC1 = (pc - svo)*crf1 + svo*i + aoc # average cost in Rs\n",
+ "# proposed machine\n",
+ "n = 10 # expected economic life in years\n",
+ "ic = 300000 # initial cost in Rs\n",
+ "sv = 100000 # salvage value in Rs\n",
+ "o = 30000 # annual operating cost in Rs\n",
+ "crf2 = (i*(1+i)**10)/((1+i)**10 - 1)\n",
+ "AC2 = (ic - sv)*crf2 + sv*i + o # average cost in Rs\n",
+ "print \" Existing machine = Rs %0.3f \\n Proposed machine = Rs %0.2f\"%(AC1 , AC2)\n",
+ "print \" Since the equivalent annual cost of proposed machine is less than that of the existing machine , therefore, the replacement is justified.\"\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Existing machine = Rs 87931.647 \n",
+ " Proposed machine = Rs 72549.08\n",
+ " Since the equivalent annual cost of proposed machine is less than that of the existing machine , therefore, the replacement is justified.\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.15 : page 265"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import sqrt\n",
+ "c = 20000 # first cost of machine in Rs\n",
+ "s = 1000 # scrap value in machine in Rs\n",
+ "b = 180 # annual increase in cost of repairs in Rs\n",
+ "n = sqrt(2*(c-s)/b) # years\n",
+ "print \"Number of years of economic repair life = %0.2f years\"%(n)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of years of economic repair life = 14.53 years\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.16 : page 266"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Cn = 72000 # cost of new machine installed and tooled in Rs\n",
+ "Co = 28000 # cost of new machime installed and tooled in Rs\n",
+ "p = 16 # hourly pieces\n",
+ "Nn = 2200*p # estimated annual production on new machine \n",
+ "Ko = 17200 # present book value of old machine in Rs\n",
+ "So = 6400 # scrap value of old machine in Rs\n",
+ "Sn = 8000 # probable scrap value of old machine in at the end of its useful life Rs\n",
+ "oco = 2.5 # opreator cost per hour \n",
+ "mco= 48 # machine cost\n",
+ "ro = 10 # production rate per hour\n",
+ "ocn = 2 # opreator cost per hour \n",
+ "mcn= 62 # machine cost\n",
+ "rn = 16 # production rate per hour\n",
+ "Po = (oco+mco)/ro # labour and machine cost per unit on old machine in Rs\n",
+ "Pn = (ocn+mcn)/rn # labour and machine cost per unit on new machine in Rs\n",
+ "i = 6 # interest on investment\n",
+ "i = i/100\n",
+ "t = 6 # annual taxes\n",
+ "t = t/100\n",
+ "d = 10 # annual allowance for depreciation \n",
+ "d = d/100\n",
+ "m = 3 # annual allowance for maintenance\n",
+ "m = m/100\n",
+ "n = ((Cn-Sn)+(Ko-So))/((Nn*(Po-Pn)) - Cn*(i+t+d+m))\n",
+ "print \"The number of years in which the new machine will pay for itself = %0.3f years\"%(n)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The number of years in which the new machine will pay for itself = 3.945 years\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.17 : page 267"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "C = 80000 # cost of new machine installed and tooled in Rs\n",
+ "nel = 2 # number of engine lathes\n",
+ "c = 32000*nel # first cost of engine lathe\n",
+ "N = 4000 # annual production of turret lathe\n",
+ "n = 3800 # annual production in engine lathe\n",
+ "nhp1 = 4 # hp motor\n",
+ "L = 2256*nhp1 # annual labour cost of turret lathe\n",
+ "w = 5 # wage in per hour\n",
+ "time = 2300 # hours\n",
+ "l = time*nel*w # labour cost of engine lathe\n",
+ "nhp2 = 2.5 # hp motor\n",
+ "pr = 0.35 # power rate in kwh\n",
+ "p = (nel*nhp2*746*time*pr)/1000 # power cost\n",
+ "P = (nhp1*746*time*pr)/1000 # power cost\n",
+ "F = 480 #saving\n",
+ "I = 6/100 # interest rate\n",
+ "T = 4/100 # tax rate\n",
+ "D = 10/100 # allowance for depreciation in engine lathe\n",
+ "M = 6/100 # allowance for maintenance in engine lathe\n",
+ "B = 55/100 # labour burden in engine lathe\n",
+ "i = 6/100 # interest rate\n",
+ "t = 4/100 # tax rate\n",
+ "d = 10/100 # allowance for depreciation in turret lathe\n",
+ "m = 6/100 # allowance for maintenance in turret lathe\n",
+ "X = (L + B*L + P +C*(I+T+D+M) - F)/N\n",
+ "x = (l+l*B + p + c*(i+t+d+m))/n\n",
+ "print \" Unit production cost on turret lathe = Rs %0.2f per piece\\n Unit production cost on engine lathe = Rs %0.2f per piece\"%(X , x)\n",
+ "print \" Turret lathe will be more economical than two engine lathe\"\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Unit production cost on turret lathe = Rs 9.18 per piece\n",
+ " Unit production cost on engine lathe = Rs 14.55 per piece\n",
+ " Turret lathe will be more economical than two engine lathe\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.18 : page 268"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "X = 9.16 # production cost on turret lathe\n",
+ "N = 4000 # annual requirement\n",
+ "c = X*N # cost for 4000 pieces on turret lathe\n",
+ "n = 3800 # production of engine lathe\n",
+ "l = 23000 # labour cost\n",
+ "p = 3002 # power cost\n",
+ "i = 6 # interest rate\n",
+ "i = i/100\n",
+ "t = 4 # tax rate\n",
+ "t = t/100\n",
+ "d = 10 # allowance for depreciation in turret lathe\n",
+ "d = d/100\n",
+ "m = 6 # allowance for maintenance in turret lathe\n",
+ "m = m/100\n",
+ "b = 55/100 #labour burden\n",
+ "a = i+t+d+m \n",
+ "tc = 64000 # first cost of engine lathe\n",
+ "c1 =(N*(l*(1+b)+p))/n+(tc*a) # cost for engine lathe\n",
+ "s = c1-c # savings \n",
+ "amt = s/a # amount invested in turret lathe over the cost of engine lathe\n",
+ "print \"Amount invested in turret lathe over the cost of engine lathe = Rs %d\"%(amt)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Amount invested in turret lathe over the cost of engine lathe = Rs 79562\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.19 : page 268"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Cn = 60000 # cost of new machine\n",
+ "Sn = 5000 # scrap value of new machine\n",
+ "So = 1000 # scrap value of old machine\n",
+ "Nn = 200000 #annual production\n",
+ "I = 10 # interest rate\n",
+ "I = I/100\n",
+ "M = 7 # allowance for maintenane\n",
+ "M = M/100\n",
+ "T = 6 # annual taxes\n",
+ "T = T/100\n",
+ "D = 1/10 # allowance for depreciation\n",
+ "lco = 300 # labour charges for old machine\n",
+ "m = 12 # months\n",
+ "rco = 15000 # running charges for old machine\n",
+ "pro = 50000 # production rate for old machine\n",
+ "lcn = 500 # labour charges for new machine\n",
+ "rcn = 10000 # running charges for old machine\n",
+ "prn = 200000# production rate f\n",
+ "Po = (lco*m + rco)/pro # labour and machine cost on old machine\n",
+ "Pn = (lcn*m + rcn)/prn # labour and machine cost on new machine\n",
+ "n =((Cn-Sn)-So)/((Nn*(Po-Pn))-Cn*(I+T+D+M)) #years\n",
+ "print \"Years in which new machine will pay for itself = %0.2f years\"%(n)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Years in which new machine will pay for itself = 1.40 years\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.20 : page 270"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "a = 1.50 #saving in labour\n",
+ "b=55/100 # burden applied on labour\n",
+ "T = 4/100 # allowance for taxes\n",
+ "M = 5/100 # allowance for maintenance\n",
+ "I = 8/100 # interest rate\n",
+ "D = 50/100 # allowance for depreciation\n",
+ "H = 2 # years to amortize the investment\n",
+ "S = 50 # yearly cost for set up\n",
+ "C = 3000 # first cost\n",
+ "N1 = (C*(I+T+M+D)+S)/(a*(1+b)) # annual production when 1 run is made\n",
+ "r = 5 # number of runs\n",
+ "N2 = (C*(I+T+M+D)+S*r)/(a*(1+b)) # annual production when 1 run is made\n",
+ "D1 = 100/100 # allowance for depreciation\n",
+ "N3 = (C*(I+T+M+D1)+S)/(a*(1+b)) # production when D = 100\n",
+ "n1 = 1530 # pieces\n",
+ "C1 = (n1*(a*(1+b))-S)/(I+T+M+D1) # economical investment\n",
+ "n2 = 950 # pieces\n",
+ "a1 = 2 # labour cost\n",
+ "r1 = 6 # number of runs\n",
+ "S1 = r1*S # yearly cost\n",
+ "V = n2*a1*(1+b)-C*(I+T+M+D)-S1 #profit\n",
+ "print \"Number of pieces when one run is made and cost is Rs 3000 = %d pieces\"%(N1)\n",
+ "print \"Annual production when 5 runs are made per year = %d pieces\"%(N2)\n",
+ "print \"Annual production when fixture pay for itself = %d pieces\"%(N3)\n",
+ "print \"Economical investment when 1530 pieces for single run with savings Rs 1.50 per piece = Rs %d\"%(C1)\n",
+ "print \"Annual profit when 950 pieces made per year in 6 runs and saving in labour cost Rs 2 per piece = Rs %d per year\"%(V)\n",
+ "# 'Answers vary due to round off error'\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of pieces when one run is made and cost is Rs 3000 = 886 pieces\n",
+ "Annual production when 5 runs are made per year = 972 pieces\n",
+ "Annual production when fixture pay for itself = 1531 pieces\n",
+ "Economical investment when 1530 pieces for single run with savings Rs 1.50 per piece = Rs 2997\n",
+ "Annual profit when 950 pieces made per year in 6 runs and saving in labour cost Rs 2 per piece = Rs 635 per year\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.21 : page 271"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "a = 0.125 #saving in labour cost per unit\n",
+ "b = 0.4 # overhead applied on direct labour saved\n",
+ "D = 1/2 # allowance for depreciation\n",
+ "C = 2400 # first cost\n",
+ "I = 6/100 # interest rate\n",
+ "T = 4/100 # allowance for taxes\n",
+ "M = 10/100 # allowance for maintenance\n",
+ "S = 80 # cost of set up\n",
+ "N = (C*(I+T+D+M)+S)/(a*(1+b)) # pieces per year\n",
+ "t = N*2 # total number of pieces\n",
+ "print \"Total number of pieces produced = %d\"%(t)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total number of pieces produced = 20114\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.22 : page 271"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "a = 0.125 # saving in labour cost per unit\n",
+ "b = 0.4 # overhead applied on direct labour saved\n",
+ "D = 1/2 # allowance for depreciation\n",
+ "C = 2400 # first cost\n",
+ "I = 6/100 # interst rate\n",
+ "T = 4/100 # allowance for taxes\n",
+ "M = 10/100 # allowance for maintenance\n",
+ "n = 6 # number of baches\n",
+ "S = 80 # cost of set up\n",
+ "s1 = S*n # total set up cost\n",
+ "N = (C*(I+T+D+M)+s1)/(a*(1+b)) # pieces\n",
+ "t = N*2 # total number of pieces\n",
+ "print \"Total number of pieces produced = %d\"%(t)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total number of pieces produced = 24685\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.23 : page 271"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "C1 = 2000 # first cost small tool in Rs\n",
+ "N = 5000 # parts per year\n",
+ "n = 5 # number of batches\n",
+ "S = 50*n # cost of set up\n",
+ "a = 0.15 # saving in labour cost per unit\n",
+ "b = 50/100 # burden applied on direct labour saved\n",
+ "I = 10/100 # interest rate\n",
+ "T = 5/100 # allowance for tax\n",
+ "M = 10/100 # allowance for maintenance\n",
+ "H = C1/((N*a*(1+b))-(C1*(I+T+M))-S) # years\n",
+ "C2 = 1600 # cost of fixture\n",
+ "D = 1/H # allowance for depreciation\n",
+ "V = N*a*(1+b)-C2*(I+T+D+M)-S # profit\n",
+ "print \" Number of years taken by fixture of Rs 2000 = %0.2f years\\n profit made when fixture of Rs 1600 = Rs %d\"%(H ,V)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Number of years taken by fixture of Rs 2000 = 5.33 years\n",
+ " profit made when fixture of Rs 1600 = Rs 175\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.24 : page 272"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "c1 = 3 # machine cost per component using existing euipment in Rs\n",
+ "c2 = 1 # machine cost using fixture in Rs\n",
+ "s = c1 - c2 # saving in machine cost per piece\n",
+ "f= 1000 # cost of fixture in Rs\n",
+ "N = f/2 # components\n",
+ "print \"Minimum number of components to be produced if cost of fixture to be recovered = %d\"%(N) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum number of components to be produced if cost of fixture to be recovered = 500\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.25 : page 272"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "C = 1000 # cost of fixture\n",
+ "Co = 700 # cost of old fixture\n",
+ "Cs = 250 # scrap value\n",
+ "a = 10 #saving per piece in paisa\n",
+ "a = a/100\n",
+ "b = 30 # overhead applied on direct labour saved\n",
+ "b = b/100\n",
+ "I = 8 # interest rate\n",
+ "I = I/100\n",
+ "M = 3 # allowance for maintenance\n",
+ "M = M/100\n",
+ "T = 12 # allowance for tax\n",
+ "T = T/100\n",
+ "H = 3/2 # amortization\n",
+ "D = 1/H # allowance for depreciation\n",
+ "N = (C*(I+T+D+M)+(Co-Cs)*I)/(a*(1+b)) # pieces per year\n",
+ "print \"Number of pieces which must be produced to break even so that fixture may pay for itself = %d pieces per year\"%(N)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of pieces which must be produced to break even so that fixture may pay for itself = 7174 pieces per year\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.26 : page 273"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "N = 9000 # number of pieces\n",
+ "Co = 700 # cost of old fixture\n",
+ "Cs = 250 # scrap value\n",
+ "a = 10 #saving per piece in paisa\n",
+ "a = a/100\n",
+ "b = 30 # overhead applied on direct labour saved\n",
+ "b = b/100\n",
+ "I = 8 # interest rate\n",
+ "I = I/100\n",
+ "M = 3 # allowance for maintenance\n",
+ "M = M/100\n",
+ "T = 12 # allowance for tax\n",
+ "T = T/100\n",
+ "H = 3/2 # amortization\n",
+ "D = 1/H # allowance for depreciation\n",
+ "C = (N*a*(1+b)-(Co-Cs)*I)/(I+T+D+M) # cost in Rs\n",
+ "print \"Cost for new fixture = Rs %d\"%(C)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Cost for new fixture = Rs 1264\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.27 : page 273"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "n = 6500 # yearly production\n",
+ "c = 1350 # cost of fixture\n",
+ "a = 10 #saving per piece in paisa\n",
+ "a = a/100\n",
+ "b = 30 # overhead applied on direct labour saved\n",
+ "b = b/100\n",
+ "I = 8 # interest rate\n",
+ "I = I/100\n",
+ "M = 3 # allowance for maintenance\n",
+ "M = M/100\n",
+ "T = 12 # allowance for tax\n",
+ "T = T/100\n",
+ "co = 700 # cost of old fixture\n",
+ "cs = 250 # scrap value\n",
+ "H = (c)/((n*a*(1+b))-I*(co-cs)-c*(I+T+M)) # amotization in years\n",
+ "print \"Time taken to amortize the fixture = %0.1f years\"%(H)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time taken to amortize the fixture = 2.7 years\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.28 : page 273"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "n = 9000 # production of pieces per year\n",
+ "c = 1000 # fixture costs\n",
+ "Co = 700 # cost of old fixture\n",
+ "Cs = 250 # scrap value\n",
+ "a = 10 #saving per piece in paisa\n",
+ "a = a/100\n",
+ "b = 30 # overhead applied on direct labour saved\n",
+ "b = b/100\n",
+ "I = 8 # interest rate\n",
+ "I = I/100\n",
+ "M = 3 # allowance for maintenance\n",
+ "M = M/100\n",
+ "T = 12 # allowance for tax\n",
+ "T = T/100\n",
+ "h = 1.5 # amortization\n",
+ "D = 1/h # allowance for depreciation\n",
+ "V = (n*a*(1+b))-(c*(I+T+D+M))-((Co-Cs)*I) # profit\n",
+ "print \"profit = Rs %d \"%(V) \n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "profit = Rs 237 \n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.29 : page 274"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "fc1 = 100000 # fixed cost in Rs\n",
+ "vc1 = 100 # variable cost in Rs per unit\n",
+ "sp = 200 # selling price in Rs per unit\n",
+ "q1 = fc1/(sp-vc1) # quantity of production at break even point\n",
+ "fc2 = 125000 # fixed cost in Rs\n",
+ "vc2 = 90 # variable cost in Rs per unit\n",
+ "q2 = fc2/(sp-vc2) # quantity of production at break even point\n",
+ "p = 20000 # profit in Rs\n",
+ "q3 = (fc1 + p)/(sp-vc1) # quantity of production at profit of Rs 20000\n",
+ "print \" Break even point = %d pieces \\n If fixed cost is 125000 and variable cost is Rs 90 per unit then break even point = %d pieces\\n Number of components to get profit of Rs 20000 = %d pieces\"%(q1 , q2 ,q3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Break even point = 1000 pieces \n",
+ " If fixed cost is 125000 and variable cost is Rs 90 per unit then break even point = 1136 pieces\n",
+ " Number of components to get profit of Rs 20000 = 1200 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.30 : page 275"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "fc1 = 12000 # fixed cost for machine A in Rs\n",
+ "fc2 = 48000 # fixed cost for machine B in Rs\n",
+ "n1 = 6 # unit production cost in Rs per piece for machine A\n",
+ "n2 = 1.2 # unit production cost in Rs per piece for machine B\n",
+ "q = (fc2-fc1)/(n1-n2) # break even point\n",
+ "print \"Break even point = %d pieces\"%(q)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Break even point = 7500 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.31 : page 275"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# capstan lathe\n",
+ "tc1 = 300 # total cost in Rs\n",
+ "mc1 = 2.5 # material cost per piece in Rs\n",
+ "olc1 = 5 # operation labour cost per hour in Rs\n",
+ "ct1 = 5 # cycle time per piece in min.\n",
+ "slc1 = 20 # setting up labour cost in Rs per hour\n",
+ "st1 = 1 # setting up time in hour\n",
+ "mo1 = 300/100 # machine over heads of operation labour cost\n",
+ "o1 = mo1*olc1 # overheads of capstan lathe in Rs per hour\n",
+ "fc1 = tc1 + slc1*st1 + o1*st1 # fixed cost of capstan lathe in Rs\n",
+ "vc1 = mc1 + (olc1*ct1)/60 + (o1*ct1)/60 # variable cost in Rs\n",
+ "# Automatic (single spindle) \n",
+ "tc2 = 300 # total cost in Rs\n",
+ "cc2 = 1500 # cost of cams in Rs\n",
+ "mc2 = 2.5 # material cost per piece in Rs\n",
+ "olc2 = 2 # operation labour cost per hour in Rs\n",
+ "ct2 = 1 # cycle time per piece in min.\n",
+ "slc2 = 20 # setting up labour cost in Rs per hour\n",
+ "st2 = 8 # setting up time in hour\n",
+ "mo2 = 1000/100 # machine over heads of operation labour cost\n",
+ "o2 = mo2*olc2 # overheads of single spindle in Rs per hour\n",
+ "fc2 = tc2 + cc2 + slc2*st2 + o2*st2 # fixed cost of single spindle in Rs\n",
+ "vc2 = mc2 + (olc2*ct2)/60 + (slc2)/60 # variable cost in Rs\n",
+ "q = (fc2-fc1)/(vc1-vc2) # break even quantity\n",
+ "print \" Break even quantity for a component which can be produced on either the capstan lathe or single spindle automatic = %d pieces\"%(q)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Break even quantity for a component which can be produced on either the capstan lathe or single spindle automatic = 1373 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.32 : page 277"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Engine lathe\n",
+ "t = 12 # time/piece in min.\n",
+ "l = 7 # overhead cost/hr\n",
+ "o = 4 # direct labour cost/hr\n",
+ "s = 2 # set up time in hour\n",
+ "sr = 8 # set up rate per \n",
+ "# turret lathe\n",
+ "T = 5 # time/piece in min.\n",
+ "L = 5 # overhead cost/hr\n",
+ "O = 8 # direct labour cost/hr\n",
+ "S = 8 # set up time in hour\n",
+ "SR = 8 # set up rate per \n",
+ "q = 60*(S*SR-s*sr)/(t*(l+o)-T*(L+O)) # break even point\n",
+ "q = round(q)\n",
+ "print \"Break even point = %d pieces\"%(q)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Break even point = 43 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.33 : page 277"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from sympy import symbols, solve\n",
+ "fc1 = 80000 # fixed cost for turret lathe in Rs\n",
+ "fc2 = 32000 # fixed cost for engine lathe in Rs\n",
+ "n1 = 16 # production of pieces per year in turret lathe\n",
+ "n2 = 10 # production of pieces per year in engine lathe\n",
+ "vc1 = 2 #operators cost in turret lathe\n",
+ "vc2 = 2.5 # operators cost in engine lathe\n",
+ "Q=symbols('Q')\n",
+ "expr = (fc1+1/n1*vc1*Q)-(fc2+2.5*Q/10)\n",
+ "Q=solve(expr,Q)[0]\n",
+ "print \"Break even point = %d pieces\"%(Q)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Break even point = 384000 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.34 : page 277"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "st1 = 15 # set up time for engine lathe in min.\n",
+ "ut1 = 15 # unit time for engine lathe in min.\n",
+ "st2 = 90 # set up time for automatic lathe in min.\n",
+ "ut2 = 1.5 # unit time for engine lathe in min.\n",
+ "q = (st2-st1)/(ut1-ut2) # quantity of production\n",
+ "print \"The point at which the automatic lathe will be justified = %0.2f \"%(q)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The point at which the automatic lathe will be justified = 5.56 \n"
+ ]
+ }
+ ],
+ "prompt_number": 31
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.35 : page 278"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Automatic lathe\n",
+ "p = 30 # number of pieces produced per hour \n",
+ "l = 4 # labour rate per hour in Rs\n",
+ "d = 4.50 # hourly depreciation rate per machine in hour\n",
+ "s = 4 # set up time in hour\n",
+ "# turret lathe\n",
+ "P = 10 # number of pieces produced per hour \n",
+ "L = 4 # labour rate per hour in Rs\n",
+ "D = 1.50 # hourly depreciation rate per machine in hour\n",
+ "S = 2 # set up time in hour\n",
+ "q = (P*p*(S*L+S*D-s*l-s*d))/(P*(l+d)-p*(L+D)) # quantity of pieces at break even point\n",
+ "print \"Quantity of pieces at Break even point = %d pieces\"%(q)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Quantity of pieces at Break even point = 86 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 32
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.36 : page 279"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "Pa = 8.4 # unit tool process cost for method A in Rs\n",
+ "Pb = 14.8 # unit tool process cost for method B in Rs\n",
+ "Ta = 6480 #total tool cost for method A in Rs \n",
+ "Tb = 1616 #total tool cost for method B in Rs\n",
+ "q = (Ta-Tb)/(Pb-Pa) # break even point\n",
+ "print \"Quantity of production at break even point = %d pieces\"%(q) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Quantity of production at break even point = 760 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 33
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.37 : page 283"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# machine A\n",
+ "ic1 = 50000 # initial cost\n",
+ "hoc1 = 10 # hourly operating charges\n",
+ "pp1= 5 # pieces produced per hour\n",
+ "i = 15 # interest rate\n",
+ "i = i/100\n",
+ "oh = 2000 # operating hours\n",
+ "fc1 = ic1*i # fixed cost\n",
+ "vc1 = oh*hoc1 # variable cost\n",
+ "tc1 = fc1+vc1 # total charges\n",
+ "ao1 = oh*pp1 # annual output\n",
+ "c1 = tc1/ao1 # cost per unit\n",
+ "# machine B\n",
+ "ic2 = 80000 # initial cost\n",
+ "hoc2 = 8 # hourly operating charges\n",
+ "pp2= 8 # pieces produced per hour\n",
+ "fc2 = ic2*i # fixed cost\n",
+ "vc2 = oh*hoc2 # variable cost\n",
+ "tc2 = fc2+vc2 # total charges\n",
+ "ao2 = oh*pp2 # annual output\n",
+ "c2 = tc2/ao2 # cost per unit\n",
+ "print \"(i) Cost per unit for machine A = Rs %0.2f\\n Cost per unit machine B = Rs %0.2f\"%(c1,c2)\n",
+ "print \"machine B will be preferred\"\n",
+ "# machine A\n",
+ "ao3 = 4000 # annual output\n",
+ "oc3 = ao3*hoc1/pp1 # operating charges \n",
+ "tc3 = oc3+fc1 # total annual charge\n",
+ "c3 = tc3/ao3 # cost/piece \n",
+ "# machine B\n",
+ "ao4 = 4000 # annual output\n",
+ "oc4 = ao4*hoc2/pp2 # operating charges \n",
+ "tc4 = oc4+fc2 # total annual charge\n",
+ "c4 = tc4/ao4# cost/piece\n",
+ "print \"(ii) Cost per unit for machine A = Rs %0.2f\\n Cost per unit machine B = Rs %0.2f\"%(c3,c4)\n",
+ "print \"machine A will be preferred\"\n",
+ "A = hoc1/pp1 # operating cost per piece on machine A\n",
+ "B = hoc2/pp2 # operating cost per piece on machine B\n",
+ "Q = fc2 - fc1 # annual production\n",
+ "print \"(iii) Annual production to make cost per piece equal for two machines = %d pieces\"%(Q )"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(i) Cost per unit for machine A = Rs 2.75\n",
+ " Cost per unit machine B = Rs 1.75\n",
+ "machine B will be preferred\n",
+ "(ii) Cost per unit for machine A = Rs 3.88\n",
+ " Cost per unit machine B = Rs 4.00\n",
+ "machine A will be preferred\n",
+ "(iii) Annual production to make cost per piece equal for two machines = 4500 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 34
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.38 : page 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "As = 80000 # annual sales in Rs\n",
+ "vc = 64000 # variable expenses in Rs\n",
+ "c = 16000 # contribution in Rs\n",
+ "fc = 24000 # fixed expenses in Rs\n",
+ "l = 8000 # losses in Rs\n",
+ "p = 9000 # profit in Rs\n",
+ "s1 = fc + vc # sales at B.E.P in Rs\n",
+ "s2 = (fc + vc + p)/0.945 # sales at net income of Rs9000 and corporate tax rate being 5.5%\n",
+ "q = 10000 # quantity of units\n",
+ "sp = (fc+vc)/q # selling price per unit in Rs\n",
+ "print \" Sales at break even point = %d units\"%(s1 )\n",
+ "print \" Sales at net income of Rs9000 and corporate tax rate being 5.5 = Rs %0.2f\\n Sales per unit if B.E.P brought down to 10000 units = Rs %0.2f per unit\" %(s2 , sp)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Sales at break even point = 88000 units\n",
+ " Sales at net income of Rs9000 and corporate tax rate being 5.5 = Rs 102645.50\n",
+ " Sales per unit if B.E.P brought down to 10000 units = Rs 8.80 per unit\n"
+ ]
+ }
+ ],
+ "prompt_number": 35
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.39 : page 285"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "fc = 55000 # fixed cost in Rs\n",
+ "vc = 45 # variable cost per piece in Rs\n",
+ "sp = 100 # selling price per piece in Rs\n",
+ "p = (vc/sp)*100 # percentage of variable cost to \n",
+ "pm = 100 - p # profit margin\n",
+ "bep = ((55000/55)*100)/100 # Break even point\n",
+ "print \"Break even point = %d pieces\"%(bep)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Break even point = 1000 pieces\n"
+ ]
+ }
+ ],
+ "prompt_number": 36
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.40 : page 288"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "f1 = 335 # fixed cost in Rs for capstan lathe\n",
+ "k = 0.25 # stock carrying factor in paise per piece\n",
+ "k = k/100\n",
+ "N1 = sqrt(f1/k) # pieces for capstan lathe\n",
+ "a1 = 4.16 # variable cost per piece for capstan lathe\n",
+ "tc1 = a1+f1/N1+k*N1 # total cost for capstan lathe\n",
+ "f2 = 2120 # fixed cost in Rs for turret lathe\n",
+ "N2 = sqrt(f2/k) # pieces for turret lathe \n",
+ "a2 = 2.863 # variable cost per piece for turret lathe\n",
+ "tc2 = a2+f2/N2+k*N2 # total cost for turret lathe\n",
+ "print \" Total cost per piece for capstan lathe = Rs %0.2f\\n Total cost per piece for turret lathe = Rs %0.2f\"%(tc1 , tc2)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Total cost per piece for capstan lathe = Rs 5.99\n",
+ " Total cost per piece for turret lathe = Rs 7.47\n"
+ ]
+ }
+ ],
+ "prompt_number": 37
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.41 : page 289"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "R=500 # cost of ordering in Rs per order \n",
+ "A=12000 #annual consumption units\n",
+ "C=3.00 # unit cost of item\n",
+ "K=1.5 # unit storage cost\n",
+ "I1=0.2 # interest rate\n",
+ "from sympy import symbols, diff, solve\n",
+ "N = symbols('N')\n",
+ "G =C*A+I1*C*N/2+K*N/2+A*R/N # total cost per year\n",
+ "expr=G.diff(N)\n",
+ "N=solve(expr, N)[1]\n",
+ "O = A/N # number of orders\n",
+ "N1 = 2400 # units\n",
+ "tc = C*A + I1*C*N1/2 + K*N1/2 + A*R/N1 # total cost in Rs\n",
+ "I2 = (2*R*A)/(C*N1**2) \n",
+ "print \" Economic order quantity = %d or %d units\\n Totl cost = Rs %d per year\\n I = %0.4f\"%(N,N1,tc,I2)\n",
+ "print \" It is clear that inventory cost will get increased very greatly\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Economic order quantity = 2390 or 2400 units\n",
+ " Totl cost = Rs 41020 per year\n",
+ " I = 0.6944\n",
+ " It is clear that inventory cost will get increased very greatly\n"
+ ]
+ }
+ ],
+ "prompt_number": 38
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.42 : page 291"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "A = 40000 # number of units per year\n",
+ "I = 25 # carrying cost in percent\n",
+ "I = I/100\n",
+ "C1 = 8 # cost for 0 < N < 1000 per unit in Rs\n",
+ "C2 = 7.5 # cost for 1000 < N < 10000 per unit in Rs\n",
+ "C3 = 7.25 # cost for N >= 10000 per unit in Rs\n",
+ "R = 250 # ordering cost per order in Rs\n",
+ "N = 10000 # units\n",
+ "N1 = sqrt(2*R*A/(I*C3)) # optimal quantity for lowest curve\n",
+ "G1= C3*A+(A*R)/N+I*C3*N/2 # total cost in Rs\n",
+ "N2 = sqrt(2*R*A/(I*C2)) # optimal quantity for higher curve\n",
+ "G2= C2*A+(A*R)/N2+I*C2*N2/2 # total cost in Rs\n",
+ "N3 = sqrt(2*R*A/(I*C1)) # optimal quantity for highest curve\n",
+ "G3 = C1*A+(A*R)+1 # total cost in Rs\n",
+ "print \" Total cost for lowest cost curve = Rs %0.2f\\n Total cost for next higher curve = Rs %0.2f\\n Total cost for highest curve = Rs %0.2f \"%(G1,G2,G3)\n",
+ "print \" Comparing all total cost lowest is Rs 300,062.50 for an order quantity of 10,000.\"\n",
+ "print \" N = 10,000 and No. of orders = 4\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Total cost for lowest cost curve = Rs 300062.50\n",
+ " Total cost for next higher curve = Rs 306123.72\n",
+ " Total cost for highest curve = Rs 10320001.00 \n",
+ " Comparing all total cost lowest is Rs 300,062.50 for an order quantity of 10,000.\n",
+ " N = 10,000 and No. of orders = 4\n"
+ ]
+ }
+ ],
+ "prompt_number": 39
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 5.43 : page 291"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import ceil\n",
+ "c = 50000 # components\n",
+ "R=500 # cost of ordering in Rs per order \n",
+ "A=12000 #annual consumption units\n",
+ "C=3.00 # unit cost of item\n",
+ "K=1.50 # unit storage cost\n",
+ "I=0.2 # interest rate\n",
+ "\n",
+ "from sympy import symbols, diff, solve\n",
+ "N = symbols('N')\n",
+ "G=0.02*N+1500000/N\n",
+ "y=G.diff(N)\n",
+ "N=solve(y, N)[1]\n",
+ "l = c/N # number of lots\n",
+ "l = ceil(l)\n",
+ "ls = c/l # lot size\n",
+ "print \"The lot size = %d components\"%ls"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The lot size = 8333 components\n"
+ ]
+ }
+ ],
+ "prompt_number": 40
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter9.ipynb b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter9.ipynb
new file mode 100644
index 00000000..b6a98e43
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/Chapter9.ipynb
@@ -0,0 +1,477 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:219d77d7f38fc19cfe849e0cfd0de3bcb029b11c9e3454d84ccc5176fa4ce213"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9 : Limits, Tolerances & Fits"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.1 : Page 376"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "h1 = 37.52 # high limit of hole in mm\n",
+ "h2 = 37.50 # low limit of hole in mm\n",
+ "s1 = 37.47 # high limit of shaft in mm\n",
+ "s2 = 37.45 # low limit of shaft in mm\n",
+ "ht = h1-h2 # hole tolerence in mm\n",
+ "st = s1-s2 # shaft tolerence in mm\n",
+ "a = h2-s1 # allowance in mm\n",
+ "print \" Hole tolerence = %0.2f mm\\n Shaft tolerence = %0.2f mm\\n Allowance = %0.2f mm\"%(ht ,st ,a)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Hole tolerence = 0.02 mm\n",
+ " Shaft tolerence = 0.02 mm\n",
+ " Allowance = 0.03 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.2 : Page 377"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "t = 0.075 # tolerence in mm\n",
+ "h2 = 75 # low limit of hole in mm\n",
+ "a = 0.10 # allowance in mm\n",
+ "h1 = h2+t # high limit of hole in mm\n",
+ "s1 = h2-a # high limit of shaft in mm\n",
+ "s2 = s1-t # low limit of shaft in mm\n",
+ "print \" High limit of hole = %0.3f mm\\n High limit of shaft = %0.2f mm\\n Low limit of shaft = %0.3f mm\"%(h1 ,s1 , s2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " High limit of hole = 75.075 mm\n",
+ " High limit of shaft = 74.90 mm\n",
+ " Low limit of shaft = 74.825 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.3 : Page 377"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "t = 0.225 # tolerence in mm\n",
+ "h2 = 75 # low limit of hole in mm\n",
+ "a = 0.0375 # interference in mm\n",
+ "h1 = h2+t # high limit of hole in mm\n",
+ "s2 = h1+a # low limit of shaft in mm\n",
+ "s1 = s2+t # high limit of shaft in mm\n",
+ "print \" High limit of hole = %0.3f mm\\n Low limit of shaft = %0.4f mm\\n High limit of shaft = %0.4f mm\"%(h1 ,s2 , s1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " High limit of hole = 75.225 mm\n",
+ " Low limit of shaft = 75.2625 mm\n",
+ " High limit of shaft = 75.4875 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.4 : Page 378"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "s1 = 50 # diameter of step1 in mm\n",
+ "s2 = 80 # diameter of step2 in mm\n",
+ "d = (s1*s2)**(1/2) # mm\n",
+ "i = (0.45*(d)**(1/3)+0.001*d)/10**3 # mm\n",
+ "t1 = 25*i # tolerence for hole in mm\n",
+ "t2 = 16*i # tolerence for shaft in mm\n",
+ "a1 = 0 # fundamental deviation for hole in mm\n",
+ "a2 = 5.5*(d)**0.41 # fundamental deviation for shaft in microns\n",
+ "a2 = a2/10**4 # mm\n",
+ "h1 = 60 # low limit of hole in mm\n",
+ "h2 = h1+t1 # high limit of tolerence in mm\n",
+ "s1 = h1 - t2 # high limit of shaft in mm\n",
+ "s2 = s1-t2 # low limit of shaft in mm\n",
+ "print \" Tolerence for hole = %0.3f mm\\n Tolerence for shaft = %0.3f mm\"%(t1 ,t2)\n",
+ "print \" Fundamental deviation for hole = %0.2f mm\\n Fundamental deviation for shaft = %0.3f mm\"%(a1 , a2 )\n",
+ "print \" Low limit of hole = %d mm\\n High limit of hole = %0.3f mm\\n High limit of shaft = %0.2f mm\\n Low limit of hole = %0.2f mm\"%(h1 ,h2 , s1 , s2)\n",
+ "# Answers vary due to round off error"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Tolerence for hole = 0.011 mm\n",
+ " Tolerence for shaft = 0.007 mm\n",
+ " Fundamental deviation for hole = 0.00 mm\n",
+ " Fundamental deviation for shaft = 0.001 mm\n",
+ " Low limit of hole = 60 mm\n",
+ " High limit of hole = 60.011 mm\n",
+ " High limit of shaft = 59.99 mm\n",
+ " Low limit of hole = 59.99 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.5 : Page 379"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "b = 30 # basic size in mm\n",
+ "s1 = 0.005 # maximum limit of shaft in mm\n",
+ "s2 = 0.018 # minimum limit of shaft in mm\n",
+ "h1 = 0.020 # maximum limit of hole in mm\n",
+ "h2 = 0.0 # minimum limit of hole in mm\n",
+ "t1 = s2-s1 # shaft tolerence in mm\n",
+ "t2 = h1-h2 # hole tolerence in mm\n",
+ "Sh = b-s1 # high limit of shaft in mm\n",
+ "Sl = b-s2 # low limit of shaft in mm\n",
+ "Hh = b+h1 # high limit of hole in mm\n",
+ "Hl = b+h2 # low limit of hole in mm\n",
+ "c1 = Hh-Sl # maximum clearance in mm\n",
+ "c2 = Hl-Sh # minimum clearance in mm\n",
+ "print \" Basic size = %d mm\\n Shaft tolerence = %0.3f mm\\n Hole tolerence = %0.3f mm\"%(b,t1,t2)\n",
+ "print \" High limit of shaft = %0.3f mm\\n Low limit of shaft = %0.3f mm\\n High limit of hole = %0.3f mm \\n Low limit of hole = %0.3f mm\"%(Sh,Sl,Hh,Hl)\n",
+ "print \" Maximum clearance = %0.3f mm\\n Minimum clearance = %0.3f mm\"%(c1,c2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Basic size = 30 mm\n",
+ " Shaft tolerence = 0.013 mm\n",
+ " Hole tolerence = 0.020 mm\n",
+ " High limit of shaft = 29.995 mm\n",
+ " Low limit of shaft = 29.982 mm\n",
+ " High limit of hole = 30.020 mm \n",
+ " Low limit of hole = 30.000 mm\n",
+ " Maximum clearance = 0.038 mm\n",
+ " Minimum clearance = 0.005 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.6 : Page 379"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "minc = 0.01 # minimum clearance in mm\n",
+ "bs = 25 # basic size in mm\n",
+ "maxc = 0.02 # maximum clearance in mm\n",
+ "from sympy import symbols, solve\n",
+ "x=symbols('x')\n",
+ "y=1.5*x\n",
+ "expr = y+0.01+x-0.02\n",
+ "x=solve(expr, x)[0]\n",
+ "y=1.5*x\n",
+ "# hole basis system\n",
+ "low_h1 = bs # low limit of hole in mm\n",
+ "high_h1 = bs+y # high limit of hole in mm\n",
+ "u_s = low_h1-minc # upper limit of shaft in mm\n",
+ "low_s1 = u_s-x # lower limit of shaft in mm\n",
+ "# shaft basis system\n",
+ "high_s = bs # high limit of shaft in mm\n",
+ "low_s2 = bs-x # low limit of shaft in mm\n",
+ "low_h2 = bs+minc # low limit of hole in mm\n",
+ "high_h2 = low_h2+y # high limit of hole in mm\n",
+ "print \" Hole basis system \\n Lower limit of hole = %d mm\\n Higher limit of hole = %0.3f mm\\n Higher limit of shaft = %0.3f mm \\n Lower limit of shaft = %0.3f mm\"%(low_h1,high_h1,u_s,low_s1)\n",
+ "print \" Shaft basis system \\n high limit of shaft = %0.3f mm\\n lower limit of shaft = %0.3f mm\\n lower limit of hole = %0.3f mm\\n upper limit of hole = %0.3f mm\"%(high_s,low_s2,low_h2,high_h2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Hole basis system \n",
+ " Lower limit of hole = 25 mm\n",
+ " Higher limit of hole = 25.006 mm\n",
+ " Higher limit of shaft = 24.990 mm \n",
+ " Lower limit of shaft = 24.986 mm\n",
+ " Shaft basis system \n",
+ " high limit of shaft = 25.000 mm\n",
+ " lower limit of shaft = 24.996 mm\n",
+ " lower limit of hole = 25.010 mm\n",
+ " upper limit of hole = 25.016 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.7 : Page 380"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from math import ceil\n",
+ "bs = 100 # basic size in mm\n",
+ "s1 = 120# diameter of step1 in mm\n",
+ "s2 = 80 # diameter of step2 in mm\n",
+ "d = (s1*s2)**(1/2) # mm\n",
+ "d = ceil(d)\n",
+ "i = (0.45*(d)**(1/3)+0.001*d)/10**3 # mm\n",
+ "t1 = 16*i # tolerence for hole in mm\n",
+ "t2 = 25*i # tolerence for shaft in mm\n",
+ "G = (2.5*(d)**0.34)/10**3 # fundamental deviation for hole in mm\n",
+ "e = (11*(d)**0.11)/10**3 # fundamental deviation for shaft in microns\n",
+ "# Hole\n",
+ "LLh = bs+G # lower limit of hole in mm\n",
+ "HLh = LLh+t1 # higher limit of hole in mm\n",
+ "# shaft\n",
+ "ULs = bs-e # upper limit of shaft in mm\n",
+ "LLs = ULs-t2 # lower limit of shaft in mm\n",
+ "print \" lower limit of hole = %0.3f mm\\n higher limit of hole = %0.3f mm\\n upper limit of shaft = %0.3f mm\\n lower limit of shaft = %0.3f mm\"%(LLh,HLh,ULs,LLs)\n",
+ "# Error in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " lower limit of hole = 100.002 mm\n",
+ " higher limit of hole = 100.010 mm\n",
+ " upper limit of shaft = 99.989 mm\n",
+ " lower limit of shaft = 99.978 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.8 : Page 381"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "tb = 0.005 # tolerence on bearing in mm\n",
+ "tj = 0.004 # tolerence on journal in mm\n",
+ "a = 0.002 # allowance in mm\n",
+ "#hole-basis system\n",
+ "b = 100 # basic size in mm\n",
+ "Bl = b # lower limit of bearing in mm\n",
+ "Bh = Bl+tb # higher limit of bearing in mm\n",
+ "Jh = Bl-a # higher limit of journal in mm\n",
+ "Jl1 = Jh - tj # lower limit of journal in \n",
+ "# shaft-basis system\n",
+ "Ju = b # upper limit of journal in mm\n",
+ "Jl2 = Ju-tj # lower limit of journal in mm\n",
+ "Bl = Ju+a # lower limit of bearing in mm\n",
+ "Bu = Bl+tb # upper limit of bearing in mm\n",
+ "print \"Hole basis system \\n Lower limit of journal = %d mm\\n Higher limit of bearing = %0.3f mm\\n Higher limit of journal = %0.3f mm \\n Lower limit of journal = %0.3f mm\"%(Bl,Bh,Jh,Jl1)\n",
+ "print \"shaft basis system \\n upper limit of journal = %0.3f mm\\n lower limit of journal = %0.3f mm\\n lower limit of bearing = %0.3f mm\\n upper limit of bearing = %0.3f mm\"%(Ju,Jl2,Bl,Bu)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hole basis system \n",
+ " Lower limit of journal = 100 mm\n",
+ " Higher limit of bearing = 100.005 mm\n",
+ " Higher limit of journal = 99.998 mm \n",
+ " Lower limit of journal = 99.994 mm\n",
+ "shaft basis system \n",
+ " upper limit of journal = 100.000 mm\n",
+ " lower limit of journal = 99.996 mm\n",
+ " lower limit of bearing = 100.002 mm\n",
+ " upper limit of bearing = 100.007 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.9 : Page 381"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Hole-basis system\n",
+ "b = 100 # basic size in mm\n",
+ "i1 = 0.12 # maximum interference in mm\n",
+ "i2 = 0.05 # minimum interfernce in mm\n",
+ "t = (i1-i2)/2 # tolerence in mm\n",
+ "Sh = b+i1 # upper limit of shaft in mm\n",
+ "Hl = b # lower limit of hole in mm\n",
+ "Hh = b+t # higher limit of hole in mm\n",
+ "Sl1 = Sh-t #lower limit of shaft in mm \n",
+ "# shaft-basis system\n",
+ "Su = b # upper limit of shaft in mm\n",
+ "Sl2 = b-t # lower limit of shaft in mm\n",
+ "Hl1 = b-i1 # lower limit of hole in mm\n",
+ "Hu = Hl1+t # higher limit of hole in mm\n",
+ "print \" Hole basis system \\n upper limit of shaft = %0.3f mm\\n lower limit of hole = %0.3f mm\\n higher limit of hole = %0.3f mm\\n lower limit of shaft = %0.3f mm\"%(Sh,Hl,Hh,Sl1)\n",
+ "print \" Shaft basis system \\n upper limit of shaft = %0.3f mm\\n lower limit of shaft = %0.3f mm\\n lower limit of hole = %0.3f mm\\n upper limit of hole = %0.3f mm\"%(Su,Sl2,Hl1,Hu)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Hole basis system \n",
+ " upper limit of shaft = 100.120 mm\n",
+ " lower limit of hole = 100.000 mm\n",
+ " higher limit of hole = 100.035 mm\n",
+ " lower limit of shaft = 100.085 mm\n",
+ " Shaft basis system \n",
+ " upper limit of shaft = 100.000 mm\n",
+ " lower limit of shaft = 99.965 mm\n",
+ " lower limit of hole = 99.880 mm\n",
+ " upper limit of hole = 99.915 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exa 9.10 : Page 382"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "aa = 0.04 # average allowance in mm\n",
+ "a = 0.012 # allowance in mm\n",
+ "Max = aa+a # maximum allowance in mm\n",
+ "Min = aa-a # minimum allowance in mm\n",
+ "t = (Max-Min)/3 # tolerence in mm\n",
+ "ts = t # tolerence in shat in mm\n",
+ "th = 2*t # tolerence in hole in mm\n",
+ "b = 100 # basic size in mm\n",
+ "Hl = b # lower limit of hole in mm\n",
+ "Hu = b+th # upper limit of hole in mm\n",
+ "Su = b-0.028 # upper limit of shaft in mm\n",
+ "Sl = Su-ts # lower limit of shaft in mm\n",
+ "print \" lower limit of hole = %d mm\\n upper limit of hole = %0.3f mm\\n upper limit of shaft = %0.3f mm\\n lower limit of shaft = %0.3f mm\"%(Hl,Hu,Su,Sl)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " lower limit of hole = 100 mm\n",
+ " upper limit of hole = 100.016 mm\n",
+ " upper limit of shaft = 99.972 mm\n",
+ " lower limit of shaft = 99.964 mm\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21AOQCurve.png b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21AOQCurve.png
new file mode 100644
index 00000000..0716fa4f
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21AOQCurve.png
Binary files differ
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21X&RChart.png b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21X&RChart.png
new file mode 100644
index 00000000..c09406c5
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/21X&RChart.png
Binary files differ
diff --git a/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/22CuttingVvsCutterDia.png b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/22CuttingVvsCutterDia.png
new file mode 100644
index 00000000..9ecdd1d0
--- /dev/null
+++ b/A_Textbook_of_Production_Engineering_by_P._C._Sharma/screenshots/22CuttingVvsCutterDia.png
Binary files differ
diff --git a/sample_notebooks/MohdAkhlak/Chap_5.ipynb b/sample_notebooks/MohdAkhlak/Chap_5.ipynb
new file mode 100644
index 00000000..095144f9
--- /dev/null
+++ b/sample_notebooks/MohdAkhlak/Chap_5.ipynb
@@ -0,0 +1,304 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:9f01cac55dab0916c25f5aa305301e717abd0c0dfe79622c411a98125bbfc8e6"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter - 5 : High Frequency And High Power Devices"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.1 : Page No - 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "from numpy import pi, sqrt\n",
+ "#Given data\n",
+ "C1= 5 # in pF\n",
+ "C1= C1*10**-12 # in F\n",
+ "C2= 50 # in pF\n",
+ "C2= C2*10**-12 # in F\n",
+ "L= 10 # in mH\n",
+ "L= L*10**-3 # in H\n",
+ "TuningRange= 1/(2*pi*sqrt(L*C1*C2/(C1+C2))) # in Hz\n",
+ "print \" The tuning range for the circuit = %0.3f kHz\" %(TuningRange*10**-3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The tuning range for the circuit = 746.503 kHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.2 : Page No - 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Given data\n",
+ "C_T1= 15 # in pF\n",
+ "Vb1=8 # in V\n",
+ "Vb2= 12 # in V\n",
+ "# As C_T proportional to 1/sqrt(Vb), and \n",
+ "# C_T1/C_T2= sqrt(Vb2/Vb1), so\n",
+ "C_T2= C_T1*sqrt(Vb1/Vb2) # in pF\n",
+ "print \" The value of C_T2 = %0.2f pF\" %C_T2"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The value of C_T2 = 12.25 pF\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.3 : Page No - 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Given data\n",
+ "epsilon_Ge= 16/(36*pi*10**-11) # in f/C\n",
+ "A=10**-12 \n",
+ "d=2*10**-4 # in cm\n",
+ "# C_T= epsilon_0*A/d= epsilon_Ge*A/d\n",
+ "C_T= epsilon_Ge*A/d #in pF\n",
+ "print \" The space charge capacitance = %0.2f pF\" %C_T"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The space charge capacitance = 70.74 pF\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.4 : Page No - 196"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Given data\n",
+ "D= 0.102 # in cm\n",
+ "sigma_P= 0.286 # in \u03a9cm\n",
+ "q= 1.6*10**-19 # in C\n",
+ "miuP= 500 \n",
+ "Vb= 5+0.35 #in V\n",
+ "A= pi*D**2/4 # in cm**2\n",
+ "N_A= sigma_P/(q*miuP) # at/c\n",
+ "C_T= 2.92*10**-4*(N_A/Vb)**(1/2)*A # \n",
+ "print \" The value of transition = %0.2f pf/cm**2\" %C_T"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The value of transition = 61.68 pf/cm**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.5 : Page No - 196"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Given data\n",
+ "epsilon= 12/(36*pi*10**11) # in F/cm (value of epsilon for silicon)\n",
+ "q= 1.6*10**-19 # in C\n",
+ "# C_T= epsilon*A/d , where d= 2*epsilon*Vi/(q*NA)**(/2)\n",
+ "# Hence C_T/A= epsilon/d= sqrt(q*epsilon/2)*sqrt(NA/Vi)\n",
+ "# Let \n",
+ "value = sqrt(q*epsilon/2) \n",
+ "print \"C_T= %0.1e sqrt(NA/Vi) pF/cm**2\" %(value*10**12)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "C_T= 2.9e-04 sqrt(NA/Vi) pF/cm**2\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.6 : Page No - 197"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Given data\n",
+ "V1= 5 # in V\n",
+ "IncreaseInVolt= 1.5 # in V\n",
+ "C_T1= 20 # in pF\n",
+ "# Formula C_T= lamda/sqrt(V)\n",
+ "lamda= C_T1*sqrt(V1) \n",
+ "# When\n",
+ "V2= V1+IncreaseInVolt # in V\n",
+ "C_T2= lamda/sqrt(V2) \n",
+ "print \" The decrease in capacitance = %0.2f pF\" %(C_T1-C_T2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The decrease in capacitance = 2.46 pF\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.7 : Page No - 198"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Given data\n",
+ "Vf= 0.7 # in V\n",
+ "If= 10 # in mA\n",
+ "If= If*10**-3 # in A\n",
+ "toh= 70 # in ns\n",
+ "Cd= toh*If/Vf # in nf\n",
+ "print \" Diffusion capacitance for a si diode = %0.f nf\" %Cd"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Diffusion capacitance for a si diode = 1 nf\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example - 5.8 : Page No - 198"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Given data\n",
+ "N_A= 4*10**20 # per m**3\n",
+ "Vi= 0.2 # in V\n",
+ "q= 1.6*10**-19 \n",
+ "V= -1 # in V\n",
+ "A= 0.8*10**-6 #/ in m**2\n",
+ "epsilon_r= 16 \n",
+ "epsilon_o= 8.854*10**-12 # in F\n",
+ "epsilon= epsilon_o*epsilon_r \n",
+ "d= (2*epsilon*(Vi-V)/(q*N_A))**(1/2) \n",
+ "C_T= epsilon*A/d # in F\n",
+ "print \" The transition capacitance = %0.2f pF\" %(C_T*10**12)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The transition capacitance = 49.17 pF\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file