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ξ.

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 и интегралы высшего порядка, можно вложить вызовы 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