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 и yminX) ≤ y ≤ ymaxX). Функциональный 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 использует допуск абсолютной погрешности, чтобы ограничить оценку абсолютной погрешности, |qQ |, где q является вычисленным значением интеграла, и Q является (неизвестным) точным значением. integral2 может обеспечить больше десятичных разрядов точности, если вы уменьшаете допуск абсолютной погрешности. Значением по умолчанию является 1e-10.

Примечание

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

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

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

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

Примечание

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

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

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

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

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

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

Ссылки

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

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

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