integral2

Численно вычислите двойной интеграл

Описание

пример

q = integral2(fun,xmin,xmax,ymin,ymax) аппроксимирует интеграл функции z = fun(x,y) по планарной области xmin ≤ x ≤ xmax и ymin(x) ≤ y ≤ ymax(x).

пример

q = integral2(fun,xmin,xmax,ymin,ymax,Name,Value) задает дополнительные опции с одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

Рассмотрим функцию

f(x,y)=1(x+y)(1+x+y)2.

Эта функция не определена, когда x и y являются нулем. integral2 лучше всего выполняется, когда особенности находятся на контуре интегрирования.

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

fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 )
fun = function_handle with value:
    @(x,y)1./(sqrt(x+y).*(1+x+y).^2)

Интегрирование по треугольной области, ограниченной 0x1 и 0y1-x.

ymax = @(x) 1 - x;
q = integral2(fun,0,1,0,ymax)
q = 0.2854

Определите функцию

f(θ,r)=rrcosθ+rsinθ(1+rcosθ+rsinθ)2

fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 );
polarfun = @(theta,r) fun(r.*cos(theta),r.*sin(theta)).*r;

Задайте функцию для верхнего предела r.

rmax = @(theta) 1./(sin(theta) + cos(theta));

Интегрирование по области, ограниченной 0θπ/2 и 0rrmax.

q = integral2(polarfun,0,pi/2,0,rmax)
q = 0.2854

Создайте анонимную параметризованную функцию f(x,y)=ax2+by2 с параметрами a=3 и b=5.

a = 3; 
b = 5;
fun = @(x,y) a*x.^2 + b*y.^2;

Оцените интеграл по области 0x5 и -5y0. Задайте 'iterated' метод и приблизительно 10 значащих цифр точности.

format long
q = integral2(fun,0,5,-5,0,'Method','iterated',...
'AbsTol',0,'RelTol',1e-10)
q = 
     1.666666666666666e+03

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

свернуть все

Интегранд, заданный как указатель на функцию, задает функцию, которая будет интегрирована по планарной области xmin ≤ x ≤ xmax и ymin(x)  ≤ <reservedrangesplaceholder0> ≤ ymax(x). Функция fun необходимо принять два массива одинакового размера и вернуть массив соответствующих значений. Он должен выполнять поэлементные операции.

Типы данных: function_handle

Нижний предел x, заданный как действительное скалярное значение, которое является либо конечным, либо бесконечным.

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

Верхний предел x, заданный как действительное скалярное значение, которое является либо конечным, либо бесконечным.

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

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

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

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

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

Примечание

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

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

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

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

Примечание

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

Пример: 'RelTol',1e-9 устанавливает допуск относительной погрешности приблизительно на 9 значащих цифр.

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

Метод интегрирования, заданный как разделенная разделенными запятой парами, состоящая из 'Method' и один из способов, описанных ниже.

Метод интегрированияОписание
'auto'В большинстве случаев integral2 использует 'tiled' способ. Он использует 'iterated' метод, когда любой из пределов интегрирования бесконечны. Это метод по умолчанию.
'tiled'integral2 преобразует область интегрирования в прямоугольную форму и по мере необходимости подразделяет ее на меньшие прямоугольные области. Пределы интегрирования должны быть конечными.
'iterated'integral2 вызывает integral для выполнения итерационного интеграла. Внешний интеграл оценивается по xmin ≤ x ≤ xmax. Внутренний интеграл оценивается по ymin(x) ≤ y ≤ ymax(x). Пределы интегрирования могут быть бесконечными.

Пример: 'Method','tiled' задает метод интегрирования с мозаикой.

Типы данных: char | string

Совет

  • integral2 функция пытается удовлетворить:

    abs(q - Q) <= max(AbsTol,RelTol*abs(q))
    где q - вычисленное значение интеграла и Q - (неизвестное) точное значение. Абсолютные и относительные погрешности обеспечивают способ снижения точности и времени расчета. Обычно относительная погрешность определяет точность интегрирования. Однако, если abs(q) является достаточно маленьким, абсолютная погрешность определяет точность интегрирования. Обычно необходимо задать как абсолютные так и относительные погрешности вместе.

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

  • При интегрировании по непрямоугольным областям лучшая эффективность и точность происходит при ymin, ymax, (или оба) являются указателями на функцию. Избегайте установки значений функции интегранда в нуле для интегрирования по непрямоугольной области. Если вы должны сделать это, задайте 'iterated' способ.

  • Используйте 'iterated' метод при ymin, ymax, (или оба) являются неограниченными функциями.

  • При параметризации анонимных функций имейте в виду, что значения параметров сохраняются в течение срока службы указателя на функцию. Для примера - функция fun = @(x,y) x + y + a использует значение a в то время fun был создан. Если вы позже решите изменить значение aнеобходимо переопределить анонимную функцию новым значением.

  • Если вы задаете пределы интегрирования с одной точностью, или если fun возвращает результаты с одной точностью, может потребоваться задать большие абсолютные и относительные допуски.

Ссылки

[1] Векторизованная адаптивная квадратура L.F. Shampine в 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