exponenta event banner

integral3

Численно вычислить тройной интеграл

Описание

пример

q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax) аппроксимирует интеграл функции z = fun(x,y,z) над регионом xmin ≤ x ≤ xmax, ymin(x) ≤ y ≤ ymax(x) и zmin(x,y) ≤ z ≤ zmax(x,y).

пример

q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax,Name,Value) указывает дополнительные параметры с одним или несколькими Name,Value аргументы пары.

Примеры

свернуть все

Определите анонимную функцию f (x, y, z) = ysinx + zcosx.

fun = @(x,y,z) y.*sin(x)+z.*cos(x)
fun = function_handle with value:
    @(x,y,z)y.*sin(x)+z.*cos(x)

Интеграция по всему региону 0≤x≤π, 0≤y≤1 и - 1≤z≤1.

q = integral3(fun,0,pi,0,1,-1,1)
q = 2.0000

Определите анонимную функцию f (x, y, z) = xcosy + x2cosz.

fun = @(x,y,z) x.*cos(y) + x.^2.*cos(z)
fun = function_handle with value:
    @(x,y,z)x.*cos(y)+x.^2.*cos(z)

Определите пределы интеграции.

xmin = -1;
xmax = 1;
ymin = @(x)-sqrt(1 - x.^2);
ymax = @(x) sqrt(1 - x.^2);
zmin = @(x,y)-sqrt(1 - x.^2 - y.^2);
zmax = @(x,y) sqrt(1 - x.^2 - y.^2);

Вычислите определенный интеграл с помощью 'tiled' способ.

q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax,'Method','tiled')
q = 0.7796

Определите анонимную параметризованную функцию f (x, y, z) = 10/( x2 + y2 + z2 + a).

a = 2;
f = @(x,y,z) 10./(x.^2 + y.^2 + z.^2 + a);

Вычислите тройной интеграл по области - ∞≤x≤0, - 100≤y≤0 и - 100≤z≤0.

format long
q1 = integral3(f,-Inf,0,-100,0,-100,0)
q1 = 
     2.734244598320928e+03

Снова вычислите интеграл и задайте точность приблизительно до 9 значащих цифр.

q2 = integral3(f,-Inf,0,-100,0,-100,0,'AbsTol', 0,'RelTol',1e-9)
q2 = 
     2.734244599944285e+03

Использовать вложенные вызовы для integral3 и integral для вычисления объема 4-D сферы.

Объём 4-D сферы радиуса r равен

V4 (r) = ∫02π  0π  0π  0rr3 sin2 (θ) грех (ϕ) доктор dξ.

integral квадратурные функции в MATLAB ® непосредственно поддерживают интеграцию 1-D, 2-D и 3-D. Однако для решения интегралов 4-D и более высокого порядка необходимо вложить вызовы в решатели.

Создайте ручку функции f (r, θ) для подынтегрального выражения, используя мудрых элементом операторов (.^ и .*).

f = @(r,theta,phi,xi) r.^3 .* sin(theta).^2 .* sin(phi);

Затем создайте дескриптор функции, который вычисляет три интеграла с помощью integral3.

Q = @(r) integral3(@(theta,phi,xi) f(r,theta,phi,xi),0,pi,0,pi,0,2*pi);

Наконец, используйте Q как интеграл в вызове integral. Решение этого интеграла требует выбора значения радиуса r, поэтому используйте r = 2.

I = integral(Q,0,2,'ArrayValued',true)
I = 78.9568

Точный ответ - security2r42 Γ (2).

I_exact = pi^2*2^4/(2*gamma(2))
I_exact = 78.9568

Входные аргументы

свернуть все

Integrand, определяемый как дескриптор функции, определяет функцию, которая должна быть интегрирована по области xmin ≤ x ≤ xmax, ymin(x) ≤ y ≤ ymax(x), и zmin(x,y) ≤ z ≤ zmax(x,y). Функция fun должен принимать три массива одинакового размера и возвращать массив соответствующих значений. Он должен выполнять операции по элементам.

Типы данных: function_handle

Нижняя граница x, заданная как действительное скалярное значение, конечное или бесконечное.

Типы данных: double | single

Верхняя граница x, заданная как действительное скалярное значение, конечное или бесконечное.

Типы данных: double | single

Нижняя граница y, заданная как действительное скалярное значение, конечное или бесконечное. Также можно указать ymin быть дескриптором функции (функция x) при интегрировании в непрямоугольную область.

Типы данных: double | function_handle | single

Верхняя граница y, заданная как действительное скалярное значение, конечное или бесконечное. Также можно указать ymax быть дескриптором функции (функция x) при интегрировании в непрямоугольную область.

Типы данных: double | function_handle | single

Нижняя граница z, заданная как действительное скалярное значение, конечное или бесконечное. Также можно указать zmin быть дескриптором функции (функция x, y) при интегрировании в непрямоугольную область.

Типы данных: double | function_handle | single

Верхняя граница z, заданная как действительное скалярное значение, конечное или бесконечное. Также можно указать zmax быть дескриптором функции (функция x, y) при интегрировании в непрямоугольную область.

