Отслеживайте максимальную ошибку в двойной арифметике - PullRequest
0 голосов
/ 02 мая 2018

Двойной a представляет данное рациональное / действительное число с максимальной ошибкой epsilon. Если я добавлю два двойных, максимальная ошибка также складывается. Для умножения я также могу дать оценки для максимальной ошибки.

Есть ли разумный способ отследить эти арифметические ошибки? Я хотел бы знать уровень точности, с которой я знаю данное число.

Я подумал, что создаю тип данных из двух рациональных чисел (основного числа и ошибки) и определяю операции над этим типом данных, но, возможно, я просто заново изобретаю что-то, что уже существует, или моя концепция слишком сложна.

1 Ответ

0 голосов
/ 05 мая 2018

Есть два решения, которым нужны только существующие библиотеки.

Если ваши числа всегда рациональны, вы можете использовать рациональную арифметическую библиотеку. Они хранят каждое число как отношение пары целых чисел. Арифметика рациональных чисел, учитывая только рациональные вычисления, должна быть точной. Список Википедии * арифметического программного обеспечения произвольной точности содержит несколько библиотек Java, которые поддерживают рациональные значения.

BigDecimal, который упоминался в комментариях, может использоваться для получения повышенной точности, но он точен только для десятичных дробей конечной длины. Вы можете точно рассчитать 1/3 в рациональной арифметике, но только приблизительно в BigDecimal.

Рациональная арифметика зависит от точности всех чисел, точно представленных рациональным. Это может нарушить вычисления, например квадратный корень. Интервальная арифметика - это альтернатива, которая не дает вам точности, но позволяет узнать диапазон возможных ошибок округления. Каждая переменная представлена ​​интервалом, который, как известно, содержит действительное арифметическое значение.

...