integral

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

Описание

пример

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 должен использовать операторы массивов вместо матричных операторов. Например, используйте .* \times) вместо * mtimes, *). Если вы устанавливаете 'ArrayValued' опция к true, затем fun должен принять скаляр и возвратить массив фиксированного размера.

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

Пример: integral(fun,a,b,'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