Как сделать интеграцию на основе интервальных алгоритмов с помощью пакета «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]

Другие вопросы по тегам