File tree Expand file tree Collapse file tree 2 files changed +92
-0
lines changed Expand file tree Collapse file tree 2 files changed +92
-0
lines changed Original file line number Diff line number Diff line change 1+
2+ '''
3+ Numerical integration or quadrature for a smooth function f with known values at x_i
4+
5+ This method is the classical approch of suming 'Equally Spaced Abscissas'
6+
7+ method 2:
8+ "Simpson Rule"
9+
10+ '''
11+
12+ def method_2 (boundary , steps ):
13+ # "Simpson Rule"
14+ # int(f) = delta_x/2 * (b-a)/3*(f1 + 4f2 + 2f_3 + ... + fn)
15+ h = (boundary [1 ] - boundary [0 ]) / steps
16+ a = boundary [0 ]
17+ b = boundary [1 ]
18+ x_i = makePoints (a ,b ,h )
19+ y = 0.0
20+ y += (h / 3.0 )* f (a )
21+ cnt = 2
22+ for i in x_i :
23+ y += (h / 3 )* (4 - 2 * (cnt % 2 ))* f (i )
24+ cnt += 1
25+ y += (h / 3.0 )* f (b )
26+ return y
27+
28+ def makePoints (a ,b ,h ):
29+ x = a + h
30+ while x < (b - h ):
31+ yield x
32+ x = x + h
33+
34+ def f (x ): #enter your function here
35+ y = (x - 0 )* (x - 0 )
36+ return y
37+
38+ def main ():
39+ a = 0.0 #Lower bound of integration
40+ b = 1.0 #Upper bound of integration
41+ steps = 10.0 #define number of steps or resolution
42+ boundary = [a , b ] #define boundary of integration
43+ y = method_2 (boundary , steps )
44+ print 'y = {0}' .format (y )
45+
46+ if __name__ == '__main__' :
47+ main ()
Original file line number Diff line number Diff line change 1+ '''
2+ Numerical integration or quadrature for a smooth function f with known values at x_i
3+
4+ This method is the classical approch of suming 'Equally Spaced Abscissas'
5+
6+ method 1:
7+ "extended trapezoidal rule"
8+
9+ '''
10+
11+ def method_1 (boundary , steps ):
12+ # "extended trapezoidal rule"
13+ # int(f) = dx/2 * (f1 + 2f2 + ... + fn)
14+ h = (boundary [1 ] - boundary [0 ]) / steps
15+ a = boundary [0 ]
16+ b = boundary [1 ]
17+ x_i = makePoints (a ,b ,h )
18+ y = 0.0
19+ y += (h / 2.0 )* f (a )
20+ for i in x_i :
21+ #print(i)
22+ y += h * f (i )
23+ y += (h / 2.0 )* f (b )
24+ return y
25+
26+ def makePoints (a ,b ,h ):
27+ x = a + h
28+ while x < (b - h ):
29+ yield x
30+ x = x + h
31+
32+ def f (x ): #enter your function here
33+ y = (x - 0 )* (x - 0 )
34+ return y
35+
36+ def main ():
37+ a = 0.0 #Lower bound of integration
38+ b = 1.0 #Upper bound of integration
39+ steps = 10.0 #define number of steps or resolution
40+ boundary = [a , b ] #define boundary of integration
41+ y = method_1 (boundary , steps )
42+ print 'y = {0}' .format (y )
43+
44+ if __name__ == '__main__' :
45+ main ()
You can’t perform that action at this time.
0 commit comments