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


import math

def f(x):

    return 1 / (1 + x**4)

a = 0

b = 4

n = 100  # количество разбиений

# шаг

h = (b - a) / n

# Метод левых прямоугольников

def left_rectangles(a, b, n):

    h = (b - a) / n

    s = 0

    for i in range(n):

        x = a + i * h

        s += f(x)

    return h * s

# Метод правых прямоугольников

def right_rectangles(a, b, n):

    h = (b - a) / n

    s = 0

    for i in range(1, n + 1):

        x = a + i * h

        s += f(x)

    return h * s

# Метод средних прямоугольников

def middle_rectangles(a, b, n):

    h = (b - a) / n

    s = 0

    for i in range(n):

        x = a + h * (i + 0.5)

        s += f(x)

    return h * s

# Метод трапеций

def trapezoid(a, b, n):

    h = (b - a) / n

    s = (f(a) + f(b)) / 2

    for i in range(1, n):

        x = a + i * h

        s += f(x)

    return h * s

# Метод Симпсона

def simpson(a, b, n):

    if n % 2 != 0:

        n += 1

    h = (b - a) / n

    s = f(a) + f(b)

    for i in range(1, n):

        x = a + i * h

        if i % 2 == 0:

            s += 2 * f(x)

        else:

            s += 4 * f(x)

    return h * s / 3

print("Интеграл от 0 до 4 функции 1/(1+x^4)")

print("-" * 45)

print(f"Метод левых прямоугольников:   {left_rectangles(a, b, n):.10f}")

print(f"Метод правых прямоугольников:  {right_rectangles(a, b, n):.10f}")

print(f"Метод средних прямоугольников: {middle_rectangles(a, b, n):.10f}")

print(f"Метод трапеций:                {trapezoid(a, b, n):.10f}")

print(f"Метод Симпсона:                {simpson(a, b, n):.10f}")