Как вычислить определенные и неопределенные интегралы в Python
Python — это универсальный язык программирования, который предлагает библиотеки и инструменты для научных вычислений и математических расчетов.
Многие существенные математические операции часто связаны с определенными и неопределенными интегралами. В этой статье мы рассмотрим пример выполнения вычислений интегралов с помощью Python.
Как вычислить определенные интегралы с одной переменной
Установить SciPy
Прежде чем мы начнем, нам нужно установить модуль SciPy. Он предоставляет набор математических алгоритмов и функций, которые мы будем использовать.
Вы можете сделать это, выполнив следующую команду в терминале:
pip install scipy
Чтобы вычислить определенные интегралы с одной переменной, нам нужно сначала импортировать quad из scipy.integrate. Это функция общего назначения, используемая для вычисления определенных интегралов с одной переменной.
from scipy.integrate import quad
Элементарные функции
Оттуда нам нужно определить подынтегральную функцию как функцию в Python.
Например, если бы мы хотели вычислить интеграл от х-квадрата, мы бы определили подынтегральную функцию как функцию Python следующим образом:
def integrand(x):
return x**2
Как только мы определим подынтегральную функцию, мы можем вычислить определенный интеграл, используя счетверенную функцию следующим образом:
print(quad(integrand, 0, 1))
# (0.33333333333333337, 3.700743415417189e-15)
В приведенном выше коде 0 представляет собой нижний предел интегрирования, а 1 — верхний предел интегрирования. Их может быть любое другое число.
В этом примере мы вычисляем, что оценочный результат интеграла от 0 до 1 от X² составляет приблизительно 0,333 с абсолютной ошибкой примерно 3,7e-15.
Функция quad возвращает кортеж оценки определенного integrand, за которым следует абсолютная ошибка оценки.
Четверная функция, по сути, оценивает подынтегральную функцию при нескольких различных значениях между нашими пределами интегрирования, чтобы иметь возможность вычислить оценку интеграла.
Другой пример: если бы я хотел вычислить интеграл от (x+1)/x**2. Сначала мы определили бы его как функцию в Python и передали бы в функцию quad вместе с ограничениями интеграции:
from scipy.integrate import quad
def integrand(x):
return(x+1)/x**2
print(quad(integrand, 1, 2))
# (1.1931471805599452, 1.3246594716242401e-14)
В этом примере мы вычисляем, что оценочный результат интеграла от 1 до 2 от x +1 по всему x-квадрату составляет приблизительно 1,19 с абсолютной ошибкой примерно 1,32e-14.
Другие общие функции
Если мы хотим использовать общие математические функции, такие как sin(x) или log(x), мы можем использовать другой пакет Python для научных вычислений — NumPy. Вы можете установить пакет с помощью следующей команды:
pip install numpy
Импортируя его, мы получаем доступ к этим общим функциям, которые мы можем использовать в нашем подынтегральном выражении:
from scipy.integrate import quad
from numpy import log, sin
def integrand(x):
return log(sin(x))
print(quad(integrand, 0, 2))
# (-1.1022223889049558, 1.2237126744196256e-15)
В этом примере мы вычисляем, что оценочный результат интеграла от 0 до 2 от log(sin(x)) приблизительно равен -1,10 с абсолютной ошибкой примерно 1,22e-15.
Полный список математических функций, которые предоставляет NumPy, находится в их документации.
Как использовать константы
NumPy также предоставляет полезные константы, такие как e и pi, а также inf. Это представление с плавающей запятой положительной бесконечности. Мы можем использовать его для вычисления определенного интеграла, который сходится.
from scipy.integrate import quad
from numpy import inf, exp
def integrand(x):
return exp(-x)
print(quad(integrand, 0, inf))
# (1.0000000000000002, 5.842606742906004e-11)
В этом примере мы вычисляем, что оценочный результат интеграла e, возведённого в -x от 0 до бесконечности, приблизительно равен 1,00 с абсолютной ошибкой примерно 5,84e-11.
Как вычислить интегралы от нескольких переменных
Двойные интегралы
Для вычисления двойных интегралов нам нужно импортировать функцию dblquad из scipy.integrate:
from scipy.integrate import dblquad
Мы определяем подынтегральную функцию аналогичным образом, чтобы определить ее с одной переменной, только на этот раз вместо этого мы указали два аргумента.
def integrand(y, x):
return x*y**2
Затем мы можем вычислить определенный интеграл, используя функцию dblquad, заданную scipy.
Обратите внимание, что подынтегральное выражение — это функция, которая должна принимать y в качестве первого параметра и x в качестве второго параметра.
print(dblquad(integrand, 0, 1, 2, 4))
# (9.333333333333334, 2.0679162295394134e-13)
В этом примере мы подсчитали, что оценочный результат двойного интеграла x, умноженного на y², от x = 0 до 1 и от y = 2 до y = 4 составляет приблизительно 9,33 с абсолютной ошибкой примерно 2,07e-13.
Функция требует, чтобы мы передали подынтегральное выражение, нижний и верхний пределы интегрирования для x, а затем нижний и верхний пределы интегрирования для y.
Переменные пределы
Чтобы вычислить интегралы с переменными пределами, нам нужно определить функции нижнего и верхнего пределов интегрирования для y через x:
def upper_limit_y(x):
return x**2
def lower_limit_y(x):
return x
def integrand(y, x):
return x+y
print(dblquad(integrand, 0, 2, lower_limit_y, upper_limit_y))
В этом примере мы вычисляем, что расчетный результат двойного интеграла x+y от x = 0 до x = 2 и от y = x до y = X² составляет приблизительно 3,2 с абсолютной ошибкой примерно 1,10e- 13.
Тройные интегралы
Для вычисления тройных интегралов мы можем использовать функцию tplquad:
from scipy.integrate import tplquad
def integrand(z, y, x):
return z*(x+y+z)
print(tplquad(integrand, 0, 1, 4, 5, 0, 1))
# (2.8333333333333335, 3.6983326566167174e-14)
Функция требует, чтобы мы передали аналогичные аргументы, являющиеся верхним и нижним пределами интегрирования по x, y и z.
В этом примере мы рассчитываем, что предполагаемый результат тройного интеграла от z, умноженного на (x+y+z) от x = 0 до x = 1, y = 4 до y = 5 и от z = 0 до z = 1 составляет примерно 2,83 с абсолютной ошибкой 3,70e-14:
Как вычислить неопределенные интегралы с одной переменной
Чтобы вычислить неопределенные интегралы с одной переменной с помощью Python, нам нужно использовать библиотеку SymPy. Он используется для символьных вычислений и включает точные вычисления с использованием переменных. Чтобы установить его, установите модуль SymPy:
pip install sympy
После его установки мы можем импортировать Symbol и интегрировать методы из sympy:
from sympy import Symbol, integrate
Сначала нам нужно определить переменные, используемые в подынтегральной функции:
x = Symbol('x')
После этого мы можем интегрировать функцию, используя метод интеграции, который предоставляет SymPy. Он ожидает два аргумента: первый — подынтегральная функция, а второй — переменная, по которой мы интегрируем.
Например, если мы хотим интегрировать X² относительно x, мы можем определить подынтегральное выражение в Python как x**2:
print(integrate(x**2, x))
# (x**3)/3
В этом примере мы вычисляем интеграл от X², который является x³ над 3.
Обратите внимание, что SymPy не добавляет константу интегрирования, но это подразумевается.
SymPy также предоставляет другие общие функции, такие как sin(x) и exp(x), которые мы можем использовать.
Прежде чем использовать их, нам сначала нужно импортировать их из sympy:
from sympy import Symbol, integrate, sin
Затем, используя импортированную функцию sin, мы можем вычислить интеграл от sin(x).
x = Symbol('x')
print(integrate(sin(x), x))
# -cos(x)
В этом примере мы вычисляем интеграл от sin(x), который равен -cos(x):
Sympy предоставляет полный список математических функций, которые вы можете использовать в своей документации.
Краткое содержание
В этом уроке мы рассмотрели основы того, как вычислять как определенные, так и неопределенные интегралы в Python. Мы также рассмотрели, как вычислять интегралы от элементарных функций, которые включали в себя общие математические функции, а также с использованием констант.
Мы использовали популярные библиотеки Python для научных вычислений и рассмотрели примеры вычисления интегралов.
Если вам нравится то, что я пишу, рассмотрите возможность подписки на мой канал YouTube.
Заключение:
Статья останется не доработанной. Но мы ее опубликуем. Необходимо исправить формулы с самом тексте, не могу столько времени уделить на это. Возможно на выходных.
Удачного кодирования!