Найти тему
Антифап

Интеграл на питоне (Сумма Римана)

В данной статье имеется ввиду определенный интеграл.

Сам интеграл на питоне
Сам интеграл на питоне

Определенный интеграл - грубо говоря, площадь области на отрезке от а до б, находящейся между функцией и осью ОХ на координатной плоскости.

Иначе можно сказать, что определенный интеграл - это площадь криволинейной трапеции.

Площадь криволинейной трапеции
Площадь криволинейной трапеции

В школе учат вычислять интегралы с помощью формулы Ньютона-Лейбница:

Формула Ньютона-Лейбница, где f(x) - подынтегральная функция, F(х) - первообразная этой функции
Формула Ньютона-Лейбница, где f(x) - подынтегральная функция, F(х) - первообразная этой функции

Первообразная функции - функция, производная которой даст исходную функцию. Например первообразная для функции 2х будет х в степени 2 (производная от х в квадрате будет 2х).

Первообразные на питоне реализовать весьма трудно, поэтому остановлюсь на сумме Римана.

Сумма Римана - сумма, максимально приближенная к площади фигуры.

Сумма Римана
Сумма Римана

Каждый многочлен этой суммы состоит из функции и изменения переменной.

Суть решения интеграла с помощью суммы Римана заключается в том, чтобы разбить отрезок от а до б на бесконечное множество бесконечно малых отрезков. Далее нужно взять на каждом отрезке любую одну точку. Изменение переменной- разница между двумя такими соседними точками.

По сути, отрезок аб можно не разбивать на кучу малых отрезков. Можно просто взять огромное множество точек этого отрезка, вычислить между ними разницу и подставить в многочлен суммы.

Этот метод решения был задействован на первом скрине.

Ниже показан пример работы этой функции
-5

код для тех, кому лень переписывать со скрина

def rangef(a, b, step):
massive = []
n = a
while (n + step) < b:
massive.append(n)
n += step
return massive


def integral(func, a, b, step=0.000099, rounded=3):
piece = tuple(rangef(a, b, step))
differences = tuple(abs(piece[i] - piece[i - 1]) for i in range(0, len(piece)))
s = 0
for i in range(0, len(differences)):
s += func(piece[i]) * differences[i]
return round(s, rounded)

Наука
7 млн интересуются