Мне было интересно, как я могу автоматизировать этот код:
import numpy as np
import matplotlib.pyplot as plt
f = lambda x: x**2 / np.pi**2 * np.sin(x)
a = 2*np.pi
b = 0
midpoint = lambda n: (a/n) * (f(a/(2*n)) + f(a/(2*n)+(a/n)) + f(a/(2*n)+(2*a/n)))
print(midpoint(3))
midpoint = lambda n: (a/n) * (f(a/(2*n)) + f(a/(2*n)+(a/n)) + f(a/(2*n)+(2*a/n)) + f(a/(2*n)+(3*a/n)))
print(midpoint(4))
midpoint = lambda n: (a/n) * (f(a/(2*n)) + f(a/(2*n)+(a/n)) + f(a/(2*n)+(2*a/n)) + f(a/(2*n)+(3*a/n)) + f(a/(2*n)+(4*a/n)))
print(midpoint(5))
midpoint = lambda n: (a/n) * (f(a/(2*n)) + f(a/(2*n)+(a/n)) + f(a/(2*n)+(2*a/n)) + f(a/(2*n)+(3*a/n)) + f(a/(2*n)+(4*a/n)) + f(a/(2*n)+(5*a/n)))
print(midpoint(6))
midpoint = lambda n: (a/n) * (f(a/(2*n)) + f(a/(2*n)+(a/n)) + f(a/(2*n)+(2*a/n)) + f(a/(2*n)+(3*a/n)) + f(a/(2*n)+(4*a/n)) + f(a/(2*n)+(5*a/n)) + f(a/(2*n)+(6*a/n)))
print(midpoint(7))
Количество членов в каждой средней точке соответствует значению внутри оператора печати
Например, первая средняя точка функция имеет 3 члена, следовательно, оценивается в 3. Вторая функция средней точки имеет 4 члена, следовательно, оценивается в 4. Мне нужно это значение от go до 20, без добавления дополнительного члена каждый раз.
Если все все сделано правильно, числа должны становиться все ближе и ближе к числу "-4"
для всех, кто интересуется, это интеграция средней точки