интеграл

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

Синтаксис

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

Примеры

свернуть все

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

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

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

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

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

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

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

fun = @(x)log(x);

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

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

Оцените интеграл снова, задав 12 десятичных разрядов точности.

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

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

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

Создайте функцию с векторным знаком и интегрируйтесь от 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

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

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) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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', верный, указывает, что подынтегральное выражение является функцией со знаком массива.

Интегрирование waypoints, заданный как пара, разделенная запятой, состоящая из 'Waypoints' и вектор вещественных или комплексных чисел. Используйте waypoints, чтобы указать на любые точки в интервале интегрирования, что вы хотели бы, чтобы интегратор использовал. Можно использовать waypoints, чтобы интегрироваться эффективно через разрывы подынтегрального выражения. Задайте местоположения разрывов в векторе, который вы предоставляете.

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

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

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

Советы

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

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

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

  • Если вы задаете комплексное значение для xmin, xmax, или любой waypoint, все ваши пределы и waypoints должны быть конечными.

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

Ссылки

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

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

Была ли эта тема полезной?