From fae74ebba9da6bd3359ba121fead7d5b8a313398 Mon Sep 17 00:00:00 2001 From: Trupti Kini Date: Wed, 13 Jul 2016 23:30:32 +0600 Subject: Added(A)/Deleted(D) following books A Analog_Electronics_by_U._A._Bakshi_And_A._P._Godse/README.txt A Applied_Thermodynamics_and_Engineering_by_T._D._Eastop_and_A._Mcconkey/README.txt A Engineering_Mechanics_of_Solids_by_Popov_E_P/Chapter1_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter10_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter11_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter12_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter13_7.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter2_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter4_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter5_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter6_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter7_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter8_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter9_8.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/charpter_3_9.ipynb A Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/1_6.PNG A Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/2_6.PNG A Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/3_6.PNG A Fundamentals_Of_Electronic_Devices_by_P._Raja,_Pragati_Sharma/README.txt A Grobs_Basic_Electronics_by_M_E_Schultz/README.txt A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/.chapter2.ipynb.swp A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/Chapter9_11.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter1_11.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter2_9.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter3_9.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter4_11.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter6_11.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter7_11.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter8_11.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter_5_11.ipynb A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex1.2_6.png A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex3.7_3.png A Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex6.5_3.png A Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_4.ipynb A Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_4.ipynb A Microwave_engineering__by_D.M.Pozar_/screenshots/chap_1_1.png A Microwave_engineering__by_D.M.Pozar_/screenshots/chap_2_1.png A Microwave_engineering__by_D.M.Pozar_/screenshots/chap_3_1.png --- .../README.txt | 10 + .../README.txt | 10 + .../Chapter1_8.ipynb | 393 ++++ .../chapter10_8.ipynb | 785 +++++++ .../chapter11_8.ipynb | 376 ++++ .../chapter12_8.ipynb | 411 ++++ .../chapter13_7.ipynb | 225 ++ .../chapter2_8.ipynb | 325 +++ .../chapter4_8.ipynb | 439 ++++ .../chapter5_8.ipynb | 885 ++++++++ .../chapter6_8.ipynb | 570 +++++ .../chapter7_8.ipynb | 257 +++ .../chapter8_8.ipynb | 345 +++ .../chapter9_8.ipynb | 229 ++ .../charpter_3_9.ipynb | 288 +++ .../screenshots/1_6.PNG | Bin 0 -> 55244 bytes .../screenshots/2_6.PNG | Bin 0 -> 43946 bytes .../screenshots/3_6.PNG | Bin 0 -> 55584 bytes .../README.txt | 10 + Grobs_Basic_Electronics_by_M_E_Schultz/README.txt | 10 + .../.chapter2.ipynb.swp | Bin 0 -> 16384 bytes .../Chapter9_11.ipynb | 421 ++++ .../chapter1_11.ipynb | 629 ++++++ .../chapter2_9.ipynb | 2188 ++++++++++++++++++++ .../chapter3_9.ipynb | 1140 ++++++++++ .../chapter4_11.ipynb | 880 ++++++++ .../chapter6_11.ipynb | 1072 ++++++++++ .../chapter7_11.ipynb | 714 +++++++ .../chapter8_11.ipynb | 1093 ++++++++++ .../chapter_5_11.ipynb | 359 ++++ .../screenshots/ex1.2_6.png | Bin 0 -> 18718 bytes .../screenshots/ex3.7_3.png | Bin 0 -> 17630 bytes .../screenshots/ex6.5_3.png | Bin 0 -> 32808 bytes .../Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_4.ipynb | 227 ++ ...er_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_4.ipynb | 264 +++ .../Chapter_1_ELECTROMAGNETIC_THEORY_4.ipynb | 298 +++ .../Chapter_2_TRANSMISSION_LINE_THEORY_4.ipynb | 496 +++++ ...pter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_4.ipynb | 367 ++++ .../Chapter_4_MICROWAVE_NETWORK_ANALYSIS_4.ipynb | 308 +++ ...hapter_5_IMPEDENCE_MATCHING_AND_TUNNING_4.ipynb | 200 ++ .../Chapter_6_MICROWAVE_RESONATORS_4.ipynb | 328 +++ ...VIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_4.ipynb | 393 ++++ .../Chapter_8_MICROWAVE_FILTERS_4.ipynb | 449 ++++ ..._AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_4.ipynb | 151 ++ .../screenshots/chap_1_1.png | Bin 0 -> 29714 bytes .../screenshots/chap_2_1.png | Bin 0 -> 83597 bytes .../screenshots/chap_3_1.png | Bin 0 -> 31590 bytes 47 files changed, 17545 insertions(+) create mode 100644 Analog_Electronics_by_U._A._Bakshi_And_A._P._Godse/README.txt create mode 100644 Applied_Thermodynamics_and_Engineering_by_T._D._Eastop_and_A._Mcconkey/README.txt create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/Chapter1_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter10_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter11_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter12_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter13_7.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter2_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter4_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter5_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter6_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter7_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter8_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter9_8.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/charpter_3_9.ipynb create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/1_6.PNG create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/2_6.PNG create mode 100644 Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/3_6.PNG create mode 100644 Fundamentals_Of_Electronic_Devices_by_P._Raja,_Pragati_Sharma/README.txt create mode 100644 Grobs_Basic_Electronics_by_M_E_Schultz/README.txt create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/.chapter2.ipynb.swp create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/Chapter9_11.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter1_11.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter2_9.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter3_9.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter4_11.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter6_11.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter7_11.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter8_11.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter_5_11.ipynb create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex1.2_6.png create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex3.7_3.png create mode 100644 Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex6.5_3.png create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_4.ipynb create mode 100644 Microwave_engineering__by_D.M.Pozar_/screenshots/chap_1_1.png create mode 100644 Microwave_engineering__by_D.M.Pozar_/screenshots/chap_2_1.png create mode 100644 Microwave_engineering__by_D.M.Pozar_/screenshots/chap_3_1.png diff --git a/Analog_Electronics_by_U._A._Bakshi_And_A._P._Godse/README.txt b/Analog_Electronics_by_U._A._Bakshi_And_A._P._Godse/README.txt new file mode 100644 index 00000000..c4aa1484 --- /dev/null +++ b/Analog_Electronics_by_U._A._Bakshi_And_A._P._Godse/README.txt @@ -0,0 +1,10 @@ +Contributed By: Nitin Kumar +Course: btech +College/Institute/Organization: Uttarakhand Technical University +Department/Designation: EC +Book Title: Analog Electronics +Author: U. A. Bakshi And A. P. Godse +Publisher: Technical Publications, Pune +Year of publication: 2009 +Isbn: 8184316100, 9788184316100 +Edition: 9 \ No newline at end of file diff --git a/Applied_Thermodynamics_and_Engineering_by_T._D._Eastop_and_A._Mcconkey/README.txt b/Applied_Thermodynamics_and_Engineering_by_T._D._Eastop_and_A._Mcconkey/README.txt new file mode 100644 index 00000000..4c5b44f7 --- /dev/null +++ b/Applied_Thermodynamics_and_Engineering_by_T._D._Eastop_and_A._Mcconkey/README.txt @@ -0,0 +1,10 @@ +Contributed By: Saurabh Barot +Course: mtech +College/Institute/Organization: Nirma University +Department/Designation: Electrical Power System +Book Title: Applied Thermodynamics and Engineering +Author: T. D. Eastop and A. Mcconkey +Publisher: Pearson Education Ltd. +Year of publication: 2009 +Isbn: 978-81-7758-238-3 +Edition: 5 \ No newline at end of file diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/Chapter1_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/Chapter1_8.ipynb new file mode 100644 index 00000000..f31c3f93 --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/Chapter1_8.ipynb @@ -0,0 +1,393 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 : Stress, Axial loads and Safety concepts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.1 page number 24" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The bearing stress at C is 0.875 MPA\n", + "The maximum normal stress in BD bolt is: 62.0 MPA\n", + "The tensile strss at shank of the bolt is: 40.0 MPA\n" + ] + } + ], + "source": [ + "#Given\n", + "import math\n", + "d_bolt = 20.0 #mm,diameter,This is not the minimum area\n", + "d_bolt_min = 16.0 #mm This is at the roots of the thread \n", + "#This yealds maximum stress \n", + "A_crossection = (math.pi)*(d_bolt**2)/4 #mm*2\n", + "A_crossection_min = (math.pi)*(d_bolt_min**2)/4 #mm*2 ,This is minimum area which yeilds maximum stress\n", + "load = 10.0 #KN\n", + "BC = 1.0 #m\n", + "CF = 2.5 #m\n", + "contact_area = 200*200 # mm*2 , The contact area at c\n", + "\n", + "#caliculations \n", + "#Balancing forces in the x direction:\n", + "# Balncing the moments about C and B:\n", + "Fx = 0 \n", + "R_cy = load*(BC+CF) #KN , Reaction at C in y-direction\n", + "R_by = load*(CF) #KN , Reaction at B in y-direction\n", + "#Because of 2 bolts\n", + "stress_max = (R_by/(2*A_crossection_min))*(10**3) # MPA,maximum stess records at minimum area\n", + "stress_shank = (R_by/(2*A_crossection))*(10**3) # MPA\n", + "Bearing_stress_c = (R_cy/contact_area)*(10**3) #MPA, Bearing stress at C\n", + "\n", + "print\"The bearing stress at C is \",(Bearing_stress_c) ,\"MPA\"\n", + "print\"The maximum normal stress in BD bolt is: \",round(stress_max),\"MPA\"\n", + "print\"The tensile strss at shank of the bolt is: \",round(stress_shank),\"MPA\"\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.2 page number 26" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The total weight of pier is 25.0 KN\n", + "The stress at 1 m above is 28.75 MPA\n" + ] + } + ], + "source": [ + "#Given \n", + "load_distributed = 20 #KN/m*2, This is the load distributed over the pier\n", + "H = 2 # m, Total height \n", + "h = 1 #m , point of investigation \n", + "base = 1.5 #m The length of crossection in side veiw \n", + "top = 0.5 #m ,The length where load is distributed on top\n", + "base_inv = 1 #m , the length at the point of investigation \n", + "area = 0.5*1 #m ,The length at a-a crossection \n", + "density_conc = 25 #KN/m*2\n", + "#caliculation of total weight \n", + "\n", + "v_total = ((top+base)/2)*top*H #m*2 ,The total volume \n", + "w_total = v_total* density_conc #KN , The total weight\n", + "R_top = (top**2)*load_distributed #KN , THe reaction force due to load distribution \n", + "reaction_net = w_total + R_top\n", + "\n", + "#caliculation of State of stress at 1m \n", + "v_inv = ((top+base_inv)/2)*top*h #m*2 ,The total volume from 1m to top\n", + "w_inv = v_inv*density_conc #KN , The total weight from 1m to top\n", + "reaction_net = w_inv + R_top #KN\n", + "Stress = reaction_net/area #KN/m*2\n", + "print\"The total weight of pier is\",w_total,\"KN\"\n", + "print\"The stress at 1 m above is\",Stress,\"MPA\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.3 page number 27" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tensile stress in main bar AB: 17.89 Ksi\n", + "Tensile stress in clevis of main bar AB: 11.18 Ksi\n", + "Comprensive stress in main bar BC: 12.93 Ksi\n", + "Bearing stress in pin at C: 18.86 Ksi\n", + "torsion stress in pin at C: -25.62 Ksi\n" + ] + } + ], + "source": [ + "#Given\n", + "from math import pow\n", + "d_pins = 0.375 #inch\n", + "load = 3 #Kips\n", + "AB_x = 6 #inch,X-component\n", + "AB_y = 3 #inch,Y-component \n", + "BC_y = 6 #inch,Y-component\n", + "BC_x = 6 #inch,X-component\n", + "area_AB = 0.25*0.5 #inch*2 \n", + "area_net = 0.20*2*(0.875-0.375) #inch*2 \n", + "area_BC = 0.875*0.25 #inch*2 \n", + "area_pin = d_pins*2*0.20 #inch*2 \n", + "area_pin_crossection = 3.14*((d_pins/2)**2)\n", + "#caliculations\n", + "\n", + "slope = AB_y/ AB_x #For AB\n", + "slope = BC_y/ BC_x #For BC\n", + "\n", + "#momentum at point C:\n", + "F_A_x = (load*AB_x )/(BC_y + AB_y ) #Kips, F_A_x X-component of F_A\n", + "\n", + "#momentum at point A:\n", + "F_C_x = -(load*BC_x)/(BC_y + AB_y ) #Kips, F_C_x X-component of F_c\n", + "\n", + "#X,Y components of F_A\n", + "F_A= (pow(5,0.5)/2)*F_A_x #Kips\n", + "F_A_y = 0.5*F_A_x #Kips\n", + "\n", + "#X,Y components of F_C \n", + "F_C= pow(2,0.5)*F_C_x #Kips\n", + "F_C_y = F_C_x #Kips\n", + "\n", + "T_stress_AB = F_A/area_AB #Ksi , Tensile stress in main bar AB\n", + "stress_clevis = F_A/area_net #Ksi ,Tensile stress in clevis of main bar AB\n", + "c_strees_BC = F_C/area_BC #Ksi , Comprensive stress in main bar BC\n", + "B_stress_pin = F_C/area_pin #Ksi , Bearing stress in pin at C\n", + "To_stress_pin = F_C/area_pin_crossection #Ksi , torsion stress in pin at C\n", + "\n", + "print\"Tensile stress in main bar AB:\",round(T_stress_AB,2),\"Ksi\"\n", + "print\"Tensile stress in clevis of main bar AB:\",round(stress_clevis,2),\"Ksi\"\n", + "print\"Comprensive stress in main bar BC:\",round(-c_strees_BC,2),\"Ksi\"\n", + "print\"Bearing stress in pin at C:\",round(-B_stress_pin,2),\"Ksi\"\n", + "print\"torsion stress in pin at C:\",round(To_stress_pin,2),\"Ksi\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.4 page number 38" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The factor 2.5 is less than assumed factor 2.7 so this can be considered\n" + ] + } + ], + "source": [ + "#Given\n", + "strength_steel = 120 #Ksi\n", + "factor = 2.5\n", + "F_C = 2.23 #Ksi\n", + "\n", + "#caliculations\n", + "\n", + "stress_allow = strength_steel/factor #Ksi\n", + "A_net = F_C/strength_steel #in*2 , \n", + "#lets adopt 0.20x0.25 in*2 and check wether we are correct or not? \n", + "\n", + "A_net_assumption = 0.25*0.20 #in*2 , this is assumed area which is near to A_net\n", + "stress = 2.23/A_net_assumption #Ksi\n", + "factor_assumed = strength_steel/stress \n", + "\n", + "if factor_assumed > factor :\n", + " print \"The factor\",factor,\"is less than assumed factor\",round(factor_assumed,1),\"so this can be considered\"\n", + "else:\n", + " print \"The assumed factor\",factor, \"is more than assumed factor\",factor_assumed,\"factor_assumed\"\n", + " \n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.6 page number 35" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The required size of rod is: 49.35 m*2\n" + ] + } + ], + "source": [ + "#Given\n", + "mass = 5 #Kg\n", + "frequency = 10 #Hz\n", + "stress_allow = 200 #MPa\n", + "R = 0.5 #m\n", + "\n", + "#caliculations \n", + "from math import pi\n", + "w = 2*pi*frequency #rad/sec\n", + "a = (w**2)*R #m*2/sec\n", + "F = mass*a #N\n", + "A_req = F/stress_allow #m*2 , The required area for aloowing stress\n", + "print\"The required size of rod is:\",round(A_req,2),\"m*2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.7 page number 45" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the allowable area for live load 1.0 is 0.273 in*2\n", + "the allowable area for live load 15 is 0.909 in*2\n", + "the crossection area for live load 1.0 is 0.235 in*2\n", + "the crossection area for live load 15 is 0.926 in*2\n" + ] + } + ], + "source": [ + "#Given\n", + "D_n = 5.0 #kips, dead load\n", + "L_n_1 = 1.0 #kips ,live load 1\n", + "L_n_2 = 15 #kips ,live load 2\n", + "stress_allow = 22 #ksi\n", + "phi = 0.9 #probalistic coefficients\n", + "y_stress = 36 #ksi,Yeild strength\n", + "#According to AISR \n", + "\n", + "#a\n", + "p_1 = D_n + L_n_1 #kips since the total load is sum of dead load and live load\n", + "p_2 = D_n + L_n_2 #kips, For second live load\n", + "\n", + "Area_1 = p_1/stress_allow #in*2 ,the allowable area for the allowed stress\n", + "Area_2 = p_2/stress_allow #in*2\n", + "print \"the allowable area for live load\",L_n_1,\"is\",round(Area_1,3),\"in*2\"\n", + "print \"the allowable area for live load\",L_n_2,\"is\",round(Area_2,3),\"in*2\"\n", + "\n", + "#b\n", + "#area_crossection= (1.2*D_n +1.6L_n)/(phi*y_stress)\n", + "\n", + "area_crossection_1= (1.2*D_n +1.6*L_n_1)/(phi*y_stress) #in*2,crossection area for first live load\n", + "area_crossection_2= (1.2*D_n +1.6*L_n_2)/(phi*y_stress) #in*2,crossection area for second live load\n", + "print \"the crossection area for live load\",L_n_1,\"is\",round(area_crossection_1,3),\"in*2\"\n", + "print \"the crossection area for live load\",L_n_2,\"is\",round(area_crossection_2,3),\"in*2\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1.8 page number 51" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of the Weld 1: 2.54 in\n", + "Length of the Weld 2: 4.65 in\n" + ] + } + ], + "source": [ + "#Given\n", + "A_angle = 2 #in*2 \n", + "stress_allow = 20 #ksi, The maximum alowable stress\n", + "F = stress_allow*A_angle #K, The maximum force\n", + "AD = 3 #in, from the figure\n", + "DC = 1.06 #in, from the figure\n", + "strength_AWS = 5.56 # kips/in,Allowable strength according to AWS\n", + "\n", + "#caliculations \n", + "#momentum at point \"d\" is equal to 0\n", + "R_1 = (F*DC)/AD #k,Resultant force developed by the weld\n", + "R_2 = (F*(AD-DC))/AD #k,Resultant force developed by the weld\n", + "\n", + "l_1 = R_1/strength_AWS #in,Length of the Weld 1\n", + "l_2 = R_2/strength_AWS #in,Length of the Weld 2\n", + " \n", + "print \"Length of the Weld 1:\",round(l_1,2),\"in\"\n", + "print \"Length of the Weld 2:\",round(l_2,2),\"in\" \n", + " \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter10_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter10_8.ipynb new file mode 100644 index 00000000..739ebe17 --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter10_8.ipynb @@ -0,0 +1,785 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 10:Deflections of beams " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.1 page number 501" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum bending stress developed in the saw 300.0 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "dia = 400 #mm - The diameter of a pulley\n", + "E = 200 #Gpa - Youngs modulus\n", + "t = 0.6 #mm - The thickness of band\n", + "c = t/2 #mm - The maximum stress is seen \n", + "#Caliculations\n", + "\n", + "stress_max = E*c*(10**3)/(dia/2) #Mpa - The maximum stress on the crossection occurs at the ends\n", + "print \"The maximum bending stress developed in the saw \",stress_max,\"Mpa\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.3 page number 512" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a) The maximum displacement in y direction is -0.0130208333333 W(l**4)/EI \n", + "a) The maximum deflection occured at 0.5 L\n" + ] + }, + { + "data": { + "image/png": "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\n/vJBW0Moy/YAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b) The above graph is bending moment graph\n" + ] + }, + { + "data": { + "image/png": "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\n6zF3pLt3xAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b)The above graph is beam displacement graph\n", + "b)The maximum occures in the middle from the above graph \n" + ] + } + ], + "source": [ + "#Given\n", + "import numpy\n", + "l_ab = 1.0 #L in - The length of the beam\n", + "F_D = 1.0 #W lb/in - The force distribution \n", + "F = F_D*l_ab #WL - The force applied\n", + "#Beause of symmetry the moment caliculations can be neglected\n", + "#F_Y = 0\n", + "R_A = F/2 #wl - The reactive force at A\n", + "R_B = F/2 #wl - The reactive force at B\n", + "#EI - The flxure rigidity is constant and 1/EI =1 # k\n", + "\n", + "#part - A\n", + "#section 1--1\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.1L distance \n", + "M_1 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "v = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " v[i] = R_A - F_D*l_1[i] \n", + " M_1[i] = R_A*l_1[i] - F_D*(l_1[i]**2)/2\n", + "# (EI)y'' = M_1[i] we will integrate M_1[i] twice where variable is l_1[i]\n", + "#(EI)y'- \n", + "\n", + "M_1_intg1 = R_A*(l_1[i]**2)/4 - F_D*(l_1[i]**3)/6 - F_D*(l_ab**3)*l_1[i]/24 #integration of x**n = x**n+1/n+1\n", + "#(EI)y- Using end conditions for caliculating constants \n", + "\n", + "M_1_intg2 = R_A*(l_1[i]**3)/12.0 - F_D*(l_1[i]**4)/24.0 + F_D*(l_ab**3)*l_1[i]/24.0 \n", + "#Equations \n", + "\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.1L distance \n", + "M_1_intg2 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "Y = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " M_1_intg2[i] = (l_1[i]**3)/12.0 - (l_1[i]**4)/24.0 - l_1[i]/24.0 # discluding every term for ruling out float values\n", + " Y[i] = M_1_intg2[i] #W(l**4)/EI k = 1/EI\n", + "#The precision is very less while caliculating through this equation because the least count in X direction is 0.1\n", + "print \"a) The maximum displacement in y direction is\",min(Y),\"W(l**4)/EI \"\n", + "print \"a) The maximum deflection occured at\",l_1[Y.index(min(Y))],\"L\"\n", + "\n", + "#Part - B\n", + "#Graphs\n", + "import numpy as np\n", + "values = M_1\n", + "y = np.array(values)\n", + "t = np.linspace(0,1,11)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "print \"b) The above graph is bending moment graph\"\n", + "values = Y \n", + "y = np.array(values)\n", + "t = np.linspace(0,1,11)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "print \"b)The above graph is beam displacement graph\"\n", + "print \"b)The maximum occures in the middle from the above graph \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.5 page number 517" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The reaction at A is 0.375 WL\n", + "The reaction at B is 0.625 WL\n", + "The reaction at C is 0.375 WL\n" + ] + } + ], + "source": [ + "#Given \n", + "#because of symmetry the problem can be solved by considering first half\n", + "#Given\n", + "import numpy\n", + "\n", + "l_ab = 1.0 #L in - The length of the beam\n", + "F_D = 1.0 #W lb/in - The force distribution \n", + "F = F_D*l_ab #WL - The force applied\n", + "#Beause of symmetry the moment caliculations can be neglected\n", + "#EI - The flxure rigidity is constant and 1/EI =1 # k\n", + "\n", + "#part - A\n", + "#section 1--1\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.1L distance \n", + "M_1 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "v = [0,0,0,0,0,0,0,0,0,0,0]\n", + "\n", + "\n", + "# M_1_intg2[10] = 0, the displacement at the end of rod is 0 since its rigid \n", + "R_A = (F_D*(l_1[10]**4)/24.0 + F_D*(l_ab**3)*l_1[10]/48.0)/((l_1[10]**3)/6.0)\n", + "R_C = R_A #WL - symmetry\n", + "R_B = 1-R_A # WL - F_Y = 0, the equilibrium in Y direction\n", + "print \"The reaction at A is\",R_A ,\"WL\"\n", + "print \"The reaction at B is\",R_B ,\"WL\"\n", + "print \"The reaction at C is\",R_C ,\"WL\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.7 page number 521 " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b) The shape from x belongs to 0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b) The shape from x belongs to 4" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "import numpy as np\n", + "# This problem is divided into two parts\n", + "#Part _1\n", + "#Given\n", + "\n", + "l = 1.0 #l - The length of the beam\n", + "p = 1.0 #W - The total load applied\n", + "#since it is triangular distribution \n", + "l_com = 0.66*l #l - The distance of force of action from one end\n", + "#F_Y = 0\n", + "#R_A + R_B = p\n", + "#M_a = 0 Implies that R_B = 2*R_A\n", + "R_A = p/3.0\n", + "R_B = 2.0*p/3\n", + "\n", + "#Taking Many sections \n", + "\n", + "#Section 1----1\n", + "l = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.1L distance \n", + "M = [0,0,0,0,0,0,0,0,0,0,0]\n", + "v = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " v[i] = p*(l[i]**2) - p/3.0\n", + " M[i] = p*(l[i]**3)/(3.0)- p*l[i]/3.0\n", + "\n", + "v[10] = R_B #again concluded Because the value is tearing of \n", + "\n", + "\n", + "#Graph\n", + "values = M\n", + "y = np.array(values)\n", + "t = np.linspace(0,1,11)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "values = v\n", + "y = np.array(values)\n", + "t = np.linspace(0,1,11)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "\n", + "\n", + "#part B\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter11_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter11_8.ipynb new file mode 100644 index 00000000..411b3c0a --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter11_8.ipynb @@ -0,0 +1,376 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 11:Stability of Equilibrium: columns " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.2 page number 589" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The length after which the beam starts buckling is 1539.0 mm\n" + ] + } + ], + "source": [ + "#Given \n", + "import math\n", + "h = 60 #mm - the length of the crossection \n", + "b = 100 #mm - the width of hte crossection \n", + "E = 200 #Gpa - The youngs modulus\n", + "stress_cr = 250 #Mpa - The proportionality limit\n", + "#Caliculations \n", + "\n", + "I = b*(h**3)/12 #mm3 The momentof inertia of the crossection\n", + "A = h*b #mm2 - The area of teh crossection \n", + "#From Eulier formula\n", + "r_min = pow((I/A),0.5) #mm - The radius of the gyration \n", + "#(l/r)**2= (pi**2)*E/stress_cr #From Eulier formula\n", + "l = (((math.pi**2)*E*(10**3)/stress_cr)**0.5)*r_min #mm - the length after which the beam starts buckling\n", + "print \"The length after which the beam starts buckling is \",round(l,0),\"mm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.6 page number 613" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a)The following approch is solvable\n", + "a) The allowable stress in this case is 18.9 Kips\n", + "b) The following approch is solvable\n", + "b) The allowable stress in this case is 11.59 Kips\n" + ] + } + ], + "source": [ + "#Given\n", + "import math\n", + "L = 15 #ft - The length of the each rod\n", + "A = 46.7 #in2 - The length of the crossection \n", + "r_min = 4 #in - The radius of gyration\n", + "stress_yp = 36 #Ksi - the yielding point stress\n", + "E = 29*(10**3) #ksi - The youngs modulus\n", + "C_c = ((2*(math.pi**2)*E/stress_yp)**0.5) #Slenderness ratio L/R\n", + "C_s = L*12/r_min # Slenderness ratio L/R of the present situation \n", + "#According to AISC formulas \n", + "if C_s 1\n", + "The following approch is solvable\n", + "The following W10x49 section is satisfying our constraints since f_a/F_a_1 + c_m*f_b*(1-(f_a/F_e))/F_b 0.9 <1\n" + ] + } + ], + "source": [ + "import math\n", + "P = 200.0 #K The force on the beam \n", + "L = 15 #ft - The length of the rod\n", + "F_y = 50.0 #Ksi \n", + "F_a = F_y/(5.0/3) #Ksi -AISC MANUAL ,allowable axial stress if axial force is alone\n", + "F_b = F_a #Allowable compressive bending stress\n", + "M_1 = 600.0 #k-in - The moment acting on the ends of the rod\n", + "M_2 = 800.0 #k-in - the moment acting on the other end of teh rod\n", + "B_x = 0.264 #in - Extracted from AISC manual \n", + "E = 29*(10**3) \n", + "A = P/F_a + M_2*B_x/F_b #in2- The minimum area \n", + "print \"The minimum area is \",round(A,2),\"in2\"\n", + "#we will select W10x49 section \n", + "A_s = 14.4 #in2 - The area of the section \n", + "r_min = 2.54 #in The minimum radius \n", + "r_x = 4.35 #in \n", + "f_a = P/A_s #Ksi- The computed axial stress\n", + "f_b = M_2*B_x/A_s #Computed bending stess\n", + "C_c = ((2*(math.pi**2)*E/F_y)**0.5) #Slenderness ratio L/R\n", + "C_s = L*12/r_min # Slenderness ratio L/R of the present situation\n", + "if C_s 1:\n", + " print \"The following W10x49 section is not satisfying our constraints since f_a/F_a_1 + c_m*f_b*(1-(f_a/F_e))/F_b\",round(k,3),\">1\"\n", + "else:\n", + " print \"The following W10x49 section is satisfying our constraints since f_a/F_a_1 + c_m*f_b*(1-(f_a/F_e))/F_b\",k,\"<1\"\n", + " \n", + "#trail - 2\n", + "#Lets take W10 x 60\n", + "A_s = 17.6 #in2 - The area of the section \n", + "r_min = 2.57 #in The minimum radius \n", + "r_x = 4.39 #in \n", + "f_a = P/A_s #Ksi- The computed axial stress\n", + "f_b = M_2*B_x/A_s #Computed bending stess\n", + "C_c = ((2*(math.pi**2)*E/F_y)**0.5) #Slenderness ratio L/R\n", + "C_s = L*12/r_min # Slenderness ratio L/R of the present situation\n", + "if C_s 1:\n", + " print \"The following W10x49 section is not satisfying our constraints since f_a/F_a_1 + c_m*f_b*(1-(f_a/F_e))/F_b\",round(k,3),\">1\"\n", + "else:\n", + " print \"The following W10x49 section is satisfying our constraints since f_a/F_a_1 + c_m*f_b*(1-(f_a/F_e))/F_b\",round(k,2),\"<1\"\n", + " \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter12_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter12_8.ipynb new file mode 100644 index 00000000..71380130 --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter12_8.ipynb @@ -0,0 +1,411 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 12:Energy and Virtual-work Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.1 page number 645 " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a) The deflection is downwards 0.044 in\n", + "b) The deflection is upwards 0.104 in\n", + "c) The deflection is downwards 0.039 in\n" + ] + } + ], + "source": [ + "#Given\n", + "#Virtual loading\n", + "p_ab = -0.833 #lb The recorded virtual loading\n", + "p_bc = + 0.833 #lb The recorded virtual loading\n", + "F_ab = 2500 #lb\n", + "F_bc = -2500 #lb\n", + "l_ab = 60 #in - The length of the rod\n", + "l_bc = 60 #in - The length of the rod\n", + "A_ab = 0.15 #in2 the areaof ab\n", + "A_bc = 0.25 #in2 the areaof bc\n", + "E = 30*(10**6) #psi The youngs modulus of the material\n", + "#Part_a\n", + "e_a =p_ab*l_ab*F_ab/(A_ab*E) + p_bc*l_bc*F_bc/(A_bc*E) #in the deflection\n", + "if e_a<0:\n", + " print \"a) The deflection is downwards\",round(-e_a,3),\"in\"\n", + "else:\n", + " print \"a) The deflection is upwards\",round(e_a,3),\"in\"\n", + "#part-b\n", + "x = 0.125 #Shortening of member Ab\n", + "e_b = p_ab*(-x) + p_bc*0 #in - in\n", + "if e_b<0:\n", + " print \"b) The deflection is downwards\",round(-e_b,3),\"in\"\n", + "else:\n", + " print \"b) The deflection is upwards\",round(e_b,3),\"in\"\n", + "#Part-c\n", + "S = 6.5*(10**-6) #Thermal specific heat\n", + "T = 120 #F - The cahnge in temperature\n", + "e_t = -S*T*l_ab #in - The change in length of member\n", + "e_c = p_bc*e_t #in the deflection\n", + "if e_c<0:\n", + " print \"c) The deflection is downwards\",round(-e_c,3),\"in\"\n", + "else:\n", + " print \"c) The deflection is upwards\",round(e_c,3),\"in\"\n", + "\n", + "\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.3 page number 648" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The point C deflects 0.019 mt down\n" + ] + } + ], + "source": [ + "#Given\n", + "#Virtual loading\n", + "#Two parts \n", + "#Part -1 \n", + "p_ab = 5 #KN The recorded virtual loading\n", + "p_bc = -4 #KN The recorded virtual loading\n", + "F_ab = 10 #KN\n", + "F_bc = -8 #KN\n", + "l_ab = 2.5 #mt - The length of the rod\n", + "l_bc = 2 #mt - The length of the rod\n", + "A_ab = 5*(10**-4) #mt2 the areaof ab\n", + "A_bc = 5*(10**-3) #mt2 the areaof bc\n", + "E = 70 #Gpa The youngs modulus of the material\n", + "e_a =(p_ab*l_ab*F_ab/(A_ab*E) + p_bc*l_bc*F_bc/(A_bc*E))*(10**-6) #KN-m\n", + "#Part -2 due to flexure\n", + "I = 60*10**6 #mm4 - the moment of inertia \n", + "#After solving the integration \n", + "e_b = 0.01525 #KN-m\n", + "#Total\n", + "e = (e_a+e_b)*1 #m\n", + "print \"The point C deflects\",round(e,3),\"mt down\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.5 page number 651" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The reaction force at D is 1578.98 lb\n", + "The deflection of nodal point B 0.0211 in\n" + ] + } + ], + "source": [ + "#Given\n", + "#Virtual loading Without f_d\n", + "p_ab = -0.833 #lb The recorded virtual loading\n", + "p_bc = + 0.833 #lb The recorded virtual loading\n", + "F_ab = 2500 #lb\n", + "F_bc = -2500 #lb\n", + "l_ab = 60 #in - The length of the rod\n", + "l_bc = 60 #in - The length of the rod\n", + "A_ab = 0.15 #in2 the areaof ab\n", + "A_bc = 0.25 #in2 the areaof bc\n", + "E = 30*(10**6) #psi The youngs modulus of the material\n", + "#Part_a\n", + "e_a =p_ab*l_ab*F_ab/(A_ab*E) + p_bc*l_bc*F_bc/(A_bc*E) #lb-in the deflection\n", + "#With f_d\n", + "p_bd = 1 #lb The recorded virtual loading \n", + "F_bd = 1 #lb\n", + "l_bd = 40 #in - The length of the rod\n", + "A_bd = 0.1 #in2 the areaof ab\n", + "e_a_1 =p_ab*p_ab*l_ab/(A_ab*E) + p_bc*p_bc*l_bc/(A_bc*E) +p_bd*p_bd*l_bd/(A_bd*E) #lb-in the deflection\n", + "#Since the produced defelection should compensate the other one\n", + "x_d = e_a/e_a_1\n", + "print \"The reaction force at D is\",round(-x_d,2),\"lb\"\n", + "\n", + "#Part - B\n", + "e_b = -x_d*l_bd/(A_bd*E ) #in - The deflection of nodal point B\n", + "print\"The deflection of nodal point B\",round(e_b,4),\"in\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.6 page number 655" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The reaction at A 2.5 k\n", + "The reaction at B -2.5 k\n" + ] + } + ], + "source": [ + "#Given\n", + "#Virtual loading\n", + "import numpy as np\n", + "p_ab = -0.833 #lb The recorded virtual loading\n", + "p_bc = + 0.833 #lb The recorded virtual loading \n", + "l_ab = 60 #in - The length of the rod\n", + "l_bc = 60 #in - The length of the rod\n", + "A_ab = 0.15 #in2 the areaof ab\n", + "A_bc = 0.25 #in2 the areaof bc\n", + "E = 30*(10**6) #psi The youngs modulus of the material\n", + "K_1 = A_ab*E/l_ab #k/in - Stiffness\n", + "K_2 = A_bc*E/l_bc #k/in - Stiffness\n", + "#soving for e_1 and e_2 gives a liner euations to solve\n", + "# 128*e_1 + 24*e_2 = 0\n", + "#24*e_1 + 72*e_2 = -3\n", + "#Solving for e_1,e_2\n", + "a = np.array([[128,24], [24,72]])\n", + "b = np.array([0,-3])\n", + "x = np.linalg.solve(a, b)\n", + "e_1 = x[0] #in\n", + "e_2 = x[1] #in\n", + "u_1 = 0.8*e_1 - 0.6*e_2 #Taking each components\n", + "F_1 = K_1*u_1*(10**-3) #k The reaction at A Force = stiffness x dislacement \n", + "u_2 = 0.8*e_1 + 0.6*e_2 #Taking each components\n", + "F_2 = K_2*u_2*(10**-3) #k The reaction at B Force\n", + "print \"The reaction at A \",F_1,\"k\"\n", + "print \"The reaction at B \",F_2,\"k\"\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.7 page number 655" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The reaction at A 1.18 k\n", + "The reaction at B -1.18 k\n", + "The reaction at D -1.58 k\n" + ] + } + ], + "source": [ + "#Virtual loading\n", + "import numpy as np\n", + "p_ab = -0.833 #lb The recorded virtual loading\n", + "p_bc = + 0.833 #lb The recorded virtual loading \n", + "l_ab = 60 #in - The length of the rod\n", + "l_bc = 60 #in - The length of the rod\n", + "A_ab = 0.15 #in2 the areaof ab\n", + "A_bc = 0.25 #in2 the areaof bc\n", + "E = 30*(10**6) #psi The youngs modulus of the material\n", + "K_1 = A_ab*E/l_ab #k/in - Stiffness\n", + "K_2 = A_bc*E/l_bc #k/in - Stiffness\n", + "p_bd = 1 #lb The recorded virtual loading \n", + "F_bd = 1 #lb\n", + "l_bd = 40 #in - The length of the rod\n", + "A_bd = 0.1 #in2 the areaof ab\n", + "K_3 = A_ab*E/l_ab #k/in - Stiffness\n", + "#soving for e_1 and e_2 gives a liner euations to solve\n", + "# 128*e_1 + 24*e_2 = 0\n", + "#24*e_1 + 72*e_2 = -3\n", + "#Solving for e_1,e_2\n", + "a = np.array([[128,24], [24,147]])\n", + "b = np.array([0,-3])\n", + "x = np.linalg.solve(a, b)\n", + "e_1 = x[0] #in\n", + "e_2 = x[1] #in\n", + "u_1 = 0.8*e_1 - 0.6*e_2 #Taking each components\n", + "F_1 = K_1*u_1*(10**-3) #k The reaction at A Force = stiffness x dislacement \n", + "u_2 = 0.8*e_1 + 0.6*e_2 #Taking each components\n", + "F_2 = K_2*u_2*(10**-3) #k The reaction at B Force\n", + "u_3 = e_2 #Taking each components\n", + "F_3 = K_3*u_3*(10**-3) #k The reaction at D Force\n", + "print \"The reaction at A \",round(F_1,2),\"k\"\n", + "print \"The reaction at B \",round(F_2,2),\"k\"\n", + "print \"The reaction at D \",round(F_3,2),\"k\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.8 page number 659" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b) The vertical component of the nodal force is [ 12.] \n", + "b) The vertical component of the nodal force is [ 24.] \n", + "a) The components of displacement of point B are 18.75 L/AE and 16.67 L/AE\n" + ] + } + ], + "source": [ + "#Given\n", + "#First we will solve part B\n", + "import numpy as np\n", + "u_1 =5 #L/AE, elastic elongation\n", + "u_2 =25 #L/AE,elastic elongation\n", + "f_1 = u_1#, Units got neutralized , Constitutive relation for elastic bars\n", + "f_2 = u_2# Units got neutralized\n", + "#u_1 = 0.8*e_1 - 0.6*e_2\n", + "#u_2 = 0.8*e_1 + 0.6*e_2\n", + "#u = A*e Matric multiplication \n", + "A = np.array([[0.8,-0.6],[0.8,0.6]]) #The matrix form of A\n", + "F = np.array([[f_1],[f_2]])\n", + "P = np.dot((A.T),F) #Nodal forces matrix\n", + "print \"b) The vertical component of the nodal force is\",P[1],\"\"\n", + "print \"b) The vertical component of the nodal force is\",P[0],\"\"\n", + "#Part A\n", + "#F_1 = (5/8.0)*P_1 - (5/6.0)*p_2 , From statics\n", + "#F_1 = (5/8.0)*P_1 + (5/6.0)*p_2\n", + "#F = BP ,Matric multiplication \n", + "B = np.array([[(5/8.0),-(5/6.0)],[(5/8.0),(5/6.0)]]) #The matrix form of A\n", + "U = np.array([[u_1],[u_2]])\n", + "e = P = np.dot((B.T),U) #L/AE, Nodal forces matrix\n", + "print \"a) The components of displacement of point B are\",round(e[0],2),\"L/AE and\",round(e[1],2),\"L/AE\" \n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.10 page number 667" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The deflection is 0.018 in\n" + ] + } + ], + "source": [ + "#Given\n", + "A_1 = 0.125 #in2 , The area of the crossection of AB\n", + "A_2 = 0.219 #in2 , The area of the crossection of BC\n", + "l_1 = 3*(5**0.5) #in , The length of AB\n", + "l_2 = 6*(2**0.5) #in , The length of BC\n", + "p = 3 #k , Force acting on the system \n", + "E = 10.6*(10**3) #Ksi - youngs modulus of the material\n", + "p_1 = (5**0.5)*p/3 #P, The component of p on AB\n", + "p_2 = -2*(2**0.5)*p/3 #P, The component of p on AB\n", + "\n", + "e = p_1*l_1*p_1/(p*E*A_1) + p_2*l_2*p_2/(p*E*A_2) #in, By virtual deflection method \n", + "print \"The deflection is\",round(e,3),\"in\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter13_7.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter13_7.ipynb new file mode 100644 index 00000000..ef937b7f --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter13_7.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 13: Statically Indeterminate Problems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.2 page number 693" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a) The maximum displacement in y direction is -0.208333333333 W(l**4)/EI \n", + "a) The maximum deflection occured at 1.0 L\n", + "The reaction at the mid of the bar 1.25 WL\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b)The above graph is beam displacement graph\n", + "b)The minimum occures in the middle from the above graph \n" + ] + } + ], + "source": [ + "#Given \n", + "#First we will solve without the reaction at middle\n", + "#Given\n", + "%matplotlib inline \n", + "import numpy\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "l_ab = 1.0 #2L in - The length of the beam\n", + "F_D = 1.0 #W lb/in - The force distribution \n", + "F = F_D*l_ab #WL - The force applied\n", + "#Beause of symmetry the moment caliculations can be neglected\n", + "#F_Y = 0\n", + "R_A = F/2 #wl - The reactive force at A\n", + "R_B = F/2 #wl - The reactive force at B\n", + "#EI - The flxure rigidity is constant and 1/EI =1 # k\n", + "\n", + "#part - A\n", + "#section 1--1\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.2L distance \n", + "M_1 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "v = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " v[i] = R_A - F_D*l_1[i] \n", + " M_1[i] = R_A*l_1[i] - F_D*(l_1[i]**2)/2\n", + "# (EI)y'' = M_1[i] we will integrate M_1[i] twice where variable is l_1[i]\n", + "#(EI)y'- \n", + "\n", + "M_1_intg1 = R_A*(l_1[i]**2)/4 - F_D*(l_1[i]**3)/6 - F_D*(l_ab**3)*l_1[i]/24 #integration of x**n = x**n+1/n+1\n", + "#(EI)y- Using end conditions for caliculating constants \n", + "\n", + "M_1_intg2 = R_A*(l_1[i]**3)/12.0 - F_D*(l_1[i]**4)/24.0 + F_D*(l_ab**3)*l_1[i]/24.0 \n", + "#Equations \n", + "\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.2L distance \n", + "M_1_intg2 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "Y = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " M_1_intg2[i] = (l_1[i]**3)/12.0 - (l_1[i]**4)/24.0 - l_1[i]/24.0 # discluding every term for ruling out float values\n", + " Y[i] = M_1_intg2[i] #W(l**4)/EI k = 1/EI\n", + "Y_min = 16*min(Y)\n", + "print \"a) The maximum displacement in y direction is\",16*min(Y),\"W(l**4)/EI \"\n", + "print \"a) The maximum deflection occured at\",2*l_1[Y.index(min(Y))],\"L\"\n", + "f_bb = 2**3/48.0 #l**3/EI - flexibility coefficient\n", + "Reac = - Y_min/f_bb #WL , The reaction at the mid of the bar\n", + "print \"The reaction at the mid of the bar\",Reac ,\"WL\"\n", + "\n", + "#Graphs \n", + "Y.extend(Y) #Because of symmetry\n", + "values = Y \n", + "y = np.array(values)\n", + "t = np.linspace(0,1,22)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "print \"b)The above graph is beam displacement graph\"\n", + "print \"b)The minimum occures in the middle from the above graph \"\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.3 page number 694 " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The reactive moment at A i.e M_A -0.0714285714286 WL**2\n", + "The reactive force at A i.e R_A -1.14285714286 WL\n" + ] + } + ], + "source": [ + "#Given \n", + "#First we will solve without the reaction at middle\n", + "#Given\n", + "import numpy as np\n", + "l_ab = 1.0 #2L in - The length of the beam\n", + "F_D = 1.0 #W lb/in - The force distribution \n", + "F = F_D*l_ab #WL - The force applied\n", + "#Beause of symmetry the moment caliculations can be neglected\n", + "#F_Y = 0\n", + "R_A = F/2 #wl - The reactive force at A\n", + "R_B = F/2 #wl - The reactive force at B\n", + "#EI - The flxure rigidity is constant and 1/EI =1 # k\n", + "\n", + "#part - A\n", + "#section 1--1\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.2L distance \n", + "M_1 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "v = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " v[i] = R_A - F_D*l_1[i] \n", + " M_1[i] = R_A*l_1[i] - F_D*(l_1[i]**2)/2\n", + "# (EI)y'' = M_1[i] we will integrate M_1[i] twice where variable is l_1[i]\n", + "#(EI)y'- \n", + "\n", + "M_1_intg1 = R_A*(l_1[i]**2)/4 - F_D*(l_1[i]**3)/6 - F_D*(l_ab**3)*l_1[i]/24 #integration of x**n = x**n+1/n+1\n", + "#(EI)y- Using end conditions for caliculating constants \n", + "\n", + "M_1_intg2 = R_A*(l_1[i]**3)/12.0 - F_D*(l_1[i]**4)/24.0 + F_D*(l_ab**3)*l_1[i]/24.0 \n", + "#Equations \n", + "\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.2L distance \n", + "M_1_intg2 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "Y = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " M_1_intg2[i] = (l_1[i]**3)/12.0 - (l_1[i]**4)/24.0 - l_1[i]/24.0 # discluding every term for ruling out float values\n", + " Y[i] = M_1_intg2[i] #W(l**4)/EI k = 1/EI\n", + "e_1 = 16*min(Y) #WL4/EI - The maximum defection \n", + "e_2 = - F_D*((2*l_ab)**3)/24.0 #WL3/EI - The maximum angle\n", + "#Caliculating for momentum and force\n", + "f_ab = ((2*l_ab)**2)/16.0 #L2/EI \n", + "f_bb = ((2*l_ab)**3)/48.0 #L3/EI \n", + "f_aa = 2*l_ab/3.0 #L/EI\n", + "f_ba = ((l_ab)**2)/4.0 #L2/EI\n", + "#F*X = e - Matrix multiplication \n", + "#Solving for X\n", + "a = np.array([[f_aa,f_ba], [f_ba,f_bb]])\n", + "b = np.array([e_2,e_1])\n", + "x = np.linalg.solve(a, b)\n", + "print \"The reactive moment at A i.e M_A\",x[0],\"WL**2\"\n", + "print \"The reactive force at A i.e R_A\",x[1],\"WL\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter2_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter2_8.ipynb new file mode 100644 index 00000000..0c496644 --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter2_8.ipynb @@ -0,0 +1,325 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2:Axial strains and Deformations in bars " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.1 page number 77" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The total deflection is : 1.0 mm\n" + ] + } + ], + "source": [ + "l_ob = 2000 #mm - length of rod ob\n", + "l_bc = 1000 #mm - length of rod bc\n", + "l_cd = 1500 #mm - length of rod cd\n", + "p_ob = 100 #kN - Force in rods \n", + "p_bc = -150 #KN\n", + "p_cd = 50 #KN \n", + "A_ob = 1000 #mm2 - Area of rod ob\n", + "A_bc = 2000 #mm2 - Area of rod bc \n", + "A_cd = 1000 #mm2 - Area of rod cd\n", + "E = 200.0 #GPA \n", + "# the total deflection is algebraic sums of `deflection in each module \n", + "e_1 = p_ob*l_ob/(A_ob*E)\n", + "e_2 = p_bc*l_bc/(A_bc*E)\n", + "e_3 = p_cd*l_cd/(A_cd*E)\n", + "#All units are satisfied \n", + "e_total = e_1+ e_2 + e_3\n", + "print \"The total deflection is :\",round(e_total,3) ,\"mm\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.4 page number 80" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0112677358491\n", + "The vertical stiffness of the combination is 113.14 kips/inch\n" + ] + } + ], + "source": [ + "p_app = 3 #Kips - applied force \n", + "P_A = 2.23 #Kips \n", + "p_B = -2.83 #kips - compressive force\n", + "l_ab = 6.71 #inch\n", + "l_bc = 8.29 #inch\n", + "s_ab = 17.8 #ksi - tensile stress\n", + "s_bc = -12.9 #ksi - compressive stress\n", + "E = 10.6 * pow(10,3) #ksi -youngs modulus \n", + "e_ab = s_ab*l_ab/E\n", + "\n", + "e_bc = s_bc*l_bc/E\n", + "x = e_ab/e_bc #the Ratio of cosines of the deflected angles \n", + "# t_1 and t_2 be deflected angles \n", + "#t_2 = 180-45-26.6-t_1 the sum of angles is 360\n", + "#t_1 = 52.2 degress\n", + "import math\n", + "e = e_ab/math.acos(math.radians(52.2)) #inch\n", + "k = p_app/e # kips/in vertical stiffness of the combination\n", + "print \"The vertical stiffness of the combination is\",round(k,3),\"kips/inch\"\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.6 page number 83" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The lateral strain is: 0.00243 no units\n", + "The longitudinal strain is: 0.00073 no units\n", + "The poissions ratio is: 3.32876712329 no units\n", + "Youngs modulus: 69.8 N/mm2\n" + ] + } + ], + "source": [ + "dia = 50 #mm - diameter of aluminium \n", + "p = 100 # KN - instant force applid\n", + "dia_c = 0.1215 #mm- change in diameter \n", + "l_c = 0.219 #mm - change in length\n", + "l = 300 #mm - length \n", + "strain_dia = dia_c/dia # lateral strain \n", + "strain_l = l_c/l #longitudinal strain \n", + "po = strain_dia/strain_l # poission ratio \n", + "area = 3.14*dia*dia/4 #mm2 area\n", + "E = p*l/(area*l_c) #N/mm2 youngs modulus \n", + "print \"The lateral strain is:\",strain_dia,\"no units\"\n", + "print \"The longitudinal strain is:\",strain_l,\"no units\"\n", + "print \"The poissions ratio is:\",po,\"no units\"\n", + "print \"Youngs modulus:\",round(E,2),\"N/mm2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.7 page number 86" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The displacement in point B is : 0.00795578950395 in\n" + ] + } + ], + "source": [ + "T = 12.9*pow(10,-6) #/F\n", + "t = 100.00 # F \n", + "l_ab = 6.71 #inch\n", + "l_bc = 8.29 #inch\n", + "e_ab = T*t*l_ab #in-elongation \n", + "e_bc = T*t*l_bc #in-elongation\n", + "k = e_ab/e_bc # ratio of cosines of deflected angles \n", + "# t_1 and t_2 be deflected angles \n", + "#t_2 = 180-45-26.6-t_1 the sum of angles is 360\n", + "t_1 = 26.6\n", + "import math\n", + "e = e_ab/math.acos(math.radians(26.6))\n", + "print \"The displacement in point B is :\",e ,\"in\"\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.11 page number " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum stress is: 3.59377281766 Mpa\n" + ] + } + ], + "source": [ + "mass = 4 #kg \n", + "dist = 1 #mt freely falling distance\n", + "l = 1500 #mm length of rod\n", + "d = 15 #mm diameter\n", + "l_ab = 6.71 #inch\n", + "l_bc = 8.29 #inch\n", + "E = 200 #GPA youngs modulus \n", + "k = 4.5 # N/mm stiffness costant\n", + "F = mass*9.81# The force applying\n", + "Area = 3.14*(d**2)/4 \n", + "# Two cases \n", + "#youngs modulus \n", + "e_y = F*l/(Area*E*pow(10,3))\n", + "# stiffness\n", + "e_f = F/k \n", + "#total\n", + "e = e_y +e_f\n", + "k = 1+(2/(e*pow(10,-3)))\n", + "stress_max_1 = F*(1+pow(k,0.5))/Area\n", + "print \"The maximum stress is:\",stress_max_1,\"Mpa\"\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.12 page number 103" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The reactions at bottom is -1.25 p\n" + ] + } + ], + "source": [ + "flex_a = 1#f\n", + "flex_b = 2#f\n", + "#removing lower support and solving FBD\n", + "e = -2 -(2+1)#fp\n", + "#e_1 = (2+1+1)*R\n", + "#e_1 = -e Making the elongations zero since the both ends are fixed\n", + "R = e/(2+1+1.0) #p\n", + "print \"The reactions at bottom is\",R,\"p\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.19 page number 113" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The end deflection is 0.12 in\n" + ] + } + ], + "source": [ + "#Given \n", + "l = 30 #in - The length of the rod\n", + "p_1 = 80 #kips - The Force on the end\n", + "p_2 = 125 #kips - The force on the other end\n", + "A_s = 0.5 #in2 - The crossection of the steel rod\n", + "A_a = 0.5 #in2 - The crossection of the aluminium \n", + "E_a = 10*(10**6) #psi - The youngs modulus of the aluminium \n", + "E_s = 30*(10**6) #psi - The youngs modulus of the steel\n", + "#Internally stastically indeterminant \n", + "p_a = p_1/4 #From solving we get p_s = 3*P_a\n", + "#From material properties point of view \n", + "#stress_steel = stress_aluminium\n", + "e = p_a*l*(10**3)/(A_a*E_a) #The end deflection \n", + "print \"The end deflection is\",e,\"in\"\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter4_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter4_8.ipynb new file mode 100644 index 00000000..35bc689c --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter4_8.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 4:Torsion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.2 page number 183" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum shear due to torsion is 152.87 Mpa\n", + "stress tensor matrix [[ 0. 152.9 0. ]\n", + " [ 152.9 0. 0. ]\n", + " [ 0. 0. 0. ]]\n" + ] + } + ], + "source": [ + "#Given\n", + "dia = 10 #diameter of shaft(A-C)\n", + "c = dia/2 #mm - Radius\n", + "T = 30 #N/mm -Torque in the shaft \n", + "#Caliculations\n", + "\n", + "J = 3.14*(dia**4)/32 #mm4\n", + "shear_T = T*c*pow(10,3)/J # The torsion shear in the shaft AC\n", + "import numpy as np \n", + "print \"The maximum shear due to torsion is \",round(shear_T,2),\"Mpa\"\n", + "arr_T = np.zeros((3,3))\n", + "arr_T[0][1]=round(shear_T,1) #arranging the elements in array\n", + "arr_T[1][0]=round(shear_T,1)\n", + "print \"stress tensor matrix\",(arr_T),\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.3 page number 184" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum shear due to torsion is 43.15 Mpa\n", + "The minimum shear due to torsion is 34.52 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "dia_out = 20 #mm- outer diameter of shaft\n", + "dia_in = 16 #mm- inner diameter of shaft \n", + "c_out = dia_out/2 #mm - outer Radius of shaft \n", + "c_in = dia_in/2 #mm - inner radius of shaft \n", + "T = 40 #N/mm -Torque in the shaft \n", + "#caliculations\n", + "\n", + "J = 3.14*((dia_out**4)- (dia_in**4))/32 #mm4\n", + "shear_T_max = T*c_out*pow(10,3)/J # The maximum torsion shear in the shaft\n", + "shear_T_min = T*c_in*pow(10,3)/J # The maximum torsion shear in the shaft\n", + "print \"The maximum shear due to torsion is \",round(shear_T_max,2),\"Mpa\"\n", + "print \"The minimum shear due to torsion is \",round(shear_T_min,2),\"Mpa\"\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.4 page number 187" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Diameter of the shaft used is 15.26 mm\n" + ] + } + ], + "source": [ + "#Given\n", + "hp = 10 # horse power of motor \n", + "f = 30 # given \n", + "shear_T = 55 #Mpa - The maximum shearing in the shaft \n", + "#caliculations\n", + "\n", + "T = 119*hp/f # N.m The torsion in the shaft \n", + "#j/c=T/shear_T=K\n", + "k = T*pow(10,3)/shear_T #mm3\n", + "#c3=2K/3.14\n", + "c = pow((2*k/3),0.33) #mm - The radius of the shaft \n", + "diamter = 2*c #mm - The diameter of the shaft\n", + "print \"The Diameter of the shaft used is\",round(diamter,2),\"mm\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.5 page number 188" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Diameter of the shaft1 is 6.87 mm\n", + "The Diameter of the shaft2 is 0.702590481015 mm\n" + ] + } + ], + "source": [ + "#Given \n", + "hp = 200 #Horse power\n", + "stress_sh = 10000 #psi- shear stress\n", + "rpm_1 = 20.0 # The rpm at which this shaft1 operates \n", + "rpm_2 = 20000.0 # The rpm at which this shaft2 operates\n", + "T_1= hp*63000.0/rpm_1 #in-lb Torsion due to rpm1\n", + "T_2= hp*63000/rpm_2 #in-lb Torsion due to rpm1\n", + "#caliculations \n", + "\n", + "#j/c=T/shear_T=K\n", + "k_1= T_1/stress_sh #mm3\n", + "#c3=2K/3.14\n", + "c_1= pow((2*k_1/3),0.33) #mm - The radius of the shaft \n", + "diamter_1 = 2*c_1 #mm - The diameter of the shaft\n", + "print \"The Diameter of the shaft1 is\",round(diamter_1,2),\"mm\"\n", + "\n", + "#j/c=T/shear_T=K\n", + "k_2= T_2/stress_sh #mm3\n", + "#c3=2K/3.14\n", + "c_2= pow((2*k_2/3),0.33) #mm - The radius of the shaft \n", + "diamter_2 = 2*c_2 #mm - The diameter of the shaft\n", + "print \"The Diameter of the shaft2 is\",diamter_2,\"mm\"\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.7 page number 193" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum angle rotated is 0.0232628450106 radians \n" + ] + } + ], + "source": [ + "#Given \n", + "T_ab = 0 #N.m - torsion in AB \n", + "T_bc = 150 #N.m - torsion in BC\n", + "T_cd = 150 #N.m - torsion in CD\n", + "T_de = 1150 #N.m - torsion in DE\n", + "l_ab = 250 #mm - length of AB\n", + "l_bc = 200 #mm - length of BC\n", + "l_cd = 300 #mm - length of cd \n", + "l_de = 500.0 #mm - length of de\n", + "d_1 = 25 #mm - outer diameter \n", + "d_2 = 50 #mm - inner diameter\n", + "G = 80 #Gpa -shear modulus\n", + "#Caliculations \n", + "\n", + "J_ab = 3.14*(d_1**4)/32 #mm4\n", + "J_bc = 3.14*(d_1**4)/32 #mm4\n", + "J_cd = 3.14*(d_2**4 - d_1**4)/32 #mm4\n", + "J_de = 3.14*(d_2**4 - d_1**4)/32 #mm4\n", + "rad = T_ab*l_ab/(J_ab*G)+ T_bc*l_bc/(J_bc*G)+ T_cd*l_cd/(J_cd*G)+ T_de*l_de/(J_de*G) # adding the maximum radians roteted in each module\n", + "print \"The maximum angle rotated is \",rad,\"radians \" " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.9 Pagenumber 196" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Torsion at rigid end A is -141.72 N-m\n", + "The Torsion at rigid end B is 1291.72 N-m\n" + ] + } + ], + "source": [ + "#given \n", + "#its a statistally indeterminant \n", + "#we will take of one of the support \n", + "#Given \n", + "T_ab = 0 #N.m - torsion in AB \n", + "T_bc = 150 #N.m - torsion in BC\n", + "T_cd = 150 #N.m - torsion in CD\n", + "T_de = 1150 #N.m - torsion in DE\n", + "l_ab = 250 #mm - length of AB\n", + "l_bc = 200 #mm - length of BC\n", + "l_cd = 300 #mm - length of cd \n", + "l_de = 500.0#mm - length of de\n", + "d_1 = 25 #mm - outer diameter \n", + "d_2 = 50 #mm - inner diameter\n", + "#Caliculations \n", + "\n", + "J_ab = 3.14*(d_1**4)/32 #mm4\n", + "J_bc = 3.14*(d_1**4)/32 #mm4\n", + "J_cd = 3.14*(d_2**4 - d_1**4)/32 #mm4\n", + "J_de = 3.14*(d_2**4 - d_1**4)/32 #mm4\n", + "G = 80 #Gpa -shear modulus\n", + "rad = T_ab*l_ab/(J_ab*G)+ T_bc*l_bc/(J_bc*G)+ T_cd*l_cd/(J_cd*G)+ T_de*l_de/(J_de*G) \n", + "#now lets consider T_A then the torsion is only T_A\n", + "# T_A*(l_ab/(J_ab*G)+ l_bc/(J_bc*G)+ l_cd/(J_cd*G)+ l_de/(J_de*G)) +rad = 0\n", + "# since there will be no displacement \n", + "T_A =-rad/(l_ab/(J_ab*G)+ l_bc/(J_bc*G)+ l_cd/(J_cd*G)+ l_de/(J_de*G)) #Torsion at A\n", + "T_B = 1150 - T_A #n-m F_X = 0 torsion at B\n", + "print \"The Torsion at rigid end A is\",round(T_A,2),\"N-m\"\n", + "print \"The Torsion at rigid end B is\",round(T_B,2),\"N-m\"\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.12 Pagenumber 202" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The allowable torsion on the 8 bolt combination 27129600.0 N-m\n" + ] + } + ], + "source": [ + "#Given\n", + "dai_bc = 240 #mm- daimeter of '8'bolt circle \n", + "dia = dai_bc/8 #Diameter of each bolt\n", + "A = 0.25*(dia**2)*3.14 # Area of a bolt\n", + "S_allow = 40 #Mpa - The maximum allowable allowable shear stress \n", + "P_max = (S_allow)*A #N - The maximum allowable force \n", + "D = 120.0 #mm - the distance from central axis \n", + "T_allow =P_max*D*8 #N-m The allowable torsion on the 8 bolt combination \n", + "print \"The allowable torsion on the 8 bolt combination\",T_allow ,\"N-m\"\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.15 page number 211" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the Equivalent Torsion constant is 1.97 in4\n" + ] + } + ], + "source": [ + "#Given \n", + "#AISC MANUALS\n", + "#approximated by three narrow tubes \n", + "#J = Bbt^3\n", + "B = 0.33 # constant mentiones in AISC\n", + "#three rods \n", + "\n", + "#rod_1\n", + "t_1 = 0.605 #inch - Thickness \n", + "b = 12.0 #inches - width \n", + "J_1 = B*b*(t_1**3) #in4 - Torsion constant \n", + "\n", + "#rod_2\n", + "t_2 = 0.605 #inch - Thickness \n", + "b = 12 #inches - width \n", + "J_2 = B*b*(t_2**3) #in4 - Torsion constant \n", + "\n", + "#rod_3\n", + "t_3 = 0.390 #inch - Thickness \n", + "b = 10.91 #inches - width \n", + "J_3 = B*b*(t_3**3) #in4 - Torsion constant \n", + "\n", + "#Equivalent\n", + "J_eq = J_1+J_2+J_3 #in4 - Torsion constant \n", + "print \"the Equivalent Torsion constant is \",round(J_eq,2), \"in4\"\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.16 page number 214" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum shear due to torsion is 345.23 Mpa\n", + "The minimum shear due to torsion is 276.18 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "dia_out = 10 #mm- outer diameter of shaft\n", + "dia_in = 8 #mm- inner diameter of shaft \n", + "c_out = dia_out/2 #mm - outer Radius of shaft \n", + "c_in = dia_in/2 #mm - inner radius of shaft \n", + "T = 40 #N/mm -Torque in the shaft \n", + "#caliculations\n", + "\n", + "J = 3.14*((dia_out**4)- (dia_in**4))/32 #mm4\n", + "shear_T_max = T*c_out*pow(10,3)/J # The maximum torsion shear in the shaft\n", + "shear_T_min = T*c_in*pow(10,3)/J # The maximum torsion shear in the shaft\n", + "print \"The maximum shear due to torsion is \",round(shear_T_max,2),\"Mpa\"\n", + "print \"The minimum shear due to torsion is \",round(shear_T_min,2),\"Mpa\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter5_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter5_8.ipynb new file mode 100644 index 00000000..e98a2c78 --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter5_8.ipynb @@ -0,0 +1,885 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 5:Axial force, Shear and Bending moment " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example5.2 pagenumber 231" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The X,Y components of reaction force at A is 0 , -410.0 N\n", + "The X,Y components of reaction force at B is 0 , 670.0 N\n" + ] + } + ], + "source": [ + "#Given \n", + "L_ab = 0.4 #mt The total length of the rod\n", + "M = 200 #N_m - the moment acting on rod\n", + "l_1 = 0.1 #mt -moment acting point the distance from 'a'\n", + "R_1 = 100 #N - The Force acting \n", + "l_2 = 0.2 #mt -R_1 acting point the distance from 'a'\n", + "R_2 = 160 #N The Force acting \n", + "l_3 = 0.3 #mt -R_2 acting point the distance from 'a'\n", + "#caliculations\n", + "\n", + "#F_X = 0 forces in x directions \n", + "R_A_X = 0 # since there are no forces in X-direction \n", + "R_B_X = 0\n", + "#M_A = 0 momentum at point a is zero\n", + "\n", + "# M + R_1*l_2 + R_2*l_3 = R_B*L_ab *the moment for a force is FxL\n", + "R_B_Y = (M + R_1*l_2 + R_2*l_3)/L_ab\n", + "\n", + "#M_B= 0 momentum at point b is zero\n", + "# R_A_Y*L_ab + M - R_1*l_2 - R_2*0.1 = 0\n", + "\n", + "R_A_Y = -(M - R_1*l_2 - R_2*0.1)/L_ab\n", + " \n", + "print \"The X,Y components of reaction force at A is \",R_A_X,\",\",R_A_Y,\"N\"\n", + "print \"The X,Y components of reaction force at B is \",R_B_X,\",\",R_B_Y,\"N\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.2 page number 233" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The X,Y components of reaction force at A is 0 , -9.0 N\n", + "The X,Y components of reaction force at B is 0 , 6.0 N\n" + ] + } + ], + "source": [ + "#Given \n", + "P_Max = 10 #N - the maximum distribution in a triangular distribution\n", + "L = 3 #mt the total length of force distribution \n", + "L_X = 5 #mt - the horizantal length of the rod\n", + "#caliculations \n", + "\n", + "F_y = P_Max*L*0.5 #N - The force due to triangular distribition \n", + "L_com = 2*L /3 #mt - the resultant force acting as a result of distribution acting position \n", + "#F_X = 0 forces in x directions\n", + "R_A_X = 0 # since there are no forces in X-direction\n", + "R_B_X = 0\n", + "#M_A = 0 momentum at point a is zero\n", + "#F_y*L_com - R_B_Y*L_X = 0\n", + "R_B_Y = F_y*L_com/L_X\n", + "\n", + "#M_B= 0 momentum at point b is zero\n", + "#- R_A_Y*L_X = F_y*(L_X-L )\n", + "\n", + "R_A_Y = - F_y*L/L_X \n", + "print \"The X,Y components of reaction force at A is \",R_A_X,\",\",R_A_Y,\"N\"\n", + "print \"The X,Y components of reaction force at B is \",R_B_X,\",\",R_B_Y,\"N\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.3 page number 233 " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The X,Y components and resultant of reaction force at A is 4 , 3 , 5.0 N\n", + "The X,Y components and resultant of reaction force at B is 1 , 1 , 1.41 N\n" + ] + } + ], + "source": [ + "#given\n", + "F = 5 #K - force acting on the system\n", + "tan = (4/3) # the Tan of the angle of force with x axis\n", + "l_ab = 12 #inch - the total length of ab \n", + "l = 3 # inch - Distance from 'a'\n", + "#caliculation\n", + "F_X = 4 #K\n", + "F_Y = 3 #k\n", + "\n", + "#M_A = 0 momentum at point a is zero\n", + "# F_X*l- R_B_Y*l_ab = 0 \n", + "R_B_Y = F_X*l/l_ab\n", + "\n", + "#M_B= 0 momentum at point b is zero\n", + "# R_A_Y*l_ab - F_X*(l_ab - l)\n", + "R_A_Y = F_X*(l_ab - l)/l_ab\n", + " \n", + "#F_X = 0 forces in x directions\n", + "R_A_X = F_Y + R_B_Y \n", + "R_B_X = R_B_Y # since the angle is 45 degrees\n", + "\n", + "#resultants \n", + "R_A = pow(R_A_X**2 + R_A_Y**2,0.5)\n", + "R_B = pow(R_B_X**2 + R_B_Y**2,0.5)\n", + "\n", + "print \"The X,Y components and resultant of reaction force at A is \",R_A_X,\",\",R_A_Y,\",\",R_A,\"N\"\n", + "print \"The X,Y components and resultant of reaction force at B is \",R_B_X,\",\",R_B_Y,\",\",round(R_B,2),\"N\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.4 page number 239" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The force and moment in section a--a are -2.33 KN , -13.644 KN-m\n", + "The force and moment in section b--b are 6.0 KN , -6.0 KN-m\n" + ] + } + ], + "source": [ + "#Given \n", + "P_Max = 10 #N - the maximum distribution in a triangular distribution\n", + "L = 3 #mt the total length of force distribution \n", + "L_X = 5 #mt - the horizantal length of the rod\n", + "#caliculations \n", + "\n", + "F_y = P_Max*L*0.5 #N - The force due to triangular distribition \n", + "L_com = 2*L /3 #mt - the resultant force acting as a result of distribution acting position \n", + "#F_X = 0 forces in x directions\n", + "R_A_X = 0 # since there are no forces in X-direction\n", + "R_B_X = 0\n", + "#M_A = 0 momentum at point a is zero\n", + "#F_y*L_com - R_B_Y*L_X = 0\n", + "R_B_Y = F_y*L_com/L_X\n", + "\n", + "#M_B= 0 momentum at point b is zero\n", + "#- R_A_Y*L_X = F_y*(L_X-L )\n", + "\n", + "R_A_Y = - F_y*L/L_X\n", + "\n", + "#For a---a section \n", + "l_a = 2 #mt - a---a section from a \n", + "l_com_a = 2*l_a/3\n", + "v_a = R_A_Y + 0.5*l_a*(10.0*2/3) #*(10*2/3) because the maximum moves\n", + "\n", + "M_a = (10.0*0.66)*l_a*(0.33) + R_A_Y*l_a \n", + "\n", + "#For b---b section \n", + "\n", + "v_b = F_y + R_A_Y #equilabrium conditions\n", + "M_b = (F_y + R_A_Y)*(-1)\n", + "\n", + "print \"The force and moment in section a--a are\",round(v_a,2),\"KN ,\",M_a,\"KN-m\"\n", + "print \"The force and moment in section b--b are\",v_b,\"KN ,\",M_b,\"KN-m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.5 page number 241" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Given problem is for drawing diagram, this diagram is drawn by step by step manner. \n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Given \n", + "#Lets divide the section into two sections \n", + "l_ac = 10 # ft -The total length of the rod\n", + "R = 5 #k - The applies force at c\n", + "tan = 4/3 # The tan of the angle of the force \n", + "l_ab = 5 #ft - The distance of applied force from A\n", + "R_y = 4 #k,downwards X- component of the force\n", + "R_X = 3 #k Y- component of the force , lets consider only Y direction since we are concentrating on the Shears \n", + "\n", + "#F_Y = 0 forces in Y directions\n", + "#R_A +R_B = R_y\n", + "#M_c = 0 making the moment zero at point c \n", + "#Caliculations \n", + "# R_A= R_B*(l_ac - l_ab)/(l_ab) so R_A = R_B\n", + "\n", + "R_A = R_y/2 #F_Y = 0\n", + "R_B = R_y/2\n", + "#considering section x--x\n", + "l_x = 2 #ft - length of section from A\n", + "v_x = R_A #k ,F_X = 0 \n", + "M_x = R_A*l_x #k-ft M_c = 0\n", + "\n", + "#considering section at midpoint t--t\n", + "l_t = 2 #ft - length of section from A\n", + "v_t = 0 #k ,F_X = 0 \n", + "M_t = (R_A)*l_t #k-ft M_c = 0\n", + "\n", + "##considering section y---y\n", + "l_y = 2 #ft - length of section from B\n", + "v_y = - R_B #k ,F_X = 0 \n", + "M_y = R_B*l_y #k-ft M_c = 0\n", + "\n", + "#Graph\n", + "%matplotlib inline\n", + "import math \n", + "from matplotlib.pyplot import plot,suptitle,xlabel,ylabel\n", + "#Drawing of shear and bending moment diagram\n", + "print \"Given problem is for drawing diagram, this diagram is drawn by step by step manner. \"\n", + "X = [0,2,4.9999999999999,5,5.00000000000000001,7,10] # For graph precision \n", + "\n", + "V = [R_A,v_x,v_x,v_t,v_y,v_y,-R_B];\t\t\t#Shear matrix\n", + "M = [0,M_x,M_t,M_t,M_t,M_y,0];\t\t\t#Bending moment matrix\n", + "plot(X,V);\t\t\t#Shear diagram\n", + "plot(X,M,'r');\t\t\t#Bending moment diagram\n", + "suptitle( 'Shear and bending moment diagram')\n", + "xlabel('X axis')\n", + "ylabel( 'Y axis') ;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.6 pagenumber 243 " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Given problem is for drawing diagram, this diagram is drawn by step by step manner. \n" + ] + }, + { + "data": { + "image/png": "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\nktTJ/we9KQxTSP9nSgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Given\n", + "l = 1 #L - Length of the cantilever \n", + "F_app = ((2**0.5))*2 #p - force applies \n", + "tan = 1 # The angle of force applied\n", + "F_app_x = F_app/((2**0.5)) #p The horizantal component of the force , neglected \n", + "F_app_y = F_app/((2**0.5)) #p The Vertical component of the force \n", + "#F_Y = 0 \n", + "R_A = 1 #p\n", + "\n", + "#Considering section 1-----1\n", + "l_1 = 0.5 # The length of the section from one end\n", + "v_1 = R_A #F_Y = 0\n", + "M_1 = -R_A*l_1 #MAking moment at section 1 = 0\n", + "\n", + "#considering end of cantilever\n", + "l_2 = 1 # The length of the section from one end\n", + "v_2 = R_A #F_Y = 0\n", + "M_2 = -R_A*l_2#MAking moment at section 1 = 0\n", + "\n", + "#Graph\n", + "%matplotlib inline\n", + "import math \n", + "from matplotlib.pyplot import plot,suptitle,xlabel,ylabel\n", + "#Drawing of shear and bending moment diagram\n", + "print \"Given problem is for drawing diagram, this diagram is drawn by step by step manner. \"\n", + "X = [0,0.5,1] # For graph precision \n", + "\n", + "V = [R_A,v_1,v_2 ];\t\t\t#Shear matrix\n", + "M = [0,M_1,M_2];\t\t\t#Bending moment matrix\n", + "plot(X,V);\t\t\t #Shear diagram\n", + "plot(X,M,'r');\t\t\t #Bending moment diagram\n", + "suptitle( 'Shear and bending moment diagram')\n", + "xlabel('X axis')\n", + "ylabel( 'Y axis') ;\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.7 page number 243" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Given problem is for drawing diagram, this diagram is drawn by step by step manner. \n" + ] + }, + { + "data": { + "image/png": "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\nAXYdfyx3uhDkAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Given\n", + "l_ab = 3 #L - The total length lets say '3L'\n", + "R_1 = 1 #p - The force applied at b\n", + "R_2 = 1 #p - The force applied at c\n", + "l_ab = 1 #L\n", + "l_bc = 1 #L \n", + "\n", + "#Logical step \n", + "#Since the system is in symmetry we can avoid moment M = 0 caliculations\n", + "\n", + "#F_Y = 0 \n", + "R_A = (R_1 + R_2)/2\n", + "R_B = (R_1 + R_2)/2\n", + "\n", + "#Lets take '3' sections \n", + "#Considering section 1-----1 at 0.5L\n", + "l_1 = 0.5 #L - distance of the section from the A\n", + "v_1 = R_A #F_Y = 0 \n", + "M_1 = R_A*l_1 #MAking moment at section 1 = 0\n", + "\n", + "#Considering section 2-----2 at 1L\n", + "l_2 = 1 #L - distance of the section from the A\n", + "v_2 = R_A #F_Y = 0 \n", + "M_2 = R_A*l_2 #MAking moment at section 2 = 0\n", + "\n", + "#Considering section 3-----3 at 1.5L\n", + "l_3 = 1.5 #L - distance of the section from the A\n", + "v_3 = 0 #F_Y = 0 \n", + "M_3 = R_A*l_2 #MAking moment at section 2 = 0 and symmetry \n", + "\n", + "#GRAPH\n", + "#Since the symmetry exists the graphs are also symmetry\n", + "%matplotlib inline\n", + "import math \n", + "from matplotlib.pyplot import plot,suptitle,xlabel,ylabel\n", + "#Drawing of shear and bending moment diagram\n", + "print \"Given problem is for drawing diagram, this diagram is drawn by step by step manner. \"\n", + "X = [0,0.5,1,1.000000001,1.5,1.999999999999,2,2.5,3] # For graph precision \n", + "\n", + "V = [R_A,v_1,v_2,v_3,v_3,v_3,-v_2,-v_1,-R_B];\t\t\t#Shear matrix\n", + "M = [0,M_1,M_2,1,1,1,M_2,M_1,0];\t\t\t#Bending moment matrix\n", + "plot(X,V);\t\t\t#Shear diagram\n", + "plot(X,M);\t\t\t#Bending moment diagram\n", + "suptitle( 'Shear and bending moment diagram')\n", + "xlabel('X axis')\n", + "ylabel( 'Y axis') ;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.8 page nmber 244" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n/vJBW0Moy/YAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Given\n", + "%matplotlib inline\n", + "import numpy as np\n", + "l_ab = 1.0 #L - The length of the beam\n", + "F_D = 1.0 #W - The force distribution \n", + "F = F_D*l_ab #WL - The force applied\n", + "#Beause of symmetry the moment caliculations can be neglected\n", + "#F_Y = 0\n", + "R_A = F/2 #wl - The reactive force at A\n", + "R_B = F/2 #wl - The reactive force at B\n", + "\n", + "#considering many sections \n", + "\n", + "#section 1--1\n", + "l_1 = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.1L distance \n", + "M_1 = [0,0,0,0,0,0,0,0,0,0,0]\n", + "v = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " v[i] = R_A - F_D*l_1[i] \n", + " M_1[i] = R_A*l_1[i] - F_D*(l_1[i]**2)/2 #M = 0 in the section\n", + "print R_A\n", + "#Graphs\n", + "import numpy as np\n", + "values = [0.5,0,-0.5]\n", + "y = np.array(values)\n", + "t = np.linspace(0,1,3)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "\n", + "import numpy as np\n", + "values = M_1\n", + "y = np.array(values)\n", + "t = np.linspace(0,1,11)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.9 page number 245" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The force and moment in section a--a are -2.33 KN , -13.644 KN-m\n" + ] + } + ], + "source": [ + "#Given \n", + "P_Max = 10 #N - the maximum distribution in a triangular distribution\n", + "L = 3 #mt the total length of force distribution \n", + "L_X = 5 #mt - the horizantal length of the rod\n", + "#caliculations \n", + "\n", + "F_y = P_Max*L*0.5 #N - The force due to triangular distribition \n", + "L_com = 2*L /3 #mt - the resultant force acting as a result of distribution acting position \n", + "#F_X = 0 forces in x directions\n", + "R_A_X = 0 # since there are no forces in X-direction\n", + "R_B_X = 0\n", + "#M_A = 0 momentum at point a is zero\n", + "#F_y*L_com - R_B_Y*L_X = 0\n", + "R_B_Y = F_y*L_com/L_X\n", + "\n", + "#M_B= 0 momentum at point b is zero\n", + "#- R_A_Y*L_X = F_y*(L_X-L )\n", + "\n", + "R_A_Y = - F_y*L/L_X\n", + "\n", + "#caliculating for some random value\n", + "#For a---a section \n", + "l_a = 2 #mt - a---a section from a \n", + "l_com_a = 2*l_a/3\n", + "v_a = R_A_Y + 0.5*l_a*(10.0*2/3) #*(10*2/3) because the maximum moves\n", + "\n", + "M_a = (10.0*0.66)*l_a*(0.33) + R_A_Y*l_a\n", + "\n", + "print \"The force and moment in section a--a are\",round(v_a,2),\"KN ,\",M_a,\"KN-m\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.13 page number 254" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Given problem is for drawing diagram, this diagram is drawn by step by step manner. \n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEhCAYAAABRKfYcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAG8lJREFUeJzt3X+0HHV9//HXK4QfQkogFpBjTKgSSinaNKYhNpBckUoA\na5QiRPBHqSXUHo5UrUei0KTS8jVyyrdQqjU2BYFiLBYkQqJgyTWgApEkEmKA8DVFgsK33wOYAJ4Y\nkvf3j/ncZLnZ3bt37u7O7O7zcc49md2dnXnv527mdWfeOzuOCAEAMFyjii4AANCZCBAAQC4ECAAg\nFwIEAJALAQIAyIUAAQDkQoD0ANuftf2I7R/bXmP7D9L9m22PK7q+odSq0/a2Fq3vOttnpumv2D62\nFespA9u/Z/u0BuddaXtKmr7D9sGtrQ5lN7roAtBatqdLOl3S5Ih4JW2I90sPN/0kINv7RMTOJi+2\nVp0tP4kpIi5o9ToKNlnSVEkrhvOkiHhXM1beovcL2oQ9kO53pKT/FxGvSFJEPBcRz6THLOljth9K\neyfHSJLtA20vsX1/euyP0/0Tba+y/aP0Mz3dPyvdf7ukDYMLsP1F2w/aXm97QcX9m20vrLL+cba/\nk+b/SqqzGtu+Ku1d3W37tenON9peYXu17e9VLPc621fb/r7tJwb2MtJj19reaPsuSYdX3F/5V/c2\n239ne53tH9g+rGJ9P0yv4fJqe0Zp7DamGh6z/e+2/yjV8pjtqWm+Q23flpb1A9vHp/sX2L4+jfNm\n22favtL2w7aX294nzTfFdn967StsH1HxOj5v+wHbj9qeYXtfSZ+TdHbaM33foJoPsP012xts3yrp\ngEG/u3Fp+ra0vvW2/7xino+k13a/7cW2r6n4PXzJ9v2SFtn+g/RaH7J9n+1Jab4Pp2XfZfunti+y\n/clU6w9sH1LjfYF2iQh+uvhH0kGS1kp6VNI/S5pZ8dhmSX+Zpj8qaXGa/ntJ56bpsZIek/QaZRuQ\n/dL9R0tanaZnSdomaUKNGg5J/46StFLS8UOs/2pJl6bp0yXtlDSuynJ3SZqbpi+TdE2a/q6kN6Xp\naZL+K01fJ+nrafp3JG1K02dK+k6aPlLS85LOTLdXSppSsb7T0/QiSZ9J09+SdHaavlDS1iq1TpT0\na0nHpds/krQkTb9b0q1p+hpJl6Xpt0tam6YXSFqVxvAtkl6W9M702K1pGaMlfV/Sa9P9Z1esY6Wk\nK9P0aZLuTtMfHhi3KjV/XNK/puk3S9pRMRY/HfidVPx+D5C0XtKhaRw3K3v/7JNqv6bi97CsYj1j\nJI1K0++Q9I2K2h6XdKCk35T0S0kXpMeukvSxov9/9foPh7C6XES8lP6CPknSyZKW2r4kIm5Is9yW\n/n1I0nvT9Dsl/bHtT6Xb+0maIOkXkq61PVnZRn1SxaoejIif1Shjru0LlG3gXifpOEmP1Fn/zIHp\niFhu+/kay90p6T/S9E2S/tP2QZL+UNIttgf2XPateM4303I32h7Y0zhJ0tfS/b+wfU+N9W2PiOUV\n9Z6Spt8maU6avlnSlTWevzkifpKmNygLOinb6B6Vpk9UFmiKiJVpb2xMemxFROyyvV6SI+KuQc//\nbUnHS7o7vfZRkn5esf5bK2qfWKPGSjOVhbkiYr3tH1c8VrlX+Fe235Omxyt7XxwpqT8ifilJtm/R\nq98vt1RMHyLphrTnEXr1ofWVEfGypJfT++COitf85gZeA1qIAOkBkf3JtkrSqrTx+ZCkgQDZnv7d\nqT3vB0v6k4jYVLkcZ4efnomIt6RDJr+qePilauu2fZSkT0p6a0RstX2dKg6F1Fj/Xoup+wL3CGUb\nzecjYkqNebZXTDe63AE7KqYr663sxdRbZuW6d1Xc3qXG/i9ul7Lfp+3KWgaeb0mPRMSMIdZfb6zr\n2eu12Z6l7A+TEyJiu+2V2vP7rTcWle+XyyXdExFn2p6obG9pcM1SNs7DHTO0ED2QLmf7GNtHV9w1\nWdKTQzztO5I+VrGMyWlyrLK9ECkLoX0aKOFgSS9K2paOxzfyiZ9Vks5L6z5N2V+o1ewj6aw0fZ6k\n+yJim6TNtgful+231Hj+wAZulaRzbI+yfaSyQ0f15h/s/oo65taYp97zK90r6QOSZLtPWf/qxQaX\n9Zikw7ynNzXa9nFD1LJN2e+omsrfw/HKDp0NNlZZYG939mm16en+1ZJm2h5re7SkP6mxDqX1P52m\nz68zH0qGAOl+YyR91VmjeZ2yY/8L02O1PsV0uaR9U4N2vbJGqyR9UdKf2l4r6RjV2OuoFBEPS1on\naaOyw0z3VT5c42l/q2zjs17SeyTVOjT2oqRpab6+ijrPk/QRZ83uR5T1B6qtL1KNt0l6Qtlhpesl\n/aBGjbXq/bikT6TxfZOyY/XVNLKshZLemg4XXaEsqIdaVnZHxA5lQbYo1bJW2eG1avMP3F4p6bhq\nTXRJX5I0xvaGVNePqjz/28reKxtSvT9Mtfw83X5QWShu1p5xGVzLlZI+b/sh1d8m8dXhJePs6AaA\nvGy/JiJ+labPUdbYf+8QT+t6tg9KPbh9lPW6lkTE7UXXhebhGCIwcm+1fa2yw0LPS/qzguspi4W2\nT5G0v6S7CI/uwx4IACAXeiAAgFwIEABALgQIACAXAgQAkAsBAgDIhQABAORCgAAAcik8QJxdd+JZ\n2w/Xmeca25vSV1NMrjUfAKB9Cg8QZdcGOLXWg+nL9N4UEZOUXWvhX9pVGACgtsIDJCLuU/b1D7XM\nUfrq8Yh4QNLYgausAQCKU3iANOD1kp6quP10ug8AUKBOCBAAQAl1wrfxPi3pDRW3x2vPxWdexTbf\nDAkAwxQRw706p6Ty7IFYta/WtkzpojrpSmsvRMSztRZU9EXmh/pZsGBB4TXU+tmxc4dmLJmhK1Zd\nIam8dXbKeFJn635mfHCGTr3xVO3ctbPwWjp9PEei8ACxfbOyK8AdY/tnts+3faHteZIUEcuVXaL0\nCUlflvSXBZbb1S675zKN2W+MPn3ip4suBajr5N86WS/++kUtum9R0aX0tMIPYUXEuQ3Mc1E7aull\nKzat0E3rb9KaeWs0yoX/XQHUNcqjtPSspZq6eKpOnHCiTpp4UtEl9SS2FG3W19dXdAl72bJ1i86/\n/XzdfObNOuygw9K9fUWW1LAyjmc11NlcfX19Gn/weF035zqde+u5+p+X/qfokqrqlPHMq6uuSGg7\nuun1tMMru15R3/V9OmPSGZp/0vzd99sSQ4lOMP+787X2mbVaft5y9p5zsK3o8CY6CkLfA53u8pMv\npx9SEAKkhw30PW5874385YaONXrUaC09a6mufuBq3fvkvUWX01PYavSo6n0PoDN1Qj+kGxEgPeiV\nXa9o7jfm6uITLubTK+gap006TR948wf0wds+qF2xq+hyegIB0oPoe6Bb0Q9pLwKkx9D3QDejH9Je\nbEF6CH0P9AL6Ie1DgPQI+h7oJfRD2oMA6RH0PdBr6Ie0HgHSA+h7oBfRD2k9tiZdjr4Hehn9kNYi\nQLoYfQ+AfkgrESBdjL4HkKEf0hoESJei7wHsQT+kNdiydCH6HsDe6Ic0HwHSZeh7ALXRD2kuAqTL\n0PcA6qMf0jwESBeh7wEMjX5I87CV6RL0PYDG0Q9pDgKkC9D3AIaPfsjIESBdgL4HkA/9kJEhQDoc\nfQ8gP/ohI8MWp4PR9wBGjn5IfgRIh6LvATQP/ZB8CJAORd8DaC76IcNHgHQg+h5A89EPGT62Ph2G\nvgfQOvRDhocA6SD0PYDWox/SOAKkg9D3ANqDfkhjCJAOQd8DaB/6IY1hS9QB6HsA7Uc/ZGgESMnR\n9wCKQz+kPgKk5Oh7AMWiH1IbAVJi9D2A4tEPqY2tUknR9wDKg35IdQRICdH3AMqHfsjeCJASou8B\nlBP9kFcjQEqGvgdQXvRDXo0tVInQ9wDKj37IHgRISdD3ADoH/ZAMAVIS9D2AzkI/hAApBfoeQOeh\nH0KAFI6+B9C5er0fQoAUiL4H0Pl6uR9CgBSIvgfQHXq1H1J4gNiebftR24/b3mtLanuW7Rdsr0k/\nlxZRZ7PR9wC6R6/2QwrdctkeJelaSadK+l1J77d9bJVZV0XElPTzd20tsgXoewDdpxf7IUX/6TtN\n0qaIeDIidkhaKmlOlfnc3rJah74H0L16rR9SdIC8XtJTFbe3pPsGe5vtdbbvtH1ce0prDfoeQHfr\npX7I6KILaMBDkiZExMu2T5P0TUnH1Jp54cKFu6f7+vrU19fX6voaNtD3WDNvDX0PoEsN9EOmLp6q\nGRNmaObEmUWX9Cr9/f3q7+9vyrIcEU1ZUK6V29MlLYyI2en2JZIiImpGt+3Nkt4aEc9VeSyKfD31\nbNm6RVMXT9Ut77ulIw5d2VJJhxLoCCs2rdC8O+Zpzbw1pe512lZE5GoTFP1n8GpJR9ueaHs/SXMl\nLaucwfYRFdPTlIXeXuFRZvQ9gN7TC/2QQgMkInZKukjSXZI2SFoaERttX2h7XprtLNuP2F4r6R8l\nnVNQubnR9wB6U7f3Qwo9hNVsZTyE1Sm7sYNxCAtojrIfvu7kQ1hdjfM9AHTz+SEESIvQ9wAwoFv7\nIQRIi9D3AFCpG/shBEgL8D1XAAbrxu/LYuvWZPQ9ANTSbf0QAqSJ6HsAGEo39UMIkCai7wGgEd3S\nDyFAmoS+B4BGdUs/hC1dE9D3ADBc3dAPIUBGiL4HgLw6vR9CgIwQfQ8AI9HJ/RACZAToewAYqU7u\nh7DVy4m+B4Bm6dR+CAGSA30PAM3Wif0QAiQH+h4AWqHT+iEEyDDR9wDQKp3WD2ELOAz0PQC0Wif1\nQwiQBtH3ANAundIPIUAaRN8DQDt1Qj+EAGkAfQ8A7dYJ/RC2hkOg7wGgKGXvhxAgddD3AFC0MvdD\nCJA66HsAKIOy9kMIkBroewAoi7L2Q9gyVkHfA0DZlLEfQoAMQt8DQFmVrR9CgAxC3wNAmZWpH0KA\nVKDvAaDsytQPYSuZ0PcA0CnK0g8hQETfA0DnKUM/hAARfQ8AnanofkjPBwh9DwCdquh+SE9vMel7\nAOh0RfZDejZA6HsA6BZF9UN6NkDoewDoJkX0Q3oyQOh7AOg2RfRDem7rSd8DQLdqdz+kpwKEvgeA\nbtfOfsiQAWL7fbZ/I01favtW21NaWlWL0PcA0Ava1Q9pZA/ksojYZvtESadIWiLpSy2tqgXoewDo\nFe3qhzSyJd2Z/j1D0uKIuFPSfi2rqAXoewDoNe3ohzQSIE/b/rKkcyQtt71/g88rBfoeAHpVq/sh\njQTB2ZK+I+nUiHhB0jhJn2p6JS1C3wNAL2tlP8QRUf0B++CI2Gp7XLXHI+K5plczQraj8vWs2LRC\n8+6YpzXz1nDoaphsqcZbA0CH2bJ1i6Yunqpb3nfLXkdibCsinGe59QLkjoh4l+3NkkJS5QoiIt6Y\nZ4WtVBkg9QYMQyNAgO5S6w/qlgRIJxoIkFd2vaK+6/t0xqQzNP+k+UWX1ZEIEKD7zP/ufK19Zq2W\nn7d896dRRxIgjZwH8pFBt/exvSDPytqFvgcA7K3Z/ZBGmujvsL3c9pG2j5d0v6TfaMraJdmebftR\n24/brrrFt32N7U2219meXG95nO8BANU1+/yQhg5h2T5H0j9LeknSuRHx/RGvOVvuKEmPS3qHpJ9L\nWi1pbkQ8WjHPaZIuiogzbJ8g6eqImF5jeXHElUfQ92gCDmEB3auyH3L4mMNbeghrkqSLJf2npCcl\nfdD2gXlWVsU0SZsi4smI2CFpqaQ5g+aZI+kGSYqIBySNtX1ErQVyvgcA1Fd5fshINHKM51vKvs7k\nQkmzJG1StqfQDK+X9FTF7S3pvnrzPF1lnt3oewDA0Ab6ISMxuoF5pkXEVin77K6kf7D9rRGttYU+\n97ef2z3d19envr6+4orpYIcemh3GAsro0EOl50p3Jlpn6O/vV39/vyRp2vZp+r7ydyQa7YEcL+k4\nSQcM3BcRN+Re657lTpe0MCJmp9uXZIuORRXz/IuklRHx9XT7UUmzIuLZKsuLbvpYMoDq6NE1T6s/\nxrtA0j+ln7dL+oKkd+dZWRWrJR1te6Lt/STNlbRs0DzLJH0o1TJd0gvVwgMA0F6NHMI6S9LvSVob\nEeenBvZNzVh5ROy0fZGku5SF2ZKI2Gj7wuzhWBwRy22fbvsJZZ8CO78Z6wYAjMyQh7BsPxgR02w/\npGwPZJukjRFxbDsKHA4OYQG9gUNYzTOSQ1iN7IH8yPYhkr4i6SFJL0r6YZ6VAQC6x7C+C8v2UZIO\njoiHW1XQSLAHAvQG9kCahy9TTAgQoDcQIM3T0k9hAQBQTc0ASV+geFT7SgEAdJJ6eyDXSbrL9mdt\n79uuggAAnaFuD8T2GEmXSZot6UZJu6/KHhFXtby6YaIHAvQGeiDN08qP8f5a2cl7+yu7Bsiu+rMD\nAHpFzQCxPVvSVcq+SmRKRLzctqoAAKVX8xCW7Xsl/UVEbGhvSflxCAvoDRzCah7OA0kIEKA3ECDN\nw3kgAIC2I0AAALkQIACAXAgQAEAuBAgAIBcCBACQCwECAMiFAAEA5EKAAAByIUAAALkQIACAXAgQ\nAEAuBAgAIBcCBACQCwECAMiFAAEA5EKAAAByIUAAALkQIACAXAgQAEAuBAgAIBcCBACQCwECAMiF\nAAEA5EKAAAByIUAAALkQIACAXAgQAEAuBAgAIBcCBACQCwECAMiFAAEA5EKAAAByIUAAALkQIACA\nXAgQAEAuo4tase1DJX1d0kRJ/y3p7Ij4ZZX5/lvSLyXtkrQjIqa1sUwAQA1F7oFcIum7EfHbku6R\nNL/GfLsk9UXE7xMeAFAeRQbIHElfTdNflfSeGvNZHGoDgNIpcsN8eEQ8K0kR8Yykw2vMF5Lutr3a\n9gVtqw4AUFdLeyC275Z0ROVdygLh0iqzR43FzIiIX9g+TFmQbIyI+2qtc+HChbun+/r61NfXN9yy\nAaBr9ff3q7+/vynLckSt7XZr2d6orLfxrO3XSVoZEb8zxHMWSNoWEVfVeDyKej0A2seW+K/eHLYV\nEc7z3CIPYS2T9Kdp+sOSbh88g+0DbY9J0wdJeqekR9pVIACgtiL3QMZJ+g9Jb5D0pLKP8b5g+0hJ\nX4mId9n+LUm3KTu8NVrSv0fE5+sskz0QoAewB9I8I9kDKSxAWoEAAXoDAdI8nXoICwDQwQgQAEAu\nBAgAIBcCBACQCwECAMiFAAEA5EKAAAByIUAAALkQIACAXAgQAEAuBAgAIBcCBACQCwECAMiFAAEA\n5EKAAAByIUAAALkQIACAXAgQAEAuBAgAIBcCBACQCwECAMiFAAEA5EKAAAByIUAAALkQIACAXAgQ\nAEAuBAgAIBcCBACQCwECAMiFAAEA5EKAAAByIUAAALkQIACAXAgQAEAuBAgAIBcCBACQCwECAMiF\nAAEA5EKAAAByIUAAALkQIACAXAgQAEAuBAgAIBcCBACQCwECAMiFAAEA5FJYgNg+y/YjtnfanlJn\nvtm2H7X9uO1Pt7NGAEBtRe6BrJf0XknfqzWD7VGSrpV0qqTflfR+28e2p7zW6O/vL7qEhlBnc1Fn\ns/UXXUBDOmc88yksQCLisYjYJMl1ZpsmaVNEPBkROyQtlTSnLQW2SKe8oaizuaiz2fqLLqAhnTOe\n+ZS9B/J6SU9V3N6S7gMAFGx0Kxdu+25JR1TeJSkkfTYivtXKdQMAWssRUWwB9kpJn4yINVUemy5p\nYUTMTrcvkRQRsajGsop9MQDQgSKiXiuhppbugQxDreJXSzra9kRJv5A0V9L7ay0k7yAAAIavyI/x\nvsf2U5KmS7rD9op0/5G275CkiNgp6SJJd0naIGlpRGwsqmYAwB6FH8ICAHSmsn8Kay+NnFho+xrb\nm2yvsz253TWmGurWaXuW7Rdsr0k/lxZQ4xLbz9p+uM48ZRjLunWWYSxTHeNt32N7g+31tj9WY75C\nx7SROoseU9v7237A9tpU5xU15it6LIess+ixHFTLqFTDshqPD288I6JjfpQF3hOSJkraV9I6SccO\nmuc0SXem6RMk3V/SOmdJWlbweJ4oabKkh2s8XvhYNlhn4WOZ6nidpMlpeoykx0r6/mykzsLHVNKB\n6d99JN0vaUbZxrLBOgsfy4paPi7ppmr15BnPTtsDaeTEwjmSbpCkiHhA0ljbR6i9Gj0BstCmf0Tc\nJ+n5OrOUYSwbqVMqeCwlKSKeiYh1afpFSRu193lLhY9pg3VKxb8/X06T+yv7o2zwe6DwsUzrHqpO\nqQTvT9vjJZ0u6V9rzDLs8ey0AGnkxMLB8zxdZZ5Wa/QEyLelXcU7bR/XntKGpQxj2ahSjaXto5Tt\nNT0w6KFSjWmdOqWCxzQdblkr6RlJ/RHxk0GzlGIsG6hTKsf7839L+pSyc/GqGfZ4dlqAdJOHJE2I\niMnKvu/rmwXX08lKNZa2x0j6hqSL01/4pTREnYWPaUTsiojflzRe0kzbs9pdQyMaqLPwsbR9hqRn\n056n1aQ9ok4LkKclTai4PT7dN3ieNwwxT6sNWWdEvDiw6xsRKyTta3tc+0psSBnGckhlGkvbo5Vt\nlG+MiNurzFKKMR2qzjKNaURslXSnpKmDHirFWA6oVWdJxnKGpHfb/qmkr0l6u+0bBs0z7PHstADZ\nfWKh7f2UnVg4+NMEyyR9SNp9JvsLEfFse8scus7KY4u2pyn7SPVz7S0zW71q/zVShrEcULPOEo2l\nJP2bpJ9ExNU1Hi/LmNats+gxtf2btsem6ddI+iNlH0apVPhYNlJn0WMpSRHxmYiYEBFvVLY9uici\nPjRotmGPZ1nORG9IROy0PXBi4ShJSyJio+0Ls4djcUQst3267SckvSTp/DLWKeks2x+VtEPSrySd\n0+46bd8sqU/Sa23/TNICSfupRGPZSJ0qwVimOmdIOk/S+nRMPCR9Rtmn8Uozpo3UqeLH9EhJX7Vt\nZf+HboyI/yrb//VG6lTxY1nTSMeTEwkBALl02iEsAEBJECAAgFwIEABALgQIACAXAgQAkAsBAgDI\nhQABGuTsa9B/avuQdPvQdHvCUM9tYNn3jbxCoL04DwQYBtt/LWlSRFxo+8uS/k9EfKHouoAisAcC\nDM8/SjrB9sWS/lDSP1SbyfZttlc7u2DTn6f7Jji7wNg4Z1bZPiU9ti39+zrb33N20Z+H01njQCmx\nBwIMk+13Svq2pFMi4p4a8xwSES/YPkDZd6PNjIjnbf+ZpNmSHpT0poj4aJp/a0QcbPsTkvaPiP+V\nvh7jwIh4qS0vDBgm9kCA4Ttd0s8lvbnOPH9le52yK9SNlzRJkiLi3yQdLOlCSX9d5XmrJZ1v+28k\nvYXwQJkRIMAwOLtO9DskTZf0CVe5Ylu6HsTJkk5I14BYJ+mA9NhrlAWKlF1O9lUi4l5JM5V9jfb1\ntj/QitcBNAMBAgzPF5VdgGmLpC+oeg9krKTnI2K77WOVhc2ARcquSf03evWlRS1lfRJJ/zcilqTH\npzT/JQDNQYAADbJ9gaQnK/oeX5J0rO2TBs36bWUXDdog6QpJP0zPn6nsYkOLIuJrkrbb/nB6zkAz\nsk/Sj22vkXS2pFrXFQEKRxMdAJALeyAAgFwIEABALgQIACAXAgQAkAsBAgDIhQABAORCgAAAciFA\nAAC5/H/91y4DSEHt5wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Given\n", + "l_ab = 4 #L - The total length lets say '3L'\n", + "R_1 = 1 #p - The force applied at b\n", + "R_2 = 1 #p - The force applied at c\n", + "l_ab = 1 #L\n", + "l_bc = 3 #L \n", + "\n", + "#Logical step \n", + "#Since the system is in symmetry we can avoid moment M = 0 caliculations\n", + "\n", + "#F_Y = 0 \n", + "R_A = (R_1 + R_2)/2\n", + "R_B = (R_1 + R_2)/2\n", + "\n", + "#Lets take '3' sections \n", + "#Considering section 1-----1 at 0.5L\n", + "l_1 = 0.5 #L - distance of the section from the A\n", + "v_1 = R_A #F_Y = 0 \n", + "M_1 = R_A*l_1 #MAking moment at section 1 = 0\n", + "\n", + "#Considering section 2-----2 at 1L\n", + "l_2 = 1 #L - distance of the section from the A\n", + "v_2 = R_A #F_Y = 0 \n", + "M_2 = R_A*l_2 #MAking moment at section 2 = 0\n", + "\n", + "#Considering section 3-----3 at 1.5L\n", + "l_3 = 3 #L - distance of the section from the A\n", + "v_3 = 0 #F_Y = 0 \n", + "M_3 = R_A*l_2 #MAking moment at section 2 = 0 and symmetry \n", + "\n", + "#GRAPH\n", + "#Since the symmetry exists the graphs are also symmetry\n", + "%matplotlib inline\n", + "import math \n", + "from matplotlib.pyplot import plot,suptitle,xlabel,ylabel\n", + "#Drawing of shear and bending moment diagram\n", + "print \"Given problem is for drawing diagram, this diagram is drawn by step by step manner. \"\n", + "X = [0,0.5,1,1.0000001,2,2.9999999999,3,3.5,4] # For graph precision \n", + "\n", + "V = [R_A,v_1,v_2,v_3,v_3,v_3,-v_2,-v_1,-R_B];\t\t\t#Shear matrix\n", + "M = [0,M_1,M_2,M_3,M_3,M_3,M_2,M_1,0];\t\t\t#Bending moment matrix\n", + "plot(X,V);\t\t\t#Shear diagram\n", + "plot(X,M);\t\t\t#Bending moment diagram\n", + "suptitle( 'Shear and bending moment diagram')\n", + "xlabel('X axis')\n", + "ylabel( 'Y axis') ;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.14 page number 255" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Given\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "l = 1.0 #l - The length of the beam\n", + "p = 1.0 #W - The total load applied\n", + "#since it is triangular distribution \n", + "l_com = 0.66*l#l - The distance of force of action from one end\n", + "#F_Y = 0\n", + "#R_A + R_B = p\n", + "#M_a = 0 Implies that R_B = 2*R_A\n", + "R_A = p/3.0\n", + "R_B = 2.0*p/3\n", + "\n", + "#Taking Many sections \n", + "\n", + "#Section 1----1\n", + "l = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] #L taking each section at 0.1L distance \n", + "M = [0,0,0,0,0,0,0,0,0,0,0]\n", + "v = [0,0,0,0,0,0,0,0,0,0,0]\n", + "for i in range(10):\n", + " v[i] = p*(l[i]**2) - p/3.0\n", + " M[i] = p*(l[i]**3)/(3.0)- p*l[i]/3.0\n", + "\n", + "v[10] = R_B #again concluded Because the value is tearing of \n", + "\n", + "\n", + "#Graph\n", + "values = M\n", + "y = np.array(values)\n", + "t = np.linspace(0,1,11)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "%matplotlib inline\n", + "values = v\n", + "y = np.array(values)\n", + "t = np.linspace(0,1,11)\n", + "poly_coeff = np.polyfit(t, y, 2)\n", + "\n", + "plt.plot(t, y, 'o')\n", + "plt.plot(t, np.poly1d(poly_coeff)(t), '-')\n", + "plt.show()\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.16 page number 259" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.166666666667\n", + "Given problem is for drawing diagram, this diagram is drawn by step by step manner. \n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Given\n", + "import math \n", + "from matplotlib.pyplot import plot,suptitle,xlabel,ylabel\n", + "l = 6.0 #a - length of the rod\n", + "F = 1.0 #p - force applies in x direction \n", + "d = 1.0 #a \n", + "M = 1.0 #pa - torque applies on the rod\n", + "l_ab = 4.0 #a application of torque point from A\n", + "#M = 0 implies that\n", + "R_A = F/6.0 #p - The reaction at A\n", + "R_B = - R_A #F_Y = 0\n", + "\n", + "#Caliculations \n", + "\n", + "#Taking sections \n", + "#Section 1---1\n", + "l_1 = 1 #a - the length of the section \n", + "M_1 = - R_A*l_1 #M = 0\n", + "\n", + "#Section 2---2\n", + "l_2 = 4 #a - the length of the section \n", + "M_2 = - R_A*l_2 #M = 0\n", + "\n", + "l_4 = 2 #a - the length of the section \n", + "M_4 = 1/3.0 #pa #M = 0 '-M' because there is moment couple in between\n", + "\n", + "\n", + "#Section 3---3\n", + "l_3 = 1 #a - the length of the section \n", + "M_3 = 1/6.0#pa M = 0 '-M' because there is moment couple in between\n", + "print R_A\n", + "\n", + "#GRAPH\n", + "#Since the symmetry exists the graphs are also symmetry\n", + "%matplotlib inline\n", + "#Drawing of shear and bending moment diagram\n", + "print \"Given problem is for drawing diagram, this diagram is drawn by step by step manner. \"\n", + "X = [0,1,4,4.00001,5,6] # For graph precision \n", + "M = [0,M_1,M_2,M_4,M_3,0];\t\t\t#Bending moment matrix\n", + "plot(X,M);\t\t\t#Bending moment diagram\n", + "suptitle( 'Shear and bending moment diagram')\n", + "xlabel('X axis')\n", + "ylabel( 'Y axis') ;\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter6_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter6_8.ipynb new file mode 100644 index 00000000..f5318bbf --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter6_8.ipynb @@ -0,0 +1,570 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6:Pure Bending and Bending with Axial force " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.3 page number 293" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The moment of inertia of total system is 655000.0 mm4\n" + ] + } + ], + "source": [ + "#Given \n", + "#Entire area - hallow area\n", + "l_e = 60.0 #mm - length of the entire area\n", + "b_e = 40 #mm - width of the entire area\n", + "l_h = 30 #mm - length of the hallow area\n", + "b_h = 20 #mm - width of the hallow area\n", + "A_e = l_e*b_e #mm2 - The entire area\n", + "A_h = -l_h*b_h #mm2 - The hallow area '-' because its hallow\n", + "A_re = A_e + A_h #mm2 resultant area\n", + "y_e = l_e/2 # mm com from bottom \n", + "y_h = 20+l_h/2 #mm com from bottom \n", + "y_com = (A_e*y_e + A_h*y_h)/A_re \n", + "#moment of inertia caliculatins - bh3/12 +ad2\n", + "I_e = b_e*(l_e**3)/12 + A_e*((y_e-y_com)**2) #Parallel axis theorm\n", + "I_h = b_h*(l_h**3)/12 - A_h*((y_h-y_com)**2) #Parallel axis theorm\n", + "I_total = I_e - I_h\n", + "print \"The moment of inertia of total system is \",I_total,\"mm4\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.4 page number 295" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum stress at 2 mt is 4.81 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "l = 400 #mm - Length \n", + "b = 300 #mm - breath \n", + "F = 20 #KN _ the force applied on the beam \n", + "F_d = 0.75 #KN-m - The force distribution \n", + "d = 2 #mt - the point of interest from the free end\n", + "#caliculations \n", + "#From moment diagram\n", + "M = F*d - F_d*d*1\n", + "I = b*(l**3)/12 #mm4 - Bending moment diagram \n", + "c = l/2 # the stress max at this C\n", + "S = I/c #The maximum shear stress \n", + "shear_max = M*(10**6)/S #MPA - the maximum stress \n", + "print \"The maximum stress at 2 mt is\",round(shear_max,2),\"Mpa\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.5 pagr number 297" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum tensile stress 16.0 Ksi\n", + "The maximum compressive stress 21.6 Ksi\n" + ] + } + ], + "source": [ + "#Given \n", + "#We will divide this into three parts\n", + "F = 8 #k - force applied\n", + "d = 16 #inch -distance\n", + "l_1 = 1 #in \n", + "l_2 = 3 #in \n", + "b_1 = 4 #in \n", + "b_2 = 1 #in\n", + "A_1 = l_1* b_1 #in2 - area of part_1\n", + "y_1 = 0.5 #in com distance from ab\n", + "A_2 =l_2*b_2 #in2 - area of part_1\n", + "y_2 = 2.5 #in com distance from ab\n", + "A_3 = l_2*b_2 #in2 - area of part_1\n", + "y_3 = 2.5 #in com distance from ab\n", + "\n", + "y_net = (A_1*y_1 +A_2*y_2 + A_3*y_3)/(A_1+A_2+A_3) #in - The com of the whole system\n", + "c_max = (4-y_net) #in - The maximum distace from com to end\n", + "c_min = y_net #in - the minimum distance from com to end\n", + "I_1 = b_1*(l_1**3)/12 + A_1*((y_1-y_net)**2) #Parallel axis theorm\n", + "I_2 = b_2*(l_2**3)/12 + A_2*((y_2-y_net)**2)\n", + "I_3 = b_2*(l_2**3)/12 + A_2*((y_2-y_net)**2)\n", + "I_net = I_1 + I_2 + I_3 #in4 - the total moment of inertia\n", + "M_c = F*d*c_max \n", + "stress_cmax = M_c/I_net #Ksi - The maximum compressive stress\n", + "\n", + "M_t= F*d*c_min \n", + "stress_tmax = M_t/I_net #Ksi - The maximum tensile stress\n", + "print \"The maximum tensile stress\",stress_tmax ,\"Ksi\"\n", + "print \"The maximum compressive stress\",round(stress_cmax,1) ,\"Ksi\"\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.8 page number 303" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum stress in steel 11.49 Mpa\n", + "The maximum stress in wood 97.09 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "#Given \n", + "#We will divide this into two parts\n", + "E_w = 10.0 #Gpa - Youngs modulus of wood\n", + "E_s = 200.0 #Gpa - Youngs modulus of steel\n", + "M = 30.0 #K.N-m _ applied bending moment \n", + "n = E_s/E_w \n", + "l_1 = 250 #mm \n", + "l_2 = 10 #mm\n", + "b_1 = 150.0 #mm\n", + "b_2 = 150.0*n #mm\n", + "A_1 = l_1* b_1 #mm2 - area of part_1\n", + "y_1 = 125.0 #mm com distance from top\n", + "A_2 =l_2*b_2 #mm2 - area of part_1\n", + "y_2 = 255.0 #mm com distance from top\n", + "y_net = (A_1*y_1 +A_2*y_2)/(A_1+A_2) #mm - The com of the whole system from top\n", + "I_1 = b_1*(l_1**3)/12.0 + A_1*((y_1-y_net)**2) #Parallel axis theorm\n", + "I_2 = b_2*(l_2**3)/12.0 + A_2*((y_2-y_net)**2)\n", + "I_net = I_1 + I_2 #mm4 - the total moment of inertia\n", + "c_s= y_net # The maximum distance in steel \n", + "stress_steel = M*(10.0**6)*c_s/I_net #Mpa - The maximum stress in steel \n", + "\n", + "c_w= l_1+l_2-y_net # The maximum distance in wood \n", + "stress_wood = n*M*(10.0**6)*c_w/I_net #MPa - The maximum stress in wood \n", + "\n", + "print \"The maximum stress in steel \",round(stress_steel,2) ,\"Mpa\"\n", + "print \"The maximum stress in wood\",round(stress_wood,2) ,\"Mpa\" \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.9 page number 305" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum stress in concrete 834.07 psi\n", + "The stress in steel 17427.61 psi\n" + ] + } + ], + "source": [ + "#Given \n", + "M = 50000 #ft-lb , positive bending moment applied\n", + "N = 9 # number of steel bars \n", + "n = 15 # The ratio of steel to concrete \n", + "A_s = 30 #in2 area of steel in concrete\n", + "#(10*y)*(y/2) = 30*(20-y)\n", + "#y**2 + 6*y -120\n", + "#solving quadractic equation \n", + "import math\n", + "\n", + "a = 1\n", + "b = 6\n", + "c = -120\n", + "# calculate the discriminant\n", + "d = (b**2) - (4*a*c)\n", + "\n", + "# find two solutions\n", + "sol1 = (-b-math.sqrt(d))/(2*a)\n", + "sol2 = (-b+math.sqrt(d))/(2*a)\n", + "y = sol2 # Nuetral axis is found\n", + "l_1 = y #in- the concrete below nuetral axis is not considered\n", + "b_1 = 10 #in - width\n", + "A_1 = l_1* b_1 #in2 - area of concrete\n", + "y_1 = y/2 #in com of the concrete \n", + "y_2 = 20-y #in com of the transformed steel \n", + "I_1 = b_1*(l_1**3)/12.0 + A_1*((y_1-y)**2) #in4 parallel axis theorm\n", + "I_2 = A_s*((y_2)**2) #in4 first part is neglected\n", + "I_net = I_1 + I_2 #in4 - the total moment of inertia\n", + "c_c= y #in The maximum distance in concrete \n", + "stress_concrete = M*12*c_c/I_net #psi - The maximum stress in concrete \n", + "c_s= 20- y \n", + "stress_steel =n*M*12*c_s/I_net #psi - The maximum stress in concrete \n", + "print \"The maximum stress in concrete \",round(stress_concrete,2) ,\"psi\"\n", + "print \"The stress in steel\",round(stress_steel,2) ,\"psi\"\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example 6.10 page number 309" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum stress upward in straight case is 99.984 Mpa\n", + "The maximum stress downward in straight case is -99.984 Mpa\n", + "The maximum stress upward in curved case is 107.093207632 Mpa\n", + "The maximum stress downward in curved case is -93.6813516989 Mpa\n", + "The maximum stress upward in curved case2 is 128.733538525 Mpa\n", + "The maximum stress downward in curved case2 is -81.0307692623 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "l = 50.0 #mm - the length of the beam \n", + "b = 50.0 #mm - the width of the beam\n", + "M = 2083 #Nm\n", + "A = l*b #mm2 - The area \n", + "#straight beam \n", + "I = b*(l**3)/12.0 #mm4 - The moment of inertia of the beam\n", + "c_1= l/2 # the distance where the stress is maximum \n", + "c_2 = -l/2 # the distance where the stress is maximum \n", + "s_1 = I/c_1\n", + "s_2 = I/c_2\n", + "stress_max_1 = M*(10**3)/s_1 #Mpa - the maximum strss recorded in the crossection\n", + "stress_max_2 = M*(10**3)/s_2 #Mpa - the maximum strss recorded in the crossection \n", + "print \"The maximum stress upward in straight case is\",stress_max_1,\"Mpa\"\n", + "print \"The maximum stress downward in straight case is\",stress_max_2,\"Mpa\"\n", + "\n", + "#curved beam \n", + "import math\n", + "r = 250.0 #mm Radius of beam curved \n", + "r_0 = r - l/2 # inner radius \n", + "r_1 = r + l/2 # outer radius\n", + "R = l/(math.log(r_1/r_0)) #mm \n", + "e = r - R \n", + "stressr_max_1 = M*(10**3)*(R-r_0)/(r_0*A*e)\n", + "stressr_max_2 = M*(10**3)*(R-r_1)/(r_1*A*e)\n", + "print \"The maximum stress upward in curved case is\",stressr_max_1,\"Mpa\"\n", + "print \"The maximum stress downward in curved case is\",stressr_max_2,\"Mpa\"\n", + "\n", + "#curved beam _2 \n", + "import math\n", + "r = 75.0 #mm Radius of beam curved \n", + "r_0 = r - l/2 # inner radius \n", + "r_1 = r + l/2 # outer radius\n", + "R = l/(math.log(r_1/r_0)) #mm \n", + "e = r - R \n", + "stressr_max_1 = M*(10**3)*(R-r_0)/(r_0*A*e)\n", + "stressr_max_2 = M*(10**3)*(R-r_1)/(r_1*A*e)\n", + "print \"The maximum stress upward in curved case2 is\",stressr_max_1,\"Mpa\"\n", + "print \"The maximum stress downward in curved case2 is\",stressr_max_2,\"Mpa\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Page number 6.14 page number 318" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The plastic moment of the system is 120784.313725 ft-lb\n" + ] + } + ], + "source": [ + "#given \n", + "#from example 6.9\n", + "St_ul = 2500 #psi - ultimate strength\n", + "st_yl = 40000 #psi _ yielding strength \n", + "b = 10 #in - width from example \n", + "A = 2 #in2 The area of the steel\n", + "d = 20 \n", + "t_ul = st_yl*A #ultimate capasity\n", + "y = t_ul/(St_ul*b*0.85) #in 0.85 because its customary\n", + "M_ul = t_ul*(d-y/2)/12 #ft-lb Plastic moment \n", + "print \"The plastic moment of the system is \",M_ul,\"ft-lb\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.15 page number 231" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The angle at which nuetral axis locates is 0.0226547191205 radians\n" + ] + } + ], + "source": [ + "#Given \n", + "#From example 5.8 \n", + "W = 4.0 #N/m - The force distribution \n", + "L = 3 # m - The length of the force applied\n", + "M = W*L/8.0 # KN.m The moment due to force distribution\n", + "o = 30 # the angle of force applid to horizantal\n", + "l = 150.0 #mm length of the crossection \n", + "b = 100.0 #mm - width of the crossection \n", + "import math \n", + "M_z = M*(math.cos(3.14/6))\n", + "M_y = M*(math.sin(math.pi/6))\n", + "I_z = b*(l**3)/12.0\n", + "I_y = l*(b**3)/12.0\n", + "#tanb = I_z /I_y *tan30\n", + "b = math.atan(math.radians(I_z*math.tan(3.14/6.0)/I_y ))\n", + "print \"The angle at which nuetral axis locates is\",b,\"radians\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.16 pagenumber 323" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum tensile stress -76.1 Mpa\n", + "The maximum compressive stress 67.73 Mpa\n" + ] + } + ], + "source": [ + "import math\n", + "M = 10 #KN.m - The moment applied\n", + "I_max = 23.95*(10**6) #mm4 - I_z The moment of inertia\n", + "I_min = 2.53*(10**6) #mm4 - I_y The moment of inertia\n", + "o = 14.34 # degress the principle axis rotated\n", + "#Coponents of M in Y,Z direction \n", + "M_z = M*(10**6)*math.cos(math.radians(o))\n", + "M_y = M*(10**6)*math.sin(math.radians(o))\n", + "#tanb = I_z /I_y *tan14.34\n", + "b = math.atan((I_max*math.tan(math.radians(o))/I_min ))\n", + "B = math.degrees(b) \n", + "y_p = 122.9 # mm - principle axis Y cordinate\n", + "z_p = -26.95 #mm - principle axis z cordinate\n", + "stress_B = - M_z*y_p/I_max + M_y*z_p/I_min #Mpa - Maximum tensile stress\n", + "y_f = -65.97 # mm - principle axis Y cordinate\n", + "z_f = 41.93 #mm - principle axis z cordinate\n", + "stress_f = - M_z*y_f/I_max + M_y*z_f/I_min #Mpa - Maximum compressive stress\n", + "print \"The maximum tensile stress\",round(stress_B,2) ,\"Mpa\"\n", + "print \"The maximum compressive stress\",round(stress_f,2),\"Mpa\"\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.18 page number 328" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum stress in the beam 3.332 Mpa \n" + ] + } + ], + "source": [ + "l = 50 #mm - The length of the beam \n", + "b = 50 #mm - The width of the beam \n", + "A = l*b #mm2 - The area of the beam \n", + "p = 8.33 #KN - The force applied on the beam \n", + "stress_max = p*(10**3)/A #Mpa After cutting section A--b\n", + "print \"The maximum stress in the beam\",stress_max ,\"Mpa \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.24 page number 339" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "By sketching the line with angle 53.2 degrees The farthest point associated with B and F\n" + ] + } + ], + "source": [ + "import math\n", + "M = 10 #KN.m - The moment applied\n", + "I_max = 23.95*(10**6) #mm4 - I_z The moment of inertia\n", + "I_min = 2.53*(10**6) #mm4 - I_y The moment of inertia\n", + "o = 14.34 # degress the principle axis rotated\n", + "#Coponents of M in Y,Z direction \n", + "M_z = M*(10**6)*math.cos(math.radians(o))\n", + "M_y = M*(10**6)*math.sin(math.radians(o))\n", + "#tanb = I_z /I_y *tan14.34\n", + "b = math.atan((I_max*math.tan(math.radians(o))/I_min ))\n", + "B = math.degrees(b) \n", + "y_p = 122.9 # mm - principle axis Y cordinate\n", + "z_p = -26.95 #mm - principle axis z cordinate\n", + "stress_B = - M_z*y_p/I_max + M_y*z_p/I_min #Mpa - Maximum tensile stress\n", + "y_f = -65.97 # mm - principle axis Y cordinate\n", + "z_f = 41.93 #mm - principle axis z cordinate\n", + "stress_f = - M_z*y_f/I_max + M_y*z_f/I_min #Mpa - Maximum compressive stress\n", + "#location of nuetral axis To show these stresses are max and minimum \n", + "#tanB = MzI_z + MzI_yz/MyI_y +M_YI_yz\n", + "I_z = 22.64 *(10**6) #mm4 moment of inertia in Z direction\n", + "I_y = 3.84 *(10**6) #mm4 moment of inertia in Y direction\n", + "I_yz =5.14 *(10**6) #mm4 moment of inertia in YZ direction \n", + "M_y = M #KN.m bending moment in Y dorection \n", + "M_z = M #KN.m bending moment in Y dorection \n", + "B = math.atan(( M_z*I_yz)/(M_z*I_y )) #radians location on neutral axis\n", + "beta = math.degrees(B)\n", + "print \"By sketching the line with angle\",round(beta,1),\"degrees The farthest point associated with B and F\" " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter7_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter7_8.ipynb new file mode 100644 index 00000000..cec54f64 --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter7_8.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# chapter 7:Shear stress in Beams and Related Problems " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.1 page number 365" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The minimal space between the nails 42.0 mm\n" + ] + } + ], + "source": [ + "#Given\n", + "shear_v = 3000 #N - Transmitted vetical shear \n", + "shear_al = 700 #N - The maximum allowable \n", + "#We will divide this into two parts\n", + "l_1 = 50.0 #mm \n", + "l_2 = 200.0 #mm \n", + "b_1 = 200.0 #mm \n", + "b_2 = 50.0 #mm\n", + "A_1 = l_1* b_1 #mm2 - area of part_1\n", + "y_1 = 25.0 #mm com distance \n", + "A_2 =l_2*b_2 #mm2 - area of part_1\n", + "y_2 = 150.0 #in com distance \n", + "y_net = (A_1*y_1 +A_2*y_2)/(A_1+A_2) #mm - The com of the whole system\n", + "c_max = (4-y_net) #mm - The maximum distace from com to end\n", + "c_min = y_net #mm - the minimum distance from com to end\n", + "I_1 = b_1*(l_1**3)/12 + A_1*((y_1-y_net)**2) #Parallel axis theorm\n", + "I_2 = b_2*(l_2**3)/12 + A_2*((y_2-y_net)**2)\n", + "I_net = I_1 + I_2 #mm4 - the total moment of inertia\n", + "Q = A_1*(-y_1+y_net) #mm3\n", + "q = shear_v*Q/I_net #N/mm - Shear flow\n", + "d = shear_al/q # The space between the nails \n", + "print \"The minimal space between the nails \",round(d,0) ,\"mm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.2 pagenumber 365" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The minimal space between the nails 123.0 mm\n" + ] + } + ], + "source": [ + "#Given \n", + "l = 6 #m -length of the beam \n", + "p = 3 #KN-m _ the load applied\n", + "R_a = l*p/2 #KN -The reaction at a, Since the system is symmetry \n", + "R_b = l*p/2 #KN -The reaction at b \n", + "l_s = 10 #mm - The length of the screw \n", + "shear_al = 2 #KN - The maximum load the screw can take \n", + "I = 2.36*(10**9) #mm2 The moment of inertia of the whole system\n", + "#We will divide this into two parts\n", + "l_1 = 50.0 #mm \n", + "l_2 = 50.0 #mm \n", + "b_1 = 100.0 #mm \n", + "b_2 = 200.0 #mm\n", + "A_1 = l_1* b_1 #in2 - area of part_1\n", + "y_1 = 200.0 #mm com distance \n", + "A_2 =l_2*b_2 #mm2 - area of part_1\n", + "y_2 = 225.0 #in com distance\n", + "Q = 2*A_1*y_1 + A_2*y_2 # mm3 For the whole system\n", + "q = R_a*Q*(10**3)/I #N/mm The shear flow \n", + "d = shear_al*(10**3)/q #mm The space between the nails\n", + "print \"The minimal space between the nails \",round(d,0),\"mm\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.6 page number 376" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The shear centre from outside vertical face is 1.825 in\n" + ] + } + ], + "source": [ + "#Given\n", + "#we will divide this into two equal parts and other part\n", + "l = 10.0 # in - The height \n", + "t = 0.1 # in - The width\n", + "b = 5.0 #mm- The width of the above part \n", + "A = t* b #in2 - area of part\n", + "y_net = l/2 # The com of the system \n", + "y_1 = l # The position of teh com of part_2\n", + "I_1 = t*(l**3)/12 #in4 The moment of inertia of part 1\n", + "I_2 = 2*A*((y_1-y_net)**2) #in4 The moment of inertia of part 2 \n", + "I = I_1 + I_2 #in4 The moment of inertia \n", + "e = (b**2)*(l**2)*t/(4*I) #in the formula of channels\n", + "l_sc = e - t/2 #in- The shear centre \n", + "print \"The shear centre from outside vertical face is \",l_sc ,\"in\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.8 page number 387" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The direct maximum stress 4.25 Mpa\n", + "The torsion maximum stress 101.91 Mpa\n", + "The total stress 106.16 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "dia = 10.0 #mm - The diameter of the cylinder \n", + "c = dia/2 #mm - the radius of the cylinder \n", + "A = 3.14*(c**2) #mm2 The area of the crossection \n", + "y = 4*c/(3*3.14) #mm The com of cylinder \n", + "I = 3.14*(c**4)/4 #mm4 - The moment of inertia of the cylinder\n", + "j = 3.14*(dia**4)/32 #mm4\n", + "T = 20.0 #N.m - The torque \n", + "V = 250.0 #N - The shear \n", + "M = 25.0 #N-m The bending moment \n", + "Q = A*y/2 #mm\n", + "stress_dmax = 4*V/(3*A) #V*Q/(I*d) #Mpa The direct maximum stress\n", + "stress_tmax = T*c*(10**3)/j #-Mpa The torsion maximum stress\n", + "stress_total = stress_dmax + stress_tmax #Mpa The total stress\n", + "print \"The direct maximum stress\",round(stress_dmax,2),\"Mpa\"\n", + "print \"The torsion maximum stress\",round(stress_tmax,2),\"Mpa\"\n", + "print \"The total stress\",round(stress_total,2),\"Mpa\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.9 page number 393" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The maximum stress in the system 4.84 Mpa\n" + ] + } + ], + "source": [ + "#Given\n", + "dia = 15 #mm - The diameter of the rod\n", + "h = 0.5 #mt - The freely falling height \n", + "A = 3.14*(dia**2)/4 #mm2 The area of the crossection\n", + "E = 200 #Gpa -Youngs modulus\n", + "L = 750 #mm - The total length of the rod\n", + "G = 80 #gpa - Shear modulus \n", + "N = 10 #number of live coils\n", + "d = 5 #mm the diameter of live coil \n", + "m = 3 # the mass of freely falling body\n", + "H = 500 #mm -from mass to spring \n", + "F= m*9.81 #Kg the force due to that mass\n", + "p = 3 #KN-m _ the load applied\n", + "#e = e_rod + e_spr\n", + "#e_rod\n", + "e_rod = p*L*(10**-3)/(A*E) #mm The elongation due to freely falling body\n", + "#e_spr\n", + "e_spr = 64*F*(dia**3)*N*(10**-3)/(G*(d**4)) #mm The elongation due to spring\n", + "e = e_rod + e_spr #mm The total elongation \n", + "p_dyn =F*(1+pow((1+(2*H/e)),0.5))\n", + "Stress_max = p_dyn/A #MPa - The maximum stress in the system \n", + "print \"The maximum stress in the system \",round(Stress_max,2),\"Mpa\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter8_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter8_8.ipynb new file mode 100644 index 00000000..4066d756 --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter8_8.ipynb @@ -0,0 +1,345 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8:Transformation of stress and strain and Yield and Fracture criteria " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.1 page number 405 " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The stress action in normal direction on AB 1.29 Mpa\n", + "The stress action in tangential direction on AB 2.12 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "import math \n", + "from math import radians\n", + "o = 22.5 #degrees , The angle of infetisimal wedge \n", + "A = 1 #mm2 The area of the element \n", + "A_ab = 1*(math.cos(radians(o))) #mm2 - The area corresponds to AB\n", + "A_bc = 1*(math.sin(radians(o))) #mm2 - The area corresponds to BC\n", + "S_1 = 3 #MN The stresses applying on the element \n", + "S_2 = 2 #MN\n", + "S_3 = 2 #MN\n", + "S_4 = 1 #MN \n", + "F_1 = S_1*A_ab # The Forces obtained by multiplying stress by their areas \n", + "F_2 = S_2*A_ab\n", + "F_3 = S_3*A_bc\n", + "F_4 = S_4*A_bc\n", + "#sum of F_N = 0 equilibrim in normal direction \n", + "N = (F_1-F_3)*(math.cos(radians(o))) + (F_4 - F_2)*(math.sin(radians(o)))\n", + "\n", + "#sum of F_s = 0 equilibrim in tangential direction \n", + "\n", + "S = (F_2-F_4)*(math.cos(radians(o))) + (F_1 - F_3)*(math.sin(radians(o)))\n", + "\n", + "Stress_Normal = N/A #Mpa - The stress action in normal direction on AB\n", + "Stress_tan = S/A #Mpa - The stress action in tangential direction on AB\n", + "print \"The stress action in normal direction on AB\",round(Stress_Normal,2),\"Mpa\"\n", + "print \"The stress action in tangential direction on AB\",round(Stress_tan,2),\"Mpa\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.2 page number 413" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a) The stress action in normal direction on AB 4.12 Mpa\n", + "a) The stress action in tangential direction on AB 0.71 Mpa\n", + "b) The principle stress 4.2 Mpa tension\n", + "b) The principle stress -0.06 Mpa compression\n", + "b) The principle plane angles are 32.0 , 122.0 degrees\n", + "c) The maximum shear is -2.24 Mpa\n", + "a) [ 4.2 -0.1 0. ] Mpa\n", + "b) [ 2. -2.24 -2.24 2. ] Mpa\n" + ] + } + ], + "source": [ + "#Given\n", + "o = -22.5 #degrees , The angle of infetisimal wedge \n", + "A = 1 #mm2 The area of the element \n", + "import math \n", + "from math import radians\n", + "from numpy import array\n", + "A_ab = 1*(math.cos(radians(o))) #mm2 - The area corresponds to AB\n", + "A_bc = 1*(math.sin(radians(o))) #mm2 - The area corresponds to BC\n", + "S_1 = 3.0 #MN The stresses applying on the element \n", + "S_2 = 2.0 #MN\n", + "S_3 = 2.0 #MN\n", + "S_4 = 1.0 #MN\n", + "#Caliculations \n", + "\n", + "F_1 = S_1*A_ab # The Forces obtained by multiplying stress by their areas \n", + "F_2 = S_2*A_ab\n", + "F_3 = S_3*A_bc\n", + "F_4 = S_4*A_bc\n", + "#sum of F_N = 0 equilibrim in normal direction \n", + "N = (F_1-F_3)*(math.cos(radians(o))) + (F_4 - F_2)*(math.sin(radians(o)))\n", + "\n", + "#sum of F_s = 0 equilibrim in tangential direction \n", + "\n", + "S = (F_2-F_4)*(math.cos(radians(o))) + (F_1 - F_3)*(math.sin(radians(o)))\n", + "\n", + "Stress_Normal = N/A #Mpa - The stress action in normal direction on AB\n", + "Stress_tan = S/A #Mpa - The stress action in tangential direction on AB\n", + "print \"a) The stress action in normal direction on AB\",round(Stress_Normal,2),\"Mpa\"\n", + "print \"a) The stress action in tangential direction on AB\",round(Stress_tan,2),\"Mpa\"\n", + "\n", + "#Part- b\n", + "\n", + "S_max = (S_4+S_1)/2 + (((((S_4-S_1)/2)**2) + S_3**2)**0.5) #Mpa - The maximum stress\n", + "S_min = (S_4+S_1)/2.0 - (((((S_4-S_1/2))**2) + S_3**2)**0.5) #Mpa - The minumum stress\n", + "k = 0.5*math.atan(S_3/((S_1-S_4)/2)) #radians The angle of principle axis\n", + "k_1 = math.degrees(k)\n", + "k_2 = k_1+90 #The principle plane angles\n", + "print \"b) The principle stress \",round(S_max,1),\"Mpa tension\"\n", + "print \"b) The principle stress \",round(S_min,2),\"Mpa compression\"\n", + "print \"b) The principle plane angles are\",round(k_1,0),\",\",round(k_2,0),\"degrees\"\n", + "\n", + "#part-c\n", + "#The maximum shear stress case\n", + "t_xy = (((((S_4-S_1)/2)**2) + S_3**2)**0.5) #Mpa - The maximum shear stress case\n", + "K = 0.5*math.atan((-(S_1-S_4)/(2*S_3))) #radians The angle of principle axis\n", + "K_0 = math.degrees(K)\n", + "if K_0<0:\n", + " K_1 = K_0+90\n", + "else:\n", + " K_1 = K_0\n", + "K_2 = K_1+90 #PRinciple plain angles\n", + "T_xy = -((S_1-S_4)/2)*(math.sin(radians(2*K_1))) + ((S_4+S_1)/2)*(math.cos(radians(2*K_1))) # Shear stress\n", + "print \"c) The maximum shear is \",round(T_xy,2),\"Mpa\" \n", + "S_mat_a = array([round(S_max,1),round(S_min,1),0]) #MPa maximum stress matrix\n", + "S_mat_b = array([(S_4+S_1)/2,round(T_xy,2),round(T_xy,2),(S_4+S_1)/2]) #MPa maximum stress matrix at maximum shear\n", + "print \"a)\",S_mat_a,\"Mpa\"\n", + "print \"b)\",S_mat_b,\"Mpa\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.3 page number 421" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The principle stresses are 6.0 Mpa -4.0 Mpa\n", + "The maximum shear stress 5.0 Mpa\n" + ] + } + ], + "source": [ + "#Given \n", + "import math \n", + "from math import radians \n", + "S_x = -2 #Mpa _ the noraml stress in x direction\n", + "S_y = 4 #Mpa _ the noraml stress in Y direction\n", + "c = (S_x + S_y)/2 #Mpa - The centre of the mohr circle \n", + "point_x = -2 #The x coordinate of a point on mohr circle\n", + "point_y = 4 #The y coordinate of a point on mohr circle\n", + "Radius = pow((point_x-c)**2 + point_y**2,0.5) # The radius of the mohr circle\n", + "S_1 = Radius +1#MPa The principle stress\n", + "S_2 = -Radius +1 #Mpa The principle stress\n", + "S_xy_max = Radius #Mpa The maximum shear stress\n", + "print \"The principle stresses are\",S_1 ,\"Mpa\",S_2,\"Mpa\"\n", + "print \"The maximum shear stress\",S_xy_max,\"Mpa\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.4 page number 423" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The normal stress on the 221/2 plane 4.82 Mpa\n", + "The tangential stress on the 221/2 plane 1.43 Mpa\n" + ] + } + ], + "source": [ + "#Given\n", + "import math \n", + "S_x = 3.0 #Mpa _ the noraml stress in x direction\n", + "S_y = 1.0 #Mpa _ the noraml stress in Y direction\n", + "c = (S_x + S_y)/2 #Mpa - The centre of the mohr circle \n", + "point_x = 1 #The x coordinate of a point on mohr circle\n", + "point_y = 3 #The y coordinate of a point on mohr circle\n", + "#Caliculations \n", + "\n", + "Radius = pow((point_x-c)**2 + point_y**2,0.5) # The radius of the mohr circle\n", + "#22.5 degrees line is drawn \n", + "o = 22.5 #degrees \n", + "a = 71.5 - 2*o #Degrees, from diagram \n", + "stress_n = c + Radius*math.sin(math.degrees(o)) #Mpa The normal stress on the plane \n", + "stress_t = Radius*math.cos(math.degrees(o)) #Mpa The tangential stress on the plane\n", + "print \"The normal stress on the 221/2 plane \",round(stress_n,2),\"Mpa\"\n", + "print \"The tangential stress on the 221/2 plane \",round(stress_t,2),\"Mpa\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.7 page number 437" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The principle strains are 400 um/m -600 um/m\n", + "The angle of principle plane 18.43 degrees\n" + ] + } + ], + "source": [ + "import math\n", + "e_x = -500 #10-6 m/m The contraction in X direction\n", + "e_y = 300 #10-6 m/m The contraction in Y direction\n", + "e_xy = -600 #10-6 m/m discorted angle\n", + "centre = (e_x + e_y)/2 #10-6 m/m \n", + "point_x = -500 #The x coordinate of a point on mohr circle\n", + "point_y = 300 #The y coordinate of a point on mohr circle\n", + "Radius = 500 #10-6 m/m - from mohr circle\n", + "e_1 = Radius +centre #MPa The principle strain\n", + "e_2 = -Radius +centre #Mpa The principle strain\n", + "k = math.atan(300.0/900) # from geometry\n", + "k_1 = math.degrees(k)\n", + "print \"The principle strains are\",e_1,\"um/m\",e_2,\"um/m\"\n", + "print \"The angle of principle plane\",round(k_1,2) ,\"degrees\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.8 page number 441" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The principle stresses are 48.35 Mpa -105.49 MPa\n" + ] + } + ], + "source": [ + "#Given\n", + "e_0 = -500 #10-6 m/m \n", + "e_45 = 200 #10-6 m/m \n", + "e_90 = 300 #10-6 m/m\n", + "E = 200 #Gpa - youngs modulus of steel \n", + "v = 0.3 # poissions ratio \n", + "#Caliculations \n", + "\n", + "e_xy = 2*e_45 - (e_0 +e_90 ) #10-6 m/m from equation 8-40 in text\n", + "# from example 8.7\n", + "e_x = -500 #10-6 m/m The contraction in X direction\n", + "e_y = 300 #10-6 m/m The contraction in Y direction\n", + "e_xy = -600 #10-6 m/m discorted angle\n", + "centre = (e_x + e_y)/2 #10-6 m/m \n", + "point_x = -500 #The x coordinate of a point on mohr circle\n", + "point_y = 300 #The y coordinate of a point on mohr circle\n", + "Radius = 500 #10-6 m/m - from mohr circle\n", + "e_1 = Radius +centre #MPa The principle strain\n", + "e_2 = -Radius +centre #Mpa The principle strain\n", + "\n", + "stress_1 = E*(10**-3)*(e_1+v*e_2)/(1-v**2) #Mpa the stress in this direction \n", + "stress_2 = E*(10**-3)*(e_2+v*e_1)/(1-v**2) #Mpa the stress in this direction \n", + "print\"The principle stresses are \",round(stress_1,2),\"Mpa\",round(stress_2,2),\"MPa\" " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter9_8.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter9_8.ipynb new file mode 100644 index 00000000..7136003d --- /dev/null +++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter9_8.ipynb @@ -0,0 +1,229 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 9:Elastic stress analysis and design" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.4 pagenumber 465" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a)The principle stresses are 16.67 MPa, -16.67 Mpa\n", + "b)The stresses on inclines plane 11.11 Mpa noraml, -7.06 Mpa shear \n" + ] + } + ], + "source": [ + "#Given \n", + "import math \n", + "b = 40.0 #mm - The width of the beam crossection\n", + "h = 300.0 #mm - The length of the beam crossection \n", + "V = 40.0 #KN - The shear stress in teh crossection\n", + "M = 10.0 #KN-m - The bending moment on K----K crossection \n", + "c = h/2 #mm -The position at which maximum stress occurs on the crossection\n", + "I = b*(h**3)/12 #mmm4 - the moment of inertia \n", + "#Caliculations \n", + "\n", + "stress_max_1 = M*c*(10**6)/I #The maximum stress occurs at the end\n", + "stress_max_2 = -M*c*(10**6)/I #The maximum stress occurs at the end\n", + "y = 140 #mm The point of interest, the distance of element from com\n", + "n = y/(c) # The ratio of the distances from nuetral axis to the elements\n", + "stress_L_1 = n*stress_max_1 #The normal stress on elements L--L\n", + "stress_L_2 = -n*stress_max_1 #The normal stress on elements L--L\n", + "x = 10 #mm The length of the element\n", + "A = b*x #mm3 The area of the element \n", + "y_1 = y+x/2 # the com of element from com of whole system\n", + "stress_xy = V*A*y_1*(10**3)/(I*b) #Mpa - The shear stress on the element \n", + "#stresses acting in plane 30 degrees \n", + "o = 60 #degrees - the plane angle\n", + "stress_theta = stress_L_1/2 + stress_L_1*(math.cos(math.radians(o)))/2 - stress_xy*(math.sin(math.radians(o))) #Mpa by direct application of equations\n", + "stress_shear = -stress_L_1*(math.sin(math.radians(o)))/2 - stress_xy*(math.cos(math.radians(o))) #Mpa Shear stress\n", + " \n", + "print \"a)The principle stresses are \",round(stress_max_1,2),\"MPa,\",round(stress_max_2,2),\"Mpa\"\n", + "print \"b)The stresses on inclines plane \",round(stress_theta,2),\"Mpa noraml, \",round(stress_shear,2),\"Mpa shear \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.5 page number 476" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The stress developed 0.4 is in allowable ranges for 30077.85 mm2 area\n", + "The minimum area is 5714.28571429 mm2\n" + ] + } + ], + "source": [ + "#Given\n", + "M = 10 #KN-m moment\n", + "v = 8.0 #KN - shear Stress \n", + "stress_allow = 8 #MPa - The maximum allowable stress\n", + "shear_allow_per = 1.4 #Mpa - The allowable stress perpendicular to grain\n", + "stress_allow_shear = 0.7 #MPa - The maximum allowable shear stress\n", + "#Caliculations \n", + "\n", + "S = M*(10**6)/stress_allow #mm3 \n", + "#lets arbitarly assume h = 2b\n", + "#S = b*(h**2)/6\n", + "h = pow(12*S,0.333) #The depth of the beam\n", + "b = h/2 #mm The width of the beam\n", + "A = h*b #mm2 The area of the crossection , assumption\n", + "stress_shear = 3*v*(10**3)/(2*A) #Mpa The strear stress \n", + "if stress_sheard:\n", + " \n", + " m=(x1+x2)/2.0\n", + " print \" \\t%f\\t%f\\t%f\\t%f\\n\" %(x1,x2,m,f(m))\n", + " if f(m)*f(x1)>0.0:\n", + " x1=m\n", + " else:\n", + " x2=m \n", + " c=c+1 # to count number of iterations \n", + "print \"the solution of equation after %i iteration is %g\" %(c,m)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Succesive approximations \t x1\t \tx2\t \tm\t \tf(m)\n", + "\n", + " \t1.000000\t2.000000\t1.500000\t0.875000\n", + "\n", + " \t1.000000\t1.500000\t1.250000\t-0.296875\n", + "\n", + " \t1.250000\t1.500000\t1.375000\t0.224609\n", + "\n", + " \t1.250000\t1.375000\t1.312500\t-0.051514\n", + "\n", + " \t1.312500\t1.375000\t1.343750\t0.082611\n", + "\n", + " \t1.312500\t1.343750\t1.328125\t0.014576\n", + "\n", + " \t1.312500\t1.328125\t1.320312\t-0.018711\n", + "\n", + " \t1.320312\t1.328125\t1.324219\t-0.002128\n", + "\n", + " \t1.324219\t1.328125\t1.326172\t0.006209\n", + "\n", + " \t1.324219\t1.326172\t1.325195\t0.002037\n", + "\n", + " \t1.324219\t1.325195\t1.324707\t-0.000047\n", + "\n", + " \t1.324707\t1.325195\t1.324951\t0.000995\n", + "\n", + " \t1.324707\t1.324951\t1.324829\t0.000474\n", + "\n", + " \t1.324707\t1.324829\t1.324768\t0.000214\n", + "\n", + "the solution of equation after 15 iteration is 1.32477'\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.2:pg-25" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.2\n", + "#bisection method\n", + "#page 25\n", + "import math\n", + "def f(x):\n", + " return math.pow(x,3)-2*x-5\n", + "x1=2 \n", + "x2=3 #f(2) is negative and f(3) is positive\n", + "d=0.0001 #for accuracy of root\n", + "c=1\n", + "print \"Succesive approximations \\t x1\\t \\tx2\\t \\tm\\t \\tf(m)\\n\"\n", + "while abs(x1-x2)>d:\n", + " m=(x1+x2)/2.0\n", + " print \" \\t%f\\t%f\\t%f\\t%f\\n\" %(x1,x2,m,f(m))\n", + " if f(m)*f(x1)>0:\n", + " x1=m\n", + " else:\n", + " x2=m \n", + " c=c+1;# to count number of iterations \n", + "print \"the solution of equation after %i iteration is %0.4g\" %(c,m)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Succesive approximations \t x1\t \tx2\t \tm\t \tf(m)\n", + "\n", + " \t2.000000\t3.000000\t2.500000\t5.625000\n", + "\n", + " \t2.000000\t2.500000\t2.250000\t1.890625\n", + "\n", + " \t2.000000\t2.250000\t2.125000\t0.345703\n", + "\n", + " \t2.000000\t2.125000\t2.062500\t-0.351318\n", + "\n", + " \t2.062500\t2.125000\t2.093750\t-0.008942\n", + "\n", + " \t2.093750\t2.125000\t2.109375\t0.166836\n", + "\n", + " \t2.093750\t2.109375\t2.101562\t0.078562\n", + "\n", + " \t2.093750\t2.101562\t2.097656\t0.034714\n", + "\n", + " \t2.093750\t2.097656\t2.095703\t0.012862\n", + "\n", + " \t2.093750\t2.095703\t2.094727\t0.001954\n", + "\n", + " \t2.093750\t2.094727\t2.094238\t-0.003495\n", + "\n", + " \t2.094238\t2.094727\t2.094482\t-0.000771\n", + "\n", + " \t2.094482\t2.094727\t2.094604\t0.000592\n", + "\n", + " \t2.094482\t2.094604\t2.094543\t-0.000090\n", + "\n", + "the solution of equation after 15 iteration is 2.095\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.3:pg-26" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.3\n", + "#bisection method\n", + "#page 26\n", + "import math\n", + "def f(x):\n", + " return math.pow(x,3)+math.pow(x,2)+x+7\n", + "x1=-3\n", + "x2=-2 #f(-3) is negative and f(-2) is positive\n", + "d=0.0001 #for accuracy of root\n", + "c=1\n", + "print \"Succesive approximations \\t x1\\t \\tx2\\t \\tm\\t \\tf(m)\\n\"\n", + "while abs(x1-x2)>d:\n", + " m=(x1+x2)/2.0\n", + " print \" \\t%f\\t%f\\t%f\\t%f\\n\" %(x1,x2,m,f(m))\n", + " if f(m)*f(x1)>0:\n", + " x1=m\n", + " else:\n", + " x2=m \n", + " c=c+1 # to count number of iterations \n", + "print \"the solution of equation after %i iteration is %0.4g\" %(c,m)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Succesive approximations \t x1\t \tx2\t \tm\t \tf(m)\n", + "\n", + " \t-3.000000\t-2.000000\t-2.500000\t-4.875000\n", + "\n", + " \t-2.500000\t-2.000000\t-2.250000\t-1.578125\n", + "\n", + " \t-2.250000\t-2.000000\t-2.125000\t-0.205078\n", + "\n", + " \t-2.125000\t-2.000000\t-2.062500\t0.417725\n", + "\n", + " \t-2.125000\t-2.062500\t-2.093750\t0.111481\n", + "\n", + " \t-2.125000\t-2.093750\t-2.109375\t-0.045498\n", + "\n", + " \t-2.109375\t-2.093750\t-2.101562\t0.033315\n", + "\n", + " \t-2.109375\t-2.101562\t-2.105469\t-0.006010\n", + "\n", + " \t-2.105469\t-2.101562\t-2.103516\t0.013673\n", + "\n", + " \t-2.105469\t-2.103516\t-2.104492\t0.003836\n", + "\n", + " \t-2.105469\t-2.104492\t-2.104980\t-0.001086\n", + "\n", + " \t-2.104980\t-2.104492\t-2.104736\t0.001376\n", + "\n", + " \t-2.104980\t-2.104736\t-2.104858\t0.000145\n", + "\n", + " \t-2.104980\t-2.104858\t-2.104919\t-0.000470\n", + "\n", + "the solution of equation after 15 iteration is -2.105\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.4:pg-26" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.4\n", + "#bisection method\n", + "#page 26\n", + "import math\n", + "def f(x):\n", + " return x*math.exp(x)-1\n", + "x1=0 \n", + "x2=1 #f(0) is negative and f(1) is positive\n", + "d=0.0005 #maximun tolerance value\n", + "c=1\n", + "print \"Succesive approximations \\t x1\\t \\tx2\\t \\tm\\t \\ttol\\t \\tf(m)\\n\"\n", + "while abs((x2-x1)/x2)>d:\n", + " m=(x1+x2)/2.0 #tolerance value for each iteration\n", + " tol=((x2-x1)/x2)*100\n", + " print \" \\t%f\\t%f\\t%f\\t%f\\t%f\\n\" %(x1,x2,m,tol,f(m))\n", + " if f(m)*f(x1)>0:\n", + " x1=m\n", + " else:\n", + " x2=m \n", + " c=c+1 # to count number of iterations \n", + "print \"the solution of equation after %i iteration is %0.4g\" %(c,m)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Succesive approximations \t x1\t \tx2\t \tm\t \ttol\t \tf(m)\n", + "\n", + " \t0.000000\t1.000000\t0.500000\t100.000000\t-0.175639\n", + "\n", + " \t0.500000\t1.000000\t0.750000\t50.000000\t0.587750\n", + "\n", + " \t0.500000\t0.750000\t0.625000\t33.333333\t0.167654\n", + "\n", + " \t0.500000\t0.625000\t0.562500\t20.000000\t-0.012782\n", + "\n", + " \t0.562500\t0.625000\t0.593750\t10.000000\t0.075142\n", + "\n", + " \t0.562500\t0.593750\t0.578125\t5.263158\t0.030619\n", + "\n", + " \t0.562500\t0.578125\t0.570312\t2.702703\t0.008780\n", + "\n", + " \t0.562500\t0.570312\t0.566406\t1.369863\t-0.002035\n", + "\n", + " \t0.566406\t0.570312\t0.568359\t0.684932\t0.003364\n", + "\n", + " \t0.566406\t0.568359\t0.567383\t0.343643\t0.000662\n", + "\n", + " \t0.566406\t0.567383\t0.566895\t0.172117\t-0.000687\n", + "\n", + " \t0.566895\t0.567383\t0.567139\t0.086059\t-0.000013\n", + "\n", + "the solution of equation after 13 iteration is 0.5671\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.5:pg-27" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.5\n", + "#bisection method\n", + "#page 27\n", + "import math\n", + "def f(x):\n", + " return 4*math.exp(-x)*math.sin(x)-1\n", + "x1=0 \n", + "x2=0.5 #f(0) is negative and f(1) is positive\n", + "d=0.0001 #for accuracy of root\n", + "c=1 \n", + "print \"Succesive approximations \\t x1\\t \\tx2\\t \\tm\\t \\t \\tf(m)\\n\"\n", + "while abs(x2-x1)>d:\n", + " m=(x1+x2)/2.0\n", + " print \" \\t%f\\t%f\\t%f\\t%f\\n\" %(x1,x2,m,f(m))\n", + " if f(m)*f(x1)>0:\n", + " x1=m\n", + " else:\n", + " x2=m \n", + " c=c+1 # to count number of iterations \n", + "print \"the solution of equation after %i iteration is %0.3g\" %(c,m)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Succesive approximations \t x1\t \tx2\t \tm\t \t \tf(m)\n", + "\n", + " \t0.000000\t0.500000\t0.250000\t-0.229286\n", + "\n", + " \t0.250000\t0.500000\t0.375000\t0.006941\n", + "\n", + " \t0.250000\t0.375000\t0.312500\t-0.100293\n", + "\n", + " \t0.312500\t0.375000\t0.343750\t-0.044068\n", + "\n", + " \t0.343750\t0.375000\t0.359375\t-0.017925\n", + "\n", + " \t0.359375\t0.375000\t0.367188\t-0.005334\n", + "\n", + " \t0.367188\t0.375000\t0.371094\t0.000842\n", + "\n", + " \t0.367188\t0.371094\t0.369141\t-0.002236\n", + "\n", + " \t0.369141\t0.371094\t0.370117\t-0.000694\n", + "\n", + " \t0.370117\t0.371094\t0.370605\t0.000075\n", + "\n", + " \t0.370117\t0.370605\t0.370361\t-0.000310\n", + "\n", + " \t0.370361\t0.370605\t0.370483\t-0.000118\n", + "\n", + " \t0.370483\t0.370605\t0.370544\t-0.000022\n", + "\n", + "the solution of equation after 14 iteration is 0.371\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.6:pg-28" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.6\n", + "#false position method\n", + "#page 28\n", + "import math\n", + "def f(x):\n", + " return x**3-2*x-5\n", + "a=2.0\n", + "b=3.0 #f(2) is negative and f(3)is positive\n", + "d=0.00001\n", + "print \"succesive iterations \\ta\\t b\\t f(a)\\t f(b)\\t\\ x1\\n\"\n", + "for i in range(1,25):\n", + " x1=b*f(a)/(f(a)-f(b))+a*f(b)/(f(b)-f(a))\n", + " if(f(a)*f(x1))>0:\n", + " b=x1\n", + " else:\n", + " a=x1\n", + " if abs(f(x1))0:\n", + " b=x1\n", + " else:\n", + " a=x1\n", + " if abs(f(x1))0:\n", + " b=x1\n", + " else:\n", + " a=x1\n", + " if abs(f(x1))0:\n", + " b=x1\n", + " else:\n", + " a=x1\n", + " if abs(f(x1))d:\n", + " print \" \\t%f %f\\n\" %(x1,f(x1))\n", + " x2=x1\n", + " x1=f(x1)\n", + " c=c+1\n", + "print \" the root of the eqaution after %i iteration is %0.4g\" %(c,x1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "successive iterations \t\u0001\tf(x1)\n", + "\n", + " \t0.750000 0.755929\n", + "\n", + " \t0.755929 0.754652\n", + "\n", + " \t0.754652 0.754926\n", + "\n", + " \t0.754926 0.754867\n", + "\n", + " the root of the eqaution after 4 iteration is 0.7549\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.11:pg-34" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.11\n", + "#iteration method\n", + "#page34\n", + "import math\n", + "def f(x):\n", + " return cos(x)/2.0+3.0/2.0\n", + "x1=1.5 # as roots lies between 3/2 and pi/2\n", + "x2=0\n", + "d=0.0001 # accuracy opto 10^-4\n", + "c=0 # to count no of iterations \n", + "print \"successive iterations \\t\\x01\\tf(x1)\\n\"\n", + "while abs(x2-x1)>d:\n", + " \n", + " print \" \\t%f %f\\n\" %(x1,f(x1))\n", + " x2=x1\n", + " x1=f(x1)\n", + " c=c+1\n", + "print \" the root of the eqaution after %i iteration is %0.4g\" %(c,x1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "successive iterations \t\u0001\tf(x1)\n", + "\n", + " \t1.500000 1.535369\n", + "\n", + " \t1.535369 1.517710\n", + "\n", + " \t1.517710 1.526531\n", + "\n", + " \t1.526531 1.522126\n", + "\n", + " \t1.522126 1.524326\n", + "\n", + " \t1.524326 1.523227\n", + "\n", + " \t1.523227 1.523776\n", + "\n", + " \t1.523776 1.523502\n", + "\n", + " \t1.523502 1.523639\n", + "\n", + " \t1.523639 1.523570\n", + "\n", + " the root of the eqaution after 10 iteration is 1.524\n" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.12:pg-35" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.12\n", + "#iteration method\n", + "#page 35\n", + "import math\n", + "def f(x):\n", + " return math.exp(-x)\n", + "x1=1.5 # as roots lies between 0 and 1\n", + "x2=0\n", + "d=0.0001 # accuracy opto 10^-4\n", + "c=0 # to count no of iterations \n", + "print \"successive iterations \\t x1 \\t f(x1)\\n\"\n", + "while abs(x2-x1)>d:\n", + " \n", + " print \" \\t%f %f\\n\" %(x1,f(x1))\n", + " x2=x1\n", + " x1=f(x1)\n", + " c=c+1\n", + "print \" the root of the eqaution after %i iteration is %0.4g\" %(c,x1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "successive iterations \t x1 \t f(x1)\n", + "\n", + " \t1.500000 0.223130\n", + "\n", + " \t0.223130 0.800011\n", + "\n", + " \t0.800011 0.449324\n", + "\n", + " \t0.449324 0.638059\n", + "\n", + " \t0.638059 0.528317\n", + "\n", + " \t0.528317 0.589597\n", + "\n", + " \t0.589597 0.554551\n", + "\n", + " \t0.554551 0.574330\n", + "\n", + " \t0.574330 0.563082\n", + "\n", + " \t0.563082 0.569451\n", + "\n", + " \t0.569451 0.565836\n", + "\n", + " \t0.565836 0.567885\n", + "\n", + " \t0.567885 0.566723\n", + "\n", + " \t0.566723 0.567382\n", + "\n", + " \t0.567382 0.567008\n", + "\n", + " \t0.567008 0.567220\n", + "\n", + " \t0.567220 0.567100\n", + "\n", + " \t0.567100 0.567168\n", + "\n", + " the root of the eqaution after 18 iteration is 0.5672\n" + ] + } + ], + "prompt_number": 34 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.13:pg-35" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.13\n", + "#iteration method\n", + "#page 35\n", + "import math\n", + "def f(x):\n", + " return 1+math.sin(x)/10\n", + "x1=1.0 # as roots lies between 1 and pi evident from graph\n", + "x2=0\n", + "d=0.0001 # accuracy opto 10^-4\n", + "c=0 # to count no of iterations \n", + "print \"successive iterations \\t x1 \\t f(x1)\\n\"\n", + "while abs(x2-x1)>d:\n", + " print \" \\t%f %f\\n\" %(x1,f(x1))\n", + " x2=x1\n", + " x1=f(x1)\n", + " c=c+1\n", + "print \" the root of the eqaution after %i iteration is %0.4g\" %(c,x1)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "successive iterations \t x1 \t f(x1)\n", + "\n", + " \t1.000000 1.084147\n", + "\n", + " \t1.084147 1.088390\n", + "\n", + " \t1.088390 1.088588\n", + "\n", + " \t1.088588 1.088597\n", + "\n", + " the root of the eqaution after 4 iteration is 1.089\n" + ] + } + ], + "prompt_number": 36 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.14:pg-36" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.14\n", + "#aitken's process\n", + "#page 36\n", + "import math\n", + "def f(x):\n", + " return 1.5+math.cos(x)/2.0\n", + "x0=1.5\n", + "y=0\n", + "e=0.0001\n", + "c=0\n", + "print \"successive iterations \\t x0 \\t x1 \\t x2 \\t x3 \\t y\\n\"\n", + "for i in range(1,10):\n", + " x1=f(x0)\n", + " x2=f(x1)\n", + " x3=f(x2)\n", + " y=x3-((x3-x2)**2)/(x3-2*x2+x1)\n", + " d=y-x0\n", + " x0=y\n", + " if abs(f(x0))0:\n", + " x2=x3;\n", + " else:\n", + " x1=x3 \n", + " if abs(f(x3))<0.000001: \n", + " break\n", + " c=c+1\n", + "print \"the root of the equation after %i iteration is: %f\" %(c,x3)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "successive iterations \t x1 \t x2 \t x3 \t f(x3)\n", + "\n", + " \t2.000000 \t3.000000 \t2.058824 \t-0.390800\n", + "\n", + " \t2.000000 \t2.058824 \t2.096559 \t0.022428\n", + "\n", + " \t2.096559 \t2.058824 \t2.094511 \t-0.000457\n", + "\n", + " \t2.094511 \t2.058824 \t2.094552 \t0.000009\n", + "\n", + " \t2.094552 \t2.058824 \t2.094551 \t-0.000000\n", + "\n", + "the root of the equation after 4 iteration is: 2.094551\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.26:pg-50" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 2.26\n", + "#secant method\n", + "#page 50\n", + "import math\n", + "from __future__ import division\n", + "def f(x):\n", + " return x*math.exp(x)-1\n", + "x1=0\n", + "x2=1 # initial values\n", + "n=1\n", + "c=0 \n", + "print \"successive iterations \\t x1 \\t x2 \\t x3 \\t f(x3)\\n\"\n", + "while n==1:\n", + " x3=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)) \n", + " print \" \\t%f \\t%f \\t%f \\t%f\\n\" %(x1,x2,x3,f(x3))\n", + " if f(x3)*f(x1)>0:\n", + " x2=x3\n", + " else:\n", + " x1=x3 \n", + " if abs(f(x3))<0.0001:\n", + " break\n", + " c=c+1\n", + "print \"the root of the equation after %i iteration is: %0.4g\" %(c,x3)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "successive iterations \t x1 \t x2 \t x3 \t f(x3)\n", + "\n", + " \t0.000000 \t1.000000 \t0.367879 \t-0.468536\n", + "\n", + " \t0.000000 \t0.367879 \t0.692201 \t0.383091\n", + "\n", + " \t0.692201 \t0.367879 \t0.546310 \t-0.056595\n", + "\n", + " \t0.546310 \t0.367879 \t0.570823 \t0.010200\n", + "\n", + " \t0.570823 \t0.367879 \t0.566500 \t-0.001778\n", + "\n", + " \t0.566500 \t0.367879 \t0.567256 \t0.000312\n", + "\n", + " \t0.567256 \t0.367879 \t0.567124 \t-0.000055\n", + "\n", + "the root of the equation after 6 iteration is: 0.5671\n" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.27:pg-52" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# example 2.27\n", + "#mulller's method\n", + "#page 52\n", + "from __future__ import division\n", + "import math\n", + "def f(x):\n", + " return x**3-x-1\n", + "x0=0\n", + "x1=1\n", + "x2=2 # initial values\n", + "n=1\n", + "c=0\n", + "print \"successive iterations \\t x0 \\t x1 \\t x2 \\t f(x0)\\t f(x1)\\t f(x2)\\n\"\n", + "while n==1: \n", + " c=c+1\n", + " y0=f(x0)\n", + " y1=f(x1)\n", + " y2=f(x2)\n", + " h2=x2-x1\n", + " h1=x1-x0\n", + " d2=f(x2)-f(x1)\n", + " d1=f(x1)-f(x0)\n", + " print \" \\t%f\\t %f\\t %f\\t %f\\t %f\\t %f\\n\" %(x0,x1,x2,f(x0),f(x1),f(x2))\n", + " A=(d2/h2-d1/h1)/(h1+h2)\n", + " B=d2/h2+A*h2\n", + " S=math.sqrt(B**2-4*A*f(x2))\n", + " x3=x2-(2*f(x2))/(B+S)\n", + " E=abs((x3-x2)/x2)*100\n", + " if E<0.003:\n", + " break\n", + " else:\n", + " if c==1:\n", + " x2=x3\n", + " if c==2:\n", + " x1=x2\n", + " x2=x3\n", + " if c==3:\n", + " x0=x1\n", + " x1=x2\n", + " x2=x3\n", + " if c==3:\n", + " c=0\n", + "print \"the required root is : %0.4f\" %(x3)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "successive iterations \t x0 \t x1 \t x2 \t f(x0)\t f(x1)\t f(x2)\n", + "\n", + " \t0.000000\t 1.000000\t 2.000000\t -1.000000\t -1.000000\t 5.000000\n", + "\n", + " \t0.000000\t 1.000000\t 1.263763\t -1.000000\t -1.000000\t -0.245412\n", + "\n", + " \t0.000000\t 1.263763\t 1.331711\t -1.000000\t -0.245412\t 0.030015\n", + "\n", + " \t1.263763\t 1.331711\t 1.324583\t -0.245412\t 0.030015\t -0.000574\n", + "\n", + " \t1.263763\t 1.331711\t 1.324718\t -0.245412\t 0.030015\t -0.000000\n", + "\n", + "the required root is : 1.3247\n" + ] + } + ], + "prompt_number": 35 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.28:pg-55" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#graeffe's method\n", + "#example 2.28\n", + "#page 55\n", + "import math\n", + "from __future__ import division\n", + "def f(x):\n", + " return x**3-6*(x**2)+11*x-6\n", + "print \"the equation is:\\n\"\n", + "A=[1, 14, 49, 36] #coefficients of the above equation\n", + "print \"%0.4g\\n\" %(math.sqrt(A[3]/A[2]))\n", + "print \"%0.4g\\n\" %(math.sqrt(A[2]/A[1]))\n", + "print \"%0.4g\\n\" %(math.sqrt(A[1]/A[0]))\n", + "print \"the equation is:\\n\"\n", + "B=[1, 98, 1393, 1296]\n", + "print \"%0.4g\\n\" %((B[3]/B[2])**(1/4))\n", + "print \"%0.4g\\n\" %((B[2]/B[1])**(1/4))\n", + "print \"%0.4g\\n\" %((B[1]/B[0])**(1/4))\n", + "print \"It is apparent from the outputs that the roots converge at 1 2 3\"\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the equation is:\n", + "\n", + "0.8571\n", + "\n", + "1.871\n", + "\n", + "3.742\n", + "\n", + "the equation is:\n", + "\n", + "0.9821\n", + "\n", + "1.942\n", + "\n", + "3.146\n", + "\n", + "It is apparent from the outputs that the roots converge at 1 2 3\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.29:pg-57" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#quadratic factor by lin's--bairsttow method\n", + "#example 2.29\n", + "#page 57\n", + "from numpy import matrix\n", + "from __future__ import division\n", + "def f(x):\n", + " return x**3-x-1\n", + "a=[-1, -1, 0, 1]\n", + "r1=1\n", + "s1=1\n", + "b4=a[3]\n", + "def f3(r):\n", + " return a[2]-r*a[3]\n", + "def f2(r,s):\n", + " return a[1]-r*a[2]+r**2*a[3]-s*a[3]\n", + "def f1(r,s):\n", + " return a[0]-s*a[2]+s*r*a[3]\n", + "A=matrix([[1,1],[2,-1]])\n", + "C=matrix([[0],[1]])\n", + "X=A.I*C\n", + "X1=[[ 0.33333333],[-0.33333333]]\n", + "dr=X1[0][0]\n", + "ds=X1[1][0]\n", + "r2=r1+dr\n", + "s2=s1+ds\n", + "#second pproximation\n", + "r1=r2\n", + "s1=s2\n", + "b11=f1(r2,s2)\n", + "b22=f2(r2,s2)\n", + "h=0.001\n", + "dr_b1=(f1(r1+h,s1)-f1(r1,s1))/h\n", + "ds_b1=(f1(r1,s1+h)-f1(r1,s1))/h\n", + "dr_b2=(f2(r1+h,s1)-f2(r1,s1))/h\n", + "ds_b2=(f2(r1,s1+h)-f2(r1,s1))/h\n", + "A=matrix([[dr_b1,ds_b1],[dr_b2,ds_b2]])\n", + "C=matrix([[-f1(r1,s1)],[-f2(r1,s2)]])\n", + "X=A.I*C\n", + "r2=r1+X[0][0]\n", + "s2=s1+X[1][0]\n", + "print \"roots correct to 3 decimal places are : %0.3f %0.3f\" %(r2,s2)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "roots correct to 3 decimal places are : 1.325 0.754\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.31:pg-62" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#method of iteration\n", + "#example 2.31\n", + "#page 62\n", + "from __future__ import division\n", + "def f(x,y):\n", + " return (3*y*x**2+7)/10\n", + "def g(x,y):\n", + " return (y**2+4)/5\n", + "h=0.0001\n", + "x0=0.5\n", + "y0=0.5\n", + "f1_dx=(f(x0+h,y0)-f(x0,y0))/h\n", + "f1_dy=(f(x0,y0+h)-f(x0,y0))/h\n", + "g1_dx=(g(x0+h,y0)-g(x0,y0))/h\n", + "g1_dy=(g(x0+h,y0)-g(x0,y0))/h\n", + "if (f1_dx+f1_dy<1) and (g1_dx+g1_dy<1): \n", + " print \"coditions for convergence is satisfied\\n\\n\"\n", + "print \"X \\t Y\\t\\n\\n\"\n", + "for i in range(0,10):\n", + " X=(3*y0*x0**2+7)/10\n", + " Y=(y0**2+4)/5\n", + " print \"%f\\t %f\\t\\n\" %(X,Y)\n", + " x0=X\n", + " y0=Y\n", + "print \"\\n\\n CONVERGENCE AT (1 1) IS OBVIOUS\"\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "coditions for convergence is satisfied\n", + "\n", + "\n", + "X \t Y\t\n", + "\n", + "\n", + "0.737500\t 0.850000\t\n", + "\n", + "0.838696\t 0.944500\t\n", + "\n", + "0.899312\t 0.978416\t\n", + "\n", + "0.937391\t 0.991460\t\n", + "\n", + "0.961360\t 0.996598\t\n", + "\n", + "0.976320\t 0.998642\t\n", + "\n", + "0.985572\t 0.999457\t\n", + "\n", + "0.991247\t 0.999783\t\n", + "\n", + "0.994707\t 0.999913\t\n", + "\n", + "0.996807\t 0.999965\t\n", + "\n", + "\n", + "\n", + " CONVERGENCE AT (1 1) IS OBVIOUS\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.32:pg-65" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#newton raphson metho\n", + "#example 2.32\n", + "#page 65\n", + "import numpy\n", + "def f(x,y):\n", + " return 3*y*x**2-10*x+7\n", + "def g(y):\n", + " return y**2-5*y+4\n", + "hh=0.0001\n", + "x0=0.5\n", + "y0=0.5 #initial values\n", + "f0=f(x0,y0)\n", + "g0=g(y0)\n", + "df_dx=(f(x0+hh,y0)-f(x0,y0))/hh\n", + "df_dy=(f(x0,y0+hh)-f(x0,y0))/hh\n", + "dg_dx=(g(y0)-g(y0))/hh\n", + "dg_dy=(g(y0+hh)-g(y0))/hh\n", + "d=[[df_dx,df_dy],[dg_dx,dg_dy]]\n", + "D1=numpy.linalg.det(d)\n", + "dd=[[-f0,df_dy],[-g0,dg_dy]]\n", + "h=numpy.linalg.det(dd)/D1\n", + "ddd=[[df_dx,-f0],[dg_dx,-g0]]\n", + "k=numpy.linalg.det(ddd)/D1;\n", + "x1=x0+h\n", + "y1=y0+k\n", + "f0=f(x1,y1)\n", + "g0=g(y1)\n", + "df_dx=(f(x1+hh,y1)-f(x1,y1))/hh\n", + "df_dy=(f(x1,y1+hh)-f(x1,y1))/hh\n", + "dg_dx=(g(y1)-g(y1))/hh\n", + "dg_dy=(g(y1+hh)-g(y1))/hh\n", + "dddd=[[df_dx,df_dy],[dg_dx,dg_dy]]\n", + "D2=numpy.linalg.det(dddd)\n", + "ddddd=[[-f0,df_dy],[-g0,dg_dy]]\n", + "h=numpy.linalg.det(ddddd)/D2\n", + "d6=[[df_dx,-f0],[dg_dx,-g0]]\n", + "k=numpy.linalg.det(d6)/D2\n", + "x2=x1+h\n", + "y2=y1+k\n", + "print \" the roots of the equation are x2=%f and y2=%f\" %(x2,y2)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " the roots of the equation are x2=0.970803 and y2=0.998752\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.33:pg-66" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#newton raphson method\n", + "#example 2.33\n", + "#page 66\n", + "import math\n", + "import numpy\n", + "def f(x,y):\n", + " return x**2+y**2-1\n", + "def g(x,y):\n", + " return y-x**2\n", + "hh=0.0001\n", + "x0=0.7071\n", + "y0=0.7071 #initial values\n", + "f0=f(x0,y0)\n", + "g0=g(x0,y0)\n", + "df_dx=(f(x0+hh,y0)-f(x0,y0))/hh\n", + "df_dy=(f(x0,y0+hh)-f(x0,y0))/hh\n", + "dg_dx=(g(x0+hh,y0)-g(x0,y0))/hh\n", + "dg_dy=(g(x0,y0+hh)-g(x0,y0))/hh\n", + "D1=numpy.linalg.det([[df_dx,df_dy],[dg_dx,dg_dy]])\n", + "h=numpy.linalg.det([[-f0,df_dy],[-g0,dg_dy]])/D1\n", + "k=numpy.linalg.det([[df_dx,-f0],[dg_dx,-g0]])/D1\n", + "x1=x0+h\n", + "y1=y0+k\n", + "f0=f(x1,y1)\n", + "g0=g(x1,y1)\n", + "df_dx=(f(x1+hh,y1)-f(x1,y1))/hh\n", + "df_dy=(f(x1,y1+hh)-f(x1,y1))/hh\n", + "dg_dx=(g(x1+hh,y1)-g(x1,y1))/hh\n", + "dg_dy=(g(x1,y1+hh)-g(x1,y1))/hh\n", + "D2=numpy.linalg.det([[df_dx,df_dy],[dg_dx,dg_dy]])\n", + "h=numpy.linalg.det([[-f0,df_dy],[-g0,dg_dy]])/D2\n", + "k=numpy.linalg.det([[df_dx,-f0],[dg_dx,-g0]])/D2\n", + "x2=x1+h\n", + "y2=y1+k\n", + "print \"the roots of the equation are x2=%f and y2=%f \" %(x2,y2)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the roots of the equation are x2=0.786184 and y2=0.618039 \n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex2.34:pg-67" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#newton raphson method\n", + "#example 2.34\n", + "#page 67\n", + "import math\n", + "import numpy\n", + "def f(x,y):\n", + " return math.sin(x)-y+0.9793\n", + "def g(x,y):\n", + " return math.cos(y)-x+0.6703\n", + "hh=0.0001\n", + "x0=0.5\n", + "y0=1.5 #initial values\n", + "f0=f(x0,y0)\n", + "g0=g(x0,y0)\n", + "df_dx=(f(x0+hh,y0)-f(x0,y0))/hh\n", + "df_dy=(f(x0,y0+hh)-f(x0,y0))/hh\n", + "dg_dx=(g(x0+hh,y0)-g(x0,y0))/hh\n", + "dg_dy=(g(x0,y0+hh)-g(x0,y0))/hh\n", + "d1=[[df_dx,df_dy],[dg_dx,dg_dy]]\n", + "D1=numpy.linalg.det(d1)\n", + "d2=[[-f0,df_dy],[-g0,dg_dy]]\n", + "h=numpy.linalg.det(d2)/D1\n", + "d3=[[df_dx,-f0],[dg_dx,-g0]]\n", + "k=numpy.linalg.det(d3)/D1\n", + "x1=x0+h\n", + "y1=y0+k\n", + "f0=f(x1,y1)\n", + "g0=g(x1,y1)\n", + "df_dx=(f(x1+hh,y1)-f(x1,y1))/hh\n", + "df_dy=(f(x1,y1+hh)-f(x1,y1))/hh\n", + "dg_dx=(g(x1+hh,y1)-g(x1,y1))/hh\n", + "dg_dy=(g(x1,y1+hh)-g(x1,y1))/hh\n", + "d4=[[df_dx,df_dy],[dg_dx,dg_dy]]\n", + "D2=numpy.linalg.det(d4)\n", + "h=numpy.linalg.det([[-f0,df_dy],[-g0,dg_dy]])/D2\n", + "k=numpy.linalg.det([[df_dx,-f0],[dg_dx,-g0]])/D2\n", + "x2=x1+h\n", + "y2=y1+k\n", + "print \"the roots of the equation are x2=%0.4f and y2=%0.4f\" %(x2,y2)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the roots of the equation are x2=0.6537 and y2=1.5874\n" + ] + } + ], + "prompt_number": 8 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter3_9.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter3_9.ipynb new file mode 100644 index 00000000..dad72c74 --- /dev/null +++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter3_9.ipynb @@ -0,0 +1,1140 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:f3a87b3d2c7e65a82c2b6c2ef43d896bb053726e9f90aaa76d80faf23cdf3a06" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter03:Interpolation" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.4:pg-86" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.4\n", + "#interpolation\n", + "#page 86\n", + "import math\n", + "from __future__ import division\n", + "x=[1, 3, 5, 7]\n", + "y=[24, 120, 336, 720]\n", + "d1=[0,0,0]\n", + "d2=[0,0,0]\n", + "d3=[0,0,0]\n", + "h=2 #interval between values of x\n", + "c=0\n", + "for i in range(0,3):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,2):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,1):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1\n", + "d=[0,d1[0],d2[0],d3[0]]\n", + "x0=8 #value at 8\n", + "pp=1\n", + "y_x=y[0]\n", + "p=(x0-1)/2\n", + "for i in range(1,4):\n", + " pp=1\n", + " for j in range(0,i):\n", + " pp=pp*(p-(j)) \n", + " y_x=y_x+(pp*d[i])/math.factorial(i)\n", + "print \"value of function at %f is :%f\" %(x0,y_x)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "value of function at 8.000000 is :990.000000\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.6:pg-87" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.6\n", + "#interpolation\n", + "#page 87\n", + "import math\n", + "x=[15, 20, 25, 30, 35, 40]\n", + "y=[0.2588190, 0.3420201, 0.4226183, 0.5, 0.5735764, 0.6427876]\n", + "d1=[0,0,0,0,0]\n", + "d2=[0,0,0,0]\n", + "d3=[0,0,0]\n", + "d4=[0,0]\n", + "d5=[0]\n", + "h=5 #interval between values of x\n", + "c=0\n", + "for i in range(0,5):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,4):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,3):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,2):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,1):\n", + " d5[c]=d4[i+1]-d4[i]\n", + " c=c+1\n", + "c=0\n", + "d=[0,d1[0], d2[0], d3[0], d4[0], d5[0]]\n", + "x0=38 #value at 38 degree\n", + "pp=1\n", + "y_x=y[0]\n", + "p=(x0-x[0])/h\n", + "for i in range(1,6):\n", + " pp=1\n", + " for j in range(0,i):\n", + " pp=pp*(p-(j)) \n", + " y_x=y_x+((pp*d[i])/math.factorial(i));\n", + "print \"value of function at %i is :%f\" %(x0,y_x)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "value of function at 38 is :0.615661\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.7:pg-89" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.7\n", + "#interpolation\n", + "#page 89\n", + "x=[0, 1, 2, 4]\n", + "y=[1, 3, 9, 81]\n", + "#equation is y(5)-4*y(4)+6*y(2)-4*y(2)+y(1)\n", + "y3=(y[3]+6*y[2]-4*y[1]+y[0])/4\n", + "print \"the value of missing term of table is :%d\" %(y3)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value of missing term of table is :31\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.8:pg-89" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.8\n", + "#interpolation\n", + "#page 89\n", + "import math\n", + "x=[0.10, 0.15, 0.20, 0.25, 0.30]\n", + "y=[0.1003, 0.1511, 0.2027, 0.2553, 0.3093]\n", + "d1=[0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0,0]\n", + "d4=[0,0,0,0,0]\n", + "h=0.05 #interval between values of x\n", + "c=0\n", + "for i in range(0,4):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,3):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,2):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,4):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1\n", + "d=[0,d1[0], d2[0], d3[0], d4[0]]\n", + "x0=0.12 #value at 0.12;\n", + "pp=1\n", + "y_x=y[0]\n", + "p=(x0-x[0])/h\n", + "for i in range(1,5):\n", + " pp=1;\n", + " for j in range(0,i):\n", + " pp=pp*(p-(j)) \n", + " y_x=y_x+(pp*d[i])/math.factorial(i)\n", + "print \"value of function at %f is :%0.4g\\n \\n\" %(x0,y_x)\n", + "x0=0.26 #value at 0.26;\n", + "pp=1\n", + "y_x=y[0]\n", + "p=(x0-x[0])/h\n", + "for i in range(1,5):\n", + " pp=1\n", + " for j in range(0,i):\n", + " pp=pp*(p-(j)) \n", + " y_x=y_x+(pp*d[i])/math.factorial(i);\n", + "print \"value of function at %f is :%0.4g\\n \\n\" %(x0,y_x)\n", + "x0=0.40 #value at 0.40;\n", + "pp=1\n", + "y_x=y[0]\n", + "p=(x0-x[0])/h\n", + "for i in range(1,5):\n", + " pp=1\n", + " for j in range(0,i):\n", + " pp=pp*(p-(j)) \n", + " y_x=y_x+(pp*d[i])/math.factorial(i)\n", + "print \"value of function at %f is :%0.4g\\n \\n\" %(x0,y_x)\n", + "x0=0.50 #value at 0.50;\n", + "pp=1\n", + "y_x=y[0]\n", + "p=(x0-x[0])/h\n", + "for i in range(1,5):\n", + " pp=1\n", + " for j in range(0,i):\n", + " pp=pp*(p-(j)) \n", + " y_x=y_x+(pp*d[i])/math.factorial(i)\n", + "print \"value of function at %f is :%0.5g\\n \\n\" %(x0,y_x)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "value of function at 0.120000 is :0.1205\n", + " \n", + "\n", + "value of function at 0.260000 is :0.266\n", + " \n", + "\n", + "value of function at 0.400000 is :0.4241\n", + " \n", + "\n", + "value of function at 0.500000 is :0.5543\n", + " \n", + "\n" + ] + } + ], + "prompt_number": 33 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.9:pg-93" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.9\n", + "#Gauss' forward formula\n", + "#page 93\n", + "import math\n", + "x=[1.0, 1.05, 1.10, 1.15, 1.20, 1.25, 1.30];\n", + "y=[2.7183, 2.8577, 3.0042, 3.1582, 3.3201, 3.4903, 3.66693]\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "d5=[0,0]\n", + "d6=[0]\n", + "h=0.05 #interval between values of x\n", + "c=0\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,2):\n", + " d5[c]=d4[i+1]-d4[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,1):\n", + " d6[c]=d5[i+1]-d5[i]\n", + " c=c+1\n", + "d=[0,d1[3], d2[2], d3[2], d4[1], d5[0], d6[0]]\n", + "x0=1.17 #value at 1.17;\n", + "pp=1\n", + "y_x=y[3]\n", + "p=(x0-x[3])/h\n", + "for i in range(1,6):\n", + " pp=1;\n", + " for j in range(0,i):\n", + " pp=pp*(p-(j)) \n", + " y_x=y_x+(pp*d[i])/math.factorial(i)\n", + "print \"value of function at %f is :%0.4g\\n \\n\" %(x0,y_x)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "value of function at 1.170000 is :3.222\n", + " \n", + "\n" + ] + } + ], + "prompt_number": 35 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.10:pg-97" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#practical interpolation\n", + "#example 3.10\n", + "#page 97\n", + "import math\n", + "x=[0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67]\n", + "y=[1.840431, 1.858928,1.877610, 1.896481, 1.915541, 1.934792, 1.954237]\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "h=0.01 #interval between values of x\n", + "c=0\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i];\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i];\n", + " c=c+1\n", + "d=[d1[0], d2[0], d3[0], d4[0]]\n", + "x0=0.644\n", + "p=(x0-x[3])/h;\n", + "y_x=y[3]\n", + "y_x=y_x+p*(d1[2]+d1[3])/2+p**2*(d2[1])/2 #stirling formula\n", + "print \"the value at %f by stirling formula is : %f\\n\\n\" %(x0,y_x)\n", + "y_x=y[3]\n", + "y_x=y_x+p*d1[3]+p*(p-1)*(d2[2]+d2[3])/2\n", + "print \" the value at %f by bessels formula is : %f\\n\\n\" %(x0,y_x)\n", + "y_x=y[3]\n", + "q=1-p\n", + "y_x=q*y[3]+q*(q**2-1)*d2[2]/2+p*y[4]+p*(q**2-1)*d2[4]/2\n", + "print \"the value at %f by everrets formula is : %f\\n\\n\" %(x0,y_x)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value at 0.644000 by stirling formula is : 1.904082\n", + "\n", + "\n", + " the value at 0.644000 by bessels formula is : 1.904059\n", + "\n", + "\n", + "the value at 0.644000 by everrets formula is : 1.904044\n", + "\n", + "\n" + ] + } + ], + "prompt_number": 37 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.11:pg-99" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#practical interpolation\n", + "#example 3.11\n", + "#page 99\n", + "x=[0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67]\n", + "y=[1.840431, 1.858928, 1.877610, 1.896481, 1.915541, 1.934792, 1.954237]\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "h=0.01 #interval between values of x\n", + "c=0\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1\n", + "d=[d1[0], d2[0], d3[0], d4[0]]\n", + "x0=0.638\n", + "p=(x0-x[3])/h\n", + "y_x=y[3]\n", + "y_x=y_x+p*(d1[2]+d1[3])/2+p**2*(d2[1])/2 #stirling formula\n", + "print \"value at %f by stirling formula is : %f\\n\\n\" %(x0,y_x)\n", + "y_x=y[2]\n", + "p=(x0-x[2])/h\n", + "y_x=y_x+p*d1[2]+p*(p-1)*(d2[1])/2\n", + "print \"the value at %f by bessels formula is : %f\\n\\n\" %(x0,y_x)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "value at 0.638000 by stirling formula is : 1.892692\n", + "\n", + "\n", + "the value at 0.638000 by bessels formula is : 1.892692\n", + "\n", + "\n" + ] + } + ], + "prompt_number": 39 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.12:pg-99" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#practical interpolation\n", + "#example 3.12\n", + "#page 99\n", + "x=[1.72, 1.73, 1.74, 1.75, 1.76, 1.77, 1.78]\n", + "y=[0.1790661479, 0.1772844100, 0.1755204006, 0.1737739435, 0.1720448638, 0.1703329888, 0.1686381473]\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "h=0.01 #interval between values of x\n", + "c=0\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1\n", + "x0=1.7475\n", + "y_x=y[2]\n", + "p=(x0-x[2])/h\n", + "y_x=y_x+p*d1[2]+p*(p-1)*((d2[1]+d2[2])/2)/2\n", + "print \"the value at %f by bessels formula is : %0.10f\\n\\n\" %(x0,y_x)\n", + "y_x=y[3]\n", + "q=1-p\n", + "y_x=q*y[2]+q*(q**2-1)*d2[1]/6+p*y[3]+p*(p**2-1)*d2[1]/6\n", + "print \"the value at %f by everrets formula is : %0.10f\\n\\n\" %(x0,y_x)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value at 1.747500 by bessels formula is : 0.1742089204\n", + "\n", + "\n", + "the value at 1.747500 by everrets formula is : 0.1742089122\n", + "\n", + "\n" + ] + } + ], + "prompt_number": 41 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.13:pg-104" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.13\n", + "#lagrange's interpolation formula\n", + "#page 104\n", + "x=[300, 304, 305, 307]\n", + "y=[2.4771, 2.4829, 2.4843, 2.4871]\n", + "x0=301\n", + "log_301=(-3*-4*-6*2.4771)/(-4*-5*-7)+(-4*-6*2.4829)/(4*-1*-3)+(-3*-6*2.4843)/(5*-2)+(-3*-4*2.4871)/(7*3*2)\n", + "print \"valie of log x at 301 is =%f\" %(log_301)\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "valie of log x at 301 is =2.478597\n" + ] + } + ], + "prompt_number": 43 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.14:pg-105" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.14\n", + "#lagrange's interpolation formula\n", + "#page 105\n", + "y=[4, 12, 19]\n", + "x=[1, 3, 4];\n", + "y_x=7\n", + "Y_X=(-5*-12)/(-8*-15)+(3*3*-12)/(8*-7)+(3*-5*4)/(15*7)\n", + "print \"values is %f\" %(Y_X)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "values is 1.857143\n" + ] + } + ], + "prompt_number": 44 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.15:pg-105" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.15\n", + "#lagrange's interpolation formula\n", + "#page 105\n", + "import math\n", + "x=[2, 2.5, 3.0]\n", + "y=[0.69315, 0.91629, 1.09861]\n", + "def l0(x):\n", + " return (x-2.5)*(x-3.0)/(-0.5)*(-1.0)\n", + "def l1(x):\n", + " return ((x-2.0)*(x-3.0))/((0.5)*(-0.5))\n", + "def l2(x):\n", + " return ((x-2.0)*(x-2.5))/((1.0)*(0.5))\n", + "f_x=l0(2.7)*y[0]+l1(2.7)*y[1]+l2(2.7)*y[2];\n", + "print \"the calculated value is %f:\" %(f_x)\n", + "print \"\\n\\n the error occured in the value is %0.9f\" %(abs(f_x-log(2.7)))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the calculated value is 0.994116:\n", + "\n", + "\n", + " the error occured in the value is 0.000864627\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.16:pg-106" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.16\n", + "#lagrange's interpolation formula\n", + "#page 106\n", + "import math\n", + "x=[0, math.pi/4,math.pi/2]\n", + "y=[0, 0.70711, 1.0];\n", + "x0=math.pi/6\n", + "sin_x0=0\n", + "for i in range(0,3):\n", + " p=y[i]\n", + " for j in range(0,3):\n", + " if j!=i:\n", + " p=p*((x0-x[j])/( x[i]-x[j]))\n", + " sin_x0=sin_x0+p\n", + "print \"sin_x0=%f\" %(sin_x0)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sin_x0=0.517431\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.18:pg-107" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#error in lagrange's interpolation formula\n", + "#example 3.18\n", + "#page 107\n", + "import math\n", + "x=[2, 2.5, 3.0]\n", + "y=[0.69315, 0.91629, 1.09861]\n", + "def l0(x):\n", + " return (x-2.5)*(x-3.0)/(-0.5)*(-1.0)\n", + "def l1(x):\n", + " return ((x-2.0)*(x-3.0))/((0.5)*(-0.5))\n", + "def l2(x):\n", + " return ((x-2.0)*(x-2.5))/((1.0)*(0.5))\n", + "f_x=l0(2.7)*y[0]+l1(2.7)*y[1]+l2(2.7)*y[2]\n", + "print \"the calculated value is %f:\" %(f_x)\n", + "err=math.fabs(f_x-math.log10(2.7))\n", + "def R_n(x):\n", + " return (((x-2)*(x-2.5)*(x-3))/6)\n", + "est_err=abs(R_n(2.7)*(2/8))\n", + "if est_errerr:\n", + " print \"\\n\\n the error agrees with the actual error\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "\n", + " the error agrees with the actual error\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.21:pg-110" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#hermite's interpolation formula\n", + "#exammple 3.21\n", + "#page 110\n", + "from __future__ import division\n", + "import math\n", + "x=[2.0, 2.5, 3.0]\n", + "y=[0.69315, 0.91629, 1.09861]\n", + "y1=[0,0,0]\n", + "def f(x):\n", + " return math.log(x)\n", + "h=0.0001\n", + "for i in range(0,3):\n", + " y1[i]=(f(x[i]+h)-f(x[i]))/h\n", + "def l0(x):\n", + " return (x-2.5)*(x-3.0)/(-0.5)*(-1.0)\n", + "def l1(x):\n", + " return ((x-2.0)*(x-3.0))/((0.5)*(-0.5))\n", + "def l2(x):\n", + " return ((x-2.0)*(x-2.5))/((1.0)*(0.5))\n", + "dl0=(l0(x[0]+h)-l0(x[0]))/h\n", + "dl1=(l1(x[1]+h)-l1(x[1]))/h\n", + "dl2=(l2(x[2]+h)-l2(x[2]))/h\n", + "x0=2.7\n", + "u0=(1-2*(x0-x[0])*dl0)*(l0(x0))**2\n", + "u1=(1-2*(x0-x[1])*dl1)*(l1(x0))**2\n", + "u2=(1-2*(x0-x[2])*dl2)*(l2(x0))**2\n", + "v0=(x0-x[0])*l0(x0)**2\n", + "v1=(x0-x[1])*l1(x0)**2\n", + "v2=(x0-x[2])*l2(x0)**2\n", + "H=u0*y[0]+u1*y[1]+u2*y[2]+v0*y1[0]+v1*y1[1]+v2*y1[2]\n", + "print \"the approximate value of ln(%0.2f) is %f:\" %(x0,H)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the approximate value of ln(2.70) is 0.993362:\n" + ] + } + ], + "prompt_number": 35 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.22:pg-114" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#newton's general interpolation formula\n", + "#example 3.22\n", + "#page 114\n", + "x=[300, 304, 305, 307]\n", + "y=[2.4771, 2.4829, 2.4843, 2.4871]\n", + "d1=[0,0,0]\n", + "d2=[0,0]\n", + "for i in range(0,3):\n", + " d1[i]=(y[i+1]-y[i])/(x[i+1]-x[i])\n", + "for i in range(0,2):\n", + " d2[i]=(d1[i+1]-d1[i])/(x[i+2]-x[i])\n", + "x0=301\n", + "log301=y[0]+(x0-x[0])*d1[0]+(x0-x[1])*d2[0]\n", + "print \"valure of log(%d) is :%0.4f\" %(x0,log301)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "valure of log(301) is :2.4786\n" + ] + } + ], + "prompt_number": 37 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.23:pg-114" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 3.23\n", + "#newton's divided formula\n", + "#page 114\n", + "from sympy import simplify\n", + "x=[-1, 0, 3, 6, 7]\n", + "y=[3, -6, 39, 822, 1611]\n", + "d1=[0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0,0]\n", + "d4=[0,0,0,0,0]\n", + "X=0\n", + "for i in range(0,4):\n", + " d1[i]=(y[i+1]-y[i])/(x[i+1]-x[i])\n", + "for i in range(0,3):\n", + " d2[i]=(d1[i+1]-d1[i])/(x[i+2]-x[i]) \n", + "for i in range(0,2):\n", + " d3[i]=(d2[i+1]-d2[i])/(x[i+3]-x[i]) \n", + "for i in range(0,1):\n", + " d4[i]=(d3[i+1]-d3[i])/(x[i+4]-x[i]) \n", + "X=Symbol('X')\n", + "f_x=simplify(y[0]+(X-x[0])*d1[0]+(X-x[1])*(X-x[0])*d2[0]+(X-x[0])*(X-x[1])*(X-x[2])*d3[0]+(X-x[0])*(X-x[1])*(X-x[2])*(X-x[3])*d4[0])\n", + "print f_x" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1.0*X**4 - 3.0*X**3 + 5.0*X**2 - 6.0\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.24:pg-116" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#interpolation by iteration\n", + "#example 3.24\n", + "#page 116\n", + "import numpy\n", + "x=[300, 304, 305, 307]\n", + "y=[2.4771, 2.4829, 2.4843, 2.4871]\n", + "x0=301\n", + "d1=[0,0,0]\n", + "d2=[0,0]\n", + "d3=[0]\n", + "for i in range(0,3):\n", + " a=y[i]\n", + " b=x[i]-x0\n", + " c=y[i+1]\n", + " e=x[i+1]-x0\n", + " d=matrix([[a,b],[c,e]])\n", + " d11=numpy.linalg.det(d)\n", + " d1[i]=d11/(x[i+1]-x[i])\n", + "for i in range(0,2):\n", + " a=d1[i]\n", + " b=x[i+1]-x0\n", + " c=d1[i+1]\n", + " e=x[i+2]-x0\n", + " d=matrix([[a,b],[c,e]])\n", + " d22=numpy.linalg.det(d)\n", + " f=(x[i+2]-x[i+1])\n", + " d2[i]=d22/f\n", + "for i in range(0,1):\n", + " a=d2[i]\n", + " b=x[i+2]-x0\n", + " c=d2[i+1]\n", + " e=x[i+3]-x0\n", + " d=matrix([[a,b],[c,e]])\n", + " d33=numpy.linalg.det(d)\n", + " d3[i]=d33/(x[i+3]-x[i+2])\n", + "print \"the value of log(%d) is : %f\" %(x0,d3[0])\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value of log(301) is : 2.476900\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.25:pg-118" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#inverse intrpolation\n", + "#example 3.25\n", + "#page 118\n", + "from __future__ import division\n", + "x=[2, 3, 4, 5]\n", + "y=[8, 27, 64, 125]\n", + "d1=[0,0,0]\n", + "d2=[0,0]\n", + "d3=[0]\n", + "for i in range(0,3):\n", + " d1[i]=y[i+1]-y[i]\n", + "for i in range(0,2):\n", + " d2[i]=d1[i+1]-d1[i]\n", + "for i in range(0,1):\n", + " d3[i]=d2[i+1]-d2[i]\n", + "yu=10 #square rooot of 10\n", + "y0=y[0]\n", + "d=[d1[0], d2[0] ,d3[0]]\n", + "u1=(yu-y0)/d1[0]\n", + "u2=((yu-y0-u1*(u1-1)*d2[0]/2)/d1[0])\n", + "u3=(yu-y0-u2*(u2-1)*d2[0]/2-u2*(u2-1)*(u2-2)*d3[0]/6)/d1[0]\n", + "u4=(yu-y0-u3*(u3-1)*d2[0]/2-u3*(u3-1)*(u3-2)*d3[0]/6)/d1[0]\n", + "u5=(yu-y0-u4*(u4-1)*d2[0]/2-u4*(u4-1)*(u4-2)*d3[0]/6)/d1[0]\n", + "print \"%f \\n %f \\n %f \\n %f \\n %f \\n \" %(u1,u2,u3,u4,u5)\n", + "print \"the approximate square root of %d is: %0.3f\" %(yu,x[0]+u5)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.105263 \n", + " 0.149876 \n", + " 0.153210 \n", + " 0.154107 \n", + " 0.154347 \n", + " \n", + "the approximate square root of 10 is: 2.154\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.26:pg-119" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#double interpolation \n", + "#example 3.26\n", + "#page 119\n", + "y=[0, 1, 2, 3, 4]\n", + "z=[0,0,0,0,0]\n", + "x=[[0, 1, 4, 9, 16],[2, 3, 6, 11, 18],[6, 7, 10, 15, 22],[12, 13, 16, 21, 28],[18, 19, 22, 27, 34]]\n", + "print \"X=\"\n", + "print x\n", + "#for x=2.5\n", + "for i in range(0,5):\n", + " z[i]=(x[i][2]+x[i][3])/2\n", + "#y=1.5\n", + "Z=(z[1]+z[2])/2\n", + "print \"the interpolated value when x=2.5 and y=1.5 is : %f\" %(Z)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "X=\n", + "[[0, 1, 4, 9, 16], [2, 3, 6, 11, 18], [6, 7, 10, 15, 22], [12, 13, 16, 21, 28], [18, 19, 22, 27, 34]]\n", + "the interpolated value when x=2.5 and y=1.5 is : 10.500000\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter4_11.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter4_11.ipynb new file mode 100644 index 00000000..3cc767e6 --- /dev/null +++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter4_11.ipynb @@ -0,0 +1,880 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:4bd129a1095a40e7b77ec9dd303e159b079be83a90556977b8afeff8b76637f9" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter04:Least Squares and Fourier Transforms" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.1:pg-128" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 4.1\n", + "#least square curve fitting procedure\n", + "#page 128\n", + "import math\n", + "from __future__ import division\n", + "x=[0,1, 2, 3, 4, 5]\n", + "x_2=[0,0,0,0,0,0]\n", + "x_y=[0,0,0,0,0,0]\n", + "y=[0,0.6, 2.4, 3.5, 4.8, 5.7]\n", + "for i in range(1,5):\n", + " x_2[i]=x[i]**2\n", + " x_y[i]=x[i]*y[i]\n", + "S_x=0\n", + "S_y=0\n", + "S_x2=0 \n", + "S_xy=0\n", + "S1=0\n", + "S2=0\n", + "for i in range(1,5):\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+y[i]\n", + " S_x2=S_x2+x_2[i]\n", + " S_xy=S_xy+x_y[i]\n", + "a1=(5*S_xy-S_x*S_y)/(5*S_x2-S_x**2)\n", + "a0=S_y/5-a1*S_x/5\n", + "print \"x\\t y\\t x^2\\t x*y\\t (y-avg(S_y)) \\t (y-a0-a1x)^2\\n\\n\"\n", + "for i in range (1,6):\n", + " print \"%d\\t %0.2f\\t %d\\t %0.2f\\t %0.2f\\t %.4f\\t\\n\" %(x[i],y[i],x_2[i],x_y[i],(y[i]-S_y/5)**2,(y[i]-a0-a1*x[i])**2)\n", + " S1=S1+(y[i]-S_y/5)**2 \n", + " S2=S2+(y[i]-a0-a1*x[i])**2\n", + "print \"---------------------------------------------------------------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%d\\t %0.2f\\t %d\\t %0.2f\\t %0.2f\\t %0.4f\\t\\n\\n\" %(S_x,S_y,S_x2,S_xy,S1,S2)\n", + "cc=math.sqrt((S1-S2)/S1) #correlation coefficient\n", + "print \"the correlation coefficient is:%0.4f\" %(cc)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x\t y\t x^2\t x*y\t (y-avg(S_y)) \t (y-a0-a1x)^2\n", + "\n", + "\n", + "1\t 0.60\t 1\t 0.60\t 2.76\t 0.1681\t\n", + "\n", + "2\t 2.40\t 4\t 4.80\t 0.02\t 0.0196\t\n", + "\n", + "3\t 3.50\t 9\t 10.50\t 1.54\t 0.0001\t\n", + "\n", + "4\t 4.80\t 16\t 19.20\t 6.45\t 0.0016\t\n", + "\n", + "5\t 5.70\t 0\t 0.00\t 11.83\t 0.0961\t\n", + "\n", + "---------------------------------------------------------------------------------------------------------------------------------------------\n", + "\n", + "\n", + "10\t 11.30\t 30\t 35.10\t 22.60\t 0.2855\t\n", + "\n", + "\n", + "the correlation coefficient is:0.9937\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.2:pg-129" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 4.2\n", + "#least square curve fitting procedure\n", + "#page 129\n", + "from numpy import matrix\n", + "x=[0, 2, 5, 7]\n", + "y=[-1, 5, 12, 20]\n", + "x_2=[0,0,0,0]\n", + "xy=[0,0,0,0,]\n", + "for i in range (0,4):\n", + " x_2[i]=x[i]**2\n", + " xy[i]=x[i]*y[i]\n", + "print \"x\\t y\\t x^2\\t xy\\t \\n\\n\"\n", + "S_x=0 \n", + "S_y=0\n", + "S_x2=0\n", + "S_xy=0\n", + "for i in range(0,4):\n", + " print \"%d\\t %d\\t %d\\t %d\\t\\n\" %(x[i],y[i],x_2[i],xy[i])\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+y[i]\n", + " S_x2=S_x2+x_2[i]\n", + " S_xy=S_xy+xy[i]\n", + "print \"%d\\t %d\\t %d\\t %d\\t\\n\" %(S_x,S_y,S_x2,S_xy)\n", + "A=matrix([[4,S_x],[S_x,S_x2]])\n", + "B=matrix([[S_y],[S_xy]])\n", + "C=A.I*B\n", + "print \"Best straight line fit Y=%.4f+x(%.4f)\" %(C[0][0],C[1][0])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x\t y\t x^2\t xy\t \n", + "\n", + "\n", + "0\t -1\t 0\t 0\t\n", + "\n", + "2\t 5\t 4\t 10\t\n", + "\n", + "5\t 12\t 25\t 60\t\n", + "\n", + "7\t 20\t 49\t 140\t\n", + "\n", + "14\t 36\t 78\t 210\t\n", + "\n", + "Best straight line fit Y=-1.1379+x(2.8966)\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.3:pg-130" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 4.3\n", + "#least square curve fitting procedure\n", + "#page 130\n", + "from numpy import matrix\n", + "x=[0, 1, 2, 4, 6]\n", + "y=[0, 1, 3, 2, 8]\n", + "z=[2, 4, 3, 16, 8]\n", + "x2=[0,0,0,0,0]\n", + "y2=[0,0,0,0,0]\n", + "z2=[0,0,0,0,0]\n", + "xy=[0,0,0,0,0]\n", + "yz=[0,0,0,0,0]\n", + "zx=[0,0,0,0,0]\n", + "for i in range(0,5):\n", + " x2[i]=x[i]**2\n", + " y2[i]=y[i]**2\n", + " z2[i]=z[i]**2\n", + " xy[i]=x[i]*y[i]\n", + " zx[i]=z[i]*x[i]\n", + " yz[i]=y[i]*z[i]\n", + "S_x=0\n", + "S_y=0\n", + "S_z=0\n", + "S_x2=0\n", + "S_y2=0\n", + "S_z2=0\n", + "S_xy=0\n", + "S_zx=0\n", + "S_yz=0\n", + "for i in range(0,5):\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+y[i]\n", + " S_z=S_z+z[i]\n", + " S_x2=S_x2+x2[i]\n", + " S_y2=S_y2+y2[i]\n", + " S_z2=S_z2+z2[i]\n", + " S_xy=S_xy+xy[i]\n", + " S_zx=S_zx+zx[i]\n", + " S_yz=S_yz+yz[i]\n", + "print \"x\\t y\\t z\\t x^2\\t xy\\t zx\\t y^2\\t yz\\n\\n\"\n", + "for i in range(0,5):\n", + " print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\n\" %(x[i],y[i],z[i],x2[i],xy[i],zx[i],y2[i],yz[i])\n", + "print \"-------------------------------- --------------------------------------------------------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\n\\n\" %(S_x,S_y,S_z,S_x2,S_xy,S_zx,S_y2,S_yz)\n", + "A=matrix([[5,13,14],[13,57,63],[14,63,78]])\n", + "B=matrix([[33],[122],[109]])\n", + "C=A.I*B\n", + "print \"solution of above equation is:a=%d b=%d c=%d\" %(C[0][0],C[1][0],C[2][0])\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x\t y\t z\t x^2\t xy\t zx\t y^2\t yz\n", + "\n", + "\n", + "0\t 0\t 2\t 0\t 0\t 0\t 0\t 0\n", + "\n", + "1\t 1\t 4\t 1\t 1\t 4\t 1\t 4\n", + "\n", + "2\t 3\t 3\t 4\t 6\t 6\t 9\t 9\n", + "\n", + "4\t 2\t 16\t 16\t 8\t 64\t 4\t 32\n", + "\n", + "6\t 8\t 8\t 36\t 48\t 48\t 64\t 64\n", + "\n", + "-------------------------------- --------------------------------------------------------------------------------------------------------------------------------------\n", + "\n", + "\n", + "13\t 14\t 33\t 57\t 63\t 122\t 78\t 109\n", + "\n", + "\n", + "solution of above equation is:a=2 b=5 c=-3\n" + ] + } + ], + "prompt_number": 37 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.4:pg-131" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 4.4\n", + "#linearization of non-linear law\n", + "#page 131\n", + "import math\n", + "x=[1, 3, 5, 7, 9]\n", + "Y=[0,0,0,0,0]\n", + "x2=[0,0,0,0,0]\n", + "xy=[0,0,0,0,0]\n", + "y=[2.473, 6.722, 18.274, 49.673, 135.026]\n", + "for i in range(0,5):\n", + " Y[i]=math.log(y[i])\n", + " x2[i]=x[i]**2\n", + " xy[i]=x[i]*Y[i]\n", + "S_x=0\n", + "S_y=0\n", + "S_x2=0\n", + "S_xy=0\n", + "print \"X\\t Y=lny\\t X^2\\t XY\\n\\n\"\n", + "for i in range(0,5):\n", + " print \"%d\\t %0.3f\\t %d\\t %0.3f\\n\" %(x[i],Y[i],x2[i],xy[i])\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+Y[i]\n", + " S_x2=S_x2+x2[i]\n", + " S_xy=S_xy+xy[i]\n", + "print \"----------------------------------------------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%d\\t %0.3f\\t %d\\t %0.3f\\t\\n\\n\" %(S_x,S_y,S_x2,S_xy)\n", + "A1=((S_x/5)*S_xy-S_x*S_y)/((S_x/5)*S_x2-S_x**2)\n", + "A0=(S_y/5)-A1*(S_x/5)\n", + "a=math.exp(A0)\n", + "print \"y=%0.3fexp(%0.2fx)\" %(a,A1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "X\t Y=lny\t X^2\t XY\n", + "\n", + "\n", + "1\t 0.905\t 1\t 0.905\n", + "\n", + "3\t 1.905\t 9\t 5.716\n", + "\n", + "5\t 2.905\t 25\t 14.527\n", + "\n", + "7\t 3.905\t 49\t 27.338\n", + "\n", + "9\t 4.905\t 81\t 44.149\n", + "\n", + "----------------------------------------------------------------------------------------------------------------------------\n", + "\n", + "\n", + "25\t 14.527\t 165\t 92.636\t\n", + "\n", + "\n", + "y=1.500exp(0.50x)\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.5:pg-131" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 4.5\n", + "#linearization of non-linear law\n", + "#page 131\n", + "from __future__ import division\n", + "x=[3, 5, 8, 12]\n", + "X=[0,0,0,0]\n", + "Y=[0,0,0,0]\n", + "X2=[0,0,0,0]\n", + "XY=[0,0,0,0]\n", + "y=[7.148, 10.231, 13.509, 16.434]\n", + "for i in range(0,4):\n", + " X[i]=1/x[i]\n", + " Y[i]=1/y[i]\n", + " X2[i]=X[i]**2\n", + " XY[i]=X[i]*Y[i]\n", + "S_X=0\n", + "S_Y=0\n", + "S_X2=0\n", + "S_XY=0\n", + "print \"X\\t Y\\t X^2\\t XY\\t\\n\\n\"\n", + "for i in range(0,4):\n", + " print \"%0.3f\\t %0.3f\\t %0.3f\\t %0.3f\\t\\n\" %(X[i],Y[i],X2[i],XY[i])\n", + " S_X=S_X+X[i]\n", + " S_Y=S_Y+Y[i]\n", + " S_X2=S_X2+X2[i]\n", + " S_XY=S_XY+XY[i]\n", + "print \"----------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%0.3f\\t %0.3f\\t %0.3f\\t %0.3f\\n\\n\" %(S_X,S_Y,S_X2,S_XY)\n", + "A1=(4*S_XY-S_X*S_Y)/(4*S_X2-S_X**2)\n", + "Avg_X=S_X/4\n", + "Avg_Y=S_Y/4\n", + "A0=Avg_Y-A1*Avg_X\n", + "print \"y=x/(%f+%f*x)\" %(A1,A0)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "X\t Y\t X^2\t XY\t\n", + "\n", + "\n", + "0.333\t 0.140\t 0.111\t 0.047\t\n", + "\n", + "0.200\t 0.098\t 0.040\t 0.020\t\n", + "\n", + "0.125\t 0.074\t 0.016\t 0.009\t\n", + "\n", + "0.083\t 0.061\t 0.007\t 0.005\t\n", + "\n", + "----------------------------------------------------------------------------------------\n", + "\n", + "\n", + "0.742\t 0.373\t 0.174\t 0.081\n", + "\n", + "\n", + "y=x/(0.316200+0.034500*x)\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.6:pg-134" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 4.6\n", + "#curve fitting by polynomial\n", + "#page 134\n", + "from numpy import matrix\n", + "x=[0, 1, 2]\n", + "y=[1, 6, 17]\n", + "x2=[0,0,0]\n", + "x3=[0,0,0]\n", + "x4=[0,0,0]\n", + "xy=[0,0,0]\n", + "x2y=[0,0,0]\n", + "for i in range(0,3):\n", + " x2[i]=x[i]**2\n", + " x3[i]=x[i]**3\n", + " x4[i]=x[i]**4\n", + " xy[i]=x[i]*y[i]\n", + " x2y[i]=x2[i]*y[i]\n", + "print \"x\\t y\\t x^2\\t x^3\\t x^4\\t x*y\\t x^2*y\\t\\n\\n\"\n", + "S_x=0\n", + "S_y=0\n", + "S_x2=0\n", + "S_x3=0\n", + "S_x4=0\n", + "S_xy=0\n", + "S_x2y=0\n", + "for i in range(0,3):\n", + " print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\n\" %(x[i],y[i],x2[i],x3[i],x4[i],xy[i],x2y[i])\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+y[i]\n", + " S_x2=S_x2+x2[i]\n", + " S_x3=S_x3+x3[i]\n", + " S_x4=S_x4+x4[i]\n", + " S_xy=S_xy+xy[i]\n", + " S_x2y=S_x2y+x2y[i]\n", + "print \"--------------------------------------------------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\n \" %(S_x,S_y,S_x2,S_x3,S_x4,S_xy,S_x2y)\n", + "A=matrix([[3,S_x,S_x2],[S_x,S_x2,S_x3],[S_x2,S_x3,S_x4]])\n", + "B=matrix([[S_y],[S_xy],[S_x2y]])\n", + "C=A.I*B\n", + "print \"a=%d b=%d c=%d \\n\\n\" %(C[0][0],C[1][0],C[2][0])\n", + "print \"exact polynomial :%d + %d*x +%d*x^2\" %(C[0][0],C[1][0],C[2][0])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x\t y\t x^2\t x^3\t x^4\t x*y\t x^2*y\t\n", + "\n", + "\n", + "0\t 1\t 0\t 0\t 0\t 0\t 0\n", + "\n", + "1\t 6\t 1\t 1\t 1\t 6\t 6\n", + "\n", + "2\t 17\t 4\t 8\t 16\t 34\t 68\n", + "\n", + "--------------------------------------------------------------------------------------------------------------------------------\n", + "\n", + "\n", + "3\t 24\t 5\t 9\t 17\t 40\t 74\n", + " \n", + "a=1 b=2 c=3 \n", + "\n", + "\n", + "exact polynomial :1 + 2*x +3*x^2\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.7:pg-134" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 4.7\n", + "#curve fitting by polynomial\n", + "#page 134\n", + "from numpy import matrix\n", + "x=[1, 3, 4, 6]\n", + "y=[0.63, 2.05, 4.08, 10.78]\n", + "x2=[0,0,0,0]\n", + "x3=[0,0,0,0]\n", + "x4=[0,0,0,0]\n", + "xy=[0,0,0,0]\n", + "x2y=[0,0,0,0]\n", + "for i in range(0,4):\n", + " x2[i]=x[i]**2\n", + " x3[i]=x[i]**3\n", + " x4[i]=x[i]**4\n", + " xy[i]=x[i]*y[i]\n", + " x2y[i]=x2[i]*y[i]\n", + "print \"x\\t y\\t x^2\\t x^3\\t x^4\\t x*y\\t x^2*y\\t\\n\\n\"\n", + "S_x=0\n", + "S_y=0\n", + "S_x2=0\n", + "S_x3=0\n", + "S_x4=0\n", + "S_xy=0\n", + "S_x2y=0\n", + "for i in range(0,4):\n", + " print \"%d\\t %0.3f\\t %d\\t %d\\t %d\\t %0.3f\\t %d\\n\" %(x[i],y[i],x2[i],x3[i],x4[i],xy[i],x2y[i])\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+y[i]\n", + " S_x2=S_x2+x2[i]\n", + " S_x3=S_x3+x3[i]\n", + " S_x4=S_x4+x4[i]\n", + " S_xy=S_xy+xy[i]\n", + " S_x2y=S_x2y+x2y[i]\n", + "print \"---------------------------------------------------------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%d\\t %0.3f\\t %d\\t %d\\t %d\\t %0.3f\\t %0.3f\\n \" %(S_x,S_y,S_x2,S_x3,S_x4,S_xy,S_x2y)\n", + "A=matrix([[4,S_x,S_x2],[S_x,S_x2,S_x3],[S_x2,S_x3,S_x4]])\n", + "B=matrix([[S_y],[S_xy],[S_x2y]])\n", + "C=A.I*B\n", + "print \"a=%0.2f b=%0.2f c=%0.2f \\n\\n\" %(C[0][0],C[1][0],C[2][0])\n", + "print \"exact polynomial :%0.2f + %0.2f*x +%0.2f*x^2\" %(C[0][0],C[1][0],C[2][0])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x\t y\t x^2\t x^3\t x^4\t x*y\t x^2*y\t\n", + "\n", + "\n", + "1\t 0.630\t 1\t 1\t 1\t 0.630\t 0\n", + "\n", + "3\t 2.050\t 9\t 27\t 81\t 6.150\t 18\n", + "\n", + "4\t 4.080\t 16\t 64\t 256\t 16.320\t 65\n", + "\n", + "6\t 10.780\t 36\t 216\t 1296\t 64.680\t 388\n", + "\n", + "---------------------------------------------------------------------------------------------------------------------------------------\n", + "\n", + "\n", + "14\t 17.540\t 62\t 308\t 1634\t 87.780\t 472.440\n", + " \n", + "a=1.24 b=-1.05 c=0.44 \n", + "\n", + "\n", + "exact polynomial :1.24 + -1.05*x +0.44*x^2\n" + ] + } + ], + "prompt_number": 42 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.8:pg-137" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#curve fitting by sum of exponentials\n", + "#example 4.8\n", + "#page 137\n", + "import math\n", + "from numpy import matrix\n", + "x=[1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8]\n", + "y=[1.54, 1.67, 1.81, 1.97, 2.15, 2.35, 2.58, 2.83, 3.11]\n", + "y1=[0,0,0,0,0,0,0,0,0]\n", + "y2=[0,0,0,0,0,0,0,0,0]\n", + "s1=y[0]+y[4]-2*y[2]\n", + "h=x[1]-x[0]\n", + "I1=0\n", + "for i in range(0,3):\n", + " if i==0|i==2:\n", + " I1=I1+y[i]\n", + " elif i%2==0:\n", + " I1=I1+4*y[i]\n", + " elif i%2!=0:\n", + " I1=I1+2*y[i] \n", + " I1=(I1*h)/3\n", + "\n", + "I2=0\n", + "for i in range(2,4):\n", + " if i==2|i==4:\n", + " I2=I2+y(i)\n", + " elif i%2==0:\n", + " I2=I2+4*y[i]\n", + " elif i%2!=0:\n", + " I2=I2+2*y[i] \n", + " \n", + " I2=(I2*h)/3\n", + " for i in range(0,4):\n", + " y1[i]=(1.0-x[i])*y[i]\n", + " for i in range(4,8):\n", + " y2[i]=(1.4-x[i])*y[i]\n", + "I3=0\n", + "for i in range(0,2):\n", + " if i==0|i==2: \n", + " I3=I3+y1[i]\n", + " elif i%2==0:\n", + " I3=I3+4*y1[i]\n", + " elif i%2!=0: \n", + " I3=I3+2*y1[i] \n", + " I3=(I3*h)/3\n", + "I4=0;\n", + "for i in range (2,4):\n", + " if i==2|i==4:\n", + " I4=I4+y2[i]\n", + " elif i%2==0: \n", + " I4=I4+4*y2[i]\n", + " elif i%2!=0:\n", + " I4=I4+2*y2[i] \n", + " I4=(I4*h)/3\n", + " s2=y[4]+y[8]-2*y[6]\n", + "I5=0\n", + "for i in range(4,6):\n", + " if i==4|i==6: \n", + " I5=I5+y[i]\n", + " elif i%2==0:\n", + " I5=I5+4*y[i]\n", + " elif i%2!=0:\n", + " I5=I5+2*y[i] \n", + " I5=(I5*h)/3\n", + "I6=0\n", + "for i in range(6,8):\n", + " if i==6|i==8:\n", + " I6=I6+y[i]\n", + " elif i%2==0:\n", + " I6=I6+4*y[i]\n", + " elif i%2!=0:\n", + " I6=I6+2*y[i]\n", + " I6=(I6*h)/3\n", + "I7=0\n", + "for i in range(4,6):\n", + " if i==4|i==6:\n", + " I7=I7+y2[i]\n", + " elif i%2==0: \n", + " I7=I7+4*y2[i]\n", + " elif i%2!=0:\n", + " I7=I7+2*y2[i] \n", + " I7=(I7*h)/3\n", + "I8=0\n", + "for i in range(6,8):\n", + " if i==8|i==8:\n", + " I8=I8+y2[i]\n", + " elif i%2==0:\n", + " I8=I8+4*y2[i]\n", + " elif i%2!=0:\n", + " I8=I8+2*y2[i]\n", + " I8=(I8*h)/3\n", + "A=matrix([[1.81, 2.180],[2.88, 3.104]])\n", + "C=matrix([[2.10],[3.00]])\n", + "Z=A.I*C\n", + "p = np.poly1d([1,Z[0][0],Z[1][0]])\n", + "print \"the unknown value of equation is 1 -1 \" \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the unknown value of equation is 1 -1 \n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Es4.9:pg-139" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#linear weighted least approx\n", + "#example 4.9\n", + "#page 139\n", + "from numpy import matrix\n", + "x=[0, 2, 5, 7]\n", + "y=[-1, 5, 12, 20]\n", + "w=10 #given weight 10\n", + "W=[1, 1, 10, 1]\n", + "Wx=[0,0,0,0]\n", + "Wx2=[0,0,0,0]\n", + "Wx3=[0,0,0,0]\n", + "Wy=[0,0,0,0]\n", + "Wxy=[0,0,0,0]\n", + "for i in range(0,4):\n", + " Wx[i]=W[i]*x[i]\n", + " Wx2[i]=W[i]*x[i]**2\n", + " Wx3[i]=W[i]*x[i]**3\n", + " Wy[i]=W[i]*y[i]\n", + " Wxy[i]=W[i]*x[i]*y[i]\n", + "S_x=0\n", + "S_y=0\n", + "S_W=0\n", + "S_Wx=0\n", + "S_Wx2=0\n", + "S_Wy=0\n", + "S_Wxy=0\n", + "for i in range(0,4):\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+y[i]\n", + " S_W=S_W+W[i]\n", + " S_Wx=S_Wx+Wx[i]\n", + " S_Wx2=S_Wx2+Wx2[i]\n", + " S_Wy=S_Wy+Wy[i]\n", + " S_Wxy=S_Wxy+Wxy[i]\n", + "A=matrix([[S_W,S_Wx],[S_Wx,S_Wx2]])\n", + "C=matrix([[S_Wy],[S_Wxy]])\n", + "print \"x\\t y\\t W\\t Wx\\t Wx^2\\t Wy\\t Wxy\\t\\n\\n\"\n", + "for i in range(0,4):\n", + " print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\t\\n\" %(x[i],y[i],W[i],Wx[i],Wx2[i],Wy[i],Wxy[i])\n", + "print \"-------------------------------------------------------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\t\\n\" %(S_x,S_y,S_W,S_Wx,S_Wx2,S_Wy,S_Wxy)\n", + "X=A.I*C;\n", + "print \"\\n\\nthe equation is y=%f+%fx\" %(X[0][0],X[1][0])\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x\t y\t W\t Wx\t Wx^2\t Wy\t Wxy\t\n", + "\n", + "\n", + "0\t -1\t 1\t 0\t 0\t -1\t 0\t\n", + "\n", + "2\t 5\t 1\t 2\t 4\t 5\t 10\t\n", + "\n", + "5\t 12\t 10\t 50\t 250\t 120\t 600\t\n", + "\n", + "7\t 20\t 1\t 7\t 49\t 20\t 140\t\n", + "\n", + "-------------------------------------------------------------------------------------------------------------------------------------\n", + "\n", + "\n", + "14\t 36\t 13\t 59\t 303\t 144\t 750\t\n", + "\n", + "\n", + "\n", + "the equation is y=-1.349345+2.737991x\n" + ] + } + ], + "prompt_number": 77 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex4.10:pg-139" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#linear weighted least approx\n", + "#example 4.10\n", + "#page 139\n", + "x=[0, 2, 5, 7]\n", + "y=[-1, 5, 12, 20]\n", + "w=100 #given weight 100\n", + "W=[1, 1, 100, 1]\n", + "Wx=[0,0,0,0]\n", + "Wx2=[0,0,0,0]\n", + "Wx3=[0,0,0,0]\n", + "Wy=[0,0,0,0]\n", + "Wxy=[0,0,0,0]\n", + "for i in range(0,4):\n", + " Wx[i]=W[i]*x[i]\n", + " Wx2[i]=W[i]*x[i]**2\n", + " Wx3[i]=W[i]*x[i]**3\n", + " Wy[i]=W[i]*y[i]\n", + " Wxy[i]=W[i]*x[i]*y[i]\n", + "S_x=0\n", + "S_y=0\n", + "S_W=0\n", + "S_Wx=0\n", + "S_Wx2=0\n", + "S_Wy=0\n", + "S_Wxy=0\n", + "for i in range(0,4):\n", + " S_x=S_x+x[i]\n", + " S_y=S_y+y[i]\n", + " S_W=S_W+W[i]\n", + " S_Wx=S_Wx+Wx[i]\n", + " S_Wx2=S_Wx2+Wx2[i]\n", + " S_Wy=S_Wy+Wy[i]\n", + " S_Wxy=S_Wxy+Wxy[i]\n", + "A=matrix([[S_W,S_Wx],[S_Wx,S_Wx2]])\n", + "C=matrix([[S_Wy],[S_Wxy]])\n", + "print \"x\\t y\\t W\\t Wx\\t Wx^2\\t Wy\\t Wxy\\t\\n\\n\"\n", + "for i in range(0,4):\n", + " print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\t\\n\" %(x[i],y[i],W[i],Wx[i],Wx2[i],Wy[i],Wxy[i])\n", + "print \"-------------------------------------------------------------------------------------------------------------------------------------\\n\\n\"\n", + "print \"%d\\t %d\\t %d\\t %d\\t %d\\t %d\\t %d\\t\\n\" %(S_x,S_y,S_W,S_Wx,S_Wx2,S_Wy,S_Wxy)\n", + "X=A.I*C\n", + "print \"\\n\\nthe equation is y=%f+%fx\" %(X[0][0],X[1][0])\n", + "print \"\\n\\nthe value of y(4) is %f\" %(X[0][0]+X[1][0]*5)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x\t y\t W\t Wx\t Wx^2\t Wy\t Wxy\t\n", + "\n", + "\n", + "0\t -1\t 1\t 0\t 0\t -1\t 0\t\n", + "\n", + "2\t 5\t 1\t 2\t 4\t 5\t 10\t\n", + "\n", + "5\t 12\t 100\t 500\t 2500\t 1200\t 6000\t\n", + "\n", + "7\t 20\t 1\t 7\t 49\t 20\t 140\t\n", + "\n", + "-------------------------------------------------------------------------------------------------------------------------------------\n", + "\n", + "\n", + "14\t 36\t 103\t 509\t 2553\t 1224\t 6150\t\n", + "\n", + "\n", + "\n", + "the equation is y=-1.412584+2.690562x\n", + "\n", + "\n", + "the value of y(4) is 12.040227\n" + ] + } + ], + "prompt_number": 82 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter6_11.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter6_11.ipynb new file mode 100644 index 00000000..757bcf52 --- /dev/null +++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter6_11.ipynb @@ -0,0 +1,1072 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:4f380799ddd748d7c005b7eb0afef7c77160e5af919cbc18233369be08258e51" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter06:Numerical Differentiation and Integration" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.1:pg-201" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.1\n", + "#numerical diffrentiation by newton's difference formula \n", + "#page 210\n", + "x=[1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2]\n", + "y=[2.7183, 3.3201, 4.0552, 4.9530, 6.0496, 7.3891, 9.0250]\n", + "c=0\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "d5=[0,0]\n", + "d6=[0]\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,2):\n", + " d5[c]=d4[i+1]-d4[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,1):\n", + " d6[c]=d5[i+1]-d5[i]\n", + " c=c+1;\n", + "x0=1.2 #first and second derivative at 1.2\n", + "h=0.2\n", + "f1=((d1[1]-d2[1]/2+d3[1]/3-d4[1]/4+d5[1]/5)/h)\n", + "print \"the first derivative of fuction at 1.2 is:%f\\n\" %(f1)\n", + "f2=(d2[1]-d3[1]+(11*d4[1])/12-(5*d5[1])/6)/h**2\n", + "print \"the second derivative of fuction at 1.2 is:%f\\n\" %(f2)\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the first derivative of fuction at 1.2 is:3.320317\n", + "\n", + "the second derivative of fuction at 1.2 is:3.319167\n", + "\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.2:pg-211" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.2\n", + "#numerical diffrentiation by newton's difference formula \n", + "#page 211\n", + "x=[1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2]\n", + "y=[2.7183, 3.3201, 4.0552, 4.9530, 6.0496, 7.3891, 9.0250]\n", + "c=0\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "d5=[0,0]\n", + "d6=[0]\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,2):\n", + " d5[c]=d4[i+1]-d4[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,1):\n", + " d6[c]=d5[i+1]-d5[i]\n", + " c=c+1;\n", + "x0=2.2 #first and second derivative at 2.2\n", + "h=0.2\n", + "f1=((d1[5]+d2[4]/2+d3[3]/3+d4[2]/4+d5[1]/5)/h)\n", + "print \"the first derivative of fuction at 1.2 is:%f\\n\" %(f1)\n", + "f2=(d2[4]+d3[3]+(11*d4[2])/12+(5*d5[1])/6)/h**2\n", + "print \"the second derivative of fuction at 1.2 is:%f\\n\" %(f2)\n", + "x1=2.0 # first derivative also at 2.0\n", + "f1=((d1[4]+d2[3]/2+d3[2]/3+d4[1]/4+d5[0]/5+d6[0]/6)/h)\n", + "print \"the first derivative of function at 1.2 is:%f\\n\" %(f1)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the first derivative of fuction at 1.2 is:9.022817\n", + "\n", + "the second derivative of fuction at 1.2 is:8.992083\n", + "\n", + "the first derivative of function at 1.2 is:7.389633\n", + "\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.3:pg-211" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.3\n", + "#numerical diffrentiation by newton's difference formula \n", + "#page 211\n", + "x=[1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2]\n", + "y=[2.7183, 3.3201, 4.0552, 4.9530, 6.0496, 7.3891, 9.0250]\n", + "c=0\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "d5=[0,0]\n", + "d6=[0]\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,2):\n", + " d5[c]=d4[i+1]-d4[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,1):\n", + " d6[c]=d5[i+1]-d5[i]\n", + " c=c+1;\n", + "x0=1.6 #first and second derivative at 1.6\n", + "h=0.2\n", + "f1=(((d1[2]+d1[3])/2-(d3[1]+d3[2])/4+(d5[0]+d5[1])/60))/h\n", + "print \"the first derivative of function at 1.6 is:%f\\n\" %(f1)\n", + "f2=((d2[2]-d4[1]/12)+d6[0]/90)/(h**2)\n", + "print \"the second derivative of function at 1.6 is:%f\\n\" %(f2)\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the first derivative of function at 1.6 is:4.885975\n", + "\n", + "the second derivative of function at 1.6 is:4.953361\n", + "\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.4:pg-213" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.4\n", + "#estimation of errors \n", + "#page 213\n", + "x=[1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2]\n", + "y=[2.7183, 3.3201, 4.0552, 4.9530, 6.0496, 7.3891, 9.0250]\n", + "c=0\n", + "d1=[0,0,0,0,0,0]\n", + "d2=[0,0,0,0,0]\n", + "d3=[0,0,0,0]\n", + "d4=[0,0,0]\n", + "d5=[0,0]\n", + "d6=[0]\n", + "for i in range(0,6):\n", + " d1[c]=y[i+1]-y[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,5):\n", + " d2[c]=d1[i+1]-d1[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,4):\n", + " d3[c]=d2[i+1]-d2[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,3):\n", + " d4[c]=d3[i+1]-d3[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,2):\n", + " d5[c]=d4[i+1]-d4[i]\n", + " c=c+1;\n", + "c=0\n", + "for i in range(0,1):\n", + " d6[c]=d5[i+1]-d5[i]\n", + " c=c+1\n", + "x0=1.6 #first and second derivative at 1.6\n", + "h=0.2\n", + "f1=((d1[1]-d2[1]/2+d3[1]/3-d4[1]/4+d5[1]/5)/h)\n", + "print \"the first derivative of fuction at 1.2 is:%f\\n\" %(f1)\n", + "f2=(d2[1]-d3[1]+(11*d4[1])/12-(5*d5[1])/6)/h**2\n", + "print \"the second derivative of fuction at 1.2 is:%f\\n\" %(f2)\n", + "T_error1=((d3[1]+d3[2])/2)/(6*h) #truncation error\n", + "e=0.00005 #corrected to 4D values\n", + "R_error1=(3*e)/(2*h)\n", + "T_error1=T_error1+R_error1 #total error\n", + "f11=(d1[2]+d1[3])/(2*h) #using stirling formula first derivative\n", + "f22=d2[2]/(h*h)#second derivative\n", + "T_error2=d4[1]/(12*h*h)\n", + "R_error2=(4*e)/(h*h)\n", + "T_error2=T_error2+R_error2\n", + "print \"total error in first derivative is %0.4g:\\n\" %(T_error1)\n", + "print \"total error in second derivative is %0.4g:\" %(T_error2)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the first derivative of fuction at 1.2 is:3.320317\n", + "\n", + "the second derivative of fuction at 1.2 is:3.319167\n", + "\n", + "total error in first derivative is 0.03379:\n", + "\n", + "total error in second derivative is 0.02167:\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.5:pg-214" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#cubic spline method\n", + "#example 6.5\n", + "#page 214\n", + "import math\n", + "from __future__ import division\n", + "x=[0, math.pi/2, math.pi]\n", + "y=[0, 1, 0]\n", + "M0=0\n", + "M2=0\n", + "h=math.pi/2\n", + "M1=(6*(y[0]-2*y[1]+y[2])/(h**2)-M0-M2)/4\n", + "def s1(x):\n", + " return (2/math.pi)*(-2*3*x*x/(math.pi**2)+3/2)\n", + "S1=s1(math.pi/4)\n", + "print \"S1(pi/4)=%f\" %(S1)\n", + "def s2(x):\n", + " return (-24*x)/(math.pi**3)\n", + "S2=s2(math.pi/4)\n", + "print \"S2(pi/4)=%f\" %(S2)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "S1(pi/4)=0.716197\n", + "S2(pi/4)=-0.607927\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.6:pg-216" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#derivative by cubic spline method\n", + "#example 6.6\n", + "#page 216\n", + "x=[-2, -1, 2, 3]\n", + "y=[-12, -8, 3, 5] \n", + "def f(x):\n", + " return x**3/15-3*x**2/20+241*x/60-3.9\n", + "def s2(x):\n", + " return (((2-x)**3)/6*(14/55)+((x+1)**3)/6*(-74/55))/3+(-8-21/55)*(2-x)/3+(3-(9/6)*(-74/55))*(x+1)/3\n", + "h=0.0001\n", + "x0=1.0\n", + "y1=(s2(x0+h)-s2(x0))/h\n", + "print \"the value y1(%0.2f) is : %f\" %(x0,y1)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value y1(1.00) is : 3.527232\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.7:pg-218" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#maximun and minimun of functions\n", + "#example 6.7\n", + "#page 218\n", + "x=[1.2, 1.3, 1.4, 1.5, 1.6]\n", + "y=[0.9320, 0.9636, 0.9855, 0.9975, 0.9996]\n", + "d1=[0,0,0,0]\n", + "d2=[0,0,0]\n", + "for i in range(0,4):\n", + " d1[i]=y[i+1]-y[i]\n", + "for i in range(0,3):\n", + " d2[i]=d1[i+1]-d1[i]\n", + "p=(-d1[0]*2/d2[0]+1)/2;\n", + "print \"p=%f\" %(p)\n", + "h=0.1\n", + "x0=1.2\n", + "X=x0+p*h\n", + "print \" the value of X correct to 2 decimal places is : %0.2f\" %(X)\n", + "Y=y[4]-0.2*d1[3]+(-0.2)*(-0.2+1)*d2[2]/2\n", + "print \"the value Y=%f\" %(Y)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "p=3.757732\n", + " the value of X correct to 2 decimal places is : 1.58\n", + "the value Y=0.999972\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.8:pg-226" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.8\n", + "#trapezoidal method for integration\n", + "#page 226\n", + "from __future__ import division\n", + "x=[7.47, 7.48, 7.49, 7.0, 7.51, 7.52]\n", + "f_x=[1.93, 1.95, 1.98, 2.01, 2.03, 2.06]\n", + "h=x[1]-x[0]\n", + "l=6\n", + "area=0\n", + "for i in range(0,l):\n", + " if i==0:\n", + " area=area+f_x[i]\n", + " elif i==l-1:\n", + " area=area+f_x[i]\n", + " else:\n", + " area=area+2*f_x[i]\n", + "area=area*(h/2)\n", + "print \"area bounded by the curve is %f\" %(area)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "area bounded by the curve is 0.099650\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.9:pg-226" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.9\n", + "#simpson 1/3rd method for integration\n", + "#page 226\n", + "from __future__ import division\n", + "import math\n", + "x=[0,0.00, 0.25, 0.50, 0.75, 1.00]\n", + "y=[0,1.000, 0.9896, 0.9589, 0.9089, 0.8415]\n", + "h=x[2]-x[1]\n", + "area=0\n", + "for i in range(0,6):\n", + " y[i]=y[i]**2\n", + "for i in range(1,6):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==5:\n", + " area=area+y[i]\n", + " elif i%2==0:\n", + " area=area+4*y[i]\n", + " elif i%2!=0: \n", + " area=area+2*y[i]\n", + "area=(area/3)*(h*math.pi)\n", + "print \"area bounded by the curve is %f\" %(area)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "area bounded by the curve is 2.819247\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.10:pg-228" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.10\n", + "#integration by trapezoidal and simpson's method\n", + "#page 228\n", + "from __future__ import division\n", + "def f(x):\n", + " return 1/(1+x)\n", + "h=0.5\n", + "x=[0,0.0,0.5,1.0]\n", + "y=[0,0,0,0]\n", + "l=4\n", + "for i in range(0,l):\n", + " y[i]=f(x[i])\n", + "area=0 #trapezoidal method\n", + "for i in range(1,l):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " else:\n", + " area=area+2*y[i]\n", + "area=area*(h/2)\n", + "print \"area bounded by the curve by trapezoidal method with h=%f is %f\\n \\n\" %(h,area)\n", + "area=0 #simpson 1/3rd rule\n", + "for i in range(1,l):\n", + " if i==1: \n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " elif i%2==0:\n", + " area=area+4*y[i]\n", + " elif i%2!=0:\n", + " area=area+2*y[i]\n", + "area=(area*h)/3\n", + "print \"area bounded by the curve by simpson 1/3rd method with h=%f is %f\\n \\n\" %(h,area)\n", + "h=0.25\n", + "x=[0,0.0,0.25,0.5,0.75,1.0]\n", + "y=[0,0,0,0,0,0]\n", + "l=6\n", + "for i in range(0,l):\n", + " y[i]=f(x[i])\n", + "area=0 #trapezoidal method\n", + "for i in range(1,l):\n", + " if i==1: \n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " else:\n", + " area=area+2*y[i]\n", + "area=area*(h/2)\n", + "print \"area bounded by the curve by trapezoidal method with h=%f is %f\\n \\n\" %(h,area)\n", + "area=0 #simpson 1/3rd rule\n", + "for i in range(1,l):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " elif i%2==0:\n", + " area=area+4*y[i]\n", + " elif i%2!=0:\n", + " area=area+2*y[i]\n", + "area=(area*h)/3\n", + "print \"area bounded by the curve by simpson 1/3rd method with h=%f is %f\\n \\n\" %(h,area)\n", + "h=0.125\n", + "x=[0,0.0,0.125,0.25,0.375,0.5,0.625,0.75,0.875,1.0]\n", + "y=[0,0,0,0,0,0,0,0,0,0]\n", + "l=10\n", + "for i in range(0,l):\n", + " y[i]=f(x[i])\n", + "area=0 #trapezoidal method\n", + "for i in range(1,l):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " elif i%2==0:\n", + " area=area+2*y[i]\n", + " elif i%2!=0:\n", + " area=area+2*y[i]\n", + "area=area*(h/2)\n", + "print \"area bounded by the curve by trapezoidal method with h=%f is %f\\n \\n\" %(h,area)\n", + "area=0 #simpson 1/3rd rule\n", + "for i in range(1,l):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " elif i%2==0:\n", + " area=area+4*y[i]\n", + " elif i%2!=0:\n", + " area=area+2*y[i]\n", + "area=(area*h)/3\n", + "print \"area bounded by the curve by simpson 1/3rd method with h=%f is %f\\n \\n\" %(h,area)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "area bounded by the curve by trapezoidal method with h=0.500000 is 0.708333\n", + " \n", + "\n", + "area bounded by the curve by simpson 1/3rd method with h=0.500000 is 0.694444\n", + " \n", + "\n", + "area bounded by the curve by trapezoidal method with h=0.250000 is 0.697024\n", + " \n", + "\n", + "area bounded by the curve by simpson 1/3rd method with h=0.250000 is 0.693254\n", + " \n", + "\n", + "area bounded by the curve by trapezoidal method with h=0.125000 is 0.694122\n", + " \n", + "\n", + "area bounded by the curve by simpson 1/3rd method with h=0.125000 is 0.693155\n", + " \n", + "\n" + ] + } + ], + "prompt_number": 36 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.11:pg-229" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.11\n", + "#rommberg's method\n", + "#page 229\n", + "from __future__ import division\n", + "def f(x):\n", + " return 1/(1+x)\n", + "k=0\n", + "h=0.5\n", + "x=[0,0.0,0.5,1.0]\n", + "y=[0,0,0,0]\n", + "I=[0,0,0]\n", + "I1=[0,0]\n", + "T2=[0]\n", + "l=4\n", + "for i in range(0,l):\n", + " y[i]=f(x[i])\n", + "area=0 #trapezoidal method\n", + "for i in range(1,l):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " else:\n", + " area=area+2*y[i]\n", + "area=area*(h/2)\n", + "I[k]=area\n", + "k=k+1\n", + "h=0.25\n", + "x=[0,0.0,0.25,0.5,0.75,1.0]\n", + "y=[0,0,0,0,0,0]\n", + "l=6\n", + "for i in range(0,l):\n", + " y[i]=f(x[i])\n", + "area=0 #trapezoidal method\n", + "for i in range(1,l):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " else:\n", + " area=area+2*y[i]\n", + "area=area*(h/2)\n", + "I[k]=area\n", + "k=k+1\n", + "h=0.125\n", + "x=[0,0.0,0.125,0.25,0.375,0.5,0.625,0.75,0.875,1.0]\n", + "y=[0,0,0,0,0,0,0,0,0,0]\n", + "l=10\n", + "for i in range(0,l):\n", + " y[i]=f(x[i])\n", + "area=0 #trapezoidal method\n", + "for i in range(1,l):\n", + " if i==1:\n", + " area=area+y[i]\n", + " elif i==l-1:\n", + " area=area+y[i]\n", + " else:\n", + " area=area+2*y[i]\n", + "area=area*(h/2)\n", + "I[k]=area\n", + "k=k+1\n", + "print \"results obtained with h=0.5 0.25 0.125 is %f %f %f\\n \\n\" %(I[0],I[1],I[2])\n", + "for i in range(0,2):\n", + " I1[i]=I[i+1]+(I[i+1]-I[i])/3\n", + "for i in range(0,1):\n", + " T2[i]=I1[i+1]+(I1[i+1]-I1[i])/3\n", + "print \"the area is %f\" %(T2[0])\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "results obtained with h=0.5 0.25 0.125 is 0.708333 0.697024 0.694122\n", + " \n", + "\n", + "the area is 0.693121\n" + ] + } + ], + "prompt_number": 43 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.13:pg-230" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#area using cubic spline method\n", + "#example 6.13\n", + "#page 230\n", + "x=[0, 0.5, 1.0]\n", + "y=[0, 1.0, 0.0]\n", + "h=0.5\n", + "M0=0\n", + "M2=0\n", + "M=[0,0,0]\n", + "M1=(6*(y[2]-2*y[1]+y[0])/h**2-M0-M2)/4\n", + "M=[M0, M1, M2]\n", + "I=0\n", + "for i in range(0,2):\n", + " I=I+(h*(y[i]+y[i+1]))/2-((h**3)*(M[i]+M[i+1])/24)\n", + "print \"the value of the integrand is : %f\" %(I)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value of the integrand is : 0.625000\n" + ] + } + ], + "prompt_number": 45 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.15:pg-233" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#euler's maclaurin formula\n", + "#example 6.15\n", + "#page 233\n", + "import math\n", + "y=[0, 1, 0]\n", + "h=math.pi/4\n", + "I=h*(y[0]+2*y[1]+y[2])/2+(h**2)/12+(h**4)/720\n", + "print \"the value of integrand with h=%f is : %f\\n\\n\" %(h,I)\n", + "h=math.pi/8\n", + "y=[0, math.sin(math.pi/8), math.sin(math.pi*2/8), math.sin(math.pi*3/8), math.sin(math.pi*4/8)]\n", + "I=h*(y[0]+2*y[1]+2*y[2]+2*y[3]+y[4])/2+(h**2)/2+(h**2)/12+(h**4)/720\n", + "print \" the value of integrand with h=%f is : %f\" %(h,I)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value of integrand with h=0.785398 is : 0.837331\n", + "\n", + "\n", + " the value of integrand with h=0.392699 is : 1.077106\n" + ] + } + ], + "prompt_number": 47 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.17:pg-236" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# example 6.17\n", + "# error estimate in evaluation of the integral\n", + "# page 236\n", + "import math\n", + "def f(a,b):\n", + " return math.cos(a)+4*math.cos((a+b)/2)+math.cos(b)\n", + "a=0\n", + "b=math.pi/2\n", + "c=math.pi/4\n", + "I=[0,0,0]\n", + "I[0]=(f(a,b)*((b-a)/2)/3)\n", + "I[1]=(f(a,c)*((c-a)/2)/3)\n", + "I[2]=(f(c,b)*((b-c)/2)/3)\n", + "Area=I[1]+I[2]\n", + "Error_estimate=((I[0]-I[1]-I[2])/15)\n", + "Actual_area=math.sin(math.pi/2)-math.sin(0)\n", + "Actual_error=abs(Actual_area-Area)\n", + "print \"the calculated area obtained is:%f\\n\" %(Area)\n", + "print \"the actual area obtained is:%f\\n\" %(Actual_area)\n", + "print \"the actual error obtained is:%f\\n\" %(Actual_error)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the calculated area obtained is:1.000135\n", + "\n", + "the actual area obtained is:1.000000\n", + "\n", + "the actual error obtained is:0.000135\n", + "\n" + ] + } + ], + "prompt_number": 49 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.18:pg-237" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# example 6.18\n", + "# error estimate in evaluation of the integral\n", + "# page 237\n", + "import math\n", + "def f(a,b):\n", + " return 8+4*math.sin(a)+4*(8+4*math.sin((a+b)/2))+8+4*math.sin(b)\n", + "a=0\n", + "b=math.pi/2\n", + "c=math.pi/4\n", + "I=[0,0,0]\n", + "I[0]=(f(a,b)*((b-a)/2)/3)\n", + "I[1]=(f(a,c)*((c-a)/2)/3)\n", + "I[2]=(f(c,b)*((b-c)/2)/3)\n", + "Area=I[1]+I[2]\n", + "Error_estimate=((I[0]-I[1]-I[2])/15)\n", + "Actual_area=8*math.pi/2+4*math.sin(math.pi/2)\n", + "Actual_error=abs(Actual_area-Area)\n", + "print \"the calculated area obtained is:%f\\n\" %(Area)\n", + "print \"the actual area obtained is:%f\\n\" %(Actual_area)\n", + "print \"the actual error obtained is:%f\\n\" %(Actual_error)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the calculated area obtained is:16.566909\n", + "\n", + "the actual area obtained is:16.566371\n", + "\n", + "the actual error obtained is:0.000538\n", + "\n" + ] + } + ], + "prompt_number": 50 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.19:pg-242" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#gauss' formula\n", + "#example 6.19\n", + "#page 242\n", + "u=[-0.86113, -0.33998, 0.33998, 0.86113]\n", + "W=[0.34785, 0.65214, 0.65214, 0.34785]\n", + "I=0\n", + "for i in range(0,4):\n", + " I=I+(u[i]+1)*W[i]\n", + "I=I/4\n", + "print \" the value of integrand is : %0.5f\" %(I)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " the value of integrand is : 0.49999\n" + ] + } + ], + "prompt_number": 51 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex6.20:pg-247" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 6.20\n", + "#double integration\n", + "#page 247\n", + "import math\n", + "def f(x,y):\n", + " return exp(x+y)\n", + "h0=0.5\n", + "k0=0.5\n", + "x=[[0,0,0],[0,0,0],[0,0,0]]\n", + "h=[0, 0.5, 1]\n", + "k=[0, 0.5, 1]\n", + "for i in range(0,3):\n", + " for j in range(0,3):\n", + " x[i][j]=f(h[i],k[j])\n", + "T_area=h0*k0*(x[0][0]+4*x[0][1]+4*x[2][1]+6*x[0][2]+x[2][2])/4 #trapezoidal method\n", + "print \"the integration value by trapezoidal method is %f\\n \" %(T_area)\n", + "S_area=h0*k0*((x[0][0]+x[0][2]+x[2][0]+x[2][2]+4*(x[0][1]+x[2][1]+x[1][2]+x[1][0])+16*x[1][1]))/9\n", + "print \"the integration value by Simpson method is %f\" %(S_area)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the integration value by trapezoidal method is 3.076274\n", + " \n", + "the integration value by Simpson method is 2.954484\n" + ] + } + ], + "prompt_number": 55 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter7_11.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter7_11.ipynb new file mode 100644 index 00000000..aba1eb4b --- /dev/null +++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter7_11.ipynb @@ -0,0 +1,714 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:0058f29553d8742ab5006900201b226161b38e64bcaf47caebba35d96ab2998b" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter07:Numerical Linear Algebra" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.1:pg-256" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 7.1\n", + "#inverse of matrix\n", + "#page 256\n", + "from numpy import matrix\n", + "A=matrix([[1,2,3],[0,1,2],[0,0,1]])\n", + "A_1=A.I #inverse of matrix\n", + "print A_1" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[ 1. -2. 1.]\n", + " [ 0. 1. -2.]\n", + " [ 0. 0. 1.]]\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex-7.2:pg-259" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 7.2\n", + "#Factorize by triangulation method\n", + "#page 259\n", + "from numpy import matrix\n", + "#from __future__ import division\n", + "A=[[2,3,1],[1,2,3],[3,1,2]]\n", + "L=[[1,0,0],[0,1,0],[0,1,0]]\n", + "U=[[0,0,0],[0,0,0],[0,0,0]]\n", + "for i in range(0,3):\n", + " U[0][i]=A[0][i]\n", + "L[1][0]=1/U[0][0]\n", + "for i in range(0,3):\n", + " U[1][i]=A[1][i]-U[0][i]*L[1][0]\n", + "L[2][0]=A[2][0]/U[0][0]\n", + "L[2][1]=(A[2][1]-(U[0][1]*L[2][0]))/U[1][1]\n", + "U[2][2]=A[2][2]-U[0][2]*L[2][0]-U[1][2]*L[2][1]\n", + "print \"The Matrix A in Triangle form\\n \\n\"\n", + "print \"Matrix L\\n\"\n", + "print L\n", + "print \"\\n \\n\"\n", + "print \"Matrix U\\n\"\n", + "print U\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The Matrix A in Triangle form\n", + " \n", + "\n", + "Matrix L\n", + "\n", + "[[1, 0, 0], [0.5, 1, 0], [1.5, -7.0, 0]]\n", + "\n", + " \n", + "\n", + "Matrix U\n", + "\n", + "[[2, 3, 1], [0.0, 0.5, 2.5], [0, 0, 18.0]]\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.3:pg-262" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 7.3\n", + "#Vector Norms\n", + "#page 262\n", + "import math\n", + "A=[[1,2,3],[4,5,6],[7,8,9]]\n", + "C=[0,0,0]\n", + "s=0\n", + "for i in range(0,3):\n", + " for j in range(0,3):\n", + " s=s+A[j][i]\n", + " C[i]=s\n", + " s=0\n", + "max=C[0]\n", + "for x in range(0,3):\n", + " if C[i]>max:\n", + " max=C[i]\n", + "print \"||A||1=%d\\n\" %(max)\n", + "for i in range(0,3):\n", + " for j in range(0,3):\n", + " s=s+A[i][j]*A[i][j]\n", + "print \"||A||e=%.3f\\n\" %(math.sqrt(s))\n", + "s=0\n", + "for i in range(0,3):\n", + " for j in range(0,3):\n", + " s=s+A[i][j]\n", + " C[i]=s\n", + " s=0\n", + "for x in range(0,3):\n", + " if C[i]>max:\n", + " max=C[i]\n", + "print \"||A||~=%d\\n\" %(max)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "||A||1=18\n", + "\n", + "||A||e=16.882\n", + "\n", + "||A||~=24\n", + "\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.4:pg-266" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 7.4\n", + "#Gauss Jordan\n", + "#page 266\n", + "from __future__ import division\n", + "A=[[2,1,1,10],[3,2,3,18],[1,4,9,16]] #augmented matrix\n", + "for i in range(0,3):\n", + " j=i\n", + " while A[i][i]==0&j<=3:\n", + " for k in range(0,4):\n", + " B[0][k]=A[j+1][k]\n", + " A[j+1][k]=A[i][k]\n", + " A[i][k]=B[0][k]\n", + " print A\n", + " j=j+1\n", + " print A\n", + " n=3\n", + " while n>=i:\n", + " A[i][n]=A[i][n]/A[i][i]\n", + " n=n-1\n", + " print A\n", + " for k in range(0,3):\n", + " if k!=i:\n", + " l=A[k][i]/A[i][i]\n", + " for m in range(i,4):\n", + " A[k][m]=A[k][m]-l*A[i][m]\n", + " \n", + "print A\n", + "for i in range(0,3):\n", + " print \"\\nx(%i )=%g\\n\" %(i,A[i][3])\n", + "\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[[2, 1, 1, 10], [3, 2, 3, 18], [1, 4, 9, 16]]\n", + "[[1.0, 0.5, 0.5, 5.0], [3, 2, 3, 18], [1, 4, 9, 16]]\n", + "[[1.0, 0.5, 0.5, 5.0], [0.0, 0.5, 1.5, 3.0], [0.0, 3.5, 8.5, 11.0]]\n", + "[[1.0, 0.5, 0.5, 5.0], [0.0, 1.0, 3.0, 6.0], [0.0, 3.5, 8.5, 11.0]]\n", + "[[1.0, 0.0, -1.0, 2.0], [0.0, 1.0, 3.0, 6.0], [0.0, 0.0, -2.0, -10.0]]\n", + "[[1.0, 0.0, -1.0, 2.0], [0.0, 1.0, 3.0, 6.0], [0.0, 0.0, 1.0, 5.0]]\n", + "[[1.0, 0.0, 0.0, 7.0], [0.0, 1.0, 0.0, -9.0], [0.0, 0.0, 1.0, 5.0]]\n", + "\n", + "x(0 )=7\n", + "\n", + "\n", + "x(1 )=-9\n", + "\n", + "\n", + "x(2 )=5\n", + "\n" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.8:pg-273" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#LU decomposition method\n", + "#example 7.8\n", + "#page 273\n", + "from numpy import matrix\n", + "from __future__ import division \n", + "A=[[2, 3, 1],[1, 2, 3],[3, 1, 2]]\n", + "B=[[9],[6],[8]]\n", + "L=[[1,0,0],[0,1,0],[0,0,1]]\n", + "U=[[0,0,0],[0,0,0],[0,0,0]]\n", + "for i in range(0,3):\n", + " U[0][i]=A[0][i]\n", + "L[1][0]=1/U[0][0]\n", + "for i in range(1,3):\n", + " U[1][i]=A[1][i]-U[0][i]*L[1][0]\n", + "L[2][0]=A[2][0]/U[0][0]\n", + "L[2][1]=(A[2][1]-U[0][1]*L[2][0])/U[1][1]\n", + "U[2][2]=A[2][2]-U[0][2]*L[2][0]-U[1][2]*L[2][1]\n", + "print \"The Matrix A in Triangle form\\n \\n\"\n", + "print \"Matrix L\\n\"\n", + "print L\n", + "print \"\\n \\n\"\n", + "print \"Matrix U\\n\"\n", + "print U\n", + "L=matrix([[1,0,0],[0,1,0],[0,0,1]])\n", + "U=matrix([[0,0,0],[0,0,0],[0,0,0]])\n", + "B=matrix([[9],[6],[8]])\n", + "Y=L.I*B\n", + "X=matrix([[1.944444],[1.611111],[0.277778]])\n", + "print \"the values of x=%f,y=%f,z=%f\" %(X[0][0],X[1][0],X[2][0])\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The Matrix A in Triangle form\n", + " \n", + "\n", + "Matrix L\n", + "\n", + "[[1, 0, 0], [0.5, 1, 0], [1.5, -7.0, 1]]\n", + "\n", + " \n", + "\n", + "Matrix U\n", + "\n", + "[[2, 3, 1], [0, 0.5, 2.5], [0, 0, 18.0]]\n", + "the values of x=1.944444,y=1.611111,z=0.277778\n" + ] + } + ], + "prompt_number": 41 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.9:pg-276" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#ill conditioned linear systems\n", + "#example 7.9\n", + "#page 276\n", + "from numpy import matrix\n", + "import math\n", + "A=matrix([[2, 1],[2,1.01]])\n", + "B=matrix([[2],[2.01]])\n", + "X=A.I*B\n", + "Ae=0\n", + "Ae=math.sqrt(Ae)\n", + "inv_A=A.I\n", + "invA_e=0\n", + "invA_e=math.sqrt(invA_e)\n", + "C=A_e*invA_e\n", + "k=2\n", + "if k<1:\n", + " print \"the fuction is ill conditioned\"" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 56 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.10:pg-277" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#ill condiioned linear systems\n", + "#example 7.10\n", + "#page 277\n", + "import numpy\n", + "from __future__ import division \n", + "A=[[1/2, 1/3, 1/4],[1/5, 1/6, 1/7],[1/8,1/9, 1/10]] #hilbert's matrix\n", + "de_A=numpy.linalg.det(A)\n", + "if de_A<1:\n", + " print \"A is ill-conditioned\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "A is ill-conditioned\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.11:pg-277" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#ill conditioned linear system\n", + "#example 7.11\n", + "#page 277\n", + "import numpy\n", + "import math\n", + "A=[[25, 24, 10],[66, 78, 37],[92, -73, -80]]\n", + "de_A=numpy.linalg.det(A)\n", + "for i in range(0,2):\n", + " s=0\n", + " for j in range(0,2):\n", + " s=s+A[i][j]**2\n", + " s=math.sqrt(s)\n", + " k=de_A/s\n", + "if k<1:\n", + " print\" the fuction is ill conditioned\"\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " the fuction is ill conditioned\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.12:pg-278" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#ill-conditioned system\n", + "#example 7.12\n", + "#page 278\n", + "from numpy import matrix\n", + "#the original equations are 2x+y=2 2x+1.01y=2.01\n", + "A1=matrix([[2, 1],[2, 1.01]])\n", + "C1=matrix([[2],[2.01]])\n", + "x1=1\n", + "y1=1 # approximate values\n", + "A2=matrix([[2, 1],[2, 1.01]])\n", + "C2=matrix([[3],[3.01]])\n", + "C=C1-C2\n", + "X=A1.I*C\n", + "x=X[0][0]+x1\n", + "y=X[1][0]+y1\n", + "print \"the exact solution is X=%f \\t Y=%f\" %(x,y)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the exact solution is X=0.500000 \t Y=1.000000\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.14:pg-282" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#solution of equations by iteration method\n", + "#example 7.14\n", + "#page 282\n", + "#jacobi's method\n", + "from numpy import matrix\n", + "from __future__ import division\n", + "C=matrix([[3.333],[1.5],[1.4]])\n", + "X=matrix([[3.333],[1.5],[1.4]])\n", + "B=matrix([[0, -0.1667, -0.1667],[-0.25, 0, 0.25],[-0.2, 0.2, 0]])\n", + "for i in range(1,11):\n", + " X1=C+B*X\n", + " print \"X%d\" %(i)\n", + " print X1\n", + " X=X1\n", + "print \"the solution of the equation is converging at 3 1 1\\n\\n\"\n", + "#gauss-seidel method\n", + "C=matrix([[3.333],[1.5],[1.4]])\n", + "X=matrix([[3.333],[1.5],[1.4]])\n", + "B=matrix([[0, -0.1667, -0.1667],[-0.25, 0, 0.25],[-0.2, 0.2, 0]])\n", + "X1=C+B*X\n", + "x=X1[0][0]\n", + "y=X1[1][0]\n", + "z=X1[2][0]\n", + "for i in range(0,5):\n", + " x=3.333-0.1667*y-0.1667*z\n", + " y=1.5-0.25*x+0.25*z\n", + " z=1.4-0.2*x+0.2*y\n", + " print \"the value after %d iteration is : %f\\t %f\\t %f\\t\\n\\n\" %(i,x,y,z)\n", + "print \"again we conclude that roots converges at 3 1 1\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "X1\n", + "[[ 2.84957]\n", + " [ 1.01675]\n", + " [ 1.0334 ]]\n", + "X2\n", + "[[ 2.99124 ]\n", + " [ 1.0459575]\n", + " [ 1.033436 ]]\n", + "X3\n", + "[[ 2.9863651]\n", + " [ 1.010549 ]\n", + " [ 1.0109435]]\n", + "X4\n", + "[[ 2.9960172 ]\n", + " [ 1.0061446 ]\n", + " [ 1.00483678]]\n", + "X5\n", + "[[ 2.9977694 ]\n", + " [ 1.00220489]\n", + " [ 1.00202548]]\n", + "X6\n", + "[[ 2.9988948 ]\n", + " [ 1.00106402]\n", + " [ 1.0008871 ]]\n", + "X7\n", + "[[ 2.99927475]\n", + " [ 1.00049808]\n", + " [ 1.00043384]]\n", + "X8\n", + "[[ 2.99944465]\n", + " [ 1.00028977]\n", + " [ 1.00024467]]\n", + "X9\n", + "[[ 2.99951091]\n", + " [ 1.0002 ]\n", + " [ 1.00016902]]\n", + "X10\n", + "[[ 2.99953848]\n", + " [ 1.00016453]\n", + " [ 1.00013782]]\n", + "the solution of the equation is converging at 3 1 1\n", + "\n", + "\n", + "the value after 0 iteration is : 2.991240\t 1.010540\t 1.003860\t\n", + "\n", + "\n", + "the value after 1 iteration is : 2.997200\t 1.001665\t 1.000893\t\n", + "\n", + "\n", + "the value after 2 iteration is : 2.999174\t 1.000430\t 1.000251\t\n", + "\n", + "\n", + "the value after 3 iteration is : 2.999486\t 1.000191\t 1.000141\t\n", + "\n", + "\n", + "the value after 4 iteration is : 2.999545\t 1.000149\t 1.000121\t\n", + "\n", + "\n", + "again we conclude that roots converges at 3 1 1\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.16:pg-286" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#largest eigenvalue and eigenvectors\n", + "#example 7.16\n", + "#page 286\n", + "from numpy import matrix\n", + "A=matrix([[1,6,1],[1,2,0],[0,0,3]])\n", + "I=matrix([[1],[0],[0]]) #initial eigen vector\n", + "X0=A*I\n", + "print \"X0=\"\n", + "print X0\n", + "X1=A*X0\n", + "print \"X1=\"\n", + "print X1\n", + "X2=A*X1\n", + "print \"X2=\"\n", + "print X2\n", + "X3=X2/3\n", + "print \"X3=\"\n", + "print X3\n", + "X4=A*X3\n", + "X5=X4/4\n", + "print \"X5=\"\n", + "print X5\n", + "X6=A*X5;\n", + "X7=X6/(4*4)\n", + "print \"X7=\"\n", + "print X7\n", + "print \"as it can be seen that highest eigen value is 4 \\n\\n the eigen vector is %d %d %d\" %(X7[0],X7[1],X7[2])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "X0=\n", + "[[1]\n", + " [1]\n", + " [0]]\n", + "X1=\n", + "[[7]\n", + " [3]\n", + " [0]]\n", + "X2=\n", + "[[25]\n", + " [13]\n", + " [ 0]]\n", + "X3=\n", + "[[8]\n", + " [4]\n", + " [0]]\n", + "X5=\n", + "[[8]\n", + " [4]\n", + " [0]]\n", + "X7=\n", + "[[2]\n", + " [1]\n", + " [0]]\n", + "as it can be seen that highest eigen value is 4 \n", + "\n", + " the eigen vector is 2 1 0\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex7.17:pg-290" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#housrholder's method\n", + "#example 7.17\n", + "#page 290\n", + "from numpy import matrix\n", + "from __future__ import division\n", + "import math\n", + "A=[[1, 3, 4],[3, 2, -1],[4, -1, 1]]\n", + "print A[1][1]\n", + "S=math.sqrt(A[0][1]**2+A[0][2]**2)\n", + "v2=math.sqrt((1+A[0][1]/S)/2)\n", + "v3=A[0][2]/(2*S)\n", + "v3=v3/v2\n", + "V=matrix([[0],[v2],[v3]])\n", + "P1=matrix([[1, 0, 0],[0, 1-2*v2**2, -2*v2*v3],[0, -2*v2*v3, 1-2*v3**2]])\n", + "A1=P1*A*P1\n", + "print \"the reduced matrix is \\n\\n\"\n", + "print A1\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n", + "the reduced matrix is \n", + "\n", + "\n", + "[[ 1.00000000e+00 -5.00000000e+00 -8.88178420e-16]\n", + " [ -5.00000000e+00 4.00000000e-01 2.00000000e-01]\n", + " [ -8.88178420e-16 2.00000000e-01 2.60000000e+00]]\n" + ] + } + ], + "prompt_number": 35 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter8_11.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter8_11.ipynb new file mode 100644 index 00000000..f9594f07 --- /dev/null +++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter8_11.ipynb @@ -0,0 +1,1093 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:2931d18383652f9ddbbffb4012198b4962547d461a3374ea2ad7fe562dec2ad9" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter08:Numerical Solution of Ordinary Differential Equations" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex8.1:pg-304" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 8.1\n", + "#taylor's method\n", + "#page 304\n", + "import math\n", + "f=1 #value of function at 0\n", + "def f1(x):\n", + " return x-f**2\n", + "def f2(x):\n", + " return 1-2*f*f1(x)\n", + "def f3(x):\n", + " return -2*f*f2(x)-2*f2(x)**2\n", + "def f4(x):\n", + " return -2*f*f3(x)-6*f1(x)*f2(x)\n", + "def f5(x):\n", + " return -2*f*f4(x)-8*f1(x)*f3(x)-6*f2(x)**2\n", + "h=0.1 #value at 0.1\n", + "k=f \n", + "for j in range(1,5):\n", + " if j==1:\n", + " k=k+h*f1(0);\n", + " elif j==2:\n", + " k=k+(h**j)*f2(0)/math.factorial(j)\n", + " elif j ==3:\n", + " k=k+(h**j)*f3(0)/math.factorial(j)\n", + " elif j ==4:\n", + " k=k+(h**j)*f4(0)/math.factorial(j)\n", + " elif j==5:\n", + " k=k+(h**j)*f5(0)/math.factorial(j)\n", + "print \"the value of the function at %.2f is :%0.4f\" %(h,k)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value of the function at 0.10 is :0.9113\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex8.2:pg-304" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#taylor's method\n", + "#example 8.2\n", + "#page 304\n", + "import math\n", + "f=1 #value of function at 0\n", + "f1=0 #value of first derivatie at 0\n", + "def f2(x):\n", + " return x*f1+f\n", + "def f3(x):\n", + " return x*f2(x)+2*f1\n", + "def f4(x):\n", + " return x*f3(x)+3*f2(x)\n", + "def f5(x):\n", + " return x*f4(x)+4*f3(x)\n", + "def f6(x):\n", + " return x*f5(x)+5*f4(x)\n", + "h=0.1 #value at 0.1\n", + "k=f\n", + "for j in range(1,6):\n", + " if j==1:\n", + " k=k+h*f1\n", + " elif j==2:\n", + " k=k+(h**j)*f2(0)/math.factorial(j)\n", + " elif j ==3:\n", + " k=k+(h**j)*f3(0)/math.factorial(j)\n", + " elif j ==4:\n", + " k=k+(h**j)*f4(0)/math.factorial(j)\n", + " elif j==5:\n", + " k=k+(h**j)*f5(0)/math.factorial(j)\n", + " else:\n", + " k=k+(h**j)*f6(0)/math.factorial (j)\n", + "print \"the value of the function at %.2f is :%0.7f\" %(h,k)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "the value of the function at 0.10 is :1.0050125\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex8.3:pg-306" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 8.3\n", + "#picard's method\n", + "#page 306\n", + "from scipy import integrate\n", + "from __future__ import division\n", + "def f(x,y):\n", + " return x+y**2\n", + "y=[0,0,0,0]\n", + "y[1]=1\n", + "for i in range(1,3):\n", + " a=integrate.quad(lambda x:x+y[i]**2,0,i/10)\n", + " y[i+1]=a[0]+y[1]\n", + " print \"\\n y (%g) = %g\\n\" %(i/10,y[i+1])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + " y (0.1) = 1.105\n", + "\n", + "\n", + " y (0.2) = 1.26421\n", + "\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex8.4:pg-306" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 8.4\n", + "#picard's method\n", + "#page 306\n", + "from scipy import integrate\n", + "y=[0,0,0,0] #value at 0\n", + "c=0.25\n", + "for i in range(0,3):\n", + " a=integrate.quad(lambda x:(x**2/(y[i]**2+1)),0,c)\n", + " y[i+1]=y[0]+a[0]\n", + " print \"\\n y(%0.2f) = %g\\n\" %(c,y[i+1])\n", + " c=c*2" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + " y(0.25) = 0.00520833\n", + "\n", + "\n", + " y(0.50) = 0.0416655\n", + "\n", + "\n", + " y(1.00) = 0.332756\n", + "\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex8.5:pg-308" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 8.5\n", + "#euler's method\n", + "#page 308\n", + "def f(y):\n", + " return -1*y\n", + "y=[0,0,0,0,0]\n", + "y[0]=1 #value at 0\n", + "h=0.01\n", + "c=0.01\n", + "for i in range(0,4):\n", + " y[i+1]=y[i]+h*f(y[i])\n", + " print \"\\ny(%g)=%g\\n\" %(c,y[i+1])\n", + " c=c+0.01\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "y(0.01)=0.99\n", + "\n", + "\n", + "y(0.02)=0.9801\n", + "\n", + "\n", + "y(0.03)=0.970299\n", + "\n", + "\n", + "y(0.04)=0.960596\n", + "\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex8.6:pg-308" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#example 8.6\n", + "#error estimates in euler's \n", + "#page 308\n", + "import math\n", + "from __future__ import division\n", + "def f(y):\n", + " return -1*y\n", + "y=[0,0,0,0,0]\n", + "L=[0,0,0,0,0]\n", + "e=[0,0,0,0,0]\n", + "y[0]=1 #value at 0\n", + "h=0.01\n", + "c=0.01;\n", + "for i in range(0,4):\n", + " y[i+1]=y[i]+h*f(y[i])\n", + " print \"\\ny(%g)=%g\\n\" %(c,y[i+1])\n", + " c=c+0.01\n", + "for i in range(0,4):\n", + " L[i]=abs(-(1/2)*(h**2)*y[i+1])\n", + " print \"L(%d) =%f\\n\\n\" %(i,L[i])\n", + "e[0]=0\n", + "for i in range(0,4):\n", + " e[i+1]=abs(y[1]*e[i]+L[0])\n", + " print \"e(%d)=%f\\n\\n\" %(i,e[i])\n", + "Actual_value=math.exp(-0.04)\n", + "Estimated_value=y[4]\n", + "err=abs(Actual_value-Estimated_value)\n", + "if err No=G⇤F⇤k⇤To⇤B.so in dbm it will be\n", + "No=20+3.5+10*log10((k*To*B)/0.001);\n", + "DR=10-No;\n", + "print \"the dynamic range in dB = %.3f\"%DR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:10.3 page.no:558" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the noise figure of the cascade in dB = 2.0\n", + "the noise figure of the amplifier in dB = 0.0\n", + "the noise figure of the line in dB = 2.0\n" + ] + } + ], + "source": [ + "# program to calculate the noise figure ig anteena is replaced by amplifier .\n", + "from math import log10\n", + "\n", + "L=10**0.2;T=300;To=290;Te=150;\n", + "Fl=1+(L-1.)*(T/To);\n", + "Fld=10.*log10(Fl); # converting in to dBm.\n", + "Fa=1.+(Te/To)\n", + "Fad=10.*log10(Fa);# converting in to dBm.\n", + "Fcas=Fl+L*(Fa-1.);\n", + "Fcasd=10*log10(Fcas);# converting in to dBm.\n", + "print \"the noise figure of the cascade in dB = \",Fcasd\n", + "print \"the noise figure of the amplifier in dB = \",Fad\n", + "print \"the noise figure of the line in dB = \",Fld" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:10.4 page.no:562" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "junction resistance for Io=0, in ohm = 250000.0\n", + "junction resistance for Io=0, in ohm = 415.973\n" + ] + } + ], + "source": [ + "#program to calculate the impedence of the diode. 70\n", + "\n", + "Cp=0.1e-12;Lp=2e-9;Cj=0.15e-12;Rs=10.;Is =0.1e-6;\n", + "Io1=0.;Io2=60e-6;alpha=0.04e3;\n", + "R1j=1./(alpha*(Io1+Is)); # for Io=0.\n", + "R2j=1./(alpha*(Io2+Is)); # for Io=60 mA.\n", + "print \"junction resistance for Io=0, in ohm = \",R1j \n", + "print \"junction resistance for Io=0, in ohm = %.3f\"%R2j" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:10.5 page.no:579" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for series circuit = 0.49\n", + "for series circuit = 10.16\n", + "for shunt circuit = 0.03\n", + "for shunt circuit = 7.62\n" + ] + } + ], + "source": [ + "# program to obtain the greatest ratio of off to on attenuation .\n", + "from math import pi,log10\n", + "from sympy import I\n", + "\n", + "Cj=0.1*10**-12;Rr=1;Rf=5;\n", + "Li=0.4*10**-9;f=5*10**9;Zo=50;\n", + "w=2*pi*f;\n", + "Zr=Rr+I*((w*Li)-(1/(w*Cj)));\n", + "Zf=Rf+(I*w*Li);\n", + "# for series circuit .\n", + "ILon=-20*log10(abs((2*Zo)/(2*Zo+Zf)));\n", + "ILoff=-20*log10(abs((2*Zo)/(2*Zo+Zr)));\n", + "# for shunt circuit .\n", + "ILon1=-20*log10(abs((2*Zr)/(2*Zr+Zo)));\n", + "ILoff1=-20*log10(abs((2*Zf)/(2*Zf+Zo)));\n", + "print \"for series circuit = %.2f\"%ILon\n", + "print \"for series circuit = %.2f\"%ILoff\n", + "print \"for shunt circuit = %.2f\"%ILon1\n", + "print \"for shunt circuit = %.2f\"%ILoff1" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_4.ipynb new file mode 100644 index 00000000..bd76d16b --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_4.ipynb @@ -0,0 +1,264 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 12 INTRODUCTION TO MICROWAVE SYSTEMS" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.1 page.no:660" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the radiation intensity is given by = Io*ko*l*no*r*exp(-I*ko*r)*exp(I*conjugate(ko)*conjugate(r))*sin(theta)*sin(conjugate(theta))*conjugate(Io)*conjugate(ko)*conjugate(l)/(16*pi**2*conjugate(r))\n", + "directivity is given by = 3/2\n", + "the effective area of the dipole = 3*lamda**2/(8*pi)\n" + ] + } + ], + "source": [ + "#program to compute directivity , radiation intensity,F,the effective area.\n", + "from sympy import symbols,conjugate,integrate,sin,I,exp,pi\n", + "\n", + "Etheta,Hphi,ko,no,Io,l,r,theta,C,phi,lamda=symbols('Etheta,Hphi,ko,no,Io,l,r,theta,C,phi,lamda')\n", + "Etheta=((I*ko*no*Io*l)/(4*pi*r))*sin(theta)*exp(-I*ko*r);\n", + "Hphi=((I*ko*Io*l)/(4*pi*r))*sin(theta)*exp(-I*ko*r);\n", + "F=(r**2)*(Etheta*conjugate(Hphi));\n", + "Prad=C*integrate(integrate(sin(theta)**3,(theta,0,pi)),(phi,0,2*pi));\n", + "Prad=8*pi*C/3; \n", + "D=4*pi*C/Prad;\n", + "Ac=((lamda**2)*D)/(4*pi);\n", + "print \"the radiation intensity is given by = \",F\n", + "print \"directivity is given by = \",D\n", + "print \"the effective area of the dipole = \",Ac" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.2 page.no:666" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "received power in dBm will be = -75.31\n" + ] + } + ], + "source": [ + "# program to find the reactive power in dbm.\n", + "from math import pi,log10\n", + "\n", + "Pt=120;f=6*10**9;\n", + "Gt =10**4.2; Gr =10**3.1;\n", + "lamda=0.05;R=3.59*10**7;\n", + "Pr=(Pt*Gt*Gr*(lamda**2))/((4*pi*R)**2);\n", + "Pr=10*log10(Pr/0.001);\n", + "print \"received power in dBm will be = %.2f\"%Pr" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.3 page.no:669" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "input SNR in dB = 35.38\n", + "output SNR in dB = 29.78\n" + ] + } + ], + "source": [ + "# program to calculate the input and output SNR.\n", + "from math import log10\n", + "\n", + "f=4*10**9;B=1*10**6;Grf=10**2;Gif=10**3;\n", + "Lt=10**0.15;Lm=10**0.6;To=290;\n", + "Fm=10**0.7;Tm=(Fm-1)*To;Tp=300;Tb=200;eta=0.9;\n", + "Frf=10**0.3;Fif=10**0.11;k=1.38*10**-23;\n", + "Trf=(Frf-1)*To;\n", + "Tif=(Fif-1)*To;\n", + "Trec=Trf+(Tm/Grf)+((Tif*Lm)/Grf);\n", + "Ttl=(Lt-1)*Tp;\n", + "Ta=eta*Tb+(1-eta)*Tp;\n", + "Ni=k*B*Ta;\n", + "Ni=10*log10(Ni/0.001); # converting in to dBm.\n", + "si=-80; # in dBm.\n", + "SNRi=si-Ni; # input SNR.\n", + "Tsys=Ta+Ttl+Lt*Trec;\n", + "SNRo=si-10*log10((k*B*Tsys)/0.001);\n", + "print \"input SNR in dB = %.2f\"%SNRi\n", + "print \"output SNR in dB = %.2f\"%SNRo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.4 page.no:675" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the maximum range of the radar in meter = 8113.46\n" + ] + } + ], + "source": [ + "# program to find the maximum range of radar.\n", + "from math import pi\n", + "\n", + "G=10**2.8;Pt=2000;sigma=12;\n", + "Pmin =10**-12; lamda =0.03;\n", + "Rmax=((Pt*(G**2)*sigma*(lamda**2))/(((4*pi)**3)*Pmin))**(0.25);\n", + "print \"the maximum range of the radar in meter = %.2f\"%Rmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.5 page.no:693" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "THE J/S ration for the SSJ case in dB is = 16.50\n", + "THE J/S ratio for the SOJ case in dB is = 0.01\n" + ] + } + ], + "source": [ + "# program to find the J/S ratio.\n", + "from math import pi,log10\n", + "\n", + "Gr=3162;Pj=1000.;R=3000.;Br=1e6;Bj=20e6;\n", + "Gj=10.;lamda=0.03;Pt=1e5;sigma=4.;Rj=10000.;\n", + "x=(Pj/Pt)*((4.*pi*(R**2)*Gj)/(sigma*Gr))*(Br/Bj); #x=J/S\n", + "x=10.*log10(x);\n", + "Grsl=10**(3.5-2);# radar anteena gain in its sidelobe region .\n", + "x1=(Pj/Pt)*(((R**4)*Gj*Grsl)/((Gr**2)*(Rj**2)))*(Br/Bj) ;\n", + "#x1=10*log10(x1);\n", + "print \"THE J/S ration for the SSJ case in dB is = %.2f\"%x\n", + "print \"THE J/S ratio for the SOJ case in dB is = %.2f\"%x1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 12.6 page.no:695" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the power density in the main beam of the anteena at a distance of 20 m in mw/cmˆ2 = 1.0\n" + ] + } + ], + "source": [ + "# program to calculate the power density of 20 m from the anteena .\n", + "from math import pi\n", + "\n", + "G=10**4;Pin=5;R=20;\n", + "S=(Pin*G)/(4*pi*(R**2))*0.1;\n", + "print \"the power density in the main beam of the anteena at a distance of 20 m in mw/cmˆ2 = %.1f\"%S" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_4.ipynb new file mode 100644 index 00000000..2d841a1c --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_4.ipynb @@ -0,0 +1,298 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1 ELECTROMAGNETIC THEORY" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example 1.1,page no.17" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "phase velocity in meter per second= 6.54e+07 \n", + "wavelength in meter= 2.18e-02 \n", + "wave impedence in ohm= 2.47e+02 \n" + ] + } + ], + "source": [ + "# program to calculate wavelength , phase velocity and wave impedence .\n", + "from math import pi,sqrt\n", + "\n", + "f=3*10**9;\n", + "mur =3;\n", + "muo =4*pi*10**-7;\n", + "eipsilao =8.854*10**-12;\n", + "eipsilar =7;\n", + "mue=muo*mur;\n", + "eipsila=eipsilao*eipsilar;\n", + "Vp=sqrt(1/(mue*eipsila));\n", + "lamda=Vp/f;\n", + "eta=sqrt(mue/eipsila);\n", + "#Result\n", + "print\"phase velocity in meter per second= %.2e \"%Vp;\n", + "# phase velocity .\n", + "print\"wavelength in meter= %.2e \"%lamda # wavelength.\n", + "print\"wave impedence in ohm= %.2e \"%eta # wave impedence ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.2 page no.−20" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "skin depth of aluminium in meter=8.15e-07 \n", + "skin depth of copper in meter= 6.60e-07\n", + "skin depth of gold in meter= 7.86e-07\n", + "skin depth of silver in meter= 6.41e-07\n" + ] + } + ], + "source": [ + "# progarm to find out skin depth of aluminium, copper , gold and silver at frequency 10GHZ.\n", + "from math import sqrt\n", + "\n", + "f=10*10**9;\n", + "muo=4*pi*10**-7; # permeability in free space.\n", + "omega=2*pi*f;\n", + "sigma_aluminium =3.816*10**7;\n", + "sigma_copper =5.813*10**7;\n", + "sigma_gold =4.098*10**7;\n", + "sigma_silver =6.173*10**7;\n", + "delta1=sqrt(2/(omega*muo*sigma_aluminium));\n", + "delta2=sqrt(2/(omega*muo*sigma_copper));\n", + "delta3=sqrt(2/(omega*muo*sigma_gold));\n", + "delta4=sqrt(2/(omega*muo*sigma_silver));\n", + "#result\n", + "print\"skin depth of aluminium in meter=%.2e \"%delta1; # skin depth of aluminium\n", + "print\"skin depth of copper in meter= %.2e\"%delta2; # skin depth of copper .\n", + "print\"skin depth of gold in meter= %.2e\"%delta3; #skin depth of gold .\n", + "print\"skin depth of silver in meter= %.2e\"%delta4; # skin depth of silver ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.3 page no.−24" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for z<0, E1= A*N*x*exp(I*ko*z)\n", + "for z<0, H1= -A*N*y*exp(I*ko*z)\n", + "for z>0, E2= B*N*x*exp(-I*ko*z)\n", + "for z>0, H2= B*N*y*exp(-I*ko*z)\n", + "Matrix([[-Jo/2], [-Jo/2]])\n" + ] + } + ], + "source": [ + "#program to find the resulting fields by assuming plane waves on either side of the current sheet and enforcing the boundary conditions.\n", + "from sympy import symbols,Matrix,exp,I\n", + "\n", + "E,x,E1,E2,H1,H2,z,Jo,A,B,N,n,ko,y,l,m = symbols('E,x,E1,E2,H1,H2,z,Jo,A,B,N,n,ko,y,l,m');\n", + "E1=A*N*exp(I*ko*z)*x; # x component of elec tricfield (region z<0).\n", + "H1=A*N*exp(I*ko*z)*(-y); # y component of magnetic field (region z<0).\n", + "E2=B*N*exp(-I*ko*z)*x;# x component of electric field (region z>0).\n", + "H2=B*N*exp(-I*ko*z)*y; # y component of electric field (region z>0).\n", + "print \"for z<0, E1=\",E1\n", + "print \"for z<0, H1=\",H1\n", + "print \"for z>0, E2=\",E2\n", + "print \"for z>0, H2=\",H2\n", + "#from boundary conditions\n", + "c=Matrix([[-1,-1],[1,-1]]);\n", + "d=Matrix([[A],[B]]);\n", + "d=c.inv()*Matrix([[Jo],[0]]);\n", + "print d;\n", + "#result\n", + "# A=−Jo/2; B=−Jo/2." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.4 page no.−38." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "skin depth in meter= 2.087e-06\n", + "propagation comstant = 479049.101381194 + 479049.101381194*I\n", + "intrinsic impedence in ohm= 0.00824099606711155 + 0.00824099606711155*I\n", + "reflection coefficient= (-376.991759003933 + 0.00824099606711155*I)/(377.008240996067 + 0.00824099606711155*I)\n", + "transmission coefficient= (0.0164819921342231 + 0.0164819921342231*I)/(377.008240996067 + 0.00824099606711155*I)\n" + ] + } + ], + "source": [ + "# program to compute propagation constan , impedence , skin depth , reflection and transmission coefficient\n", + "from sympy import I\n", + "from numpy import pi,sqrt\n", + "\n", + "f=1*10**9;\n", + "omega=2*pi*f;\n", + "sigma=5.813*10**7; # for copper .\n", + "mue=4*pi*10**-7; # permeability in free space.\n", + "delta=sqrt(2/(mue*sigma*omega)); # skin depth .\n", + "gama=((1+I)/delta); # propagation constant .\n", + "eta=gama/sigma; # impedence\n", + "etao=377; # intrinsic impedence in free space .\n", + "tao=((eta-etao)/(eta+etao)); # reflection coefficient .\n", + "t=(2*eta)/(eta+etao); # transmission coefficient\n", + "# result\n", + "print \"skin depth in meter= %.3e\"%delta\n", + "print \"propagation comstant =\",gama\n", + "print \"intrinsic impedence in ohm=\",eta\n", + "print \"reflection coefficient=\",tao\n", + "print \"transmission coefficient= \",t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:−1.5 page no.−42." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The wave impendaces are 377 ohm , 236 ohm\n" + ] + }, + { + "data": { + "image/png": "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\nfzl2Kjb4AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# example:−2.7.page no.−50.\n", + "# program to plot the reflection coefficients for parallel and perpendicular polarized plane waves incident from free space on to a dielectric region with Er=2.55,versus incidence angle.\n", + "\n", + "%matplotlib inline\n", + "from pylab import plot,subplot,title,xlabel,ylabel\n", + "from sympy import acos,asin\n", + "import numpy as n\n", + "import math as m\n", + "\n", + "Er=2.55; # relaitve permittivity of dielectric medium .\n", + "N1=377.; # intrinsic impedence\n", + "N2=N1/m.sqrt(Er); # intrinsic impedence of dielectric medium.\n", + "xb=asin(m.sqrt(1./(1.+1/2.55)));# brewster angle valid only in case of parallel polarization.\n", + "xt=acos(m.sqrt(1.-(1./Er)**2.*m.sin(xb))); # angle of transmission .\n", + "xi=n.arange(0,m.pi/2,0.05); # incidence\n", + "print \"The wave impendaces are %d ohm , %d ohm\"%(N1,N2)\n", + "# for parallel polarization angle .\n", + "N2=N2*m.cos(xt);\n", + "N1=N1*n.cos(xi);\n", + "Tpar=(N2-N1)/(N2+N1);\n", + "w=abs(Tpar);\n", + "\n", + "# result\n", + "subplot(121)\n", + "title ('parallel polarization');\n", + "xlabel('xi(incidence angle)');\n", + "ylabel('Tpar(reflection coefficient)');\n", + "plot(xi,w)\n", + "# for perpendicular polarization .\n", + "#NOTE:− in case of this polarization . there is no brewster angle .\n", + "xt=acos(n.sqrt(1-(1/Er)**2.*m.sin(xb)));\n", + "n1=377.*m.cos(xt);\n", + "n2=(377/m.sqrt(Er))*n.cos(xi);\n", + "Tper=(n2-n1)/(n1+n2);\n", + "z=abs(Tper);\n", + "#result\n", + "subplot(122)\n", + "\n", + "title ('perpendicular polarization');\n", + "xlabel('xi(incidence angle)');\n", + "#ylabel('Tper(reflection coefficient)');\n", + "plot(xi,z);" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_4.ipynb new file mode 100644 index 00000000..3d028800 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_4.ipynb @@ -0,0 +1,496 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 TRANSMISSION LINE THEORY" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:2.1 page.no:61" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "self inductance in H/m = mue*(-log(a) + log(b))/(4*pi)\n", + "capacitance in F/m = 2*pi*eipsila/(-log(a) + log(b))\n", + "resistance in Ohm/m = Rs*(2*pi/b + 2*pi/a)/(4*pi**2)\n", + "shunt conductance in S/m = 2*pi*eipsila*w/(-log(a) + log(b))\n" + ] + } + ], + "source": [ + "#example:3.1,page no.72.\n", + "# program to determine transmission line parameters\n", + "\n", + "from sympy import symbols,I,conjugate,log,exp,integrate,pi\n", + "\n", + "E,H,Vo,P,a,b,Io,mue,y,z,Q,p,i,L,eipsila,G,C,R,Rs,w=symbols('E,H,Vo,P,a,b,Io,mue,y,z,Q,p,i,L,eipsila,G,C,R,Rs,w');\n", + "E=(Vo/(P*log(b/a)))*exp(-I*y*z); # in radial direction .\n", + "H=(Io/(2*pi*P))*exp(-I*y*z); # in phi direction .\n", + "H=H*conjugate(H)*P;\n", + "Io=2*pi\n", + "E=E*conjugate(E)*P;\n", + "Vo=log(b)-log(a)\n", + "E=1/P**2\n", + "L=(mue/((Io)**2))*integrate(integrate((1/P),(P,a,b)),(Q,pi,2*pi));# surface integral in culindrical coordinate system\n", + "C=(eipsila/(Vo**2))*integrate(integrate(E*P,(P,a,b)),(Q,0,2*pi)); # surface integral in culindrical coordinate systemR=\n", + "R=(Rs/(Io**2))*(integrate((1/a),(Q,0,2*pi))+integrate((1/b),(Q,0,2*pi)))\n", + "G=((w*eipsila)/(Vo**2))*integrate(integrate(1/P,(P,a,b)),(Q,0,2*pi)); # surface integral in culindrical coordinate system\n", + "# result\n", + "print \"self inductance in H/m =\",L\n", + "print \"capacitance in F/m =\",C\n", + "print \"resistance in Ohm/m =\",R\n", + "print \"shunt conductance in S/m =\",G" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.3 page no:77" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reflection coefficient = 0.367607311047\n", + "standing wave ratio = 2.1625919068\n", + "return loss in dB = 8.69231719731\n" + ] + }, + { + "data": { + "image/png": "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\nitggAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# functions\n", + "%matplotlib inline\n", + "import pylab as plb\n", + "import numpy as npy\n", + "from matplotlib.patches import Circle\n", + "\n", + "def smith(smithR=1, chart_type = 'z',ax=None):\n", + " if ax == None:\n", + " ax1 = plb.gca()\n", + " else:\n", + " ax1 = ax\n", + "\n", + " contour = []\n", + " rHeavyList = [0,1]\n", + " xHeavyList = [1,-1]\n", + "\n", + " rLightList = plb.logspace(3,-5,30,base=.5)\n", + " xLightList = plb.hstack([plb.logspace(2,-5,15,base=.5), -1*plb.logspace(2,-5,15,base=.5)]) \n", + " if smithR > 1:\n", + " rMax = (1.+smithR)/(1.-smithR)\n", + " rLightList = plb.hstack([ plb.linspace(0,rMax,11) , rLightList ])\n", + " if chart_type is 'y':\n", + " y_flip_sign = -1\n", + " else:\n", + " y_flip_sign = 1\n", + " for r in rLightList:\n", + " center = (r/(1.+r)*y_flip_sign,0 ) \n", + " radius = 1./(1+r)\n", + " contour.append( Circle( center, radius, ec='blue',fc = 'none'))\n", + " for x in xLightList:\n", + " center = (1*y_flip_sign,1./x)\n", + " radius = 1./x\n", + " contour.append( Circle( center, radius, ec='green',fc = 'none'))\n", + " for r in rHeavyList:\n", + " center = (r/(1.+r)*y_flip_sign,0 )\n", + " radius = 1./(1+r)\n", + " contour.append( Circle( center, radius, ec= 'blue', fc = 'none'))\n", + " for x in xHeavyList:\n", + " center = (1*y_flip_sign,1./x)\n", + " radius = 1./x\t\n", + " contour.append( Circle( center, radius, ec='green',fc = 'none'))\n", + " ax1.axhline(0, color='red')\n", + " ax1.axvline(1*y_flip_sign, color='red')\n", + " ax1.grid(0)\n", + " ax1.axis('equal')\n", + " ax1.axis(smithR*npy.array([-1., 1., -1., 1.]))\n", + " plb.title('Smith chart')\n", + " plb.xlabel('Tao real')\n", + " plb.ylabel('Tao imaginary') \n", + " for currentContour in contour:\n", + " ax1.add_patch(currentContour)\n", + " \n", + "#”Tao Real”,”Tao Imaginary””Tao Real”,”Tao Imaginary” \n", + "# function for reflection coefficient .\n", + "def reflection_coefficient(Zl,Zo): \n", + " tao=(Zl-Zo)/(Zl+Zo);\n", + " return tao;\n", + "\n", + "def VSWR(tao):\n", + " SWR=(1+tao)/(1-tao)\n", + " return SWR;\n", + "\n", + "# program to find out return loss in dB,SWR and reflection coefficient .\n", + "from math import log10\n", + "\n", + "Zl=80-40j; # load impedence .\n", + "Zo=50; # characteristic impedence .\n", + "z=Zl/Zo; # normalized impedence .\n", + "tao=reflection_coefficient(Zl,Zo);\n", + "SWR=VSWR(abs(tao));\n", + "Rl=-20*log10(abs(tao));\n", + "print \"reflection coefficient = \",abs(tao)\n", + "print \"standing wave ratio = \",SWR\n", + "print \"return loss in dB = \",Rl\n", + "smith();\n", + "# when analyse with the help of smith chart . see the angle from x=0 axis i.e Tao real axis.if it is above this axis take angle anticlockwise and if it is below this axis . take angle clockwise from Tao  real axis below ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.4 page no:80" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "load impedence = 50*(1 + 0.2*exp(2.48*I*pi))/(1 - 0.2*exp(2.48*I*pi))\n" + ] + }, + { + "data": { + "image/png": "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\n0WaODf96lHS+hOnT5XCOr2/a+jr77Czzzs1LFx+XtAlKgg47O3D2pdl6ldl1d1euv70+9m+Vijx0\niGzXThyAmTOLrzZHDjks1qmTRAetWCFRJHFrZQxwGsBii4rF/h0SIknv/vyTHD+e7NGDrFlTnMaK\nQpqYSPRYo0aS7C08jn8zKDyIuWfn5uuPr3W+p/HjpaBRSo7diAhxOF+85c95l+fRYakDrWZZsdnm\nZvzl1C/c83APZ6x8xn7fxnHuR//2olRRfOj7kPNPb6Z5559Yb0M95piRg9XXVOeG2xsYGvH5OP7p\n0+Ks1jZEddMmCfF1SuGM2Kmnp1hxZUW9BR9km5aNW+9v1YusEcdG6D0jQp/9fTjhzIRUX//y5T8g\nuokpK4nWAI5G/78WgGtJtEv1G/VfxNnLmfnn5+e0C9MS/aBWrCBLltQubl4btt7bygILCug1SiQG\nj3cezDM7Dx/7P9abzC33trDNlo5ctIh0dBSlkCmTKM3+/SX2/9Mn7WQNOTKEhRcW1qqtSkVevCgK\np0YN0sxMFEeJElKoac6p9ey4s2Oq7kmtFrk1ayafOuWG5w1WntyPWSZasNe+Xrz86nKi78eRI2TL\nuEdVEvz29uwh27aV/0eponjY/TBbb2tN6znWHH1iND3ePWa1apJ1NSWiosiff5ZcTi5arDNUahUd\nljroLVOs2VQz7nmYMO2t7qjVahZbXEyn3FopceLJCRZaWIgfwz6mSc4XryQA7ADgBSAC4nv4DsAg\nAIPitFkG4AkkBLZqEnLS9Eb9F3kT+IY11tZgtz3dYlMKnzkjYa5Pn+q3rwVXFrD0stLJ1tpNi+z6\nG+rr5eDgkSNk+cqfiGzvmM08io0akdu3p7729LhT42g71zbV47l4kezcWXYayBxM6yLeXLgwdeNR\nq6WeeK9eic+4uPq5sv6G+iyyqAjHH5lFC3tffkxi7rl9W+LvY0nw2xs3TkrTJuTp+6cce3Isc021\noeWAr+kdmHzR6w8fRBk1bap9JUNS8jp9e+Bb7S9IBtM/THnmWTIx31ri4uPCQgsL6W2H8zHsIwst\nLMQTT06kWdYXryT09TAqidTxKfITe+/rzSqrqvDve6+YNy959mz69DX25FjWWldL66Rs2hKlimLd\n9XW5+NriVF0fEiKrVSsrMffUq0fWnt0vnskptWy4vYHm083TLOdN4BvmmliYXbpGMWtWMmtWSez2\n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\nZGRkNPL/f73qscY1aEcAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#function:\n", + "import pylab as plb\n", + "import numpy as npy\n", + "from matplotlib.patches import Circle\n", + "\n", + "def smith(smithR=1, chart_type = 'z',ax=None):\n", + " if ax == None:\n", + " ax1 = plb.gca()\n", + " else:\n", + " ax1 = ax\n", + "\n", + " contour = []\n", + " rHeavyList = [0,1]\n", + " xHeavyList = [1,-1]\n", + "\n", + " rLightList = plb.logspace(3,-5,30,base=.5)\n", + " xLightList = plb.hstack([plb.logspace(2,-5,15,base=.5), -1*plb.logspace(2,-5,15,base=.5)]) \n", + " if smithR > 1:\n", + " rMax = (1.+smithR)/(1.-smithR)\n", + " rLightList = plb.hstack([ plb.linspace(0,rMax,11) , rLightList ])\n", + " if chart_type is 'y':\n", + " y_flip_sign = -1\n", + " else:\n", + " y_flip_sign = 1\n", + " for r in rLightList:\n", + " center = (r/(1.+r)*y_flip_sign,0 ) \n", + " radius = 1./(1+r)\n", + " contour.append( Circle( center, radius, ec='blue',fc = 'none'))\n", + " for x in xLightList:\n", + " center = (1*y_flip_sign,1./x)\n", + " radius = 1./x\n", + " contour.append( Circle( center, radius, ec='green',fc = 'none'))\n", + " for r in rHeavyList:\n", + " center = (r/(1.+r)*y_flip_sign,0 )\n", + " radius = 1./(1+r)\n", + " contour.append( Circle( center, radius, ec= 'blue', fc = 'none'))\n", + " for x in xHeavyList:\n", + " center = (1*y_flip_sign,1./x)\n", + " radius = 1./x\t\n", + " contour.append( Circle( center, radius, ec='green',fc = 'none'))\n", + " ax1.axhline(0, color='red')\n", + " ax1.axvline(1*y_flip_sign, color='red')\n", + " ax1.grid(0)\n", + " ax1.axis('equal')\n", + " ax1.axis(smithR*npy.array([-1., 1., -1., 1.]))\n", + " plb.title('Smith chart')\n", + " plb.xlabel('Tao real')\n", + " plb.ylabel('Tao imaginary') \n", + " for currentContour in contour:\n", + " ax1.add_patch(currentContour)\n", + "\n", + "\n", + "# NOTE:-this example is a method for calculating unknown load impedence of slotted line section. all data are given and preassumed.\n", + "# program to determine unknown load impedence.\n", + "from sympy import I,oo,pi,exp,symbols\n", + "\n", + "y=symbols('y')\n", + "Zl=0;Zo=50; # for short circuitting the load.\n", + "SWR=oo\n", + "# short circuit is removed and replace with unknown load .\n", + "SWR =1.5; lamda =0.04;\n", + "lmin =4.2 -2.72;\n", + "tao=(1.5-1)/(1.5+1);\n", + "theta=(pi+((4*pi)/4)*1.48);\n", + "tao=abs(tao)*exp(I*theta);\n", + "Zl=50*((1+tao)/(1-tao));\n", + "# result\n", + "print \"load impedence = \",Zl\n", + "smith(2,y)\n", + "# when analyse with the help of smith chart . see angle from x=0 axis i.e Tao real axis.if it is above this axis take angle anticlockwise and if it is below this axis . take angle clockwise from Tao  real axis below ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.5 page no:84" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "characteristic impedence of the matching section= 70.7106781187\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# program to find out characteristic impedence and plot the magnitude of reflection coefficient versus normalized frequency .\n", + "%matplotlib inline\n", + "from sympy import symbols,I\n", + "from pylab import arange,plot,title,xlabel,ylabel,axis\n", + "from math import pi\n", + "from numpy import sin,cos,sqrt,real,imag\n", + "\n", + "Zl=100;# load impedence\n", + "Zi=50;#impedence of line which is to be matched\n", + "#as it is a quarter wave transformer so , Zi=(Zo)ˆ2/zl;\n", + "Zo=sqrt(Zi*Zl);\n", + "print \"characteristic impedence of the matching section= \",Zo\n", + "f,fo,x=symbols('f,fo,x');\n", + "x=f/fo;\n", + "x=arange(0,4,0.001)\n", + "y=(pi/2)*(x);\n", + "Zin=Zo*(((Zl*cos(y))+(Zo*I*sin(y)))/((Zo*cos(y))+(Zl*I*sin(y))))\n", + "tao=((Zin-Zo)/(Zin+Zo));\n", + "tao=abs(tao)\n", + "plot(x,tao)\n", + "axis([0,4,0,1])\n", + "title (\"reflection coefficient versus normalized frequency for quarter wave transformer\")\n", + "xlabel(\"f/fo\")\n", + "ylabel(\"tao(reflection coefficient)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.6 page no:92" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "attenuation constant = Rs*sqrt(eipsila*pi**2/(mue*log(b/a)**2))*(1/b + 1/a)/(2*pi) + eipsilac*pi*w*sqrt(mue*log(b/a)**2/(eipsila*pi**2))/(2*log(b/a))\n" + ] + } + ], + "source": [ + "# program to calculate attenuation constant.\n", + "from sympy import symbols,sqrt,log\n", + "\n", + "alpha,R,Rs,L,G,C,eta,a,b,w,pi,eipsila,eipsilac,mue,eta=symbols('alpha,R,Rs,L,G,C,eta,a,b,w,pi,eipsila,eipsilac,mue,eta')\n", + "eta=sqrt(mue/eipsila);\n", + "L=(mue/(2*pi))*(log(b/a));\n", + "C=(2*pi*eipsila)/log(b/a);\n", + "R=(Rs/(2*pi))*((1/a)+(1/b));\n", + "G=(2*pi*w*eipsilac)/log(b/a);\n", + "alpha=(R*sqrt(C/L)+G*sqrt(L/C))/2;\n", + "print \"attenuation constant = \",alpha" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.7 page no:95" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "power flowing on the lossless line = Vo**2/(2*Zo) \n", + "\n", + "conductor loss = Rs*Vo*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))/(4*P*Zo*conjugate(Zo)*conjugate(pi)) \n", + "\n", + "dielectric loss = Vo*eipsila*pi*w*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))*Integral(1/conjugate(P), (P, a, b))/((log(a) - log(b))*(conjugate(log(a)) - conjugate(log(b)))) \n", + "\n", + "attenuation constant = Zo*(Vo*eipsila*pi*w*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))*Integral(1/conjugate(P), (P, a, b))/((log(a) - log(b))*(conjugate(log(a)) - conjugate(log(b)))) + Rs*Vo*conjugate(Vo)*Integral(exp(-I*B*z)*exp(I*conjugate(B)*conjugate(z)), (z, 0, 1))/(4*P*Zo*conjugate(Zo)*conjugate(pi)))/Vo**2 \n", + "\n" + ] + } + ], + "source": [ + "# program to find ht eattenuation constant of coaxial line .\n", + "from sympy import symbols,log,I,integrate,conjugate\n", + "\n", + "E,H,Vo,Zo,P,a,b,B,z,pi,Po,Q,Rs,Plc,alpha,Pld,w,eipsila=symbols('E,H,Vo,Zo,P,a,b,B,z,pi,Po,Q,Rs,Plc,alpha,Pld,w,eipsila')\n", + "#Zo=(eta/(2⇤pi))⇤log(b/a);\n", + "E=(Vo/(P*(log(b)-log(a))))*exp(-I*B*z);\n", + "H=(Vo/(2*pi*P*Zo))*exp(-I*B*z);\n", + "H=conjugate(H)*P; # for defining E cross H⇤.\n", + "Po=(1/2)*integrate(integrate((E*H),(P,0,2*pi)),(Q,a,b));\n", + "Po=Vo**2/(2*Zo)\n", + "print \"power flowing on the lossless line = \",Po,\"\\n\"\n", + "H=(H*conjugate(H))/P; # for defining |H|ˆ2(;)\n", + "Plc=(Rs/2)*integrate(integrate(H,(z,0,1)),(Q,0,2*pi));\n", + "print \"conductor loss = \",Plc,\"\\n\"\n", + "E=E*conjugate(E)*P;\n", + "Pld=((w*eipsila)/2)*integrate(integrate(integrate(E,(P,a,b)),(Q,0,2*pi)),(z,0,1));\n", + "print \"dielectric loss = \",Pld,\"\\n\"\n", + "alpha=(Pld+Plc)/(2*Po); # attenuation\n", + "#B=beta . constant .\n", + "print \"attenuation constant = \",alpha,\"\\n\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:2.8 page no:97" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "attenuation due to conductor loss = Rs*(1/b + 1/a)/(2*eta*pi*log(b/a)) \n", + "\n", + "attenuation corrected for surface roughness = Rs*(1 + 2*atan(0.7*sqrt(2)*delta/sqrt(1/(mue*sigma*w)))/pi)*(1/b + 1/a)/(2*eta*pi*log(b/a))\n" + ] + } + ], + "source": [ + "# program to calculate attenuaton due to conductor loss of a coaxial line using incremental inductance rule .\n", + "from sympy import symbols,sqrt,log,diff,atan\n", + "\n", + "Zo,eta,pi,a,b,Rs,l,alpha,alpha_c,alpha_dash,delta,alpha_c_dash,sigma,w,mue=symbols('Zo,eta,pi,a,b,Rs,l,alpha,alpha_c,alpha_dash,delta,alpha_c_dash,sigma,w,mue')\n", + "sd=sqrt(2/(w*mue*sigma))\n", + "Zo=(eta*log(b/a))/(2*pi);\n", + "alpha_c=(Rs/(4*Zo*pi**2))*(diff(log(b/a),b)-diff(log(b/a),a));\n", + "print \"attenuation due to conductor loss = \",alpha_c,\"\\n\"\n", + "alpha_c_dash=alpha_c*(1+((2/pi)*atan((1.4*delta)/sd)));\n", + "print \"attenuation corrected for surface roughness = \",alpha_c_dash" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_4.ipynb new file mode 100644 index 00000000..0c9527a2 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_4.ipynb @@ -0,0 +1,367 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3 TRANSMISSION LINE AND WAVEGUIDES" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.1 page no.127" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cut off frequency for TE01 mode in GHZ= 14.7637795276\n", + "cut off frequency for TE10 mode in GHZ= 6.56167979003\n", + "cut off frequency for TE20 mode in GHZ= 13.1233595801\n", + "cut off frequency for TE11 mode in GHZ= 16.1562627982\n", + "surface resistance in ohm= 0.0260895069422\n", + "attenuation constant in dB/m= 0.108405591329\n" + ] + } + ], + "source": [ + "# program to find the cut off frequency fo the first four propagating modes .\n", + "\n", + "from math import pi,sqrt,log10,e\n", + "\n", + "a=0.02286;\n", + "b=0.01016;\n", + "f=10*10**9;\n", + "k=209.44;\n", + "sigma =5.8*10**7;\n", + "mue =4*pi*10**-7;\n", + "c=3*10**8;\n", + "m=0;n=1;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2); \n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE01 mode in GHZ=\",fc\n", + "m=1;n=0;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2); \n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE10 mode in GHZ=\",fc \n", + "m=2;n=0;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2); \n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE20 mode in GHZ=\",fc \n", + "m=1;n=1;\n", + "fc=(c/(pi*2))*sqrt(((pi*m)/a)**2+((pi*n)/b)**2);\n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE11 mode in GHZ=\",fc\n", + "B=sqrt(k**2-(pi/a)**2) # for TE10 mode\n", + "Rs=sqrt(((2*pi*f)*mue)/(2*sigma)); # surface resistance .\n", + "print \"surface resistance in ohm=\",Rs\n", + "ac=(Rs/(a**3*b*B*k*377))*((2*b*pi**2)+(a**3*k**2)) # attenuation constant .\n", + "ac=-20*(-ac)*log10(e);\n", + "print \"attenuation constant in dB/m=\",ac" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.2 page no.138." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cut off frequency for TE11 mode in GHZ= 11.7201700093\n", + "cut off frequency for TE01 mode in GHZ= 15.3107055254\n", + "k in m1= 408.407044967\n", + "propagation constant of TE11 mode = 176.706180929\n", + "total attenuation factor in dB= 2.37559081601\n" + ] + } + ], + "source": [ + "#program to find the cut off frequency of two propagating modes of a circular waveguide .\n", + "\n", + "from math import pi,sqrt,e,log10\n", + "\n", + "a=0.005;eipsilar=2.25;f=13*10**9;c=3*10**8;d=0.001; sigma=6.17*01**7;muo=4*pi*10**-7;\n", + "m=1;n=1;\n", + "p11 =1.841; p01 =2.405;\n", + "fc=(p11*c)/(2*pi*a*sqrt(eipsilar));\n", + "kc=p11/a;\n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE11 mode in GHZ=\",fc\n", + "m=0;n=1;\n", + "fc=(p01*c)/(2*pi*a*sqrt(eipsilar));\n", + "fc=fc/(10**9);\n", + "print \"cut off frequency for TE01 mode in GHZ=\",fc\n", + "# so ,TE01 can ’ t be propagating mode. only TE11 will be.\n", + "k=(2*pi*f*sqrt(eipsilar))/c;\n", + "print \"k in m1=\",k\n", + "B=sqrt(k**2-kc**2);\n", + "print \"propagation constant of TE11 mode =\",B\n", + "ac=(k**2*d)/(2*B);\n", + "Rs=sqrt((2*pi*f*muo)/(2*sigma)); # surface resistance .\n", + "acm=(Rs/(a*k*377*B))*(kc**2+((k**2)/(p11**2-1)));\n", + "a=ac+acm;\n", + "a=-20*(-0.547*0.5)*log10(e);\n", + "print \"total attenuation factor in dB=\",a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.3 page no.145" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum usable frequency in GHZ= 16.1677560714\n" + ] + } + ], + "source": [ + "#program to find out the highest usable frequency.\n", + "from math import sqrt,pi\n", + "\n", + "a=0.000889;b=0.0029464;eipsilar=2.2;c=3*10**8;\n", + "# here (b/a)=3.3,so for this kc⇤a=0.47\n", + "kc=0.47/a;\n", + "fc=(c*kc)/(2*pi*sqrt(eipsilar))\n", + "fc=fc/(10**9);\n", + "fmax=0.95*fc;\n", + "print \"maximum usable frequency in GHZ=\",fmax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.4 page no.153" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# program to calculate and plot the propagation constant of first three propagating surface wave mode .\n", + "%matplotlib inline\n", + "from pylab import plot,title,xlabel,ylabel,legend,xlim,ylim\n", + "from numpy import arange,sqrt,seterr\n", + "\n", + "old_settings = seterr(all='ignore')\n", + "eipsilar=2.55;c=3*10**8; # x=d/lamdao ;\n", + "x=arange(0.001,1.2,0.01);\n", + "for n in range(0,4):\n", + " y=sqrt(eipsilar -((n**2)/(4.*(x**2)*(eipsilar -1))));# y=beta/lamdao;\n", + " plot(x,y)\n", + "x=arange(0.001,1.2,0.01);\n", + "for n in range(1,4):\n", + " y=sqrt(eipsilar -((((2.*n)-1)**2)/(16.*(x**2)*(eipsilar -1)))) \n", + " plot(x,y)\n", + "title ('plot of propagation constant of first 4 mode');\n", + "xlabel('d/lamdao');\n", + "ylabel('beta/Ko'); \n", + "xlim(0,1)\n", + "ylim(1,1.6);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.5 page no.157." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "width of copper strip line conductor is 0.00266m\n", + "wave number= 310.648995795\n", + "dielectric aattenuation= 0.155324497897\n", + "conductor attenuation= 0.121743652883\n", + "total attenuation constant= 2.4065833799\n", + "attenuation in dB/lamda= 0.048675545512\n" + ] + } + ], + "source": [ + "# program to find width of a copper strip line conductor .\n", + "from math import pi,e,sqrt,log10\n", + "\n", + "eipsilar=2.20;\n", + "Zo=50;b=0.0032;d=0.001;f=10**10;t =0.00001;\n", + "c=3*10**8;Rs=0.026;A=4.74;\n", + "x=(30*pi)/(sqrt(eipsilar)*Zo);\n", + "x=x-0.441;\n", + "w=b*x;\n", + "if ((sqrt(eipsilar)*Zo)<120):\n", + " print \"width of copper strip line conductor is 0.00266m\"\n", + "K=(2*pi*f*sqrt(eipsilar))/c;\n", + "ad=(K*d)/2;\n", + "ac=(2.7*(10**-3)*Rs*eipsilar*Zo*A)/(30*pi*(b-t));\n", + "a=ac+ad;\n", + "a=20*a*log10(e);\n", + "lamda=c/(sqrt(eipsilar)*f);\n", + "alamda=lamda*a;\n", + "print \"wave number=\",K\n", + "print \"dielectric aattenuation=\",ad\n", + "print \"conductor attenuation=\",ac\n", + "print \"total attenuation constant=\",a\n", + "print \"attenuation in dB/lamda=\",alamda" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.7 page no.163" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "width in centi meter= 0.391287\n", + "length of microstrip in centi meter= 2.19381727238\n" + ] + } + ], + "source": [ + "#program to calculate the width and length of microstrip line .\n", + "from math import sqrt,pi,e\n", + "\n", + "eipsilae=1.87;# effective dielectric constant .\n", + "Zo=50;q=pi/2;c=3*10**8;\n", + "f=2.5*10**9;\n", + "ko=(2*pi*f)/c;\n", + "d=0.00127;\n", + "eipsilar =2.20;\n", + "# for w/d>2;\n", + "B=7.985;\n", + "w=3.081*d*100;\n", + "print \"width in centi meter=\",w\n", + "l=(q*100)/(sqrt(eipsilae)*ko);\n", + "print \"length of microstrip in centi meter=\",l" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example:3.9 page no.173" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "group velocity= c**2*sqrt(-kc**2 + w**2/c**2)/w\n", + "phase velocity= w/sqrt(-kc**2 + w**2/c**2)\n", + "conclusion:since B0 region .\n", + "ko=w*sqrt(muo*eipsilao);\n", + "k=ko*sqrt(eipsilar);\n", + "Ba=sqrt(ko**2-(pi/a)**2); # propagation constant in air region z<0.\n", + "Bd=sqrt(k**2-(pi/a)**2); # propagation constant in dielectric region z>0.\n", + "Zoa=(ko*377)/Ba;\n", + "Zod=(ko*377)/Bd;\n", + "tao=(Zod-Zoa)/(Zod+Zoa);\n", + "print \"reflection coefficient\",tao" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.3 page.no:195" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z-parameter of two port network = Matrix([[Za + Zc, Zc], [Zc, Zb + Zc]])\n" + ] + } + ], + "source": [ + "# program to find the z parameter of the two port network .\n", + "from sympy import symbols,Matrix\n", + "\n", + "Z11,Z12,Z22,Z21,Za,Zb,Zc=symbols('Z11,Z12,Z22,Z21,Za,Zb,Zc');\n", + "Z11=Za+Zc; # for I2=0.\n", + "Z12=(Zc/(Zb+Zc))*(Zb+Zc); #for I1=0.\n", + "Z21=(Zc/(Za+Zc))*(Za+Zc); # for I2=0.\n", + "Z22=Zb+Zc; #for I1=0.\n", + "Z=Matrix([[Z11,Z12],[Z21,Z22]]); # z_parameter matrix.\n", + "print \"Z-parameter of two port network = \",Z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.4 page.no:198" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "S-parameter of 3db attenuator circuit is =\n", + "[[ 4.43981086e-05 7.07663252e-01]\n", + " [ 7.07663252e-01 4.43981086e-05]]\n" + ] + } + ], + "source": [ + "# program to find the s-parameter of 3-dB attenuator circuit .\n", + "from numpy import matrix\n", + "\n", + "Za=8.56;Zb=8.56;Zc=141.8;Zo=50.;\n", + "S11=(((((Zo+Zb)*Zc)/(Zo+Zb+Zc))+Za)-Zo)/(((((Zo+Zb)*Zc)/(Zo+Zb+Zc))+Za)+Zo); # reflection coefficient seen at port 1.\n", + "S22=(((((Zo+Za)*Zc)/(Zo+Za+Zc))+Zb)-Zo)/(((((Zo+Za)* Zc)/(Zo+Za+Zc))+Zb)+Zo); # reflection coefficient seen at port 2.\n", + "S12=(((1/((((Zo+Za)*Zc)/(Zo+Za+Zc))+Zb))*(((Zo+Za)* Zc)/(Zo+Za+Zc)))*(Zo/(Zo+Za))); # transmission coefficient from port 2 to 1.\n", + "S21=(((1/((((Zo+Zb)*Zc)/(Zo+Zb+Zc))+Za))*(((Zo+Zb)* Zc)/(Zo+Zb+Zc)))*(Zo/(Zo+Zb))); # transmission coefficient from port 1 to 2.\n", + "S=matrix([[S11,S12],[S21,S22]]); # sparameter matrix.\n", + "print \"S-parameter of 3db attenuator circuit is =\"\n", + "print S" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.5 page.no:202" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the network is reciprocal .\n", + "the network is lossy .\n", + "return loss at port 1 in dB= 3.967\n" + ] + } + ], + "source": [ + "#program to determine the reciprccity and lossless of two port network and find return loss.\n", + "from sympy import symbols,I\n", + "from numpy import matrix\n", + "from math import log10\n", + "\n", + "Rl,tao=symbols('Rl,tao');\n", + "S=matrix([[0.1,0.8*I],[0.8*I,0.2]]); # s-parameter matrix.\n", + "if (S[0,1]==S[1,0]):\n", + " print \"the network is reciprocal .\"\n", + "else:\n", + " print \"the network is not reciprocal .\"\n", + "if (S[0,0]**2+S[0,1]**2==1):\n", + " print \"the network is lossless .\"\n", + "else:\n", + " print \"the network is lossy .\"\n", + "tao=S[0,0]-(S[0,1]*S[1,0])/(1+S[1,1]); #input reflection coefficient .\n", + "Rl=-20*log10(abs(tao)); # return loss in dB.\n", + "#result\n", + "print \"return loss at port 1 in dB= %.3f\"%Rl" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.6 page.no:208" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "abcd parameter\n", + "Matrix([[1, Z], [0, 1]])\n" + ] + } + ], + "source": [ + "#program to find the ABCD parameter of a two-port network .\n", + "from sympy import symbols,Matrix\n", + "\n", + "A,B,C,D,V1,V2,I1,I2,Z=symbols('A,B,C,D,V1,V2,I1,I2,Z');\n", + "#A=V1/V2; #for i2=0;\n", + "A=1;\n", + "B=V1/(V1/Z);\n", + "C=0;\n", + "D=I1/I1;\n", + "ABCD=Matrix([[A,B],[C,D]]);\n", + "#result\n", + "print \"abcd parameter\"\n", + "print ABCD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:4.7 page.no:226" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "admittance matrix for bridge-T network=\n", + "Matrix([[1/(Z1 + Z2) + 1/Z3 + Z2**2/(Z1*(Z1 + Z2)*(Z1 + 2*Z2)), -1/Z3 - Z2/(Z1*(Z1 + 2*Z2))], [-1/Z3 - Z2/(Z1*(Z1 + 2*Z2)), 1/Z3 + (Z1 + Z2)/(Z1*(Z1 + 2*Z2))]])\n" + ] + } + ], + "source": [ + "# program to find the admittance matrix for bridge-T network.\n", + "from sympy import symbols,Matrix\n", + "\n", + "Za,Z1,Z2,Z3,Y,Ya,Yb,D=symbols('Za,Z1,Z2,Z3,Y,Ya,Yb,D');\n", + "Za=Matrix([[Z1+Z2,Z2],[Z2,Z1+Z2]]);\n", + "Yb=Matrix([[1/Z3,-1/Z3],[-1/Z3,1/Z3]]);\n", + "Y1=1/Z1;Y2=1/Z2;\n", + "Ya=Za**-1\n", + "Y=Ya+Yb;\n", + "D=((Z2+Z1)**2-Z2**2);\n", + "# result\n", + "print \"admittance matrix for bridge-T network=\"\n", + "print Y" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_4.ipynb new file mode 100644 index 00000000..cb7340f4 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_4.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5 IMPEDENCE MATCHING AND TUNNING" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.1 page no:254" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "inductor of first circuit in nH = 38.985\n", + "capacitor of the first circuit in pF = 0.923\n", + "inductor of second circuit in nH = 46.139\n", + "capacitor of the second circuit in pF = 2.599\n", + "\"NOTE:−for above specific problem Rl>Zo, positive X implies inductor , negative X implies capacitor , positive B implies capacitor and negative B implies inductor .\"\n" + ] + } + ], + "source": [ + "#program to design an L section matching network\n", + "from math import pi,sqrt\n", + "from sympy import I\n", + "\n", + "# program to design an L section matching network to match a series RC load.\n", + "Zl=200-I*100; # load impedence .\n", + "Rl=200;Xl=-100;f=500*10**6;Zo=100;\n", + "B1=(Xl+sqrt(Rl/Zo)*sqrt(Rl**2+Xl**2-(Rl*Zo)))/(Rl**2+Xl**2);\n", + "B2=(Xl-sqrt(Rl/Zo)*sqrt(Rl**2+Xl**2-(Rl*Zo)))/(Rl**2+Xl**2);\n", + "C1=(B1/(2*pi*f))*10**12;\n", + "L2=(-1/(B2*2*pi*f))*10**9;\n", + "X1=(1/B1)+((Xl*Zo)/Rl)-(Zo/(B1*Rl));\n", + "X2=(1/B2)+((Xl*Zo)/Rl)-(Zo/(B2*Rl));\n", + "L1=(X1/(2*pi*f))*10**9;\n", + "C2=(-1/(X2*2*pi*f))*10**12;\n", + "print\"inductor of first circuit in nH = %.3f\"%L1\n", + "print\"capacitor of the first circuit in pF = %.3f\"%C1\n", + "print\"inductor of second circuit in nH = %.3f\"%L2\n", + "print\"capacitor of the second circuit in pF = %.3f\"%C2 \n", + "print\"\\\"NOTE:−for above specific problem Rl>Zo, positive X implies inductor , negative X implies capacitor , positive B implies capacitor and negative B implies inductor .\\\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.5 page no:275" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "charecteristic impedence of matching section = 22.36\n", + " fractional bandwidth = 0.29\n" + ] + } + ], + "source": [ + "#design quarter wave matching transformer\n", + "from math import sqrt,pi,acos\n", + "\n", + "#program to design a single section quarter wave matching transformer .\n", + "Zl=10; # load impedence .\n", + "Zo=50; # characteristic impedence .\n", + "fo=3*10**9;swr=1.5; # maximum limit of swr.\n", + "Z1=sqrt(Zo*Zl); # characteristic impedence of the matching section .\n", + "taom=(swr-1)/(swr+1);\n", + "frac_bw=2-(4/pi)*acos((taom/sqrt(1-taom**2))*(2*sqrt(Zo*Zl)/abs(Zl-Zo))); # fractional bandwidth .\n", + "print \"charecteristic impedence of matching section = %.2f\"%Z1\n", + "print \" fractional bandwidth = %.2f\"%frac_bw" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.6 page no:280" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z1 = 91.70\n", + "Z2 = 84.09\n", + "Z3 = 77.11\n" + ] + } + ], + "source": [ + "#design three section binomial transformer\n", + "from math import pi,acos\n", + "\n", + "Zl=50.;Zo=100.;N=3;taom=0.05;\n", + "A=(2**-N)*abs((Zl-Zo)/(Zl+Zo));\n", + "frac_bw=2.-(4/pi)*acos(0.5*(taom/A)**2);\n", + "c=1.\n", + "Z1=Zo*((Zl/Zo)**((2.**-N)*(c**N)));\n", + "print \"Z1 = %.2f\"%Z1\n", + "c=3.**(1/3)\n", + "Z2=Z1*((Zl/Zo)**((2.**-N)*(c**N)));\n", + "print \"Z2 = %.2f\"%Z2\n", + "c=3.**(1/3)\n", + "Z3=Z2*((Zl/Zo)**((2.**-N)*(c**N)));\n", + "print \"Z3 = %.2f\"%Z3\n", + "# answers may vary due to round off errors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exa 5.7 page no:288" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the characteristic impedences are = 57.27 ,69.84 ,87.30\n" + ] + } + ], + "source": [ + "#design three section chebysev transfomer\n", + "from math import pi,cosh\n", + "from sympy import asec,acosh\n", + "\n", + "Zl=100.;Zo=50.;taom=0.05;N=3;A=0.05;\n", + "thetam=asec(cosh((1/N)*acosh((1/taom)*abs((Zl-Zo)/(Zl+Zo)))))*(180/pi);\n", + "x=(cosh((1./N)*acosh((1./taom)*abs((Zl-Zo)/(Zl+Zo)))))\n", + "tao_o=A*(x**3)/2;\n", + "tao_1=(3*A*(x**3-x))/2; # from symmetry tao 3=tao \n", + "Z1=Zo*((1+tao_o)/(1-tao_o));\n", + "Z2=Z1*((1+tao_1)/(1-tao_1));\n", + "Z3=Zl*((1-tao_o)/(1+tao_o));\n", + "print \"the characteristic impedences are = %.2f ,%.2f ,%.2f\"%(Z1,Z2,Z3)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_4.ipynb new file mode 100644 index 00000000..e6a37416 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_4.ipynb @@ -0,0 +1,328 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6 MICROWAVE RESONATORS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.1 page.no:309" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Qair = 2379.5\n", + "Qteflon = 1217.7\n", + "conclusion: Qair is almost twice that of Qteflon\n" + ] + } + ], + "source": [ + "#program to compare the Q of an air filled and teflon filled coaxial line resonator .\n", + "from math import pi,sqrt,log\n", + "\n", + "sigma=5.813*10**7;muo=4*pi*10**-7;f=5*10**9;eta=377;a =1*10**-3;b=4*10**-3;\n", + "omega=2*pi*f;ko=104.7;B=104.7;alpha=0.022;\n", + "Rs=sqrt((omega*muo)/(2*sigma));\n", + "alphaca=(Rs/(2*eta*log(b/a)))*((1/a)+(1/b)); # attenuation due to conductor loss for air filled line .\n", + "eipsilar=2.08;tandelta=0.0004; # for teflon filled line .\n", + "alphact=((Rs*sqrt(2.08)*0.01)/(2*eta*log(b/a)))*((1/ a)+(1/b)); # attenuation due to conductor loss for teflon filled line .\n", + "alphada=0; # for air filled line .\n", + "alphadt=ko*(sqrt(eipsilar)/2)*tandelta;\n", + "Qair=B/(2*alpha);\n", + "B=B*sqrt(eipsilar);\n", + "alpha =0.062;\n", + "Qteflon=B/(2*alpha);\n", + "print \"Qair = %.1f\"%Qair\n", + "print \"Qteflon = %.1f\"%Qteflon\n", + "print \"conclusion: Qair is almost twice that of Qteflon\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.2 page.no:312" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "length of the line in meter = 0.0219\n", + "Q of the resonator = 525.9\n" + ] + } + ], + "source": [ + "# program to compute the length of the line for resonance at 5 GHZ and the Q of the resonator .\n", + "from math import sqrt,pi\n", + "\n", + "W=0.0049;c=3*10**8;f=5*10**9;Zo=50;eipsilar=2.2;ko =104.7;tandelta =0.001;\n", + "Rs=0.0184; # taken from example 7.1.\n", + "eipsilae=1.87; # effective permittivity .\n", + "l=c/(2*f*sqrt(eipsilae)); # resonator length .\n", + "B=(2*pi*f*sqrt(eipsilae))/c;\n", + "alphac=Rs/(Zo*W);\n", + "alphad=(ko*eipsilar*(eipsilae -1)*tandelta)/(2*sqrt(eipsilae)*(eipsilar -1));\n", + "alpha=alphac+alphad;\n", + "Q=B/(2*alpha);\n", + "print \"length of the line in meter = %.4f\"%l\n", + "print \"Q of the resonator = %.1f\"%Q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.3 page.no:317" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d in meter = 0.0465\n", + "Q1 = 1437\n", + "Q2 = 1518\n" + ] + } + ], + "source": [ + "# program to find required length ,d and Q for l=1 and l=2 resonator mode.\n", + "from math import sqrt,pi\n", + "\n", + "a=0.04755;b=0.02215;eipsilar=2.25;tandelta=0.0004;f =5*10**9;c=3*10**8;\n", + "k=(2*pi*f*sqrt(eipsilar))/c # wave number .\n", + "for l in range(1,2):\n", + " d=(l*pi)/sqrt((k**2)-((pi/b)**2)); # m=1 & n=0 mode .\n", + " print \"d in meter = %.4f\"%d\n", + "eta=377/sqrt(eipsilar);\n", + "Qc1=3380.;# l=1.\n", + "Qc2=3864.;# l=2.\n", + "Qd=2500.; # Q due to dielectric loss only .\n", + "Q1=((1./Qc1)+(1./Qd))**-1; # for l =1.\n", + "Q2=((1./Qc2)+(1./Qd))**-1; # for l =2.\n", + "print \"Q1 = %.0f\"%Q1\n", + "print \"Q2 = %.0f\"%Q2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.4 page.no:323" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a in meter = 0.0395\n", + "Qc = 42364.227\n" + ] + } + ], + "source": [ + "# program to find dimension and Q;\n", + "from math import pi,sqrt\n", + "\n", + "f=5.*10**9;c=3.*10**8;p01=3.832;sigma=5.813*10**7;muo=4.*pi*10** -7;\n", + "eipsilar =2.25;\n", + "# mode TE011 . and d=2a .\n", + "omega=2*pi*f;\n", + "eta =377.;\n", + "lamda=c/f;\n", + "k=(2.*pi)/lamda;\n", + "# f=(c/(2⇤pi))⇤sqrt((p01/a)ˆ2+(%pi/(2⇤a))ˆ2); as d=2a given\n", + "a=sqrt((p01)**2+(pi/2)**2)/k;\n", + "Rs=sqrt((omega*muo)/(2.*sigma))\n", + "Qc=(k*a*eta)/(2.*Rs); # for m=l =1,n=0 and d=2a .\n", + "print \"a in meter = %.4f\"%a\n", + "print \"Qc = %.3f\"%Qc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.5 page.no:309" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "f1 in GHZ= 2.853\n", + "f2 in GHZ= 27.804\n", + "approx. value of Q due to dielectric loss = 1000\n" + ] + } + ], + "source": [ + "# program to find the resonant frequency and Q for TE01delta mode .\n", + "from math import sqrt,pi,tan\n", + "\n", + "delta=0.001;eipsilar=95.;a=0.413;L=0.008255;c=3.*10**8;\n", + "#tan((B⇤L)/2)=alpha/beta.\n", + "ko=2.405\n", + "alpha=(sqrt((2.405/a)**2-(ko)**2));\n", + "B=sqrt((eipsilar*(ko)**2) -(2.405/a)**2); # beta\n", + "f1=((c*2.405)/(2*pi*sqrt(eipsilar)*a))*10**-7;\n", + "f2=((c*2.405)/(2*pi*a))*10**-7;\n", + "print \"f1 in GHZ= %.3f\"%f1\n", + "print \"f2 in GHZ= %.3f\"%f2\n", + "Q=1/tan(delta);\n", + "print \"approx. value of Q due to dielectric loss = %.0f\"%Q" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:6.6 page.no:336" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coupling capacitor in pF = 433773.991\n", + "frequency in GHZ= 3.66602230334e-07\n" + ] + } + ], + "source": [ + "# program to find the value of the coupling capacitor required for critical coupling .\n", + "from math import pi,sqrt,atan\n", + "\n", + "l=0.02175;Zo=50;eipsilae=1.9;c=3*10^8;\n", + "fo=c/(2*l*sqrt(eipsilae)); # first resonant frequency will occur when the resonator ia about l=lamdag/2 in length .\n", + "lamdag=c/fo;\n", + "alpha=1/8.7; # in Np/m.\n", + "Q=pi/(2*l*alpha);\n", + "bc=sqrt(pi/(2*Q));\n", + "C=bc/(2*pi*fo*Zo)*10**12;\n", + "print \"coupling capacitor in pF = \",C\n", + "C=bc/(2*pi*fo*Zo);\n", + "w1=atan(2*pi*fo*C*Zo)*c/(l*sqrt(eipsilae)); # from equation tan (B⇤l) =bc ;\n", + "w1=w1*10**-8;\n", + "print \"frequency in GHZ= \",w1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:6.7 page.no:342" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "on taking sin (2⇤pi )=0 ,w becomes= A**2*a*c*d*t/4\n", + "fractional change in resonant frequency= 2*(-A**2*a*b*d*eo/2 + A**2*a*c*d*t/4)/(A**2*a*b*d*eo)\n" + ] + } + ], + "source": [ + "# program to derive an expression for the change in resonant frequency .\n", + "from sympy import symbols,sin,cos,integrate,limit\n", + "from math import pi\n", + "\n", + "Ey,Hx,Hz,A,Zte,n,a,p,i,x,z,d,j,k,t,y,er,eo,c,wo,w,b=symbols('Ey,Hx,Hz,A,Zte,n,a,p,i,x,z,d,j,k,t,y,er,eo,c,wo,w,b')\n", + "Ey=A*sin((pi*x)/a)*sin((pi*z)/d);\n", + "Hx=((-j*A)/Zte)*sin((pi*x)/a)*cos((pi*z)/d);\n", + "Hz=((j*pi*A)/(k*n*a))*cos((pi*x)/a)*sin((pi*z)/d); \n", + "Ey=Ey**2; #c=(er1)⇤eo;\n", + "w=c*integrate(integrate(integrate(Ey,(z,0,d)),(y,0,t)),(x,0,a));\n", + "# as sin (2⇤ pi )=0; then last term of above result will be:\n", + "w=(c*A**2*a*t*d)/4;\n", + "print \"on taking sin (2⇤pi )=0 ,w becomes= \",w\n", + "wo=((a*b*d*eo)/2)*A**2;\n", + "deltaw=(w-wo)/wo;\n", + "print \"fractional change in resonant frequency= \",deltaw" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_4.ipynb new file mode 100644 index 00000000..d3e4093c --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_4.ipynb @@ -0,0 +1,393 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 7 POWER DIVIDERS DIRECTIONAL COUPLERS AND HYBRIDS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.1 page.no:360" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "not matched\n", + "reflection coefficient looking at 150 ohm line = -0.71\n", + "reflection coefficient looking at 75 ohm line = -0.14\n" + ] + } + ], + "source": [ + "#function:\n", + "def parallel_impedence(Z1,Z2):\n", + " return (Z1*Z2)/(Z1+Z2);\n", + "\n", + "# program to compute the reflection coefficients seen looking in to the output port.\n", + "# as the power is divided in to 2:1 ratio. and Pin=(1/2)⇤Voˆ2/Zo;\n", + "# so,P1=(1/3)⇤Pin;and P2=(2/3)⇤Pin ............( i)\n", + "Zo =50.;\n", + "Z1=3.*Zo; # from above condition .............( i)\n", + "Z2=(3/2)*Zo;\n", + "Zin=parallel_impedence(Z1,Z2); # input impedence to the junction .\n", + "if Zin==Zo:\n", + " print \"input is matched to the 50 ohm sources\"\n", + "else:\n", + " print \"not matched\"\n", + "Zin1=parallel_impedence(Zo,Z2); # looking in to the 150 ohm source.\n", + "Zin2=parallel_impedence(Zo,Z1); # looking in to the 75 ohm source.\n", + "tao1=(Zin1-Z1)/(Zin1+Z1);\n", + "tao2=(Zin2-Z2)/(Zin2+Z2);\n", + "print \"reflection coefficient looking at 150 ohm line = %.2f\"%tao1\n", + "print \"reflection coefficient looking at 75 ohm line = %.2f\"%tao2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.2 page.no:365" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the shunt resistance value should be in ohm= 100\n", + "the quarter wave transmission line in the divide should have a characteristic impedence in ohm = 70.7106781187\n" + ] + } + ], + "source": [ + "# program to design an equisplit wilkinson power divider for 50 ohm system impedence .\n", + "from math import sqrt\n", + "\n", + "Zo =50;\n", + "Z=sqrt(2)*Zo; # impedence of quarter wave transmission line .\n", + "R=2*Zo; # shunt resistor .\n", + "print \"the shunt resistance value should be in ohm= \",R\n", + "print \"the quarter wave transmission line in the divide should have a characteristic impedence in ohm = \",Z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.3 page.no:372" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the aperture position in mm = 9.72\n", + "the aperture size in mm = 1000.0\n", + "NOTE:the above shown results completes the design of the betha hole coupler \n" + ] + } + ], + "source": [ + "# program to design bethe-hole coupler for x-band wave guide .\n", + "from math import pi,asin\n", + "\n", + "f=9*10**9;C=20;a=0.02286;b=0.01016;\n", + "Ko=188.5;B=129;Z10 =550.9;\n", + "P10=4.22*10**-7;lamdao=0.0333;\n", + "uo=4*pi*10**-7;eo=8.854*10**-12;w=2*pi*f;\n", + "s=(a/pi)*asin(lamdao/sqrt(2*(lamdao**2-a**2)))*10**3; \n", + "# a=10⇤b;# as C=20db; # take x=a/b; so x=10;\n", + "ro=(P10/((10*w)*((((2*eo/3)+(4*uo)/(3*Z10**2))*0.944)-((4*pi**2*uo*0.056)/(3*B**2*a**2*Z10**2)))))**(1/3)*10**3;\n", + "print \"the aperture position in mm = %.2f\"%s\n", + "print \"the aperture size in mm = \",ro\n", + "print \"NOTE:the above shown results completes the design of the betha hole coupler \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.4 page.no:378" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kf = 394835.06\n", + "kb = 345030.82\n", + "thetam in degree = 70.59\n", + "ro in mm= 3009.49\n", + "r1 in mm= 1000.00\n" + ] + } + ], + "source": [ + "# program to design a four hole chebysev coupler in xband wave guide using round aperture located at s=a/4.\n", + "from math import pi\n", + "from mpmath import cosh,acosh,sin,cos,asec\n", + "\n", + "a=0.02286;b=0.01016;lamdao=0.0333;\n", + "ko=188.5;bta=129; Z10=550.9;\n", + "P10=4.22*10**-7;f=9*10**9;no=377;N=3;\n", + "s=a/4;\n", + "kf=((2*ko)/(3*no*P10))*((sin(pi*s/a)**2) -(2*(bta**2)/(ko**2))*((sin(pi*s/a)**2)+((pi**2)/((bta**2)*(a**2)))*(cos(pi*s/a)**2)));\n", + "kf=abs(kf)\n", + "kb=((2*ko)/(3*no*P10))*((sin(pi*s/a)**2)+(2*(bta**2) /(ko**2))*((sin(pi*s/a)**2)-((pi**2)/((bta**2)*(a **2)))*(cos(pi*s/a)**2)));\n", + "kb=abs(kb)\n", + "x=cosh(acosh(100)/3); # x=sec(thetam).\n", + "thetam=asec(x)*180/pi; # so , thetam=70.6 and at the band edge .\n", + "k=10**(-171.94/20);\n", + "ro=(((k/2)**(1/3))*x)*1000;\n", + "r1=(1.5*k*((x**3)-x))**(1/3)*1000;\n", + "print \"kf = %.2f\"%kf\n", + "print \"kb = %.2f\"%kb\n", + "print \"thetam in degree = %.2f\"%thetam\n", + "print \"ro in mm= %.2f\"%ro\n", + "print \"r1 in mm= %.2f\"%r1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.5 page.no:382" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the branch line impedence in ohm will be = 35.36\n" + ] + } + ], + "source": [ + "#program to design a 50 ohm branchline quadrature hybrid junction \n", + "from math import sqrt\n", + "\n", + "Zo =50.;\n", + "Z=Zo/sqrt(2)\n", + "print \"the branch line impedence in ohm will be = %.2f\"%Z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.6 page.no:387" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Zoe = sqrt(eo*er*uo)/(W*eo*er/(b/2 + s/2) + W*eo*er/(b/2 - s/2)) zoo = sqrt(eo*er*uo)/(W*eo*er/(b/2 + s/2) + W*eo*er/(b/2 - s/2) + 2*W*eo*er/s)\n" + ] + } + ], + "source": [ + "# program to determine the even and odd mode characteristic impedence.\n", + "from sympy import symbols,sqrt\n", + "\n", + "C,A,d,W,C11,C12,Ce,Co,v,eo,er,s,b,uo,Zoe,Zoo,eipsila=symbols('C,A,d,W,C11,C12,Ce,Co,v,eo,er,s,b,uo,Zoe,Zoo,eipsila');\n", + "C=A*eipsila/d;\n", + "C11=(eo*er*W)/((b-s)/2)+(eo*er*W)/((b+s)/2);\n", + "C12=er*eo*W/s;\n", + "Ce=C11;\n", + "Co=C11+2*C12\n", + "v=1/sqrt(er*eo*uo);\n", + "Zoe=1/(v*C11); # as Ce=C11; \n", + "Zoo=1/(v*Co);\n", + "print \"Zoe = \",Zoe,\" zoo = \",Zoo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.7 page.no:394" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "conductor width in cm = 0.114\n", + "conductor seperation in cm = 0.054\n" + ] + } + ], + "source": [ + "#design a 20 db single section coupled line coupler in stripline .\n", + "from math import sqrt\n", + "\n", + "C=10**(-20/20);f=3*10**9;eipsila=2.56;Zo=50;b=0.00158; \n", + "Zoe=Zo*sqrt((1+C)/(1-C));\n", + "Zoo=Zo*sqrt((1-C)/(1+C));\n", + "Zoe=eipsila*Zoe;\n", + "Zoo=eipsila*Zoo; \n", + "x=0.72; #x=w/b. \n", + "y=0.34; # y=s/b.\n", + "w=0.72*b*100;\n", + "s=0.34*b*100;\n", + "print \"conductor width in cm = %.3f\"%w\n", + "print \"conductor seperation in cm = %.3f\"%s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.8 page.no:396" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for a maximally flat response for a three= section coupler doupble derivative of C will be zero\n", + "the even and odd mode characteristic impedences for each section are :\n", + "Zoe1 = 50.63 \n", + "Zoo1= 49.38 \n", + "Zoe2= 56.69 \n", + "Zoo2= 56.69 \n", + "Zoe3= 50.63 \n", + "Zoo3= 49.38\n" + ] + } + ], + "source": [ + "# design a three section 20 db coupler with a binomial response .\n", + "from sympy import symbols,sqrt\n", + "\n", + "Zo=50;f=3*10**9;N=3;\n", + "C,C1,C2,theta=symbols('C,C1,C2,theta')\n", + "C=10**(-20/20);\n", + "print \"for a maximally flat response for a three= section coupler doupble derivative of C will be zero\"\n", + "C1=0.0125;C2=0.125;C3=0.0125;\n", + "Zoe1=Zo*sqrt((1+C1)/(1-C1));\n", + "Zoe3=Zo*sqrt((1+C3)/(1-C3));\n", + "Zoo1=Zo*sqrt((1-C1)/(1+C1));\n", + "Zoo3=Zo*sqrt((1-C1)/(1+C1));\n", + "Zoe2=Zo*sqrt((1+C2)/(1-C2));\n", + "Zoo2=Zo*sqrt((1+C2)/(1-C2));\n", + "print \"the even and odd mode characteristic impedences for each section are :\"\n", + "print \"Zoe1 = %.2f\"%Zoe1,\"\\nZoo1= %.2f\"%Zoo1,\"\\nZoe2= %.2f\"%Zoe2,\"\\nZoo2= %.2f\"%Zoo2,\"\\nZoe3= %.2f\"%Zoe3,\"\\nZoo3= %.2f\"%Zoo3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## exa 7.9 page.no:407" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the characteristic impedence of the ring transmission line in ohm is = 70.71\n" + ] + } + ], + "source": [ + "#design a 180 deg. ring hybrid for a 50 ohm system impedence .\n", + "from math import sqrt\n", + "\n", + "Zo =50;\n", + "Z=sqrt(2)*Zo;\n", + "print \"the characteristic impedence of the ring transmission line in ohm is = %.2f\"%Z" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_4.ipynb new file mode 100644 index 00000000..78bbf38c --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_4.ipynb @@ -0,0 +1,449 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 8 MICROWAVE FILTERS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.1 page.no:429" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nfwObl9idx5jvAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# program to compute the propagation constant , phase velocity and bloch impedence .\n", + "%matplotlib inline\n", + "from pylab import arange,plot,axis,title,xlabel,ylabel,subplot\n", + "from numpy import cos,sin,pi,arccos,seterr\n", + "from mpmath import acos\n", + "\n", + "Co=2.666*10**-12;\n", + "d=0.01;c=3*10**8;\n", + "Zo=50.;f=3*10**9;\n", + "p=(Co*Zo*c)/(2*d); # constant of equation given below .\n", + "y=arange(0,0.96,0.001)\n", + "x=arccos(cos(y)-p*y*sin(y)); # x=ko⇤d; and y=beta⇤d;\n", + "subplot(121)\n", + "plot(x,y)\n", + "plot(-x,y)\n", + "axis([-3,3,0,1])\n", + "title (\"k-beta diagram for first pass band \")\n", + "xlabel (\"beta-d\")\n", + "ylabel (\"ko-d\")\n", + "y=arange(3,4,0.001)\n", + "seterr(all='ignore')\n", + "x=arccos(cos(y)-p*y*sin(y)); # x=ko⇤d; and y=beta⇤d ;\n", + "subplot(122)\n", + "plot(x,y)\n", + "axis([0,3,3,4]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.2 page.no:441" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "design parameter for m=0.2195 ==> 1.3101e-06 4.6582e-10 1.2939e-05 \n", + "\n", + "design parameter for m=0.6 ==> 3.5810e-06 6.3662e-10 6.3662e-06 \n", + "\n" + ] + } + ], + "source": [ + "# program to design a low pass composite filter with cutoff frequency of 2 MHZ.\n", + "from math import sqrt,pi\n", + "\n", + "fc=2*10**6;f=2.05*10**6;Ro=75;\n", + "L=(2*Ro)/(2*pi*fc);\n", + "C=2/(Ro*2*pi*fc);\n", + "m=sqrt(1-(fc/f)**2)\n", + "x=m*L/2;\n", + "y=m*C;\n", + "z=((1-m**2)/(4*m))*L; # x,y,z are design parameter assumed .\n", + "print \"design parameter for m=0.2195 ==> %.4e %.4e %.4e \\n\"%(x,y,z)\n", + "m=0.6\n", + "x=m*L/2;\n", + "y=m*C/2;\n", + "z=((1-m**2)/(2*m))*L; # x,y,z are design parameter assumed .\n", + "print \"design parameter for m=0.6 ==> %.4e %.4e %.4e \\n\"%(x,y,z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.3 page.no:449" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "from table we see that an attenuation of 20 db at this frequency requires that N>=8 for x = 0.375\n" + ] + } + ], + "source": [ + "# program to find out number of filter elements required .\n", + "from math import pi\n", + "\n", + "fc=8*10**9;f=11*10**9;\n", + "w=2*pi*f;\n", + "wc=2*pi*fc;\n", + "x=abs(w/wc)-1;\n", + "print \"from table we see that an attenuation of 20 db at this frequency requires that N>=8 for x = \",x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.4 page.no:447" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g1 = 0.618\n", + "g2 = 1.618\n", + "g3 = 2.0\n", + "g4 = 1.618\n", + "g5 = 0.618\n" + ] + } + ], + "source": [ + "# program to design a maximum flat low pass filter with cut off frequency of 2 GHZ.\n", + "from math import pi\n", + "\n", + "fc=2*10**9;f=3*10**9;\n", + "w=2*pi*f;\n", + "wc=2*pi*fc;\n", + "x=abs(w/wc)-1;\n", + "# from table we can see that N=5 will be sufficient .\n", + "# then prototype element values are:\n", + "g1 =0.618; g2 =1.618; g3 =2.000; g4 =1.618; g5 =0.618;\n", + "print \"g1 = \",g1\n", + "print \"g2 = \",g2\n", + "print \"g3 = \",g3\n", + "print \"g4 = \",g4\n", + "print \"g5 = \",g5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.5 page.no:460" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L1- 1.27e-16\n", + "L2- 7.26e-01\n", + "L3- 1.27e-16\n", + "C1- 1.99e-04\n", + "C2- 3.49e-20\n", + "C3- 1.99e-04\n" + ] + } + ], + "source": [ + "# design a band pass filter having a 0.5 db equal ripple respnse with N=3.\n", + "from math import pi\n", + "\n", + "N=3;Zo=50;f=1*10**9;delta=1*10**8;\n", + "L1 =1.596; L3 =1.5963; C2 =1.0967; Rl =1.000;\n", + "L_1=(L1*Zo)/(2*pi*f*delta);\n", + "C_1=delta/(2*pi*f*L1*Zo);\n", + "L_2=(delta*Zo)/(2*pi*f*C2);\n", + "C_2=C2/(2*pi*f*delta*Zo);\n", + "L_3=(L3*Zo)/(2*pi*f*delta); \n", + "C_3=delta/(2*pi*f*L3*Zo);\n", + "print \"L1- %.2e\"%L_1\n", + "print \"L2- %.2e\"%L_2\n", + "print \"L3- %.2e\"%L_3\n", + "print \"C1- %.2e\"%C_1\n", + "print \"C2- %.2e\"%C_2\n", + "print \"C3- %.2e\"%C_3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.6 page.no:466" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "from table , the normalized low pass prototype element values are = \n", + "3.3487\n", + "1.0\n", + "0.7117\n", + "3.3487\n", + "1.299\n" + ] + } + ], + "source": [ + "# design a low pass filter for fabrication using micrstrip lines .\n", + "print \"from table , the normalized low pass prototype element values are = \"\n", + "L1 =3.3487; C2 =0.7117; L3 =3.3487; Rl =1.0000;\n", + "n=1+(1/3.3487);\n", + "print(L1)\n", + "print(Rl)\n", + "print(C2)\n", + "print(L3)\n", + "print \"%.3f\"%n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.7 page.no:472" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5.92438360165\n", + "27.0054107438\n", + "22.1390892039\n", + "36.8984820064\n", + "16.2032464463\n", + "9.87397266942\n" + ] + } + ], + "source": [ + "# design a steppedimpedence low pass filter having a maximally flat response and a cutoff frequency of 2.5 GHZ.\n", + "from math import pi\n", + "\n", + "w=4*10**9;wc=2.5*10**9;Zh=150;Ro=50;Zl=10; 62\n", + "C1 =0.517; L2 =1.414; C3 =1.932; L4 =1.932; C5 =1.414; L6 =0.517;\n", + "# above values are taken from table.\n", + "# for finding electrical lengths .\n", + "x1=(C1*Zl/Ro)*(180/pi);\n", + "x2=(L2*Ro/Zh)*(180/pi);\n", + "x3=(C3*Zl/Ro)*(180/pi);\n", + "x4=(L4*Ro/Zh)*(180/pi);\n", + "x5=(C5*Zl/Ro)*(180/pi);\n", + "x6=(L6*Ro/Zh)*(180/pi);\n", + "print(x1)\n", + "print(x2)\n", + "print(x3)\n", + "print(x4)\n", + "print(x5)\n", + "print(x6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.8 page.no:486" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "attenuation in db = 20\n" + ] + } + ], + "source": [ + "# design a coupled line band pass filter with N=3.\n", + "\n", + "delta=0.1;f=1.8*10889;fo=2*10889;Zo=50;fc=1;\n", + "f=(1/delta)*((f/fo)-(fo/f));\n", + "x=abs(f/fc)-1; # the value on the horizontal scale.\n", + "attntn=20; # from above values .\n", + "print \"attenuation in db = \",attntn" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.9 page.no:489" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the cahracteristic impedence of a bandpass filter is = 265.87\n", + "for a bandpass filter using short circuited stub resonators , the corresponding result is = 3.69\n" + ] + } + ], + "source": [ + "# design a bandpass filter using three quarter wave open circuit stubs .\n", + "from math import pi\n", + "\n", + "f=2*10**9;delta=0.15;Zo=50;N=3;gn=1.5963; 63\n", + "Zon=4*Zo/(pi*gn*delta);\n", + "Z_on=(pi*Zo*delta)/(4*gn);\n", + "print \"the cahracteristic impedence of a bandpass filter is = %.2f\"%Zon\n", + "print \"for a bandpass filter using short circuited stub resonators , the corresponding result is = %.2f\"%Z_on" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:8.10 page.no:492" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "thetao in degree = 155.813419985\n", + "the coupling capacitor value in PF = 0.553745271333\n" + ] + } + ], + "source": [ + "# design a bandpass filter using capacitive coupled resonators , with a 0.5 db equal passband haracteristic .\n", + "from math import pi,sqrt,atan\n", + "\n", + "fo=2*10**9;delta=0.1;Zo=50;\n", + "f=2.2*10**9;g1=1.5963;\n", + "g2 =1.0967;g3=1.5963;g4=1;\n", + "f=(1/delta)*((f/fo)-(fo/f));\n", + "x=abs(f/fo)-1; # the value on the horizontal scale.\n", + "x0=sqrt((pi*delta)/(2*g1))/Zo; # x0=ZoJ1 ;\n", + "x1=((pi*delta)/(2*sqrt(g1*g2)))/Zo; # x0=ZoJn ;\n", + "B0=x0/(1-(Zo*x0)**2)\n", + "B1=x1/(1-(Zo*x1)**2)\n", + "theta0=(pi-0.5*(atan(2*Zo*B0)+atan(2*Zo*B1)))*(180/ pi);\n", + "C0=(B0/(2*pi*fo))*10**12;\n", + "print \"thetao in degree = \",theta0\n", + "print \"the coupling capacitor value in PF = \",C0" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_4.ipynb new file mode 100644 index 00000000..77872af2 --- /dev/null +++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_4.ipynb @@ -0,0 +1,151 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 9 THEORY AND DESIGN OF FERRIMAGNETIC COMPONENTS" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example:9.2 page.no:525" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "for total reverse attenuation of 20 db,the length of the slab in cm must be = 2.41935483871\n", + "for total reverse attenuation to be at least 27 db, alpha in db/cm be > 11.16\n" + ] + } + ], + "source": [ + "# program to design an e plane resonance isolatorin x band waveguide .\n", + "\n", + "er =13; revatt =30;\n", + "deltaH=200;x=1700; # x=4⇤pi⇤Ms.\n", + "f=10*10**9;alpha_=12.4; # from graph 10.13.\n", + "L=revatt/alpha_;\n", + "alpha_1=27/L;\n", + "print \"for total reverse attenuation of 20 db,the length of the slab in cm must be = \",L\n", + "print \"for total reverse attenuation to be at least 27 db, alpha in db/cm be > \",alpha_1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:9.3 page.no:528" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the slab length required for 30db total reverse attenuation in cm = 15\n", + "cut-off wave number in m-1 = 137.428\n", + "propagation constant = 158.046\n" + ] + } + ], + "source": [ + "# program to design a resonance isolator using the H-plane ferrite slab geometry in x-band.\n", + "from mpmath import atan\n", + "from math import pi,sqrt\n", + "\n", + "f=10*10**9;delta_sbys=0.01;forpims=1700;deltaH=200;\n", + "revatt=30;ko=(2*pi*f)/(3*10**8);\n", + "Ho=f/(2.8*10**9);\n", + "# for x-band waveguide , a=2.286 cm.\n", + "a=2.286;\n", + "kc=(pi*100)/a;\n", + "betao=sqrt(ko**2-kc**2);\n", + "x=(1/pi)*atan(kc/betao); # x=c/a .\n", + "L=revatt/2;\n", + "print \"the slab length required for 30db total reverse attenuation in cm = \",L\n", + "print \"cut-off wave number in m-1 = %.3f\"%kc\n", + "print \"propagation constant = %.3f\"%betao" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example:9.4 page.no:532" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the ferrite length required for the 180 deg phase shift section in cm = 3.75\n", + "the ferrite length required for the 90 deg phase shift section in cm = 1.875\n" + ] + } + ], + "source": [ + "# program to design a two slab remanent phase shifter .\n", + "from math import pi\n", + "\n", + "forpims=1786;er=13;f=10*10**9;\n", + "uo=4*pi*10**-7;ko=(2* pi*f)/(3*10**10);\n", + "fm=2.8;s=0.1;# s and a in cm.\n", + "x=(2*pi*fm*forpims)/(2*pi*f);# x=wm/w = k/uo. 6 a=2.286; # for x-band.\n", + "t=.274; #from figure 10.19;\n", + "diffphaseshift=0.4*ko*(180/pi); # differential phase shift .\n", + "L_1=180/diffphaseshift;\n", + "L_2=90/diffphaseshift;\n", + "print \"the ferrite length required for the 180 deg phase shift section in cm = \",L_1\n", + "print \"the ferrite length required for the 90 deg phase shift section in cm = \",L_2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_1_1.png b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_1_1.png new file mode 100644 index 00000000..6623a930 Binary files /dev/null and b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_1_1.png differ diff --git a/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_2_1.png b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_2_1.png new file mode 100644 index 00000000..b9f2e1de Binary files /dev/null and b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_2_1.png differ diff --git a/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_3_1.png b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_3_1.png new file mode 100644 index 00000000..20f1b38a Binary files /dev/null and b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_3_1.png differ -- cgit