(Не рекомендуемый) Векторизованная квадратурная
quadv не рекомендуется. Использовать integral с 'ArrayValued' вместо этого опция.
Q = quadv(fun,a,b)
Q = quadv(fun,a,b,tol)
Q = quadv(fun,a,b,tol,trace)
[Q,fcnt] = quadv(...)
Q = quadv(fun,a,b) аппроксимирует интеграл функции с комплексным массивом fun от a на b в пределах ошибки 1.e-6 использование рекурсивной адаптивной квадратуры Симпсона. fun является указателем на функцию. Функция Y = fun(x) должен принять скалярный аргумент x и возвращает результат массива Y, чьими компонентами являются интеграды, оцениваемые в x. Значения пределов a и b должно быть конечным.
Параметризация функций объясняет, как обеспечить параметры сложения функции fun, при необходимости.
Q = quadv(fun,a,b,tol) использует абсолютный допуск ошибок tol для всех интегралов вместо значения по умолчанию, которое 1.e-6.
Примечание
Один и тот же допуск используется для всех компонентов, поэтому результаты, полученные с quadv обычно не совпадают с полученными с quad на отдельных компонентах.
Q = quadv(fun,a,b,tol,trace) с ненулевым trace показывает значения [fcnt a b-a Q(1)] во время рекурсии.
[Q,fcnt] = quadv(...) возвращает количество вычислений функции.
Список ниже содержит информацию, которая поможет вам определить, какая квадратурная функция в 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, и добавить результаты.
Для параметризованной функции, оцененной в массиве myarrayfun, заданный как
function Y = myarrayfun(x,n) Y = 1./((1:n)+x);
следующая команда интегрируется myarrayfun, для значения параметров n = 10 между a = 0 и b = 1:
Qv = quadv(@(x)myarrayfun(x,10),0,1);
Получившийся массив Qv имеет 10 элементов, оценивающих Q(k) = log((k+1)./(k)), для k = 1:10.
Записи в Qv немного отличаются от тех, что вычисляют интегралы используя quad в цикле:
for k = 1:10 Qs(k) = quadv(@(x)myscalarfun(x,k),0,1); end
где myscalarfun является:
function y = myscalarfun(x,k) y = 1./(k+x);