(Не рекомендуемый) Численно оцените интегральную, адаптивную квадратуру Симпсона
quad не рекомендуется. Использовать integral вместо этого.
q = quad(fun,a,b)
q = quad(fun,a,b,tol)
q = quad(fun,a,b,tol,trace)
[q,fcnt] = quad(...)
Квадратура - это численный метод, используемый для нахождения области под графиком функции, то есть для вычисления определенного интеграла.
q = quad(fun,a,b) пытается аппроксимировать интеграл функции fun от a на b в пределах ошибки 1e-6 использование рекурсивной адаптивной квадратуры Симпсона. fun является указателем на функцию. Значения пределов a и b должно быть конечным. Функция y = fun(x) должен принять вектор аргумент x и возвращает вектору результат y, интеграция и оценка по каждому элементу x.
Параметризация функций объясняет, как предоставить дополнительные параметры функции fun, при необходимости.
q = quad(fun,a,b,tol) использует абсолютный допуск ошибок tol вместо значения по умолчанию, которое 1.0e-6. Большие значения tol привести к меньшему количеству вычислений функции и более быстрым расчетам, но менее точным результатам. В MATLAB® версии 5.3 и более ранних, quad функция использовала менее надежный алгоритм и относительную погрешность по умолчанию 1.0e-3.
q = quad(fun,a,b,tol,trace) с ненулевым trace показывает значения [fcnt a b-a Q] во время рекурсии.
[q,fcnt] = quad(...) возвращает количество вычислений функции.
Функция quadl может быть более эффективным с высокими точностями и плавными интеградами.
Список ниже содержит информацию, которая поможет вам определить, какую квадратурную функцию в MATLAB использовать:
quad функция может быть наиболее эффективной для низких точностей с немонтированными интегралами.
quadl функция может быть более эффективной, чем quad с более высокой точностью с плавными интеградами.
quadgk функция может быть наиболее эффективной для высоких точностей и колебательных интеградов. Он поддерживает бесконечные интервалы и может обрабатывать умеренные особенности в конечных точках. Это также поддерживает интегрирование контуров вдоль кусочно-линейных путей.
quadv векторизация функции quad для оцененного в массиве fun.
Если интервал бесконечен, , затем для интеграла fun(x) существовать, fun(x) должно распадаться как x приближается к бесконечности, и quadgk требует, чтобы он быстро распадался. Специальные методы должны использоваться для колебательных функций на бесконечных интервалах, но quadgk может использоваться, если fun(x) распадается достаточно быстро.
quadgk функция будет интегрировать функции, которые сингулярны в конечных точках, если особенности не слишком сильны. Например, он будет интегрировать функции, которые ведут себя в конечной точке c как log|x-c| или |x-c|p для p >= -1/2. Если функция сингулярна в точках внутри (a,b), запишите интеграл как сумму интегралов по подынтервалам с сингулярными точками в качестве конечных точек, вычислите их с quadgk, и добавить результаты.
Чтобы вычислить интеграл
написание функции myfun который вычисляет интегранд:
function y = myfun(x) y = 1./(x.^3-2*x-5);
Затем передайте @myfun, указатель на функцию для myfunКому quad, наряду с пределами интегрирования, 0 на 2:
Q = quad(@myfun,0,2) Q = -0.4605
Кроме того, можно передать интегранд quad как указатель анонимной функции F:
F = @(x)1./(x.^3-2*x-5); Q = quad(F,0,2);
quad может выдать одно из следующих предупреждений:
'Minimum step size reached' указывает, что рекурсивное подразделение интервала произвело подынтервал, длина которого находится в порядке округления ошибки в длине исходного интервала. Неинтегрируемая особенность возможна.
'Maximum function count exceeded' указывает, что интегранд был оценен более 10 000 раз. Вероятна неинтегрируемая особенность.
'Infinite or Not-a-Number function value encountered' указывает переполнение с плавающей точкой или деление на нули во время оценки интегранда во внутреннем пространстве интервала.
quad реализует метод низкого порядка точности, используя адаптивное рекурсивное правило Симпсона.
[1] Gander, W. and W. Gautschi, «Adaptive Quadrature - Revisited», БИТ, Vol. 40, 2000, pp. 84-101. Этот документ также доступен в https://people.inf.ethz.ch/gander/.
dblquad | integral | integral2 | integral3 | quad2d | quadgk | quadl | quadv | trapz | triplequad