TheAlgorithms-Python
50 строк · 1.0 Кб
1"""
2Numerical integration or quadrature for a smooth function f with known values at x_i
3
4This method is the classical approach of suming 'Equally Spaced Abscissas'
5
6method 1:
7"extended trapezoidal rule"
8
9"""
10
11
12def method_1(boundary, steps):13# "extended trapezoidal rule"14# int(f) = dx/2 * (f1 + 2f2 + ... + fn)15h = (boundary[1] - boundary[0]) / steps16a = boundary[0]17b = boundary[1]18x_i = make_points(a, b, h)19y = 0.020y += (h / 2.0) * f(a)21for i in x_i:22# print(i)23y += h * f(i)24y += (h / 2.0) * f(b)25return y26
27
28def make_points(a, b, h):29x = a + h30while x < (b - h):31yield x32x = x + h33
34
35def f(x): # enter your function here36y = (x - 0) * (x - 0)37return y38
39
40def main():41a = 0.0 # Lower bound of integration42b = 1.0 # Upper bound of integration43steps = 10.0 # define number of steps or resolution44boundary = [a, b] # define boundary of integration45y = method_1(boundary, steps)46print(f"y = {y}")47
48
49if __name__ == "__main__":50main()51