Методы вычисления интегралов на Python
Первая функция вычисляет интеграл методом средних прямоугольников. Вторая - с помощью правила Буля. Вопрос: в задании нужно, чтобы пользователь вводил значения n1 и n2 - кол-во участков разбиения функции. Но самое интересное, что правило Буля работает только для n = 4. Я ведь прав? То есть, по сути, для первого метода оставляем запрос на ввод n1 и n2, а для правила Буля делаем n = 4.
def trianmethod(a, b, n):
result = 0
h = (b - a) / n
for j in range(n):
result += func(a + h * (j + 0.5))
result *= h
return result
def boolesrule(a, b, n):
h = (b - a) / n
sum = 0
bl = ((7 * func(a) + 32 * func(a + h) + 12 * func(a + 2 * h) +
32 * func(a + 3 * h) + 7 * func(a + 4 * h)) * 2 * h / 45)
sum += bl
return sum
Ответы (1 шт):
Автор решения: blvze_bmstu
→ Ссылка
Так, ребят, нашел ответ на свой же вопрос. Для правила Буля можно использовать любые значения N. Просто в зависимости от индекса аргумента X, мы будем умножать зачение функции в этой точке на то или иное число. Вот пример кода:
def boolesrule(a, b, n):
result = 0
h = (b - a) / n
for i in range(0, n+1):
if i == 0 or i == n:
result += 7 * func(a)
elif i % 2 != 0:
result += 32 * func(a)
elif i % 2 == 0 and i % 4 != 0:
result += 12 * func(a)
elif i % 4 == 0:
result += 14 * func(a)
a += h
result *= (2 * h) / 45
return result