n =10
def simpson(f, a, b, n):
if n % 2 != 0:
raise ValueError("Число интервалов n должно быть чётным")
h = (b - a) / n
x = a
total = f(a) + f(b) # начальные и конечные значения
# Суммируем с коэффициентами 4 и 2
for i in range(1, n):
x += h
if i % 2 == 0:
total += 2 * f(x) # чётные индексы
else:
total += 4 * f(x) # нечётные индексы
return total * h / 3
def f(x):
return x**2
result = simpson(f, 0, 1, n=10)
print(f"Метод Симпсона: {result}")
#прямоугольников
def left_rect(f, a, b, n):
h = (b - a) / n
total = 0.0
x = a
for _ in range(n):
total += f(x)
x += h
return total * h
def right_rect(f, a, b, n):
h = (b - a) / n
total = 0.0
x = a + h # начинаем с первой правой точки
for _ in range(n):
total += f(x)
x += h
return total * h
def mid_rect(f, a, b, n):
h = (b - a) / n
total = 0.0
x = a + h/2
for _ in range(n):
total += f(x)
x += h
return total * h
print(f"Левые: {left_rect(f, 0, 1, n):.6f}")
print(f"Правые: {right_rect(f, 0, 1, n):.6f}")
print(f"Средние: {mid_rect(f, 0, 1, n):.6f}")
#трапеций
def trapezoid(f, a, b, n):
h = (b - a) / n
total = (f(a) + f(b)) / 2.0
x = a + h
for i in range(1, n):
total += f(x)
x += h
return total * h
result = trapezoid(f, 0, 1, n)
print(f"Метод трапеций (n={n}): {result:.8f}")