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