integral3

Численно оцените тройной интеграл

Синтаксис

q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax)
q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax,Name,Value)

Описание

пример

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+zпотому чтоx.

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)=xпотому чтоy+x2потому чтоz.

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(ϕ)докторdθdϕdξ.

Квадратурные функции integral в MATLAB® непосредственно поддерживают 1D, 2D, и 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) ≤ 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

Примечание

AbsTol и RelTol работают совместно. integral3 может удовлетворить допуск абсолютной погрешности или допуск относительной погрешности, но не обязательно обоих. Для получения дополнительной информации об использовании этих допусков смотрите раздел Tips.

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

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

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

Примечание

RelTol и AbsTol работают совместно. integral3 может удовлетворить допуск относительной погрешности или допуск абсолютной погрешности, но не обязательно обоих. Для получения дополнительной информации об использовании этих допусков смотрите раздел Tips.

Пример: '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 является указателями на функцию. Постарайтесь не устанавливать значения функции подынтегрального выражения обнулять, чтобы объединяться по непрямоугольной области. Если необходимо сделать это, задайте метод '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, pp.131–140.

[2] Л.Ф. Шемпин, "Программа MATLAB для Квадратуры в 2D". Прикладная математика и Вычисление. Издание 202, Выпуск 1, 2008, стр 266–274.

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