Хорошая неопределенность (интервал) арифметической библиотеки?

отредактированный

Учитывая, что слова "неопределенный" и "неопределенность" довольно вездесущи, трудно найти в 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:

http://www.cs.utep.edu/interval-comp/intsoft.html

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