Part2 from math import * from simpson import * k=1 def f(x): return (exp(-(x**2))) E = error(f,-2.0,2.0,k) while(E > 1e-4): k += 1 E = error(f,-2.0,2.0,k) I = simpson(f,-2.0,2.0,k) print "Integral from [-2.0,2.0] of e^(-x^2) = ",I print "Error: ", E print "Minimal Intervals for 10^-4 = ",2**k print "" k=1 def f(x): return 8*(sqrt(1+cos(2*x))) E = error(f,0.0,4.0,k) while(E > 1e-4): k += 1 E = error(f,0.0,4.0,k) I = simpson(f,0.0,4.0,k) print "Integral from [0.0,4.0] of 8*(sqrt(1+cos(2*x))) = ",I print "Error: ", E print "Minimal Intervals for 10^-4 = ", 2**k print "" k=1 def f(x): return (100.0/(x**2)) E = error(f,1.0,3.0,k) while(E > 1e-4): k += 1 E = error(f,1.0,3.0,k) I = simpson(f,1.0,3.0,k) print "Integral from [1,3] of 100/x^2 = ",I print "Error: ", E print "Minimal Intervals for 10^-4 = ",2**k print "" k=8 def f(x): return (exp(-(x**2))) E = error(f,-2.0,2.0,k) while(E > 1e-8): k += 1 E = error(f,-2.0,2.0,k) I = simpson(f,-2.0,2.0,k) print "Integral from [-2.0,2.0] of e^(-x^2) = ",I print "Error: ", E print "Minimal Intervals for 10^-8 = ",2**k print "" k=8 def f(x): return 8*(sqrt(1+cos(2*x))) E = error(f,0.0,4.0,k) while(E > 1e-8): k += 1 E = error(f,0.0,4.0,k) I = simpson(f,0.0,4.0,k) print "Integral from [0.0,4.0] of 8*(sqrt(1+cos(2*x))) = ",I print "Error: ", E print "Minimal Intervals for 10^-8 = ",2**k print "" k=8 def f(x): return (100.0/(x**2)) E = error(f,1.0,3.0,k) while(E > 1e-8): k += 1 E = error(f,1.0,3.0,k) I = simpson(f,1.0,3.0,k) print "Integral from [1,3] of 100/x^2 = ",I print "Error: ", E print "Minimal Intervals for 10^-8 = ",2**k print ""