Загрузка данных


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}")