vpaintegral

Точность переменной использования численного интегрирования

Синтаксис

vpaintegral(f,a,b)
vpaintegral(f,x,a,b)
vpaintegral(___,Name,Value)

Описание

пример

vpaintegral(f,a,b) численно аппроксимирует f от a до b. Переменная x по умолчанию в f найдена symvar.

vpaintegral(f,[a b]) равен vpaintegral(f,a,b).

пример

vpaintegral(f,x,a,b) выполняет численное интегрирование с помощью переменной интегрирования x.

пример

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, которые влияют на интегрирование через условие

|QI|max (AbsTol,|Q|·RelTol)гдеQ=Расчетный интегралI=Точный интеграл.

Численно интегрируйте 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

Используя более низкий допуск значения увеличивает точность за счет скорости.

Интегрирование сложного контура Используя Waypoints

Интегрируйте 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. Объединяться

1213xydxdy.

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

Входные параметры

свернуть все

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

Пределы интегрирования, заданного как список двух чисел, символьных чисел, символьных переменных, символьных функций или символьных выражений.

Переменная интегрирования, заданная как символьная переменная. Если x не задан, переменная интегрирования найдена symvar.

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

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

Пример: 'RelTol',1e-20

Допуск относительной погрешности, заданный как положительное вещественное число. Значением по умолчанию является 1e-6. Аргумент RelTol определяет точность интегрирования только если RelTol·|Q|>AbsTol, где Q является расчетным интегралом. В этом случае vpaintegral удовлетворяет условие |QI|RelTol·|Q|, где I является точным интегральным значением. Чтобы использовать только RelTol и выключить AbsTol, установите AbsTol на 0.

Пример: 1e-8

Допуск абсолютной погрешности, заданный как неотрицательное вещественное число. Значением по умолчанию является 1e-10. AbsTol определяет точность интегрирования если AbsTol>RelTol·|Q|, где Q является расчетным интегралом. В этом случае vpaintegral удовлетворяет условие |QI|AbsTol, где I является точным интегральным значением. Чтобы выключить AbsTol и использовать только RelTol, установите AbsTol на 0.

Пример: 1e-12

Путь к интегрированию, заданный как вектор чисел, или как вектор символьных чисел, выражений или функций. vpaintegral объединяется вдоль последовательности прямолинейных путей (нижний предел к первому waypoint, сначала к второму waypoint, и так далее) и наконец от последнего waypoint до верхнего предела. Для криволинейных интегралов набор равняется нижним и верхним пределам и задает контур с помощью waypoints.

Максимальные оценки входа, заданного как положительное целое число или положительное символьное целое число. Значением по умолчанию является 10^5. Если количество оценок f больше, чем MaxFunctionCalls, то vpaintegral выдает ошибку. Для неограниченных оценок, набор MaxFunctionCalls к Inf.

Советы

  • Гарантируйте, что вход интегрируем. Если вход не интегрируем, вывод vpaintegral непредсказуем.

  • Функция digits не влияет на vpaintegral. Чтобы увеличить точность, используйте аргументы RelTol и AbsTol вместо этого.

Смотрите также

| | |

Введенный в R2017b