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.

Примеры

свернуть все

Задайте анонимную функцию.

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

Интегрируйтесь по области, и.

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

Задайте анонимную функцию.

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

Задайте анонимную параметризованную функцию.

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

Оцените тройной интеграл по области, и.

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

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

свернуть все

Подынтегральное выражение, заданное как указатель на функцию, задает функцию, которая будет интегрирована по области 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) при интеграции по непрямоугольной области.

Типы данных: удвойтесь | function_handle | единственный

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

Типы данных: удвойтесь | function_handle | единственный

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

Типы данных: удвойтесь | function_handle | единственный

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

Типы данных: удвойтесь | function_handle | единственный

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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). Пределы интегрирования могут быть бесконечными.

Пример: 'Метод', 'размещенный рядом', задает мозаичный метод интегрирования.

Типы данных: 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 возвращает результаты с одинарной точностью, вы, возможно, должны задать большие допуски абсолютной и относительной погрешности.

Ссылки

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

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

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

Была ли эта тема полезной?