Типы данных: double | function_handle | single

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'AbsTol',1e-12 устанавливает абсолютный допуск погрешности, равный приблизительно 12 десятичным разрядам.

Абсолютный допуск ошибки, указанный как разделенная запятыми пара, состоящая из 'AbsTol' и неотрицательное вещественное число. integral3 использует допуск абсолютной ошибки для ограничения оценки абсолютной ошибки, | q - Q |, где q - вычисленное значение интеграла, а Q - (неизвестное) точное значение.integral3 может предоставить больше десятичных знаков точности, если уменьшить абсолютный допуск ошибки. Значение по умолчанию: 1e-10.

Примечание

AbsTol и RelTol работать вместе. integral3 может удовлетворять абсолютному допуску ошибки или относительному допуску ошибки, но не обязательно одновременно. Дополнительные сведения об использовании этих допусков см. в разделе Советы.

Пример: 'AbsTol',1e-12 устанавливает абсолютный допуск погрешности, равный приблизительно 12 десятичным разрядам.

Типы данных: double | single

Относительный допуск ошибки, указанный как разделенная запятыми пара, состоящая из 'RelTol' и неотрицательное вещественное число. integral3 использует относительный допуск ошибки для ограничения оценки относительной ошибки, | q - Q |/| Q |, где q - вычисленное значение интеграла, а Q - (неизвестное) точное значение.integral3 может предоставить более значимые цифры точности, если уменьшить относительный допуск ошибки. Значение по умолчанию: 1e-6.

Примечание

RelTol и AbsTol работать вместе. integral3 может удовлетворять относительному допуску ошибки или абсолютному допуску ошибки, но не обязательно одновременно. Дополнительные сведения об использовании этих допусков см. в разделе Советы.

Пример: 'RelTol',1e-9 устанавливает относительный допуск ошибки приблизительно на 9 значащих цифр.

Типы данных: double | single

Метод интеграции, заданный как разделенная запятыми пара, состоящая из 'Method' и один из способов, описанных ниже.

Метод интеграцииОписание
'auto'В большинстве случаев integral3 использует 'tiled' способ. Он использует 'iterated' когда любой из пределов интегрирования бесконечен. Это метод по умолчанию.
'tiled'integral3 требования integral для интеграции через xmin ≤ x ≤ xmax. Он вызывает integral2 с 'tiled' метод оценки двойного интеграла по ymin(x) ≤ y ≤ ymax(x) и zmin(x,y) ≤ z ≤ zmax(x,y).
'iterated'integral3 требования integral для интеграции через xmin ≤ x ≤ xmax. Он вызывает integral2 с 'iterated' метод оценки двойного интеграла по ymin(x) ≤ y ≤ ymax(x) и zmin(x,y) ≤ z ≤ zmax(x,y). Пределы интегрирования могут быть бесконечными.

Пример: 'Method','tiled' задает метод интеграции с мозаикой.

Типы данных: char | string

Совет

  • integral3 функция пытается удовлетворить:

    abs(q - Q) <= max(AbsTol,RelTol*abs(q))
    где q - вычисленное значение интеграла и Q является (неизвестным) точным значением. Абсолютные и относительные допуски обеспечивают способ сравнения точности и времени вычисления. Обычно точность интегрирования определяется относительным допуском. Однако, если abs(q) достаточно мал, абсолютный допуск определяет точность интегрирования. Как правило, следует совместно указывать как абсолютные, так и относительные допуски.

  • 'iterated' метод может быть более эффективным, если функция имеет разрывы в области интеграции. Однако наилучшая производительность и точность возникают при разделении интеграла в точках разрыва и суммировании результатов нескольких интеграций.

  • При интеграции по непрямоугольным областям наилучшая производительность и точность достигаются при любых или всех пределах: ymin, ymax, zmin, zmax являются дескрипторами функций. Избегайте установки нулевых значений функции integrand для интеграции в непрямоугольную область. Если это необходимо, укажите 'iterated' способ.

  • Используйте 'iterated' метод, когда любой или все пределы: ymin(x), ymax(x), zmin(x,y), zmax(x,y) являются неограниченными функциями.

  • При параметризации анонимных функций помните, что значения параметров сохраняются в течение срока действия дескриптора функции. Например, функция fun = @(x,y,z) x + y + z + a использует значение a в то время fun был создан. Если позже вы решите изменить значение a, необходимо переопределить анонимную функцию с новым значением.

  • Если задаются пределы интеграции с одинарной точностью или если fun возвращает результаты с одной точностью, может потребоваться указать большие абсолютные и относительные допуски ошибок.

  • Для решения интегралов 4-D и более высокого порядка можно вложить вызовы в integral, integral2, и integral3. Другой вариант - использовать integralN функция на сервере MATLAB ® File Exchange, которая решает интегралы порядков 4 - 6.

Ссылки

[1] Л. Ф. Шампин «Векторизированная адаптивная квадратура в MATLAB», Журнал вычислительной и прикладной математики, 211, 2008, стр. 131-140.

[2] Л. Ф. Шампин, «Программа MATLAB для квадратуры в 2D.» Прикладная математика и вычисления. Том 202, выпуск 1, 2008, стр. 266-274.

Представлен в R2012a