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)

Интеграция по области 0xπ, 0y1, и -1z1.

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);

Оцените тройной интеграл по области -x0, -100y0, и -100z0.

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π0rr3sin2(θ)sin(ϕ)drdθdϕdξ.

The 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

Точный ответ: π2r42Γ(2).

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

Входные параметры

свернуть все

Интегранд, заданный как указатель на функцию, задает функцию, которая будет интегрирована по области xmin ≤ x ≤ xmax, ymin(x)  ≤ <reservedrangesplaceholder0> ≤ ymax(x), и zmin(x,y)  ≤ <reservedrangesplaceholder0> ≤ 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 использует абсолютный допуск ошибки, чтобы ограничить оценку абсолютной ошибки, |<reservedrangesplaceholder3> - 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) является достаточно маленьким, абсолютная погрешность определяет точность интегрирования. Обычно необходимо задать как абсолютные так и относительные погрешности вместе.

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

  • При интегрировании по непрямоугольным областям лучшая эффективность и точность происходит, когда любой или все пределы: ymin, ymax, zmin, zmax являются указателями на функцию. Избегайте установки значений функции интегранда в нуле для интегрирования по непрямоугольной области. Если вы должны сделать это, задайте '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® Обмен файлами, который решает интегралы порядков 4 - 6.

Ссылки

[1] L.F. Shampine «Vectorized Adaptive Quadrature in MATLAB», Journal of Computational and Applied Mathematics, 211, 2008, pp.131-140.

[2] L.F. Shampine, «Программа MATLAB for Quadrature in 2D.» Прикладная математика и расчеты. Том 202, Выпуск 1, 2008, стр. 266-274.

Введенный в R2012a