Какова наилучшая практика для проверки числовой точности в алгоритмах?
Есть ли предлагаемый метод для решения проблемы «как мы узнаем, что результат, который мы рассчитали, верен»?
Если возможно: есть ли какой-нибудь пример повышения точности чисел в C ++?
Спасибо за любое предложение!
Math :: BigFloat / Math :: BigInt поможет. Я должен сказать, что есть много библиотек, которые делают это, я не знаю, что было бы лучше. Может быть, у кого-то есть хороший ответ для вас.
В общем, вы можете написать это дважды: один раз с неограниченной точностью, а второй без проверки двух. Это то, что я делаю с научным программным обеспечением, которое я пишу. Затем я напишу третий, который делает более интересные улучшения скорости. Таким образом, я могу проверить все три. Имейте в виду, я знаю, что три не будут точно равны, но они должны иметь достаточно значительных цифр подтверждения.
На самом деле знать Сколько ошибок трудно получить точно — помните, порядок операций с числами с плавающей запятой может вызвать большие различия. Это действительно специфическая проблема, но если вы знаете относительную величину определенных чисел, вы можете изменить порядок операций, чтобы получить точность (например, умножьте список в отсортированном порядке). Два места, чтобы искать расследование это,
Посмотрите на интервальную арифметику, например
http://www.boost.org/doc/libs/1_53_0/libs/numeric/interval/doc/interval.htm
Это даст верхние и нижние границы по результатам
PS: также посмотрите на http://www.cs.cmu.edu/~quake/robust.html