Хорошая неопределенность (интервал) арифметической библиотеки?
отредактированный
Учитывая, что слова "неопределенный" и "неопределенность" довольно вездесущи, трудно найти в Google "арифметику неопределенности" и сразу же получить что-нибудь полезное. Таким образом, может кто-нибудь предложить хорошую библиотеку подпрограмм, практически на любом языке программирования / написания сценариев, которая реализует обработку неопределенных значений, согласно этому описанию:
Используйте арифметику неопределенности, чтобы записать значения, которые являются приблизительными, для которых есть измеренный допуск. Это когда мы не уверены в значении, но знаем верхнюю и нижнюю границы, которые оно может иметь, выраженное как значение ±.
6 ответов
Я считаю, что " Интервальная арифметика" является более распространенным названием для того, что вы ищете. boost:: interval будет моим первым выбором для вспомогательной библиотеки.
Если вы ищете модуль распространения ошибок (он отличается от интервальной арифметики, но ученые часто используют распространение ошибок), я бы посоветовал вам взглянуть на мой uncertainties
Модуль Python. Он прозрачно обрабатывает распространение ошибок / неопределенностей и, в отличие от многих реализаций, правильно обрабатывает корреляции между переменными.
Взгляните на Java-класс Томаса Фланагана " Распространение ошибок ". Подход, который он использует, наиболее хорош для обработки неопределенности без лишних проблем.
Для справки, поскольку, вероятно, вам уже слишком поздно, я бы предложил BIAS / Profil: http://www.ti3.tuhh.de/keil/profil/index_e.html
Я бы, наверное, пошел по этому поводу, объявив класс с именем UnterminValue с такими методами и свойствами, как (psuedocode):
class UncertainValue
{
private double upperbound;
private double lowerbound;
private double nominalvalue;
private double certainty;
...
UncertainValue add(UncertainValue value);
UncertainValue multiply(UncertainValue factor);
}
Я понимаю, что это не отвечает на ваш вопрос с точки зрения поиска готовой библиотеки, извините.
Это не библиотека, но ваш вопрос напомнил мне пример в "Expert F#", который описывает вероятностные рабочие процессы:
вместо того, чтобы писать выражения для вычисления, скажем, целых чисел, мы вместо этого пишем выражения, которые вычисляют распределения целых чисел. Это тематическое исследование основано на работе Рамси и Пфеффера от 2002 года.
Вы можете прочитать выдержку из книг Google.
INTLAB (INTerval LABoratory) is a well-known library for interval arithmetic and verified numerical linear algebra. It is based on MATLAB/Octave. You can download this library from here:
http://www.ti3.tu-harburg.de/rump/intlab/
kv library is an interval arithmetic library made by C++ and Boost C++ libraries. Multiple precision interval arithmetic is available. It also has a verified ODE solver.
http://verifiedby.me/kv/index-e.html
For other interval arithmetic libraries/software, check the following website: