Как сделать интеграцию на основе интервальных алгоритмов с помощью пакета «IntervalArithmetic» в Julia?
Как интегрировать нелинейную функцию на основе интервального алгоритма (например, d(F(X))/dX= a/(1+cX), где a=[1, 2], c=[2, 3] интервальные константы) с помощью пакета «IntervalArithmetic» в Julia? Не могли бы вы привести пример? Или не могли бы вы предоставить соответствующий документ? F(X) получится интервалом с границами, F(X)=[p, q].
1 ответ
Просто численное интегрирование? Пока интегрирующий код написан на Джулии (в противном случае я подозреваю, что ему будет трудно понять IntervalArithmetic) и нет каких-то замечаний по поводу того, как он должен интерпретировать допуски, тогда он должен просто работать, более или менее так, как вы могли бы ожидать. обрабатывать, например, комплексные числа.
using IntervalArithmetic
f(x) = interval(1,2)/(1+interval(2,3)*x)
и в сочетании, например,
using QuadGK
quadgk(f, 0, 1)
дает([0.462098, 1.09862], [0, 0.636515])
(так что .. я думаю, здесь интерпретация заключается в том, что ошибка находится в интервале от 0 до 0,636515 :))
Просто в качестве проверки здравомыслия давайте воспользуемся старым добрым правилом трапеций.
using Trapz
xs = range(0, 1,length=100)
trapz(xs, f.(xs))
снова дает нам ожидаемый интервал[0.462098, 1.09862]