summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Analog_Electronics_by_U._A._Bakshi_And_A._P._Godse/README.txt10
-rw-r--r--Applied_Thermodynamics_and_Engineering_by_T._D._Eastop_and_A._Mcconkey/README.txt10
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/Chapter1_8.ipynb393
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter10_8.ipynb785
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter11_8.ipynb376
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter12_8.ipynb411
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter13_7.ipynb225
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter2_8.ipynb325
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter4_8.ipynb439
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter5_8.ipynb885
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter6_8.ipynb570
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter7_8.ipynb257
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter8_8.ipynb345
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/chapter9_8.ipynb229
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/charpter_3_9.ipynb288
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/1_6.PNGbin0 -> 55244 bytes
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/2_6.PNGbin0 -> 43946 bytes
-rw-r--r--Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/3_6.PNGbin0 -> 55584 bytes
-rw-r--r--Fundamentals_Of_Electronic_Devices_by_P._Raja,_Pragati_Sharma/README.txt10
-rw-r--r--Grobs_Basic_Electronics_by_M_E_Schultz/README.txt10
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/.chapter2.ipynb.swpbin0 -> 16384 bytes
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/Chapter9_11.ipynb421
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter1_11.ipynb629
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter2_9.ipynb2188
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter3_9.ipynb1140
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter4_11.ipynb880
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter6_11.ipynb1072
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter7_11.ipynb714
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter8_11.ipynb1093
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter_5_11.ipynb359
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex1.2_6.pngbin0 -> 18718 bytes
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex3.7_3.pngbin0 -> 17630 bytes
-rw-r--r--Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex6.5_3.pngbin0 -> 32808 bytes
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_4.ipynb227
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_4.ipynb264
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_4.ipynb298
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_4.ipynb496
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_4.ipynb367
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_4.ipynb308
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_4.ipynb200
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_4.ipynb328
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_4.ipynb393
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_4.ipynb449
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_4.ipynb151
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/screenshots/chap_1_1.pngbin0 -> 29714 bytes
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/screenshots/chap_2_1.pngbin0 -> 83597 bytes
-rw-r--r--Microwave_engineering__by_D.M.Pozar_/screenshots/chap_3_1.pngbin0 -> 31590 bytes
47 files changed, 17545 insertions, 0 deletions
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": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEACAYAAABYq7oeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XucTfX+x/HXZ8g1l5LEiORSUkiRTmgSGkWU04lc0o2S\n6lzquPxMBoU61XHrHCqZTKI7k1IumeRILsctkUtzlJlQiEwuY+b7+2M2TTODuezZa8/e7+fjMY/H\nrL2/a+23ZWZ95ru+a32XOecQERHJKsLrACIiEnxUHEREJAcVBxERyUHFQUREclBxEBGRHFQcREQk\nB78UBzOLNrPNZrbFzAbl8v4lZrbMzI6Y2V9zeT/CzP5rZgn+yCMiIoVT6OJgZhHAJOAmoBHQw8wu\nzdZsL/AI8I9TbOYx4OvCZhEREf/wR8+hBbDVObfDOZcGzAK6ZG3gnPvJObcaOJ59ZTOrCdwMvOKH\nLCIi4gf+KA6RwPdZlnf6XsurfwJPALpVW0QkSHg6IG1mtwC7nXNrAfN9iYiIx0r6YRvJQK0syzV9\nr+XFdcCtZnYzUBaoYGbTnXN9sjc0M/UsREQKwDmX7z+8/dFzWAnUM7PaZlYK6A6c7qqjkyGdc0Od\nc7Wccxf71vs0t8KQpb2+nGP48OGeZwiWL+0L7Qvti9N/FVShew7OuXQzGwjMJ7PYTHXObTKz/plv\nu5fMrBqwCqgAZJjZY8BlzrlDhf18ERHxP3+cVsI59zFwSbbXpmT5fjdw4Rm28RnwmT/yiIhI4egO\n6WIoKirK6whBQ/viN9oXv9G+KDwrzDmpQDIzV1yyiogECzPDeTQgLSIiIUbFQUREclBxEBGRHFQc\nREQkBxUHERHJQcVBRERyUHEQEZEcVBxERCQHFQcREclBxUFERHJQcRARkRxUHEREJAe/TNktEo6S\nknYQExNHcnIGkZERjBrVlzp1ansdS8QvNCurSAEkJe2gffuJbN8+AigPpFK37nAWLHhEBUKCSkFn\nZVVxEMmHtPQ0Nv64kQdHPsmXO6tA5Bqo9B3sbgzJTWl1cQrxY5+ldqXamOX791HE71QcRPzMOce2\nfdtYkbyClSkrWZmykrW71lK7Um32fXUWu//7ACS3gAO1oNp6qLGS85pMp+RFB0nPSKd5ZHOa12hO\ni8gWNK/RnKrlq3r9T5IwpOIgUkjJB5Mzi0DySlakrGBVyioqlq74uwP8VTWuomLpivTqNYIZMx4n\n85TSCan07Pkc8fFPkvxLMiuTMwvKiuTMbVUuU/nkdppHNueq6ldRoXQFr/65EiY8LQ5mFg2MI/Pq\np6nOuWeyvX8JMA1oBgx1zr3ge70mMB2oBmQALzvnJpziM1QcxG/2H97PqpRVv+sVHD1+9HcH7+Y1\nmlPt7Gq5rp/fMYcMl/FbL8RXNNbtXsdFlS/6XfFpXK0xpUuWLtp/vIQVz4qDmUUAW4AbgRRgJdDd\nObc5S5vzgNpAV2B/luJwAXCBc26tmZ0NrAa6ZF03yzZUHKRADqcdZs2uNb8VguSV/HDoB5pVb/a7\nA/NFlS/K1zjBiauVUlIyqFEj/1crpaWn8dWer072LlamrGTbvm00qtroZIFqEdmCS6pcQomIEgX4\nl4t4WxxaAsOdcx19y4MBl7334HtvOPDLieKQy/uzgYnOuUW5vKfiICed6jLS4xnHMw+4WU7pbNm7\nhcuqXva7XkHD8xoG5QE39Vgqa3atOXlqa2XySvak7qFZ9Wa/y591wFuX1MrpeFkcugE3Oef6+ZZ7\nAS2cc4/m0vaUxcHMLgISgcudc4dyeV/FQYCsp3Ri4dwfIHIplS6bRL02xuafN1OrUq3fDQY3rtaY\nMiXLeB27wPb+updVKatOnv5akbzi5IB3vbL1eeuf37Fr9Qvw60XoklrJrqDFIShugvOdUnoHeCy3\nwiCSVUxMHNuPt4eHW0CpQ5DcggM7b6Pymm2kTPqUiqUreh3Rr6qUq8JN9W7ipno3AZlXUZ0Y8B42\n+QV21SkJ1zWFb9vBvPFs3z6CmJjneP314R4nl+LMH8UhGaiVZbmm77U8MbOSZBaGeOfcnNO1jY2N\nPfl9VFQUUVFR+ckpIWDvr3tZdPZs6PYyzJsAm24DMv8oyig1POQKQ27MjJoVa1KzYk0mrF/L14kj\noOQRaD0aHmoCibEkpxz3OqZ4JDExkcTExEJvxx/FYSVQz8xqAz8A3YEep2mfvXvzKvC1c278mT4o\na3GQ8OKc4/X1r/PEgieoXLY2u15cCUerZ2mRSo0a4TdVWGRkBJAKx8vD4pGwoQd0vp8N1f7H2l3d\naHpBU68jSoBl/8N5xIgRBdqOPy9lHc9vl7KONbP+ZA5Mv2Rm1YBVQAUyL1k9BFwGNAGWABsA5/sa\n6pz7OJfP0JhDmNq6dysPfvgg+w/vZ0qnKZx37HxNXeGT2yW1F9d9kn7/uoDn1/2DPk36EBsVy9ml\nzvY6qnhEN8FJyDl6/CjP/udZxn85nqGth/LoNY9SMiKzs1vYy0hDyan2xZ7UPTw+/3GW7FjCpJsn\n0alBJ6+jigdUHCSkLNmxhP5z+1P/3PpM7DiR2pXD88DvDwu/XchDHz5Ek2pNGB89nsiKkV5HkgAq\naHEIv5O0EtT2/rqX++bcx13v3sXTbZ9mTvc5KgyF1O7idmx4aAOXVb2MJpObMGnFJNIz0r2OJUFO\nPQcJClkHnP/U6E881fapsLjyKNA2/biJ/nP7c+T4EV7q/JIGrMOATitJsZV9wLl5ZHOvI4W0DJdB\n3No4Bi8crAHrMKDTSlLsHD1+lFGfjeLaqddyS/1bWPHAChWGAIiwCO698l6+GvAVe1L3cPm/Lmfu\nlrlex5Igo56DeEIDzsFDA9ahTT0HKRZODDj3fK8no9uO1oBzEMg6YN10SlMNWAugnoMESNYB5zsb\n3cmotqM04ByENGAdejQgLUFLA87FiwasQ4tOK0nQ0YBz8aQBawH1HKSIaMA5dGjAunhTz0GCggac\nQ48GrMOTeg7iFxpwDg8asC5+NCAtAZHb84qPVzymAecwktuA9Y/Je/Uc6yCl4iBFLsezA0rs45zO\nneGaTQy7ftjvptSW0HdiSvBPt39K+gfN2bXkdcL9+RrBSMVBilyvXiOYMeNxoDzUXgKd+sO+i+lS\nqgGz4/7pdTzxyI0P9OHTsstgd1OYNx5+iQRS6dlTz7EOBhqQliKXnJwBlIcrX4U/dodPn4aZczn4\nncYWwlnGtjrw76/gx4bQ72qo+jVQnpSUDK+jSSHoHIDkWWRkBFw+DW6IgbhE2NuAcH12s/wmMjIC\njqfD4lGZPxO9O0DcR/q5KOb0vyd51uqBCyhxy0B4/f2ThaFu3eGMGtXX42TipVGj+lK37nAgFdb3\nhs8GUfLe1jw4qJ3X0aQQ/DLmYGbRwDgyi81U59wz2d6/BJgGNAOGOudeyOu6WdppzMFD87bOo++c\nvrwS9SpvjlulZzfL72R/jnWdHunM3P4GS+5ZQo0KNbyOF9Y8G5A2swhgC3AjkAKsBLo75zZnaXMe\nUBvoCuw/URzysm6Wbag4eGRx0mLufOdOEnok0LJmS6/jSDEx5vMxxK+P57O+n1G1fFWv44QtLwek\nWwBbnXM7nHNpwCygS9YGzrmfnHOrgeP5XVe8tez7Zdz5zp28fcfbKgySL0NaD+H2hrfTPr49+w/v\n9zqO5JM/ikMk8H2W5Z2+14p6XSliq1NW03VWV+Jvi+f6i673Oo4UQ6NuGEXbOm2JnhHNwaMHvY4j\n+VCsrlaKjY09+X1UVBRRUVGeZQl1G3Zv4JY3buHlzi9zU72bvI4jxZSZ8XyH5xnw4QA6vdGJeT3n\nUb5Uea9jhbTExEQSExMLvR1/jDm0BGKdc9G+5cGAy21g2cyGA79kGXPIz7oacwiQb376hrbT2/JC\nhxe48/I7vY4jISDDZXDPnHv44ZcfSOiRQJmSZbyOFDa8HHNYCdQzs9pmVgroDiScpn3WkPldV4pY\n0v4k2se35+m2T6swiN9EWARTb53KOWXP4Y637+BY+jGvI8kZ+PNS1vH8djnqWDPrT2Yv4CUzqwas\nAioAGcAh4DLn3KHc1j3FZ6jnUMR2HtxJm2ltePwPjzOg+QCv40gISktPo9tb3ShTsgxvdHtDc3EF\ngOZWkkLZfWg3beLa0K9ZP/72h795HUdC2JHjR7h15q1ccPYFxHWNI8J0L25R0txKUmB7f91Lu/h2\n9LqilwqDFLkyJcswu/tsdhzYwYAPB6A/+oKTikOY+/nIz3R4vQO31L+FYW2GeR1HwkS5s8oxt8dc\n1u5ay18/+asKRBBScQhjh44d4uYZN3Pdhdcx5sYxmOW75ylSYBVKV2Bez3kk7kgkZnGM13EkGxWH\nMHU47TCdZ3amUdVGjIsep8Ignjin7DnM7zWf9za9x9NLnvY6jmSh4hCGjh4/yu1v3U6NCjWY3Gmy\nBgTFU1XLV2VRn0XErYtj3PJxXscRH11HFmbS0tPo8W4Pyp1Vjte6vkaJiBJeRxKheoXqLOqziDbT\n2lC2ZFn6X93f60hhT8UhjKRnpHP37Ls5mn6U9+98X9eYS1CpVakWi/os4vq46yl7Vln6NOnjdaSw\npqNDmMhwGTzwwQPsTt3N3B5zKVWilNeRRHKoe25dFvReQNvpbSlbsix3NLrD60hhS8UhDDjneHTe\no3yz9xs+6fUJZc8q63UkkVNqWLUhH/f8mA6vd6BMyTJ0vqSz15HCkkYiQ5xzjkELB7F853I+uusj\nzi51tteRRM6oyQVN+KDHB9yXcB8Lti/wOk5YUnEIcSM/G8nH2z7mk16fUKlMJa/jiORZi8gWvHfn\ne9z13l0s2bHE6zhhR8UhhD37n2eZ+dVMFvReQJVyVbyOI5JvrWq1Yma3mfzxrT/y5c4vvY4TVlQc\nQtSkFZOYsnoKi/osotrZ1byOI1Jg7S5ux6tdXuXWWbeydtdar+OEDRWHEPTqmld59j/PsrD3QiIr\n6qmrUvx1atCJF29+kY4zOvL1j197HScs6GqlEDNzw0xiFsew+O7F1DmnjtdxRPzmj5f9kSPHj9Ah\nvgOJfROpd249ryOFNBWHEPL+pvf5yyd/YWGfhTSo0sDrOCJ+16txL35N+5V209vxWd/PqF25tteR\nQpaKQ4iYt3Ue/ef25+NeH3P5+Zd7HUekyPS7qh+/pv3KjdNvZMk9S6hRoYbXkUKSikMIWJy0mLtn\n382c7nNoVr2Z13FEityfW/6Zw2mHT/Ygqpav6nWkkKMB6WJu2ffLuPOdO3nrjre49sJrvY4jEjBD\nWg+hW8NutI9vz/7D+72OE3L8UhzMLNrMNpvZFjMbdIo2E8xsq5mtNbOmWV4fYmYbzWy9mc0wM036\nk0erU1bTdVZX4m+LJ+qiKK/jiATcyBtGcmOdG4meEc3Bowe9jhNSrLCP5zOzCGALcCOQAqwEujvn\nNmdp0xEY6Jy7xcyuAcY751qaWW1gMXCpc+6Ymb0JfOicm57L57hwf5RgUtIOYmLiSE7OoFydH1lx\nydu80uUVulzaxetoIp5xzjHgwwFs/HEj/75uCmNGvkVycgaRkRGMGtWXOnXCe9DazHDO5ftpXv4Y\nc2gBbHXO7fAFmQV0ATZnadMFmA7gnPvSzCqZWTXgIHAMKG9mGUA5MguMZJOUtIP27SeyffsIqLIT\nmt3A+QuuofGfmp55ZZEQZma8eMuL3PH6HTR/viOH31wNx6sAqSxfPpwFCx4J+wJREP44rRQJfJ9l\neafvtdO1SQYinXP7geeB73yv/eycW+iHTCEnJiYuszBU3gN92sOnT7Nn0ZvExMR5HU3EcxEWQelP\nGnF431VwR18ocQwoz/btI/Q7UkCeXq1kZhcDfwFqAweAd8zsLufcG7m1j42NPfl9VFQUUVFRAUgZ\nHJKTM6BESejeFZb9DdbeA0BKSobHyUSCww/JBktmQY9b4YYYWPgMUD7sfkcSExNJTEws9Hb8URyS\ngVpZlmv6Xsve5sJc2lwP/Mc5tw/AzN4D/gCcsTiEm8jICIgaBgdqw5eP+l5NpUYNXXAmAr7fkYxj\n8P50eKgxbOkM310Zdr8j2f9wHjFiRIG244+9thKoZ2a1fVcadQcSsrVJAPoAmFlLMk8f7Qa+AVqa\nWRkzMzIHtTf5IVPI6frIFZS4+l+QMA4wIJW6dYczalRfb4OJBIlRo/pSt+5w+LUczJ0MXftQ55Ih\n+h0poEL3HJxz6WY2EJhPZrGZ6pzbZGb9M992LznnPjKzm81sG5AK3ONbd52ZTQdWA+nAGuClwmYK\nNanHUhmyYhATop9n2c54UlIyqFEjglGjNNAmckKdOrVZsOARYmKeIyUlgx0lK9Jy+D79jhRQoS9l\nDZRwvpT14Q8f5uCxg8TfFu91FJFi48CRAzSe3JgpnaYQXS/a6zieKeilrOF1Mq4Ymr99PglbEpjY\ncaLXUUSKlUplKjGtyzTuT7iffYf3eR2n2FFxCGL7D+/nvoT7ePXWV6lcprLXcUSKnbZ12tKtYTcG\nfjTQ6yjFjopDEHv040e5tcGttK/b3usoIsXWmHZjWP3Dat7a+JbXUYoVzcoapN79+l2W71zO2v56\nLKJIYZQ7qxzxt8XTeWZnWtdqTfUK1b2OVCyo5xCEdh3axcMfPcz0rtMpX6q813FEir0WkS3of1V/\n7v/gfsL1wpb8UnEIMs45+n3Qj3uvvFdTcIv40bA2w/jhlx+Yumaq11GKBRWHIBO3No7vDnxHbFSs\n11FEQkqpEqWIvy2eIYuGkLQ/yes4QU/FIYj87+f/8feFf2f6bdMpVUKPtRDxt0bnN2LQdYO4e/bd\npGekex0nqKk4BIkMl8E9c+7h8Wsfp3G1xl7HEQlZf2n5FwDGLR/ncZLgpuIQJCZ8OYFj6cd4/A+P\nex1FJKSViChBXNc4xv5nLBv3bPQ6TtBScQgCm37cxFNLnuK1rq9RIqKE13FEQt7F51zM6Laj6TO7\nD2npaV7HCUoqDh5LS0+jz+w+jLphFPXOred1HJGwcX+z+6lWvhpPLXnK6yhBScXBY2OWjqFK2So8\nePWDXkcRCStmxtRbpzJ59WRWJq/0Ok7QUXHw0KqUVUxaMYmpt04l83EWIhJI1StUZ0L0BHq/35vD\naYe9jhNUVBw8cjjtMH3e78O46HFEVsz+yG0RCZQ7L7+TK6tfyZBFQ7yOElRUHDwy7NNhNDq/ET0u\n7+F1FJGw9+LNL/LO1++wOGmx11GChoqDBz7732fM/Gom/77l3zqdJBIEzi17Li93fpm+c/py4MgB\nr+MEBRWHADt49CB95/Tlpc4vcV6587yOIyI+Het3pGO9jvz5kz97HSUo6DGhAXZ/wv0AvHLrKx4n\nEZHsDh07RJPJTXihwwt0ubSL13H8wtPHhJpZtJltNrMtZjboFG0mmNlWM1trZk2zvF7JzN42s01m\nttHMrvFHpmA0d8tcFiUt4oWbXvA6iojk4uxSZ/Na19d48MMH+TH1R6/jeKrQxcHMIoBJwE1AI6CH\nmV2arU1HoK5zrj7QH5ic5e3xwEfOuYZAE2BTYTMFo59+/Yl+H/QjrkscFUtX9DqOiJxCq1qt6N24\nN/3n9g/rZz/4o+fQAtjqnNvhnEsDZgHZ+2NdgOkAzrkvgUpmVs3MKgKtnXPTfO8dd84d9EOmoOKc\n46EPH6LH5T24/qLrvY4jImcw8oaRbN23ldfXv+51FM/4ozhEAt9nWd7pe+10bZJ9r9UBfjKzaWb2\nXzN7yczK+iFTUJn51Uw27tnI0zc+7XUUEcmDMiXLML3rdP42/298f+D7M68Qgrx+hnRJoBnwsHNu\nlZmNAwYDw3NrHBsbe/L7qKgooqKiAhCxcJIPJvPnj//MvJ7zKFOyjNdxRCSPrqx+JY9d8xj3JtzL\nJ70+IcKKx8WdiYmJJCYmFno7hb5aycxaArHOuWjf8mDAOeeeydJmMrDYOfemb3kzcOL8yhfOuYt9\nr7cCBjnnOufyOcXuaiXnHB1ndOTamtcyPCrXeiciQex4xnFavZo5BvFwi4e9jlMgXl6ttBKoZ2a1\nzawU0B1IyNYmAegDJ4vJz8653c653cD3ZtbA1+5G4Gs/ZAoKU1ZPYe/hvQxtPdTrKCJSACUjSvJa\n19cYnjicLXu3eB0noPxyn4OZRZN51VEEMNU5N9bM+pPZg3jJ12YSEA2kAvc45/7re70J8ApwFvCt\n770ctygWt57Dtn3baPlKSz6/53MaVm3odRwRKYSJX07kja/e4PN7PqdkhNdn4/OnoD0H3QRXBNIz\n0mkT14Y7LruDP7fU3ZYixV2Gy6BDfAfa1mlb7M4EeHoTnPzec8ueo1SJUjx6zaNeRxERP4iwCKZ1\nmca45eNYu2ut13ECQsXBz9bvXs9zXzxHXJe4YnN1g4ic2YWVLuS5Ds/R+/3eHD1+1Os4RU5HLz86\nln6MPu/34dl2z1K7cm2v44iIn/Vu3Jv659ZneGLoX32o4uBHIxJHUKtSLfo27et1FBEpAmbGlE5T\neG3dayz9bqnXcYqUioOffPH9F0xdM5WXO7+sZzSIhLCq5asy+ZbJ3D37bg4dO+R1nCKj4uAHqcdS\nuXv23bx484tUO7ua13FEpIh1ubQLrWu15on5T3gdpcjoUlY/GPjRQA4cPUD8bfFeRxGRADlw5ACN\nJzdmSqcpRNeL9jrOKelSVo8s2L6AOd/MYWLHiV5HEZEAqlSmEtO6TOP+hPvZd3if13H8TsWhEH4+\n8jP3JdzHq7e+SuUylb2OIyIB1rZOW7o17MbAjwZ6HcXvVBwK4dF5j9K5QWfa123vdRQR8ciYdmNY\n/cNq3tr4ltdR/Kp4TRISRN7b9B5f7PyCtf3D425JEcldubPKEX9bPJ1ndqZ1rdZUr1Dd60h+oZ5D\nAew+tJsBHw5getfplC9V3us4IuKxFpEt6NesHw988EDIPFpUxSGfnHP0m9uPe6+8l2svvNbrOCIS\nJGKujyHllxSmrpnqdRS/0KWseZCUtIOYmDiSkzM4cuk6DjTcwtqH11KqRClP8ohIcNq4ZyNtXm1D\n6829ObCjEpGREYwa1Zc6dbybTqegl7JqzOEMkpJ20L79RLZvHwGVfoLmV1Fz+i0kd/7B0/9wEQk+\n5VLPxpZdzpwqq+CzJeAOs3z5cBYseKTYHS90WukMYmLiMguDlYWu98CyJ9i5+l/ExMR5HU1EgkxM\nTBx7534AFgEtxwHl2b59RLE8Xqg4nEFycgZQHi57G0ofgGWPA+VJScnwOpqIBJnk5AxwFWH2NGg9\nGsrvobgeL1QcziAyMgIifoa2w2DhM+BKAKnUqKFdJyK/FxkZAaTC/rqwvie0eYrierzQgPQZJCXt\noMWA+/mpajrEfwqkUrdu8TyHKCJF63djlOVT4eGG1PrkdhLfH+bZ8cLTZ0ibWTQwjsyeyFTn3DO5\ntJkAdARSgb7OubVZ3osAVgE7nXO3nuIzPCkOqcdSuXjcxTT7pgtHk6pTo4b3Vx+ISPA6cXVjSkoG\nP13+GXWbn8v7vd/zLI9nxcF3YN8C3AikACuB7s65zVnadAQGOuduMbNrgPHOuZZZ3v8LcBVQMdiK\nw5jPx7Bm1xreuiO0bo0XkaL3y9FfqD+xPvN7z6dxtcaeZPByVtYWwFbn3A7nXBowC+iSrU0XYDqA\nc+5LoJKZVQMws5rAzcArfsjiV/sO7+P5L57nqbZPeR1FRIqhCqUrMKTVEIYuGup1lHzzR3GIBL7P\nsrzT99rp2iRnafNP4Akg6AY/xi4dS7eG3WhQpYHXUUSkmHrw6gf5as9XfL7jc6+j5IunN8GZ2S3A\nbufcWjOLAk7b9YmNjT35fVRUFFFRUUWWbefBnUxdM5X1D64vss8QkdBXumRpRt4wksGLBrP0nqVF\n/hjhxMREEhMTC70df4w5tARinXPRvuXBgMs6KG1mk4HFzrk3fcubgeuBx4BewHGgLFABeM851yeX\nzwnomMMDCQ9QpVwVxrYbG7DPFJHQlJ6RTtMpTRnddjSdL+kc0M/2csxhJVDPzGqbWSmgO5CQrU0C\n0AdOFpOfnXO7nXNDnXO1nHMX+9b7NLfCEGibf9rM7G9mM+i6QV5HEZEQUCKiBKPbjmbIoiGkZ6R7\nHSdPCl0cnHPpwEBgPrARmOWc22Rm/c2sn6/NR0CSmW0DpgADCvu5RWnYp8N4/NrHOafsOV5HEZEQ\n0alBJyqXqcyMDTO8jpInugkumxXJK7j9zdvZ8sgWyp1Vrsg/T0TCx9LvltLrvV58M/AbSpcsHZDP\n9PK0UshwzjF44WCevP5JFQYR8btWtVpxRbUrmLxqstdRzkjFIYsF3y4g+Zdk7r3yXq+jiEiIGt12\nNKOXjubg0YNeRzktFQefDJfBkEVDeOqGpygZocdciEjRuKLaFdxU9yaeX/a811FOS8XB5+2Nb2MY\nf7zsj15HEZEQN/KGkUxaOYk9qXu8jnJKKg5AWnoawxYPY2y7sUV+g4qIyEWVL6LXFb14aknwTs2j\n4gBMXTOViypfRLuL23kdRUTCxP+1+T9mbJhB0v4kr6PkKuwvZU09lkr9ifVJ6JHA1TWu9vv2RURO\nJTYxlu37txN/W3yRfYYuZS2gCV9OoFWtVioMIhJwf7v2byzYvoD1u4NvDrew7jnsO7yPBhMbsOy+\nZZp5VUQ8MX75eBZ8u4C5d80tku2r51AAmpJbRLwWrFN6h23PYefBnTSZ3IQND22gRoUaftuuiEh+\nTV83nSmrpxTJlN7qOeTTiMQRPNDsARUGEfFczyt6cvDoQeZuKZpTSwURlsVBU3KLSDAJxim9w7I4\naEpuEQk2wTald9gVhxXJK1i+czmPXPOI11FERE4yM8a2G8uTi5/k6PGjXscJr+KgKblFJJidmNL7\n36v+7XWU8CoOmpJbRILd6LajGbN0jOdTeodNcchwGQxeOFhTcotIUAuWKb3Dpji8vfFtIixCU3KL\nSNAbETXC8ym9/VIczCzazDab2RYzy/X6UDObYGZbzWytmTX1vVbTzD41s41mtsHMHvVHnuw0JbeI\nFCd1zqnj+ZTehS4OZhYBTAJuAhoBPczs0mxtOgJ1nXP1gf7AiQeoHgf+6pxrBFwLPJx9XX/QlNwi\nUtx4PaVwgdfZAAAKMUlEQVS3P3oOLYCtzrkdzrk0YBbQJVubLsB0AOfcl0AlM6vmnNvlnFvre/0Q\nsAmI9EOmk1KPpTLys5GMuXGMPzcrIlKkzi9/Po+0eIQnE5/05PP9URwige+zLO8k5wE+e5vk7G3M\n7CKgKfClHzKdpCm5RaS4+uu1f2X+9vmeTOkdFJftmNnZwDvAY74eRK5iY2NPfh8VFUVUVNRpt7vv\n8D6e/+J5lt23zD9BRUQCqGLpigxtNZShi4bmeUrvxMREEhMTC/3ZhZ6V1cxaArHOuWjf8mDAOeee\nydJmMrDYOfemb3kzcL1zbreZlQTmAvOcc+NP8zn5npX17wv+zoEjB5jSeUq+/10iIsHg6PGjXDLp\nEuJvi6d17db5Xt/LWVlXAvXMrLaZlQK6AwnZ2iQAfeBkMfnZObfb996rwNenKwwFsfPgTqaumcrw\nqOH+3KyISECVLlmakTeMZPCiwQTyEQuFLg7OuXRgIDAf2AjMcs5tMrP+ZtbP1+YjIMnMtgFTgIcA\nzOw6oCfQ1szWmNl/zSy6sJlAU3KLSOjwYkrvkHzYz+afNtN6Wmu2DNyimVdFJCR88M0HDFk0hHUP\nrqNERIk8r6eH/WShKblFJNScmNL79fWvB+TzQq44aEpuEQlFJ6b0Hp44PCBTeodUcdCU3CISygI5\npXdIFQdNyS0ioS5QU3qHTHHQlNwiEg4CNaV3yBQHTcktIuEiEFN6h0Rx0JTcIhJOAjGld0gUB03J\nLSLhpqin9C72N8GlHkul/sT6JPRI0MyrIhJWYhNj2b5/O/G3xZ+yTdjeBKcpuUUkXBXllN7Fuuew\n7/A+GkxswLL7ltGgSgOPkomIeGf88vEs+HbBKaf0Dsuew9ilY+nWsJsKg4iErQevfpCv9nzF5zs+\n9+t2i23PYefBnTSZ3IQND23QzKsiEtamr5vOlNVTWHrP0hxXbIZdz0FTcouIZDoxpfcHWz7w2zaL\nZXHY/NNmZn8zm0HXDfI6ioiI50pElGB029EMXTSU9Ix0v2yzWBYHTcktIvJ7/p7Su9gVB03JLSKS\nk7+n9C5WxUFTcouInFqrWq24/PzL/TKlt1+Kg5lFm9lmM9tiZrkOBJjZBDPbamZrzaxpftY9QVNy\ni4ic3ugb/TOld6GLg5lFAJOAm4BGQA8zuzRbm45AXedcfaA/MDmv62alKblFRE6vcbXGdKjbodBT\nevvjKNsC2Oqc2wFgZrOALsDmLG26ANMBnHNfmlklM6sG1MnDuift+N8urmrf3A+RRURC18iokTSb\n3IyNcb8WeBv+OK0UCXyfZXmn77W8tMnLuifte+slOnSYRFLSjkIFFhEJaT9H4NbV4d0fDxV4E14N\nSBfsoQvfdmL79hHExMT5N42ISAiJiYnjwNx34Yq3CrwNfxSHZKBWluWavteyt7kwlzZ5WTeLWOAf\n/Oc/n5KYmFjQvCIiISsxMZGlSz+F1NfglQ4F3o4/isNKoJ6Z1TazUkB3ICFbmwSgD4CZtQR+ds7t\nzuO6WcQCT3DddW2JioryQ3QRkdASFRVFq1ZtgSdg38wCb6fQxcE5lw4MBOYDG4FZzrlNZtbfzPr5\n2nwEJJnZNmAKMOB0657601KpW3c4o0b1LWxsEZGQNWpUX+rWHQ6kFngbxWpW1p49Yxk1qi916tT2\nOo6ISFBLStpBTEwcM2bEFmhW1mJVHIpLVhGRYBF2U3aLiEjRUXEQEZEcVBxERCQHFQcREclBxUFE\nRHJQcRARkRxUHEREJAcVBxERyUHFQUREclBxEBGRHFQcREQkBxUHERHJQcVBRERyUHEQEZEcVBxE\nRCQHFQcREclBxUFERHJQcRARkRwKVRzM7Bwzm29m35jZJ2ZW6RTtos1ss5ltMbNBWV5/1sw2mdla\nM3vXzCoWJo+IiPhHYXsOg4GFzrlLgE+BIdkbmFkEMAm4CWgE9DCzS31vzwcaOeeaAltzW19ySkxM\n9DpC0NC++I32xW+0LwqvsMWhC/Ca7/vXgK65tGkBbHXO7XDOpQGzfOvhnFvonMvwtVsO1CxknrCg\nH/zfaF/8RvviN9oXhVfY4nC+c243gHNuF3B+Lm0ige+zLO/0vZbdvcC8QuYRERE/KHmmBma2AKiW\n9SXAAcNyae4KEsLM/g9Ic869UZD1RUTEv8y5Ah3PM1c22wREOed2m9kFwGLnXMNsbVoCsc65aN/y\nYMA5557xLfcFHgDaOueOnuazCh5URCSMOecsv+ucsedwBglAX+AZ4G5gTi5tVgL1zKw28APQHegB\nmVcxAU8AbU5XGKBg/zgRESmYwvYczgXeAi4EdgB/cs79bGbVgZedc5187aKB8WSOcUx1zo31vb4V\nKAXs9W1yuXNuQIEDiYiIXxSqOIiISGgKujukT3XDXLY2E8xsq+/muaaBzhgoZ9oXZnaXma3zfS01\nsyu8yFnU8vIz4WvX3MzSzOz2QOYLpDz+fkSZ2Roz+8rMFgc6Y6Dk4fejipnN8x0nNvjGN0OSmU01\ns91mtv40bfJ33HTOBc0XmcVqG1AbOAtYC1yarU1H4EPf99eQeSrK8+we7YuWQCXf99GhuC/ysh+y\ntFsEzAVu9zq3hz8TlYCNQKRv+Tyvc3u4L4YDY07sBzJPX5f0OnsR7Y9WQFNg/Snez/dxM9h6Dqe8\nYS6LLsB0AOfcl0AlM6tG6DnjvnDOLXfOHfAtLif3+0eKu7z8TAA8ArwD7AlkuADLy764C3jXOZcM\n4Jz7KcAZAyUv+2IXUMH3fQVgr3PueAAzBoxzbimw/zRN8n3cDLbikJcb5rK3Sc6lTSjI682DJ9xP\naN5EeMb9YGY1gK7OuX+TeR9OqMrLz0QD4FwzW2xmK82sd8DSBVZe9sXLQCMzSwHWAY8FKFswyvdx\ns7CXskoQMLMbgHvI7FqGo3FA1nPOoVwgzqQk0AxoC5QHvjCzL5xz27yN5YkhwDrn3A1mVhdYYGaN\nnXOHvA5WHARbcUgGamVZrul7LXubC8/QJhTkZV9gZo2Bl4Bo59zpupXFVV72w9XALDMzMs8tdzSz\nNOdcQoAyBkpe9sVO4Cfn3BHgiJktAZqQeX4+lORlX1wHPA3gnNtuZknApcCqgCQMLvk+bgbbaaWT\nN8yZWSkyb5jL/gueAPSBk3df/+x88zuFmDPuCzOrBbwL9HbObfcgYyCccT845y72fdUhc9xhQAgW\nBsjb78ccoJWZlTCzcmQOPm4KcM5AyMu+2AS0A/CdX28AfBvQlIFlnLrXnO/jZlD1HJxz6WY2kMyp\nvE/cMLfJzPpnvu1ecs59ZGY3m9k2IJXM0ykhJy/7AogBzgX+5furOc0518K71P6Xx/3wu1UCHjJA\n8vj7sdnMPgHWA+nAS865rz2MXSTy+HMxBphmZuvIPGj+3Tm3z7vURcfM3gCigCpm9h2ZV2qVohDH\nTd0EJyIiOQTbaSUREQkCKg4iIpKDioOIiOSg4iAiIjmoOIiISA4qDiIikoOKg4iI5KDiICIiOfw/\n/vJBW0Moy/YAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0xbc673c8>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0xbd7ce80>"
+ ]
+ },
+ "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": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEACAYAAAC08h1NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHXZJREFUeJzt3Xt4VNW9xvHvCncQEBQpCUhDAAXkkigEqmgEoaDWW1tv\nVIph1JaLsc+hrRBowBC0PbUnMXhlYsEHLMdqT9WqlYtELhpuCRHlFgEjd4QCQriFZJ0/MoGIQEKS\nmT0z+/08zzzMntmz94/1JO/srL33WsZai4iIuEeE0wWIiEhgKfhFRFxGwS8i4jIKfhERl1Hwi4i4\njIJfRMRl6vp7B8aYr4BDQClQbK3t4+99iojI+fk9+CkL/ARr7YEA7EtERCoRiK4eE6D9iIhIFQQi\nkC0w3xiz0hjzSAD2JyIiFxCIrp7rrbW7jDGtKPsCWG+tXRqA/YqIyDn4Pfittbt8/35jjPk/oA9w\nOviNMRosSESkGqy1pjqf82tXjzGmsTHmEt/zJsBg4POz17PW6mEtKSkpjtcQLA+1hdpCbXHhR034\n+4i/NfB/vqP6usAca+08P+9TREQuwK/Bb63dCvTy5z5EROTi6DLLIJKQkOB0CUFDbXGG2uIMtUXt\nMDXtK6pxAcZYp2sQEQk1xhhsMJ7cFRGR4KPgFxFxGQW/iIjLKPhFRFxGwS8i4jIKfhERl1Hwi4i4\njIJfRMRlFPwiIi6j4BcRcRkFv4iIyyj4RURcRsEvIuIyCn4REZdR8IuIuIyCX0TEZRT8IiIuo+AX\nEXEZBb+IiMso+EVEXEbBLyLiMgp+ERGXUfCLiLiMgl9ExGUU/CIiLqPgFxFxGQW/iIjLKPhFRFxG\nwS8i4jIKfhERl1Hwi4i4jIJfRMRlFPwiIi6j4BcRcRm/B78xZogxZoMxZpMx5vf+3p+IiFyYX4Pf\nGBMBTAd+DHQDHjDGXH32er/4xRS2bi30ZykiIuLj7yP+PkCBtbbQWlsMzAXuPHulOXPGMWhQpsJf\nRCQA/B38UcC2Csvbfa99V/1SNm+ewqRJM/1cjoiI1HW6AACubQNf38CSZUVkZ99EQkKC0xWJiASV\n7OxssrOza2VbxlpbKxs658aN6QtMttYO8S0/CVhr7R8rrGNpnQ8DxtO4wzIyf/oXhvccTt2I4PhO\nEhEJRsYYrLWmOp/1d1fPSqCjMaa9MaY+cD/wzvfW2hNDzIouzPrJq8zKn0X3F7vz5ro38eeXkoiI\nW/n1iB/KLucEMij7ksmy1j5z1vt22LDJpKaOIDq6PdZaPtz8IRMWTiDCRDBt4DQGdRiEMdX6YhMR\nCUs1OeL3e/BXWoAx9lw1lNpS3lr3FhMXTSSyaSRPD3yavm37OlChiEjwCcvgL3eq9BSz1sxiysdT\niG0TS9qANK654poAVigiEnzCOvjLHT91nBdXvsgzy55hcMxgpiRMoUOLDgGoUEQk+ATzyd1a07Bu\nQ37T7zcUjC2gY4uO9J7Rm9HvjWbX4V1OlyYiElJCJvjLNWvQjJSEFDaO2UjDug255sVrGL9gPAeO\nHXC6NBGRkBBywV/u8saX8+yPn2XNY2vYd3Qfnad3ZtqSaRSdLHK6NBGRoBaywV+uXfN2zLhjBksf\nXkr+nnw6ZnZk+orpnCw56XRpIiJBKWRO7lZV7q5ckj9KZsO+DUxJmMKw7sOoE1Gn1rYvIhIMXHFV\nz8VaXLiY8QvHc+j4IaYOmMqdV92pm8BEJGwo+M/DWst7Be+R/FEyjeo2YtrAaQyIHuCXfYmIBJKC\nvxKltpS5n8/lD4v+QHSLaKYNmEbvqN5+3aeIiD8p+KuouKSYrLwsUhen0rdtX6bePJUurboEZN8i\nIrXJFTdw1YZ6derxq+t+RcHYAuKj4rlx5o08/PbDFB7UzF8i4h6uCv5yjes15nfX/46CsQVENY0i\n7pU4kj5IYm/RXqdLExHxO1cGf7lLG17K1AFTWTdqHRZLl+e7MOmjSRw6fsjp0kRE/MbVwV+u9SWt\neW7oc6x+dDXbvt1Gp8xO/Pey/+ZY8TGnSxMRqXWuOrlbVeu+WcfEjyayYscKJt04icTYROrVqed0\nWSIip+mqHj9ZsWMFExZOoPBQIU8lPMV919xHhNEfSSLiPAW/ny3cspAJH03gxKkTpA1I49ZOt+ou\nYBFxlII/AKy1/HPDP5m4aCItG7Vk2oBp9G/f3+myRMSlFPwBVFJawpy1c/jDoj/QtVVX0gakEdsm\n1umyRMRlFPwOOHHqBDNyZ5C2JI2b2t9E6s2pdLqsk9NliYhL6M5dBzSo24Axfcbw5dgv6dG6B/2y\n+vHou4+y/dvtTpcmInJBCv4aalK/CRP6T2DT2E20bNSSni/1ZNy8cew7us/p0kREzknBX0taNmrJ\nM7c8w9pfr+Vo8VGunn41T338FIdPHHa6NBGR71Dw17LIppG8cNsLLPcsZ9P+TXTK7ER6TjrHTx13\nujQREUAnd/3usz2fMfGjieTvySflphSG9xxO3Yi6TpclIiFOV/WEgE+2fcKEhRPYfWQ3UwdM5add\nfqqbwESk2hT8IcJay7zN85jw0QQMhmkDpzGowyB9AYjIRVPwh5hSW8pb695i4qKJRDaN5OmBT9O3\nbV+nyxKREKLgD1GnSk8xa80spnw8hdg2sUy9eSrdW3d3uiwRCQEK/hB3/NRxXlz5Is8se4ZBHQbx\n1M1P0aFFB6fLEpEgpjt3Q1zDug35Tb/fUDC2gE4tO9FnRh9GvzeaXYd3OV2aiIQhBX8QadagGSkJ\nKWwYs4GGdRvS7YVuPLngSQ4cO+B0aSISRhT8Qejyxpfz7I+fJf9X+ew/up/O0zszbck0ik4WOV2a\niIQBBX8Qa9e8HTPumMGyxGXk78mnY2ZHpq+YzsmSk06XJiIhzG8nd40xKcAjwF7fSxOstf8+x3qu\nP7lbVbm7ckn+KJkN+zYwJWEKw7oPo05EHQC2bi1k0qSZ7NhRSlRUBKmpI4iObu9swSLiN0F5VY8v\n+A9ba/9SyXoK/ou0uHAx4xeO59DxQ0wdMJUe9XsxePB0Nm+eAjQBioiJSWH+/LEKf5EwFczBf8Ra\n+2wl6yn4q8Fay3sF75H8UTI7vtrP/jdehq23VVijiGHD/szs2SmO1Sgi/hPMl3OOMcasMcZ4jTHN\n/bwvVzHGcHvn28l7LI8rtvaBnyTBQ4MgarlvjSbs3FnqaI0iEpxqFPzGmPnGmM8qPNb6/v0J8ALQ\nwVrbC9gNXLDLR6onwkQQV68nTF8F638KP78Xht8CP/yANpEaA0hEvq9G4wNbawdVcdUZwLvne3Py\n5MmnnyckJJCQkFCTslwnNXUEOTlT2bxqCuQlQo8s6t0zjI0xHXi/oA9DOw7VQHAiIS47O5vs7Oxa\n2ZY/+/h/YK3d7Xv+G6C3tfbBc6ynPv5aUH5Vz86dpURGRjB5ykOsOraCtCVp1IuoR3L/ZO7ucjcR\nRlfwioSDYD25+xrQCygFvgIes9buOcd6Cn4/KrWlvLvxXdKWpHHk5BHG3zCeB7o/oMlgREJcUAZ/\nlQtQ8AeEtZYFWxaQtiSNbd9u4/fX/55f9vwlDeo2cLo0EakGBb9clKVfLyVtSRpr96xl3I/G8ei1\nj9K4XmOnyxKRi6Dgl2pZvXM1aUvS+GTbJyTFJzG6z2iaNWjmdFkiUgUKfqmRL/Z+wdNLn+bfX/6b\nUb1HkRSfxGWNL3O6LBG5gGC+gUtCQLcrujH7ntnkeHLYdXgXnTI7MW7eOM0HIBKmFPxyWseWHZlx\nxwzyf5VPcUkx3V7oxuj3RlN4sNDp0kSkFin45XvaNW9HxtAM1o9eT9MGTYl7JY6H336YTfs3OV2a\niNQC9fFLpQ4cO0DmikwyV2QyMHogE/pPoEfrHk6XJeJqOrkrAXH4xGFeXv0yz376LL0je5PcP5n4\ntvFOlyXiSgp+Cahjxcd4Ne9V/vTJn+h8WWeS+ydzU/ubNB6QSAAp+MURJ0tOMvuz2Tyz9BlaNWnF\nxP4TGdJxiL4ARAJAwS+OKikt4e/r/k7akjTq16nPhBsmaEA4ET9T8EtQOHtAuAn9J3D/NfdrQDgR\nP1DwS1DRgHAi/qfgl6BVPiDc53s/Z1y/cTxy7SMaEE6kFij4JehpQDiR2qXgl5ChAeFEaocGaZOQ\nca4B4X4777caEE4kgBT84oiKA8KdLDmpAeFEAkjBL44614BwiW8nakA4ET9SH78EFQ0IJ1I1Orkr\nYefwicO8tOol/pLzF/pE9SG5fzJ9ovo4XZZI0FDwS9g6e0C4if0ncmP7GzUekLiegl/CXvmAcE8v\nfZrWTVqT3D9ZA8KJqyn4xTXOHhAuuX8yd119lwaEE9dR8IvrVBwQrqi4iPE3jNeAcOIqCn5xrfIB\n4aYumcr2b7fz5PVPMrzncA0IJ2FPwS+CBoQTd1Hwi1RQcUC4J/o+wajeozQgnIQdBb/IOWhAOAln\nGqRN5BzOHhCu8/TO/Hbeb9l9ZLfTpYk4SsEvYa98QLg1j63hZMlJuj7fVQPCiasp+MU1NCCcSBn1\n8YtrVRwQ7pYOtzDhhgl0b93d6bJEqkQnd0VqQAPCSShS8IvUgvIB4f647I9c2aQ9jVZ2pPjLdrSN\nqkNq6giio9s7XaLIaQp+kVq08csC+o8ewzdXbYHjLSDnV3Q4vpYFHz6h8Jeg4djlnMaYnxljPjfG\nlBhj4s56b7wxpsAYs94YM7gm+xEJpNTJr/PNvH/A9A3w8SSIfZ0tP/lf7vrLw3xT9I3T5YnUWE2v\n6lkL3A18XPFFY0wX4F6gCzAUeMFo/FwJETt2lAJNwNaBTT+B1xbA7A/5pvggnad3xvOOh7V71jpd\npki11Sj4rbUbrbUFwNmhficw11p7ylr7FVAA6GyZhISoqAig6Lsv7u3AgCN3smnMJqIvjWbInCEM\nfG0g72x8h5LSEkfqFKkuf13HHwVsq7C8w/eaSNBLTR1BTEwKZ8K/iJiYFFJTR9CqSSuSb0xma9JW\nRsaOZOriqVw1/SoycjL49sS3zhUtchEqPblrjJkPtK74EmCBZGvtu751FgH/Za3N9S1nAp9aa1/3\nLXuB9621/zjH9nVyV4LO1q2FTJo0k507S4mMjDjvVT3WWnK255CxPIP5W+bzUI+HGNtnLDEtYwJf\ntLhKTU7uVjprhbV2UDW2uwNoV2G5re+1c5o8efLp5wkJCSQkJFRjlyK1Jzq6PbNnp1S6njGGfu36\n0a9dP7Yd2sbzK5+nb1Zfrm93PUnxSST8MEHTQ0qtyM7OJjs7u1a2VSuXc/qO+MdZa1f7lrsCc4B4\nyrp45gOdznVoryN+CTdFJ4uY/dlsMpZnUK9OPZLik3iw+4M0rNvQ6dIkjDh2Hb8x5i4gE7gcOAis\nsdYO9b03HhgJFANJ1tp559mGgl/CkrWW+Vvmk56Tzupdq3k07lFG9R5Fm6ZtnC5NwoBu4BIJchv3\nbeS55c/xt8//xm2dbyMpPonrIq9zuiwJYQp+kRBx4NgBsvKymL5iOm2btSUpPom7u9ytSeLloin4\nRULMqdJTvL3hbdKXp/P1oa8Z3Xs0j8Q9QotGLZwuTUKEgl8khK3euZqM5Rn8a9O/uK/bfTwe/zhd\nWnVxuiwJcgp+kTCw+8huXlz5Ii+vfpnYNrEkxScxOGYwEUbzJcn3KfhFwsjxU8eZ+/lc0nPSOVFy\ngsf7PM7wnsNpUr+J06VJEFHwi4Qhay2LCxeTvjydJYVLSIxNZEyfMVzZ/EqnS5MgoOAXCXNbDmxh\n+orpzMqfxYDoATwR/wQ/avcj3RXsYgp+EZc4fOIwM9fMJGN5Bi0atSApPol7u91L/Tr1nS5NAkzB\nL+IypbaU9wveJz0nnXXfrOPX1/2ax657jCuaXOF0aRIgCn4RF1u7Zy3PLX+ON9e/yd1X301SfBI9\nf9DT6bLEzxT8IsK+o/t4ZfUrPL/yea667CqS4pO4vfPt1Imo43Rp4gcKfhE5rbikmDfXvUn68nT2\nHd3H2D5jSYxNpFmDZk6XJrVIwS8i55SzPYf0nHTmbZ5XNklM/Fg6tuzodFlSCxT8InJB2w5t44WV\nL+DN89KvbT+e6PsEN//wZl0OGsIU/CJSJUeLjzL7s9mk56RTN6Lu6UliGtVr5HRpcpEU/CJyUay1\nLNiygPTl6azauYpH4h5hVO9RRDaNdLo0qSIFv4hU28Z9G8lckcmctXO4rVPZJDG9o3o7XZZUQsEv\nIjV28PhBsnKzyFyRSVSzKJLik7inyz2aJCZIKfhFpNaUTxKTsTyDrw5+VTZJzLWP0LJRS6dLkwoU\n/CLiF7m7cslYnsE7G9/hvm73kRSfpEligoSCX0T8aveR3by06iVeWvUSvX7Qi6T4JH7c8ceaJMZB\nCn4RCYjySWIylmdwrPgYj8eXTRJzSf1LnC7NdRT8IhJQ1lqWfL2E9Jx0FhcuJjE2kdG9R9P+0vZO\nl+YaCn4RcczWA1uZvmI6M/NnMiB6AEnxSVzf7vrTdwVv3VrIpEkz2bGjlKioCFJTRxAdrS+ImlLw\ni4jjyieJeW7FczRv0Jyk+CT6NOnLbUNeZvPmKUAToIiYmBTmzx+r8K8hBb+IBI3ySWIylmewbFMO\nx5YkwarHoah8kpgihg37M7NnpzhaZ6irSfDrlLyI1KoIE8HtnW9n/kPz6Zb3C2i2F8ZcBXeNgLaf\nAo3ZubPU6TJdTcEvIn5z1aU/gHf/BzIL4JuucPcvYVRXDnVdzr6j+5wuz7XU1SMifrN1ayGDBmVW\n6OM/QmQ/D/G/LuajHQsZHDMYT5yHWzrconsCLpL6+EUkaJVf1bNzZymRkWeu6jl4/CCvr30db66X\n/xz7D4mxiTzc62HaNW/ndMkhQcEvIiEtd1cuWblZzP1iLvFR8XjiPNze+Xbq16nvdGlBS8EvImHh\naPFR3lr3Ft48Lxv2bWB4j+GMjBvJ1Zdf7XRpQUfBLyJhZ9P+TWTlZjErfxadLuuEJ9bDz7r+jCb1\nmzhdWlBQ8ItI2CouKea9gvfw5nr5ZNsn3NvtXjxxHq5tc62r5wxW8IuIK2z/djsz18wkKy+L5g2a\n44nzMKz7MFo0auF0aQGn4BcRVym1pSzaughvnpcPCj7g9s6344nzcFP7m1zzV4BjwW+M+RkwGegC\n9LbW5vpebw+sBzb4Vs2x1o46zzYU/CJSbfuP7mf2Z7OZkTuDEyUnSOyVyIheI2jTtI3TpfmVk8F/\nFVAKvAyMOyv437XW9qjCNhT8IlJj1lpW7FiBN9fLm+vf5Mb2N+KJ9TC009CwnDfY8a4eY8wi4L/O\nCv5/WWu7V+GzCn4RqVVHTh7hjS/ewJvrpfBQISN6jiAxNpGYljFOl1ZrgnWQth8aY3KNMYuMMTf4\ncT8iIt9xSf1LSIxN5JORnzDvF/M4duoYfbP6MvC1gby+9nWOnzrudImOqvSI3xgzH2hd8SXAAsnW\n2nd965x9xF8PuMRae8AYEwf8E+hqrT1yju3blJQzw7MmJCSQkJBQo/+UiMjZTpw6wdsb38ab6yV3\nVy4Pdn8QT5yHHq0r7ZEOCtnZ2WRnZ59enjJlSnB19VzM++rqEZFA++rgV/w176+8uuZV2lzSBk+c\nh/uvuZ9mDZo5XVqVBUsf/zhr7Wrf8uXAf6y1pcaYDsDHQHdr7cFzfFbBLyKOKCktYd7meXjzvCzc\nspC7u9yNJ9bDj9r9KOgvC3Xyqp67gEzgcuAgsMZaO9QYcw/wFHCSsqt+/mCtff8821Dwi4jj9hzZ\nw2v5r+HN8xJhIvDEehjeczitmrRyurRzcvyIvyYU/CISTKy1LNu2DG+ul39u+CeDYgYxMnYkgzoM\nok5EHafLO03BLyLiB4eOH+Jvn/8Nb66XvUV7T88Z0P5S5yeKV/CLiPjZmt1ryMrN4vXPX6d3ZG88\ncR7uuOoOx+YMUPCLiATIseJj/GP9P/Dmefli7xcM7zmckbEj6dKqS0DrUPCLiDigYH8Br+a9ysz8\nmXRo0QFPrId7u90bkDkDFPwiIg4qLinmgy8/wJvrZenXS/l515/jifNwXeR1frssVMEvIhIkdny7\ng1n5s8jKy+KS+pfgifUwrMcwWjZqWav7UfCLiASZUltK9lfZeHO9vF/wPrd2uhVPnIeEHyYQYWo+\nTJqCX0QkiO0/up85a+fgzfVSVFzEyNiRjOg1gsimkdXepoJfRCQEWGtZtXMV3lwvb6x7g/5X9mdk\n7Ehu7XQr9erUu6htKfhFRELMkZNH+PsXf8eb52XLgS2M6DmCkXEj6diyY5U+r+AXEQlh679ZT1Ze\nFq/lv0a3K7rhifVwT5d7aFSv0Xk/o+AXEQkDJ0tO8s7Gd/Dmelm5cyUPXPMAnjgPvX7Q63vrKvhF\nRMJM4cFC/rrmr7ya9ypXNLkCT5yHB655gP/sOsikSTOZM2eygl9EJByVlJawYMsCvHlePiz4EDZc\nyeGP/we+HqzgFxEJdz/75W95q6AlxL0Gz28IysnWRUSkFu3/ujF8Oh6eX1ej7Sj4RURCRFRUBFAE\n1Gz8HwW/iEiISE0dQUxMCmXhX30KfhGREBEd3Z7588cybNifa7QdndwVEQlBNbmOX0f8IiIuo+AX\nEXEZBb+IiMso+EVEXEbBLyLiMgp+ERGXUfCLiLiMgl9ExGUU/CIiLqPgFxFxGQW/iIjLKPhFRFxG\nwS8i4jIKfhERl1Hwi4i4TI2C3xjzJ2PMemPMGmPMW8aYZhXeG2+MKfC9P7jmpYqISG2o6RH/PKCb\ntbYXUACMBzDGdAXuBboAQ4EXjDE1myTSBbKzs50uIWioLc5QW5yhtqgdNQp+a+0Ca22pbzEHaOt7\nfgcw11p7ylr7FWVfCn1qsi830A/1GWqLM9QWZ6gtakdt9vEnAu/7nkcB2yq8t8P3moiIOKxuZSsY\nY+YDrSu+BFgg2Vr7rm+dZKDYWvs3v1QpIiK1psaTrRtjRgCPAAOstSd8rz0JWGvtH33L/wZSrLXL\nz/F5zbQuIlIN1Z1svUbBb4wZAjwL3Git3V/h9a7AHCCesi6e+UAnW9NvGRERqbFKu3oqkQnUB+b7\nLtrJsdaOstauM8a8AawDioFRCn0RkeBQ464eEREJLQG7c9cYM8QYs8EYs8kY8/vzrPOc76avNcaY\nXoGqLdAqawtjzIPGmHzfY6kxprsTdQZCVX4ufOv1NsYUG2PuCWR9gVTF35EEY0yeMeZzY8yiQNcY\nKFX4HbnMGPOBLyvW+s41hh1jTJYxZo8x5rMLrHPxuWmt9fuDsi+YL4H2QD1gDXD1WesMBd7zPY+n\nrNsoIPUF8lHFtugLNPc9H+Lmtqiw3kLgX8A9Ttft4M9Fc+ALIMq3fLnTdTvYFinA0+XtAOwH6jpd\nux/a4gagF/DZed6vVm4G6oi/D1BgrS201hYDc4E7z1rnTuA1AFt29U9zY0xrwk+lbWGtzbHWHvIt\n5hC+90BU5ecCYCzwJrA3kMUFWFXa4kHgLWvtDgBr7b4A1xgoVWmL3UBT3/OmwH5r7akA1hgQ1tql\nwIELrFKt3AxU8J99Q9d2vh9mbrnpqyptUZEH+MCvFTmn0rYwxkQCd1lrX6TsHpJwVZWfi85AS2PM\nImPMSmPMQwGrLrCq0hYzgG7GmJ1APpAUoNqCTbVys6ZX9YgfGWNuBh6m7M89t0oHKvbxhnP4V6Yu\nEAcMAJoAnxpjPrXWfulsWY4YD+Rba282xsRQdmVhD2vtEacLCwWBCv4dwJUVltv6Xjt7nXaVrBMO\nqtIWGGN6AK8AQ6y1F/pTL5RVpS2uA+b6Bvm7HBhqjCm21r4ToBoDpSptsR3YZ609Dhw3xiwGelLW\nHx5OqtIW1wNpANbazcaYrcDVwKqAVBg8qpWbgerqWQl0NMa0N8bUB+4Hzv7FfQcYDmCM6QsctNbu\nCVB9gVRpWxhjrgTeAh6y1m52oMZAqbQtrLUdfI9oyvr5R4Vh6EPVfkfeBm4wxtQxxjSm7GTe+gDX\nGQhVaYv1wC0Avj7tzsCWgFYZOIbz/6VbrdwMyBG/tbbEGDOGsmGcI4Asa+16Y8xjZW/bV6y17xtj\nbjXGfAkUUdbFEXaq0hbAJKAlZ4azLrbWht3oplVsi+98JOBFBkgVf0c2GGM+BD4DSoBXrLXrHCzb\nL6r4c/E08FdjTD5lofg7a+1/nKvaP4wxrwMJwGXGmK8pu5qpPjXMTd3AJSLiMpp6UUTEZRT8IiIu\no+AXEXEZBb+IiMso+EVEXEbBLyLiMgp+ERGXUfCLiLjM/wNWcxRplSOb4wAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x421e4a8>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "b) The shape from x belongs to 0<x<4\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\nFAAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0xbd15588>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "b) The shape from x belongs to 4<x<5\n"
+ ]
+ }
+ ],
+ "source": [
+ "import warnings\n",
+ "warnings.filterwarnings('ignore')\n",
+ "import numpy as np\n",
+ "%matplotlib inline \n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "\n",
+ "l_ac = 5 #m - The length of the beam \n",
+ "l_ab = 4 #m - The length of ac on beam \n",
+ "l_bc = 1 #m - The length of bc on beam \n",
+ "F = 20 #N - force applied on beam at 'b'\n",
+ "R_A = F/2 #wl - The reactive force at A\n",
+ "R_B = F/2 #wl - The reactive force at B\n",
+ "I_ab = 4 #I The moment of inertia of part AB \n",
+ "I_bc = 1 #I - The momemt of inertia of part BC\n",
+ "R_A = F*(l_bc/l_ac) #N- The reaction at joint A\n",
+ "R_B = F*(l_ab/l_ac) #N- The reaction at joint B\n",
+ "E = 1 #E youngs modulus\n",
+ "\n",
+ "#0<x<4\n",
+ "x = [0,1,2,3,4]\n",
+ "M = [0,0,0,0,0]\n",
+ "y = [0,0,0,0,0]\n",
+ "for i in range(5):\n",
+ " M[i] = 4*x[i] #integration of x**n = x**n+1/n+1\n",
+ " #y_2[i] = 4*x[i]/(E*I_ab) #The \n",
+ " #y_1[i] = 4*(x[i]**2)/(E*I_ab) -4.8/(E*I_bc) #The constant can be found by conditions y(o) = y(c) = 0\n",
+ " y[i] = 4*(x[i]**2)/(6*E*I_ab) -4.8*x[i]/(E*I_bc) #elastic curve constant can be found by Y_1(0) = 0 \n",
+ "\n",
+ "\n",
+ "#0<x_1<1\n",
+ "x_1 = [4,5]\n",
+ "m = [0,0]\n",
+ "Y = [0,0]\n",
+ "for i in range(2):\n",
+ " m[i] = 16 - 16*x_1[i] #integration of x**n = x**n+1/n+1\n",
+ " # Y_2 = (16 - 16*x_1[i])/(E*I_ab) \n",
+ " #Y_1 = (16*x_1[i]-8*(x_1[i]**2) +8 - 4.8)/(E*I_ab)#The constant can be found by conditions y(o) = y(c) = 0\n",
+ " Y[i] = (8*(x_1[i]**2)-8*(x_1[i]**3)/3 +(8-4.8)*x_1[i] - 4*4.8 )/(E*I_ab) #elastic curve constant can be found by Y_1(0) = 0\n",
+ "\n",
+ "#Graphs\n",
+ "values = y\n",
+ "y = np.array(values)\n",
+ "t = np.linspace(0,1,5)\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",
+ "print \"b) The shape from x belongs to 0<x<4\"\n",
+ "values = Y \n",
+ "y = np.array(values)\n",
+ "t = np.linspace(0,1,2)\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",
+ "print \"b) The shape from x belongs to 4<x<5\"\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.10 page number 529"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The deflection of point D -5.56 mm\n"
+ ]
+ }
+ ],
+ "source": [
+ "k = 24.0*(10**12) #N.mm2 Flexure rigidity\n",
+ "E = 200.0 #Gpa - Youngs modulus of the string\n",
+ "l = 5000.0 #mm - The length of the string\n",
+ "C_A = 300.0 #mm2 - crossection area \n",
+ "P = 50.0 #KN - The force applies at the end \n",
+ "a = 2000.0 #mm - The distance C-F\n",
+ "x = 1#X - let it be a variable X\n",
+ "y_d = x*(a**3)/(3*k) #Xmm The displacement at D, lets keep the variable in units part\n",
+ "y_p = -P*(10**3)*(16*(a**3)-12*(a**3)+(a**3))/(k*6) #mm The displacement due to p \n",
+ "e_rod = l/(C_A*E*(10**3)) #Xmm -deflection, The varible is in units \n",
+ "e_rod\n",
+ "X = y_p/(2*e_rod+y_d) # By equating deflections \n",
+ "y_d_1 = X*(a**3)/(3*k) # the deflection of point D\n",
+ "print \"The deflection of point D\",round(y_d_1,2),\"mm\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.11 page number 530 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the horizantal component of deflection 0.246 in\n",
+ "the vertical component of deflection 0.073 in\n",
+ "the resultant deflection 0.257 in\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math \n",
+ "l = 15 #in - The length of the crossection \n",
+ "b = 33.9 #in - the width of the crossection\n",
+ "L = 100 #in The length of the cantilever \n",
+ "E = 29*(10**6) #psi The youngs modulus of the material used \n",
+ "I_Z = 315 #in4 - the moment of inertia wrt Z axis \n",
+ "I_y = 8.13 #in4 - the moment of inertia wrt Y axis\n",
+ "o = 5 # degrees - the angle of acting force \n",
+ "P = 2000 #k the acting force \n",
+ "P_h = P*math.sin(math.radians(o)) #k - The horizantal component of P\n",
+ "P_v = P*math.cos(math.radians(o)) #k - The vertical component of P\n",
+ "e_h = P_h*(L**3)/(3*E*I_y) # the horizantal component of deflection \n",
+ "e_v = P_v*(L**3)/(3*E*I_Z ) # the vertical component of deflection\n",
+ "e = pow((e_h**2 + e_v**2),0.5)\n",
+ "print \"the horizantal component of deflection\",round(e_h,3) ,\"in\"\n",
+ "print \"the vertical component of deflection\",round(e_v,3) ,\"in\"\n",
+ "print \"the resultant deflection\",round(e,3) ,\"in\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.13 page number 533"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a) The maximum deflection when the beam is on rigid supports 0.03 mm with impact factor 71.7 b) The maximum deflection when the beam is on spring supports 0.28 mm with impact factor 24.17\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given \n",
+ "l = 50.0 #mm - The length of the crossection \n",
+ "b = 50.0 #mm - the width of the crossection\n",
+ "m = 15.3 # mass of the falling body\n",
+ "h = 75.0 #mm - The height of the falling body \n",
+ "p = m*9.81 #N the force acted due to the body\n",
+ "L = 1000.0 #mm The length of the cantilever\n",
+ "E = 200 #Gpa The youngs modulus of the material used \n",
+ "I = (l**4)/12 #mm - the moment of inertia \n",
+ "k = 300 #N/mm -the stiffness of the spring \n",
+ "#Rigid supports \n",
+ "e = m*9.81*(L**3)*(10**-3)/(48*E*I) #mm - the deflection of beam \n",
+ "imp_fact_a = 1 +pow((1 +2*h/e),0.5) #no units , impact factor \n",
+ "#spring supports\n",
+ "e_spr = h/k #mm the elongation due to spring \n",
+ "e_total = e_spr + e \n",
+ "imp_fact_b = 1 +pow((1 +2*h/e_total),0.5) #no units , impact factor\n",
+ "print \"a) The maximum deflection when the beam is on rigid supports\",round(e,3),\"mm with impact factor\",round(imp_fact_a ,2),\n",
+ "print \"b) The maximum deflection when the beam is on spring supports\",round(e_total,2),\"mm with impact factor\",round(imp_fact_b,2) ,\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.15 page number 536 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the ultimate capacity 120 K-in\n",
+ "the ultimate curvature 0.000806666666667 in*-1\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "E = 30*(10**3) #ksi - The youngs modulus of the material \n",
+ "stress_y = 40 #Ksi - yield stress\n",
+ "stress_max = 24.2 #Ksi - the maximum stress\n",
+ "l = 2 #in - The length of the crossection \n",
+ "b = 3 #in - the width of the crossection\n",
+ "h = 3 #in - the depth of the crossection\n",
+ "#lets check ultimate capacity for a 2 in deep section \n",
+ "M_ul = stress_y*b*(l**2)/4 #K-in the ultimate capacity \n",
+ "curvature = 2*stress_y/(E*(h/2) ) #in*-1 the curvature of the beam \n",
+ "curvature_max = stress_max/(E*(h/2)) #in*-1 The maximum curvature \n",
+ "print \"the ultimate capacity\",M_ul,\"K-in\"\n",
+ "print \"the ultimate curvature\",curvature_max,\"in*-1\"\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.16 page number 543"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The maximum deflection at tip B -4.11 mm\n",
+ "The slope at the tip B -0.0 radians\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given \n",
+ "l_ad = 1600 #mm - The total length of the beam \n",
+ "l_ab = 600 #mm - The length of AB\n",
+ "l_bc = 600 #mm - The length of BC\n",
+ "e_1 = 0.24 #mm - deflection \n",
+ "e_2 = 0.48 #mm - deflection\n",
+ "E = 35 #Gpa\n",
+ "#Caliculation \n",
+ "\n",
+ "A_afe = -(l_ab+l_bc)*e_1*(10**-3)/(2*E)\n",
+ "A_afe = -(l_ab)*e_2*(10**-3)/(4*E)\n",
+ "y_1_b = A_afe + A_afe #rad the slope at the tip B\n",
+ "x_1 = 1200 #com from B\n",
+ "x_2 = 800 #com from B\n",
+ "y_b = A_afe*x_1 + A_afe*x_2 #mm The maximum deflection at tip B\n",
+ "print\"The maximum deflection at tip B\",round(y_b,2),\"mm\"\n",
+ "print \"The slope at the tip B\",round(y_1_b,2) ,\"radians\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.19 page number 547 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " The maximum displacement in y direction is -0.0130208333333 W(l**4)/EI \n",
+ " The maximum deflection occured at 0.5 L\n",
+ " The maximum deflection is -0.05775 W(l**3)/EI \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 #deflection 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 \" The maximum displacement in y direction is\",min(Y),\"W(l**4)/EI \"\n",
+ "print \" The maximum deflection occured at\",l_1[Y.index(min(Y))],\"L\"\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_intg1 = [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_intg1[i] = R_A*(l_1[i]**2)/4 - F_D*(l_1[i]**3)/6 - F_D*(l_ab**3)*l_1[i]/24\n",
+ "print \" The maximum deflection is\",min(M_1_intg1 ),\"W(l**3)/EI \""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.23 page number 554 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The moment at the end is -0.0833333333333 wl**2\n"
+ ]
+ }
+ ],
+ "source": [
+ "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",
+ "#M_A and M_B are applied at the ends\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 = [0,0,0,0,0,0,0,0,0,0,0]\n",
+ "for i in range(10):\n",
+ " M[i] = l_1[i]/2.0 - (l_1[i]**2)/2.0 -1.0/12.0 #The moment euation at 1--1 section\n",
+ "# M_1 = R_A*l_1[i]/2.0 - F_D*(l_1[i]**2)/2.0 -F_D*(l_ab**2)/12.0 #The moment euation at 1--1 section \n",
+ "# (EI)y'' = M_1[i] we will integrate M_1[i] twice where variable is l_1[i]\n",
+ "#(EI)y'\n",
+ "M_1_intg1 = R_A*(l_1[i]**2)/4 - F_D*(l_1[i]**3)/6 - F_D*(l_ab**2)*l_1[i]/12.0 #integration of x**n = x**n+1/n+1\n",
+ "#(EI)y\n",
+ " \n",
+ "print \"The moment at the end is \",M[0],\"wl**2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 10.25 pagenumber 556"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\nAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0xbc67400>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0xc68f550>"
+ ]
+ },
+ "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 <C_c :\n",
+ " print \"a)The following approch is solvable\"\n",
+ "else: \n",
+ " print \"The caliculation is not possible\"\n",
+ "F_S = 5.0/3 +3*C_s/(8*C_c) -(3*C_s**3)/(8*C_c**3) #Safety factor \n",
+ "Stress_all = (1 - (C_s**2)/(2*C_c**2))*stress_yp/F_S #The allowable strees \n",
+ "print \"a) The allowable stress in this case is\",round(Stress_all,2),\"Kips\" \n",
+ "#Part - B\n",
+ "#Given\n",
+ "L = 40 #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 <C_c :\n",
+ " print \"b) The following approch is solvable\"\n",
+ "else: \n",
+ " print \"The caliculation is not possible\"\n",
+ "F_S = 5.0/3 +3*C_s/(8*C_c) -(3*C_s**3)/(8*C_c**3) #Safety factor \n",
+ "Stress_all = (1 - (C_s**2)/(2*C_c**2))*stress_yp/F_S #The allowable strees \n",
+ "print \"b) The allowable stress in this case is\",round(Stress_all,2),\"Kips\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 11.7 page number 614"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "a)The following approch is solvable\n",
+ "The allowable stress in this case is 19.14 Kips\n",
+ "This stress requires 10.45 in2\n",
+ "This case is satisfying W8x24 section\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "import math\n",
+ "L = 15 #ft - The length of the each rod \n",
+ "p = 200 #Kips The concentric load applied \n",
+ "r_min = 2.10 #in - The radius of gyration\n",
+ "stress_yp = 50 #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 present situation\n",
+ "if C_s <C_c :\n",
+ " print \"a)The following approch is solvable\"\n",
+ "else: \n",
+ " print \"The caliculation is not possible\"\n",
+ "F_S = 5.0/3 +3*C_s/(8*C_c) -(3*C_s**3)/(8*C_c**3) #Safety factor \n",
+ "Stress_all = (1 - (C_s**2)/(2*C_c**2))*stress_yp/F_S #The allowable strees\n",
+ "a = p/Stress_all #in2 the alloawble area of the beam \n",
+ "print \"The allowable stress in this case is\",round(Stress_all,2),\"Kips\"\n",
+ "print \"This stress requires \",round(a,2),\"in2\"\n",
+ "if a <11.5:\n",
+ " print \"This case is satisfying W8x24 section\" #From AISC Manual \n",
+ "else:\n",
+ " print \"This case is not satisfying W8x24 section\"\n",
+ " #The ans are quiet varying because of rounding\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 11.8 pagenumber 614 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The following approach is right\n",
+ "column design compressive strength 1284.51846781 Kips\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "import math\n",
+ "L = 15.0 #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.0 #Ksi - the yielding point stress\n",
+ "E = 29*(10**3) #ksi - The youngs modulus\n",
+ "lamda = L*12*((stress_yp/E)**0.5)/(4*(math.pi)) #column slenderness ratio\n",
+ "if lamda<1.5:\n",
+ " print \"The following approach is right\"\n",
+ "else:\n",
+ " print \"The following approach is wrong\"\n",
+ "stress_cr = (0.658**(lamda**2))*stress_yp #Ksi - The critical stress \n",
+ "P_n = stress_cr*A #Kips #Nominal compressive strength \n",
+ "o = 0.85 #Resistance factor\n",
+ "p_u = o*P_n #Kips ,column design compressive strength \n",
+ "print \"column design compressive strength \",p_u,\"Kips\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 11.9 page number 615"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The maximum allowable stress in case of web width 19.0 Ksi\n",
+ "The maximum allowable stress in case of flang 17.16 Ksi\n",
+ "a) The maximum allowable load in case of Buckling 75.58 Kips\n",
+ "b) The maximum allowable load in case of Buckling 63.14 Kips\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given \n",
+ "#FOR FLANGS\n",
+ "l = 5 #in - The length of the flang\n",
+ "b = 5 #in - Teh width of the flang\n",
+ "t = 0.312 #in - the thickness of the flang\n",
+ "L = 20 #in - Length of the beam, Extracted from AISC manuals\n",
+ "A = 4.563 #in2 - The area of crossection of the beam\n",
+ "r = 1.188 #in - radius of the gyration, Extracted from AISC manuals \n",
+ "#b/t- value of the flang \n",
+ "k = (5 -t)/(2*t) #b/t ratio \n",
+ "#AISC, lets check maximum allowable stress for slang\n",
+ "Stressf_all = 23.1 - 0.79*k #ksi The maximum allowable stress in case of flang,AISC\n",
+ "\n",
+ "#web width thickness ratio\n",
+ "k_2 = (5 -2*t)/(t)\n",
+ "if k_2<16:\n",
+ " Stressw_all = 19 #ksi - The allowable stress in case of web width\n",
+ " \n",
+ "#a) Overall buckling investment \n",
+ "k_3 = L/r #slenderness ratio\n",
+ "Stressb_all = 20.2 - 0.216*k_3#ksi The maximum allowable stress in case of Buckling,AISC\n",
+ "p_allow = A*Stressb_all #Kips The allowable concentric load \n",
+ "\n",
+ "#b) Overall buckling investment\n",
+ "L_2 = 60 #in \n",
+ "k_3 = L_2/r #slenderness ratio\n",
+ "Stressb_all_2 = 20.2 - 0.126*k_3#ksi The maximum allowable stress in case of Buckling,AISC\n",
+ "p_allow_2 = A*Stressb_all_2 #Kips The allowable concentric load \n",
+ "\n",
+ "print \"The maximum allowable stress in case of web width\",round(Stressw_all,2),\"Ksi\"\n",
+ "print \"The maximum allowable stress in case of flang\",round(Stressf_all,2),\"Ksi\"\n",
+ "print \"a) The maximum allowable load in case of Buckling\",round(p_allow,2),\"Kips\"\n",
+ "print \"b) The maximum allowable load in case of Buckling\",round(p_allow_2,2),\"Kips\"\n",
+ "\n",
+ "\n",
+ " \n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 11.11 page number 620 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The minimum area is 13.71 in2\n",
+ "The following approch is solvable\n",
+ "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 1.09 >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 <C_c :\n",
+ " print \"The following approch is solvable\"\n",
+ "else: \n",
+ " print \"The caliculation is not possible\"\n",
+ "F_a_1 = 19.3 #Ksi - AISC lets try this\n",
+ "c_m = 0.6 - 0.4*(-M_1/M_2) \n",
+ "F_e = (12*(math.pi**2)*E)/(23*(L*12/r_x)**2) \n",
+ "k = f_a/F_a_1 + c_m*f_b*(1-(f_a/F_e))/F_b #Condition mentioned in AISC\n",
+ "if k>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 <C_c :\n",
+ " print \"The following approch is solvable\"\n",
+ "else: \n",
+ " print \"The caliculation is not possible\"\n",
+ "F_a_1 = 19.3 #Ksi - AISC lets try this\n",
+ "c_m = 0.6 - 0.4*(-M_1/M_2) \n",
+ "F_e = (12*(math.pi**2)*E)/(23*(L*12/r_x)**2) \n",
+ "k = f_a/F_a_1 + c_m*f_b*(1-(f_a/F_e))/F_b #Condition mentioned in AISC\n",
+ "if k>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": [
+ "<matplotlib.figure.Figure at 0xabdfa20>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0x8cd4f60>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0x8cc3710>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0xaaed668>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0x8f56978>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n/vJBW0Moy/YAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x901ada0>"
+ ]
+ },
+ "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": "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\nAAC5/H/91y4DSEHt5wAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0xaaedeb8>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0xae282e8>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0xb34cba8>"
+ ]
+ },
+ "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": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEhCAYAAACOZ4wDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHddJREFUeJzt3Xu0HHWZ7vHvE8I9EsAx3IkidyGJkYszCLQCAQNDGGZE\nFBUBGdZoDqiEm8okDB4kZukMHJQxiFwUxYGBIXIJAZMtAwokQCDEEFAYhADxeLiDC0N4zx/129Bs\nunf1Trq7urqfz1q9dnX3r6ve2pd+dtXbVaWIwMzMbDDDii7AzMw6n8PCzMxyOSzMzCyXw8LMzHI5\nLMzMLJfDwszMcjkseoCkr0t6UNL9ku6VtHt6/DFJGxddX556dUp6qUXLu0TS4Wn6Ikk7tmI5nUDS\nWEkfb3DsPEnj0/T1kjZobXXWSYYXXYC1lqQPAxOBcRHxenrTXSs93fSDbCStERErmzzbenW2/CCh\niDi+1cso2DhgN+CmobwoIg5pxsJb9PtiLeAti+63GfCniHgdICKejYhn0nMCTpR0T9rq2B5A0nqS\nLpZ0Z3rub9PjoyXdJmlBun04Pb5vevw6YPHAAiR9X9LdkhZJmlr1+GOSptVY/saSbk7jL0p11iJJ\n301bTbdIend6cBtJN0maL+lXVfO9RNJ5ku6Q9Lv+rYf03AWSlkiaA4yqerz6v+mXJH1T0kJJv5b0\nnqrl/Satw9m1tnjS925JqmGppCskHZBqWSpptzRuI0nXpnn9WtIu6fGpki5N3+fHJB0uaYakByTd\nKGmNNG68pL607jdJ2qRqPc6VdJekhyTtJWlN4F+AI9IW5ycG1LyOpJ9JWizpGmCdAT+7jdP0tWl5\niyR9oWrMcWnd7pQ0U9L5VT+HCyXdCUyXtHta13sk3S5puzTu6DTvOZIelTRZ0smp1l9L2rDO74W1\nQkT41sU3YH3gPuAh4HvAPlXPPQZ8MU3/EzAzTf9v4NNpeiSwFFiX7M1irfT4tsD8NL0v8BKwdZ0a\nNkxfhwHzgF1yln8e8I00PRFYCWxcY75vAEem6TOB89P0rcD70/QewC/T9CXAz9P0TsAjafpw4OY0\nvRnwHHB4uj8PGF+1vIlpejrwtTT9C+CINH0C8GKNWkcDfwF2TvcXABen6UOBa9L0+cCZafqjwH1p\neipwW/oejgFeBSak565J8xgO3AG8Oz1+RNUy5gEz0vTHgVvS9NH937caNX8F+GGa3hVYUfW9eLT/\nZ1L1810HWARslL6Pj5H9/qyRaj+/6ucwq2o5I4BhaXo/4Oqq2h4G1gP+CngBOD49913gxKL/vnrp\n5t1QXS4iXkn/Ge8NfAy4UtLpEXF5GnJt+noP8HdpegLwt5JOSffXArYGngYukDSO7A18u6pF3R0R\nf6hTxpGSjid7M9sU2Bl4cJDl79M/HRE3SnquznxXAv+Rpn8C/Kek9YG/Aa6S1L9FsmbVa/4rzXeJ\npP4tiL2Bn6XHn5Y0t87yXouIG6vq3T9N/zUwKU3/FJhR5/WPRcRv0/RislCD7A32vWn6I2ThRUTM\nS1tZI9JzN0XEG5IWAYqIOQNevwOwC3BLWvdhwFNVy7+mqvbRdWqstg9ZcBMRiyTdX/Vc9dbelyUd\nlqa3JPu92Azoi4gXACRdxdt/X66qmt4QuDxtUQRv3z0+LyJeBV5NvwfXV63zrg2sgzWJw6IHRPav\n2G3AbemN5nNAf1i8lr6u5K3fBwF/HxGPVM9H2S6kZyJiTNrt8eeqp1+ptWxJ7wVOBj4UES9KuoSq\n3Rl1lv+O2Qy6gm8JsjfI5yJifJ0xr1VNNzrffiuqpqvrre6dDDbP6mW/UXX/DRr7W3wNsp+npOpa\n+l8v4MGI2Ctn+YN9rwfzjnWTtC/ZPyF7RsRrkubx1s93sO9F9e/L2cDciDhc0miyraCBNUP2fR7q\n98yaxD2LLidpe0nbVj00Dng852U3AydWzWNcmhxJtnUBWeCs0UAJGwAvAy+l/eeNfPLmNuCotOyP\nk/3nWcsawD+k6aOA2yPiJeAxSf2PI2lMndf3v5ndBnxS0jBJm5Ht/hls/EB3VtVxZJ0xg72+2n8D\nnwGQVCHrN73c4LyWAu/RW72k4ZJ2zqnlJbKfUS3VP4ddyHZ/DTSSLJxfU/apsQ+nx+cD+0gaKWk4\n8Pd1lkFa/rI0fcwg46xADovuNwK4TFkTeCHZvvpp6bl6nyY6G1gzNU8XkTVBAb4PfF7SfcD21Nma\nqBYRDwALgSVku4pur366zsvOInujWQQcBtTbvfUysEcaV6mq8yjgOGWN6AfJ9ufXWl6kGq8Ffke2\na+hS4Nd1aqxX71eAr6bv7/vJ9q3X0si8pgEfSrt8ziEL5bx5ZQ9ErCALremplvvIdpHVGt9/fx6w\nc60GN3AhMELS4lTXghqvn032u7I41fubVMtT6f7dZAH4GG99XwbWMgM4V9I9DP6e5FNkF0ipWWRm\nq0jSuhHx5zT9SbKm+9/lvKzrSVo/9czWIOtNXRwR1xVdl60a7/MzW30fknQB2a6d54BjC66nU0yT\ntD+wNjDHQVFu3rIwM7Nc7lmYmVkuh4WZmeVyWJiZWS6HhZmZ5XJYmJlZLoeFmZnlcliYmVmuwsNC\n0kHp/PoPSzptkHG7S1qhqmsQmJlZexQaFpKGARcABwIfAD6lGpewTOPOJTvBnZmZtVnRWxZ7kF2A\n5vF0ErQreeu6ANX+F3A18Md2FmdmZpmiw2IL4Imq+0+mx94kaXPgsIi4kKFff8DMzJqg6LBoxL8B\n1b0MB4aZWZsVfdbZZWSX6+y3JW9dBKXfbmSXAhXZdXg/LmlFRMwaODNJPiuimdkQRUTuP+FFb1nM\nB7aVNFrSWmRXGXtbCETENun2PrK+xRdrBUXV+K68TZ06tfAavH5eP69f990aVeiWRUSslDQZmEMW\nXBdHxBJJJ2RPx8yBL2l7kWZmVvhuKCJiNrDDgMd+UGesLypjZlaAondDWYMqlUrRJbSU16/cvH7d\nr6uulCcpuml9zMxaTRJRgga3mZmVgMPCzMxyOSzMzCyXw8LMzHI5LMzMLJfDwsxWyy9/CfffX3QV\n1moOCzNbLdOnwx57wLHHwrKBZ3azruGwMLPV9pOfwKhRMGYMTJ0KL79cdEXWbA4LM1ttI0fCuefC\nvffC738P228PF10EK1cWXZk1i8PCzJpm9OhsK2PWrOzruHEwezb4xArl57Aws6bbbTfo64NvfhNO\nOgkOPNBN8LJzWJhZS0gwaRI8+GD2dcIEN8HLzGFhZi215prwpS/Bww+7CV5mDgszaws3wcvNYWFm\nbeUmeDk5LMysEG6Cl4vDwswK4yZ4eTgszKxwboJ3PoeFmXUMN8E7l8PCzDqOm+Cdx2FhZh3LTfDO\n4bAws45Wrwn+1FNFV9ZbHBZmVgoDm+C77uomeDs5LMysVNwEL4bDwsxKyU3w9nJYmFmpuQneHoWH\nhaSDJD0k6WFJp9V4/tOS7k+32yXtWkSdZta53ARvvULDQtIw4ALgQOADwKck7Thg2KPAPhExFvgm\ncFF7qzSzsnATvHWK3rLYA3gkIh6PiBXAlcCk6gERcWdEvJDu3gls0eYazaxk3ARvvqLDYgvgiar7\nTzJ4GHwBuKmlFZlZ13ATvHmKDouGSfoocAzwjr6Gmdlg3ARffcMLXv4yYOuq+1umx95G0hhgJnBQ\nRDw32AynTZv25nSlUqFSqTSjTjMruf4m+MSJMHNm1gQ/5BA4+2zYfPOiq2ufvr4++vr6hvw6RYHb\nY5LWAJYC+wFPA3cDn4qIJVVjtgZ+CXw2Iu7MmV8UuT5mvWjCBJgyJftaJi+8AN/6VtbLmDwZTjkF\nRowouqr2k0REKG9cobuhImIlMBmYAywGroyIJZJOkPSPadiZwMbA9yXdJ+nugso1sy7iJvjQFLpl\n0WzesjBrv7JuWQy0YAGcfDI8+yzMmJH1NZT7/3b5lWLLwsysU7gJPjiHhZlZUutI8OOO85Hg4LAw\nM3uH6iPB3/MeHwkODgszs7rcBH+Lw8LMLIePBHdYmJk1rJeb4A4LM7Mh6NUmuMPCzGwV9FoT3GFh\nZrYaeqUJ7rAwM2uCbm+COyzMzJqoW5vgDgszsybrxia4w8LMrEW6qQnusDAza7FuaII7LMzM2qTM\nTXCHhZlZm5WxCe6wMDMrQK0m+LHHdm4T3GFhZlag6ib4qFGd2wR3WJiZdYBOb4I7LMzMOkinNsEd\nFmZmHajTmuAOCzOzDlWvCb5sWftrcViYmXW4gU3wMWPa3wR3WJiZlUSRTXCHhZlZyRTRBHdYmJmV\nVDub4A4LM7MSa1cT3GFhZtYFWt0Ed1iYmXWRVjXBCw8LSQdJekjSw5JOqzPmfEmPSFooaVy7azQz\nK5tmN8ELDQtJw4ALgAOBDwCfkrTjgDEfB94fEdsBJwD/3vZCzcxKqllN8KK3LPYAHomIxyNiBXAl\nMGnAmEnA5QARcRcwUtIm7S3TzKy8mtEELzostgCeqLr/ZHpssDHLaowxM7MctZrgjRreurKKse++\n09hrL1hrLahUKlQqlaJLMjPrGH19ffT19bHOOvDZz8J55zX2uqLDYhmwddX9LdNjA8dslTPmTVtt\nNY1LL4WzzoK9925WmWZm3WHgP9HnnXdWQ68rejfUfGBbSaMlrQUcCcwaMGYW8DkASR8Gno+I5fVm\n2InngTczK7tCtywiYqWkycAcsuC6OCKWSDohezpmRsSNkiZK+h3wCnBM3nz7u/+zZmXd/9GjYcYM\nGDu2patjZta1it4NRUTMBnYY8NgPBtyfPNT59nf/J06EmTOz7v/BB2cfH9t889Us2sysxxS9G6rl\nynIxdDOzTtb1YdGv0y+GbmbWyXomLPp16sXQzcw6Wc+FRb9Ouxi6mVkn69mwgPqHwD/1VNGVmZl1\nlp4Oi35ugpuZDc5hUcVNcDOz2hwWNbgJbmb2dg6LQbgJbmaWcVjkcBPczMxh0TA3wc2slzkshshN\ncDPrRQ6LVeQmuJn1EofFanIT3Mx6gcOiCdwEN7Nu57BoIjfBzaxbOSxawE1wM+s2DosWchPczLqF\nw6IN3AQ3s7LLDQtJn5D0rjT9DUnXSBrf+tK6i5vgZlZmjWxZnBkRL0n6CLA/cDFwYWvL6l5ugptZ\nGTUSFv1t2YOBmRFxA7BW60rqDW6Cm1mZNBIWyyT9APgkcKOktRt8nTXATXAzK4NG3vSPAG4GDoyI\n54GNgVNaWlUPchPczDpZ3bCQtEGaXAfoA/6fpI2B14AFrS+t97gJbmadarAti5+mr/eQhcM9VTeH\nRQu5CW5mnaZuWETEIenr+yJim/S1/7ZN+0rsXdVN8N/9zk1wMytOI8dZHDfg/hqSprauJBto9Gi4\n4go3wc2sOI00uPeTdKOkzSTtAtwJvGt1FyxpI0lzJC2VdLOkkTXGbClprqTFkhZJOnF1l1tmboKb\nWVFywyIiPg1cBiwCbgC+HBFTmrDs04FbI2IHYC5wRo0xrwNfjYgPAH8NfEnSjk1Ydmm5CW5mRWhk\nN9R2wEnAfwKPA5+VtF4Tlj2JLIRIXw8bOCAinomIhWn6ZWAJsEUTll16boKbWTs1shvqF2Sn/DgB\n2Bd4BJjfhGWPiojlkIUCMGqwwZLeC4wD7mrCsruGjwQ3s3YY3sCYPSLiRYCICOA7kn7RyMwl3QJs\nUv0QEMA3agyv266VNAK4GjgpbWHUNW3atDenK5UKlUqlkVJLr/9I8AUL4OST4fzzYcaMrK8hFV2d\nmXWKvr4++vr6hvw6RQMfqUmN7Z3JDtADICIuH/LS3j7PJUAlIpZL2hSYFxE71Rg3HLgeuCkizsuZ\nZzSyPt0uIvvk1KmnZiEyYwaMHVt0VdatJkyAKVOyr1Y+koiI3H8pG+lZTAX+T7p9FPg2cOhqVwiz\ngM+n6aOB6+qM+xHw27ygsLe4CW5mzdZIz+IfgP2AZyLiGGAs8I6Pua6C6cABkpam+Z8LkD6ie32a\n3gs4CviYpPsk3SvpoCYsuye4CW5mzdJIWPw5It4AXk/ni/ojsNXqLjgino2I/SNih4iYkE5SSEQ8\nXXX0+B0RsUZEjIuID0bE+IiYvbrL7jVugpvZ6mokLBZI2hC4iOy8UPcCv2lpVdYSPh26ma2q3E9D\nRcQX0+S/S5oNbBARD7S2LGul/iPBZ83KjgR3E9zM8gzpIkYR8T8Oiu7gJriZDYWveNfj3AQ3s0YM\ndvGjG9NR09YD3AQ3s8EMtmVxCTBH0tclrdmugqxYboKbWS11G9wRcZWkm4AzyT4R9WPgjarnv9uG\n+qwgboKbWbW8nsVfgFeAtcmuYVF9sy7nJriZ9RusZ3EQsBBYDxgfEVMj4qz+W9sqtMK5CW5mg21Z\nfB34REScHhGvtqsg61xugpv1rrphERF7R8TidhZj5eAmuFnv8XEWtsp8TXCz3uGwsNXiJrhZb3BY\nWFO4CW7W3RwW1lRugpt1J4eFtYSb4GbdxWFhLeUmuFl3cFhYy7kJblZ+DgtrGzfBzcrLYWFt5ya4\nWfk4LKwwboKblYfDwgrnJrhZ53NYWEdwE9ysszksrKO4CW7WmRwW1pHcBDfrLA4L62hugpt1BoeF\nlYKb4GbFclhYabgJblacwsJC0kaS5khaKulmSSMHGTtM0r2SZrWzRutMboKbtV+RWxanA7dGxA7A\nXOCMQcaeBPy2LVVZabgJbtY+RYbFJOCyNH0ZcFitQZK2BCYCP2xTXVYyboKbtV6RYTEqIpYDRMQz\nwKg64/4VOAXwn74Nyk1ws9YZ3sqZS7oF2KT6IbI3/W/UGP6OMJB0MLA8IhZKqqTXD2ratGlvTlcq\nFSqVypBqtnLrb4JPnAgzZ2ZN8IMPzgJk882Lrs6seH19ffT19Q35dYqCttUlLQEqEbFc0qbAvIjY\nacCYc4DPAK8D6wLvAq6JiM/VmWcUtT7WmV54Ab71rayXMXkynHIKjBhRdFXdZcIEmDIl+2rlI4mI\nyP1HvMjdULOAz6fpo4HrBg6IiK9FxNYRsQ1wJDC3XlCY1eImuFlzFBkW04EDJC0F9gPOBZC0maTr\nC6zLupCb4Garp7DdUK3g3VDWiIgsNE49NQuRGTNg7Niiqyov74YqtzLshjIrRL0jwZctK7oys87l\nsLCeNfBI8DFjfCS4WT0OC+t5boKb5XNYmCX9TfDrrnMT3Gwgh4XZALvv7iPBzQZyWJjV4Ca42ds5\nLMwG4Sa4WcZhYdYAN8Gt1zkszIbATXDrVQ4Ls1XgJrj1GoeF2SpyE9x6icPCbDW5CW69wGFh1iRu\ngls3c1iYNZmb4NaNHBZmLeImuHUTh4VZC7kJbt3CYWHWBm6CW9k5LMzayE1wKyuHhVkB3AS3snFY\nmBXITXArC4eFWcHcBLcycFiYdQg3wa2TOSzMOoyb4NaJHBZmHcpNcOskDguzDucmuHUCh4VZCbgJ\nbkVzWJiViJvgVhSHhVkJuQlu7VZYWEjaSNIcSUsl3SxpZJ1xIyVdJWmJpMWS9mx3rWadyk1wa5ci\ntyxOB26NiB2AucAZdcadB9wYETsBY4ElbarPrDTcBLdWKzIsJgGXpenLgMMGDpC0AbB3RFwCEBGv\nR8SL7SvRrDzcBLdWKjIsRkXEcoCIeAYYVWPM+4A/SbpE0r2SZkpat61VmpWMm+DWCi0NC0m3SHqg\n6rYofT20xvBae1mHA+OB70XEeOBVst1XZpbDTXBrpuGtnHlEHFDvOUnLJW0SEcslbQr8scawJ4En\nImJBun81cNpgy5w2bdqb05VKhUqlMtSyzbpKfxN8/nyYMgXOPx9mzMj6GlLR1Vm79fX10dfXN+TX\nKQr62ISk6cCzETFd0mnARhHxjq0GSb8Cjo+IhyVNBdaLiJqBISmKWh+zMoiAWbPg1FOzEJkxA8aO\nXb15TpiQhdCECc2p0dpLEhGR+29DkT2L6cABkpYC+wHnAkjaTNL1VeNOBK6QtJDs01DntL1Ssy7h\nJritqsLCIiKejYj9I2KHiJgQEc+nx5+OiEOqxt0fEbtHxLiIODwiXiiqZrNu4Sa4DZWP4DbrYW6C\nW6McFmbmI8Etl8PCzN7kI8GtHoeFmb2Nm+BWi8PCzGpyE9yqOSzMbFBughs4LMysQW6C97bCjuBu\nBR/BbdYe1UeCP/oo3HCDj+Auq0aP4HZYmNkqW7ECfv5zOPhg2GijoquxVeGwMDOzXGU4N5SZmZWE\nw8LMzHI5LMzMLJfDwszMcjkszMwsl8PCzMxyOSzMzCyXw8LMzHI5LMzMLJfDwszMcjkszMwsl8PC\nzMxyOSzMzCyXw8LMzHI5LMzMLJfDwszMcjkszMwsl8PCzMxyFRYWkjaSNEfSUkk3SxpZZ9wZkhZL\nekDSFZLWanetZma9rsgti9OBWyNiB2AucMbAAZJGA8cDH4yIMcBw4Mi2Vtkh+vr6ii6hpbx+5eb1\n635FhsUk4LI0fRlwWI0xLwJ/AdaXNBxYD3iqPeV1lm7/ZfX6lZvXr/sVGRajImI5QEQ8A4waOCAi\nngO+A/wBWAY8HxG3trVKMzNjeCtnLukWYJPqh4AAvlFjeNR4/TbAV4DRwAvA1ZI+HRE/bUG5ZmZW\nhyLe8R7dngVLS4BKRCyXtCkwLyJ2GjDmCOCAiDg+3f8ssGdETK4zz2JWxsysxCJCeWNaumWRYxbw\neWA6cDRwXY0xS4EzJa0DvAbsB8yvN8NGVtjMzIauyC2LjYH/ALYCHgeOiIjnJW0GXBQRh6Rxp5CF\nykrgPuALEbGikKLNzHpUYWFhZmbl0RVHcEs6SNJDkh6WdFrR9TSTpIslLZf0QNG1tIKkLSXNTQde\nLpJ0YtE1NZOktSXdJem+tI7nFF1Ts0kaJuleSbOKrqXZJP2PpPvTz+/uoutpNkkjJV0laUn6/dyz\n7tiyb1lIGgY8TNbPeIqsp3FkRDxUaGFNIukjwMvA5enAxK6SPtywaUQslDQCuAeY1C0/PwBJ60XE\nq5LWAO4ATo6IO4quq1kkfQX4ELBBRBxadD3NJOlR4EPpY/xdR9KlwK8i4pL+Y9ki4sVaY7thy2IP\n4JGIeDz1Mq4kO+CvK0TE7UBX/qJCdoxNRCxM0y8DS4Atiq2quSLi1TS5NtnfXNf8PCVtCUwEflh0\nLS0iuuN98h0kbQDsHRGXAETE6/WCArrjm7AF8ETV/SfpsjebXiHpvcA44K5iK2mutJvmPuAZoC8i\nflt0TU30r8Ap1DhOqksEcIuk+ZKOL7qYJnsf8CdJl6TdiDMlrVtvcDeEhXWBtAvqauCktIXRNSLi\njYj4ILAlsI+kfYuuqRkkHQwsT1uGSrdus1dEjCfbevpS2i3cLYYD44HvpXV8leycfTV1Q1gsA7au\nur9lesxKIu0rvRr4cUTUOt6mK6RN/BuA3YqupUn2Ag5N+/V/BnxU0uUF19RUEfF0+vp/gWvJdnt3\niyeBJyJiQbp/NVl41NQNYTEf2FbS6HT68iPJDvjrJt36X1u/HwG/jYjzii6k2ST9Vf/p99Mm/gHA\nwmKrao6I+FpEbB0R25D93c2NiM8VXVezSFovbfEiaX1gAvBgsVU1Tzo33xOStk8P7QfU3UVa5BHc\nTRERKyVNBuaQhd/FEbGk4LKaRtJPgQrwbkl/AKb2N6S6gaS9gKOARWm/fgBfi4jZxVbWNJsBl0nq\nb5T+OCJ+WXBN1phNgGvTaYSGA1dExJyCa2q2E4ErJK0JPAocU29g6T86a2ZmrdcNu6HMzKzFHBZm\nZpbLYWFmZrkcFmZmlsthYWZmuRwWZmaWy2Fh1qB0OvVHJW2Y7m+U7m+d99oG5n376ldo1jo+zsJs\nCCRNAbaLiBMk/QD4fUR8u+i6zFrNWxZmQ/NvwJ6STgL+BvhOrUGSrk1nKl0k6Qvpsa3TBbo2VuY2\nSfun515KXzeV9Kt0FtAH0hHuZoXzloXZEEmaAMwG9o+IuXXGbJiuKb8O2fnL9omI5yQdCxwE3A28\nPyL+KY1/MSI2kPRVYO2I+FY6Rch6EfFKW1bMbBDesjAbuolkV2XcdZAxX5a0ELiT7EzI2wFExI+A\nDYATgCk1XjcfOEbSPwNjHBTWKRwWZkMgaRzZ2Tk/DHxV0iY1xuwLfAzYMyLGkZ1ldp303Lpk4QEw\nYuBrI+K/gX3ITrN/qaTPtGI9zIbKYWE2NN8nu0DTk8C3qd2zGAk8FxGvSdqRLFj6TQd+Avwzb78U\nqSDrawB/jIiL0/N1ry9g1k4OC7MGpctqPl7Vp7gQ2FHS3gOGzgbWlLQYOAf4TXr9PmQXPpoeET8D\nXpN0dHpNf/OwAtwv6V7gCKDrrvFh5eQGt5mZ5fKWhZmZ5XJYmJlZLoeFmZnlcliYmVkuh4WZmeVy\nWJiZWS6HhZmZ5XJYmJlZrv8PP8dAL0wfwAEAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0xae30b70>"
+ ]
+ },
+ "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_shear<stress_allow_shear:\n",
+ " print \"The stress developed \",round(stress_shear,2),\" is in allowable ranges for \",round(A,2),\"mm2 area\"\n",
+ "else:\n",
+ " print \"The stress developed\",stress_shear,\" is in non allowable ranges\",A,\"area\"\n",
+ "Area_allow = v*(10**3)/shear_allow_per #mm - the allowable area\n",
+ "print \"The minimum area is \",Area_allow ,\"mm2\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.6 page number 478"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "W8x24 gives the allowable ranges of shear stress\n",
+ "lengths of the bearing at A 0.092 in\n",
+ "lengths of the bearing at B 2.12 in\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "stress_allow = 24 #ksi - The maximum allowable stress\n",
+ "stress_allow_shear = 14.5 #ksi- The maximum allowable shear stress\n",
+ "M_max = 36 #k-ft The maximum moment\n",
+ "l = 16 #in-The length of the rod\n",
+ "w = 2 #k/ft - The force distribution on the rod\n",
+ "A = l*w\n",
+ "R_A = 6.4 #k - The reaction at A\n",
+ "R_B = 25.6 #k - the reaction at B\n",
+ "v_max = R_B-l*w #kips the maximum stress, from diagram\n",
+ "#W8x24 is used from the appendix table 3 and 4 \n",
+ "l =0.245 #in - W8x24 crossesction length\n",
+ "#Caliculations \n",
+ "\n",
+ "stress_xy = v_max/A #ksi the approximate shear stress \n",
+ "if stress_xy < stress_allow_shear:\n",
+ " print \"W8x24 gives the allowable ranges of shear stress\"\n",
+ "else:\n",
+ " print \"W8x24 doesnot gives the allowable ranges of shear stress\"\n",
+ "k = 7.0/8 #in the distance from the outer face of the flange to the webfillet\n",
+ "#at+kt should not exceed 0.75 of yeild stress\n",
+ "#a1t+2kt should not exceed 0.75 of yeild stress\n",
+ "Stress_yp = 36 #Ksi - The yeild stress\n",
+ "t = 0.245 #in thickness of the web\n",
+ "#support a \n",
+ "a = R_A/(0.75*Stress_yp*t)-k #in lengths of the bearings\n",
+ "#support b\n",
+ "a_1 = R_B/(0.75*Stress_yp*t)-2*k #in lengths of the bearings\n",
+ "print \"lengths of the bearing at A \",round(a,3),\"in\"\n",
+ "print \"lengths of the bearing at B\",round(a_1,3),\"in\"\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 9.8 page number 483"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The suggested diameter is 2.66 in\n"
+ ]
+ }
+ ],
+ "source": [
+ "#given \n",
+ "hp = 63000 #horse power\n",
+ "T = hp*20*(10**-3)/63 #k-in the torsion implies due to horse power\n",
+ "stress_allow_shear = 6 #ksi- The maximum allowable shear stress\n",
+ "M_ver = 6.72/2 #k-in the vertical component of the moment \n",
+ "M_hor = 9.10 #k-in the horizantal component of the moment \n",
+ "#Caliculations \n",
+ "\n",
+ "M = pow(((M_ver**2)+(M_hor**2)),0.5) #K-in The resultant \n",
+ "d = pow((16*(((M**2)+(T**2))**0.5)/(stress_allow_shear*3.14)),0.333) #in, The suggested diameter from derivation\n",
+ "print \"The suggested diameter is\",round(d,2),\"in\""
+ ]
+ }
+ ],
+ "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/charpter_3_9.ipynb b/Engineering_Mechanics_of_Solids_by_Popov_E_P/charpter_3_9.ipynb
new file mode 100644
index 00000000..898a6e79
--- /dev/null
+++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/charpter_3_9.ipynb
@@ -0,0 +1,288 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chaper 3:Generalized hooke's law, Pressure vessels and Thick walled cylinders"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.1 page number 141"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the stiffness constant is 64.0 N/mm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "from numpy.random import randn\n",
+ "th = 8 #mm - thickness \n",
+ "G = 0.64 #N/mm2 -shear modulus\n",
+ " \n",
+ "a = 40 #mm length\n",
+ "b = 20 #mm width \\\n",
+ "Area = a*b #mm2\n",
+ "e = randn() # lets say any random vale\n",
+ "strain = e/th # strain in shearing case\n",
+ "#caliculations\n",
+ "\n",
+ "stress =G*strain\n",
+ "F = stress*Area\n",
+ "#stiffness = froce/displacement\n",
+ "k = F/e #N/mm\n",
+ "print \"the stiffness constant is \",k,\"N/mm\"\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2 page number 149"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The change in the dimension between parallel faces is -0.025 mm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "a = 50 #mm - length of a cube\n",
+ "E = 200 # Gpa - the youngs modulus \n",
+ "v = 0.25 # no units- poissions ratio \n",
+ "pressure = 200 # Mpa - pressure acting on all sides \n",
+ "#pressure is a compressive stress \n",
+ "S_x = -200 # Gpa - The stress in X direction \n",
+ "S_y = -200 # Gpa - The stress in Y direction\n",
+ "S_z = -200 # Gpa - The stress in Z direction\n",
+ "#Caliculations\n",
+ "\n",
+ "e = S_x*pow(10,-3)/E - v*S_y*pow(10,-3)/E-v*S_z*pow(10,-3)/E#mm - considering all three directions \n",
+ "x = e*a #mmThe change in the dimension between parallel faces\n",
+ "print \"The change in the dimension between parallel faces is \",x,\"mm\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.3 page number 154"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The Hoop stress is 80.0 mm\n",
+ "The longitudinal stress is 40.0 mm\n",
+ "The change in daimeter of the cylinder is 0.35 mm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "R = 1000 # mm - radius of the cylinder \n",
+ "t = 10 #mm - thickness of the cylinder\n",
+ "p_in = 0.80 #Mpa- Internal pressure \n",
+ "E = 200 #Mpa- youngs modulus \n",
+ "v = 0.25 # poission ratio\n",
+ "#caliculations\n",
+ "\n",
+ "Stress_1 = p_in*R/t #Mpa -Hoop stress #From derived expressions \n",
+ "Stress_2 = p_in*R/(2*t) #Mpa- Longitudinal stress \n",
+ "e = Stress_1*pow(10,-3)/E-v*Stress_2*pow(10,-3)/E\n",
+ "dia_change = e*R #mm- The change in daimeter of the cylinder \n",
+ "print \"The Hoop stress is \",Stress_1,\"mm\"\n",
+ "print \"The longitudinal stress is \",Stress_2, \"mm\"\n",
+ "print \"The change in daimeter of the cylinder is\",dia_change,\"mm\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.4 page number 156"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The maximum stress is 40.0 mm\n",
+ "The change in daimeter of the cylinder is 0.15 mm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "R = 1000 #mm - radius of the cylinder\n",
+ "th = 10 #mm - thickness of the cylinder\n",
+ "E = 200 #Mpa- youngs modulus \n",
+ "v = 0.25 # poission ratio\n",
+ "p_in = 0.80 #Mpa- Internal pressure\n",
+ "t = 10 #mm - thickness of the cylinder\n",
+ "#caliculations\n",
+ "\n",
+ "Stress_1 = p_in*R/(2*t) #Mpa -Hoop stress #From derived expressions \n",
+ "Stress_2 = p_in*R/(2*t) #Mpa- Longitudinal stress\n",
+ "# Hoop stress and Longitudinal stress are same in this case\n",
+ "e = Stress_1*pow(10,-3)/E-v*Stress_2*pow(10,-3)/E\n",
+ "dia_change = e*R #mm- The change in daimeter of the cylinder\n",
+ "print \"The maximum stress is \",Stress_2, \"mm\"\n",
+ "print \"The change in daimeter of the cylinder is\",dia_change,\"mm\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.5 page number 156"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The diameter of each bolt is 1.41985914794 mm\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "p_in = 0.7 #Mpa - internal pressure \n",
+ "n_bolts = 20 # number of bolts \n",
+ "dia = 650 #mm - bolt circle diameter \n",
+ "stress_allow = 125 #mm Maximum alowable stress\n",
+ "Stress_conc = 2 #stress concentration\n",
+ "d = 25 #mm \n",
+ "#caliculations\n",
+ "\n",
+ "F = p_in*3.14*pow(((dia-2*d)/2),2)*pow(10,6) #N\n",
+ "F_each = F/n_bolts #N- force per each Bolt\n",
+ "A = Stress_conc*F_each/(stress_allow*pow(10,-6)) #mm2 The bolt area \n",
+ "Bolt_dia = 2*pow((round(A,3)/3.14),0.5)*pow(10,-7) #mm the bolt daimeter\n",
+ "print \"The diameter of each bolt is\",Bolt_dia,\"mm\"\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.6 page number 166"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The average stress in case a is 10.0238095238 p\n",
+ "The average stress in case b is 0.133333333333 p\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Given\n",
+ "from numpy.random import randn\n",
+ "r_1 = randn()# let r_1 is a random number \n",
+ "t = 0.1*r_1 #Thickness\n",
+ "r_2 = r_1+t #Outer Radius\n",
+ "#caliculations\n",
+ "\n",
+ "stress_1_a= ((r_1**2)/((r_2**2)-(r_1**2)))*(1+((r_2**2)/(r_1**2)))#p -r =r_2\n",
+ "stress_2_a= ((r_1**2)/((r_2**2)-(r_1**2)))*(1+((r_2**2)/(r_2**2)))#p -r =r_1\n",
+ "stress_avg_a=(stress_1_a+stress_2_a)/2 #p\n",
+ "print \"The average stress in case a is\",stress_avg_a,\"p\"\n",
+ "\n",
+ "#Case-B\n",
+ "#Given\n",
+ "r_1 = randn()# let r_1 is a random number \n",
+ "r_2_b= 4*r_1 \n",
+ "#caliculations\n",
+ "\n",
+ "stress_1_b = ((r_1**2)/((r_2_b**2)-(r_1**2)))*(1+((r_2_b**2)/(r_1**2)))#p -r =r_2\n",
+ "stress_2_b= ((r_1**2)/((r_2_b**2)-(r_1**2)))*(1+((r_2_b**2)/(r_2_b**2)))#p -r =r_1\n",
+ "stress_avg_b=(stress_1_b+stress_2_b)/2 #p\n",
+ "print \"The average stress in case b is\",stress_2_b,\"p\"\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/screenshots/1_6.PNG b/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/1_6.PNG
new file mode 100644
index 00000000..3e77324d
--- /dev/null
+++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/1_6.PNG
Binary files differ
diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/2_6.PNG b/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/2_6.PNG
new file mode 100644
index 00000000..9dea04e5
--- /dev/null
+++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/2_6.PNG
Binary files differ
diff --git a/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/3_6.PNG b/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/3_6.PNG
new file mode 100644
index 00000000..4ff04bf3
--- /dev/null
+++ b/Engineering_Mechanics_of_Solids_by_Popov_E_P/screenshots/3_6.PNG
Binary files differ
diff --git a/Fundamentals_Of_Electronic_Devices_by_P._Raja,_Pragati_Sharma/README.txt b/Fundamentals_Of_Electronic_Devices_by_P._Raja,_Pragati_Sharma/README.txt
new file mode 100644
index 00000000..3c89bbef
--- /dev/null
+++ b/Fundamentals_Of_Electronic_Devices_by_P._Raja,_Pragati_Sharma/README.txt
@@ -0,0 +1,10 @@
+Contributed By: Toyab
+Course: btech
+College/Institute/Organization: Greenway Institute Of Technology
+Department/Designation: ECE
+Book Title: Fundamentals Of Electronic Devices
+Author: P. Raja, Pragati Sharma
+Publisher: Umesh Publications, Delhi
+Year of publication: 2010
+Isbn: 978-93-80176-08-6
+Edition: 2 \ No newline at end of file
diff --git a/Grobs_Basic_Electronics_by_M_E_Schultz/README.txt b/Grobs_Basic_Electronics_by_M_E_Schultz/README.txt
new file mode 100644
index 00000000..bdd40ad2
--- /dev/null
+++ b/Grobs_Basic_Electronics_by_M_E_Schultz/README.txt
@@ -0,0 +1,10 @@
+Contributed By: Preeti
+Course: btech
+College/Institute/Organization: Carreer Launcher
+Department/Designation: Faculty for Quantative Aptitude
+Book Title: Grobs Basic Electronics
+Author: M E Schultz
+Publisher: McGraw-Hill
+Year of publication: 2010
+Isbn: 9780073510859
+Edition: 11 \ No newline at end of file
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/.chapter2.ipynb.swp b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/.chapter2.ipynb.swp
new file mode 100644
index 00000000..933e2d0c
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/.chapter2.ipynb.swp
Binary files differ
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/Chapter9_11.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/Chapter9_11.ipynb
new file mode 100644
index 00000000..dc9cf7f9
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/Chapter9_11.ipynb
@@ -0,0 +1,421 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:48cb33cf6ef13f754e173ca6c35bca3909b876e2908bcec42f91faa51efd7e7e"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter09:Numerical Solution of Partial Differential Equations"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex9.1:pg-350"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#standard five point formula\n",
+ "#example 9.1\n",
+ "#page 350\n",
+ "\n",
+ "u2=5.0\n",
+ "u3=1.0\n",
+ "for i in range(0,3):\n",
+ " u1=(u2+u3+6.0)/4.0\n",
+ " u2=(u1/2.0)+(5.0/2.0)\n",
+ " u3=(u1/2.0)+(1.0/2.0)\n",
+ " print\" the values are u1=%d\\t u2=%d\\t u3=%d\\t\\n\\n\" %(u1,u2,u3)\n",
+ " \n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " the values are u1=3\t u2=4\t u3=2\t\n",
+ "\n",
+ "\n",
+ " the values are u1=3\t u2=4\t u3=2\t\n",
+ "\n",
+ "\n",
+ " the values are u1=3\t u2=4\t u3=2\t\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex9.2:pg-351"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#solution of laplace equation by jacobi method,gauss-seidel method and SOR method\n",
+ "#example 9.2\n",
+ "#page 351\n",
+ "u1=0.25\n",
+ "u2=0.25\n",
+ "u3=0.5\n",
+ "u4=0.5 #initial values\n",
+ "print \"jacobis iteration process\\n\\n\"\n",
+ "print\"u1\\t u2\\t u3\\t u4\\t \\n\\n\"\n",
+ "print \"%f\\t %f\\t %f\\t %f\\t \\n\" %(u1,u2,u3,u4)\n",
+ "for i in range(0,7):\n",
+ " u11=(0+u2+0+u4)/4\n",
+ " u22=(u1+0+0+u3)/4\n",
+ " u33=(1+u2+0+u4)/4\n",
+ " u44=(1+0+u3+u1)/4\n",
+ " u1=u11\n",
+ " u2=u22\n",
+ " u3=u33\n",
+ " u4=u44\n",
+ " print \"%f\\t %f\\t %f\\t %f\\t \\n\" %(u11,u22,u33,u44) \n",
+ "print \" gauss seidel process\\n\\n\"\n",
+ "u1=0.25\n",
+ "u2=0.3125\n",
+ "u3=0.5625\n",
+ "u4=0.46875 #initial values\n",
+ "print \"u1\\t u2\\t u3\\t u4\\t \\n\\n\"\n",
+ "print \"%f\\t %f\\t %f\\t %f\\t \\n\" %(u1,u2,u3,u4)\n",
+ "for i in range(0,4):\n",
+ "\n",
+ " u1=(0.0+u2+0.0+u4)/4.0\n",
+ " u2=(u1+0.0+0.0+u3)/4.0\n",
+ " u3=(1.0+u2+0.0+u4)/4.0\n",
+ " u4=(1.0+0.0+u3+u1)/4.0\n",
+ " print \"%f\\t %f\\t %f\\t %f\\t \\n\" %(u1,u2,u3,u4) \n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "jacobis iteration process\n",
+ "\n",
+ "\n",
+ "u1\t u2\t u3\t u4\t \n",
+ "\n",
+ "\n",
+ "0.250000\t 0.250000\t 0.500000\t 0.500000\t \n",
+ "\n",
+ "0.187500\t 0.187500\t 0.437500\t 0.437500\t \n",
+ "\n",
+ "0.156250\t 0.156250\t 0.406250\t 0.406250\t \n",
+ "\n",
+ "0.140625\t 0.140625\t 0.390625\t 0.390625\t \n",
+ "\n",
+ "0.132812\t 0.132812\t 0.382812\t 0.382812\t \n",
+ "\n",
+ "0.128906\t 0.128906\t 0.378906\t 0.378906\t \n",
+ "\n",
+ "0.126953\t 0.126953\t 0.376953\t 0.376953\t \n",
+ "\n",
+ "0.125977\t 0.125977\t 0.375977\t 0.375977\t \n",
+ "\n",
+ " gauss seidel process\n",
+ "\n",
+ "\n",
+ "u1\t u2\t u3\t u4\t \n",
+ "\n",
+ "\n",
+ "0.250000\t 0.312500\t 0.562500\t 0.468750\t \n",
+ "\n",
+ "0.195312\t 0.189453\t 0.414551\t 0.402466\t \n",
+ "\n",
+ "0.147980\t 0.140633\t 0.385775\t 0.383439\t \n",
+ "\n",
+ "0.131018\t 0.129198\t 0.378159\t 0.377294\t \n",
+ "\n",
+ "0.126623\t 0.126196\t 0.375872\t 0.375624\t \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 51
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex9.4:pg-354"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#poisson equation\n",
+ "#exaample 9.4\n",
+ "#page 354\n",
+ "u2=0.0\n",
+ "u4=0.0\n",
+ "print \" u1\\t u2\\t u3\\t u4\\t\\n\\n\"\n",
+ "for i in range(0,6):\n",
+ " u1=(u2/2.0)+30.0\n",
+ " u2=(u1+u4+150.0)/4.0\n",
+ " u4=(u2/2.0)+45.0\n",
+ " print \"%0.2f\\t %0.2f\\t %0.2f\\t %0.2f\\n\" %(u1,u2,u2,u4)\n",
+ "print \" from last two iterates we conclude u1=67 u2=75 u3=75 u4=83\\n\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " u1\t u2\t u3\t u4\t\n",
+ "\n",
+ "\n",
+ "30.00\t 45.00\t 45.00\t 67.50\n",
+ "\n",
+ "52.50\t 67.50\t 67.50\t 78.75\n",
+ "\n",
+ "63.75\t 73.12\t 73.12\t 81.56\n",
+ "\n",
+ "66.56\t 74.53\t 74.53\t 82.27\n",
+ "\n",
+ "67.27\t 74.88\t 74.88\t 82.44\n",
+ "\n",
+ "67.44\t 74.97\t 74.97\t 82.49\n",
+ "\n",
+ " from last two iterates we conclude u1=67 u2=75 u3=75 u4=83\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 59
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex9.6:pg-362"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#bender-schmidt formula\n",
+ "#example 9.6\n",
+ "#page 362\n",
+ "def f(x):\n",
+ " return (4*x)-(x*x)\n",
+ "#u=[f(0),f(1),f(2),f(3),f(4)]\n",
+ "u1=f(0);u2=f(1);u3=f(2);u4=f(3);u5=f(4);\n",
+ "u11=(u1+u3)/2\n",
+ "u12=(u2+u4)/2\n",
+ "u13=(u3+u5)/2\n",
+ "print \"u11=%0.2f\\t u12=%0.2f\\t u13=%0.2f\\t \\n\" %(u11,u12,u13)\n",
+ "u21=(u1+u12)/2.0\n",
+ "u22=(u11+u13)/2.0\n",
+ "u23=(u12+0)/2.0\n",
+ "print \"u21=%0.2f\\t u22=%0.2f\\t u23=%0.2f\\t \\n\" %(u21,u22,u23)\n",
+ "u31=(u1+u22)/2.0\n",
+ "u32=(u21+u23)/2.0\n",
+ "u33=(u22+u1)/2.0\n",
+ "print \"u31=%0.2f\\t u32=%0.2f\\t u33=%0.2f\\t \\n\" % (u31,u32,u33)\n",
+ "u41=(u1+u32)/2.0\n",
+ "u42=(u31+u33)/2.0\n",
+ "u43=(u32+u1)/2.0\n",
+ "print \"u41=%0.2f\\t u42=%0.2f\\t u43=%0.2f\\t \\n\" % (u41,u42,u43)\n",
+ "u51=(u1+u42)/2.0\n",
+ "u52=(u41+u43)/2.0\n",
+ "u53=(u42+u1)/2.0\n",
+ "print \"u51=%0.2f\\t u52=%0.2f\\t u53=%0.2f\\t \\n\" % (u51,u52,u53)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "u11=2.00\t u12=3.00\t u13=2.00\t \n",
+ "\n",
+ "u21=1.50\t u22=2.00\t u23=1.50\t \n",
+ "\n",
+ "u31=1.00\t u32=1.50\t u33=1.00\t \n",
+ "\n",
+ "u41=0.75\t u42=1.00\t u43=0.75\t \n",
+ "\n",
+ "u51=0.50\t u52=0.75\t u53=0.50\t \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 77
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex9.7:pg-363"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "#bender-schimdt's formula and crank-nicolson formula\n",
+ "#example 9.7\n",
+ "#page 363\n",
+ "#bender -schimdt's formula\n",
+ "import math\n",
+ "from numpy import matrix\n",
+ "z=math.pi\n",
+ "def f(x,t):\n",
+ " return math.exp(z*z*t*-1)*sin(z*x)\n",
+ "#u=[f(0,0),f(0.2,0),f(0.4,0),f(0.6,0),f(0.8,0),f(1,0)]\n",
+ "u1=f(0,0)\n",
+ "u2=f(0.2,0)\n",
+ "u3=f(0.4,0)\n",
+ "u4=f(0.6,0)\n",
+ "u5=f(0.8,0)\n",
+ "u6=f(1.0,0)\n",
+ "u11=u3/2\n",
+ "u12=(u2+u4)/2\n",
+ "u13=u12\n",
+ "u14=u11\n",
+ "print \"u11=%f\\t u12=%f\\t u13=%f\\t u14=%f\\n\\n\" % (u11,u12,u13,u14)\n",
+ "u21=u12/2\n",
+ "u22=(u12+u14)/2\n",
+ "u23=u22\n",
+ "u24=u21\n",
+ "print \"u21=%f\\t u22=%f\\t u23=%f\\t u24=%f\\n\\n\" % (u21,u22,u23,u24)\n",
+ "print \"the error in the solution is: %f\\n\\n\" % (math.fabs(u22-f(0.6,0.04)))\n",
+ "#crank-nicolson formula\n",
+ "#by putting i=1,2,3,4 we obtain four equation\n",
+ "A=matrix([[4, -1, 0, 0] ,[-1, 4, -1, 0],[0, -1, 4, -1],[0, 0, -1, 4]])\n",
+ "C=matrix([[0.9510],[1.5388],[1.5388],[0.9510]])\n",
+ "X=A.I*C\n",
+ "print \"u00=%f\\t u10=%f\\t u20=%f\\t u30=%f\\t\\n\\n\" %(X[0][0],X[1][0],X[2][0],X[3][0])\n",
+ "print \"the error in the solution is: %f\\n\\n\" %(abs(X[1][0]-f(0.6,0.04)))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "u11=0.475528\t u12=0.769421\t u13=0.769421\t u14=0.475528\n",
+ "\n",
+ "\n",
+ "u21=0.384710\t u22=0.622475\t u23=0.622475\t u24=0.384710\n",
+ "\n",
+ "\n",
+ "the error in the solution is: 0.018372\n",
+ "\n",
+ "\n",
+ "u00=0.399255\t u10=0.646018\t u20=0.646018\t u30=0.399255\t\n",
+ "\n",
+ "\n",
+ "the error in the solution is: 0.005172\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex9.8:pg-364"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "#heat equation using crank-nicolson method\n",
+ "#example 9.8\n",
+ "#page 364\n",
+ "from numpy import matrix\n",
+ "import math\n",
+ "z=0.01878\n",
+ "#h=1/2 l=1/8,i=1\n",
+ "u01=0.0\n",
+ "u21=1.0/8.0\n",
+ "u11=(u21+u01)/6.0\n",
+ "print \" u11=%f\\n\\n\" % (u11)\n",
+ "print \"error is %f\\n\\n\" % (math.fabs(u11-z))\n",
+ "#h=1/4,l=1/8,i=1,2,3\n",
+ "A=matrix([[-3.0 ,-1.0 ,0.0],[1.0,-3.0,1.0],[0.0,1.0,-3.0]])\n",
+ "C=matrix([[0.0],[0.0],[-0.125]])\n",
+ "#here we found inverese of A then we multipy it with C\n",
+ "X=A.I*C\n",
+ "print \"u12=%f\\n\\n\" % (X[1][0])\n",
+ "print \"error is %f\\n\\n\" %(math.fabs(X[1][0]-z))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " u11=0.020833\n",
+ "\n",
+ "\n",
+ "error is 0.002053\n",
+ "\n",
+ "\n",
+ "u12=0.013889\n",
+ "\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "error is 0.004891\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter1_11.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter1_11.ipynb
new file mode 100644
index 00000000..81bb2dc6
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter1_11.ipynb
@@ -0,0 +1,629 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:bd492601bf0cbf93169a7f4f37f7f64caba9f8e22a4fc5648e6c332b00f367f3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter01:Errors in Numerical Calculations"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.1:pg-7"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 1.1\n",
+ "#rounding off\n",
+ "#page 7\n",
+ "a1=1.6583\n",
+ "a2=30.0567\n",
+ "a3=0.859378\n",
+ "a4=3.14159\n",
+ "print \"\\nthe numbers after rounding to 4 significant figures are given below\\n\"\n",
+ "print \" %f %.4g\\n'\" %(a1,a1)\n",
+ "print \" %f %.4g\\n\" %(a2,a2)\n",
+ "print \" %f %.4g\\n\" %(a3,a3)\n",
+ "print \" %f %.4g\\n\" %(a4,a4)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "the numbers after rounding to 4 significant figures are given below\n",
+ "\n",
+ " 1.658300 1.658\n",
+ "'\n",
+ " 30.056700 30.06\n",
+ "\n",
+ " 0.859378 0.8594\n",
+ "\n",
+ " 3.141590 3.142\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.2:pg-9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 1.2\n",
+ "#percentage accuracy\n",
+ "#page 9\n",
+ "import math\n",
+ "x=0.51 # the number given\n",
+ "n=2 #correcting upto 2 decimal places\n",
+ "d=math.pow(10,-n)\n",
+ "d=d/2.0\n",
+ "p=(d/x)*100 #percentage accuracy\n",
+ "print \"the percentage accuracy of %f after correcting to two decimal places is %f\" %(x,p)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the percentage accuracy of 0.510000 after correcting to two decimal places is 0.980392\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.3:pg-9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 1.3\n",
+ "#absolute and relative errors\n",
+ "#page 9\n",
+ "X=3.1428571 #approximate value of pi\n",
+ "T_X=3.1415926 # true value of pi\n",
+ "A_E=T_X-X #absolute error\n",
+ "R_E=A_E/T_X #relative error\n",
+ "print \"Absolute Error = %0.7f \\n Relative Error = %0.7f\" %(A_E,R_E)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Absolute Error = -0.0012645 \n",
+ " Relative Error = -0.0004025\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.4:pg-10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 1.4\n",
+ "#best approximation\n",
+ "#page 10\n",
+ "import math\n",
+ "X=1/3 #the actual number\n",
+ "X1=0.30\n",
+ "X2=0.33\n",
+ "X3=0.34\n",
+ "E1=abs(X-X1)\n",
+ "E2=abs(X-X2)\n",
+ "E3=abs(X-X3)\n",
+ "if E1<E2:\n",
+ " if E1<E3:\n",
+ " B_A=X1\n",
+ "elif E2<E1:\n",
+ " if E2<E3:\n",
+ " B_A=X2\n",
+ "elif E3<E2:\n",
+ " if E3<E1:\n",
+ " B_A=X3\n",
+ "print \"the best approximation of 1/3 is %f\" %(B_A)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the best approximation of 1/3 is 0.300000\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.5:pg-10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#relative error\n",
+ "#example 1.5\n",
+ "#page 10\n",
+ "import math\n",
+ "n=8.6 # the corrected number\n",
+ "N=1 #the no is rounded to one decimal places\n",
+ "E_A=math.pow(10,-N)/2\n",
+ "E_R=E_A/n\n",
+ "print \"the relative error of the number is:%0.4f\" %(E_R)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the relative error of the number is:0.0058\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.6:pg-10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 1.6\n",
+ "#absolute error and relative error\n",
+ "#page 10\n",
+ "import math\n",
+ "s=math.sqrt(3)+math.sqrt(5)+math.sqrt(7) #the sum square root of 3,5,7\n",
+ "n=4\n",
+ "Ea=3*(math.pow(10,-n)/2) #absolute error\n",
+ "R_E=Ea/s\n",
+ "print \"the sum of square roots is %0.4g \\n\" %(s)\n",
+ "print \"the absolute error is %f \\n\" %(Ea)\n",
+ "print \"the relative error is %f\" %(R_E)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the sum of square roots is 6.614 \n",
+ "\n",
+ "the absolute error is 0.000150 \n",
+ "\n",
+ "the relative error is 0.000023\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.7:pg-10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#absolute error\n",
+ "#example 1.7\n",
+ "#page 10\n",
+ "import math\n",
+ "n=[0.1532, 15.45, 0.0000354, 305.1, 8.12, 143.3, 0.0212, 0.643, 0.1734] #original numbers\n",
+ "#rounding all numbers to 2 decimal places\n",
+ "n=[305.1, 143.3, 0.15,15.45, 0.00, 8.12, 0.02, 0.64, 0.17] \n",
+ "sum=0;\n",
+ "#l=length(n);\n",
+ "for i in range(len(n)):\n",
+ " sum=sum+n[i];\n",
+ "\n",
+ "E_A=2*math.pow(10,-1)/2+7*math.pow(10,-2)/2\n",
+ "print \"the absolute error is:%0.2f\" %(E_A)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the absolute error is:0.14\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.8:pg-11"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#difference in 3 significant figures\n",
+ "#example 1.8\n",
+ "#page 11\n",
+ "import math\n",
+ "X1=math.sqrt(6.37)\n",
+ "X2=math.sqrt(6.36)\n",
+ "d=X1-X2 #difference between two numbers\n",
+ "print \"the difference corrected to 3 significant figures is %0.3g\" %(d)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the difference corrected to 3 significant figures is 0.00198\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.9:pg-12"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#relative error\n",
+ "#example 1.10\n",
+ "#page 12\n",
+ "import math\n",
+ "a=6.54\n",
+ "b=48.64\n",
+ "c=13.5\n",
+ "da=0.01\n",
+ "db=0.02\n",
+ "dc=0.03\n",
+ "s=math.pow(a,2)*math.sqrt(b)/math.pow(c,3)\n",
+ "print \"s=%f\" %(s)\n",
+ "r_err=2*(da/a)+(db/b)/2+3*(dc/c)\n",
+ "print \"the relative error is :%f\" %(r_err)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "s=0.121241\n",
+ "the relative error is :0.009930\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.11:pg-13"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#relative error\n",
+ "#example 1.11\n",
+ "#page 13\n",
+ "import math\n",
+ "x=1\n",
+ "y=1\n",
+ "z=1\n",
+ "u=(5*x*math.pow(y,3))/math.pow(z,3)\n",
+ "dx=0.001\n",
+ "dy=0.001\n",
+ "dz=0.001\n",
+ "max=((5*math.pow(y,2))/math.pow(z,3))*dx+((10*x*y)/math.pow(z,3))*dy+((15*x*math.pow(y,2))/math.pow(z,4))*dz\n",
+ "e=max/u\n",
+ "print \" the relative error is :%f\" %(e)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " the relative error is :0.006000\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.12:pg-12"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#taylor series\n",
+ "#example 1.12\n",
+ "#page 12\n",
+ "import math\n",
+ "def f(x):\n",
+ " return math.pow(x,3)+5*x-10\n",
+ "def f1(x):\n",
+ " return 3*math.pow(x,2)-6*x+5\n",
+ "def f2(x):\n",
+ " return 6*x-6\n",
+ "def f3(x):\n",
+ " return 6\n",
+ "D=[0,f(0), f1(0), f2(0), f3(0)]\n",
+ "S1=0;\n",
+ "h=1;\n",
+ "for i in range(1,5):\n",
+ " S1=S1+math.pow(h,i-1)*D[i]/math.factorial(i-1)\n",
+ " \n",
+ "print \"the third order taylors series approximation of f(1) is :%d\" %(S1)\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the third order taylors series approximation of f(1) is :-7\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.13:pg-16"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#taylor series\n",
+ "#example 1.13\n",
+ "#page 16\n",
+ "import math\n",
+ "def f(x):\n",
+ " return math.sin(x)\n",
+ "def f1(x):\n",
+ " return math.cos(x)\n",
+ "def f2(x):\n",
+ " return -1*math.sin(x)\n",
+ "def f3(x):\n",
+ " return -1*math.cos(x)\n",
+ "def f4(x):\n",
+ " return math.sin(x)\n",
+ "def f5(x):\n",
+ " return math.cos(x)\n",
+ "def f6(x):\n",
+ " return -1*math.sin(x)\n",
+ "def f7(x):\n",
+ " return -1*math.cos(x)\n",
+ "D=[0,f(math.pi/6), f1(math.pi/6), f2(math.pi/6), f3(math.pi/6), f4(math.pi/6), f5(math.pi/6), f6(math.pi/6), f7(math.pi/6)]\n",
+ "S1=0\n",
+ "h=math.pi/6\n",
+ "print \"order of approximation computed value of sin(pi/3) absolute eror\\n\\n\"\n",
+ "for j in range(1,10):\n",
+ " for i in range(1,j):\n",
+ " S1=S1+math.pow(h,i-1)*D[i]/math.factorial(i-1) \n",
+ " print \"%d %0.9f %0.9f\\n\" %(j,S1,abs(math.sin(math.pi/3)-S1))\n",
+ " S1=0\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "order of approximation computed value of sin(pi/3) absolute eror\n",
+ "\n",
+ "\n",
+ "1 0.000000000 0.866025404\n",
+ "\n",
+ "2 0.500000000 0.366025404\n",
+ "\n",
+ "3 0.953449841 0.087424437\n",
+ "\n",
+ "4 0.884910922 0.018885518\n",
+ "\n",
+ "5 0.864191614 0.001833790\n",
+ "\n",
+ "6 0.865757475 0.000267929\n",
+ "\n",
+ "7 0.866041490 0.000016087\n",
+ "\n",
+ "8 0.866027181 0.000001777\n",
+ "\n",
+ "9 0.866025327 0.000000077\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 32
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.14:pg-18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#maclaurins expansion\n",
+ "#example 1.14\n",
+ "#page 18\n",
+ "import math\n",
+ "n=8 #correct to 8 decimal places\n",
+ "x=1\n",
+ "for i in range(1,50):\n",
+ " if x/math.factorial(i)<math.pow(10,-8)/2:\n",
+ " c=i\n",
+ " break \n",
+ "print \"no. of terms needed to correct to 8 decimal places is : %d \" %(c)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "no. of terms needed to correct to 8 decimal places is : 2 \n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex1.15:pg-18"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#series apprixamation\n",
+ "#example 1.15\n",
+ "#page 18\n",
+ "import math\n",
+ "x=.09090909 # 1/11 =.09090909\n",
+ "S1=0\n",
+ "for i in range(1,5,2):\n",
+ " S1=S1+math.pow(x,i)/i\n",
+ "print \"value of log(1.2) is : %0.8f\\n\\n\" %(2*S1)\n",
+ "c=0\n",
+ "for i in range(1,50):\n",
+ " if math.pow(.09090909,i)/i<2*math.pow(10,-7):\n",
+ " c=i\n",
+ " break\n",
+ "print \"min no of terms needed to get value wuth same accuracy is :%d\" %(c)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "value of log(1.2) is : 0.18231906\n",
+ "\n",
+ "\n",
+ "min no of terms needed to get value wuth same accuracy is :6\n"
+ ]
+ }
+ ],
+ "prompt_number": 74
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter2_9.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter2_9.ipynb
new file mode 100644
index 00000000..de2ffe49
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter2_9.ipynb
@@ -0,0 +1,2188 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:db08d9e0a10e9ce0d90e73a446fe0a4e03c97a59904a60427a6fc2721b68005f"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter02:Solution of Algebric and Transcendental Equations"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.1:pg-24"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.1\n",
+ "#bisection method\n",
+ "#page 24\n",
+ "import math\n",
+ "def f(x):\n",
+ " return math.pow(x,3)-x-1\n",
+ "x1=1\n",
+ "x2=2 #f(1) 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",
+ " \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))<d:\n",
+ " break\n",
+ " print \" \\t%f %f %f %f %f\\n\" %(a,b,f(a),f(b),x1)\n",
+ "print \"the root of the equation is %f\" %(x1)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "succesive iterations \ta\t b\t f(a)\t f(b)\t\\ x1\n",
+ "\n",
+ " \t2.000000 2.058824 -1.000000 -0.390800 2.058824\n",
+ "\n",
+ " \t2.096559 2.058824 0.022428 -0.390800 2.096559\n",
+ "\n",
+ " \t2.094511 2.058824 -0.000457 -0.390800 2.094511\n",
+ "\n",
+ "the root of the equation is 2.094552\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.7:pg-29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.7\n",
+ "#false position method\n",
+ "#page 29\n",
+ "def f(x):\n",
+ " return x**2.2-69\n",
+ "a=5.0\n",
+ "b=6.0 #f(5) is negative and f(6)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))<d:\n",
+ " break\n",
+ " print \" \\t%f %f %f %f %f\\n\" %(a,b,f(a),f(b),x1)\n",
+ "print \"the root of the equation is %f\" %(x1)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "succesive iterations \ta\t b\t f(a)\t f(b)\t\\ x1\n",
+ "\n",
+ " \t7.027228 6.000000 3.933141 -17.485113 7.027228\n",
+ "\n",
+ " \t6.838593 6.000000 -0.304723 -17.485113 6.838593\n",
+ "\n",
+ " \t6.853467 6.000000 0.024411 -17.485113 6.853467\n",
+ "\n",
+ " \t6.852277 6.000000 -0.001950 -17.485113 6.852277\n",
+ "\n",
+ " \t6.852372 6.000000 0.000156 -17.485113 6.852372\n",
+ "\n",
+ " \t6.852365 6.000000 -0.000012 -17.485113 6.852365\n",
+ "\n",
+ "the root of the equation is 6.852365\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.8:pg-29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.8\n",
+ "#false position method\n",
+ "#page 29\n",
+ "import math\n",
+ "def f(x):\n",
+ " return 2*x-log10(x)-7\n",
+ "a=3.0\n",
+ "b=4.0 #f(3) is negative and f(4)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))<d:\n",
+ " break\n",
+ " print \" \\t%f %f %f %f %f\\n\" %(a,b,f(a),f(b),x1)\n",
+ "print \"the root of the equation is %0.4g\" %(x1)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "succesive iterations \ta \t b\t f(a)\t f(b)\t x1\n",
+ "\n",
+ " \t3.000000 3.787772 -1.477121 -0.002839 3.787772\n",
+ "\n",
+ " \t3.789289 3.787772 0.000021 -0.002839 3.789289\n",
+ "\n",
+ "the root of the equation is 3.789\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.9:pg-30"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.9\n",
+ "#false position method\n",
+ "#page 30\n",
+ "import math\n",
+ "def f(x):\n",
+ " return 4*math.exp(-x)*math.sin(x)-1\n",
+ "a=0.0\n",
+ "b=0.5 #f(0) is negative and f(0.5)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))<d:\n",
+ " break\n",
+ " print \" \\t%f %f %f %f %f\\n\" %(a,b,f(a),f(b),x1)\n",
+ "print \"the root of the equation is %f\" %(x1)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "succesive iterations \ta\t b\t f(a)\t f(b)\t\\ x1\n",
+ "\n",
+ " \t0.429869 0.500000 0.084545 0.163145 0.429869\n",
+ "\n",
+ " \t0.354433 0.500000 -0.026054 0.163145 0.354433\n",
+ "\n",
+ " \t0.374479 0.500000 0.006132 0.163145 0.374479\n",
+ "\n",
+ " \t0.369577 0.500000 -0.001547 0.163145 0.369577\n",
+ "\n",
+ " \t0.370802 0.500000 0.000384 0.163145 0.370802\n",
+ "\n",
+ " \t0.370497 0.500000 -0.000096 0.163145 0.370497\n",
+ "\n",
+ " \t0.370573 0.500000 0.000024 0.163145 0.370573\n",
+ "\n",
+ "the root of the equation is 0.370554\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.10:pg-33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.10\n",
+ "#iteration method\n",
+ "#page 33\n",
+ "import math\n",
+ "def f(x):\n",
+ " return 1/(math.sqrt(x+1))\n",
+ "x1=0.75\n",
+ "x2=0.0\n",
+ "n=1\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(x1-x2)>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))<e:\n",
+ " break\n",
+ " c=c+1\n",
+ " print \" \\t%f %f %f %f %f\\n\" %(x0,x1,x2,x3,y)\n",
+ "print \"the root of the equation after %i iteration is %f\" %(c,y)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "successive iterations \t x0 \t x1 \t x2 \t x3 \t y\n",
+ "\n",
+ " \t1.523592 1.535369 1.517710 1.526531 1.523592\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ " \t1.523593 1.523593 1.523593 1.523593 1.523593\n",
+ "\n",
+ "the root of the equation after 9 iteration is 1.523593\n"
+ ]
+ }
+ ],
+ "prompt_number": 42
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.15:pg-39"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.15\n",
+ "#newton-raphson method\n",
+ "#page 39\n",
+ "import math\n",
+ "def f(x):\n",
+ " return x**3-2*x-5\n",
+ "def f1(x):\n",
+ " return 3*x**2-2 # first derivative of the function\n",
+ "x0=2.0 # initial value\n",
+ "d=0.0001\n",
+ "c=0\n",
+ "n=1\n",
+ "print \"successive iterations \\t x0 \\t f(x0) \\t f1(x0)\\n\"\n",
+ "while n==1:\n",
+ " x2=x0\n",
+ " x1=x0-(f(x0)/f1(x0))\n",
+ " x0=x1\n",
+ " print \" \\t%f \\t%f \\t%f \\n\" %(x2,f(x1),f1(x1))\n",
+ " c=c+1\n",
+ " if abs(f(x0))<d:\n",
+ " break\n",
+ "print \"the root of %i iteration is:%f\" %(c,x0)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "successive iterations \t x0 \t f(x0) \t f1(x0)\n",
+ "\n",
+ " \t2.000000 \t0.061000 \t11.230000 \n",
+ "\n",
+ " \t2.100000 \t0.000186 \t11.161647 \n",
+ "\n",
+ " \t2.094568 \t0.000000 \t11.161438 \n",
+ "\n",
+ "the root of 3 iteration is:2.094551\n"
+ ]
+ }
+ ],
+ "prompt_number": 44
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.16:pg-40"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.16\n",
+ "#newton-raphson method\n",
+ "#page 40\n",
+ "import math\n",
+ "def f(x):\n",
+ " return x*math.sin(x)+math.cos(x)\n",
+ "def f1(x):\n",
+ " return x*math.cos(x) #first derivation of the function\n",
+ "x0=math.pi # initial value\n",
+ "d=0.0001\n",
+ "c=0 \n",
+ "n=1\n",
+ "print \"successive iterations \\tx0\\t f(x0)\\t f1(x0)\\n\"\n",
+ "while n==1:\n",
+ " x2=x0\n",
+ " x1=x0-(f(x0)/f1(x0))\n",
+ " x0=x1\n",
+ " print \" \\t%f \\t%f \\t%f\\n\" %(x2,f(x1),f1(x1))\n",
+ " c=c+1\n",
+ " if abs(f(x0))<d:\n",
+ " break\n",
+ "print \"the root of %i iteration is:%f\" %(c,x0)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "successive iterations \tx0\t f(x0)\t f1(x0)\n",
+ "\n",
+ " \t3.141593 \t-0.066186 \t-2.681457\n",
+ "\n",
+ " \t2.823283 \t-0.000564 \t-2.635588\n",
+ "\n",
+ " \t2.798600 \t-0.000000 \t-2.635185\n",
+ "\n",
+ "the root of 3 iteration is:2.798386\n"
+ ]
+ }
+ ],
+ "prompt_number": 46
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.17:pg-40"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.17\n",
+ "#newton-raphson method\n",
+ "#page 40\n",
+ "import math\n",
+ "def f(x):\n",
+ " return x*math.exp(x)-1\n",
+ "def f1(x):\n",
+ " return math.exp(x)+x*math.exp(x) #first derivative of the function\n",
+ "x0=0 # initial value\n",
+ "d=0.0001 \n",
+ "c=0\n",
+ "n=1\n",
+ "print \"successive iterations \\tx0\\t f(x0)\\t f1(x0)\\n\"\n",
+ "while n==1:\n",
+ " x2=x0\n",
+ " x1=x0-(f(x0)/f1(x0))\n",
+ " x0=x1\n",
+ " print \" \\t%f \\t%f \\t%f\\n\" %(x2,f(x1),f1(x1))\n",
+ " c=c+1\n",
+ " if abs(f(x0))<d:\n",
+ " break\n",
+ "print \"the root of %i iteration is:%f\" %(c,x0)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "successive iterations \tx0\t f(x0)\t f1(x0)\n",
+ "\n",
+ " \t0.000000 \t1.718282 \t5.436564\n",
+ "\n",
+ " \t1.000000 \t0.355343 \t3.337012\n",
+ "\n",
+ " \t0.683940 \t0.028734 \t2.810232\n",
+ "\n",
+ " \t0.577454 \t0.000239 \t2.763614\n",
+ "\n",
+ " \t0.567230 \t0.000000 \t2.763223\n",
+ "\n",
+ "the root of 5 iteration is:0.567143\n"
+ ]
+ }
+ ],
+ "prompt_number": 48
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.18:pg-41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.18\n",
+ "#newton-raphson method\n",
+ "#page 41\n",
+ "import math\n",
+ "def f(x):\n",
+ " return math.sin(x)-x/2.0\n",
+ "def f1(x):\n",
+ " return math.cos(x)-0.5\n",
+ "x0=math.pi/2.0 # initial value\n",
+ "d=0.0001\n",
+ "c=0\n",
+ "n=1\n",
+ "print \"successive iterations \\t x0 \\t f(x0)\\t f1(x0)\\n\"\n",
+ "while n==1:\n",
+ " x2=x0\n",
+ " x1=x0-(f(x0)/f1(x0))\n",
+ " x0=x1\n",
+ " print \" \\t%f\\t%f\\t%f\\n\" %(x2,f(x1),f1(x1))\n",
+ " c=c+1\n",
+ " if abs(f(x0))<d:\n",
+ " break\n",
+ "print \"the root of %i iteration is: %0.4g\" %(c,x0)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "successive iterations \t x0 \t f(x0)\t f1(x0)\n",
+ "\n",
+ " \t1.570796\t-0.090703\t-0.916147\n",
+ "\n",
+ " \t2.000000\t-0.004520\t-0.824232\n",
+ "\n",
+ " \t1.900996\t-0.000014\t-0.819039\n",
+ "\n",
+ "the root of 3 iteration is: 1.896\n"
+ ]
+ }
+ ],
+ "prompt_number": 51
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.19:pg-41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.19\n",
+ "#newton-raphson method\n",
+ "#page 41\n",
+ "import math\n",
+ "def f(x):\n",
+ " return 4*math.exp(-x)*math.sin(x)-1\n",
+ "def f1(x):\n",
+ " return math.cos(x)*4*math.exp(-x)-4*math.exp(-x)*math.sin(x)\n",
+ "x0=0.2 # initial value\n",
+ "d=0.0001\n",
+ "c=0 \n",
+ "n=1\n",
+ "print \"successive iterations \\t x0 \\t f(x0)\\t f1(x0)\\n\"\n",
+ "while n==1:\n",
+ " x2=x0\n",
+ " x1=x0-(f(x0)/f1(x0))\n",
+ " x0=x1\n",
+ " print \" \\t%f \\t%f \\t%f\\n\" %(x2,f(x1),f1(x1))\n",
+ " c=c+1\n",
+ " if abs(f(x0))<d:\n",
+ " break \n",
+ "print \"the root of %i iteration is: %0.3g\" %(c,x0)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "successive iterations \t x0 \t f(x0)\t f1(x0)\n",
+ "\n",
+ " \t0.200000 \t-0.056593 \t1.753325\n",
+ "\n",
+ " \t0.336526 \t-0.002769 \t1.583008\n",
+ "\n",
+ " \t0.368804 \t-0.000008 \t1.573993\n",
+ "\n",
+ "the root of 3 iteration is: 0.371\n"
+ ]
+ }
+ ],
+ "prompt_number": 54
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.20:pg-42"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.20\n",
+ "#generalized newton-raphson method\n",
+ "#page 42\n",
+ "import math\n",
+ "def f(x):\n",
+ " return x**3-x**2-x+1\n",
+ "def f1(x):\n",
+ " return 3*x**2-2*x-1\n",
+ "def f2(x):\n",
+ " return 6*x-2\n",
+ "x0=0.8 # initial value to finf double root\n",
+ "n=1 \n",
+ "print \"successive iterations \\t x0 \\t x1\\t x2\\n\"\n",
+ "while n==1:\n",
+ " x1=x0-(f(x0)/f1(x0));\n",
+ " x2=x0-(f1(x0)/f2(x0));\n",
+ " if abs(x1-x2)<0.000000001:\n",
+ " x0=(x1+x2)/2.0\n",
+ " break\n",
+ " else:\n",
+ " x0=(x1+x2)/2;\n",
+ " print \" %f\\t %f\\t %f\\n\" %(x0,x1,x2)\n",
+ "print \"\\n \\nthe double root is at: %f\" %(x0)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "successive iterations \t x0 \t x1\t x2\n",
+ "\n",
+ " 0.974370\t 0.905882\t 1.042857\n",
+ "\n",
+ " 0.993890\t 0.987269\t 1.000512\n",
+ "\n",
+ " 0.998489\t 0.996950\t 1.000028\n",
+ "\n",
+ " 0.999623\t 0.999245\t 1.000002\n",
+ "\n",
+ " 0.999906\t 0.999812\t 1.000000\n",
+ "\n",
+ " 0.999976\t 0.999953\t 1.000000\n",
+ "\n",
+ " 0.999994\t 0.999988\t 1.000000\n",
+ "\n",
+ " 0.999999\t 0.999997\t 1.000000\n",
+ "\n",
+ " 1.000000\t 0.999999\t 1.000000\n",
+ "\n",
+ " 1.000000\t 1.000000\t 1.000000\n",
+ "\n",
+ " 1.000000\t 1.000000\t 1.000000\n",
+ "\n",
+ " 1.000000\t 1.000000\t 1.000000\n",
+ "\n",
+ " 1.000000\t 1.000000\t 1.000000\n",
+ "\n",
+ "\n",
+ " \n",
+ "the double root is at: 1.000000\n"
+ ]
+ }
+ ],
+ "prompt_number": 57
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.21:pg-45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#ramanujan's method\n",
+ "#example 2.21\n",
+ "#page 45\n",
+ "def f(x):\n",
+ " return 1-(13.0/12.0)*x-(3.0/8.0)*x**2+(1.0/24.0)*x**3\n",
+ "a1=13.0/12.0\n",
+ "a2=-3.0/8.0\n",
+ "a3=1.0/24.0\n",
+ "b1=1\n",
+ "b2=a1\n",
+ "b3=a1*b2+a2*b1\n",
+ "b4=a1*b3+a2*b2+a3*b1\n",
+ "b5=a1*b4+a2*b3+a3*b2\n",
+ "b6=a1*b5+a2*b4+a3*b3\n",
+ "b7=a1*b6+a2*b5+a3*b4\n",
+ "b8=a1*b7+a2*b6+a3*b5\n",
+ "b9=a1*b8+a2*b7+a3*b6\n",
+ "print \"\\n\\n%f\" %(b1/b2)\n",
+ "print \"\\n%f\" %(b2/b3)\n",
+ "print \"\\n%f\" %(b3/b4)\n",
+ "print \"\\n%f\" %(b4/b5)\n",
+ "print \"\\n%f\" %(b5/b6)\n",
+ "print \"\\n%f\" %(b6/b7)\n",
+ "print \"\\n%f\" %(b7/b8)\n",
+ "print \"\\n%f\" %(b8/b9)\n",
+ "print \"\\n it appears as if the roots are converging at 2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "\n",
+ "0.923077\n",
+ "\n",
+ "1.356522\n",
+ "\n",
+ "1.595376\n",
+ "\n",
+ "1.738402\n",
+ "\n",
+ "1.828184\n",
+ "\n",
+ "1.886130\n",
+ "\n",
+ "1.924153\n",
+ "\n",
+ "1.949345\n",
+ "\n",
+ " it appears as if the roots are converging at 2\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.22:pg-46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#ramanujan's method\n",
+ "#example 2.22\n",
+ "#page 46\n",
+ "def f(x):\n",
+ " return x+x**2+(x**3)/2.0+(x**4)/6.0+(x**5)/24.0\n",
+ "a1=1.0\n",
+ "a2=1.0\n",
+ "a3=1.0/2.0\n",
+ "a4=1.0/6.0\n",
+ "a5=1.0/24.0\n",
+ "b1=1\n",
+ "b2=a2\n",
+ "b3=a1*b2+a2*b1\n",
+ "b4=a1*b3+a2*b2+a3*b1\n",
+ "b5=a1*b4+a2*b3+a3*b2\n",
+ "b6=a1*b5+a2*b4+a3*b3\n",
+ "print \"\\n%f\" %(b1/b2)\n",
+ "print \"\\n%f\" %(b2/b3)\n",
+ "print \"\\n%f\" %(b3/b4)\n",
+ "print \"\\n%f\" %(b4/b5)\n",
+ "print \"\\n%f\" %(b5/b6)\n",
+ "print \"\\n it appears as if the roots are converging at around %f\" %(b5/b6)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "1.000000\n",
+ "\n",
+ "0.500000\n",
+ "\n",
+ "0.571429\n",
+ "\n",
+ "0.583333\n",
+ "\n",
+ "0.571429\n",
+ "\n",
+ " it appears as if the roots are converging at around 0.571429\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.23:pg-47"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#ramanujan's method\n",
+ "#example 2.23\n",
+ "#page 47\n",
+ "from __future__ import division\n",
+ "def f(x):\n",
+ " return 1-2*((3*x/2.0+(x**2)/4.0-(x**4)/48.0+(x**6)/1440.0)-(x**8)*2/80640.0)\n",
+ "a1=3/2\n",
+ "a2=1/4\n",
+ "a3=0\n",
+ "a4=1/48\n",
+ "a5=0\n",
+ "a6=1/1440\n",
+ "a7=0\n",
+ "a8=-1/80640\n",
+ "b1=1\n",
+ "b2=a1\n",
+ "b3=a1*b2+a2*b1\n",
+ "b4=a1*b3+a2*b2+a3*b1\n",
+ "b5=a1*b4+a2*b3+a3*b2\n",
+ "b6=a1*b5+a2*b4+a3*b3\n",
+ "b7=a1*b6+a2*b5+a3*b4\n",
+ "b8=a1*b7+a2*b6+a3*b5\n",
+ "b9=a1*b8+a2*b7+a3*b6\n",
+ "print \"\\n%f\" %(b1/b2)\n",
+ "print \"\\n%f\" %(b2/b3)\n",
+ "print \"\\n%f\" %(b3/b4)\n",
+ "print \"\\n%f\" %(b4/b5)\n",
+ "print \"\\n%f\" %(b5/b6)\n",
+ "print \"\\n%f\" %(b6/b7)\n",
+ "print \"\\n%f\" %(b7/b8)\n",
+ "print \"\\n it appears as if the roots are converging at around %f\" %(b7/b8)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "0.666667\n",
+ "\n",
+ "0.600000\n",
+ "\n",
+ "0.606061\n",
+ "\n",
+ "0.605505\n",
+ "\n",
+ "0.605556\n",
+ "\n",
+ "0.605551\n",
+ "\n",
+ "0.605551\n",
+ "\n",
+ " it appears as if the roots are converging at around 0.605551\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.24:pg-47"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#ramanujan's method\n",
+ "#example 2.24\n",
+ "#page 47\n",
+ "import math\n",
+ "def f(x):\n",
+ " return 1-(x-x**2.0/math.factorial(2.0)**2.0+x**3.0/math.factorial(3.0)**2.0-x**4.0/math.factorial(4.0)**2.0)\n",
+ "a1=1\n",
+ "a2=-1/math.factorial(2.0)**2.0\n",
+ "a3=1/math.factorial(3.0)**2.0\n",
+ "a4=-1/math.factorial(4.0)**2.0\n",
+ "a5=-1/math.factorial(5.0)**2.0\n",
+ "a6=1/math.factorial(6.0)**2.0\n",
+ "b1=1\n",
+ "b2=a1\n",
+ "b3=a1*b2+a2*b1\n",
+ "b4=a1*b3+a2*b2+a3*b1\n",
+ "b5=a1*b4+a2*b3+a3*b2\n",
+ "print \"\\n\\n%f\" %(b1/b2)\n",
+ "print \"\\n\\n%f\" %(b2/b3)\n",
+ "print \"\\n%f\" %(b3/b4)\n",
+ "print \"\\n%f\" %(b4/b5)\n",
+ "print \"\\n it appears as if the roots are converging at around %f\" %(b4/b5)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "\n",
+ "1.000000\n",
+ "\n",
+ "\n",
+ "1.333333\n",
+ "\n",
+ "1.421053\n",
+ "\n",
+ "1.433962\n",
+ "\n",
+ " it appears as if the roots are converging at around 1.433962\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex2.25:pg-49"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 2.25\n",
+ "#secant method\n",
+ "#page 49\n",
+ "import math\n",
+ "from __future__ import division\n",
+ "def f(x):\n",
+ " return x**3-2*x-5\n",
+ "x1=2\n",
+ "x2=3 # 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.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_err<err:\n",
+ " print \"\\n\\n the error agrees with the actual error\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the calculated value is 0.994116:\n",
+ "\n",
+ "\n",
+ " the error agrees with the actual error\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.19:pg-107"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#error in lagrenge's interpolation\n",
+ "#example 3.19\n",
+ "#page 107\n",
+ "import math\n",
+ "x=[0, math.pi/4 ,math.pi/2]\n",
+ "y=[0, 0.70711, 1.0]\n",
+ "def l0(x):\n",
+ " return ((x-0)*(x-math.pi/2))/((math.pi/4)*(-1*math.pi/4))\n",
+ "def l1(x):\n",
+ " return ((x-0)*(x-math.pi/4))/((math.pi/2)*(math.pi/4))\n",
+ "f_x=l0(math.pi/6)*y[1]+l1(math.pi/6)*y[2]\n",
+ "err=abs(f_x-math.sin(math.pi/6))\n",
+ "def f(x):\n",
+ " return ((x-0)*(x-math.pi/4)*(x-math.pi/2))/6\n",
+ "if abs(f(math.pi/6))>err:\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<e[4]:\n",
+ " print \"VERIFIED\"\n",
+ "\n",
+ "\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",
+ "L(0) =0.000050\n",
+ "\n",
+ "\n",
+ "L(1) =0.000049\n",
+ "\n",
+ "\n",
+ "L(2) =0.000049\n",
+ "\n",
+ "\n",
+ "L(3) =0.000048\n",
+ "\n",
+ "\n",
+ "e(0)=0.000000\n",
+ "\n",
+ "\n",
+ "e(1)=0.000050\n",
+ "\n",
+ "\n",
+ "e(2)=0.000099\n",
+ "\n",
+ "\n",
+ "e(3)=0.000147\n",
+ "\n",
+ "\n",
+ "VERIFIED\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.7:pg-310"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.7\n",
+ "#modified euler's method\n",
+ "#page 310\n",
+ "h=0.05\n",
+ "f=1\n",
+ "def f1(x,y):\n",
+ " return x**2+y\n",
+ "x=[0,0.05,0.1]\n",
+ "y1=[0,0,0,0]\n",
+ "y2=[0,0,0,0]\n",
+ "y1[0]=f+h*f1(x[0],f);\n",
+ "y1[1]=f+h*(f1(x[0],f)+f1(x[1],y1[0]))/2\n",
+ "y1[2]=f+h*(f1(x[0],f)+f1(x[2],y1[1]))/2\n",
+ "y2[0]=y1[1]+h*f1(x[1],y1[1])\n",
+ "y2[1]=y1[1]+h*(f1(x[1],y1[1])+f1(x[2],y2[0]))/2\n",
+ "y2[2]=y1[1]+h*(f1(x[1],y1[1])+f1(x[2],y2[1]))/2\n",
+ "print \"y1(0)\\t y1(1)\\t y1(2)\\t y2(0)\\t y2(1)\\t y3(2)\\n\\n\"\n",
+ "print \" %f\\t %f\\t %f\\t %f\\t %f\\t %f\\n\" %(y1[0],y1[1],y1[2],y2[0],y2[1],y2[2])\n",
+ "print \"\\n\\n the value of y at %0.2f is : %0.4f\" %(x[2],y2[2])\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "y1(0)\t y1(1)\t y1(2)\t y2(0)\t y2(1)\t y3(2)\n",
+ "\n",
+ "\n",
+ " 1.050000\t 1.051313\t 1.051533\t 1.104003\t 1.105508\t 1.105546\n",
+ "\n",
+ "\n",
+ "\n",
+ " the value of y at 0.10 is : 1.1055\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.8:pg-313"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.8\n",
+ "#runge-kutta formula\n",
+ "#page 313\n",
+ "from __future__ import division\n",
+ "def f(x,y):\n",
+ " return y-x\n",
+ "y=2\n",
+ "x=0\n",
+ "h=0.1\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h,y+K1)\n",
+ "y1=y+( K1+K2)/2\n",
+ "print \"\\n y(0.1) by second order runge kutta method:%0.4f\" %(y1)\n",
+ "y=y1\n",
+ "x=0.1\n",
+ "h=0.1\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h,y+K1)\n",
+ "y1=y+( K1+K2)/2\n",
+ "print \"\\n y(0.2) by second order runge kutta method:%0.4f\" %(y1)\n",
+ "y=2\n",
+ "x=0\n",
+ "h=0.1\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "print \"\\n y(0.1) by fourth order runge kutta method:%0.4f\" %(y1)\n",
+ "y=y1\n",
+ "x=0.1\n",
+ "h=0.1\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "print \"\\n y(0.1) by fourth order runge kutta method:%0.4f \" %(y1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ " y(0.1) by second order runge kutta method:2.2050\n",
+ "\n",
+ " y(0.2) by second order runge kutta method:2.4210\n",
+ "\n",
+ " y(0.1) by fourth order runge kutta method:2.2052\n",
+ "\n",
+ " y(0.1) by fourth order runge kutta method:2.4214 \n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.9:pg-315"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.9\n",
+ "#runge kutta method\n",
+ "#page 315\n",
+ "from __future__ import division\n",
+ "def f(x,y):\n",
+ " return 1+y**2\n",
+ "y=0\n",
+ "x=0\n",
+ "h=0.2\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "print \"\\n y(0.2) by fourth order runge kutta method:%0.4f\" %(y1)\n",
+ "y=y1\n",
+ "x=0.2\n",
+ "h=0.2\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "print \"\\n y(0.4) by fourth order runge kutta method:%0.4f\" %(y1)\n",
+ "y=2\n",
+ "x=0\n",
+ "h=0.1\n",
+ "y=y1\n",
+ "x=0.4\n",
+ "h=0.2\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "print \"\\n y(0.6) by fourth order runge kutta method:%0.4f\" %(y1)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ " y(0.2) by fourth order runge kutta method:0.2027\n",
+ "\n",
+ " y(0.4) by fourth order runge kutta method:0.4228\n",
+ "\n",
+ " y(0.6) by fourth order runge kutta method:0.6841\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.10:pg-315"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.10\n",
+ "#initial value problems\n",
+ "#page 315\n",
+ "from __future__ import division\n",
+ "def f1(x,y):\n",
+ " return 3*x+y/2\n",
+ "y=[1,0,0]\n",
+ "h=0.1\n",
+ "c=0\n",
+ "for i in range(0,2):\n",
+ " y[i+1]=y[i]+h*f1(c,y[i])\n",
+ " print \"\\ny(%g)=%g\\n\" %(c,y[i])\n",
+ " c=c+0.1\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "y(0)=1\n",
+ "\n",
+ "\n",
+ "y(0.1)=1.05\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 35
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.11:pg-316"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.11\n",
+ "#adam's moulton method\n",
+ "#page 316\n",
+ "def f(x,y):\n",
+ " return 1+y**2\n",
+ "y=0\n",
+ "x=0\n",
+ "h=0.2\n",
+ "f1=[0,0,0]\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "f1[0]=y1\n",
+ "print \"\\n y(0.2) by fourth order runge kutta method:%0.4f\" %(y1)\n",
+ "y=y1\n",
+ "x=0.2\n",
+ "h=0.2\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "f1[1]=y1\n",
+ "print \"\\n y(0.4) by fourth order runge kutta method:%0.4f\" %(y1)\n",
+ "y=2\n",
+ "x=0\n",
+ "h=0.1\n",
+ "y=y1\n",
+ "x=0.4\n",
+ "h=0.2\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "f1[2]=y1\n",
+ "print \"\\n y(0.6) by fourth order runge kutta method:%0.4f\" %(y1)\n",
+ "y_p=y1+h*(55*(1+f1[2]**2)-59*(1+f1[1]**2)+37*(1+f1[0]**2)-9)/24\n",
+ "y_c=y1+h*(9*(1+(y_p-1)**2)+19*(1+f1[2]**2)-5*(1+f1[1]**2)+(1+f1[0]**2))/24\n",
+ "print \"\\nthe predicted value is:%0.4f:\\n\" %(y_p)\n",
+ "print \" the computed value is:%0.4f:\" %(y_c)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ " y(0.2) by fourth order runge kutta method:0.2027\n",
+ "\n",
+ " y(0.4) by fourth order runge kutta method:0.4228\n",
+ "\n",
+ " y(0.6) by fourth order runge kutta method:0.6841\n",
+ "\n",
+ "the predicted value is:1.0234:\n",
+ "\n",
+ " the computed value is:0.9512:\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.12:pg-320"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.12\n",
+ "#milne's method\n",
+ "#page 320\n",
+ "def f(x,y):\n",
+ " return 1+y**2\n",
+ "y=0\n",
+ "f1=[0,0,0]\n",
+ "Y1=[0,0,0,0]\n",
+ "x=0\n",
+ "h=0.2\n",
+ "f1[0]=0\n",
+ "print \"x y y1=1+y^2\\n\\n\"\n",
+ "Y1[0]=1+y**2\n",
+ "print \"%0.4f %0.4f %0.4f\\n\" %(x,y,(1+y**2))\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "f1[0]=y1\n",
+ "Y1[1]=1+y1**2\n",
+ "print \"%0.4f %0.4f %0.4f\\n\" %(x+h,y1,(1+y1**2))\n",
+ "y=y1\n",
+ "x=0.2\n",
+ "h=0.2\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "f1[1]=y1\n",
+ "Y1[2]=1+y1**2\n",
+ "print \"%0.4f %0.4f %0.4f\\n\" %(x+h,y1,(1+y1**2))\n",
+ "y=y1\n",
+ "x=0.4\n",
+ "h=0.2\n",
+ "K1=h*f(x,y)\n",
+ "K2=h*f(x+h/2,y+K1/2)\n",
+ "K3=h*f(x+h/2,y+K2/2)\n",
+ "K4=h*f(x+h,y+K3)\n",
+ "y1=y+(K1+2*K2+2*K3+K4)/6\n",
+ "f1[2]=y1\n",
+ "Y1[3]=1+y1**2;\n",
+ "print \"%0.4f %0.4f %0.4f\\n\" %(x+h,y1,(1+y1**2))\n",
+ "Y_4=4*h*(2*Y1[1]-Y1[2]+2*Y1[3])/3\n",
+ "print \"y(0.8)=%f\\n\" %(Y_4)\n",
+ "Y=1+Y_4**2\n",
+ "Y_4=f1[1]+h*(Y1[2]+4*Y1[3]+Y)/3 #more correct value\n",
+ "print \"y(0.8)=%f\\n\" %(Y_4)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "x y y1=1+y^2\n",
+ "\n",
+ "\n",
+ "0.0000 0.0000 1.0000\n",
+ "\n",
+ "0.2000 0.2027 1.0411\n",
+ "\n",
+ "0.4000 0.4228 1.1788\n",
+ "\n",
+ "0.6000 0.6841 1.4680\n",
+ "\n",
+ "y(0.8)=1.023869\n",
+ "\n",
+ "y(0.8)=1.029403\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.13:pg-320"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.13\n",
+ "#milne's method\n",
+ "#page 320\n",
+ "def f1(x,y):\n",
+ " return x**2+y**2-2\n",
+ "x=[-0.1, 0, 0.1, 0.2]\n",
+ "y=[1.0900, 1.0, 0.8900, 0.7605]\n",
+ "Y1=[0,0,0,0]\n",
+ "h=0.1\n",
+ "for i in range(0,4):\n",
+ " Y1[i]=f1(x[i],y[i])\n",
+ "print \" x y y1=x^2+y^2-2 \\n\\n\"\n",
+ "for i in range(0,4):\n",
+ " print \" %0.2f %f %f \\n\" %(x[i],y[i],Y1[i])\n",
+ "Y_3=y[0]+(4*h/3)*(2*Y1[1]-Y1[2]+2*Y1[3])\n",
+ "print \"y(0.3)=%f\\n\" %(Y_3)\n",
+ "Y1_3=f1(0.3,Y_3)\n",
+ "Y_3=y[2]+h*(Y1[2]+4*Y1[3]+Y1_3)/3 #corrected value\n",
+ "print \"corrected y(0.3)=%f\" %(Y_3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " x y y1=x^2+y^2-2 \n",
+ "\n",
+ "\n",
+ " -0.10 1.090000 -0.801900 \n",
+ "\n",
+ " 0.00 1.000000 -1.000000 \n",
+ "\n",
+ " 0.10 0.890000 -1.197900 \n",
+ "\n",
+ " 0.20 0.760500 -1.381640 \n",
+ "\n",
+ "y(0.3)=0.614616\n",
+ "\n",
+ "corrected y(0.3)=0.614776\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.14:pg322"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#example 8.14\n",
+ "#initial-value problem\n",
+ "#page 322\n",
+ "from __future__ import division\n",
+ "import math\n",
+ "def f(x):\n",
+ " return 13*math.exp(x/2)-6*x-12\n",
+ "s1=1.691358\n",
+ "s3=3.430879\n",
+ "print \"the erorr in the computed values are %0.7g %0.7g\" %(abs(f(0.5)-s1),abs(f(1)-s3))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the erorr in the computed values are 0.0009724169 0.002497519\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.15:pg-328"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#boundary value problem using finite difference method\n",
+ "#example 8.15\n",
+ "#page 328\n",
+ "import math\n",
+ "from numpy import matrix\n",
+ "def f(x):\n",
+ " return math.cos(x)+((1-math.cos(1))/math.sin(1))*math.sin(x)-1\n",
+ "h1=1/2\n",
+ "Y=f(0.5)\n",
+ "y0=0\n",
+ "y2=0\n",
+ "y1=4*(1/4+y0+y2)/7\n",
+ "print \"computed value with h=%f of y(0.5) is %f\\n\" %(h1,y1)\n",
+ "print \"error in the result with actual value %f\\n\" %(abs(Y-y1))\n",
+ "h2=1/4\n",
+ "y0=0\n",
+ "y4=0\n",
+ "#solving the approximated diffrential equation\n",
+ "A=matrix([[-31/16, 1, 0],[1, -31/16, 1],[0, 1, -31/16]])\n",
+ "X=matrix([[-1/16],[-1/16],[-1/16]])\n",
+ "C=A.I*X\n",
+ "print \"computed value with h=%f of y(0.5) is %f\\n\" %(h2,C[1][0])\n",
+ "print \"error in the result with actual value %f\\n\" %(abs(Y-C[1][0]))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "computed value with h=0.500000 of y(0.5) is 0.142857\n",
+ "\n",
+ "error in the result with actual value 0.003363\n",
+ "\n",
+ "computed value with h=0.250000 of y(0.5) is 0.140312\n",
+ "\n",
+ "error in the result with actual value 0.000818\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.16:pg-329"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#boundary value problem using finite difference method\n",
+ "#example 8.16\n",
+ "#page 329\\\n",
+ "from numpy import matrix\n",
+ "import math\n",
+ "def f(x):\n",
+ " return math.sinh(x)\n",
+ "y0=0 #y(0)=0\n",
+ "y4=3.62686 #y(2)=3.62686\n",
+ "h1=0.5\n",
+ "Y=f(0.5)\n",
+ "#arranging and calculating the values\n",
+ "A=matrix([[-9, 4, 0],[4, -9, 4],[0, 4, -9]])\n",
+ "C=matrix([[0],[0],[-14.50744]])\n",
+ "X=A.I*C\n",
+ "print \"computed value with h=%f of y(0.5) is %f\\n\" %(h1,X[0][0])\n",
+ "print \"error in the result with actual value %f\\n\" %(abs(Y-X[0][0]))\n",
+ "h2=1.0\n",
+ "y0=0 #y(0)=0\n",
+ "y2=3.62686 #y(2)=3.62686\n",
+ "y1=(y0+y2)/3\n",
+ "Y=(4*X[1][0]-y1)/3\n",
+ "print \"with better approximation error is reduced to %f\" %(abs(Y-f(1.0)))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "computed value with h=0.500000 of y(0.5) is 0.526347\n",
+ "\n",
+ "error in the result with actual value 0.005252\n",
+ "\n",
+ "with better approximation error is reduced to 0.000855\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.17:pg-330"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#cubic spline method\n",
+ "#example 8.17\n",
+ "#page 330\n",
+ "import math\n",
+ "def f(x):\n",
+ " return math.cos(x)+((1-math.cos(1))/math.sin(1))*math.sin(x)-1\n",
+ "y=[f(0), f(0.5), f(1)]\n",
+ "h=1/2\n",
+ "Y=f(0.5)\n",
+ "y0=0\n",
+ "y2=0\n",
+ "M0=-1\n",
+ "M1=-22/25\n",
+ "M2=-1\n",
+ "s1_0=47/88\n",
+ "s1_1=-47/88\n",
+ "s1_05=0\n",
+ "print \"the cubic spline value is %f\" %(Y)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the cubic spline value is 0.139494\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.18:pg-331"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#cubic spline method\n",
+ "#example 8.18\n",
+ "#page 331\n",
+ "from numpy import matrix\n",
+ "from __future__ import division\n",
+ "import math\n",
+ "#after arranging and forming equation \n",
+ "A=matrix([[10, -1, 0, 24],[0, 16, -1, -32],[1, 20, 0, 16],[0, 1, 26, -24]])\n",
+ "C=matrix([[36],[-12],[24],[-9]])\n",
+ "X=A.I*C;\n",
+ "print \" Y1=%f\\n\\n\" %(X[3][0])\n",
+ "print \" the error in the solution is :%f\" %(abs((2/3)-X[3][0]))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Y1=0.653890\n",
+ "\n",
+ "\n",
+ " the error in the solution is :0.012777\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex8.19:pg-331"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#boundary value problem by cubisc spline nethod\n",
+ "#example 8.18\n",
+ "#page 331\n",
+ "from numpy import matrix\n",
+ "h=1/2\n",
+ "#arranging in two subintervals we get\n",
+ "A=matrix([[10, -1, 0,24],[0, 16, -1, -32],[1, 20, 0, 16],[0, 1, 26, -24]])\n",
+ "C=matrix([[36],[-12],[24],[-9]])\n",
+ "X=A.I*C\n",
+ "print \"the computed value of y(1.5) is %f \"%(X[3][0])\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the computed value of y(1.5) is 0.653890 \n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter_5_11.ipynb b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter_5_11.ipynb
new file mode 100644
index 00000000..697b9cb3
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/chapter_5_11.ipynb
@@ -0,0 +1,359 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:f2fd61e2bc794cbd536a64a99cc1e32ed50fce093e2901b8c1e8c55a86c80516"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter05:Spline Functions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex5.1:pg-182"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#linear splines\n",
+ "#example 5.1\n",
+ "#page 182\n",
+ "from numpy import matrix\n",
+ "X=matrix([[1],[2], [3]])\n",
+ "y=matrix([[-8],[-1],[18]])\n",
+ "m1=(y[1][0]-y[0][0])/(X[1][0]-X[0][0])\n",
+ "m2=(y[2][0]-y[1][0])/(X[2][0]-X[1][0])\n",
+ "def s1(x):\n",
+ " return y[0][0]+(x-X[0][0])*m1\n",
+ "def s2(x):\n",
+ " return y[1][0]+(x-X[1][0])*m2\n",
+ "print \"the value of function at 2.5 is %0.2f: \" %(s2(2.5))\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the value of function at 2.5 is 8.50: \n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex5.3:pg-188"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#cubic splines\n",
+ "#example 5.3\n",
+ "#page 188\n",
+ "from numpy import matrix\n",
+ "import math\n",
+ "X=matrix([[1],[2],[3]])\n",
+ "y=matrix([[-8],[-1],[18]])\n",
+ "M1=0\n",
+ "M2=8\n",
+ "M3=0\n",
+ "h=1\n",
+ "#deff('y=s1(x)','y=3*(x-1)^3-8*(2-x)-4*(x-1)')\n",
+ "def s1(x):\n",
+ " return 3*math.pow(x-1,3)-8*(2-x)-4*(x-1)\n",
+ "#deff('y=s2(x)','y=3*(3-x)^3+22*x-48');\n",
+ "def s2(x):\n",
+ " return 3*math.pow(3-x,3)+22*x-48\n",
+ "h=0.0001\n",
+ "n=2.0\n",
+ "D=(s2(n+h)-s2(n))/h;\n",
+ "print \" y(2.5)=%f\" %(s2(2.5))\n",
+ "print \"y1(2.0)=%f\" %(D)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " y(2.5)=7.375000\n",
+ "y1(2.0)=13.000900\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex5.4:pg-189"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#cubic spline\n",
+ "#example 5.4\n",
+ "#page 189\n",
+ "from numpy import matrix\n",
+ "import math\n",
+ "x=matrix([[0],[math.pi/2],[math.pi]])\n",
+ "y=matrix([[0],[1],[0]])\n",
+ "h=x[1][0]-x[0][0]\n",
+ "M0=0\n",
+ "M2=0\n",
+ "M1=((6*(y[0][0]-2*y[1][0]+y[2][0])/math.pow(h,2))-M0-M2)/4\n",
+ "X=math.pi/6.0\n",
+ "s1=(math.pow(x[1][0]-X,3)*(M0/6)+math.pow(X-x[0][0],3)*M1/6+(y[0][0]-math.pow(h,2)*M0/6)*(x[1][0]-X)+(y[1][0]-math.pow(h,2)*M1/6)*(X-x[0][0]))/h;\n",
+ "x=matrix([[0],[math.pi/4], [math.pi/2], [3*math.pi/4], [math.pi]])\n",
+ "y=matrix([[0], [1.414], [1] ,[1.414]])\n",
+ "M0=0\n",
+ "M4=0\n",
+ "A=matrix([[4, 1, 0],[1, 4, 1],[0 ,1 ,4]]) #calculating value of M1 M2 M3 by matrix method\n",
+ "C=matrix([[-4.029],[-5.699],[-4.029]])\n",
+ "B=A.I*C\n",
+ "print \"M0=%f\\t M1=%f\\t M2=%f\\t M3=%f\\t M4=%f\\t\\n\\n\" %(M0,B[0][0],B[1][0],B[2][0],M4)\n",
+ "h=math.pi/4;\n",
+ "X=math.pi/6;\n",
+ "s1=(-0.12408*math.pow(X,3)+0.7836*X)/h;\n",
+ "print \"the value of sin(pi/6) is:%f\" %(s1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "M0=0.000000\t M1=-0.744071\t M2=-1.052714\t M3=-0.744071\t M4=0.000000\t\n",
+ "\n",
+ "\n",
+ "the value of sin(pi/6) is:0.499722\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex5.5:pg-191"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#cubic spline\n",
+ "#example 5.5\n",
+ "#page 191\n",
+ "import math\n",
+ "from numpy import matrix\n",
+ "x=[1,2,3]\n",
+ "y=[6,18,42]\n",
+ "m0=40\n",
+ "s1=0\n",
+ "m1=(3*(y[2]-y[0])-m0)/4\n",
+ "X=0\n",
+ "s1=m0*((x[1]-X)**2)*(X-x[0])-m1*((X-x[0])**2)*(x[1]-X)+y[0]*((x[1]-X)**2)*(2*(X-x[0])+1)+y[1]*((X-x[0])**2)*(2*(x[1]-X)+1)\n",
+ "print \"s1= %f+261*x-160X^2+33X^3\" %(s1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "s1= -128.000000+261*x-160X^2+33X^3\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex5.7:pg-195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#surface fitting by cubic spline\n",
+ "#example 5.7\n",
+ "#page 195\n",
+ "import math\n",
+ "from numpy import matrix\n",
+ "def L0(y):\n",
+ " return math.pow(y,3)/4-5*y/4+1\n",
+ "def L1(y):\n",
+ " return (math.pow(y,3)/2)*-1+3*y/2\n",
+ "def L2(y):\n",
+ " return math.pow(y,3)/4-y/4\n",
+ "A=[ [1,2,9], [2,3,10], [9,10,17] ]\n",
+ "x=0.5\n",
+ "y=0.5\n",
+ "S=0.0\n",
+ "S=S+L0(x)*(L0(x)*A[0][0]+L1(x)*A[0][1]+L2(x)*A[0][2])\n",
+ "S=S+L1(x)*(L0(x)*A[1][0]+L1(x)*A[1][1]+L2(x)*A[1][2])\n",
+ "S=S+L2(x)*(L0(x)*A[2][0]+L1(x)*A[2][1]+L2(x)*A[2][2])\n",
+ "print \"approximated value of z(0.5 0.5)=%f\\n\\n\" %(S)\n",
+ "print \" error in the approximated value : %f\" %((abs(1.25-S)/1.25)*100)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "approximated value of z(0.5 0.5)=0.875000\n",
+ "\n",
+ "\n",
+ " error in the approximated value : 30.000000\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex5.8:pg-200"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#cubic B-splines\n",
+ "#example 5.8\n",
+ "#page 200\n",
+ "import math\n",
+ "k=[0.0, 1, 2, 3, 4]\n",
+ "pi=[0.0, 0, 4, -6, 24]\n",
+ "x=1\n",
+ "S=0\n",
+ "for i in range(2,5):\n",
+ " S=S+math.pow(k[i]-x,3)/(pi[i])\n",
+ "print \"the cubic splines for x=1 is %f\\n\\n\" %(S)\n",
+ "S=0\n",
+ "x=2\n",
+ "for i in range(2,5):\n",
+ " S=S+math.pow(k[i]-x,3)/(pi[i])\n",
+ "print \"the cubic splines for x=2 is %f\\n\\n\" %(S)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the cubic splines for x=1 is 0.041667\n",
+ "\n",
+ "\n",
+ "the cubic splines for x=2 is 0.166667\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 39
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex5.9:pg-201"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#cubic B-spline\n",
+ "#example 5.9\n",
+ "#page 201\n",
+ "k=[0, 1, 2, 3, 4];\n",
+ "x=1 #for x=1\n",
+ "s11=0\n",
+ "s13=0\n",
+ "s14=0\n",
+ "s24=0 \n",
+ "s12=1/(k[2]-k[1])\n",
+ "s22=((x-k[0])*s11+(k[2]-x)*s12)/2.0 #k[2]-k[0]=2\n",
+ "s23=((x-k[1])*s11+(k[3]-x)*s13)/(k[3]-k[1])\n",
+ "s33=((x-k[0])*s22+(k[3]-x)*s23)/(k[3]-k[0])\n",
+ "s34=((x-k[1])*s23+(k[4]-x)*s24)/(k[4]-k[1])\n",
+ "s44=((x-k[0])*s33+(k[4]-x)*s34)/(k[4]-k[0])\n",
+ "print \"s11=%f\\t s22=%f\\t s23=%f\\t s33=%f\\t s34=%f\\t s44=%f\\n\\n\" %(s11,s22,s23,s33,s34,s44)\n",
+ "x=2 #for x=2\n",
+ "s11=0\n",
+ "s12=0\n",
+ "s14=0\n",
+ "s22=0\n",
+ "s13=1/(k[3]-k[2])\n",
+ "s23=((x-k[1])*s12+(k[3]-x)*s13)/2.0 # k[3]-k[1]=2\n",
+ "s24=((x-k[2])*s13+(k[4]-x)*s14)/(k[2]-k[0])\n",
+ "s33=((x-k[0])*s22+(k[3]-x)*s23)/(k[3]-k[0])\n",
+ "s34=((x-k[1])*s23+(k[4]-x)*s24)/(k[4]-k[1])\n",
+ "s44=((x-k[0])*s33+(k[4]-x)*s34)/(k[4]-k[0])\n",
+ "print \"s13=%f\\t s23=%f\\t s24=%f\\t s33=%f\\t s34=%f\\t s44=%f\\n\\n\" %(s13,s23,s24,s33,s34,s44)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "s11=0.000000\t s22=0.500000\t s23=0.000000\t s33=0.166667\t s34=0.000000\t s44=0.041667\n",
+ "\n",
+ "\n",
+ "s13=1.000000\t s23=0.500000\t s24=0.000000\t s33=0.166667\t s34=0.166667\t s44=0.166667\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 51
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex1.2_6.png b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex1.2_6.png
new file mode 100644
index 00000000..9dd9ad02
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex1.2_6.png
Binary files differ
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex3.7_3.png b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex3.7_3.png
new file mode 100644
index 00000000..81986fc3
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex3.7_3.png
Binary files differ
diff --git a/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex6.5_3.png b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex6.5_3.png
new file mode 100644
index 00000000..1628bc09
--- /dev/null
+++ b/Introductory_Methods_Of_Numerical_Analysis__by_S._S._Sastry/screenshots/ex6.5_3.png
Binary files differ
diff --git a/Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_4.ipynb
new file mode 100644
index 00000000..2ea27f9a
--- /dev/null
+++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_4.ipynb
@@ -0,0 +1,227 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 10 ACTIVE MICROWAVE CIRCUITS"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example:10.1 page.no:554"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the equivalent noise temperature in kelwin = 170.074792027\n",
+ "the total noise power out of the amplifier in dBm will be = -60.6767683732\n"
+ ]
+ }
+ ],
+ "source": [
+ "# program to determine the equivalent noise temperature of the amplifier .\n",
+ "from math import log10\n",
+ "\n",
+ "T1=290;P1=-62;G=100;B=10**9;k=1.38*10**-23;\n",
+ "T2 =77; P2 = -64.7; Ts =450;\n",
+ "Y=P1-P2; # Yfactor in db.\n",
+ "Y=10**0.27;\n",
+ "Te=(T1-Y*T2)/(Y-1);\n",
+ "Po=G*k*B*(Ts+Te);\n",
+ "Po=10*log10(Po/0.001); #/ converting in to dBm.\n",
+ "print \"the equivalent noise temperature in kelwin = \",Te\n",
+ "print \"the total noise power out of the amplifier in dBm will be = \",Po"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example:10.2 page.no:557"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "the dynamic range in dB = 67.467\n"
+ ]
+ }
+ ],
+ "source": [
+ "# program to find the dynamic range of the amplifier .\n",
+ "from math import log10\n",
+ "\n",
+ "G=20;F=3.5; # in db.\n",
+ "k=1.38*10**-23;To=290;B=2*10**9;\n",
+ "# output noise power => 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": [
+ "<matplotlib.figure.Figure at 0x10b2c4d10>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0x107827250>"
+ ]
+ },
+ "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\nWkfLU0iI1CqYE53qKUoVxbmX5zLP7Dxcen1pbAnXLl3kXIwm3r4V008sCX57zZuLeU4TkZFkiTKh\n/HrNL7Sda5tkiVBvbznVP2yY7qemn71/Rps5NjqVo42KkgOCkZGfFahKpSImg34hOmQoTIKRx0fy\nl1O/pFlODAOcBnCA0wC9yDIqCSMpolarOe3sXJr+YsdRiy6laz999vfh/7b9T6+nwMnUmZ0+fpQi\nOiYmkq10+HAyKPrM4RGPI6y6umqaV37XXl+jyRSTNMkgydW3VscmN1SpyIUL5VCboohJzM1Ne1mv\nXonfYdVeV9ZaV4sNNzbk0/fxt45nz8okren2Y05dx/pL4vz2Yk5aJ2WqXLOGbNJE2l17fY2ll5Vm\nl91d6BP8eVfh6Sknx/9Ig/m+wooKsSanyEjy/n1y40byl1/I3r3JZs3k/qys5D1UlM9mRUAK/hSs\n+IyYBH79tZwGX7xYdnZBOp5LDYkIYZ7ZeWJTh6QVfZmZYjAqCSMpolKJU7bl8CO0mWOjlxV0UkRE\nRbDV1lbsu7+v3vNKaWt2Cg+X6l+ZMomTePv2xG2iVFFaFZFPCm9v8vBhcs6CEGIS2KN3eOzEVKSI\nTPB2dpLuu2hRqcLWti05aJCYataulbocMf6D/237H3c82JGon5s3pfKboohZRts0GJP2bqPySx5O\ncFqm8f1Sq6VyXVLpHOztRdmQjKcknj+X+9JEaKjUQbge5y39FPmJY0+Ope1cW15+dZmvXon/YU7q\nktqSlNoQXVf+xqpjf2GtWjLhOzhIkMC0aaIsjh+XdNt+frKLiItKJQuIlWcO0nRKFm7fLunUBw2S\nzylbNvFP9e4tSi8l39362+vZZnub1N9QHPRpZorBqCSMpMhvv5H168vk6ernypJLSvLHoz+mutxm\nSgSHB7PO+joccniIXlNgaGN2mjRJTDU5c5JLlyYvb/al2ex3oF/K/UaRly5JEZi2bWUCtbKSFXPf\nviQmKWw34B779hWfQIsWUvSmZk2ZdGrUkH9r1yYbNiQbNybr1pXJ0syMLF9BxcwTc3Lucr/46TDi\ncPo0Wbiw7Iq6dk0+xcXyG8uZf35+Tln5gCVLJh3xtGSJjFcT1arFmezj/Pb27JHU3JqYPVv8K5o4\n/vg488yyoX39E5w/P+mxJ4WXl0zYbdrIZ1ul4wUW/KMGz59nkr6VlJh9aTYtZ1kmej48XPwya9eS\n3btLTYcaNUQB3b+fePdVbU01HvU4mrpBJECfZqYYjErCSLLs2ycr27ihru9D3/OrLV+x2eZm6eJo\nJiWHTY21NfjTsZ/0qiiSMju5uMgqNksWCQfVxvHrF+JHy1mWGt+DoCB57/r1E/t8xYpikvjlF3Lo\nUMmAmjevvGbyezbWGbyJo0eTv/8uZpQJE8gffxSb+6BBklG3Tx+ZdDp3loputWuTFhZkbgdXZhlT\nlJUqiVmsQgWRc/Nm4vvYvl3MPdmyaahFTXLR1UUsuqhorHlpxAgZq6aPICBAJkBNu5O2baVwD8l4\nSuL33+XeEhISQlpbk66umt9rHx+yUL1LzD45r9YTqkolO4J27UQp9+gh9//+PRkYFkjz6eZpMmv2\nP9ifRRYVSbFdeLgo6Z9+EkVdubIorOBgiRYruqioXnbN+jYzkVLFThsl8aWfuDaSTvj5AUOGADt2\nxD9kZZXNCoe/OYwq+aqgyuoquPQqFYUKUsDCzAInep3ApVeX8PPJn2MUfZopmackfqv/G747+B3U\nVAOQ1A8VK8qhNR8fOeFrosW33trcGu1KtcOfd/+Mfe72bWDAAKBAAcnfX7w4MGIEUKiQpDy4fl3y\nJ3XsCEybJm2zRuaD8/tzWLZM6igfPy51iyMjAVNTIEcOeVhaAmZmQHAw8Po18PgxEBoKZC3ijFwh\njrCxkVrMz54Bu3cDbdtKmpR58z7naOrRQz7Xbt0k3UXTpiIDADbe2Yj5V+fjXN9zKGYl+VXmzpX2\n69Ylvn8LC6B9e6lbnpCk8jd5eAClSyd+fudOoFYtza99+gS0aQP0aVQXp747gD4H+uDiy4tJfi4f\nPgDz50ttiF9/Bdq1k/dr+3a5fysrOcxZyKIQHvk9SlJOStz2vo3SeTQMOAFZssj7vGiRfDazZ0v+\nrEKFgL7LV6BL4cEwUdI2zQaGB2LAoQFY23YtcmXNlSZZMYRHhaPLni7aNU5Ji/wTHjDuJHSma1dy\nzJjk2xx2P0zbubacdmGaTtEi2uIf6k/H1Y563VHEmJ3G7VkVu3tITZ0FUpyrxRYV55+bolirlhym\nmzpVTA2NG8tKu3t3ybR5+DA5erScMcmbV3YDv/9O1lzQgcXmlePBg2KS+OEHWf1Wry6+iVy5xG5u\nZiYH9HLnFpt3kyYiu8yIkaw0dCY7dCArVZI2lSrJitXMTGRkzy47kRs34oz9mqzes2UjJ625wXzz\n8tHVL/FS3sVF2mnKALt/vzh5EzJ5cpwdQ5zfXpUq8cdAyi6lalXyqIYNglotacK7d/+8m4k57JnQ\n0RsSQs6YIWPt1Ut8Nsl9ZXr+1TNN/rVcM3Ol6aDmXfd3NJtkSetCfuzXj0maCrWh/8H+ejUzfYr8\nxNbbWrPTrk5Gc5MRzezeTZYqpV1N6tcfX7PBxgZstrkZvYO09IzqwIdPH1hjbQ0OPTJUb4pi7qrX\nRM7XLF3jlU4ps+MSFUVu3Khm1sF1We6bzdy4USZ9e3vx4ezYIRPV999LIZ4qVcTn4ewsZTLnzRMb\nea6my4nx2dmihZijli8XU9W1a9Luzh0xVxw6RP71F7lrlyi1xYvJBQvI0pPbsdHgv1i+vCiTypVl\n4m7QQJRUkSKf/SCWlhKCeu+e3INKRfbsK+c+Wn+XdJ2PGTPkuoRvf3Cw2PgTpphes0bum2SsklCr\nRVklfL+vXxfnvCYT3+zZokAS+lBmXZzFppuaUq1WMyKCXLlS7vHrr7UvQTrl/BT+duY37RonIFIV\nSUwGn/g/SdX1pIR8Dzo0iAEBolBz55YSqrrU/CbJdc7r6LDUQW9mptCIUH615St+vedrRkRFGJWE\nkcT4+pL58skEpy2RqkhOPDuRdvPsePLJSb2PKeBTAGuvq83+B/un2WE+ZIhE+3w9/A7t5tnxxQfd\nlnBqNXnwoEQi1a1Lzt5xkbkmFqGldRgHD/6cVqNGDdlZzJghq8QbN+RkdOnSEuEzaBC5dy9545EU\nrzl2KoTz5ontvFw5mdCzZhU7ds2asnNo0UIeTZqIczh/flIZWJ0W5a6ycmVZQY8aJb6MevVkF1Kn\njoTB5swpuxgzM5msu3Ujnz0jhx4ZykZ//EZTUxlzuIZSBpGR0t8aDQXTWrdOfDr60CF5nmSskvD0\nlB1UQvr21RytdORIgiipuONRRbLG2hocvWMlS5USpXjzZnKfWmLWOq/ldwe+0+2imLF5HElTVbrX\nH18z9+zcfBP4JvY5b2/xV+XJIwsFbfxil15eYt65eenmp0OMczIEhgWy6aam/Oavb2J/Z0YlYSQR\nXbvK4bHUcObZGdrPt+f40+P1Hv0UGBbI5pubs8PODvwUqWXeiziEh5O1apGmpjI5kxIWW2llJa0P\n8D15Imak8uXF8Tt1qvyoC437HyceXcyFC2UibNlS8ggFBsqq39FRVssTJshkFhUlq/mpU2VixoQs\nLNlhJ4cNEwVz546U7FSpZJXu6iqn3bdtE3mrVkn5zQ0byDzTCnDjvhc8eFCK3g8YIKtvc3NRFN98\nI7sACwuZ6HPnlkWAmRmZtfRZ5pyUn28D3tPNTRSTjY1m01JSZqdVq6SPuNy6JTsakrFK4uxZ2WHF\n5d076TPh6vnRIxnHlSuaP4eQELLPqEc0+cWaq3c91+qzS8hh98OpLnU7+PBgFlhQIFXXkhKFlNTh\nOVdX+Z42bixKPCleBryk3Tw7Hnt8LNXjiItPsA+rrq7KQYcGxTMdG5WEkXjoYmZKirdBb9liSwvW\n21CPrwI0LAPTQHhUOHvs7cH6G+rzwyft7UT+/jIxWljEP1imVqvZ70A/dt7VOdkIE5VKQj7z5CHn\nzxdbfP78shp3dSWnrrlHk7G2bNkukPfvy6T388/Svk0bsberVLKj+PVX2R0ULSoRL2fOkKWXlmbb\n7e3o5ib+ixEjZELNmVMeDg6S1K97d/K770QRDBhA9u2npjIxM6vVCmOBAnLgq1AhskMHcuJEMW/1\n7i2pVBwcZMVtayvhszlyB9FkZFFmLneYRYuKGSwkRKKjsmTRPEFrMjt5eoriiXvy+c0b6YdkrJJY\ntSqOCSqauXPFVxKX4GAZ64YNmj+LixclX9U335ATT8xik01NUmWGdPZyZqWVlXS+jiRLLinJzruS\niNdNATc/N1rPseb70KSzKUZFye4qqV1FcHgwK6+qzHmX56VqDAl5+v4pSywpwUnnJiV6L41Kwkgs\nISEy8V3Sw6FqlVrFmRdnMu/cvNx+f7tew1hVahV/OvYTK6yoEG+7nhQ+PmKPL1xY8/mAsMgw1l5X\nm1POT9F4/dOncj6hTh3xE/TqJZPshQvyd4UKYnZqsaoXx5+YzClTZNIcPFgOj6lU5LFjEhaaO7co\ngHv3ZKKNiJAVds1fJlEZb8ECBWQnN2uW+CHi5iRSq2Xl/eABeeKE+C227wpnpsmm3L+fPH9eFNad\nO2L+GTNGVqM5c4qCGT5cwmctLUUBWX61hOb9OtHcXMxaZmbiEwkPJ9u3lx3XuXPx34vISNkhJAyf\nrVYtftvQUJFJMlZJjBwpPobYz1FFFism72FcfvxR3uOEqNVyfb58n8NrI1WRLLu8LM8+0z5XTGSk\nnJs46ezGwvNL0t1dPuOPH5N3dMcQHhlOZbLCiy8vat1nXDrv6sxZF2dp1dbVVXaa7dvLrpSUhU3X\n3V3ZZ38fvfyubnvdpv18e668uVLj60YlYSSWWbOSPsyUWm543mDZ5WXZcWdHvda1VqvVnHVxFoss\nKh3ojOkAACAASURBVJKsPdbHR+zyJUtqtrXH4B3kzYILCnLfo33xnj96VMwe8+bJxGRvL5PYu3fi\nX7C1FQd1VBQ5bdkzKr/kYafePnzyRCaco0c/RxqtWyerZFLMVj//LOabatXIcZP9icmgu58HScki\ne/EiuWiRTJhlysika2n5ObKpQweyfZcQmkzMynbtxLRUvLhEK+XIIZPL4MGStXfxYlnF29rKeLp+\nrWbmEaVZqP4FWlvLxJs9u/RRoYK8b927y6nz06fjv1cnT8pKPzKONfGPP8jhIz/x2utrXH5jOb89\n8B3RqyUbbmhEAmy9rTULDx7CYes38N7be4xURfLYMTGLxZ3nLlyQ9zhhwr7QUIlyqlo1sY9i+Y3l\nGlf1796JMp0xQ3JNVa0q92lqKibBghWf0HR0UZYoIQuI7NnFRFeihDj9hwwh168n796Nv0tadXMV\nzaaZJf1lSobrnteZf37+2ISZ2hAeLtmFy5cXZTbtwjTWXFszVSbXhJx5doY2c2y49+HeJNsYlYQR\nknLAKLnDTGkhLDKMv57+NV12FRtub6DtXFteeZXYNuLvLzuIkiXjT2hJcevNLdrMseG9t/eoVosp\nxM6O/PtvOXVeuLBMYtevy0TdubNMps+eyUq9Vi2yx+YfOfTIUF65IhNNmTKiXNRqeRw7Jv4Ka2tZ\n6T+JExyTd04+Npr3Azt2FMVWrZpM8uvWye5A0y4oNDyMWaZmob+/mLiCguRe37+XcS9cKErGwUEm\nyO+/FxNUjW5nmGlYeTZtpqatrTjKzc1FwZiaijK6fVsm5kyZ4u8u1WpRUqtXy67uqMdRNljZhsqE\nbKy8qjK/P/g9V9xYweyVD/PAvTMkQCc3J1q3nc//bfiGpZaWYvbp2VlgeB+OX34t9vsQHCxK7uDB\n+Pfo6SnvRffumt+DwLBAWs2y4qsPnrx6Vcx55crJe9iwoTjyt20TX5Cn5+fvgsc7D5ZYUiK+rECJ\njjpzRiLHevaUQIMcOWQ1v24dWXVFTdZdXzflL1QC1Go1G25syDW3NHj/U7xWMgBY1DxAmxkF6BWY\n9jz9Ox/spM0cG557fi7ZdkYlYYSkmBn690/fPtJrV3HEQ3JK/Xnnz9jnwsNltVi4cPI7iIRsv7+d\nhRcWYde+vqxShXz4UCaH+vVFIaxeLTuLnTtl97BsmdiN586Vv595v6P573a0cbzI9es/T0hXroiM\nMmXEMR3j84l7Kjhzl37MNr4gN21K7MgNCxNn8KpVnx3T2bKRMIkiJim0sFTTykomekWRib5kSZlY\n580TU9Dt2zLxNWpEZu7ZmdWHrGC/fmICa9BA/DX58omCyJxZ/BLbtknRJFNTcSbHcOVaBC2+WsCi\nC4ux6uqqXOe8nvmLBvPhw89tChSIdnIDjIiQXUpYmLz24KkfszWdG3v9tvvbOGy4OpGZ6dEjkTNj\nRtKmoKdPycq/DWH2/01i+fKiJK5eTTk66KHvQ5ZeVjr5RtH4+5Nbt0qILSZkYcmvN3D79s/3ow2r\nb61mtTXVUh3Qcf/tfVpMs2bu8je4NQ11jlRqFSecmcBCCwtpVb/CqCSMxDoePT3Tv6/02lU89H3I\nEktKcNTxUYxURbJaNdlFJJejSBOBgWTBb39lnrG1eeNuEMuVk5QYwcESnli6NOnhIfbrNm0kNDVm\n93X8uCTka/HjfhZbVIIhESF8/FiUTMGC4oiNSRb36ZOYgEqU+Jym4dbLR1QmK3zx4QWjoiQ6Kq5C\nqFBB0nwsXSpKJzBQJsKEqUHUapm8HjwQhTR8uPhTsmcXxdGulyezTbbiqF8DaW8v99CypSiHUqXE\nJGVmJorB1FQisGJSgAQFkffe3mOVVVVoO/orDp1xPfYzHDpUTJYxlCkTXQgIoLu7+B9iWLVKVukx\nO5ES8yoz63et+eDl5y/hvXuitDZvTvw5qdXyfrduLbuyvmMfMO9se53SbJx/fp71NtTTuj0pi4hM\nUzJx5+5INm0q79X48SknTnzx4QWt51inugLjy4CXLLKoCLfe28qHD8V3mJoDoIFhgWy/oz3rbagX\nL7NuchiVhBEOGCD29YwkPXYV/qH+bLa5GQt8PYemmaPo4aHb9QEBMhl+31/Fzn/2Z5aBjTh/SQj9\n/MQB3Lq1tHn8WCbAIUPEVh0WJqekCxcmT50SWT32fsOGM0cwTx5xtsZUqpMDeBKB1LatTPZx9WT+\neYVYbkonFi4sPoXFi6WNJmUXY3O3mVyG3YY/4Lffys6hUyf5t18/MVdNnSq+kTdvRHH0W7qaBX/q\nRSsruYcFC0QBVaki91+woDi7s2UTU5OJiew0bW3VtKl0k9ZzrLn+9nq6uqppbf05AeCJE6KMYqhR\nI9opDdDJKX61urhnKyIjyVJlIth95WTazLHhprub+OCBKIhdGspJXL4su7KyZePvyqqsqqJTxbkd\nD3aw6+6uWrcnyVJLS7HZps9HzN3cRAnnzi0myYSHCkkxMzXf3Jwz/p6hU18xvAl8wxJLSnDBlQWx\nz3l4yOe0XocD40/fP2X5FeXZ/2B/hkdpv702Kon/OG5ushLTpbKXvoi7q1h/e71ekpytXhtJZAmi\n/c+tdTpgFBQkE9yQIeKotLWLYt15vdhoXQuWrfiJo0bJBH/qlJixVkYHgrx9K9d16vQ5m+jjx2St\nxu+Y+Vc7br/0OQLmwgWxlderl9jGf+mShHSaNVhKk0lZeONG/Pfi06fPTthOnUQhxdjcC05owqHz\nT3LdOjEP7dkj/65fL+awsWMlTbilpZhuCg8byP9NWcpNm2Tyz5dP5AwbJnIrVZK2+fKJsjA1JZEp\nnCV+7kfF6hnbfv35yxJ3gREWJrsNn+gFapMm0UoT4Lx54vCPea/jntJet076V6vJu953WWS+A3O0\n/Z3btsXfZT59+rmO+MaNiVN4Dzo0iEuuLdH6M19wZQF/OvaT1u1ffHhBZbLCe2/vJXrt5cvPyRwX\nL44/trSYmXyCfVhmWRmNCsbdXZz8mlLZJ+Tss7O0nWvLpdeX6rx7NyqJ/zgDB2ouJZmROHs5s9a6\nWqy5tiZvvbmVajl37siqd8IEydFvM8eGTm5OKV4XFiY7hf79xTxiZycRS688I5nzu64sNbktwyLD\nuWuXKIjz56PH7SwT1qRJn+3fhw6J0l2wgPzr4X6WWFKCvh9C+OOP8oPety/+zuHMGZmUS5aUa969\nUzHr1Kyx8e/PnskkbGMjymX0aJkU3N0/99l7X+/YHEQxTmsvL5lUnzwRM6K/v9znkydksVmO7Dnu\nChs1khXwsGHi4G7YUO69bVsx1ZUtK/eSPWck0b0D0b0dv+0fRkWRMyOkRBpZWX0Oz2zX7vPqv317\nuV8CHDGCsSm+9+37nO8pNFQUV8zpfn9/skg5HxacXpnjTo0jKfcZ4/uZOTPp+uFrbq1hn/19Yt+H\njx9FYb18Kbsof3/pL+b9H3l8pE65lzrt7MRCCwsl28bFRfw7derIAiwtZqZ3Ie9YYUUFTjw7Mdn+\nbGySDltXq9Vccm0JbefaprrMql6UBIAFAMql1M6QD6OSSExMqueUiqJkBCq1KjZS6YdDP9A/VLet\njUolE3jdOEEnV15dYaGFhTjy+Mgkt9dqtRxO69BBDroVKEBu2iSpScqWJadMjWD7He3pOLc9be3D\neDfaz3fsmEygMecF1GqZwOzt46czabH6G1p0G8FeveLv1gIDxURVoAB54EB8J2u33d2Ze3p+tm4t\nE+Po0bI7SUhM3YIuC+ay/JjhsQVvYnYBRYrIgT07O5nIzczI8pXDmGliNi5YGsKrV2UiGz9e3rum\nTWUir1VLookqVCCLFFXz/+xddVxUadu+hu4OAcUAu1DsWLFW11y7V3ftbkVdAxvs7naNtXXt7sRC\n1wCxQEBAOgZmzvX98TDMDCHo8u37+u5e/M6POec858yZM2fu+7mvu/Q79aGsV3PK9OQE1KGxoRkp\nKu3bizBbUoTCqiyLnj3FvSRE9zbVjPfnn9VKZsECce9JIdibNBHRSJFJkSy3qhx/Pb4oM3Ist8i7\nxEQRLjx2oT8tJ5dnuXLC8W5mJr6jwoXVDnlDQ6EYmzYlXac25OTNJxkcnHd+hFKppMFMA664nUeT\nEaoTL21sJZaa1ZRzLn85zRSZFMkqa6tw/Jnxec78T5wQ33HWTPhPyZ/Ybk87Vl1X9S/VmCooJdEf\nwHUAdwAMAmCZ1zH5XQA0B/AcQCCAiTns9wIQB+BBxvJrLuf56pv0v4rly0W0xn8TPiV/4tDjQ+mw\nwIHr763PNwXVv78QgllbR0YnR7PN7jastr5ajj+UZcuEMPz4UZTOmD9f8P+enuoqprv2ymn4UzvW\nX/sDk9OSeeSImL1dz6C/5XJBFVWrpu3837yZtC0cRbs52vkX588LAf7LL9rF7lQz5sJlQonpMo5c\ndSxb5nt8vKC6atUSCqFcOfL7ARdYfFYdXrumzsPICamp5PZz9+g8uwL79RM+CGNjYcnMmSOcyfXq\nCadoq1ZCmFbusZs6I8rS2CKJ+voickpHR1x/2bLivOfOiRh+SRL1lho3FtsHDcrogw2wfn0RYaVQ\niHv3+rX47Pb2zIyIGjVK1KVSRYTtPfmOson2HDnvQTZq6e1b4QMoV058hmrVyP6D5DTwMeb1O4mf\njWj78IE8clRJwxmW/L7dRzo7i8/aurUIFsj6XqQoxmc825jK/BRUysCYQ7NpNrIW23VI/+z3khXh\nCeGssLoCvc9655saWrBAfJ8q39WNdzdYdElRjjw5kqnpXxCClQMKlG4CUAbAfADvAOwC0DC/x+Zy\nPl0AQQCKAdAH8BBA2SxjvAAczce5/tKN+l9DXu0n/9N4EPaAdTbVYfX11Xkn5M5nx/r7C+GVGzcr\nSRKX3VpGez977n2i9oSePStmmMHBoqhe9+5CUHfpImbBkiQEoIMDefd+Grvu78rKixvT3jkxs5hc\nSgrZsqWYDasEenq6yC52dxchnHdDhbP35qvHmdZD1rLYgYFCQNerJ/IwWuxsQedFzpn7AwKEv8Ta\nWszcT51SK4TYlFiazjHN5LxTU0VOwIYNorSDj4+wFqZNIzvO3kLPuT146pQIs01NFbPwPn3ETLtX\nLxFN1LQpWbpqOPW8HVi83m2am4vwWj09IRHMzIQ14esr7lPp0iIvIzxcXKMkiTyQ+fNJAnR3FxTZ\n9euiARMprunnn8XrLVuo1QVv9Wpx3yf8to2V1lSiXCGnUin8Mm3bCqE+YoT4nJoKwWOtR57PCyly\nJDSpow8fhBO8Zk3hl5k7V+1bSUlPocEsg1wz8nPC4WeH6bLIha8+hrJ3b6GI81MKPCQuhKVXlKbP\nJZ8v8h1IkvjuOndRcv5VXzoscOCR50fyPjAPHH1+tOCURIZA/xHAEQD+ACYCOAZgb36Oz+WctQGc\n0lj3BuCdZYwXgGP5ONdfvmH/S/hcI/v/FiglJbc+2MpCCwux/9H+jEzKXkNZRTN9913e57sXeo9u\ny9w48NhAvgxOzvQvzJsnZqLJyUI41KghhH9QkDj3hYyKD5euKGjYpQ89ltVnXGocU1NFxE6XLuqM\n3NRUwcs3aaLd9nPmod+oN7Y4u/eLzGY9LF0qaKWlS9W0U3RSNHV9dDl4/UZ+952gE6ZNI9+/z/65\nnj8nC80qw7aD72ZaBxUriuqq48YJi2jWLOE7aTJ5OStOHEYvL+H4dnUl27UTfSwOHBBC381NhOW6\njm9Po9YT2by5cEhbW4tz6+gIqeDoqKadli0TNBQplOCrV4J6mjKFJEATE2EFTZyojgKythYWQXCw\n+PxPnojncdQoYSEEBgoF33x7SzadO00rXDi3mbnXVq98lejY+mArO/7eMefn5J6w8iwtxcSh9cY+\ntJxnmW8rIiAigPZ+9pn9zyVJ+JsKFRL0YG54E/OGJZaV+OoeFW+jImg2qBlLzqvLt7E5VGj8AgRF\nB7Hlby1ZakWpAqOblmTM+NcDqJFl34u8jv/MeTsC2KCx3hPAiixjGgCIBvAIwAkA5XI511+6af9r\n6Ngxgwr4BhCTEsPhJ4bT1teWsy/P1qrYOnp0zjRTbohLjWO3/d1oOqEsB868w2vXxI83JERQDS4u\nQujFxQlBpbpHb9+KcX8cV3LIH0NYaXUlNu38mh06qOmRlBShNDp21J7dnjsnaJX2q73ZYEuDzFh+\nTesha7ju+/ek89CfqDPZinv2KLXKQpBCKe3bJxzujo5k+dFj+YPvdN68mT1cNj1dOJifPydHbtnM\nn1Yv5vPngvL580/hpB87VijKIkWEQpm95S4NvV1ZsUoK69QREwonJzGDNzAQlhsghLuHh6COVK1M\n27Yld+9RcMrCIHYf80AoCad3lCSJZcsKS0nVH1upFMl9fn7i9aBBYjavUqSXL5NFK4RQf6oVT13+\nlOOkJiVF/VnqrG7OlaeP8+VL8T3mNgnqsLcDtzzY8tln5dMnctaCaGKaLptM3JCvopdRSVEssawE\ndzzakW3f/v1i0pG16RIpmle5LHL5bP/1z+Hws8N0WujEX3ZOpp1D+lf7GcMTwjns+DDa+Npw3tV5\n+W5fmpcglwGYBsA0l/1Web3BZ87dIR9KwhyAScbrHwC8zOVcnD59euZyMWvlsn8QQkPFLO5rG8D/\npxAYHciu+7vSaaETV91ZxZh4OfX1tYvG5QcbNkgs1mo37f0caN3Jm3v3pzI8XPyAVXkLbdqIfg+S\nJGatHh6C9yXF7LbRpKU0mFSI5wIFXyeXC9qpc2ftEiCHDgkFcfmy6IjXalcrDv5jMLdvz249iHML\nX4adHfnrjBTqzzTgrMuzMveHhopoNM3GRnI5efnNZVZZW4UKhaCmNm8Ws2B3d3X2tKEhqWsRTh3L\nDzQwENt1dYVibNFCzHb37BGzaIOOv7DSkLkcO1ZcZ/v24plxcBAzbJU1AQiFcfUq2W3QW3r5TKXr\njHrUn25Gm1mutJ5ciQSoO7EQreba0KBvUy64toglK0Xz8mWhhGvWFPds6FCRpxEfL+65KiLsyBGy\n+4HuXHJzCVNShJJZvVqUGPHwENaNq6ugvCwGtqZr08N0dxfXamUlQnEnTBBRV0FBZHJaCi3mWfBj\nokbj9lzQ8reWdPRzYteuorTJ9c+kYaQp0thwa0NOOJN70tGRI+K6HjxQb9v2cFu+I/GyIjo5mj0O\n9KD7cndeeXOFpLAcW7f+MpYgLjWOUy9MpY2vDTv4duC4SeMyZWVBKYkneZ3kaxYAtbLQTZNycl5n\nOeY1AJsctuf/jv2Pw8/v/78Ex/8n/D/48/sd39O09RSaOoZ9UX7Fu3dCAD9+TA4YE87CY9ux3Kpy\n9Op+h5MmiTFr14pZtVwufmhdugi+V/Wj275dZA/vv3+GDgscuPbuOv7yi/hhas74Dx4Us/x7GlG9\ncalxdJxZltZNV2uVsCCFNdOihRB8qiiq6RemU2+mHkM+RdDHRwjqwYPF9Wvi9dt0GjX2o7lFOo2M\nhPC3tRWzdB8fUZTP358cf2ghf94zmgEBgs/fsUNkPpcunaFEdEkDQyX1vvPj6CmRLFVKhHPWqSN4\ndVWkkJGR2prQt4ykSbkLtJxjQ8uuwzl71zl+1+wT9+wRFW0J8LvvyMUbPvC7/kfZZHUP6ky2ZOed\nfWldOFyUWp8lggViY4VCdXOjVkTYtovXaPlrSVpaKVm5slBkq1cLhaEZEtt0e1OeCjyVuR4RIfw/\ns2YJC8fFhSzsdZLFZ9XNsyPh5deXKZsh44mXwoF04ID47GPG5FxKf+jxoWzxW4s82/ju2yfO8ypY\nwXGnx9FtmdtXhcgefnaYzoucOerkKK2CgXK5oBtzylTPitT0VC6+sZgOCxz406GfsrWEJVlgdNO2\nrDRTQSwA9AC8ynBcG+TiuHYEIMt4XQPAm1zOlfcd+4egXr2c+wl/S4iIIGX6qSwx5id6rPXgycCT\n+XL0tWolBMbVq4I+iYyUOGztbup6O3DcKW++eJVKOzt1xM327eIHpxJEd+4IyyAgQKy/jHpJx5ll\naNNrCD/FqjXE2bNinL+/+r0lSQhsV49A2vsW0qq8efy4GO/jw2zUkotfCRqNqsQfftD2Sagc640b\nCwGvU+IC3bus5cmT2VuEqrDy9ir22jOYT5+Ka7t3T3zWd++ERfP2LdnSeycNy5+kjo6IYOrWTdBM\n3boJJeXsLGboOnoKoo4fMbIooZ/IHbuTWLiwcGBbW4ue3s2bkwTYtauwFBYtEnTc/BUfWXrYeJrN\ncOSYzXvoUlhiaKhwZqusB7lcWEr165NOzhIdZ1TivrsXP/v91t9cn5ff5B6NIUlk4zVdWXXwMlpZ\niclSTn6CdGU6reZb8YedP2htj4xkplWhSRHOvjyb5VaVY2xKDinXOWDWghiaD27OBpsbaZVUyQ9y\nsh6y4s4d8Xzn5rtRKBXc+mAriy4pyta7WvNx+OOcB7LglMQLAEoAwQACMpbHeR2XnyWDQnqR4fOY\nlLFtIICBGa+HAniSoUBuAKiVy3k+c9v/Ofj4UTgsc0tI+lbw/fdiVitJEg/8eYClV5Sm11Yv3nyf\ne8/VixeFBZCcLAT/vn1C2Tg4kKeuhbPdnnY0HV+OA+YIIRMaKgS3SogkJYkZ7n6NqspnzpAOrrFs\ntLElvbZ6MTIpkrduqSkmTcydK/wcYWEiesthgQOPPj/K3bvVVJcm0tKE0rAuEUzZDB0uubE0c9/j\nxyI6zcRECOwpU8gzjx+wyOIiWpm9ISGCZpkwQdAuJp4HadCnJcuUESGTVaqI86jyCBo1Isv82oVD\n1m3j778LC0JHR1BMpUuL0FtnZ9KpSDJ1e7Uk+jQgrIIJiM8wZIiIaHJxEQK+Xj2SAEePFsfu3y8U\nyMWL4jybT9+m7ogy7Lx5JPv2U7JGDSGIT5wQ/pFGjcQxaWnk+DPjtai3nFB0SVG+iMq9yXVYQhit\n5lsxJiWG4eEi9LdIETF50Axf7rqvK03nmFKennMs7fr14vofPSIXXl/IkstL5rsy64uoFyy9ojTL\njB7O9h3T8k0LSZLEPQF76LzImSNPjsyz3HiXLiIgIes5jjw/wvKryrPuprr56olRUEqiWE5LXsf9\nncu/SkJg61YRzfItIzpaUB2a1lC6Mp0b/Tey8OLCbLajGS+9vqRlWUiS4L5/+01YB3XqiG1Dh4ru\ncCS5caNEt9b7WGRxEfY40INN2n3g1Knq9xg5UlAzKkRECDrp0iUxM5t4diKLLi5Ox4qPs5W7Xr1a\nKChVAhop6leZz7SnTY1T2eijkBBR2E9lPUy9MDWTdpo+XfDwFhYiWU3TB1J7Y20e/PMwT5xQ5zq0\nbSsijY4fJ+8FvmWhhYVytLrCw8U9tZnhzkZdntLGRvhZdu8WFoGOjlCuljZyGvzSjAbdulHXIC3T\nNwEIZVSnjvDpzJ8vKCoCnD9fKLRffxXO6SZNhPPa3Z1ctSmGthNqs3D/4Xz7VuLPP4s8jPNZEoT3\nPtnLH/f8mOtzEZUURYt5Fp+lH2dfns3+R/trbZPLReSXvb34fVwKFjTT8ZfHcz0PKbo4mjVaSWff\n4vnuwHgq8FRmDlBKingmlyzJ+7inH5+y0bZGrLSmEq+9zV9XsMBAQTlGRYnnc9/TffRc58kKqyvw\n2Itj+Q6xLRAlQbUgdgDgqlrye9zfsfyrJAQ6dBAx6d8y+vYVP+ickJqeyg3+G+i+3J21N9bm0edH\nqZSUPHhQCKzkZCGArlwRTkxbWzFzTUoSM8M7d8gEeQLbrvCm7iRb+l1dzDRFGq9cEeZ7VAYzIEni\nXk7M0qa4wbCdNJpqx0PPDmVuO3JEzKxfvdIe+9tvpF3Va7SZZ89jL45lbg8KEpnS8+ZpOx8Lz6lI\n/e6daWKqZPPmQqhrIiGB7Dp3B40GebFqVVG7KWukkyRJtPOz47k7Idy6VQj1YcNEMuKQIeSQMTE0\n9DHj9ZsKRkeLc1StKq6nTx8h6PVtQ6jXeiQdCqXT1FT4MVRKwt1dKK8JE8Q5S5QgCXDePGGJVK0q\nKKeSJUVhvO7dRfvSxi1jWWx+JVo1Xs8hQ9RlPjQRFB302b7Sp4NO02urV677U9JTWHhxYd7/kHMc\n6oMHZPkqCdT71YKNN7XI9TwqLLm5hA5zi9LWLZiPspdz0oIkSVx0YxGdFjppzd5Vgjy3YpTxqfEc\ne3os7fzsuPzW8i+u/9R/kJzfT9zE0itKs+aGmjz87PAX10grKEuiDURGdFKG41gC8DSv4/7O5V8l\nISgmCwtBOX3LMDUVM7/PQaFUcO+TvfRY68EKqyrQuflOHjuezmXLhHOYFAJq5kzxev58wZWTYmbp\n5kZuPfac3+/4nuVWlmfhepcyW2aSIgqobFlt2u7ECZGIdfHlHbouceXAYwP5OjSehQplj4o5dkzQ\nMwEBIvzRYYEDD/x5gM+eCWW1dq32+O3bSWOrWGK8PWss7JiNorh4UQjyjp3T6epXiqcDz2jtj4gQ\ndFedOqRu72Z08jqSSUcsWybeb8UKctDcq7SfVJOVKwvndOXKIm9h3z5BXzjWuEz91iMo01HSzCx7\npBMgrJ9RowTV5OBAEuD48SLh0NZWRDBNny4orv79RSmVMWNIZ48AWs62yzXGX5Ikms01y7W3+Zwr\nczj29Ngc95GioF+b3W1y3U+SZVaUpel0R9o5pPPqZ5iYuVfm0m2ZG9/GvuXeveI7y03Qh8SFsMVv\nLVh1XdUcP9vSpeIeaGZ6S5LEXY930WWRC/sc7vPFlZIT5YlccnMJnRYUpt7PTXng/oWvLstfUEri\nMQA7AA8y1hsC2JzXcX/n8q+SEPWGNGsbfYvYulVk/ea3kZAkSZyx8yTNh3/HYkuK06LRat72T+HD\nh0JIJSSou/I9zygau2qV8Hmojh+w5ACNvF3ZZV8XBkYHMiZG0EyavZljYoSPRNXqMzYlln2P9KXJ\n5KLsOOGs1jWpLBjN4+9/uE+7+Y60brQ5m6W3YoVQjGXLkgf8L1LHR4d+1/xIiusfOlRYKscy9Zip\nhQAAIABJREFUjJHfn/xOz3WeVCiVmdVlLS1FRNC5c+SY45OzFY2TJDF733XnBL02NmNMjHB63rpF\nentn1HZqoqDN9JK0qX2EjRsL5WBsLMJrNRVFlSpCUdjYkEYm6STAbt2E5dWypbhP7u7iusuXF0l/\nNWoIGnHOlTlsu7ttrt+nyyKXXKmd9nvbc9fjnNPu41Lj6LDAgQERAbmeu+u+rjScZcj3ce95+rR4\nJk6e1B6jlJT0PuvNMivLaPVXX7s2+6RBkiRuebCF9n72nHFxRq71w5RK4ZxfuVKs3w65zQZbGtBj\nrccXlT4nhVPb55IP7f3s2WFvB94NvctffhFW6deioJSEf8b/RwB0M14XiOO6oJZ/lUT2pjDfIkqW\n1O5LkB/88INQLjM2Xafd8FYstLAQqwyfx+m+gjuaMkUdEpyYKGglVVSSioa6cjORsy7Poq2vLatO\nHcKu/bS7zPz8s+DaNbF/P+nS4CQLLyrCgccGMj41nkqlqLa6cKH22MhIsqjnn7SbqW6cRIpZprk5\nWb26urT2ohuLKJsh45pT51m8uKBrNLO7JUlixRWerNRtD93dRf6DZnHBo8+Pss6Gejx4UHRx+/57\nobRMTEjz6odp0Ls1LSxE6Y26dUW+wsaN5KDFx2g2ugZLlhTC3tFRKAd9fQ0lYRBPGEdTp/f3xARb\nYprYoT+xMK0GtWXZrtvYvFUKGzYU79m2rUgIVNFLyWnJtPOzy7UgXfGlxXPcJ1fI6bjAka8+vcrh\nKPLX87+y96HeOe7TvKealVKvXxfKUaUoPtewR5JELom3KFybaT1UXlOZD8IeMC88ekTaln7GNjvb\n02WRC9ffW59nKK0m3sS84djTY2k935o/H/6ZzyLV1RDv3RMWbk41qfKDglIS5zKS2lYC2ANgOYAb\neR33dy7/KgnBB2eNoPmWEBkpnsYnXxBSHhQkZoTJyULgHThAXnr2iPqdf6LlPCv23N+b1hVu80VG\nQMzixWraiRQUTSeNvjQBryJp2HY0rebZcMr5KYxNic2kmTR59MhIZtJMKqui6JKiHLroLGvXzv6D\n7dRJZI+rGic129GMK9cl0sxM5Gxk9S00XN2F+NWQK3YGa22XJBF5Y1nxKs1nODM8Trua7osX5PBR\naZSNc2LtNk84fbrINFc51E8GnmSzHc1ICuvo/HmRV9OpE6nX+wfWHLiVM2YI4dm2raAvZTJSpqsg\n6s8hJlgR5u9pXfkKHdxCaWZGEqChUxANq+2ibu/mlE1woHv77axVW2LdutnDNMedHsfxZ8bn+H26\nLHLh+7jstUn2Ptmbqz8iICKAdn52uVogZ4LOaFlnmrhxQ/i/9p55xfKryn+2YU94OOngKHHqgbyt\nB028j3vPfkf60XCqHZtM92VyWj5SuymsmpOBJ9l6V2va+Npw1MlRuVJ1NWqI7/lrUFBKwgyidpM+\ngD4ARgCwzeu4v3P5pyuJ1FRBDXxpO8//JkyeLMI0vwTjxonl4UNByaSnC6HXp48ox9x1hS+NvYuz\n2vpq3Oi/mW5lkjL9BykpQkBolqgeNEic723sW/Y53If2fva0a72QR09oxxR36SJKXWhi05WT1Blb\nhF12CKtChd9/F2GoKqoiXZnOTouWUGb2kSU8g7N1O7twgbSxU7LUQk+azjHNFJrR0WSzZiIpLSCA\nHHFiBHseFE2j370TyX4ODsJ6GHFoGoceH5p5zoQE4cwf7nedtt7V2bKlKPLXsqWgg3yXJNJwpjFn\nz09mqVKi6mvDhiLT2cQmmjD5SDQdS1i+ISCsn+LFhbVAgE5OwnFdoQJZoak/9UdUpGXfLgyPzF6h\n9HH4Y7ovd8+2XSkpaTbXLMdchAZbGvD3J79n256uTGe19dW4/t76bPtIkTCn66PLPof75LifJP32\nXaDOBEfOOv35hj0hcSGssqAFDUdW5q03eVsP0cnRHH9mPG18beh91psPnn2ijY26sGBuiEqK4oLr\nC+i2zI1V1lbhRv+NWqVqcsLWreLZ+BoUaHTTf/PyT1cS9+6JH+i3jFKl1L0H8oP0dCHkAwOFcPfx\nEfxv8eLq+jl16pD7Dyp4/OVx1lzWkrqTbDn61Bi+jHrJHTvUvglSWAdWVuK/CusOPaHFgLZ0WuhE\n32u+jEuN4/nzgnPXzMpVKkURwlkL1FbF2Vdn+fGjsDg0e1AkJwvLxKjsOdrOt8/M+CVFhrGdnVAU\nSqWSFVZVoPlcc94PfM+KFYXDWJWMlyhPpNsyNw5dcZh2dsJJnZohk9/Hvaf1fGsePRXP9u0FtVSz\nJtlvaBwNfEx4+Gg6T58Wfo7168m2w6/RZJQnzcxE6ZGpUzP8FC1jqTO0EnWqbiUgaTmwixUTn01V\nBbZwYfE+FhakpW0qm25szza722SjVRRKBU3nmGZTBi+iXrDokqLZvucnEU/otNApx/7Wc67MYdPt\nTXMU7tfeXqPeTL1cW5hKksRVd1aJbOQZ59iiRc6lLjR9D9MvzuCPHeSZtFNO+BD/IVM5DDg6QMu3\nMWhQzkEZkiTxdsht9j7Um5bzLPnToZ946/2tfDujk5PFfdd8dvOLgrIkOmREN8UDSMhY4vM67u9c\n/ulKYt06MSP8VpGeLnjvrLHzn8OVK6LEhUIhBNqrVyKnoXJlsf/RIyG4VHkGP/5IzlkVzIlnJ9Le\nz56Ww76n99ZDmcLH11dd2lqFtm3FvX0Y9pBd93elra8tSw+ewgWrtUPINm6kFs10MvAkXZe40mVM\nO/4y4U+tsaNHi4SzDRuEIHNa6MTpF6czLCItMxs5874o01lqWVnKpphy9Iw3WkIsNpas2ekq9bwd\neeKmNld/9Chp1rc9ndus4Zo12lRZ6RWleeTmY+7cqS4z3nzactaZN4CnTgl/StmywjJwGPAzTbr1\npamZlFmmQ7VYWAh/DgE6OoqscHt7oaT9/IQfod7melx0Y1G2767OpjrZqrnueryLHfZ2yDZ26PGh\nOXZvu/j6Ih0XOOZIwZx7dY66Prpsv6d9tn2koAj7HO7DcqvKMSg6iHK5eG6yBhVceXOFdTbVocda\nj0zfgyp/JmvuS1B0EAceG0jr+dYcfmI438S8yfa+AQHinqkUfYI8gZvub6LnOk8WX1qcvtd8c6yG\nnB+0a5fRBOoLUVBK4lXWchn/bcs/XUkMGCCiZL5VbNwohMyXYNw4MeO9cUNtRY0Zo27XOm2aGEOK\nGZalpbqa7K17KbTx2sE6G+vSzs+Og48NYaHqN3jnjloKv30rhLlmBdorTwNp0GEAredbc8SJEXwb\n+5aSJKJ4LmjLPO7al0z7tn6097Nn3yN9+S72Ha9fF7NtLy/1rDUkLoQ/7PyB1t4e7D7modY5EhLI\nylWUdJzuQePZxrwbKhpdfPwoooyGDCGX31zF8qvKMz41ntHRoiaSmxu5YN9Fui1zY1JaEiVJWCm9\ne5N6XbrTrskWduwonPqzZpHfzfiV1cb6ZHa/q12b7DT+EnXHFmWtBvG0tBRRTppKAkZRtKl8nQSo\nY/mBFhYirLZ6dbWyDIwOpK2vbTY/Q6ffO3FPwB6tbWNPj83W6/lt7Fva+NpkOz74UzAdFzjy3Ktz\n2Z6LPQF7qOujy+77u2fbR4qEtyKLi3DA0QFatOCDB0LJhYSQj8IfseVvLVlsaTFuf7g9mzU0Z44I\n7yXF2G77u9HW15ZTzk/Js7Bg/QbpnLz5BLsf6E7LeZZstasVj788/kWO7JywZYuIMPtSFJSSuJ7X\nmP/08k9XEp6e37bT+rvvBB3yJShdWhSx8/YWPLwkCeGoKrPh4SGsDVLMsNprTCpVx5BC4Py0cTaN\nxpZhiWUlOPXCVD6PfM4pU0RCmCamThXJaaHxoRx3ehyt51uzyZrudK17nUqldgZ41aqivlFMSgwn\nnZtE69lOtHCKoJlNfLZWlIcOSXT4fjPt/Ozpc8kn07oZPFgUH1QolGy2oxl1fHS44tpGVqkiPoMk\nCapi4LGB/G5NGzq7KDlihNpZ3G1/N3bdOorVq4sZvq8v6XdhbeaMPSxMXKPXbG82mjGHs2cL+mnZ\nMtJ++I80/W4ta9dWR0fJ9NJEhFPDyYTrZeoOrEUCxERr6vRoRf1yJ/j0T+1krmHHh3Hqhala27of\n6M6dj3Zq3C+JZVaW0co2liSJTbc3zaY44lPjWWF1hRxbjY4+NZqyGTKOOjkq2z7NAIOzr85m20+S\nI2cE02VYTzoscODSm0tz7foW+kFB0yrH2HhLcy0qMjeo6KThJ4bTcpYDLcbU4srbK/NVqTa/+NqS\nPAWlJJYB2AugWwb11AFA+7yO+zuXf7KS+F9wWtvZCdojv3jxQpjtSqWol3Tzpug3IOo9CUeura2a\nasqaiV6unHYew4AB5MKFEu+F3uPoU6NZaEEh6g2uzkmHl2YmOsnlgoPXrO76KfkTPQYvpv1Md1Ze\nU5nr7q1jgjyBt28LoaxZJnzJmk80LvKUpj62nHNlTqYzMipKhOVeuSJ8CT/s/IEeaz24/shDFimi\nXcxv8rlfiekylpvYX4t6unRVTv1+Ddlkeb/MjNvUVHLkpCjqjHfir+uvZF7L2/A4mvhY071KKK2t\nRQmN2t4zWXfaJE6aJPIu3MrHEJPM+WPnBFapIhSyiX0E0b86Ufg6YR9AQKKREYWS0E+irOpm2kyp\nyA57O2hF8DwOf5zN19B6V2utlq8Xgi+w/KryWhz8unvrWG19Na0s5KS0JHpt9eKgY4O0xqYr01l/\nc33q+ujmmEuhaT3kJMwjEiM4/MRw2sy3oUXb6bx8K4eU8Ixx867OY9ElRWk7sQa7+21lSnruUjkw\nOpAzLs6g+3J3llxekj6XfBgQGkhzc3V2f0Gibl3R1fBLUFBKYmvGskVzyeu4v3P5JyuJx4/V/Yi/\nRSiVIsxS1TI0P1i3TuQPhIQIZaBUin4QgweL/atWif2kEJaWlupM9MBAwSmrhKZSKYS0Zkbtzl3p\nrNz+DH869BOt5lux2Y5mHLhuI+s01c6MDQsTzu5PMUqeDjrNtrvb0sbXhmVGD+e4+c+0xnp4iKS5\n+29fssu+LnRa6MTVd1Zz6Ig0DhumHidJElff2Eydifbsvn6aVmTLypVkqTaHqTdTj57rPJmSLhIH\nHRzIg38ksPbG2hz8x2B+ilGyXj0R8bT5xiG6L3dnQmoSV64USXDuIwfxl20+lCRxf6bu3seyM1uz\nVy+hUBv3O0+XqXXZu7eIGivrEUedIZWp03RSNgc2AcpkonxH4OtUdvy9I3/c82MmfSJJEq3mW2nl\nHhRfWlwr1r/T75246o66S9abmDe087PTKrGdlJbEptubsseBHlrUTGhcKJ0WOtF8rjkDwrWT6SIS\nIz5rPcSlxnHahWm08bXhiBMjGJEYwblzRWkYze/j+rvr7HGgB63mW/GXw7/wbuhdXr0qgi2y+paD\nooO4+MZi1tpYiw4LHDjixAjeDrmtpdR+/DF/pb6/FJMn512tICv+jW76B+DkSe0onW8NN24Ip/UX\n9KDngAGigNzhw+rkuw4dRL0kUkToqH6E58+LCqUqLFmiLQTu3BEhqpro3Fk09iGFcNodsJv2Q7rQ\ndKYVa22sxTlX5jAgIoAzZ0ocMED72Iev39Lwhym093Vk/c31ue7eOp6/GkdLS7USI0W71UZbmlJn\njCsnHJurJUTHjCE793vPzvs603mRM9fcXcPngWm0tRUhu0HRQbT1taXJHFM6NzzCHRmN0uJS41hr\nfV3a9f2Zg4amZd7Tdju70aX/MNaqJY5/FP6IhRY4c4x3Ih0cyKqNg2k6zZmbN4uQ3R7LVrLS5IFs\n0EAolUK9xlO/0080NNJ0YCsI0zBhScgUmXShXCFnrY21uO2h2otad1NdXnp9iaQIDTWfa55p8QR/\nCqb1fOvMGb5CqWDjbY21aKbYlFh6bfVir4O9tCyLRTcWUW+mHsuuLMu4FLWFEJ8az+kXp9PG14Yj\nT47MZj0ERQdx/JnxtPOzY8+DPRn8SZ2PEhEhFH/A2/f0vebLiqsr0n25OxffWMzoZHVeiiQJX9jp\nswreeHeD3me9WW5VOToucGS/I/144uWJHCOySPFsaebrFBQOHBBhzV+Cv6QkkNEACMCKHJbleZ34\n71z+yUpi06ZvO7JpwoSMGkBfAFXi4NSpGX2WKUIyVaU3SpQQ9BMpstBHaVDUmsqEFPWdsuY8uLlp\n00opKYLSi02Q8+yrsxx+YjiLLilKvbHF2W37SJ4PPp8pEBYsEFaMXCHn4WeH2fH3jtSvtp26Vbdz\nyan9WvTEunVkg253+cvhX2g134o9DvTg2efXaWUtZfaWuBd6j023N6XxRHf2mLcnU7gqlUqWndKd\nmC5jsx3NmJKeQkkiW7VPYJGJLdhwa0NGJUUxJIQsUT6KNtNLccG1RZQkUV7cqFtPVpwwgi9ekEql\nRLt5zmzR5wmtrUlZnUWUNR9FExOyUtVk6k+xo5lrEM3MSJhGEKUPE/aPiarrhJIY5creG+dk0kxH\nnx9lzQ1qJ1OT7U14Oug0SeFYbrq9KUkxS2+8rTHnX52fuf7L4V/YZHuTTGWgKr09/MTwTAsiLCGM\nFVZVoK6PLmdcnJH5PqnpqVx2axkdFziy18FeWsJfoVTw6POjbL6zOe387Dju9Lhs2d0xKTHc6L+R\njhMa0sTHmv2O9OPF1xezFc1LlCfy0LNDrDX/Zxr+as+Kqyty8rnJvPX+Vr4K7EVECP/Bl0yM8gNV\nG94vwV9VEq0z/vfJYemd14n/zuWfrCRmz1Y7Yb9F1K0rHNf5haYPpkUL0SEuKkr9o/v0SUQQqSJs\nOnUid6p9pFrKhBRlr3/XyNPKejwprI1KlbSvIzRUokXJR5x5aRZrbKhB6/nW7Lq/K11b7eCBsyFa\n5zM2kVii7W9suLUhredbs++Rvjz36jwrVk7nmYxafdHJ0aKL2KyStJyo9m+QIg/GoeY5eq6rxqrr\nqvJM0Bnevp3Rl/vRNdr42tB0jilHrT3MihXJ5BQFJ5yZwOJLSrBErQD6+opIIdclrmw+eQNLlSJP\nX4mm8yJn/rrxMitVIm3aT2O9uUP59i05aN1mlv+1J/v1I6v9spNmg5rR0pK0cn1PjCxBNBlHQJlJ\nN+kV8WebXaKkRVJaEhVKBV2XuGaGjXqs9eDtkNsktRPj1txdwxobajBdmU5Jkjj61GjW2lgr83Of\nDjqdWXpbhYXXF1Jvph7dl7tnhpkqlApuf7idxZYWY8vfWvJRuLpsa0RiBOdemcuiS4qy5oaa3PZw\nm5bPJCktiYeeHWLH3zvSYp4F2+1px9kH9tOtdEqmEJckiS+jXnLN3TVs+VtLms81Z+NtjTnl6DI6\nl9fOis8vihfXTuQsCEiS8O9plqzPC//STf8ADB0qqJdvFa6uIpQzv/D3V4e8OjoKJ/WZM6JmEimK\n3NWvrx5fooT6x6ipTFRwdiaDNX7n585lL5S4Zk32HIpjx0TWsgof4j9w5c311OnWjjbzbVhyeUn2\nP9qfo5dcoaNzCjduFOPex72n3zU/ll5UlTqTbNh9fw/ufbKXsSmxlCSyYiUl5+87wx/3/EgbXxsO\nPzGcHQb+yblzhbDa93QfS60oRdtx9dlvyV6mKdKoVCrZbqewKootLJMZKttkzA4aTrXlytsrqZSU\nHDb9BfUnFOHc88uoVJLtvI9Qf2wJHjoRS//A9zSabk3HYtH0bHWf9jPKccwYsuLIKSzaayZNTUmj\ngY2o6zVH0E0yBSGTkwBr1EqnUlKyx4EeHHFiBEmy877O3B2wm6npqTSebczktGTe/3A/MzEuMDqQ\ndn52/PPjn1RKSg46Noie6zz5KfkTU9JTOPHsRBZaWCizO9vhZ4dZaGEhLeshPjWea+6uYblV5Vhn\nU53MsZIk8drba5lhpr8c/oX3QtV9ZsMSwrjBfwNb72pN87nm9NrqxXX31mXSSUqlRKfygZx9YgO7\nH+hO50XOdFnkwp4He3J3wO7MSrVK5dcnsXXsqD15KSg0a6YuBpkf5EdJ6CEPyGSyYwAI0e8aGa/j\nANwDsI5kal7n+Bf/f/jwAWjY8D99FV+PuDigZMn8jw8OFuMTEoDERKBwYeDgQaBCBbH/8WPAw0N9\n7o8fgVKlxPr9+0CVKoCOjlgPDwdSU4FixdTn9/cHqlXTfk9/f8DTM/s2zXFO5k6oJuuPSs/6w/83\nCU8+PsGlN5ewaks4Ioovx+zYzbj7hxe8inmhV+VeSDk/HuFSCCoV/QNbH25Fv6P9UNa8FsKLtEHn\nRq0x0eYQ3se9x7Lr63HQohFCbNxheKsd2pRug5Otn6By58N4MXA1ii4dhX5V+6HIc1/0iJ2JQJfu\nqLGhBspa1ED08d24fPwaRl36GZtu7sf7XZtw/fgVdD/VFEfOh4OXfdB73FnMetUaEUNOwb1TT7hM\nGonvYjZhamwE/rjxCmmV5KDSHPouT5Fi8Qw6t04CtRcDOnLg+gQAwIvmxXH4+TL4NvFFxTUVMbvR\nbBjqGkKukONs8Fl4FPKAvq4++h/rDx8vH0QmR6LZzmaY3XA2XCxc0P1Ad4QnhuNC7wt4HvUcfQ73\nQTn7cng06BECowPhvtwdwTHBaF2qNba124bQ+FAMOzEMuwJ2oWHxhljefDkaFmuIhxEP4XPJBwee\nHUCqIhVDqg/Byh9WwsrICk8jn2Lu1bk4+uIoXkS/QDO3ZuhSvgu2/rgV1kbWCI4JxqFnh3Dp7SVc\nfH0RMT8SJ581xM9ejTDTayZKWJeATCbTegZ0dMTz5O8PNGuW/2cYEM+Ovz/Qo8eXHZcXihUD3r0r\n2HPmqSQgekjYAdgNoSi6AEgEUArABgC9CvaS/sWXICwMcHL6T1/F1yM5GShdOv/jw8IAZ2ehHJ2d\nAZlMvHZxEftDQ4EiRcTrd+8AV1e1UggK0n6vp0+BihXFOVTw9wdatdJ+T39/oG9f7W337gF9+mQf\nV60aoCPTQSXHSqjkWAlH44E3dyXs39sMV99fxJ4nezDk+BCkpziiWqFaKC9Vw7QG0+Bm7YYJq64h\nvsJR1Nw0E9bG1vAq6gW88cIPIbcwuF8Ajr44igU3FkCRYI1SDdtgXpPZsDC0wJq767FWUQmNK3th\nTqM5sDCwQKMVvZHUzQ3eVxtgadOVaDX8IuQ/1cDx0GEYaHoKM6KGwa1nTbRy2Yyd+xfBbXBrrGn6\nGxrurIfUpBNoUrIPXldbjfDnDjB1CoFumT8ge9YJelV2QlF1I7DtDFTzxg3NfseQ4+1wsMtBVHGq\ngitvr+B9/HvYmthi5Z2VGOg5EL7XfGFrYotmbs3QaFsj9K3SF8Wti6Pimopo5tYMcxvNxcSzE3Ho\n+SEsa74MFgYWaLK9CZ58fIK6ReridM/T8A/zx497fsTL6JfoX7U/7va/i8BPgTjw7AD6HOkDIz0j\ntC3dFit+WAEncydceXsFw08Ox6U3l6Cvq4/WpVpjdqPZqOxYGU8+PoF/mD+GnhiK6++uQyEp0LB4\nQ3gV9cL0BtOxd40bYj7I0Lfq559HlbD/UiVRqRKwZMmXHZMfODuL30hBIj9Kog5JzbnVUZlMdo9k\nNZlM9rRgL+dffClUwvJbRXq6ENT5xYcPQimq/gPiR1GunHp/lSrq7Zr3Juu90lQuKvj7A9Onq9dT\nU4Fnz4DKlbOPW7FCe9u9e0CNGup1UmyrUEEHni6V4elSGaNqjYJSUsLJIwCN/W7jUYQ/Nj/cjGeR\nz2CY5I7ydp4YXP9XWBtZIzwxHKtv/I6PZYbi1RkHeBXzwqLvF2HKWCtU/ukmhpwYgrCEMFQwaInS\nwSvR+scojDk9BrHJSVC++BFzRv2MnU+3otaW6jAo54IJdQYjMDoIe1/WxYC63qhczhgdDjZFi6rD\nYOysj0abWqFfmTnY+WkA9PZtRFrzvqjgsAX+Totglz4ApimWiK/mC1zwATp3BrZcBQiseTEFE+pO\nwMIbC2FlZIU3sW8QEBGARHkigmOCAQCr763G8ubLUX9rfQyoOgCvY15jnf86LG22FHc/3EX1jdXR\nq1IvdCrXCYOPD0ZsaixquNTA0mZL8STyCepurouy9mXRq3IvgMCJoBPwXO+JCg4V0LpUa2xsvRHv\n497j8rvL6HmoJyRKaFisIWq41EBz9+b4EP8B98PvY/DxwQhLCINHIQ94OnniB/cf4OPlg5I2JbUs\nhWrVgPnz834ePT2B/fvzHpcVLi7i+StoODkBt24V7DnzoyRMZTJZUZJvAUAmkxUFYJqxL+2vvLlM\nJmsOYClEldmNJH1zGLMcwA8AkgH0Ifngr7zn/xqiowFb2//0VXwdVD+SL1FyYWHAd99pK4CsCkP1\nWnO7al/NmtrrmvtTUoCQEG1r488/AXd3wNhY+zi5HChaVPva/P2BwYPV6+/fA5IE1KqlPS4qUheK\nEA9MaeaRacXIFXKU/i4ADSf648lHf/iH+eNZ5DMgzQ0NirVGKVcrJMgTsO7eRryp8hgnw/Xh6eyJ\nhsUa4tzlFMgrrMWUCw9Qr0g9GEe6wbRcJH5/fh4RSRGwjWwL6yJh8LvhB0qAQUJN+Mt3Y++Zd7B8\n1w3xpS7hakAsKtrWxG+xQyE9awepdT/Qvwdel58M/YgKSNeLRLrDG8A8FKi+FvhYAdBRAErAysgK\nD8Mf4u6HuzDQNYCZvhnalG6D0WdGo2fFnvA+740mxZtg2Ilh6FKhC9bfX48aLjXQtERT/HzkZ3gU\n8oCbtRtW3FkBE30TVHeuDkNdQ1x/fx17nu5BGbsy6FC2Ax5/fIwxp8egduHacLN2Q69KvfAs6hl8\nr/vCRN8EFR0qorBlYbQv0x7hieG4HXobh58fRuVClVHNqRpalGyBqd9NRRm7MtDV0f3sc+bpKehJ\nSVJbormNmzTps6fKESpruKDh5PSfsSTGArgqk8mCM9ZLABgik8lMAWz72jeWyWS6ED0qmgAIBXBX\nJpMdJflMY0wLAO4kS8pkspoA1gColeMJ/6FQKAB9/f/0VXwdXr4E9PQ+/yPMirAwoFDJciEMAAAg\nAElEQVQhMbsvVEi9LSfFkFUJ5KQ0ChdWrycnA6amgK6G/IiJAezts1+Dq6s2TQUAr15lp7PMzdU+\nEhUePBDWjubxaSmGiHxUDdNbVoNexq8yIVkO+4oBaLnzAd4kvEBkSiTeRIUChgnQ03VAaHwowhPD\nEaxIgkz2Aca6hohIisDrxGiYWMcj7lMIzA0sEKF8A2vjZOik6UA31QVwfIa7H6IB6sKs1O+4HRIP\neVwZRJU8jdRwI9hUOo+Yj7bQq7wTsZEuMLYLQZwUAOqkASBQ+AZg/xQ4tRQAcP39dejKdGGkZwQd\nmQ6OvTwGfV19OJg64Pc/f4euTBf+Yf5Ik9Jw5tUZmBmY4VTQKRjrGSNBnoBr767BzsQORSyKICo5\nChGJEdDT1YO+rj6eRT1DnDwOZvpmkCvkAAH/MH+ExIfAWN8YcoUcBroG+JTyCaEJoTA1MIW9rT1a\nlmqJaQ2m5Ush5AQ7O/EsaNKXOcHV9euEsq0tkJQkLFUjoy8/Pjf8R5QEyRMymawUgDIQTusXGs7q\npX/hvWsACCL5BgBkMtkeAG0BPNMY0wYZiojkbZlMZiWTyRxJRvyF9/2fwresJJKTv0xBAGK2b2Ym\nfmBmZmJbUpIQxoBwZltaitdxcerXABAbC1hbq9ejo7VppJx+sLlt07QsAEEtpaQAJibqbUlJQhFo\nXgMAfPoEODhob1MpND2NX+THMEM4SdUwrLaa7d20Cbj0JB3TRr7By+iXeBH9EhNPvkCtli8QGPsM\nAR8DoNQzg0ymBwMdA0QnR4EOUfiYbAxDfUPEpb+FoY4eTGVmSExNRpIsEpKSgMMDhMTrQjKSEJNu\nhDSLNCgkQ8D2BRIlAroZsStSxgVGlgUU4sMqJSWSFEn4lPIJEiXIZDJIcgmxKbHQ19GHXClHdHI0\n0pRpiE2NhUQJOtBBcnoy9HT1YKxnjJiUGBCEqb4p3se/R3J6MvR19GGib4KPSR8RogxBcnoyXMxd\nUNa+LErZlEIpW/VSxLIIdGRf+DDlAQsL8R1+DoaGgjLNy+LICpkMsLERz0JB0sUmJuL5LEjkx5IA\ngJIASgMwAlBZJpOB5Pa/+N4uAN5rrIcAqJmPMYUB/KskIASTUvnlgva/BSkp2WfjeSE9XQhShUIt\nUFXbsr7OqkDT07OvGxhoX09WhZCSkl0h5DQuPV18D5pCPiVF/M/vOXPapql0AKEErS31UdK2JEra\nlsT36S0x8Q/g6qGMY9JTYFk4DAduhCFaHoZT1z/gwoNglKn7Em9i3iHuUzgk/XgkKlMBHUACMmMX\nJSgBGZAmpYh9TBYn1ZyI66YJf3Wxq0CLQcAJIDolGjmCQJokGGmFUpG5DQAkSACBdGU60pRpMNQ1\nhLWRNQqZFUIxq2IoZVMKxayLwdncGU5mTnA2d4ajmSMMdA1yfq//BxgZqb/D3CCTCUWRmpr9u8oL\n+vriGS1I6OmJZ7EgIROhsp8ZIJPNANAAQHkAxyH8A9dIdvxLbyyTdQDQnGT/jPWeAGqSHK4x5hiA\n+SSvZ6yfAzCB5P0s56KGrxFeGcu/+Bf/4l/8CzUuZSwq+AAg+dmpWn4siY4AKgO4T/JnmUzmCOC3\nr7xGTYQC0GT7ikBYCp8bUzhjWzbMyEPZ/a9CR0fMRr5Fa+LoUaBTJ+EEzi/q1QPmzQMuXBAmvo+P\n4IWvXRP/nZyEw9HJCZg4UZj0EyeKY2vVApYuVTuSe/YUoYu9MoK4374F6tfXjjM/ckRQPEePqrdd\nuQJMmQJcvareJkliFqdUqq2jPXuAceOAZcuADh3UY7dvB86eBXbsUG979gxo1w54/ly97cULoHVr\n4btRYfVqICAAWLNGrMenJsDKLRDbT7zAq5iXCPwUiN0n38Kl7HtEpXyEXJEGKvVhYECkKdNApQ70\n9XWgkBSgpANdHUBJpXYWlAyZM35AB8iY9asHyaCTUgjSghAQOjCYqQ+FpIAMMjDjTxypIyyGXKAL\nXVBGgICejh6UVIIkDPQMAAJypRymBqZwNHVEUcuiKGZVDO427ihtVxqlbEvB3cYdRnoFSOhnQfny\nwN696hyc3KCnJyyOL6V9XVyAO3eyR9j9Fbx4AbRpI/7nBC9oT6B98mHK50dJpJBUymQyhUwmswTw\nEdqC+2txD0BJmUxWDMAHiPyLblnGHAUwDMAemUxWC0Dsv/4IbaioF4O/zwovMBgaCsrsS6CvD6Sl\nif/x8WKbgYGah1WZ/qrXmnSBsbE2x2xqKugbzf1Z+Vxj4+yUQ07jdHTEdcjlanpJRR9lPT7r+wLC\nb/Hpk/Y2e3uR8CdPT8ebuGC8jH4Jf8OXOI2XeLb1BV5EvUCsPBa63R0x7ZwxoCfHx6SPYCFCLrdF\nEcsiSE1Lw7tP4TDRN4GjqSPefYqELnRhZmSGmOQEKKGAsZ4ZUtLS4Gxpjw8RClhbKxGTmAJbo0KI\nSY0EQejQEJJCD6QSMP4EKVntaDHUM4S5rjmsjayhpBIKSYHktGTIlXLYm9pn+husDa2RqkxFbGos\ndHV0kZyeDAMdEQ2VokiBiZ4JzA3MEZsaC5JwtnCGnkwPiWmJuPbuGvzD/GFnYgc9HT0kpSfhY+JH\nOFs4C79Eho9CpUCKWBT5Koe1JnKiALNCRRd9jV8wMfHLKaq8kJamTXkWBPJzursymcwaInHuHoAk\nADf+6huTVMhksmEATkOwnptIPpPJZAMz9q/LcJq3kMlkQRnv+/Nffd//NXzLSsLF5cs5WXt7IDJS\nOH5fvRLbHBzUmdWOjkBEBFC8uIh+evxYfayTkxC6muuakSA5cdDGxtkFurm5iHrKCjs7cb7ixcV6\nkSLiR6u6ThXKlBGRT5pwchLWyOv3ckTrBuDeh3vw/+APeR9/WPo+Q2ELFxS3Kg4dXRNEyOUolJYI\nuVIOKyMrAGVgK5nDzDIKMakxMJdZwTq9HMrY6SMsIQzvP0XB1agcJIN46OiFQa5QoIiVE3TSbJAo\nT0brct/h4P2LcNarCBrFIik+Ho5GukgKc4K+XRz0QutBR49IMH4MmEYAyfZATHHAMB6QAy3cWyA0\nIRRvYt8gKT0JZe3KoqhlUVx/fx32JvZwtXTFq+hXKGVXCklpSQhPDEc152o4G3wWDqYOSFOkIVYe\nC5lMhkJmheBg6oCgT0FwNnOGnakdktKS8DjiMXRkOihhXQKWhpaITolGYloiUtJTEJcah1cxr/Au\n7h0OPDuAVzGvEJMSg8qFKsPTyVMszp4oY1cGejr5k6BpaeJZUUXQ5YaYGHXQxJcgOVm8h5XVlx/7\nOURFieewIJEnSUFyCMkYkmsBfA/gJ5IFIqxJniRZmqQ7yXkZ29aRXKcxZljG/spZfRH/QkT4JCT8\np6/i61CmjLAkkpPzf4xKsKsS6jS3fe61al0zNj3rfnNzoXQ/flRvK11aUECaFo+7uxAgKktGhapV\nRa6EChUqiDG3b2f/3GFhwMdoOe6G3sXae2sx4Fh/pP1cFWW2WKPv0b64E3oHpW1Lo7S8JxqZD4aN\nsQ1uhtxEuiwBRlE10anYYIytPRaVHCshxuwGwqOT0LpUa4ypNQaO5nYIkt+CmYEZarjUgLV+ITyK\nuYF4eTyGVB0OWXg16NAQPo0nQwqujzvv76N38V9xP+w+WldsAEluCqtYL5jbx0J2dQrSnK7AOKkU\nDIJ/BKgL3BgH2D4H5EI6XnxzER3LdYSDqQNqF66NpiWa4kX0C7Qq2QqlbUvD3MAcNQrXgLO5M8KT\nwjGy5khcfnsZfTz6YGj1oUhnOlqVbIWfKv6E17GvcT/sPkpYl0CtwrWglJS4FXIL5e3LY3St0fAq\n5oWwxDDcD7uPxsUbY1ydcehXtR/K25dHeFI47n24B3cbdwyvMRydynaCs7kzTr06hfZ728NqvhXq\nbq6LESdHYNvDbXjy8QkUUs6zlCdPADc3YfV9Dg8fiuzpL4XqGf7SwI288P+RXJsvJlsmk1WWyWRt\nAVSBoIjaF+xl/Iuvxf9HXPTfBVWOREBA/o9RlR3QLD+Q9bVmkp7mvclrXSbLLugdHIQi1rQG9PRE\nlviDLGmdnp7axxoYCOvm7l2xHi+Px/GXx+F9fjzYvzpcV1uj37F+uBN6Bx6FPNDWYAW6SsfRwr0F\nnkY+xYzLM5Docgyx4Zbwa+qHUz1PoZ5rPeiVP4LZt7wR+CkQAz0HYk/LU/gY5IpZV2bhSeQTrPhx\nHixv+eHY8xNYc28NKrgUh+mh0yhlWRl/BB9EQ7PBKPJqBubc/BX1PVwg/8MXh2Nmob/1bvx29ANq\nu5eHnaIKPn4wQuXSlrBJrgMdhRmMdU0h+7MLYP0a2Pc7IBP+hkPtT+N44HH08RClMSo4VkCcPA7d\nKnbD5beX4V3PG5HJkShnXw6T6k2C7w1f7O24F+/j32PNvTXY2W4n6hetjwPPD6BD2Q441PUQdGQ6\nWHRzER5HPMbejnsxuPpgnAk+g+W3l6NB0Qa48NMFtC7VGjdDbmLsmbG4FXoLHct2xOU+lzGhzgQo\nqcSuJ7sw+8psRCRGoI9HH5ztdRazvGbB1dJVS3F4bfXCjEszcOnNJaQqBI947172el05Iae6XvlB\n1pydgsL/R5mePJWETCbbAmATgPYAWgNolfH/X/wX4FtWEoCgeP78M//jNUtyaFoSOb12dhYZ1CoU\nKQK8eaNeL1FC2ykMZBf0f2VbgjwBLuXeIdbxCKqsrgHnRc5YdHMRLAwt0AyLMN0oGjd+uYE2pdvA\nP8wfR43b4WDySOjIdODXxA9RE6KwvNFmPHmRgh4He6D/sf6QK+SYXn0VXA++RdMS32PxzcUYdqUz\n3Oxd4G3+J/pU7oO+x/og5rsBMA9rgdgJcfipahewfXe8vl4Nfw5+hrJej3FF3xvtlb9jauc2iGsw\nAEaHjqBMxSSYlr2OoOUrcF93Fbq7TkSKcRBMY2vAOKE8Em2vwuT6fMD1GlD0KkAhPnru6wsTfRP0\nrdIXN0NuoqJDRVRzroaQ+BAMqzEMmx5swvYft8Pvuh/qFqmLBU0XoMfBHpjfeD58vHzQZX8XWBtZ\n4+XwlyCJESdHYG7jufgw9gPcrN3QcldLzLw8E4u+X4TLfS4jKT0JTXc2xcHnBzGg6gCEjQ3D5HqT\nERwTjDZ72mD06dGwN7HHiR4n8GHsB4ytPRbhieHodqAb+h7ri/dx79GvSj88HfIUoWNC4V3PGynp\nKZh4biLs/OzQcFtDrH8xE5aVrogEvs/ga5XEy5fi+StoZC1FUyDIq0wsgD+RESr737rgH1wqvE8f\nZpah/hbh6Eh6e+d//Pnzov+EQiH6SiQkkLt2iWZCJLlnD9munXitVIrWpapSzs+fi34SKqSni5ai\nsbHqbXv2iPaSmpg1ixw/Xnvb5s2iH7Qmgt4l0azKSU44M5E1N9Sk6RxTluqzkGbuDzh316XMhkMf\nEz+y7+p1dBglehM02d6Ey24t45OQYNrYkMGvFTz+8jhb/taStr62dOo9hiv3ii5KSWlJnHtlHnUn\nOtBzWWMe/PMg05Xp3PLHE+qNKkPZDBmb72jO0JhIlvX8yIq+zVh1XVXeC3nEqp4KVp3RlzU31OSj\nl9EsVjGEJtPteSboHDdukVN3XGFWaHWJS7e8o/ksO/b8ScGi/cbTtfs8upVMo2ycE3Vd7xJ6KYRV\nEKGbQgKs0+cYFUoFtz7YSq+tXiTJngd7ctvDbfwQ/4GW8ywpSRJX3VnFRtsakSRX31nN/2PvqsOi\nXJv3LIodxC4lJSIGNnbrMRG79djdeFSwwUIJFRBbsbE78KDYimKggN1iooKgxAL73r8/hi12KfX7\nvuPveF/Xe7G8+7zPG7s788zMPTOVAiohJT0Fjz49gtVyKyy9shQAEPIkBJbLLTHyyEikpKfgXuw9\n1FpTCyJ3ERpvbIyPSR/xTfoN62+uR401NVDOrxw2RWxChiwDgiAgLCYMgw8Nht4SPQw8OBBhMWEQ\nBAGCICDyfSQWnl+IuuvrQm+JHvrs64OgyCBFm9iE1AQcf3Qcxn9OQ6VldVDCowRabmmJ+efm4+LL\ni2qd8YDv7wsxZgx3SfzZ6NVLvalWbqCf1ON6CxHZ5zbuf7n9m5XEzJksxH5VVKmiFOp5wcePyp4Q\ndeoAFy+qC//Hj7lHhRwtWiibw8tk0GhC36ABcPas8v/HjwELC/VznjgBtGypvi8yEqhQQbM3QaFR\nTTDxgBvOPj+LlPQUREfz9Q4dxW1QO+zogNKLS6P7zt4oXm8Xoh4rNdTHpI9o5OIJPbeycFjrgMBb\ngUhKS8LWrUDrdmlYc30NzJaaoceeHpi5/C7++APIyJDBOdgZOvN0YDDDAX9O4OYYt9/dhqmnFYp2\nnI6IyDTIBBn67ByCoqNb4K8ZiUhLE9Aq0BFWg9xgYwP089iFRuta4MABoFqvg9Ad3B4FCgCFW3qh\nZJ8xqFABKOywE/SXOcj4llqPa0OxgGMPj0HsJUb463AAQJPAJjjx6AQAwGKZBR5/foy0jDSY+pgi\n+kM0BEFA993d4XrKFQDw6ssr2K2wUyiKhNQE9NrbC3XX18WbRO6ic+nlJVgss4DufF2sCl8FgHtH\nXHhxAY0DG6Pyyso4dP+Qop/0p6RP8L7sDRs/G9RcUxPrb65HUlqS4nm/TXyLdTfWof329ii9uDT6\n7++P4MfBeP02HaVLc2OrLylfcOzhMUz9eypqrqkJA08D9N/PPUCevfmCkiW/r8Nc3brAhQv5Py43\nVKwI3L6d9/E/S0k0J6JEInpERFGZW2Rux/03t3+zklixQr138q+G/v25XWh+YGkJPHoEjB4N+Pqq\nC39BULcepk4FFi1SHtu0KRTd4ABg/HhuOSqH/PgPypbTir7HggDFanTBuUXQGVkPpRfroffe3tgR\nuQOfkz9jyBBumQpwx7SQJyEwsH0M6t4Xf2xqi213tik6r02aBMyYySvfAQcGQG+JHrpuHgyDKuGQ\nSuXXI2B7xB4UcC6P2itaKoRwejpQuVk09OaXQaEFhbDh5gbExQFlygCzd+yD2EuMnVE7sX07YGom\n4M/tzmiwoQGevf6GP/4AynbZDLtl1ZGaLsXVq4Cxa1MUq70XHTsC9Sb5oorLePTpA5hWeoYCMwxh\nZ58EAwNAp/oOUPdeoGLvQZJIgAg00gEWPmVx6eUlAMCjT48g8ZIoLKcWm1vg9NPTAIC5Z+Zi7DHu\nMvXh2wcYexvjasxVAKworJZbYcPNDYp7X3h+IcosLaPobAcALiEu0Jmng1prauFj0kfF2KMPj6LK\nqiposKEBzr84rxgvE2QIfhyMjkEdYeBpAOdgZzz4qNKeMPNaVlxbwRaguxHsp0xE+OtwhcKRIyYh\nBquvr0b77e1RdH5J6E1oBf+r/nge/1z7l1ULpFKlFfwzkZgIFCsGpGlvra0VP0tJPCWuoWRDRNby\nLbfj/pvbv1lJ7N+v6R75lbB9O1C4cP6O6doV2LkTWL8eGDCA9zVrBvzNbZTVrIedO9UtlalTAXd3\n5f9793I3L1W0aMHWgxxpGWkwbnAa/bZNhLWvNax9rTHxxEQ0H3oKS32laseGhwNlqjzDtBBXmPqY\nova62ug3NxgSk1SsWqUcJwgCfE/tRcFxNVHW1wbel73xKYlNnJYtuXf56aen4bDWAbXW1sL0dSGo\nbC8gNZWP/+vvvyBy10GB0XVx52G8Yl7noADoTDHHxmBlJ7aRqwJRYII9fNfGQRCA+OQvKDFPDEP7\nCLRoAawK/IJiC4vjzbs07N0L9Fy2HHXdJmLcOO7SpzuoAwxarUepUoBIBBBlsJKocJCVRPnjGDNW\nuZx2DnZWWAgA8MeWP3Dq6SkA3LPaarmV4r1dUbtQbXU1hTB+9OkRjL2NERYTphhz6P4hiL3EOPn4\npGKf3EWlO18Xa2+sVexXbWXquMNRrZUpADyPf44Zp2fAyNsIrba2UnSzUxyfAZjYP8LIIDfY+tvC\nboUdPC95KpSRKrr1+Yqh3gcw+NBgSLy41/Ws0Fm49vpajr2uQ0OB2rWzffu7ceECUK9e7uNU8bOU\nRFhuY/7X279ZSVy5wqbrr4qvX/lbmJ8WkAsXsrC/dQuoVIn3/fWX0u02fToweza/fvMG0NdXrq5C\nQ9lNJUdiIlshiYnKfe7uwJixMlx8eRGjjo6CoachyrjVQ71pCxH5PlIh0C5cYJeTILBwkscRCs40\nROfVk3EvluMIKSlsiZQvz2NPPz2N2utqo+aamqje4xg2b1EXKKcuf0Lhfv1gtcwGu6N3QybIIAi8\nGHCZKUXddXVRcH5BbLi5Ad7e3H87Lg7wDfNFWd+y2HzoGcRi4PBhXvmKvcTYd/E2HByAVq2ACdtW\noNeeXpBKOQbTbNBZFB7bAIULsxVVsPpuFB3cBe3acQ/wEhXDoOMqQWHL2wo3k6q7iYhXxqmpLNBN\nfUwRkxCjuB9bf1vcjb0LgFf1pReXVihEQRBQeWVlnH1+VjF+T/QeVAyoqLBEAHY1SbwkOP7ouNqz\ncglxgchdhAH7B6jtT01Phf9Vfxh5G8H1lKvaXPL3N0Vs0uiLfegQUL8+FNd25dUVDDo4SCO+8e4d\nf6bxmfo5Q5aBy68uw/WUKyoGVITFMgu4nnJF1IcoZMWkSf8ZF/Hy5flrBQz8PCWxioiCiLOhu2du\n3XI77r+5/ZuVhKqP/ldFsWLA2rW5j5Pj9GleMaWlsQJ48wYIDlb2pr50CaheXTm+dm1l3EH1GDna\ntAH27ePX92LvYfzBmdCZbI1KK+yx+OJivIh/gZgYPk5VmQgCULHWR4zY7Imyvso4wpqNSXB0VL/m\nadOAUqbv4ODXCrb+ttgVtQsyQYbz59lFFBfH4w7ePwhTH1PUmeMMp65JUPV23Hj0EiIXCUos1FO4\nSwQBcHYGrLqvgcVSK7yIfwGAFw9W1gLKuLTHjJPzFPe+cqWAQpMrwbLpObi6Anv2AK6HlmHQnnG4\nf5/7I09Z9BhFZpZBaT0BLVqwMCxVfy9omgQkiWZLgoCCBQEQQSQCdIp8RW8/Hxh7GytcYgAQlxyH\nEh4lkCHLUOxrtqkZQp4ofX4B1wLQc09PtefVc09PTAtRZwuExYRB4iVRuK7kOPn4JArNL4Sqq6oi\nSZqk9t6Hbx/QfXd3VAqopOaykiM1PRV+V/1g7G2MPw/8icYdn2HbNo1hGvGNzvPWY8jIJM2BmYh8\nHwnXU64wX2aOaqurweuSF2ISYiAIHOy+cyfbQ78bffowoSI/+FlKYnPmtkl1y+24/+b2b1YSgNJH\n/6uiYkWgW7e8j5dKecX77h3Qty8rmNRUVpaxsewyEIuBFywvMX8+MHmy8nj5MXIs8n+LWmOXodba\nWjBbaoapf09Fy763sWqVuj+6Wzdg9Wp+ff/jfQw5NARF5+nBauJgNcGYnMznf/qU/3/46SEcA8ZB\nVOwTzB23IUWq7jQePx7oNfgT+u3vB1t/W1x8eRGpqYC9vZKpEvIkBIUWFIK1VxUYmibh5k3l8ccf\nnkDxuaYoV/sJbt1S7l91JRDiWTVgWiYNixYB798DZ5+fReWVlXH+vIB589hS0O8+CyU6zIelJQfy\nx4wVoDenAqo4XkD58oCZGSsKMg8DFYkDdRwGKv4ORRpsZCXRYTzI1QBFBnVF5JuHave2KnwVuu1W\n/3B77e2FnVE7Ff8npCZAb4meIkANMAMsq9sJAM6/OA+Jl0RhpcnxIv4FxF5i6C/Rx6NP6j8GQRCw\nK2oXjL2NtVoVAJCYmojBm90gmm6AMUcn4MO3DxpjALaEjj0IRpEhnVB6kQGmhUzD28S3WsfKx597\nfg7DDw+H/hJ91A1oCcM/AhGf/CXbY74HaWmAgQHw+nX+jvspSuJX2P7tSkLuo/9V4ewMSCT5O6Zn\nT6b+7twJdOjA+7p3BzZt4teDBnFQHwAiIgAbGyhW5bt3A81bJ2Pr7a1ovbU19Bbro1DPITgQcVqx\n4j11CqhaFWor+dBQoFyT6+i2qxskXhLMOzcPzz98gr6+5o/TxQXoPfwNRh0dBbGXGB4XPDDHXQp9\nfcDTU31s0K2DKOBiik6rnNXYN9ev83OZfWA9RO4i9NvHnNuDBwEjI+DyZVZWEi8JLr28hK1befzc\nucCLz28h8ZLg9rvbuHULGD6cBb3N2Ilou2AxQkJYiX74AIw/NANjdy7EunXAyJFs2Vj38YWxc2eI\nxYCpKVCiBJRupuLvQRaXUKTPIFYSzRagoMErlCoFzJihvK+0jDRUDKiosfLvu68vtt/Zrrav//7+\nWHdjndq+PdF7UGFFBUgz1OM+gbcCYetvi7jkOLX90nQpaq+tDd35uooguiref32Pbru7abUqvn1j\nAsWWfR8w8cREGHgaYO6ZuUhITdCY5+BBoGFDjm9MODEB+kv0MeroKDyNe6oxVhUp6Slo47wPFd27\notTiUui5pyeOPDiiZmV9L86e/b44xw8pCSJyzfy7Qsvmn9vE/83t364k5D76XxUvX/I38d27vB+z\nbRvQuTP7hEuW5B/5li3KIPWBAxyABljQV6jAdNnHnx/D+cQUiFzFaLq2PXZH70ZyWjIGDlRnOclk\ngJ0dHyMIAkKfhaLVllYoOM0cE3b4Knj1APuBVZ9/cloyppyYCZ3pBuixdprC/56ezpTf4sWBe/fY\n1TH00FDY+tvC/9BFmJmxJaSK4etWgNxEGLvbXW1/cDBgYBYPo/l2WHdDmSjz5g3g5AQYdJ+NJovH\nqeWAxMUBdksaoce0UDRrBpibA4aGQAnHhRD3dcGgQczMmjYNsC6fjCLT7KDXYB9MTNi1pBqL0NVl\nCwNEKFmSrbgSJdglF55pVLmfdYfjDkcNhpDjDkccun9IbZ/fVT+MOjpK43NutqkZdkXt0tjvHOyM\n1ltba+QtAEDXXV1RYF4BhD4L1XhP1apYeH6h4tomTWKmnRzP4p5hwIEBMPI2QsC1AEUgWiYDGjdm\nwoUcH759wKzQWTD0NETffX01guVyJCQoXZ2fkz9j7Y21qLe+HiyXW8Ljgke21nj9NbEAACAASURB\nVEte4OzMFnN+8aNKomPm38FENEhlG0xEg3Kb+L+5/duVRHCwUiD+qjAw4NV3XvH5MyuHpCQOxu7e\nzfv09DhOk5rKiXoPHnBQcbj3YZhMawuJlwQuIS4YPeMpnJ2V8129ytaGamxn2TIBzUYcR931dWG3\nwg6BtwKx1FeqSNyT4+1bXsFfvw5cfnUZdivs0GtvLwQdi4GFhXqyXlQUC1P7uu9Rb3199NjTQ6Fw\nZs0CHBxYmACA/1V/iNxF6LPCE8bGPL8qOm8eAOOho9G8udK1BQCp6VIYeJig/YB70NMDhgxhq+vG\nrQyU8CiB+BQlG0oqBZYePwT7xe0wYAA/v169WNGIa1yBjqsEpWzvaASsy5RRKgkbG76n4sX5mVeq\nBOy8vR/G3sZ4naDp/zBfZo4nn5+o7bv86jJqr9NcCu+9uxdNNzXV2J8uS0fzzc2x5OISjfcAoN++\nftkqCgB4k/gGddfXRa+9vRByNglmZvz9yYo77++g0cZGaBLYBI8/P8bq1UwUSdfUTUhITYDnJU+Y\n+Jigw44Oai5IAFi5ki3grLj59iaGHx4OvSV66Le/Hy69vKShWHOCPM4REZHnQxT47W76lyA29tcP\nXnfvDtja5u8YR0cO1O3cqUx2GzQI8PLi15NmfkBDVw9YLrdEnTX1Uaz+Vrx4zf7oFy9YMX3LNAgE\ngX/8e/bw/5dfXUaDdU2gM6Ey1l3ao3AJfP3KiXuqFFkA2LglGYb9psDE2wT77u5T7B85kl09qhg9\n7TVEVhfRdPYCNWEgCJz70bQp4H+JXUxel/hmDh/mOMfKlfw5H3lwBDZ+NkhI/gYfH7YIpk4Fnjxh\nWmmLzbxqePcO8PMD/vwTsKkXDdFEW5iYcBzLxIRZSXa1Y1BkjgSLFwtwc2MLo317VgLixgdANiEg\nyV2FgihYkBWqkREAIpQty4qhQgWgeo0MGHb0QbG5xrjx5gay4sO3D9BboqchBJPSklB0YVEN11Ja\nRhrMlpppZQk9j38OQ09DBXMqK+SK4sqrK1rfT0lPQe9dA1B4Yk1s2PtS6xiAFxnLriyD/mJDFG/p\ni+i7Of/QUtJTsDJ8pSLx8cHHB5BK+ZldvJj9cXHJcfAN84XdCjtUW10Na66vUeTU5ITwcFYS+dAr\nCvxWEv8i/OrB64sXmYMvleY+Vo5jx9gPK5XyCvbePeDqVQGmdS+h775+KOWhh8I9huPSU47yDh/O\nrjk5unUDfHyU/4eEAFZ1otFxRydYLLNA4K1ATJmWgd691c8bGsqCVE5/lFsPZhN7Y/IsdS5vQgJg\nZaXM29gRuQOGi41Rpf47lCzJyYCqyMgA2o0/AXITweW4u9p79+8zPbNx688w9jTDuefnFO89f85u\nIrEY0P+rKf7asBevX6sLjpAnIWge+AfevuXxb9+y6+PvvwWUmGWD4nbh6N2bg9kWFuxuK1YMEBX5\nAhpTBdTXCVT0I0zNBFhYsNUBIhQtChiI01Gq/n4UHFMXuiOawrTyE61lJwJvBaJjUEetn6ext7HW\nILDbWTdFAl5WrApfhbrr62p1OwHsetKdr4tncc803vv2DWjYSEATV2+Y+pji4svsJbhMBtR3fATr\n+UqrIjckpSVh8cXFEHuJ0XDxCLTolLeosiAIOP30NLru6gr9JfoYf3y8RqBeFYMHKxM484vfSuJf\nhG7d1P2kvyKKF1fmN+QFGRm8qg8PB2bOksFpyhE02NAAhaeVw8jA5YhLjkOnTkpGUnQ0r37l7p/o\naHYTffnC7JhBBwdBd6YEPZYuVTBgkpNZWO7bp37u0aOBAUOTMeXvKTDxYevh7VueP6tb6NQpwMQs\nAyN3T0dZ37KIfB+JpCRWcCVKKK8P4OvQna8L+1mDUK6cZumGjAygwcIxKNxtLBYt0swvufEqGnoL\nzNC6XRoMDdla6NCB2V09Zx2B7dwOmDqVXUrlyvH5GzUCWs9bgnoeQ2BhwUrC2pqVgCIWUTAZVGMj\nqPAX0ERbFBzYATodxwBEKDKyJXRm6KHY+Mao2GMnevaSwdqaFc369erXV3tdbY1cBzmsfa21Bn9f\nJ7yG/hJ9JKYmarwnE2Rovrk5Voav1DonAEU5DVVWU3IyU58HD2YFcOLRCUi8JIps76yQu5lSpWxV\nGHoawjfMN8ekOTlexn5G8c4uKL3IAK6nXDUC7jkhJiEGc87MgbG3MTrt7KTB9vr0iZl+WWNZecVv\nJfEvwpo1mgXnfjUMH84r4fxg0eJ0NBm3HRX8qqDAuBrYfH03AjdloHlzXkVfvcqr/uRkHj9okLoi\n6j/kGxrMmQ4DTwPMDp2NM5e/wMxMGRcAmEVkYqL+Qzz14AoKTq6Apv691bJxt2/n4LT8fAAgzZCi\nlmc3FB7VDLcfKcd++QLUqsWCevFiZueIvcSovpqTPA4dYmbRpEkcewE48G7oaYiwO58weDAL8gED\n+D4FAVgethxjjnGdFkFgt9r+/Wwx/Tn/KMq7O8LLC9i6Fbh7F3j4kN1UBuaxKDhbD469X8PYmN1X\nhQrxtXGWNW8mJgIqN3iJAlUOQKdeAECEOn2D0arzB3TuzKwfAwMmFQwcyBau3Fo6/+I8yvqWzZbN\nY7ncMtvyFk03NVVkbWfFzbc3YepjqkYmUEVKegoMPA1Qa00tAPzZNmvGVGjV2MKDjw9gt8IO009N\nV3OHPXnC38t7Kov5R58eqcUqcsLs2XyumIQYjDgyAmIvMfyv+mdr/WhDcloyAq4FwGq5FZpvbo6/\nn/wNQRD4c/0zz9No4GflSVgQ0UEi+pi57Sci89yO+29uv5UEUzBVM4t/RXz+zAIpVHusUQ0p6SlY\nFb4KlsvKouDwptgaFox+/Zn7n57O/nG5i6drV2WcQh6LePdOwJ7oPTDztkChPv1x/YGSoz98OMcS\nVDFlCq++pRlSTAuZBhMfE8zdtVfN7QSwYB4wgFfvaWl8nR12dECXXV2wxDsV5cszm0uOb984BlGi\nBGAwrQH0l6iveD99YuVva8vPpc/ePlhwfoHa+97e7O+2sQGsJvdHT4+NCA1lpZaSwtcklQKH7pyG\ng38LrFwJDB3KCYdiMSuJbdsAg25uMBzdG6VKCShalBVFwYLqSsLRkZ+PvT1/30CE8eM5IFulCltS\n48YxmaB8ecDNjS2xiVOSYedfAXvv7s32M5V4SfDuq3aK2+STk7H44uJsj+29tzcWnl+Y7fvP4p5B\nd74uemwdhlq1uN6Zthjex6SPqLmmJpyDnSEIAt6+ZYtL1dqTQx6rMPQ0xIprK7QGmyMi2FpVpUhH\nf4hGi80tUH11da1U3ZyQlpGGrbe3ovLKyqi1phaMW+zFxcvfT6H9WUriNHHbUN3MbTARncrtuP/m\n9ltJMBwcgDNn/tdX8WOoXTtnvndCagKWXFwCEx8TdAzqyKUQXFlwPX3Kgi02lt1DNWqwILh3j4Wh\nXJgP/Os+ysxohSqrquDc83Nwd2fhJ/+NJyTwCli1EGByMmBTNRaVvZrBKcgJsd/YrBg9GujRg91A\ncqSlAR07Aj36JqHVltbovbc30jJYey9fznM/VMk5S00Fqo7yBk2yRmnLFwgO1rzvgwcByzp3UNDV\nFH6rvmkUh5PJ2DIwXVQRfSffRqNGLMQLF4aCslrc/Al0XcwxbBiwahVw7hwQEMDKwtYWaNw0DVT8\nA0qVi0aZMmylqCqIokVZYE6fzgrTwgIAEebNYwtCImFl2qMHz+ntzWP8/YFy4yaj1LBeGq44OeJT\n4jUys1Wx/c529NjTI7uvhcLCUmVuZX0+w72OgtxE6Oe5Jccgb1xyHOqtr4fB+0bDvopMLY6lDY8+\nPULNNTUx8OBANQUvlfJz2LxZ8xhBELAzaifKLC2DgQcH4v3X9zmfJOv9CDJMXHkYJZ3rw26FHTbe\n2qgR9M8LfpaSuJOXff/L7beSYMybBzVa56+I0FAWTFnpiPEp8ZgdOhuGnobov78/It9HKt6Li2Ml\ncP8+Zy87O7PAr1NHmWQ4dCgwYcpXuIS4wGCJIUq3XY7TZ1hwp6WxQpEn4gFshVhaKuMXd97fgekS\naxTvOBPv3iuXoMnJ7LoYNUo9SPw5IRl6k/5A2b8GICVVXfAFBrL76uBB/v/m25sQuYvgtnM/zM05\nWNyvnzp1FgCGHR6OIYGL0KULK4Bx4zh4L88vSUxNRLFFxRQKSQ75dQmCgNIeethx6APGj2eLqksX\nYNkynq9IEcC29jMUcDVCiZrHUbSoUkGIRFz2oUwZfpazZgGVKwMggrc3W0LyAKqpKWeKSyT8eZZq\nsxxGC22xZttHGBlxeXt5oULF5/4sFI02Nsr6dVDg/sf7KOtbNtv3AaDf/n7wDfPV2P/4Mec2NG4M\nDAiagMILCmerTOR4+joBxSc0QvVZoyGT5U4bSkpLQq+9vVBvfT1F5vicOWxR5qSQElMTMfXvqRB7\nieF31S/PLqiUFP5+Xrwo4Ozzs2izrQ3Ml5nD76ofUtNTc58gEz9LSZwhogFEVICIChLRn0QUmttx\nucxpQESnMsuPhxCRXjbjXhBRJBFFEFF4DvPl+aH8f0ZEBK/0vocK90+Cqakyizo5LRlel7wg8ZJg\n6KGh2Wa1LlnCNNr371n4PX/OVpWVFddbCgo/AZ0pFmi39k+8TXyLI0fYPSOnwMrdAjHKunSYMIEt\njL3R+yH2EiMoMgizZ3MAU7WGU0ICWz8uLpmunQwpHHc4oseuPmjbLgOdOvGPWhUXL7I7pk8/GcSe\nRmgS2ITvN5kVXbFinAcydSpfU3xKPPSW6CkSrl694kVBq1Ys4MuUARr1vQAzt7pYtowthVWrWAHM\nncsxgjJlgILDWqJ6jxNwc2MFWrcuoKPDpVEMDLgmlmH1MIimGUFUYzOIBBDxmHnz2E1TowYHpOvV\nA0CEWbPYEtm8mRVHQAAHhT2902HSZy4svMvBrNIL+PqyQuvShd1Vu3Yp2Wxel7ww8cTEbL8TMkGG\nkh4l8TlZSzJDJi69vAS7FXYKt8+bN3zvhobKkvIymQxmS81Qf339bOeJieHn4TInAfXW11O4nnKD\nvLS5+TJzeAeFo0wZZpDlBXdj76Lllpaovro6It7lnvCwbBlbq6q48eYGnIKcYLXcCltub8lTJvfP\nUhLWRHRUJSZxmIgsczsulzm9iMgl87UrES3JZtxzIjLIw3y5Pox/AwSBzfu72mnjvwwOHwZEIgGL\nT2yB+TJzdNvdDfc/5tz+KymJheDFi0xzbdeOn0e/ofGo6DIUVsutMCvwFCpWVArsAQNYIMuxcCG7\nTeSr3FSpDNaD3VFyroWC8y8IwLBhnJehKvg/fuQyHpOnpKPrrq7ouqsr0jLSIJWya6ZhQw6AZr3m\nKjNGgGYXQdBedf/RtWt8D4ULcwDZttt2tAzop3UBIAjsahu5dh2qzx0CZ2d2g40axVbV7Nmc//H0\nKTD5uCuaTvWHWKxUDjVq8NaypZLVVMgiEjTWHtSrC3R0pRgyhFlQhw+z2+noUeCPPwAQYehQoHdv\nznivXJkLMFrUuouKPnVh4vIHOvZ7i+fPWSmOG8e5JocOcQKoiQlfX7tNXbH19tYcP+O66+vi8qvL\n2b4vCAKqra4GnwOn0bMn38fo0WxJqCLqfRRE7iIE3tKshhcayr8hOTU6PiUeNdfUxIzTMzTGZgff\nkwchchVj3oH80Q0FQcCmiE0Qe4nhdtYtW/dRQgLHfqI0U0cAABdfXkTDjQ1RZVUVHH14NEcF949l\nNxHRAyIyznxtQkQPshn3nIgM8zBftg/h34axYwEPj//1VXw/BEHAvrv7oFttH0o13qZoSJMX7N/P\ngujLF6BmTcA54ATMfMxRvPcoHDnJS/8ePZSZ3XFxLBDkbh+ZjIPcw4YBialf0X13d9ReXR+Wld9h\nq4r8ysjgQG2nTupuk8+fAZNBzjCb3hrJKgkfGRm88hOL2T8vD5jK3Uxz9wahfHlWJlmzZt++ZSFa\noNR7FC79BXp6QPPmXM789Gll9ViAS4Wrrsbl7KZt27jkhJ0dUKBoIqjEe3TvIcP06XxNffqw0KlT\nh/NNSpQAChQAqEAqqNoWkPg+Buwai+Jlo3DhAvvZFX1MiNC+PRMDJk4S4Lz8PCwm90aJBQYwdVqD\nuDgBdeuyFRIXx4rZxobjIQAvaIZNfA/RdD04dovHypWsILNaXgDQcktLjTpQANefOnGCz2HcMQCl\nhvRDQIA6Qy0rJpxQdzslJrJCMTfXTJT8mPQRFVZUwPqb67XMpHktNjaAx4ZIlPUtC5cQl3zXZnqd\n8BqOOxyztSrGjWOXX04QBAFHHhyB/Up7NNrYKNsckJ9lSRQlovHEJcMD5Vtux+UyZ7zKa5Hq/1nG\nPct0Nd0gohE5zJfzE/sX4dw5zn79FV1Ooc9CUWddHdRcUxPLDpyDSCTku9RAnz7AmMnx6LJpKHT+\nssKOsFM4cULpdvrwgd1Z8uBweDgLysjMEMfXr0CFes9htqAaBh8ajNT0VERHs/A8pFJuSCplhdKm\njdJltfHWRpTzK4+mbePQrp1m0b+HD9miaNqUrQqr5VZouKEhALYqPDxYaTVowIJdLihfxL+AeLEJ\n9u3PQP/+rAh1dTmGUKAAr5jLlAEMav8NvfoHFdnUhQrx+wUK8PsdOnA8QDytEYrXOowePdhdZWfH\nq/oyZZhzX6gQ1LKrx039hLaL3VF0lhnE821gPa0nuvkuRN1xTIE17j0XDVY4QXe6Kez8K6Joc3/c\nf/4FXbtywT85Q8jPj+/nyBE+14QJ/OwWXViEwftHIDCQFXSNGmytVK/OwnDhQmDpUsDewxEjfY7C\ny4v9/Z07s1DX02OrxsUF2HPyNQw8DTTiMlkhk8lg4mOCNlvbIDSULaihQ9WZamqf3aeHkHhJcky4\n+/SJrUk3N/7/Y9JHNN/cHI47HPElJX9VX+VWhcRLAvez7gqr4uxZ9dLyuSFDloEtt7fAarkVnIKc\n1GJ5wM9TEvuIaEGmwB6UGUvItcBf5rgoLVunrEqBiOKymcM086+EiG4TUZNsxsHNzU2xnVVtWvwv\ngyCwkviVHsHtd7fRemtrlPMrh51ROxUJSg4O7A7JD/bfOg2dqebovH4UZs1LRNu2vHIfOZJjFjIZ\nu6QkEq7rBHBuQ9my7DK69PISJJ4mKNl6OfbtU2raGzd4tX34sPJc6emcd9GwIRB8l5vi3P94H1Ip\nr/QlEvbTqypsuVVRot4uiNx18PyjSmOLzDkPH2blI5EArq7AX7tW4M99g9XGZWRwMmBgIK+A+/UD\nKv9xA7bNr6BPHxZ4y5Zxv+N79ziGULs2C8OeC7eiskcbGBuzoDU2ZsEskWRmWGcymgwM2KpIT2fF\ndO5CBrqPuo9BS7ejlacL7F04ma6Y02zsityHkpbP8eaNgNGjeVX//j0/s/BwtmisrZU5E3FxnEdR\ntlwGjDwsceut+mogJYUtilWrWNE4OwNW053gOPkwpk7lWMPu3axssy6Iaq+rrdbEKDvsuXkS5CaC\nSaUnGtaDNpx8fBKmPqZ4+UWzhEdsLD9DeVxKjrSMNIw9NhYVAypq1KvKC1StivDn0bCxYbJCfpGa\nngrfMF/ojdZDtV7V4OzqDDc3tx8u8Fcw8+/tzL+RmX91iehabhPneFJ2N5lkvjbNzt2U5Rg3IpqS\nzXv5f2r/j7FihfZCYv80xKfEY/zx8TDyNsLK8JUaq79nz9hvnrV0hTaky9IxK3QWTH1MMWfz37C1\nZaHfsCGv7FJTeYU+j/vvYMMGXkHLV46urkCVTqch8ZIg+HEwbt1iAXfkiPIc16+zQJX3eABY6Qxx\nfokCLqbwPqQuaSIieDXcoYOmVaG/WAKj8d1hbMyr+5daSgc9esSU0pJjW6NQ9f2oWpUZRCtWcILf\no0ccwI6N5SDtrKPL0H/bJAQF8XHNm7NlYGXF34egILZWLMulQNfFAjW7n0K5chyANjXl+l/yDOsC\nBVhZBAaql02vUYMT9xYvznTbEaFgQWaI9enDyujOHV7tpqXxOStXZqH/4gVbFO7uSkE6fIMvio1p\ngSpVWCEkaiZVK/DHlj/UmhVlh3nn5sE5WDvNT55gOXAgWyB6syqi1uo6Wsdqw9IrS1FjTQ21xL3n\nz/keZ87M3oJfcW0FzJeZ5xpb037NAjbc3IAic8VoMG5jvor/ZUVCagLmnJkDQ09DLL64+IeVxK3M\nv+GZfy8SUdXMVf2z3CbO8aQcuJaXIp+uLXBNRMWIqGTm6+JEdJmI2mQz33c/tP+P+PKFfwBv3uQ+\n9n8BmSBD4K1AmPiYYNTRUYpS2towezYLrg85VFGOSYhB48DGaL21tSIZa9w4LlL3+jW7cPbtY2aN\nhQWXEQeAiRO5v7VUChx5cByFZ0tQp8d5RZzh2jVWFPv3K88VGckr4pkzWUEkpSWh5pqaGLDGCyYm\n3EZVnh0NQKtV4Rvmi4LzC+Kr9Cvu3+eMagMDjnGcPKme5JUuS0fxRcXx4csXXL/OmfUjRrBVYGvL\nwlhefsOw7WroDRiBbt2ARYt4rthY7lL3559QVIRdvBjQr30SRaZbQd8kAba2PIc8p0JuRcjbeHbt\nyslkKSnsBkpO5vtfsAAAEUxNmREUFKRk3LRqxdcqCGzBjR7N+9++ZaXUsydwO+YRDD0N8ejTY4SG\n8jh9fY6raQvKNtzYUKMntTZceXUFtdbWUtuXlMQLg1q1OGbg7c3uIXlcKGvF1uwgCAIGHhyIHnt6\nQBAEnDvHzz4vC5lNEZtg6mOqtVhhbjh4EDCpGo2K/vbot7+f1hIl+cHTuKfoGNTxh5VERObf4cSU\n1WaZLqdYIhqd28Q5npTnO01ZKLBEZEZExzNf22S6mG4TUTQRzchhvh96YP8fMWqUctX8T8LNtzdR\nf0N91F1fF9ffZJNZlQU2NryS1YajD4/C2NsYHhc81OropKWxn33aNHYVicXsepG/vnmT3SidOwP1\nBx+EkbcRLr4IQ8+ezCqSl9W4dYuFgJ+fcpUYG8txBaeOAroF9cafB/6EIAj4+JFX0+XL80pfFRER\nvAqvWl2GwvNKYNjB0Wrvf/vGq/AaNVgJDRjAgmdLcBTK+ZXP03M6+fgkmgW2QHg4C/Xhw3mFa2vL\nFOGVK1lA29ryX72Bw1C890iYmbHwl7uZGjRghZGQALW2reHhyrawEyZkCkYiODjwe3FxyvLt169z\nFdmkJJ6nUiVl1nJKCjBwkAzFxzfG3BPq0vX1a7b8TE35WYwcCaxbB9y4IUDiJdFaejwrktKSUGRB\nUew/lAo3t8z+Ggb898QJzUzreuvrwW6FXZ6eMcBZ9PXW14OT93wYGaknXeaGoMggGHsb4+bbm7kP\nzkRkJH9nw8P53kYcGQFbf9t8zZEdflRJvCaiv4hoirYtt4n/m9tvJaEJVZP/n4C45DiMPTYWRt5G\n2HBzQ54Ko8mhze0kzZDir5N/wXK5ZbalDT594ljDtm2cE2BlxULv4EF2G0VFATtu70GhmcZoNeAG\n0tJYcfTrx64aeXDw2TNWUsOGKdlMUinQYnIgCk2sjpOnk9XOu38/FFaFag0nmQwYvckXormFoGeQ\njokTOQFQFYLAn9369bz6Ltt1Ewr07oNKldgamDaNg7YeHmwRzJ3Lbp+hQ4EqdT+CZpRC1WoyDB3K\nSuHAAc61EItZ+U2YwFZDx45AaaMv0PnLCkXqb4aODkuDZs34WcuzhOfMUdKEV69WsmrkPSpABCcn\nZVC/ZUtl3KZnT75GgGmoRkZKVtO0EBfYLGgKQ7EMGzZoumnS0rhXuZ8fu4bsar8CTTWGQ20Bw4Zx\nwcKZM7nRzty5/FwmTGBFYGoKFBhfBfW63MCMGWxF5tTW81ncM4jcRYh4mzeWxNu3QJtub1FwujH2\nXAnL/YAs2H9vP4y8jfJkvXz8yN9hVRcnAOyM2qmoAfUj7qe8KAkdyh4FiKgkEZXIZvuNfzCqVSMq\nW5bo6NH/7XUIEGjjrY1UaWUlAoHuj7tPw2oNIx1RTl89dZQtSzRnDtGUKUTR0UTvv72n5pub0+O4\nx3Rr5C1qZNlI63GGhkRHjhBNnkwkkRCNG0f0xx9E9esT+foSNR1xmCYGT6CLo/6mol8cqEcPovR0\noq1biWrWJKpbl+j+fT7/lStEcXFELVsSvXlDFJv6mqJMXci74RYaNqgoTZhA9O0bn7dbN6KoKKK3\nb4kqVSLy9ib69IlIR4foePxS6mbfke5EFKSSJYmaN+dr2rqV6OFDdvZUq0Y0fDjR6tVETiNu0aJx\nDhQURNSiBZFYTFSwIFFiIlF8PJFIRGRgwNe6wV9MFhI9WrbpKbVqRXTsGNHIkUQyGdGMGURfvhCd\nOUNUrhzfl5BSmgrtCabURtNJqLSX7Oz4uuvXJxo0iCgtjWj9eqIxY/i+bt4kcnDg11+/EpUsya/N\nzIjevePXHTvyMyciWriQaOlSfm62tkQ7dhD17k005fBCOvH4OIX/dYDOhOrQypVE7dsTxcQoPztd\nXaJGjYgmTiTasoVoydYb1LaqA/n7iahOHaIyZYiKFSOSSvm5GhryOQYP5s/qzz8caOjsm+ThQdS9\nO4/P9vulX5YqiCvQlJApOX4PAb6HGjWI6lY2pS19VtCcm4MpJT0lx+OyolulbrSh4wZy2ulEt9/f\nznZcejpRz55EvXoR9eun/l6fKn0obFgYbbmzhfru70vJ6cn5uoZ8ITvtQZnupl9ho9+WhFbs3s3c\n9/8VHfZe7D3U31Af9dbX09qAJr9o0gQopp8Icy8bzDs3L8/WyLlzvJK+cIFXnpUqAduvnkCpBRIY\n2N/AjRtsGfTvz4wqedb1pk0cS5CzSWQypmOKJQKqLmkP97Psz5MzdaysOKFMtY7TtWtQVGvtMDwC\n5C7Ci3hllFoqZSune3d2M5Usya6syZOZddV8nRP2RB7U+AzlRfseP+bM5alT2b1WsH9XGDbbiS5d\nOCFsyhRewbdowQlv+vqcQ2JoyC4mXV2ATCJQwMUE5rWiYGiopN6uX5+ZYdDzOgAAIABJREFUMJcJ\nOzt2vwEcyzlxAgAR3N25TAfAbCNjY6VLZ+RIZV6KTJChlacLCjlXRsQTZSpyWhrHNwwMOAaVtRwJ\nAMwKnYU5Z+bk6fMGgAXnF+QrAW5X1C7ozNNRq72kiitX+HOpWpVdlnL03NMT00Km5fk8qth3dx9M\nfEwQ/SFa472MDCh6e2TkkGaRkp6CAQcGoOaamlpZV7mBfkZM4lfYfisJ7ZDJ2K+btRfCfxoZsgx4\nXvKEoachVoavzJdrKSdsjQiCqMIxmFV+nu8ufKdOscA/exYYuuA0CkyX4MD1Kzh0iBXIvn0seJcs\nYV96WKYX4coV/t/FRSk83Q8HoqhzTbTrkKZWxuPCBfbnV63KGcmqgv3TJ6Dc/JbQda6IWrVYAGct\n0icfFxLCbpru3YFC4x1QwPIadHSYnqqvz303dHSYgWRhwUltCxaw0HY5thDd106FkxMrgokTWYAb\nG7MrSSLhCrmlSnGehUjEc3Ts+xak9wxO64bhY9JHJCdzDoL8OTx4wO5L+T01apTZZY0I27ZxLEYO\ne3tmEAHs5jEwAC5EP0aTwCZoHNgYsxZ+QqVKmmSEFy+YUmxkxHkR35QEIrTb3k6jL3ZO2HhrIwYf\nGpzn8QBQ0qMkXELUe+hGRnLcysKCmV5ZBfaHbx9g7G2s0echr9gRuQNmS83w8JOy4mNGBi86WrXS\nnlSYFYIgwOeyD0x9TPNdVfZHlUSumc7/lO23ksgewcEsFLT15P1P4F7sPdRbXw8tNrfQ2g3se5Ah\ny8D0U9Nh7WuNU3eiULgwZ07nF2fOAKXtw1BqoRgTfM7DzIwDzDdvcrE0NzdWrEePsjCVs3M+fGCB\nXakScORcDMReYtx4fQfu7iwAZ81Srn4FgX3yVapAjdaZkp4CnXk62BW5G8HBHBMoWpQF6sCBnIl9\n+bI6MwoAzJaa4dWXV0hPZ6Xy6RPPl57OW2QkWzzjxjEbqYjdBRSZUhleXgJcXTk20qgRKy9TU75e\niYQD0zo6TEldtoyVxb5DyZh8cjJMfUwxwGM/unRVajkvL67bJEe1apnZ4US4do1ZQ3LMmMHxAvln\n187dD7qzDLH0yjJF9rGbG+fAaGPgRUUxo8rAgJlfN6IS1OpW5QUnHp1Am21t8jweAMYcGwMDTwNI\npWydNWvGz8zHJ2dhvSd6DyqsqIDktOTsB+WAwFuBMF9mjpdfXipiYi1aaH4XckNujZO04YeUxK+0\n/VYS2UMQOAibtUPYz4aq9bAqfNVPsx4SUhPgFOSEZpuaKZr7nD/PAk6e2ZpXvPryCuLFZtCreww+\nPsDx4ywwN27kxK+GDbnD35cvnIDm4MBJbS9f8nPcuVNAoSHt0XDGPEV+xcuX7E6SSFiYyH/YggA1\nWme9yV4oPL+YWhkPqZQV1Nq17JZxcFAqjj59gGHDZRC5FcAUFymmT2eBOWoUM5/q12fLws6OG9os\nXcrKbf16ASVcK6Fk1XMYMICD1cbGXMjP0JCP0dXl51e/PgecdXSYpivHieiLKDCxEir4VsfaG2vx\nVfoVTZqol6soWzazFhUR4uM56U5uZYSFAXY1P2DRBQ9YLbdC08BmqNjoIbZsUf88PDxYSamWTVfF\nixescEq0DIBkbE/4+TGJIC+IeBeBqquyocRpgVQKHApOALmJYGAfgebNud5VXokfP+J2AgDvy96o\ntqoGOnb/hrZt1QkP+YG8cdLEExPzVFH2t5L4DQCa3dl+Nv4T1gMAvEl8g6qrqmL00dEaiXYbNvDq\n19Mzb3MlpSWh1tpa8LzkiRcvmMo5aBDTYsuXZwGcmMirZQsLzjFIS8uMQYhZye6IDEKVgBoYPDQN\nEglz7eXPNDpaufp1dlYXfK9fA6bzqqP0+FYoXZqtoHXr2L+ftad3air7vLdtAwJWS1HAXRdLlnDe\ng7y6a2Agu81iYlhhenvzyrNkSWb3NJ22AkbjesHQkOM4pUuzpWRgwBaEri4rm3Pn2GU1YID6NcyY\nAQwdJkPIkxB02dUFeov1odtzEHwvr8TVmKtISU+BRJLpLsr87YnLJGDv9bPwueyDbru6Q2eGHpzW\nD1XQnOVVdrNaDmvX8v6//9b+uQmCgEoBlbFg21kMGcJjq1Zl5tiOHewG0+Z6fPjpIcr7Z08dTkjg\n+1+6FIpigPXqAaXdLdAxcEC2x2WH2G+xMPY2xq23t/J9LAC8eCFAf9gAWE3tiZSUHwsixqfEo+22\ntmi/vX223frkyIuSEPG4XxsikQj/H+7jP4nu3Zm1Mm3az5tTJshoadhS8rrsRQtaLKBRtUfli7WU\nEx5+ekjtdrSjUQ6jyLWRK4lEIo0xAQHMfvH0zPm+AFDf/X2poE5B2tZ1G4lEIkpKYiZMTAwzeGbN\nInr1imjzZmYiDR9O1KoVs3NiYogGDU2juy0q0pIGm8i5SzO6d4+PuXGDaOZMogEDiEqUIHrxgmjt\nWqLAQKKqVZnN4+gokHVgYdrVfRc1EXenY8eIzp1jttDz50RVqhBVqEBkaqrcSpUiyhAlU8/rhrS/\nVgrFxTGD6N07Zk1FRfH1VqnCjKNy5Yg+fiTauZPIwDSB7raxpuKb7pGVoSk9ecIsqIwMIkEgWrmS\nWVfNmxN16UK0d6/yWb17x3PeuUNkbs77lgfG0NawY+TQ8SbdfHeTHn56SCnx+mRjUZSeOj8lUx8T\niv3ylSoZVKMWFRyotlltenW6Ez2O1KetW5Vzu7vz8zp6lK9HjgsXmMEzfTrRpEnq751/cZ7GHB9D\nd8feJZFIRDIZ0bVrfMzNmzzf5898/6amzLQyNSVKLfaUAtNb0/SizygtjT9T+fN7/Zro/XtmkTk4\nENWpQ9S2LZGJCdG4E+No/7399H7q+3x/ZwPCA+j44+MU3D84X8ddvswspol/pdLB0s2oY4WONLvp\n7HyfXxXpsnQaeWwk3f94n473O06GxQy1jhOJRARA88elity0yK+w0W9LIlfcu8ersLwWBssNT+Oe\nov6G+j/degCAa6+vwcTHRGsp56zw92eLIqfEQY8LHqizro6Gz1gQOEAsFrNlImczubkxP33kSLbA\nNm8GfK+sQHWv9rCxYWaPnOUTFsYWhL4+5xPIy7SnpjK7rG9foLjDAdDcgnBzlyEkRL2h0rdvnA+w\nZQtfy8SJbGm0awe0aJUK0dxCaN+emVdTp/LKd/t2jnts3crZ1yYmUORRtG/PloN48CgUaTMfZcuy\ni6lQIXY7Xb3K1WMLFGBXWFaMHs3nUUX37urd1b6mpEBHLwYPPz4CiPA64TUGD03H2rXKMZ8/8+r8\no7Kld46d2p4/5zjH4MHqAf1ee3thxbUV2X20ADhOc+MGl1BZu5ZdZ8NdH0Fvji2mTuVOet7ebHmc\nOcPWR3Yxumdxz0DupNa3PK+QZkhh42eTp7pRAH//Vq/m75zclfcm8Q3Ml5nnK0if/fwCpp+ajooB\nFbNlPtFvd9NvqGLMGE4I+1Hsjt4NsZcYy8OW/7TYgxzBj4Mh8ZLg6MOjeT5m7VpWFMOHa753+MFh\nlFlaJsdM3Tt3mBbarh1ntXbowAIrNJQZPPWafEVBVxP47bqN1FRuqmNiwuOPHGE2yqtXnHhmYsK+\n/sWLWWEIAvDH5taw8a6GKVOYRlmyJPv0u3dnt4mqALt6lQVeeDhw8XIGRO4irF0nw7x5LMDl9Zgs\nLZnVNGkSl7GoUoUptK1asdKzqBUNmiZBMeO3KFKEn823b+yq0tHRdDEBrPBMTNSVWEoKny82Vrnv\n82feB0DhblqyhO9FFUOGaLoD5W4nbbGFr1/ZBVi2LLvTrsZchbG3cb4rqALcR7pSQKV8HwcAekv0\nMDN05ncduyNyB+qur5trgtvLlxzvqlVLM6Ey/HU4xF5ijYqt34vlYcthvsxcazmQ30riN9SQkMBc\n/pMnv+/45LRkjDo6CuX8yuW5pEZ+sO3ONhh7G+PKqyv5PvbwYa7x5OCg9PNHf4iG2Eucp54UaWmc\nQyEWs+9/+3YOqrZuDYwKmo9mfv1gb8/B7QMHWKBt2cJ+bEtLjhm8fMnnDglhq8LSkkuKFJpbGl2X\nL0BkJK9gZTIWDEFBzBqaPJk58c2acYC5Zk2+j3r1AN1ZBug7LBazZnHGuZ8fHzNkCAv0ihXZp96k\nCdNaHRyYIisWA4XazULhwR1x9iwLrFGjWJnO1CL/kpOZBbd3r/r+4GBmR6ni3j0OmANQKImDBzke\noorr11ngZ6WN+vuzUsuumN/Ro4CZZQr0Z1fC5uu7cv3stOHMszNouqnpdx3rtMMJVVZW+a5jZYIM\n1VdXx4F7B7S+Lwgc3xKLOd6VXWB8+53tKOtb9rssGm0Iigzi0jNZSp3/VhK/oYFTpzgwqy1hKSfc\n/3gfVVdVRe+9vb9rZZcb/K/6w3K5Je7Gfn9bvSdP2O0jFgMR9z/Dxs8GW25vyf1AFURFsbCzsmLW\n02L/WIhcDeHY/ymuX2fB3rAhu6EWLOCigTdu8Erd0JDzUubO5X0yGXDjVjrIndBx4BNUqMCunzp1\n2EU1bhwLio0bmXK5bx9vO3dyYNvdHdCfZY9mve+genVmPlWrxhTJQYOUrqWKFXl/yZJ8XSVKsKKY\nOTcVlQOqYNON7ahdm5XooWy8GNOmcdOjrBg7VtMaCA1lhQZAoSTu3lVRHCqoU4dZZKoQBH5eXbpo\nDzoDwKSjrrCc1g3WZQXs2ZP/hNAdkTvQZ1+f3AdqwcrwlSi+qPh3HQswFbViQEUNdlFEBCcn1qql\n7F+SE1xCXNB8c/Nce2PkFSFPQiDxkuDEIyVN7beS+A2tGDkyf26nzRGbIfYSY92NdT9UJyY7LL2y\nFDZ+NngR/+KH50pJAapVz4Co9Ct09vL+7nkuXGBlYNjfGa2WjVM0BKpfn5lHV6/yc9TTY2G9ejX7\n1S9cYJ++nR2ziWr0PA4dt4LYu5eVmLwq6969vKKePp0Ffq9erDi6dePXQ4dy/kX5+a0weFEwpkxh\n5WBvz0qgYUO2cszNeTMx4fMVK8aCXZ6otv9SBETlTqG0QSoePdJ+r3I3k6pLCWDBbG6u6Q7Zvp1j\nLQAUSiI1lZlTWVfGmzYp+5WrQioFGjdmF11WyN1M77++x6lTLFQdHHiBk1d4X/bG5JOT836ACt59\nfQdyJyRJ85mokAlBENBsUzNFvsKTJ/y8TEy4zHteabUZsgw47nDE2GNjv+s6tCEsJgwSLwmOPOAa\n+L+VxG9oRV7dTl+lXzHw4EBUCqj00/yjWeF5yRPl/Mrh1ZdXP23OOWfmwKyHN0QiAW3b5i1rVRs+\nfI1F8QV6qNvyPcqUYQshMFDZEGjSJHaNBAVx0NjAgAXazJm8Yr9xA2gfMAal3M3h5MRKRleXLY6q\nVXmenj1ZgPTvzy6nLl048c3aOpOu2nMwLLuuRdeuPKZtW1ZM5cuz4CxWjDOhixdnxfL0qfL6XVw4\n/mBS9yJaB3bQypvPzs0EcHC+fHnNVbyXl0r8QeW3V7asZs5DcjJbdtpiEB8+sEtu927lvviUeFQM\nqIhdUUo3k0zGY2xtOeZy/nzulsWEExOw9MrSnAflgEILCmF39O7cB2aDy68uw9zHGqPHZsDQkF2Z\n2jLsc8OXlC+wW2H3Q9eSFeGvw2HkbYSD9w/mSUkU/CGe1W/8kihVimmfw4YxlbJ0ac0xd97fod77\nelNDi4Z0fcR1Kl6o+E+/Dq/LXrTh1gY6P/g8lSmVQwW2fODWu1u05sYauh14m547i6hTJy6KFxRE\n1KlT/ubadDuQelXtSoGzjenOHS645+/P1NjZs4liY4nmzSN6+pQL1Pn7c2G6O3eI1qxhimZcz2uk\nr1uFrK2JGjYkMjbmwnREXHAvNZULuWVkcEG9b9+IrK15f2Ii0TlpdXojRFCxh3wfSUk8LiODCw0a\nGTFtdNAgIn19nvfhQ6I2bZjuGRBANGxkXeq4M52GHxlOgZ0D1WjKc+cyFbRHD837P3KEn1lW9vG7\nd9oL5tnZET16xH/lKFqUr23NGqYqq8LIiOjQIb7WcuWIKlVLJqcgJ2pt05p62fdSjNPRYYps165M\nLR45kqhQIaKxY4n691cWGlRFxPsI6lyhc/Yfbi4oU7IMBT8JVruOvEAmIzp5kmjVqob0zkpCsaVP\n0oMHHUgs/r7rKF2kNG3tspU67+pMza2bk1Fxo++bSAV1ytShE/1OkGOQY94OyE2L/Aob/bYkvgsj\nR/LqNOuqbFfULoi9xNh2Z9t/7NxLryyFrb9tnvoD5BXSDCmqrqqKrbe3KvbJZOymEYnYPZNdD+Os\nyJBlwNrXWiNA/+ULl+to147dPq1bc1xhwQIuxmZszCvntm05Ka2Ie2m0ne+J2bO52N6AAbwarlaN\naau2trySt7fnRkKtWrE1IafBVmh9EQVG14GREY8zNeXaRiNGsPtF1acvk3Ein44OWxmq9NNv0m9o\nuLEhxh4bq2CknTnD15vVzQTwd6JCBc2+GABbPIrS1Sq/vYkTmaKbFY8fs+WVXTLngQOAsXkSGq5u\ng4EHB+bKmBMEpvHKs9nHjOF7kbtxMmQZKOFRAnHJ38/37rKzS56D14LAyZQLF7I1VacOu9nWXtsE\nxx2O330NqnAJcUH33d1/qrv3xpsbv91Nv5Ezvn1jJo2PD/8vE2SYFToLVsutEPEub7X1vwd+V/1g\n42fzU11MALuZnIKctP6QLl1in3CBAhyPyZrpnBXHHh5DnXU5t7VMTORA86BB7PLR1+d+CmPGcCB4\n1ChA5FYAlR3PwsqKcxX09NiVJFcOtrbs+itZkgvuWVqyAqlVizdru6+gmcVQo1YaZs9maqy2YO/S\npexyKlqUs7K1IT4lHg03NsTAgwPx8HE6jI1Z2GrD6dPKlqVZ0bQpC2UAakpi9WpmXWlD9+7ZZ8d/\nSfmCCkuaoGj//rh7P39Fxl6/ZuFcpw4//759AZ/N92C9zCZf82TFzNCZMPIyyvZ9qZQD+JMmsWKw\nsmJGW7hKi4jktGSIvcR4Gvc023nyipT0FFQMqPhT3U4AfiuJ38gdL1/y6nTf0UR02tkJTQKb5KuQ\nWn6x5fYWWC63/ClBalXcfHsTEi8J3iTm3LN11SqmihYurGxBqg2OOxyxKWJTvq7h/Xtm8syfz5VD\nK9nLQG6EgqU+w8KCBVnTpsqtYUOmuVaowPGMggVZ2dSpA0XToKtXgaorq+HyKy1LenA8xNCQjx0/\nPvdCjt+k39ByUxuUGNUeC/3eZjuuWzdlJ7msKF+eE9IAqCmJ8HBWcNpw/z5bWFmTOaM/RKP66uoY\nd3wcNmyUwdxcZe584s0bzpmpOngtCvTqh/LluQaWtzcrtdjY7D/vrNhyewuKLiwKgBcDN28y40y1\nxlbt2mxB3rmTfYxkyt9TNCrLfi/kAf2f+fv8rSR+I0/YHfIEBSbYo+fWEZBm5LLE/gEcf3Qcxt7G\nuBd776fOq83NlBNkMs6qLlKEV9+jR6u7oZ7GPYXYS/zdVT3lePTpEUTuIqSkMPPp8mXOoThxggPe\nJ0/yij0ighVMdgJs5umZmH5quuL/9HRelZuasmupd++8B0VlMqBjFylq/DULRt5G2H5nu4blpdqy\nVBuKF2fyAwA1JZGSws80O7fS8OHM5gK4d7fHBQ8YehpizfU1imvYtInvS1uP67zCKcgJ224HISqK\ns7snTGAygL4+W3OWlqycu3ZlZTxqFDPCRo/ma+zTB6jpeB00VwfFizM5QF6t18+PrdJvOZdEUuDx\n58eQeEmy7VORX/xst9NvJfEbuSL0WSiMvY3RzzcA5e2EPPvs84uwmDCIvcTfXXc/J+TkZsoJUinH\nDQwNOWZRrx4zZ6aFTMOUv6f88HUduHcAhRcU/uF5rsZcReWVlfHsGccrdHVZGPfrp9mTITfMmcPU\nU6kUuP7mOuxX2qPTzk54m6i0KubO5RwObUhMZCWheNRZfns1aih7UGRFTAxbTGeiolFnXR202tpK\nq0UZFMSxkmvX8ndvAFtKJT1KZhuPSElhptXly8zoWreOLaYVK9jKXLeOKb4nT6dweY7P0h9u2tV2\nW9s8L2Byw892O/1jlQQR9SSiu0QkI6JaOYxrR0QPiOgxEbnmMO6nPLB/EwRBQMC1ABh7GyP0WSgA\nDjy2bZtzJ6zvwb3YezD2Nsaxh8d+7sTIu5spN4SEsBtBJBIgsjkDp94fcP0Hk8o9LnhAf4n+D83x\n8iUwcZIMOvb7QDoZsLbmwHl+my4BTCO1tFRXLKnpqZh5eiYkXhIsOL8Ar+LewdSUA7Ha8OABx1EU\nyPLbGz6cy5Zow8NPD+EwyxlF5qpbD9pw5Ai7p7blkztx6P4htNzSMn8HZQOdeTp57nudEw7eP/jd\n2d/a8DPdTv9kJVGRiOyI6Gx2SoK4x/YTIrImIl0iuk1ElbIZ+8MP698EaYYUI4+MhP1Ke7WgWno6\ns2vGj/95LU9jEmJgtdwKmyM2/5wJVZBfN1NecOzOJUj6ToO1NVsXxYpxGe7t2/OfbzH++HhYLLPI\n1zEymZK5Y2DAv1CJBLDruhsjt3rk7wJUEBaWmYmejcyL+hCFEUdGoPh8PUjG9MGFFxe0CvGzZ7kE\niAJZfntZg9fpsnQcvH8Qrbe2hsRLgklHp0PfKibbHhJq1xTFZU1cXPK+cOm8szPW3ViXt8G5oPCC\nwtmW18gPUtJTUGpxqZ9WYgP4eW6nf6ySUJw8ZyXRgIhOqvw/nYimZzP2hx7UvwmJqYlos60NnIKc\nkJiq6XSOj2dWjavrjyuK+JR42K+0h+elPDZ9yCcWX1yMDjs6/FRa4NS/p2LumbkAuIHQ8uX8PAoV\n4l9LiRLM+hkyhN0VqsXwsmLUkVGw9rXO9v2kJGbITJ7Mri4DA1ZMOjq8Wndx4bIfAJdFMfY2/q6Y\n0c2bTJvNWh5DGxq1isfg1X6osKICqqyqApcQF+yO3o2ncU8hCAKCgjgGokCW317YtQzYNYrGlttb\nMPHERFgss0CDDQ2w/c52pKZzxyUPD04izAs+fWIl7eiYeymZl19ewsDTINceCnlFkYVF1JL6fgRd\nd3XNd4mYnJCSnoIKKyrkqxBmVghC3pTEPzmZrgwRxaj8/5qI6v2PruX/BWKTYqlDUAeqYVyDVjut\npoI6mh+/nh5RSAjR/7V33mFRXU8f/x6aFQUsyIK9Kzaa3WCNRsUWNUSjJmIlxiS+iRqTWBNRY2yx\nRE3UiL2j2BUxYrBgRYoNG6CCgIKAlJ33j8Mq4Ja77N296O9+nmcf1917z5lddu/smTPznY4deSHU\n9OlFmytXmQvvXd7wrOGJ79qI2MQij6SMJCz8byFCvghR22uiqOy/uR/+/f0B8KK3r7/mN4D3Idi1\nCzh5kt/8/XkhHGO8iK5MGf7+2dry/8dUc8AL25po3Zof9+IFkJzMC+ZevQKIAHNzoFIl3t9hwgSg\nf39e3FaYBhUbwLmyM3ZH7sYnzp8Ifj3XrwMffcR7XHyko3YqIgK4E26Dk4FfwdJyAk7fP43T909j\n8/XNmHR0El5mvUTFbBeUqlUPk46UQinLUpgD4Nsj3yItKw03Em7g6uOrSHd1wIEoN3hUdUWAdwCa\nV2leYJ6vvgLq1uW9INzctNtUoQJw5AjwzTe8H8q+fQWL9fKzOmw1Pmv6mWiFn2bMDJk5maKM5VXf\nCwHRARjWbJgo45W0KIn5Xedj6omp6FGnB8zNzPU6PzMTGDtW2LFGcxKMsWMAqqh56gci2i9gCL26\nCM2YMeP1fU9PT3h6eupz+ntPTHIMPvT/EIMbD8asjrO0XlgrVACOHeNNaczNeXWxvkw5PgXZudlY\n3H2xqBdxFX5n/NC/QX/Uq6DhilEEohOjkZqVChcHF7XPOznx6uaJE988plTyiuvwcCAqCrh7l1ck\nZ2cDZuYEmPGKYAsLoFEjXk1dvz7QuDH/v5WVcPt83X3hF+KHwY0HC3pPr1/nzXSWLOHNhXSxciUw\napTKJoYPanyAD2p88Pr5J2lPMG52GKh8DBysM5CRncHfl3JOKGVRCt7O3mjh0AKd2thg0qdASw0/\n6cqU4ZXeU6fyz5kuLC155fjq1bxqfeZMYNw4XomtIi0rDWsvrcWpEad0DygBPev2xMTDE5GZk4mS\nFiVFGbN3vd6YFzIPm65vEux8Tp06BX//U9i3j1f/C0LXUsOYN2gPN7VCwXDTVGjYvIYcbtLK5fjL\npFiooD/OadhR1EBcHFGjRlxoTp+IzoYrG6j2ktqU+DJRT0uF8fD5Q7KbZydqtTYRF4Ubs3+MaOPp\nCjfpiy4Z6vyEhfEMoa0CoyWpqTxF9OFD7cd5exfaTFbz3fPx4TUe2sjK4vUWAQHC7FMRGclFFj09\nC+pUzTo1iz7d9al+g+lAzHATEVHbv9rSoVuHRBuPiOj0vdNUfVH116E8bWRk8BCm6nMhNNwkTq9J\nw9D0k+gigLqMsRqMMSsAgwEEmM6s94NT906h28ZuWPzhYvh6+Op1roMDb7MZGAj83//x8Iguzj06\nh0lHJ2HfJ/s0tkw0lJmnZmKUyyjR9J5UBEQHwKu+ngJPWrA0t0SuMle08cyYGeZ2nosfTv6AHGWO\nxuNCQ7mW1MqVvH2qEDZt4itHVctSTcTH88+FNlxduW6VNiwt+cpg3DgeghNKgwbAmTNAz56Ahwdv\nxfokNQFLzi3BLM9ZwgcSABHBylyPpZ4Oetfrjf3RQoIowmlfvT2cKztj1cVVWo87dw5wceGr3mvX\n+OdC8AJflxcxxg1AP/D9hgwAjwEcyntcASAw33E9AESDZzlN1TJeEXzw+8/OGzup0vxKr1Nci0pS\nEv/1Nngw32zVxKPnj8hxoeNrGWJjEJkQSRXnVzRIl0cdz9KfUbm55UQreiISJwW2MCoZak0ZPNu3\n8ywmIZvUKnJzeRMgIVLc9erxpkOvUfPd01Z5XRhfX16kVhRUqwpHn4n0qb+Gwg4DECsFVkXE0why\n+t1JdLn9q4+vUuUFlel55vO3nnvx4u3VQ35Q3LObxLrJTuJtVpzjFqRaAAAgAElEQVRfQYqFCroU\nd0mU8dLTuRy2iwtv1VmYjOwMcl/tTr+eLnqaphD6b+tPfv/6iT5u4M1A6ryhs6hjilVMV5hLcZfe\nqg3JzeWFctWra05z1cTWrbxGRMi1y9q6kEiimu9eRgaXrdBUeZ2f1FSe5qpv2ElFyP1Qsp5pT3ZV\nn5CPD9dyEoOMbF5M9ypbPAUCpVJJlRdUFl2zjIho6O6hr7PyiHh/jyVLuHMYOlRz0aXsJP5HmR08\nm2ovqU23n90WdVylkvcSUCjeVgf1DfQVXaWyMOcenSPHhY70MqtozWC0MevULNE0dlSoZDmMQf4q\n8xcveCV227b6V2BnZfF0WyGriNRUfvEv8CfW8N1r0YI3VxJCUBDXrCqs66QLVfXx1utbKSmJp23b\n2fFfztpSk4VwIfYCmc00M2wQNfTw7yFK7UVh7ibdJbt5dhT3/Alt3MhFJD/6iOtKaUOIkygOexIy\nIkFEmB40HZuvb8a/n/+L2na1RR2fMeC773gvir59gXXr+OO7Inbh4K2DWOu11iiZTAB/bVOOT8H0\nD6ajtGVp0ccPiw+Dq8JV1DFr29YGgZCUniTquADwY4cfcT/lPn4/sRFt2vBeEydP8h4N+vDXXzzj\nqksX3ceq9iOE/Ik7dABOnxZmg6cn7xWhSjUWyvSg6WhcqTEGNR4EW1vAz4/H21NSeAaZnx9PNy4K\nEQkRKGFeomgna8FN4YaweB0bNkWghk1NtLUeiia+c7BiBbBhA99LVJdOrTe6vMi7cIO8kiClUkk/\nHP+BnFc4G1XFVUVkJM9O+fzbGKo0vxKde1QEoR09OHL7CNVbVk9tdzUxcPrdSfSVFxGR+UxzCooJ\nEn1cIqLVAZeJTa5IUxZdLVLhY1oaF9MTKj8SHMx1nwqg4bu3Zw+XeBGKvmGnvZF7yel3J42f9ago\n3gbWzo4L/EXoqSmpSyq8qOyN3Evd/buLNl5yMi/4rFePqJH7E7KebUd3nqlpA6gByCuJ/w2ICJOP\nT0bgrUAEDQ8SpXuVLho0AM6czcZus09Q4sIUlEnxMOp880Pm46cOP6ktADSUJ2lPkJaVhlq2tUQf\nu6xVWZyPPS/qmBkZfEX306jmmNp8KbayPniWkaj3OEuXAu3a6S5oUxEXpzuzSUWHDsDZs7xeRAhl\ny/JVjZBsp/Cn4fDZ74Pdg3Zr/KzXrw9s2wZcucILHDt14redO4XZFPE0wijfI1eFK8LiwlQ/bovM\npUu8pqVmTeDCBd6xL/xcZfi2Go2l55eIZC1HdhLvOESE7499j+N3j+PEsBOoWLqIfRKLwG+Xp6F9\ni0r4qcs38PQE5s7lbTXFJioxCuFPwzGw0UDxBwcPNbk4uBglVFbbtjaCYoJEGy80FGjRArh/nxfL\n/fKJN7ydvfHx9o+RlZsleJykJGDhQmDOHOFzC0l/VWFnx1uS6kqFzY8q7JS/WLEwiemJ6LO1DxZ/\nuBjuju46x6xaFZg1i79fY8YAy5bx8NrUqfy9VCrVn3f1yVW4OQr0nnrgaO0IxhgevXik97n37/Oi\nwtatebi3Zk1ewLlpE9C2LQ8DjnUbi43XNuJl1kvRbJadxDsMEWHqiak4HnMcx4cdN1pdgjoO3TqE\nreFbsa7vOowezRAWBgQF8Q/wjRvizrXq4iqMbDESJSzEjxEDQFhcGNwcxL8gAEBLp5YITwg3eBzV\n6qFvX2D2bGD7di7nAQBzOs1BhdIV4L3LW2v9RH78/IABAzRLXKgjPh5QKIQf7+nJPxP64OcHhITw\n11eYlMwUfOj/IbydvTGk6RC9xrWy4rUBwcFc5oMxwMeHvx4fHy738TLfdTU2NRY96vTQz3gBMMbg\n6uAqaF9CqeSrhJ9+Apo14yu+ixeBH34AYmL4v4WrpqvbVEe7au2wJXyLeEbrike9Czf8D+5JKJVK\nmnZiGjVZ0cRolc2aSHyZSA6/OVDwveBCNnE9/ooVuYibri5pQkh7lUZ28+xE72SXn4+3f0ybr202\nytiBNwPJYpaFQWP89x/vXjdwoPp+1ERc8ruHfw8auH0gZeVkaR1P1dchVk919SFDiDYU1qjT8t3b\nt4+oWzf95iAiunSJf4Yu5cveTkpPIo81HjTx0ERRM+ju3CFavJi3nbW2JurZk2jqnHjCDNCDOPGz\n6Ih4E6mZp2a+9XhmJq8xUSnpOjgQNWjAs7XOnBGuhHv41mFqvqq5oPcJcgrs+8uMoBnUaHkjk2xS\nF8Z7pzd9c/gbjc/fv0/UtStvQHPkiGFqsmvC1pDXFq+iDyCA1mtb07/3/zXK2Nm52YQZKNKmeGws\n75pmb8+L5HSRkZ1BPTf1pN6be2tVQs3fIU4fOnVSkyqr5buXlMQvvFnafZZaVL0vHj8minsRR81X\nNaevD31t1BTrpCReM9Jp8nIy+6kMWVvzVNIBA/iPnsBAnlKakGDYZ3rxmZU02H80nTrFHYKPD08Z\nLlWKFyF+/jnvySFETl0ducpcqr2ktqAGX0KcRHFWgZXRwG9nf8OW8C0IHhFskk3q/OyJ3IOLcRdx\nZewVjcdUq8aX9Lt2cWVTJyceRnDXHUIuABFh+YXl8OvsZ6DV2olLjYNDWYHBdj2xMLNA+RLlsSV8\nC37sIEwpMSUFmDePy1Z88QUP31UQEEksaVESuwfvxqj9o9BuXTvs+2QfqpWvVuCYqChg717g5k39\nX0tMDP/bCsXWFqhTh4dM2rTRb65Bg/ieS7fPLyCpS3+McRuDae2nGS3FGuD2Dh4M+OceQqOUmria\nAty6xfdVwsKAxYv55n18PE+trVKF79EoFPzvY2nJhRzNzXmoKCeH31JT+Tmqc1/VcIBFy0DERnE1\nXFdXHvJq2pQrLxuKGTPDOLdxWHFhBVo5tTJ4PNlJvGNsvLoRS88tRcgXIbAvK1TGURwS0xPhe9AX\nOwbu0FmrwBjw8cdAnz68nqJfPy71/MsvPPNECOdizyH1VSq61u4qgvXqISLEp8XDwdo4TgIAPBw9\nsCNih04nkZHBNyYXLAC8vHhmTtWq+s1lZW6F9X3WY1HoIrRa2wrbB25Hu2rtXj//4498b8PWVr9x\nX73iF7maNfU7r2NHrv+lr5MAgPofb0YUTUSHmNWY9k0/4VpDBnLm4RmMdx8PMzP+Wa1fH/j004LH\nZGYCjx+/ufgnJXGHkJ3N/zU35w5DJSGvciYODkB0qgLjD8bj3zXGew0jmo9AnWV1kJieaHgyi66l\nxrtww/9IuOngzYNUeUFluvH0hiTz6wozaePlSyI/Px5rHjVKvbRHYT7b/Rn9FvJbkeYTSuLLRCo/\nt7xR59gdsZssZllQroaeo69eEa1ZQ+TkRNSvn/45/Zo4dOsQVZpfiX46+RO9ynlFZ8/yymZt+lua\nuHGD5+K/hY7vXkAA73aoD8kZyTRi7wiqtaQW/XfnGjVuzHtQm4K7SXd5b2sRu8gV5uHzh+Twm4PR\nxlcxYu8InQ2/IO9JvD+EPgylivMr0tkHArUORGZ3xG6qu7SuwZIYSUl8I87Wlsd6T5xQH99NeJlA\nNn42Rt+Uv/7kOjX8o6FR58jNzSWLWRa088bOAo8/fMj1lqpUIercmSg0VPy5Y1/EUq/NvajJ8qZU\ns/Ul2rKlaOPs2UPUq5eaJ3R895KTeTe/VwIlkAJvBpLT7040/sB4Sn2VSkR8c9nenrd1NTbjA8eT\n/QJ7o86RlZNFlrMsKSdX5GbyhTj/6DzVXFxT6zxCnIScAvsOEJUYhT5b+2Bdn3VoXbW1yedPzkiG\n70FfrOuzzmBJDFtbHm+/fx/o3JnnxDdsyAu7UlLeHPf35b/Rt0Ffo6f1xqcaN9QEAGZmZmhcqTFW\nXVwFpRI4fvxNB7rkZODECf6YpiY9hqCwViDgkwBUj/0OcZ26I9h6PB6nPdZ7nJs39UuXVWFjw8M1\nFy5oPy4qMQoDtg/Alwe/xD99/8HynstR1qosAKBWLWDzZh7yuXNHfxv0YX/0fnSr1c2oc1iaW8K2\nlC0S0hOMOo+7ozsqlK6Aw7cPGzSO7CSKObEvYtHdvzv8uvihV71ektjwU9BP6FO/D9pWayvamNbW\nvLr22jWuBfXffzzePXo0zwXfdH0TRrYYKdp8mohLjYPCWo/k/yLSp9YQBMecRcOGwKRJvGPcgwe8\nuKtRI+POfeECw4W/huLyqAiUsSyNxisaY9qJaUjOEN7IITpa+F5SYTw9ua6UOh4+fwifAB90WNcB\nrRxb4cb4G+hYs+Nbx3XqxLvZeXkBz58XzQ5dvMh8gUcvHuHb1t8aZ4J8KKwViEuNM/o8I1uMxObw\nzYYNomup8S7c8J6Gm5Izksl5hbNRpLGFcjn+MlVeUJmepRsoqymAx4+JfvmFqHqzGDKbXInGjs+h\nw4d5/rix+P3s7/TVwa9EH1ep5PpW8+ZxddayNhnEppvTzJ3bDEqf1JeMDKKGDQt2qLufcp8+3/s5\n2fjZ0OiA0XQl/orOcdq142qtbyHgu3fsGO/7oEKpVNLJuydpwLYBZONnQ1OOTaHkjGTNA7w+j/ef\naNeO606JzbgD48hunp34A6uh84bOdOyOAOldA4l9EUu2frYaa2cgh5veXTKyM+C1xQtdanbB922/\nl8QGJSnhe9AXczrOgV0pO6PPZ2/Pq0i//XM/+jbqhZrVzTF7Nn/844+Bf/4BEvWXKNJKjjJHtO5j\nOTm8onfSJB6a6dqVh9V++glIfFwSHWt+gC2Pp5ssSwcAZszg4bxBg948Vq18Nfzd529E+kaiavmq\n6LWlF9r+3RZLQpfgbvJdteMUNdwEcB2nyCjCiRtXMTt4NhqvaIwJhyagU81OuP/1fcztMhc2JW10\njsMYD0vWqcNXFBkZRbNHE/7X/OHTwkfcQTVgaW4puDreEBTWCtSxq4MzD84UeQw5BbYYoiQlhu4Z\nCqdyTlj44UKj5oZr45+r/yA7NxsjXYwf9snP/psB8PXwRd8GwPffA0+fAgcP8vz+CRN4rr6r65tb\n8+ZA6SJuleQoc4okGqhU8vi4Kof+4kXg8mWuV+TlxWUlmjcvKKu9sNtCuKx2wYPnD96qXzAG588D\n69cDV6+ql/euUrYKfuzwI6a0m4LDtw9jb9Re/HrmV1QqXQk96vSAu6M73BRusEVNvHzJBOs2AUCu\nMhdRiVEIiw9D6KNQZI8PhPceCwxx88Kfvf5Eu2rtivS5NjMD1q4FPvuM7+vs3QuUEEGtZVv4NrzM\nfomZHWcaPpgALMwskJ0rUP3QQLzqeyEgOkBtGE8IjK843m0YY/Q+vA4V04Om40TMCZwYdsJoekW6\nSMlMQcPlDRHwSYAgITWxeJ75HFUXVUX8pHiUsSrz1vOvXgHh4W8uzmFhQEQEvzirHEbVqjwfXXUr\nWVLzfLODZyMrNwuzO81+6zmlEkhI4Lnwqnz4qKg3DqF8+TeOys2N9xBW6SlpotqiavBw9MDOQTv1\nfWv0IjOT2zN9uvA+1wD/gXI+9jyO3TmGsPgwhMWH4Xl6GpRPGqFHewUcyjpAYa1A+RLlYWFmgVFu\no7H83B9IzkxGXGoc4lLjEJsai8iESDhYO8BN4QY3BzfkRvfAmb0NEbBPnB88OTnAJ5/wuoQdO7g2\nkyE0XN4QirIKnBh+QhT7dNFvWz8MazoM/Rr2M/pcVx9fRb9t/XDnqztvOWbGGIhI6x9FkpUEY2wg\ngBkAGgBwJ6JLGo67B+AFgFwA2URkXD3qYsCOGzuw/up6nPc5L5mDAICfg36GVz0vkzoIADh8+zDa\nV2+v1kEA/Fej6sKsIivrjeO4epU3u1Fd1B8/LljMVLHim8pYCwvgcjlCjhJ4sKFgdWx8PF/BlC9f\nsBCqbl1gyhRhDkEdk1pPwvfHvi/yCkYo6sJMQjBjZmjl1KpApe7y9U+w+040Pm4Yj/i0eMSlxuF+\nyn1kK7MxCly6266UHRpVaoQutbrAoawDGlZqWCCElNQA+OVrHiISo6rYwoJnPA0axIUKd+zQ/mNA\nGzHJMYhOjMaW/iKK4umAgUFJGiRoRaapfVPkUi4iEiLQuHJjvc+XKtx0HUA/AH/qOI4AeBKR+K29\niiGX4y9j/MHxODr0qMmrqfMTlRiFLeFbEOUbZfK5A24GwKuel17nWFnxi7aLy9vPEQHPnr1xGs+e\nvZFLyM4GnqRaIJtlomNTfuEpU+aNQ6hSxfBfqIWZ4DEBPwb9iAkHJ2Blr5XiDp7HuXPaw0z68uSu\nPdpVtcdgZ3XP/iXoddjZ8b/PiRNAL5GS9KysuHMYMoRX9u/ZU7Swo/cub9StUBfNHZqLY5gAcpQ5\nsDS3NMlcjDF41eMhp6I4CamzkoIAuGh5PgZABQHj6L/tX8x4nPqYqi2qRtvCt0ltCvXf1l9npaYx\nyMrJIls/W3r0XKRu9gKYd2YefXf0O5PNR0S0+L/FZDHL4nWxmJioy2YylMGDifz9NTypx3fv9995\ntb3YZGcTDR1K5OnJO9zpw4XYC8RmMDr/6Lz4hmmhh38POnjzoMnmO3r7KLVa2+qtx/EeZDcRgOOM\nsYuMsVFSG2MssnKzMGD7AAxrOgyDGusZHxCZ87Hnce7ROXzp8aXJ5z7z4Axq29WGYzlHk81pyg1E\nFRNbTYRtSVuM2DtC9LGLGmbSRnR00TOb8tO7N7B/v+ZGP0XFwoKvnOrU4fUnz54JP/ezPZ/BTeFm\n8rCqscONhfmgxgeITIjEk7Qnep9rNCfBGDvGGLuu5tZbj2HaElELAD0A+DLG2hvJXMkgIvgG+qJi\n6Yomy6zQZsuU41Mw/YPpBldWF4X9N/ejdz19Ph6GY21ljeevjFSdpYVlPZZhT9QexL0Qr6DqwAFg\n40ZgxQpxwkwAD9fduiWOk6hTh1fcX7xo+FiFMTcH/vyTd2jz8BDW+OrQrUN8L2KA6fYiVDx/9RzW\nJaxNNp+VuRW61e6GwFuBep9rNFdGRAZLdxJRfN6/CYyxPQA8APyr7tgZM2a8vu/p6QlPT09DpzcJ\nyy8sR2hsKM5+cRZmTNqF3bG7xxCbGovPW3wuyfyBtwJN/oVVWCsQnxZv0jkBYLDzYEw+PhkDdwxE\nyMgQg8eLiOCy4vv2vd2tzBDi4nj/6fLlxRnPywsICOAXcrExMwPmzweaNOFV3n/9xedTh1KpxBcB\nX6Brra6obVdbfGN0YKpK//z0rtcba3avwYN9D/Q7UVc8ypg38D0JVw3PlQZgnXe/DIAQAN00HFv0\nYJ2EHL9znOwX2NOdpDtSm0K5ylxqsaoF7bixQ5L5kzOSqeyvZY0uelaYsLgwaraymUnnzD83m8HI\n/5qmgL8wnj0jqlOHaP16kQzLx8mTRO3bazlAz+9eSAhvrGNsQkO54u0vv6gXkJxwcAKVmF2Cnmc8\nN74xhchV5pLlLEt6lSNQ9VAkbj+7TU6/OxV4DMV1T4Ix1o8x9hBAKwCBjLFDeY8rGGOq9VAVAP8y\nxq4AOAfgABEdlcJeYxCXGoehe4Zi84DNqGVbS2pzsOPGDpibmWNAwwGSzH8p/hKa2TeDuZm5Sec1\nlYaOOlwcXODj4gOfAB+kZaUVaYycHF4H4eUFDB8usoEQbz9CRcuWPNPs3j3xxtQ0z7lzvNjO2xtI\nT3/zXPiTcPxx/g+s7LkS5UqWM64hakhMT0T5kuVFq/QXSi3bWkjLSsPTl0/1Ok8SJ0FEe4ioKhGV\nIqIqRNQj7/E4IuqZd/8uETXPuzkT0VwpbDUGucpcDNk9BOPcxqFTzU5SmwMlKTEzeCbmdJwjWXV3\nWFwYXB1cdR8oMpVKV0JyZrLJN69VrOq5CuVKlMNHmz4q0vn/9388Hj9vnsiG5WGIHIc6zM15CmxA\ngHhjasLRkcukWFgA7dsDDx/yMFM3/25o6dhSsrBqfGq80TohaoMxBhcHF4TFhel1XnHPbnovmXN6\nDhgYprWfJrUpAICA6ACUtiyNbrWNK5GsjbD4MLgqTO8kzM3MUblM5SLJZ4uBmZkZDg05hDMPzmDT\n9U16nfv338ChQ8DWrfxCaAzEdhIA1+HaulXcMTVRqhTfzB88mK8uBq//GkkZSTgy9IhpDFCDFPsR\nKlwdXBEWLzuJYs2pe6ewKmwVNvXfZPLQijqICHPPzMXUdlMlW0UA3Em4KdwkmduhrIMkm9cqXBxc\n4OvuixF7R+BOkrCGCSEhvPI7IID3bDAWN28WXSJcE127ct0rY/eGUMEY1wAbteAAdj74A4NLr4Z1\nCdOHmVQYu12uNmQnUcxJeJmAobuHYl2fdZJ9SAoTdC8IzzOfm0RDRhMpmSl4nPYY9SuIfDUSiMJa\ngdgXsZLMrWLZR8vQ3L453Ne4IzMnU+uxDx4AAwcCGzaIfwHPT1YWV7GtJfKWmaUl/2W/Sb+Fk0HE\nJMdg7t3++LjWSNzYPOx1Pw8piH0RK0m4CQBcFa64GKdfDrLsJEyEkpQYvnc4hjYdiu51ukttzmvm\nnpmLyW0nS5p+K9WmtYpGlRrh+tPrksydn5AvQmBuZo5Wa1tpPCY9HejbF/j2W6BHD+PaExMDODmJ\no7JamCFDuJMwhS5nZk4m3Na4oUnlJtgxbA1CQ3mKrKsrb3hlam3Q60+vo1ElI3ea0kBt29pIfZWq\n1+a17CRMxMKzC5GSmYLZHd9WG5WKi3EXEZ0YjSFNh0hqh1Sb1iqKsgQ3BlYWVrg46iIiEiIwfM/b\nqUpEvBbC2Zn3rDA2xtiPUOHhwSuvjVFYV5g2f7UBA3tdj2JhwfuWBAXxArzu3U27qgiLl+7zXpTN\na9lJmIDQR6H47b/fsGXAFpOJegnB74wfJrWeZPJUvMJItWmtwlXhqnfGh7GoblMd+z7Zh43XNmLm\nqYIV+LNn81/3q1eLV1GtDWPsR6hgDBg6FPD3N874Kvpv64/wp+G4MOoCSloUlIl1duZtczt0MN2q\nIjkjGQkvE1CvgpG8rwDcFG56/SiSnYSRSclMgfcub/zZ609Ut6kutTmvuZdyD0H3guDjYppOXNqQ\nctMaAGra1ER6dnqRdG2MQY+6PbC692rMDJ6JBSELAACLFvEL6t69RZfE1hdjriQAHnLato3XehiD\nT3d9iv039yN4RDBq2tZUe4ylJTBtmulWFWHxYWhepbmkSSv6rpxlJ2FkvjnyDbrX7o6+DfpKbUoB\nVoetxrCmwzT2bTAVmTmZePj8oWSb1kC+JXgxCDmp8HHxwdIeSzH5+GT0/W0+li3jMtv6dIczFLEL\n6QpTpw5QowZw/Lj4Y3+661Nsv7EdR4YeQeuqrXUeX3hVsWIFl5IXG6lDqwDvLxH+NFzw8bKTMCKB\nNwMRfC8YC7otkNqUArzKeYW/Lv+FsW5jpTYF8anxsC9rL3k6sJvCrdiEnFR86fElvG2WYl/aFHgt\nnImqVU03NxFv5NSwoXHnMUbIqd/Wfth+YzuOfnZUr2LV/KuKXbu449ixQ9wQlNShVQBwKueEuNQ4\nlaSRTmQnYSSSM5Ix5sAYrPVai7JWZaU2pwC7InehqX1T1K8o3a93FfFp8ZIVFuWnuGxe52fTJuDU\n/C8x22M1ll6biSG7TJdg8OABv2gqjPynGTSIq9emFU2VpABZOVlwW+2GwFuBCB4RXGQ1A2dnvrpZ\ntgyYOxdwdxdvtSPlprUK6xLWYGBIzUoVdLzsJIzEt0e/hVd9r2Ihu1GY5ReWY7zbeKnNAMCrT6XK\nGc9PS6eWOPvwrMlaSupi+3YuuXHsGPDjRz44MvQIdkbuhPMKZ6RnpesewEDCwnjYxdgb5JUrc3nv\nffsMG+d+yn04LnLE3eS7uDH+BtpWa2vQeIwB3brx7KvvvgPGjeNFgGEG/I6IT41HUkaSpJvWKvTR\nLJOdhBFQhZnmd50vtSlvceXxFdxPuY/e9U3bt0ET8anFYyVRrXw12Je1x/nY81Kbgo0bgYkTgSNH\ngEZ56fRda3fFrQm3kPAyAY6LHBGdGG1UGy5eLNhH3JgYGnI6dOsQ6i6rC4W1Ao++eYS6FeqKZpuZ\nGS/8i4jgvbR79+arn5s39R/rwM0D6F6nu+ShVQBwsHZAfKowlQHZSYhMcQ4zAcDKCysxxnWMSbti\naaO4rCQArrcfEG0C5TktrFkDTJ3KN6mbNi34XLXy1fDwG77J77zSGX9d+stodqhWEqbAywsIDeXq\nsPry/bHv0XNzT3g7e+Pq2KsobWWcZlmWlsDYsbwBU4sWQJs2wJgxPCVZKEXp324s9OmjIjsJkSnO\nYab07HRsj9iOkS4jpTblNcVlTwIAvOp7Seok/vgDmDOHb5w20lCQa2VhhVCfUHzV8iuMPjAaLde0\nREpmiqh2EJnWSZQpw3+dr10r/JzoxGhUX1wdi0MXY1WvVdjQb4PxDMxHmTLciUdH8y577u5c1fbg\nQSA3V/N56dnpCL4XXGzUFhzKOsjhJikozmEmgKu9ejh6FJuLMpC3kigmOlYejh5ITE8ULLInJr/9\nxmshgoOBugKiJQu7LcS1sdcQmxoL+9/sRV1VmGrTOj/jx/M6BSE1E5OPTUajFY1QqXQlxE2Kw2jX\n0cY3sBAVKgB+fvy9GjAA+Pln/nebPx9ITHz7+ON3j8Pd0R22pWxNbqs6FNYKOdxkalIyU4p1mAkA\nNl3fhKFNhkptRgHi06TR1leHGTNDr3q9sP/mfpPNqVRyiYjVq7mDqFFD+LmNKzfGo28fwdfdF6MP\njIbrn66iODhTbVrnp1kz/tr3a3nrQx6EoNqialgUugh/9PgDF0dfRMXSFU1mozpKlwY+/5zv4Wzb\nBkRGcmcxbBgPoamyTAOii0+oCchbSaTJKwmTMu3ENPSs27NYhpkArkB7+v7pYlfUJ6W2vjpMGXJ6\n8YKL9YWE8JuTU9HG+f3D33Ft7DWk56Sj7rK66O7fHYnpan7OCsSUoab8jB/Pi9gKE5kQCZc/XdB+\nXXvUsKmBuElxGOc+zvQG6sDdHVi3Drh9mzu9oUP5+7h6jRIB0fuLTbIIIK8kTM7l+MvYGbkTc7sU\n3+Z5229sR8+6PWFdwlpqU17zKucVUl+lokLpClKb8poutcksnekAAAtwSURBVLrgYtxFgy6yQrhz\nh29+KhQ8zbVSJcPGa1y5MSJ9IxH4aSDCn4bD/jd7DNk1pEjpslI5iQEDgGvXeLwfAOJexKHThk5o\nvKIxcpQ5uDb2Gk5/flry1YMuKlTgAow3b/I6i3+C/sOzB5Uw7pNaWL5cOony/DhYC++hIjsJA1GS\nEr4HfTGn4xzYlbKT2hyN+F/3x5Am0qq9FiYpIwl2pewklSkvTGnL0ujboC/WX1lvtDlOnOC1Ab6+\nwKpVgJWI+oo96vbAo28f4W+vv3Ho9iGU8yuHrv90RfgTYTIMRKZNf81PiRLAyJHA1LXH4LbaDU6L\nnHA3+S5ODj+Ja+Ouwdne2fRGGYCZGfDhh0CdQWsws99wjB4NXLjA39sWLYDp0/l7rZSgNKdi6YrC\nfwgRkclvABYAiARwFcBuAOU1HNcdQBSAWwAmaxmPpGLd5XXkscaDcpW5ktmgi9vPblOl+ZUoKydL\nalMKcD/lPjn97iS1GW/x38P/qNaSWqL/TZVKomXLiOztiU6eFHVojWy+tpkaLGtAbAaj6ouq0/Lz\nyyk3V/PrunePqEoVbqsgRPruvcp+RT+c+IFs51YgTGfk/mdLCo4JFmVsKUl8mUg2fjaU8DLh9WM5\nOUT//kv03XdEDRoQKRREY8YQBQYSZWSYxq6UjBQqN7cc5V07tV6vpfoJdxRAYyJqBuAmgKmFD2CM\nmQP4A9xRNALgzRgzspKMfqRkpmDqialY/tFyo/4aPnXqlEHnbw3fioGNBhYrmXIAyFHmIOeOkSRA\nDaClY0uUL1EeR+8cNXgs1d8uK4vn1f/5J3D2LNCxo8FDC8K7iTciv4xEzMQYuDi44OvDX6PkLyXh\nvtodf5z/460uePpuWp8ywLak9CTMCJqBRssbodSvpbD03FIMdh6ID68kYYx5KDrU6GDA6OJg6Hdv\n3ZV18KrvVSBEZm4OtGvHM6EiI3nKc926wLx5PFTl5sY/K2vWAJcu8c+O2FiaWyJHKey7J4mTIKJj\nRK/1D84BULdl5wHgNhHdI6JsAFsB9DGVjUL4OehneNXzMrrMtaEf1ICbAZK2J9VEjjIHWXeM8A0w\nEMYYxruPx4oLanZR9eTUqVN4+hTo3BlISOAOQux2oEKoblMduwfvRua0TKzruw5lrMrg+2Pfo/Qv\npVF7SW1MODgBJ2NO4kKYUq9Q0yk9bMjMycSeyD0Yvmc4FAsVqLCgAhafW4zatrVx8NODSJ2aipW9\nVuLrsTZYvtz0HePUYch3T0lKrLy4UqcETr16fA8jOBh4+hRYupTrR4WEAMOH8x7mKsexejV35IY6\nDgszC2TnCpO5LQ5lt18A2KLmcUcAD/P9/xGAliaxSABXH1/FthvbEDE+QmpTtPI47TFuPruJDtWl\n/1VWmBxlTrHaj8iPt7M3Jh+fjHsp91DDpkaRx3n8mHdhGzYMmDGDx6mlxMzMDEOaDHm9P/Xfw/+w\n5NwS7IzciZUXVyLXUomyFjY4tKYOWju1RlP7pnCu7IwmlZsIrmZOSk/CtafXEJkQiUvxl3A+7jxi\nkmOQmpUKSzNLKKwV8KrnhUltJqmV0OjWje/XnD8PtCw233j9OXrnKGxK2sDD0UPwOWXK8ISGNm3e\nPPbyJXD1KncOZ89y4cE7d4Dq1Xnig4PDm3/z31co+HjqsDCzQLZSYifBGDsGoIqap34gov15x0wD\nkEVEm9UcVwx+R6iHiPDloS8xy3NWscrMUceBmwfwYe0PJe8+p44cZQ6YKZPx9aCMVRl81vQzrA5b\njV87/1qkMXbuBP75B1i/nlcUF0daV239ut8CEWBXPxxfLNyFK0mnsSNiB9ZeXovMnEwoSQkGhhIW\nJVDSoiTMmBnMmTnGA6gwvwJylbnIzMlEVm4WCARzZo5SlqVgV8oOTSo3wfBmwzGg4QBBjbfMzLig\n3vLl77aTWHFhBca7jTf4M67JccTEcCmT+HggLg64d487kfyPWVpyh1G+PL9vYaH61wxoxSDkMstI\nojUdY2wEgFEAOhNRpprnWwGYQUTd8/4/FYCSiOapObbYOhQZGRmZ4gwRafVikoSbGGPdAXwH4AN1\nDiKPiwDqMsZqAIgDMBiAt7oDdb1IGRkZGZmiIVWEdBmAsgCOMcYuM8ZWAABjTMEYCwQAIsoB8CWA\nIwAiAGwjokiJ7JWRkZH5n0SycJOMjIyMTPGneKaW6AljbDZj7Cpj7Apj7ARjzITdgI0PY2wBYywy\n7zXuZoyVl9omMWGMDWSM3WCM5TLGXKS2RywYY90ZY1GMsVuMsclS2yMmjLG/GWNPGGPXpbZFbBhj\nVRljQXmfyXDG2FdS2yQmjLGSjLFzedfLCMaYVj2h92IlwRizJqLUvPsTADQjIh+JzRINxlhXACeI\nSMkY8wMAIpoisVmiwRhrAEAJ4E8Ak4joksQmGUxeMWg0gC4AYgFcAOD9voRMGWPtAaQB+IeImkht\nj5gwxqoAqEJEVxhjZQGEAej7vvztAIAxVpqI0hljFgDOAPg/Ijqj7tj3YiWhchB5lAVgXHU2EyOw\n+PCdhYiiiKgIDSGLNcW+GNQQiOhfAMlS22EMiOgxEV3Ju58GLiFUfKSKRYCIVMqPVgDMASRpOva9\ncBIAwBj7hTH2AMBwAH5S22NEvgBwUGojZHSirhjUUSJbZIpIXnZlC/AfZ+8NjDEzxtgVAE8ABBGR\nxqrg4lBxLQhdxXlENA3ANMbYFACLAHxuUgMNRITiw2KNkNf3nvHux3H/x8kLNe0EMDFvRfHekBeZ\naJ63v3mEMeZJRKfUHfvOOAki6irw0M14B39p63p9ecWHHwHobBKDREaPv9/7QiyA/AkUVcFXEzLv\nAIwxSwC7APgT0V6p7TEWRPQ8r+zADRqkuN6LcBNjLL8ATB8Al6WyxRjkKz7so6X48H3hfSmMfF0M\nyhizAi8GNU3LOxmDYFxH4y8AEUS0WGp7xIYxVpExZpN3vxSArtByzXxfspt2AqgPIBfAHQDjiOip\ntFaJB2PsFvgGk2pz6T8i0i4t+Q7BGOsHYCmAigCeA7hMRD2ktcpwGGM9ACwG3xj8i4iKb+tCPWGM\nbQHwAYAKAJ4C+JmI1klrlTgwxtoBOA3gGt6EDacS0WHprBIPxlgTABvAFwlmADYS0QKNx78PTkJG\nRkZGxji8F+EmGRkZGRnjIDsJGRkZGRmNyE5CRkZGRkYjspOQkZGRkdGI7CRkZGRkZDQiOwkZGRkZ\nGY3ITkJGphCMsQp5zbAuM8biGWOP8u5fylPNNLU9noyx91G6ROYd4J2R5ZCRMRVE9Axc1A2MsekA\nUonodzHGZoxZ5HVdlJF5J5BXEjIyumGMMR/G2Pm8Ri078+QMkCe7cTKvIdRxdQ2vGGMzGGMbGWNn\nAGzIk0XYmTfeecZYm7zjPBhjZ/NWLCGMsXomfp0yMm8hOwkZGWHsJiIPImoO3l9gZN7jywCsI6Jm\nADaBy4uoowGAzkQ0JO+YRUTkAeBjAGvzjokE0J6IXABMB/CrcV6KjIxw5HCTjIwwmjDG5gAoD97Y\nSqXj0wpA37z7/gDmqzmXAAQQ0au8/3cB0JDryAEArBljpQHYAPiHMVYn7xxL0V+FjIyeyE5CRkYY\n68BVeK8zxoaDi9upEKJcm57vPgPQkoiy8h/AGFsB3qa2H2OsOjRIN8vImBI53CQjI4yyAB7n9RkY\nmu/xswA+ybs/BFw9VBdHAXyl+g9jrFne3XIA4vLuv1NNs2TeX2QnISMjjJ/BW1ieAd87UDEBwOeM\nsavgTmKihvPzyy1/BcAtb7P7BoAxeY/PBzCXMXYJXF6cNJwvI2MyZKlwGRkZGRmNyCsJGRkZGRmN\nyE5CRkZGRkYjspOQkZGRkdGI7CRkZGRkZDQiOwkZGRkZGY3ITkJGRkZGRiOyk5CRkZGR0YjsJGRk\nZGRkNPL/f73qscY1aEcAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x1039f53d0>"
+ ]
+ },
+ "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": [
+ "<matplotlib.text.Text at 0x1188c7f90>"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAEZCAYAAABo53esAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm0XFWZ9/HvjwRCR2ZBlCSAMom+gKgdURSuohBBoVtF\njAgqtNAijb6NQEM3kuXUstpWHF6BZhbFtKDS0E2kBbmAIEGUUcIQmULCPIZ5yPP+sXeFk0pV3arU\nvXXq1P191qp168zP2Wd4ztln17mKCMzMzKxaVio7ADMzM+ucE7iZmVkFOYGbmZlVkBO4mZlZBTmB\nm5mZVZATuJmZWQWNegKXtL6kyyQ9KenbkmZJOnMMlnOkpJNGe75jRdLnJT2Qy2VtSdtLuj137yHp\nAkn7tjGfmyTt0IuYbXRIGpK0oNA96ttQ0umSvtZi+NclPSRp0Wgutyrqj7+y47H+IulvJS2QtFjS\nNmXH0y6N9u/AJR0NbBMRH8vdxwCbRsQ+XcxzCDgzIqaNTpS9JWll4AlgekTclPtdDJwbET8oKaZZ\nwCbdbBdrTy/2X0mnAQsi4isNhm0I3AJMi4hHxiqGftXo+KsSSRsDdwATI2JJudGMDUmfAfaPiPeU\ntPy/AF+KiPPLWP6K6ugOXNLENkbbCJhXnKyjiAbTa4FVWbZcNgRuLiec3pI0oewYOtHmft6Pmh1r\nGwKPNEveFV7fdjU6/tqibPRDanv5xW2zQnEMyvaVNCaPfPP2XeHz8VjFlefdev+LiJYf4C7gcOAG\n4FlS0t8OuBJ4DLgO2DGPezrwAvA88CSwE3AM6e6jNr+G0+Zh6wCnAQuBR4FfApPzcl8GFuf5vg6Y\nVTff3YE/5/leAryxbh0OBa4HHgdmA5NarPPnSBvzyTzPbXP/LYHhvIybgA8XppkEfBu4G7gfOJ50\n0tgceApYkuO/GJif1+eZvIxV8nz3bxHDWwrrslP+LuCf8vweBv4TWDsP2zgvc98c00PAUXnYjLyN\nXsgxXdugDI4Azq7r9z3ge/n7msApwCLgXuBrwEp52GeAK4Dv5Li+CmwKXJrL/yFgdl2cKxWWs7Qs\nmk3XIN6m61vYPseR9q2FwHeBVfKwobwOhwP3AT8m7bdnA2fmbXADsBlwJPBAXsYHCvP/bGF7/QU4\noDBsiHR3XNwf35e/P563wWJe2U82zMM+RDpGHsvluVVhHtsCf8rLmw38DPhag3J5P2k/qx0/p5Iu\nspcA++X1GM7j7pfX4VHg17U48rAPkO7iHwd+kLdJbRvNYtljcZltysj7yu+Af8vLvQOY0eqckPvf\nBHyoMN7KpH1tm7r1rz/+Lsr93wX8Ia/P1cA76/a/r+cyfwZ4Q4NyrS//2bXyz+t0ed34S2rzAXYD\nriXVCtwDHNOg7Grb5tL8txb/YuAdbWyvJcBBwO3AXxrEfwbwj/n7lNr4uXsT0gUfwNrAfwMP5uWc\nD0zJw/YC/lA33/8L/Ferc2KDWLYkneNfyuv3aCGfHA9ckLfh+9osu2bngOnANXna+3NsqxT2j6eA\n29s419fHtRPpmP4y6TyxmLS/rw/Mycv7DbBWm3lwmBH2v6XjNhtQd7L5U97Ik/Lfh8kHGekE8TDw\n6tx9GvDVwvSzyAd3G9P+D+lEtCYwEXhP7r8jhRNg7ndMYb61g3QnYAJwGGnHnZiH3wlcRboSX5u0\n0x/YZH33JJ1k3lbYmTcknSDmkxLmROC9pIN38zzed4FzgbWA1YDzgG/mYbUTZjFJ3Uk+iefuS4D9\nWsVQPx3wxbwTbJDjOwE4q25nPjFvt62B54AtCuX34xbbfUPgaWC13D2BdAKenrt/RdqJ/wpYD5hL\nTlqkE9iLwBdIF3yr5u16ZB6+CvCuRif7BmXRcLoG8Y60vl/NZbVu/lxB3k9JCfZF4F9zOa5K2m+f\nJSWuCaQT3l2kBD4B+DvgjsLydwVen7/vkMtu28L8iwl8mW1f6P9N0sE7gZQgHgD+mnShtm+ebuVc\nDnfn7T8B+CjpYuyrTcpmx7rl18rq9Lz9VgX2IB0zW+Rt9s/AFXn8dUn7+kfy8r6Uy6u2jeov0pfZ\npoy8r7wA7J/X8++BhYV5NTsnHEbhYi7Hf32T9d+oLp51SCfOvfO6foKUnGoXv8N5W2+Zh0+sm1/L\n8mfkBL4j8Ob8fStSMtmjybaZVB9/YX0bbq/C8i4knY+Wu1khXXCel79/knRuq11U7wf8qlBWf5v3\nkdWAnxeGTc77xaaF+f4B+PhI58QG8Xy6QZmdTrrAemfuntRm2TU7B/we2LsQ+zuabJ+RzvWN4rqT\ndH5Zj3Q+foCUN7fJwy8GvtJmHhymxf63TBk1G1B3svlMofsI6k78pKu/ffP30yjcCbBsAm86Lemu\n+mVgzQYxDLF8Ai/O92iWPZhFSoA7FNbhk4XhxwLHN1nfC4F/aND/PcB9df3OIp28RLqAeENh2DvJ\nJ3gaJ6lWCbxhDPXTkS5EivN4HelEslJhmRsUhs/llYNrafm12PaXA/vk7x8A5ufv65MOjFUL484E\nfls4gd1dN68zSAfWlLr+jcqmWBYNp2sQ60jrO59l7+x2Bu4s7F/Pk+/IC+VzYaH7w6Qr61q7kdXz\n8tZoEs+vgEMa7b/12z732yv3rx3Ex1OXkEl3wDvkz8K6YVfUj9/s+CmU1caFfnNqZZ67VyJdhGxI\nOj6vrJvngsI2WmZfKm7TNveV2wvDJudpX0Prc8IGeXvULjDPAb48wr5RS+D7AFfVjXMl8OnC/jer\nxb7WsvwZIYE3mN9xwHdabJtl4h9he00rLG+oxTpsQrpoUd7XDqjtI6Rj7ktNpnsL+Q45d58JHJ2/\nb0ZKdKsywjmxwXwbldlpwOkjHPeNyq7ZOeDSvK+u22A+xQTe9Fyfv59eHxfp2J1Z6D4H+H+F7oN5\n5cJnpBzacv8rftqtu19Q+L4RsKekx2ofYHvS3e1IWk07jbRjPNFmTEUbkKpTAIhUCgtIVzo19xe+\nP0u6ImxkKqkKtNEyFtT1uzv3X5d04vljYb3m5P4rolkM9TYGflVY5s2kaqj1C+MU1/sZmq93I2eR\nTraQrtJ/mr9vRLpKva+w7BNIV5819WV1OOmgvjq3wv5smzF0Ol2z9d2AtL1q7sn9ah6KiBfq5vVg\n4fuzwMN536p1U5u/pA9KukrSI7k8dgVePUKs5Gm3JVVL/0288px6I+DQumNlKimpbUCqUi66m86f\nkdYf198rLKsWx5S8zHtbTNtKO/vK0m0WEc/kr6vR4pwQEYtISfNjktYiPRb6af14TSxzvshqx3JN\nq/VrVv5tkfQOSZdIelDS48CBLL+vjFS+rbbXiPOIiL+QEv5bSAnrv4FFkjYnXaBcmmOdLOlESXdJ\neiL3X7PwXLb+HPGriHiOtH1H45y4zDq0WXbNzgH7k2pr50m6WtJuTZbZ6lwPEA2GQ7rrrnm2rvu5\nQhzt5NC2jq92GzdE4fs9pKvtA9qctqjptJJeB6wjac0GB2zUj19nIak6pTYvkQ7++oOsnfktID13\nrbcImCZJhZP4RqS7oodJG+xNEXHfCLG2o1kM9e4BPhsRv68fkFuutjJSmUK6ivx3SVOAvyE9t6nF\n9zzpbrFZq9hl5h8RD5Cu8pG0PXCRpEtJd1GQDvan8vfXjjRdRNzRRvxFi0gXPLWGTBvmfg3jbdDd\nlKRJwC+AT5Ge/70s6Ve0kVAlvYZ0t35QRFxfGHQP8I2I+GaDaXZk2RM1pH1xfrsxZ/XH9dci4mcN\nlrcZ6XiqdavYTdpukwvd9SeikfaVZhbQ/JwA6U5xf9IFwpUdHHsLSY8DijYiJZiaVtv/PlqX/9MU\nykNS/c3NWcD3gV0i4gVJ32X5xBZNvtc03V4jTFd0Kelx3coRsSgfj58hPWa8Lo9zKCnpTY+IByW9\nhVQ1rDz/i4D18k+vPkF6vAKdnxPbPd7aKbvGC4iYT7rIQNJHgXMkrRMRz9aN2upc34lmx387ObSt\n8liR1nM/AT4saWdJEyStqvQ719oO3eqk1XTavJHnAD+StJaklfXKb2UfAF4taY0m8z0b2E3S+/JP\nRg4lXfFc2WT8VjGeDHxZ0ltzA8BNlX6GcxXpau7wHNsQqZHR7LyRTwKOk7QegKQpknZusZxWmsVQ\n7wTgm7VhktaTtHuby7gf2LhVC8eIeIj0POZ0UtXXrbn/fcD/At+RtLqklSRtoha/bZa0p6SpufNx\n0g66JC9jIbBP3if2I1XvtZyuzXUs+hnwL5LWlbQu8BVS9V/TkDuY9yr58zCwRNIHSVX0LSm1Dj4H\n+ElEnFM3+CTg7yVNz/vAqyTtJmk10n79kqRD8r74EdKz8m6cABwl6U05tjUl7ZmHXQC8Wem3shOB\nQ1g2SV8H7CBpmqQ1Se0EgBXbV+qmbXZOgHTh89Ycz487WNcLgM0lzZQ0UdJewBtJd6E1rbb/SOV/\nPam8tpFUa09RtBrwWE5A00lJpdUJ+yHSPr9JoV+r7dWuS0lVu5fl7uHcfXkhca1GSsRPSFqH9Mhw\nqYh4kXT+/TYp8f8m919CZ+fE+4Gp+fxd02gbdFp2r8xM+lQtFlLDsmbnkqbn+hZxdWKkHNr2MjpO\n4BFxL6kBxVGkKsZ7SAmztsBg+avHGGHaWhz7kBrH3EJK2ofk6W4hnYDvkPSo0t16cb63ku5+fkDa\n2XcjtRp8qdlq0GSj5xPpN0hXek+SWsKvnXfUDwMfzMv4Ien58G150iNIV+BXKVU1/YZ05VpcZlua\nxdBg1O+RGob8r6QnSY00pre5zLPz30ckXdNivLNIjQPPquu/Lylp1VrBns0rJ/VG5ft2UtksBv6L\n9Hz4rjzsc6RGSQ8DbyJVjbYzXb1W6/t1UgvUG/Lnmtyv2bSN1qFhd0QsJu2rPyeVxcwc60ixTQXe\nDXxJ6QUSi5VeNDI1Iv5IKpcf5nneTirz2knzI6S7pUeAj5NqAFppuS4RcS6pbcjsvP/eCOyShz1M\nulP7FmkbbUraRsrDLyL9AuIGUiOm8+vm3+m+UuxueE7Iy32OdGxsnP+2tf4R8SjphHxoXp8vk1q0\nP9okhmVn1Lj8f8kr5XEbqdHkRcCtpLYkxfkdBHw1H7NHk8quYax5fs+QzgdXKFW5Tm+1vUaKv+Ay\nUkKsJfArSA3nLiuMc1zu9zDpwmVOg3nXzhFn19WyjHROLPot6dc290uqPbpqtG90VHZ1dgFuyueS\n7wKfiIjn66dr41zfNH+0iKWdPKgm0zY16i9yqRJJp5KS/YMRsVWTcb5P2pDPkBrzXdvDEM36kqRL\nSNWAp5Ycx9HAZhEx4lsMxziO04B7I+LoMuOw8WW8vwv9NFLjl4Yk7Ur6icRmpOewx/cqMLMKKPUl\nTblKdz/gP8qMI/MLq6znxnUCj4jLSb8HbWZ3UkMZImIusJak9VuMbzaelFZ9J+lzpKrHORHxu7Li\nKGi3WtVs1AzEK/bG0BSWbc5/L+m55QONRzcbHyLivSUv/yRSI6m+EBHt/izSbNSM6zvwNtVXjfkq\n28zMSuc78NYWsuzvXafS4LflkpzUzcxWQES4/cAK8h14a+eRf7ojaTvg8fxikeW089q7sj/HHHNM\n6TEMSpxViNFxOs5+/1h3xvUduKSfkV6Ov66kBaSXFKwMEBEnRsQFknaVNJ/0diU/5zIzs74wrhN4\nRMxsY5yDexGLmZlZJ1yFPo4MDQ2VHUJbqhBnFWIExznaHKf1k3H9JrbRomXeeW9mZu2QRLgR2wrz\nHbiZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVZATuJmZWQU5gZuZmVWQE7iZmVkFOYGbmZlVkBO4mZlZ\nBTmBm5mZVZATuJmZWQU5gZuZmVWQE7iZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVZATuJmZWQU5gZuZ\nmVWQE7iZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVZATuJmZWQU5gZuZmVWQE7iZmVkFOYGbmZlVkBO4\nmZlZBTmBm5mZVZATuJmZWQU5gZuZmVWQE7iZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVdC4TuCSZki6\nRdLtko5oMHxdSb+WdJ2kmyR9poQwzczMlqOIKDuGUkiaANwKvB9YCPwBmBkR8wrjzAImRcSRktbN\n468fES/VzSvGazmama0oSUSEyo6jqsbzHfh0YH5E3BURLwKzgT3qxrkPWCN/XwN4pD55m5mZlWFi\n2QGUaAqwoNB9L/COunFOAn4raRGwOvDxHsVmZmbW0nhO4O3UeR8FXBcRQ5I2AX4jaZuIWFw/4qxZ\ns5Z+HxoaYmhoaLTiNDMbCMPDwwwPD5cdxsAYz8/AtwNmRcSM3H0ksCQiji2McwHwjYi4IndfDBwR\nEdfUzcvPwM3MOuRn4N0Zz8/ArwE2k7SxpFWAvYDz6sa5hdTIDUnrA1sAd/Q0SjMzswbGbRV6RLwk\n6WDgQmACcEpEzJN0YB5+IvBN4DRJ15Mudg6PiEdLC9rMzCwbt1Xoo8lV6GZmnXMVenfGcxW6mZlZ\nZVW6Cl3Sa4A9gR2AjUkty+8GLgPOjogHy4vOzMxs7FS2Cl3SKcAmwBzgatJLVwS8jvSSlhmkF7X8\nXQ9icRW6mVmHXIXenSon8K0j4oZuxxmlWJzAzcw65ATenco+A68lZklfrB9W69eL5G1mZlaGyibw\ngs806PfZXgdhZmbWS5VtxCZpJvBJ4PWSzi8MWh14pJyozMzMeqOyCRy4ktRwbT3g26QGbACLgevL\nCsrMzKwXKtuIrZ+4EZuZWefciK07lX8GLumjkm6X9KSkxfnzZNlxmZmZjaXK34FL+gvwoYiYV2IM\nvgM3M+uQ78C7U/k7cOD+MpO3mZlZGarciK3mGkn/CZwLvJD7RUT8ssSYzMzMxtQgJPA1gWeBnev6\nO4GbmdnAqvwz8H7gZ+BmZp3zM/DuVP4ZuKQtJF0s6c+5e2tJ/1J2XGZmZmOp8gkcOAk4ileef98I\nzCwvHDMzs7E3CAl8ckTMrXXkuuwXS4zHzMxszA1CAn9I0qa1DkkfI71i1czMbGBVvhGbpE2A/wDe\nBTwG3AnsHRF39TAGN2IzM+uQG7F1p/IJvEbSq4CVImJxCct2Ajcz65ATeHcq+ztwSftExJmSDgWi\n0F+kR+HfKS86MzOzsVXZBA5Mzn9Xp5DAzczMxoOBqUIvk6vQzcw65yr07lS+FbqkMyStVeheW9Kp\nZcZkZmY21iqfwIFtIuLxWkdEPAa8tcR4zMzMxtwgJHBJWqfQsQ4wocR4zMzMxlyVG7HV/Dvwe0k/\nBwTsCXyj3JDMzMzG1kA0YpP0ZuB9pNbov42Im3u8fDdiMzPrkBuxdaeyCVzSGhHxZKH6vLYTBEBE\nPNrDWJzAzcw65ATenSon8P+JiN0k3cXyvwOPiHhDD2NxAjcz65ATeHeqnMDfHRG/k7RqRDxXcixO\n4GZmHXIC706VW6F/L/+9stQozMzMSlDlVugvSToJmCrp+7zyDBxSFfohJcVlZmY25qqcwHcD3g/s\nDPyRlMCj8NfMzGxgVTmBHxYRR0jaMCLOWJEZSJoBHEd68cvJEXFsg3GGgO8CKwMPR8TQiodsZmY2\nOqrciO0mYCvgTxGx7QpMPwG4lXQXvxD4AzAzIuYVxlkLuALYJSLulbRuRDzcYF5uxGZm1iE3YutO\nle/A5wCPAatJWlw3LCJijRGmnw7Mj4i7ACTNBvYA5hXG+STwi4i4N890ueRtZmZWhsq2Qo+IwyJi\nLeCCiFi97jNS8gaYAiwodN+b+xVtBqwj6RJJ10jaZ5TCNzMz60qV78ABiIjdJW0EbBYRF0maDEyI\niPq78uUmbWP2K5P+s9lOwGTSO9eviojbu4vazMysO5VP4JIOAD4HrANsAkwFjicl3VYWAtMK3dNI\nd+FFC0gN154FnpV0GbANsFwCnzVr1tLvQ0NDDA0NdbIaZmYDb3h4mOHh4bLDGBiVbcRWI+l60vPs\nq2qN2STdGBFbjTDdRFIjtp2ARcDVLN+I7Y3AD4FdgEnAXGCv+n+W4kZsZmadcyO27lT+Dhx4PiKe\nl9I+kBPziNk0Il6SdDBwIelnZKdExDxJB+bhJ0bELZJ+DdwALAFO6vV/OjMzM2tkEO7A/w14HNgX\nOBg4CLg5Iv65hzH4DtzMrEO+A+/OICTwCcD+pDeyQbqjPrmXGdUJ3Mysc07g3al8AgeQNAnYPHfe\nEhEv9nj5TuBmZh1yAu9O5Z+B51edngHcnXttKOnTEXFpeVGZmZmNrcrfgUv6E6n1+K25e3NgdkS8\ntYcx+A7czKxDvgPvTmXfxFYwsZa8ASLiNgagZsHMzKyVQUh0f5R0MvAT0r8S3Ru4ptyQzMzMxtYg\nVKGvCnwB2D73uhz4UUQ838MYXIVuZtYhV6F3ZxAS+KuA5yLi5dw9AZgUEc/0MAYncDOzDjmBd2cQ\nnoH/FvirQvdk4KKSYjEzM+uJQUjgkyLiqVpH/i9kk0uMx8zMbMwNQgJ/WtLbah2S3g48W2I8ZmZm\nY24QWqF/Cfi5pPty9+uAvUqMx8zMbMxVvhEbgKRVgC1y560R8UKPl+9GbGZmHXIjtu4MRAIvmxO4\nmVnnnMC7MwjPwM3MzMYdJ3AzM7MKGoRGbEiaAmwMTCC9TjUi4rJSgzIzMxtDlU/gko4ltTq/GXi5\nMMgJ3MzMBlblG7FJug3YqpfvPm8QgxuxmZl1yI3YujMIz8D/AqxSdhBmZma9VPkqdNJb166TdDFQ\nuwuPiDikxJjMzMzG1CAk8PPyp1aHrcJ3MzOzgVT5Z+AAkiYBm+fOWyLixR4v38/Azcw65Gfg3an8\nHbikIeAM4O7ca0NJn46IS8uLyszMbGxV/g5c0p+AmRFxa+7eHJgdEW/tYQy+Azcz65DvwLszCK3Q\nJ9aSN0BE3MYA1CyYmZm1MgiJ7o+STgZ+QmrAtjdwTbkhmZmZja1BqEJfFfgCsH3udTnwo16+2MVV\n6GZmnXMVencqn8D7gRO4mVnnnMC7U9kqdElnR8Sekm5i+d99R0RsXUZcZmZmvVDZO3BJG0TEIkkb\nkZ59F0VE3N1oujGKxXfgZmYd8h14dyrbCj0iFuWvB0XEXcUPcFCJoZmZmY25yibwgp0b9Nu151GY\nmZn1UJWfgX+edKe9iaQbC4NWB64oJyozM7PeqPIz8DWBtYFvAUfwynPwxRHxSI9j8TNwM7MO+Rl4\ndyqbwGskvRP4c0Q8mbvXALaMiLk9jMEJ3MysQ07g3RmEZ+DHA08Vup8GTmhnQkkzJN0i6XZJR7QY\n768lvSTpI13GamZmNioGIYETEUsK318GJow0jaQJwA+BGcCbgJmStmwy3rHAr1n+52pmZmalGIQE\nfqekQyStLGkVSV8E7mhjuunA/PzTsxeB2cAeDcb7B+Ac4KHRC9nMzKw7g5DA/570HvSFwL3AdsAB\nbUw3BVhQ6L4391tK0hRSUj8+9/KDbjMz6wuV/RlZTUQ8AOy1IpO2Mc5xwD9FREgSrkI3M7M+UfkE\nLmkL4EfAayPizZK2BnaPiK+PMOlCYFqhexrpLrzobcDslLtZF/igpBcj4rz6mc2aNWvp96GhIYaG\nhjpcEzOzwTY8PMzw8HDZYQyMQfgZ2WXAYcAJEbFtvlO+KSLePMJ0E4FbgZ2ARcDVwMyImNdk/NOA\n8yPilw2G+WdkZmYd8s/IulP5O3BgckTMzXfJ5OruF0eaKCJeknQwcCGp1fopETFP0oF5+IljGbSZ\nmVk3BiGBPyRp01qHpI8B97UzYUTMAebU9WuYuCPis90EaWZmNpoGoQp9E+A/gHcBjwF3Anvn/0rW\nqxhchW5m1iFXoXen8gm8RtKrgJUiYnEJy3YCNzPrkBN4dypbhS7p0EJnFPqL9Cj8O72PyszMrDcq\nm8CB1coOwMzMrCxVTuCviojDJX08In5edjBmZma9VOVXqe6aq8uPLDsQMzOzXqvyHfgcUqvz1STV\nN1yLiFijhJjMzMx6ovKt0CWdFxG7lxyDW6GbmXXIrdC7U/kEDiBpI2CziLhI0mRgQi9/TuYEbmbW\nOSfw7lT5GTgAkg4g/b/u2hvUpgLnlheRmZnZ2Kt8Age+ALwbeBIgIm4DXlNqRGZmZmNsEBL48xHx\nfK0j/5cx12ebmdlAG4QEfqmkfwYmS/oAcDZwfskxmZmZjanKN2KTtBLwd8DOudeFwMm9bFXmRmxm\nZp1zI7buVDqB5+rymyLijSXH4QRuZtYhJ/DuVLoKPSJeAm7NPyMzMzMbN6r8JraadYA/S7oaeDr3\ni7Jf7mJmZjaWBiGBH92gn+uzzcxsoFX2GbjaePDczjijFIufgZuZdcjPwLtT5Wfgw5IOk7R5/QBJ\nW0g6Ari0hLjMzMzGXJXvwCcBewMzgf8DLAYErAbcBPwUOCsiXuhBLL4DNzPrkO/Au1PZBF4kaQLw\n6tz5SES83OPlO4GbmXXICbw7g9CIDdId+A6kxmuXA9eXG46ZmdnYqvIzcAAkfZFUXb4esD7wE0mH\nlBuVmZnZ2Kp8FbqkG4HtIuLp3P0q4KqI2KqHMbgK3cysQ65C707l78CzJU2+m5mZDaRBeAZ+GjBX\n0i9JrdD/Bji13JDMzMzGVuWr0AEkvQ14N7kRW0Rc2+PluwrdzKxDrkLvzkAkcABJ6wOrkl+jGhH3\n9HDZTuBmZh1yAu9O5Z+BS9pd0u3AHcAwcBcwp8yYzMzMxlrlEzjwdeCdwG0R8XpgJ2BuuSGZmZmN\nrUFI4C9GxMPASpImRMQlwNvLDsrMzGwsDUIr9MckrU56A9tPJT0IPFVyTGZmZmOq8o3Y8otbniPV\nJuwNrAH8NCIe6WEMbsRmZtYhN2LrziBUoX8lIl6OiBcj4vSI+D5weNlBmZmZjaVBSOA7N+i3a8+j\nMDMz66HKJnBJn8/vQd9C0o2Fz13ADR3MZ4akWyTdLumIBsP3lnS9pBskXSFp61FcDTMzsxVS2Wfg\nktYE1ga+BRxBeo0qwOJ2n3/n/yN+K/B+YCHwB2BmRMwrjPNO4OaIeELSDGBWRGxXNx8/Azcz65Cf\ngXensq3QI+IJ4AngE13MZjowPyLuApA0G9gDWJrAI+L3hfHnAlO7WJ6ZmdmoqGwV+iiZAiwodN+b\n+zWzP3Bpg3nMAAAHPUlEQVTBmEZkZmbWhsregY+Stuu9Jb0X2A/YvtHwWbNmLf0+NDTE0NBQl6GZ\nmQ2W4eFhhoeHyw5jYFT2GfhokLQd6Zn2jNx9JLAkIo6tG29r4JfAjIiY32A+fgZuZtYhPwPvzniv\nQr8G2EzSxpJWAfYCziuOIGlDUvL+VKPkbWZmVoZxXYUeES9JOhi4EJgAnBIR8yQdmIefCHyF1Nr9\neEmQ3r0+vayYzczMYJxXoY8WV6GbmXXOVejdGe9V6GZmZpU0rqvQR5N8DWlmZj3kBD5KliwpOwIz\ns2pZyXXAXXECHyW+Azczs17y9Y+ZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVZATuJmZWQU5gZuZmVWQ\nE7iZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVZATuJmZWQU5gZuZmVWQE7iZmVkFOYGbmZlVkBO4mZlZ\nBTmBm5mZVZATuJmZWQU5gZuZmVWQE7iZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVZATuJmZWQU5gZuZ\nmVWQE7iZmVkFOYGbmZlVkBO4mZlZBTmBm5mZVZATuJmZWQU5gZuZmVWQE7iZmVkFjesELmmGpFsk\n3S7piCbjfD8Pv17Str2O0czMrJFxm8AlTQB+CMwA3gTMlLRl3Ti7AptGxGbAAcDxPQ90FA0PD5cd\nQluqEGcVYgTHOdocp/WTcZvAgenA/Ii4KyJeBGYDe9SNsztwBkBEzAXWkrR+b8McPVU5qKsQZxVi\nBMc52hyn9ZPxnMCnAAsK3ffmfiONM3WM4zIzMxvReE7g0eZ4WsHpzMzMxowixmc+krQdMCsiZuTu\nI4ElEXFsYZwTgOGImJ27bwF2jIgH6uY1PgvRzKxLEVF/k2Rtmlh2ACW6BthM0sbAImAvYGbdOOcB\nBwOzc8J/vD55g3dAMzPrvXGbwCPiJUkHAxcCE4BTImKepAPz8BMj4gJJu0qaDzwNfLbEkM3MzJYa\nt1XoZmZmVTaeG7F1rAovfhkpRklDkp6QdG3+/EuvY8xxnCrpAUk3thin7LJsGWMfleU0SZdI+rOk\nmyQd0mS8sstzxDj7oUwlrSpprqTrJN0s6V+bjFd2eY4YZz+UZ45jQl7++U2G+4VZKyIi/GnjQ6pm\nnw9sDKwMXAdsWTfOrsAF+fs7gKv6MMYh4Lw+KM/3ANsCNzYZXmpZthljv5Tla4G35O+rAbf2277Z\nQZz9UqaT89+JwFXAu/utPNuMs1/K8x+BnzaKpV/Ksoof34G3rwovfmknRlj+p3E9FxGXA4+1GKXs\nsmwnRuiPsrw/Iq7L358C5gEb1I3WD+XZTpzQH2X6TP66CunC+NG6UUovz7zskeKEkstT0lRSkj65\nSSx9UZZV5ATeviq8+KWdGAN4V66qukDSm3oWXWfKLst29F1Z5l9VbAvMrRvUV+XZIs6+KFNJK0m6\nDngAuCQibq4bpS/Ks404+6E8vwscBixpMrwvyrKKnMDbV4UXv7SzrD8B0yJiG+AHwLljG1JX+v0l\nOn1VlpJWA84BvpjvcJcbpa67lPIcIc6+KNOIWBIRbyElkh0kDTUYrfTybCPOUstT0oeAByPiWlrX\nBJRellXkBN6+hcC0Qvc00pViq3Gm5n69MmKMEbG4Vu0WEXOAlSWt07sQ21Z2WY6on8pS0srAL4Cf\nRESjk3RflOdIcfZTmeYYngD+B3h73aC+KM+aZnH2QXm+C9hd0p3Az4D3Sfpx3Th9VZZV4gTevqUv\nfpG0CunFL+fVjXMesC8sfdNbwxe/lBmjpPUlKX+fTvopYaPnZmUruyxH1C9lmWM4Bbg5Io5rMlrp\n5dlOnP1QppLWlbRW/v5XwAeAa+tG64fyHDHOssszIo6KiGkR8XrgE8BvI2LfutFKL8uqGrcvculU\nVODFL+3ECHwM+Lykl4BnSAdVz0n6GbAjsK6kBcAxpJbzfVGW7cRIn5QlsD3wKeAGSbUT+FHAhtA/\n5dlOnPRHmb4OOEPSSqSbnDMj4uJ+OtbbjZP+KM+iAOjDsqwkv8jFzMysglyFbmZmVkFO4GZmZhXk\nBG5mZlZBTuBmZmYV5ARuZmZWQU7gZmZmFeQEblZxkg7J/07yTEkTJf2xvn/ZMZrZ6POLXMyq7/PA\nThGxSNJ7gd/V9y8vNDMbK74DN6swSScAbwB+LelLwC75+/HF/pLWkXRu/q9Uv5e0VZlxm1n3/CY2\ns4rL/yjibRHxqKS5wI4R8Vxd/x+Q/ivU1/Jd+nciYttSAzezrvgO3GxASJoCPBoRzzUYvD1wJkBE\nXAK8Ov9bTzOrKCdws8EgYAbw6xHGMbMB4QRuNjh2AeY0GXY5sDeApCHgoYh4qkdxmdkYcCt0s+oL\n0r+P3TQibqvrXzMLOFXS9aR/2fjp3oVnZmPBjdjMBoCk7YG9I+KgsmMxs95wAjczM6sgPwM3MzOr\nICdwMzOzCnICNzMzqyAncDMzswpyAjczM6sgJ3AzM7MKcgI3MzOroP8PjTHnSLXbQnQAAAAASUVO\nRK5CYII=\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x105cad150>"
+ ]
+ },
+ "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": [
+ "<matplotlib.figure.Figure at 0x1049112d0>"
+ ]
+ },
+ "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 B<ko,we have that vg<c<vp, which indicates that the phase velocity of a waveguide mode may be greater than the speed of light.but the group velocity will be lesser than the speed of light .\n"
+ ]
+ }
+ ],
+ "source": [
+ "#program to calculate the group velocity.\n",
+ "from sympy import symbols,sqrt,diff\n",
+ "\n",
+ "w,c,v,B,ko,kc=symbols('w,c,v,B,ko,kc');\n",
+ "ko=w/c;\n",
+ "B=sqrt(ko**2-kc**2);\n",
+ "v=diff(B,w);\n",
+ "vg=v**(-1);\n",
+ "vg=(c*B)/ko;\n",
+ "vp=w/B;\n",
+ "print \"group velocity=\",vg\n",
+ "print \"phase velocity=\",vp\n",
+ "print \"conclusion:since B<ko,we have that vg<c<vp, which indicates that the phase velocity of a waveguide mode may be greater than the speed of light.but the group velocity will be lesser than the speed of light .\""
+ ]
+ }
+ ],
+ "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_4_MICROWAVE_NETWORK_ANALYSIS_4.ipynb b/Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_4.ipynb
new file mode 100644
index 00000000..d2ff5acf
--- /dev/null
+++ b/Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_4.ipynb
@@ -0,0 +1,308 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 4 MICROWAVE NETWORK ANALYSIS"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example:4.1 page.no:187"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Matrix([[sqrt(2)*sqrt(a*b)/2], [sqrt(2)*Zte*sqrt(a*b)/2]])\n",
+ "which completes the transmission line equivalence for the TE10 mode \n"
+ ]
+ }
+ ],
+ "source": [
+ "#program to find the equivalent voltages and current .\n",
+ "from sympy import symbols,sqrt,Matrix\n",
+ "\n",
+ "a,b,A,Zte,V,I,C1,C2,P=symbols('a,b,A,Zte,V,I,C1,C2,P');\n",
+ "P=(a*b*A**2)/(4*Zte);\n",
+ "c=(1/2)*V*I;\n",
+ "d=(1/2)*(A**2)*C1*C2;\n",
+ "C1=sqrt((a*b)/2); # on comparision .\n",
+ "C2=sqrt((a*b)/2)*Zte; # on comparision .\n",
+ "c=Matrix([C1,C2]);\n",
+ "print c;\n",
+ "print \"which completes the transmission line equivalence for the TE10 mode \""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example:4.2 page.no:188"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "reflection coefficient -0.627245765824\n"
+ ]
+ }
+ ],
+ "source": [
+ "#program to compute reflection coefficient .\n",
+ "from math import pi,sqrt\n",
+ "\n",
+ "a=0.03485;b=0.01580;eipsilao=8.854*10**-12;muo=4*pi*10** -7;\n",
+ "f=4.5*10**9;\n",
+ "w=2*pi*f; # angular frequency .\n",
+ "# for z<0 region air filled.\n",
+ "eipsilar=2.56; # for z>0 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": [
+ "<matplotlib.figure.Figure at 0x104a20910>"
+ ]
+ },
+ "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
--- /dev/null
+++ b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_1_1.png
Binary files 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
--- /dev/null
+++ b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_2_1.png
Binary files 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
--- /dev/null
+++ b/Microwave_engineering__by_D.M.Pozar_/screenshots/chap_3_1.png
Binary files differ