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+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 ≤ xmaxymin X) ≤ y ≤ ymaxX), и zminx, y ) ≤ z ≤ zmaxx, 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 использует допуск абсолютной погрешности, чтобы ограничить оценку абсолютной погрешности, |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' метод может быть более эффективным, когда ваша функция имеет разрывы в области интегрирования. Однако лучшая производительность и точность происходят, когда вы разделяете интеграл в точках разрыва и суммируете результаты нескольких интегрирований.

  • Когда интеграция по непрямоугольным областям, лучшей производительности и точности происходит когда любые из пределов: yminymax 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 и интегралы высшего порядка, можно вложить вызовы integralintegral2, и integral3. Другая опция должна использовать integralN функция на MATLAB® File Exchange, который решает интегралы порядков 4 - 6.

Ссылки

[1] Л.Ф. Шемпин “Векторизовал Адаптивную Квадратуру в MATLAB”, Журнал Вычислительной и Прикладной математики, 211, 2008, pp.131–140.

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

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