exponenta event banner

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)

Интегрируйте треугольную область, ограниченную 0≤x≤1 и 0≤y≤1-x.

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

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

f (start, r) = rrcosü + rsinstart( 1 + rcosü + rsinstart) 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 и 0≤r≤rmax.

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;

Вычислите интеграл по области 0≤x≤5 и - 5≤y≤0. Укажите 'iterated' способ и приблизительно 10 значащих цифр точности.

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

Входные аргументы

свернуть все

Integrand, заданный как дескриптор функции, определяет функцию, которая должна быть интегрирована по плоской области xmin ≤ x ≤ xmax и ymin(x) ≤ y ≤ 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 использует допуск абсолютной ошибки для ограничения оценки абсолютной ошибки, | q - 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) достаточно мал, абсолютный допуск определяет точность интегрирования. Как правило, следует совместно указывать как абсолютные, так и относительные допуски.

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

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

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

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

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

Ссылки

[1] Л. Ф. Шампин «Векторизированная адаптивная квадратура в MATLAB ®», Журнал вычислительной и прикладной математики, 211, 2008, стр. 131-140.

[2] Л. Ф. Шампин, «Программа MATLAB для квадратуры в 2D.» Прикладная математика и вычисления. Том 202, выпуск 1, 2008, стр. 266-274.

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