tplquad#
- scipy.integrate.tplquad(функция, a, b, gfun, hfun, qfun, rfun, args=(), epsabs=1.49e-08, epsrel=1.49e-08)[источник]#
Вычислить тройной (определённый) интеграл.
Возвращает тройной интеграл от
func(z, y, x)изx = a..b,y = gfun(x)..hfun(x), иz = qfun(x,y)..rfun(x,y).- Параметры:
- функцияфункция
Функция или метод Python с как минимум тремя переменными в порядке (z, y, x).
- a, bfloat
Пределы интегрирования по x: a < b
- gfunфункция или число с плавающей точкой
Нижняя граничная кривая по y, которая является функцией, принимающей один аргумент с плавающей точкой (x) и возвращающей результат с плавающей точкой или число с плавающей точкой, указывающее на постоянную граничную кривую.
- hfunфункция или число с плавающей точкой
Верхняя граничная кривая по y (те же требования, что и gfun).
- qfunфункция или число с плавающей точкой
Нижняя граничная поверхность по z. Должна быть функцией, принимающей два числа с плавающей точкой в порядке (x, y) и возвращающей число с плавающей точкой или число с плавающей точкой, указывающее на постоянную граничную поверхность.
- rfunфункция или число с плавающей точкой
Верхняя граничная поверхность в z. (Те же требования, что и qfun.)
- argsкортеж, необязательный
Дополнительные аргументы для передачи в функция.
- epsabsfloat, опционально
Абсолютная погрешность, передаваемая непосредственно во внутреннее 1-D квадратурное интегрирование. По умолчанию 1.49e-8.
- epsrelfloat, опционально
Относительный допуск для внутренних одномерных интегралов. По умолчанию 1.49e-8.
- Возвращает:
- yfloat
Результирующий интеграл.
- abserrfloat
Оценка ошибки.
Смотрите также
quadАдаптивное интегрирование с использованием QUADPACK
fixed_quadГауссова квадратура фиксированного порядка
dblquadДвойные интегралы
nquadN-мерные интегралы
rombИнтеграторы для дискретных данных
simpsonИнтеграторы для дискретных данных
scipy.specialДля коэффициентов и корней ортогональных полиномов
Примечания
Для корректных результатов интеграл должен сходиться; поведение для расходящихся интегралов не гарантируется.
Подробности о процедурах уровня QUADPACK
quadвызывает процедуры из библиотеки FORTRAN QUADPACK. Этот раздел предоставляет подробности об условиях вызова каждой процедуры и краткое описание каждой процедуры. Для каждого уровня интегрирования,qagseиспользуется для конечных пределов илиqagieиспользуется, если любой предел (или оба!) бесконечны. Ниже приведено краткое описание из [1] для каждой подпрограммы.- qagse
является интегратором, основанным на глобально адаптивном разбиении интервала в сочетании с экстраполяцией, что устраняет эффекты особенностей подынтегральной функции нескольких типов. Интегрирование выполняется с использованием 21-точечной квадратуры Гаусса-Кронрода в каждом подынтервале.
- qagie
обрабатывает интегрирование по бесконечным интервалам. Бесконечный диапазон отображается на конечный интервал, а затем применяется та же стратегия, что и в
QAGSприменяется.
Ссылки
[1]Пиесенс, Роберт; де Донкер-Капенга, Элиза; Уберхубер, Кристоф В.; Каханер, Дэвид (1983). QUADPACK: Пакет подпрограмм для автоматического интегрирования. Springer-Verlag. ISBN 978-3-540-12553-2.
Примеры
Вычислить тройной интеграл от
x * y * z, поxв диапазоне от 1 до 2,yв диапазоне от 2 до 3,zв диапазоне от 0 до 1. То есть, \(\int^{x=2}_{x=1} \int^{y=3}_{y=2} \int^{z=1}_{z=0} x y z \,dz \,dy \,dx\).>>> import numpy as np >>> from scipy import integrate >>> f = lambda z, y, x: x*y*z >>> integrate.tplquad(f, 1, 2, 2, 3, 0, 1) (1.8749999999999998, 3.3246447942574074e-14)
Вычислить \(\int^{x=1}_{x=0} \int^{y=1-2x}_{y=0} \int^{z=1-x-2y}_{z=0} x y z \,dz \,dy \,dx\). Примечание: qfun/rfun принимает аргументы в порядке (x, y), хотя
fпринимает аргументы в порядке (z, y, x).>>> f = lambda z, y, x: x*y*z >>> integrate.tplquad(f, 0, 1, 0, lambda x: 1-2*x, 0, lambda x, y: 1-x-2*y) (0.05416666666666668, 2.1774196738157757e-14)
Вычислить \(\int^{x=1}_{x=0} \int^{y=1}_{y=0} \int^{z=1}_{z=0} a x y z \,dz \,dy \,dx\) для \(a=1, 3\).
>>> f = lambda z, y, x, a: a*x*y*z >>> integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(1,)) (0.125, 5.527033708952211e-15) >>> integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(3,)) (0.375, 1.6581101126856635e-14)
Вычислить трехмерный гауссов интеграл, который является интегралом гауссовой функции \(f(x,y,z) = e^{-(x^{2} + y^{2} + z^{2})}\), по \((-\infty,+\infty)\). То есть, вычислите интеграл \(\iiint^{+\infty}_{-\infty} e^{-(x^{2} + y^{2} + z^{2})} \,dz \,dy\,dx\).
>>> f = lambda x, y, z: np.exp(-(x ** 2 + y ** 2 + z ** 2)) >>> integrate.tplquad(f, -np.inf, np.inf, -np.inf, np.inf, -np.inf, np.inf) (5.568327996830833, 4.4619078828029765e-08)