интеграл

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

Синтаксис

q = integral(fun,xmin,xmax)
q = integral(fun,xmin,xmax,Name,Value)

Описание

пример

q = integral(fun,xmin,xmax) численно интегрирует функциональный fun от xmin до xmax с помощью глобальной адаптивной квадратуры и ошибочных допусков по умолчанию.

пример

q = integral(fun,xmin,xmax,Name,Value) задает дополнительные опции с одним или несколькими аргументами пары Name,Value. Например, задайте 'WayPoints', сопровождаемый вектором вещественных или комплексных чисел, чтобы указать на отдельные моменты для интегратора, чтобы использовать.

Примеры

свернуть все

Создайте функцию f(x)=e-x2(lnx)2.

fun = @(x) exp(-x.^2).*log(x).^2;

Оцените интеграл от x=0 до x=Inf.

q = integral(fun,0,Inf)
q = 1.9475

Создайте функцию f(x)=1/(x3-2x-c) с одним параметром, c.

fun = @(x,c) 1./(x.^3-2*x-c);

Оцените интеграл от x=0 до x=2 в c=5.

q = integral(@(x)fun(x,5),0,2)
q = -0.4605

Создайте функцию f(x)=ln(x).

fun = @(x)log(x);

Оцените интеграл от x=0 до x=1 с ошибочными допусками по умолчанию.

format long
q1 = integral(fun,0,1)
q1 = 
  -1.000000010959678

Оцените интеграл снова, на этот раз с 12 десятичными разрядами точности. Обнулите RelTol так, чтобы integral только попытался удовлетворить допуск абсолютной погрешности.

q2 = integral(fun,0,1,'RelTol',0,'AbsTol',1e-12)
q2 = 
  -1.000000000000010

Создайте функцию f(z)=1/(2z-1).

fun = @(z) 1./(2*z-1);

Объединяйтесь в комплексной плоскости по треугольному пути от 0 до 1+1i к 1-1i к 0 путем определения waypoints.

q = integral(fun,0,0,'Waypoints',[1+1i,1-1i])
q = 0.0000 - 3.1416i

Создайте функцию с векторным знаком f(x)=[sinx,sin2x,sin3x,sin4x,sin5x] и объединяйтесь от x=0 до x=1. Задайте 'ArrayValued',true, чтобы оценить интеграл функции с векторным знаком или со знаком массива.

fun = @(x)sin((1:5)*x);
q = integral(fun,0,1,'ArrayValued',true)
q = 1×5

    0.4597    0.7081    0.6633    0.4134    0.1433

Создайте функцию f(x)=x5e-xsinx.

fun = @(x)x.^5.*exp(-x).*sin(x);

Оцените интеграл от x=0 до x=Inf, настроив абсолютные и относительные допуски.

format long
q = integral(fun,0,Inf,'RelTol',1e-8,'AbsTol',1e-13)
q = 
 -14.999999999998364

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

свернуть все

Подынтегральное выражение, заданное как указатель на функцию, который задает функцию, которая будет интегрирована от xmin до xmax.

Для проблем со скалярным знаком функциональный y = fun(x) должен принять аргумент вектора, x, и возвратить векторный результат, y. Это обычно означает, что fun должен использовать операторы массивов вместо матричных операторов. Например, используйте .* (времена), а не * (mtimes). Если вы устанавливаете опцию 'ArrayValued' на true, то fun должен принять скаляр и возвратить массив фиксированного размера.

Нижний предел x, заданного как действительное (конечный или бесконечный) скалярное значение или комплексное (конечное) скалярное значение. Если или xmin или xmax являются комплексными, то integral аппроксимирует интеграл по траектории от xmin до xmax по пути к прямой линии.

Типы данных: double | single
Поддержка комплексного числа: Да

Верхний предел x, заданного как вещественное число (конечный или бесконечный) или (конечное) комплексное число. Если или xmin или xmax являются комплексными, integral аппроксимирует интеграл по траектории от xmin до xmax по пути к прямой линии.

Типы данных: double | single
Поддержка комплексного числа: Да

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

Примечание

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

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

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

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

Примечание

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

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

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

Функциональный флаг со знаком массива, заданный как пара, разделенная запятой, состоящая из 'ArrayValued' и числового или логического 1 (true) или 0 (false). Установите этот флаг на true или 1 указывать, что fun является функцией, которая принимает скалярный вход и возвращает вектор, матрицу или массив N-D вывод.

Значение по умолчанию false указывает, что fun является функцией, которая принимает векторный вход и возвращает векторный выходной параметр.

Пример: 'ArrayValued',true указывает, что подынтегральное выражение является функцией со знаком массива.

Интегрирование waypoints, заданный как пара, разделенная запятой, состоящая из 'Waypoints' и вектор вещественных или комплексных чисел. Используйте waypoints, чтобы указать на точки в интервале интегрирования, что вы хотели бы, чтобы интегратор использовал в начальной mesh:

  • Добавьте больше точек оценки около интересных функций функции, такой как локальные экстремальные значения.

  • Объединяйтесь эффективно через разрывы подынтегрального выражения путем определения местоположений разрывов.

  • Выполните комплексные контурные интегрирования путем определения комплексных чисел как waypoints. Если xmin, xmax или какая-либо запись waypoints вектора являются комплексными, то интегрирование выполняется по последовательности путей к прямой линии в комплексной плоскости. В этом случае все пределы интегрирования и waypoints должны быть конечными.

Не используйте waypoints, чтобы задать особенности. Вместо этого разделите интервал и добавьте, что результаты разделяют интеграции с особенностями в конечных точках.

Пример: 'Waypoints',[1+1i,1-1i] задает два комплекса waypoints вдоль интервала интегрирования.

Типы данных: single | double
Поддержка комплексного числа: Да

Советы

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

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

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

Ссылки

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

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