Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Relative Error

Boost , Math Toolkit 2.5.0 , Chapter 17. Backgrounders

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

При фактическом значенииaи найденном значенииvотносительная ошибка может быть вычислена из:

Однако тестовые программы в библиотеке используют симметричную форму:

Что измеряетотносительную разницуи оказывается менее подверженным ошибкам в использовании, поскольку нам не нужно беспокоиться о том, какое значение является «истинным» результатом, а какое — экспериментальным. Это гарантирует возврат стоимости, по крайней мере, такой же большой, как относительная ошибка.

Особую осторожность следует проявлять, когда одно значение равно нулю: мы можем либо принять абсолютную ошибку в этом случае (но это обман, поскольку абсолютная ошибка, вероятно, будет очень маленькой), либо мы можем присвоить значение 1 или бесконечности относительной ошибке в этом конкретном случае. В тестовых случаях для специальных функций в этой библиотеке все ниже порога рассматривается как «эффективно нулевое», в противном случае относительной погрешности присваивается значение 1, если только один из терминов равен нулю. В настоящее время установлен порог<std::numeric_limits<>::min()>: Другими словами, все денормализованные числа рассматриваются как ноль.

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

Обратите внимание, что в этом руководстве и программах тестирования относительная ошибка обычно указывается в единицах эпсилона. Однако помните, чтоединицы в последнем местеболее точно отражают количество загрязненных цифр, и что относительная ошибка может«колебаться»в 2 раза по сравнению сединицами в последнем месте. Другими словами, две реализации одной и той же функции, максимальные относительные погрешности которых различаются в 2 раза, могут быть фактически точны для одного и того же числа двоичных цифр. Вас предупредили!

The Impossibility of Zero Error

Для многих функций в этой библиотеке предполагается, что ошибка «эффективно равна нулю», если вычисление может быть выполнено с помощью ряда защитных цифр. Однако следует помнить, что если результатом являетсятрансцендентное число, то в принципе мы никогда не можем быть уверены, что результат точен более чем до 1 ulp. Это пример того, чтоhttp://en.wikipedia.org/wiki/William_Kahanназываетсяhttp://en.wikipedia.org/wiki/Rounding#The_table-maker.27s_dilemma: рассмотрим, что происходит, если первая защитная цифра является одной, а остальные защитные цифры равны нулю. У нас есть галстук или нет? Поскольку единственное, что мы можем сказать о трансцендентном числе, это то, что его цифры не имеют определенного рисунка, мы никогда не можем сказать, есть ли у нас галстук, независимо от того, сколько у нас защитных цифр. Поэтому мы никогда не можем быть полностью уверены, что результат был округлен в правильном направлении. Конечно, трансцендентные числа, которые просто оказываются галстуком - для сколько бы у нас ни было сторожевых цифр - чрезвычайно редки и становятся реже, чем больше сторожевых цифр у нас есть, но даже так.

Классический текстЧто должен знать каждый компьютерный ученый об арифметике плавающих точекдля получения дополнительной информации.


PrevUpHomeNext

Статья Relative Error раздела Math Toolkit 2.5.0 Chapter 17. Backgrounders может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 17. Backgrounders ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:15:10/0.0090248584747314/1