integral2

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

Синтаксис

q = integral2(fun,xmin,xmax,ymin,ymax)
q = integral2(fun,xmin,xmax,ymin,ymax,Name,Value)

Описание

пример

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)=rrпотому чтоθ+rsinθ(1+rпотому чтоθ+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) ≤ 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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' может быть более эффективным, когда ваша функция имеет разрывы в области интегрирования. Однако лучшая производительность и точность происходят, когда вы разделяете интеграл в точках разрыва и суммируете результаты нескольких интегрирований.

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

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

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