Точность переменной использования численного интегрирования
vpaintegral(f,a,b)vpaintegral(f,x,a,b)vpaintegral(___,Name,Value)vpaintegral(___, дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value)Name,Value.
Численно интегрируйте символьное выражение x^2 от 1 до 2.
syms x vpaintegral(x^2, 1, 2)
ans = 2.33333
Численно интегрируйте символьную функцию y (x) = x 2 от 1 до 2.
syms y(x) y(x) = x^2; vpaintegral(y, 1, 2)
ans = 2.33333
vpaintegral использует арифметику переменной точности, в то время как функция MATLAB® integral использует арифметику с двойной точностью. Используя значения по умолчанию допуска, vpaintegral может обработать значения, которые заставляют функцию integral MATLAB переполняться или терять значимость.
Интегрируйте besseli(5,25*u).*exp(-u*25) и при помощи integral и при помощи vpaintegral. Функция integral возвращает NaN и выдает предупреждение, в то время как vpaintegral возвращает правильный результат.
syms u x f = besseli(5,25*x).*exp(-x*25); fun = @(u)besseli(5,25*u).*exp(-u*25); usingIntegral = integral(fun, 0, 30) usingVpaintegral = vpaintegral(f, 0, 30)
Warning: Infinite or Not-a-Number value encountered. usingIntegral = NaN usingVpaintegral = 0.688424
Функция digits не влияет на vpaintegral. Вместо этого увеличьте точность vpainteral путем уменьшения допусков интегрирования. С другой стороны увеличьте скорость численного интегрирования путем увеличения допусков. Управляйте допуском, используемым vpaintegral путем изменения относительного допуска RelTol и абсолютный допуск AbsTol, которые влияют на интегрирование через условие
Численно интегрируйте besselj(0,x) от 0 до pi к 32 значащим цифрам установкой RelTol к 10^(-32). Выключите AbsTol путем установки его на 0.
syms x vpaintegral(besselj(0,x), [0 pi], 'RelTol', 1e-32, 'AbsTol', 0)
ans = 1.3475263146739901712314731279612
Используя более низкий допуск значения увеличивает точность за счет скорости.
Интегрируйте 1/(2*z-1) по треугольному пути от 0 до 1+1i к 1-1i назад к 0 путем определения waypoints.
syms z vpaintegral(1/(2*z-1), [0 0], 'Waypoints', [1+1i 1-1i])
ans = - 8.67362e-19 - 3.14159i
Инвертирование направления интеграла, путем изменения порядка waypoints и обмена пределами, изменяет знак результата.
Выполните несколько интегрирование вложенными вызовами vpaintegral. Объединяться
syms x y vpaintegral(vpaintegral(x*y, x, [1 3]), y, [-1 2])
ans = 6.0
Пределы интегрирования могут быть символьными выражениями или функциями. Интегрируйте по треугольной области 0 ≤ x ≤ 1 и |y | < x путем определения пределов интегрирования по y с точки зрения x.
vpaintegral(vpaintegral(sin(x-y)/(x-y), y, [-x x]), x, [0 1])
ans = 0.89734