Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Ошибки округления , [1] также называется ошибка округления , [2] представляют собой разность между результатом полученного по заданному алгоритму с использованием точного арифметическим и результат получает тем же самый алгоритм с использованием конечной точности, округленная арифметики. [3] Ошибки округления возникают из-за неточности в представлении действительных чисел и выполняемых с ними арифметических операций. Это форма ошибки квантования . [4] При использовании приближенных уравнений или алгоритмов, особенно при использовании конечного числа цифр для представления действительных чисел (которые теоретически имеют бесконечное количество цифр), одна из целейчисленный анализ предназначен для оценки ошибок вычислений. [5] Ошибки вычислений, также называемые числовыми ошибками , включают как ошибки усечения, так и ошибки округления.

Когда выполняется последовательность вычислений с вводом, включающим любую ошибку округления, ошибки могут накапливаться, иногда доминируя в вычислении. В плохо подготовленных задачах может накапливаться значительная ошибка. [6]

Короче говоря, есть два основных аспекта ошибок округления, связанных с численными расчетами: [7]

  1. Цифровые компьютеры имеют ограничения по величине и точности их способности представлять числа.
  2. Некоторые численные операции очень чувствительны к ошибкам округления. Это может быть связано как с математическими соображениями, так и с тем, как компьютеры выполняют арифметические операции.

Ошибка представления [ править ]

Ошибка, возникающая при попытке представить число с помощью конечной строки цифр, является формой ошибки округления, называемой ошибкой представления . [8] Вот несколько примеров ошибок представления в десятичных представлениях:

Увеличение числа цифр, разрешенных в представлении, снижает величину возможных ошибок округления, но любое представление, ограниченное конечным числом цифр, все равно вызовет некоторую степень ошибки округления для несчетного количества действительных чисел. Дополнительные цифры, используемые на промежуточных этапах вычислений, называются защитными цифрами . [9]

Многократное округление может привести к накоплению ошибок. [10] Например, если 9,945309 округляется до двух десятичных знаков (9,95), а затем снова округляется до одного десятичного знака (10,0), общая ошибка составляет 0,054691. Округление 9,945309 до одного десятичного знака (9,9) за один шаг приводит к меньшей ошибке (0,045309). Обычно это происходит при выполнении арифметических операций (см. « Потеря значимости» ).

Система счисления с плавающей запятой [ править ]

По сравнению с системой счисления с фиксированной запятой, система счисления с плавающей запятой более эффективна при представлении действительных чисел, поэтому она широко используется в современных компьютерах. В то время как действительные числа бесконечны и непрерывны, система счисления с плавающей запятой конечна и дискретна. Таким образом, ошибка представления, которая приводит к ошибке округления, возникает в системе счисления с плавающей запятой.

Обозначение системы счисления с плавающей запятой [ править ]

Система счисления с плавающей запятой характеризуется целыми числами:

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

Нормализованная система с плавающей запятой [ править ]

  • Система счисления с плавающей запятой нормализуется, если первая цифра всегда отлична от нуля, если только число не равно нулю. [3] Поскольку мантисса равна , мантисса ненулевого числа в нормализованной системе удовлетворяет . Таким образом, нормализованная форма ненулевого числа с плавающей запятой IEEE - это где . В двоичном формате ведущая цифра всегда отображается, поэтому она не записывается и называется неявным битом. Это дает дополнительный бит точности, так что ошибка округления, вызванная ошибкой представления, уменьшается.
  • Поскольку система счисления с плавающей запятой конечна и дискретна, она не может представлять все действительные числа, что означает, что бесконечные действительные числа могут быть аппроксимированы только некоторыми конечными числами с помощью правил округления . С плавающей точкой приближения заданного вещественного числа В можно обозначить.
    • Общее количество нормализованных чисел с плавающей запятой равно
, куда
считает выбор знака, положительный или отрицательный
считает выбор первой цифры
считает оставшуюся мантиссу
считает выбор показателей
считает тот случай, когда число есть .

Стандарт IEEE [ править ]

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

Машинный эпсилон [ править ]

Машинный эпсилон может использоваться для измерения уровня ошибки округления в системе счисления с плавающей запятой. Вот два разных определения. [3]

  • Обозначенный машинный эпсилон представляет собой максимально возможную абсолютную относительную ошибку при представлении ненулевого действительного числа в системе счисления с плавающей запятой.
  • Обозначенный машинный эпсилон - это наименьшее число, такое что . Таким образом, всякий раз , когда .

Ошибка округления при разных правилах округления [ править ]

Существует два распространенных правила округления: округление за отрезком и округление до ближайшего. Стандарт IEEE использует округление до ближайшего.

  • Поочередно : расширение по основанию усекается после цифры.
    • Это правило округления смещено, потому что оно всегда приближает результат к нулю.
  • Округление до ближайшего : устанавливается до ближайшего числа с плавающей запятой . При равенстве используется число с плавающей запятой, последняя сохраненная цифра которого четная.
    • Для стандарта IEEE , где основание является , это означает , когда есть связь оно округляется так , что последняя цифра равна .
    • Это правило округления более точное, но более затратное с точки зрения вычислений.
    • Округление таким образом, чтобы последняя сохраненная цифра была даже при равенстве, гарантирует, что она не округляется систематически в большую или меньшую сторону. Это сделано для того, чтобы избежать возможности нежелательного медленного отклонения в длинных вычислениях просто из-за смещения округления.
  • В следующем примере показан уровень ошибки округления в соответствии с двумя правилами округления. [3] Правило округления, округление до ближайшего, в целом приводит к меньшей ошибке округления.

Расчет ошибки округления в стандарте IEEE [ править ]

Предположим, что используется округление до ближайшего и двойная точность IEEE.

  • Пример: десятичное число можно преобразовать в

Поскольку бит справа от двоичной точки - это a, за которым следуют другие ненулевые биты, правило округления до ближайшего требует округления в большую сторону , то есть добавления бита к биту. Таким образом, нормализованное представление с плавающей запятой в стандарте IEEE является

.
  • Теперь ошибку округления можно вычислить при представлении с помощью .

Это представление получается путем отбрасывания бесконечного хвоста

от правого хвоста, а затем добавили на этапе округления.

Тогда .
Таким образом, ошибка округления равна .

Измерение ошибки округления с помощью машинного эпсилона [ править ]

Машинный эпсилон может использоваться для измерения уровня ошибки округления при использовании двух вышеупомянутых правил округления. Ниже приведены формулы и соответствующие доказательства. [3] Здесь используется первое определение машинного эпсилон.

Теорема [ править ]

  1. По очереди:
  2. Округление до ближайшего:

Доказательство [ править ]

Пусть где , и пусть будет представление с плавающей запятой . Поскольку используется пошаговое определение, это означает: * Чтобы определить максимум этого количества, необходимо найти максимум числителя и минимум знаменателя. Поскольку (нормализованная система), минимальное значение знаменателя равно . Сверху числитель ограничен . Таким образом, . Поэтому для пошаговой инструкции. Доказательство для округления до ближайшего аналогично.

  • Обратите внимание, что первое определение машинного эпсилон не совсем эквивалентно второму определению при использовании правила округления до ближайшего, но оно эквивалентно для последовательного перехода.

Ошибка округления, вызванная арифметикой с плавающей запятой [ править ]

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

Дополнение [ править ]

Машинное сложение состоит из выстраивания десятичных знаков двух добавляемых чисел, их сложения и последующего сохранения результата как числа с плавающей запятой. Само сложение может быть выполнено с более высокой точностью, но результат должен быть округлен до указанной точности, что может привести к ошибке округления. [3]

Например, при добавлении к двойной точности IEEE следующим образом ,

  • Это сохраняется, поскольку в стандарте IEEE используется округление до ближайшего. Поэтому, равно двойной точности IEEE и округление ошибка .

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

Умножение [ править ]

Как правило, произведение мантисс с -цифровыми числами содержит до цифр, поэтому результат может не соответствовать мантиссе. [3] Таким образом, в результат будет включена ошибка округления.

  • Например, рассмотрим нормализованную систему счисления с плавающей запятой, в которой основание и цифры мантиссы не больше . Потом и . Обратите внимание, но поскольку там не более цифр мантиссы. Ошибка округления будет .

Подразделение [ править ]

Как правило, частное мантисс-цифр может содержать больше, чем -цифров. [3] Таким образом, в результат будет включена ошибка округления.

  • Например, если приведенная выше нормализованная система счисления с плавающей запятой все еще используется, то но . Итак, хвост отрезан.

Вычитающая отмена [ править ]

Вычитание двух почти равных чисел называется вычитанием . [3]

  • Когда первые цифры отменяются, результат может быть слишком маленьким для точного представления, и он будет представлен просто как .
    • Например, let и здесь используется второе определение машинного эпсилон. Какое решение ? Известно, что и почти равны числа, и . Однако в системе счисления с плавающей запятой . Несмотря на то, что он достаточно большой, чтобы его можно было представить, оба экземпляра были округлены в виде пожертвований .
  • Даже при несколько большем значении результат в типичных случаях все равно существенно ненадежен. Нет особой веры в точность значения, потому что наибольшая неопределенность в любом числе с плавающей запятой - это цифры в крайнем правом углу.
    • Например, . Результат наглядно представим, но веры в него нет.

Накопление ошибки округления [ править ]

Ошибки могут увеличиваться или накапливаться, когда последовательность вычислений применяется к начальному входу с ошибкой округления из-за неточного представления.

Нестабильные алгоритмы [ править ]

Алгоритм или численный процесс называется стабильным, если небольшие изменения на входе вызывают только небольшие изменения на выходе, и называется нестабильным, если производятся большие изменения на выходе. [11]

Последовательность вычислений обычно происходит при запуске какого-либо алгоритма. Количество ошибок в результате зависит от стабильности алгоритма . Ошибка округления будет увеличиваться нестабильными алгоритмами.

Например, для с данным. Это легко показать . Предположим, что это наше начальное значение и есть небольшая ошибка представления , что означает, что начальный вход в этот алгоритм вместо . Затем алгоритм выполняет следующую последовательность вычислений.

Ошибка округления увеличивается в последующих вычислениях, поэтому этот алгоритм нестабилен.

Плохо обусловленные проблемы [ править ]

Comparison1 (полином 4-го порядка)
Сравнение 2 (полином 10-го порядка)

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

Число обусловленности проблемы - это отношение относительного изменения решения к относительному изменению входных данных. [3] Проблема хорошо обусловлена, если небольшие относительные изменения входных данных приводят к небольшим относительным изменениям в решении. В противном случае проблема плохо обусловлена . [3] Другими словами, проблема является плохо обусловленной, если ее число условий «намного больше», чем .

Число обусловленности вводится как мера ошибок округления, которые могут возникнуть при решении плохо обусловленных задач. [7]

Например, полиномы более высокого порядка имеют тенденцию быть очень плохо обусловленными , то есть они имеют тенденцию быть очень чувствительными к ошибке округления. [7]

В 1901 году Карл Рунге опубликовал исследование об опасностях полиномиальной интерполяции высокого порядка. Он посмотрел на следующую простую на вид функцию:

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

Нажмите на рисунки, чтобы увидеть полное описание.

Пример из реального мира: отказ ракеты «Патриот» из-за увеличения ошибки округления [ править ]

Американская ракета Пэтриот

25 февраля 1991 года, во время войны в Персидском заливе, американская ракетная батарея «Пэтриот» в Дхаране, Саудовская Аравия, не смогла перехватить приближающуюся иракскую ракету «Скад». Скад врезался в казармы американской армии и убил 28 солдат. Отчет тогдашней Главной бухгалтерииозаглавленный «Противоракетная оборона Patriot: проблема программного обеспечения, приведшая к отказу системы в Дахране, Саудовская Аравия», сообщал о причине сбоя: неточный расчет времени с момента загрузки из-за компьютерных арифметических ошибок. В частности, время в десятых долях секунды, измеренное внутренними часами системы, было умножено на 10, чтобы получить время в секундах. Этот расчет был выполнен с использованием 24-битного регистра с фиксированной запятой. В частности, значение 1/10, которое имеет неограниченное двоичное расширение, было прервано на 24 бита после точки счисления. Небольшая ошибка прерывания, умноженная на большое число, дающее время в десятых долях секунды, привела к значительной ошибке. Действительно, батарея Patriot проработала около 100 часов,и простой расчет показывает, что результирующая временная ошибка из-за увеличенной ошибки прерывания составила около 0,34 секунды. (Число 1/10 равно. Другими словами, двоичное разложение 1/10 равно . Теперь 24-битный регистр в Патриоте хранится вместо того, чтобы вводить ошибку двоичного или десятичного порядка . Умножение на количество десятых секунды в часах дает ). Скад едет примерно1676 метров в секунду, то есть за это время проходит более полукилометра. Этого было достаточно, чтобы приближающийся Скад находился за пределами «ворот дальности», которые отслеживал Патриот. По иронии судьбы, тот факт, что вычисление плохого времени было улучшено в некоторых частях кода, но не во всех, способствовал возникновению проблемы, поскольку это означало, что неточности не отменялись. [12]

См. Также [ править ]

  • Точность (арифметика)
  • Усечение
  • Округление
  • Потеря значимости
  • Плавающая точка
  • Алгоритм суммирования Кахана
  • Машина эпсилон
  • Полином Уилкинсона

Ссылки [ править ]

  1. Butt, Rizwan (2009), Введение в численный анализ с использованием MATLAB , Jones & Bartlett Learning, стр. 11–18, ISBN 978-0-76377376-2
  2. ^ Ueberhuber, Christoph W. (1997), Численный 1: Методы, программное обеспечение и анализ ., М., С. 139-146, ISBN 978-3-54062058-7
  3. ^ Б с д е е г ч я J K Форрестер, Дик (2018). Math / Comp241 Численные методы (конспекты лекций) . Колледж Дикинсона .
  4. ^ Акса, Пелин; ДеНардис, Лаура (2007), Информационные технологии в теории , Cengage Learning, стр. 134, ISBN 978-1-42390140-2
  5. ^ Ральстон, Энтони; Рабиновиц, Филип (2012), Первый курс численного анализа , Dover Books on Mathematics (2-е изд.), Courier Dover Publications, стр. 2–4, ISBN 978-0-48614029-2
  6. ^ Чепмен, Стивен (2012), Программирование MATLAB с приложениями для инженеров , Cengage Learning, стр. 454, ISBN 978-1-28540279-6
  7. ^ a b c Чапра, Стивен (2012). Прикладные численные методы с MATLAB для инженеров и ученых (3-е изд.). ISBN компании McGraw-Hill Companies, Inc. 9780073401102.
  8. ^ Laplante, Филип А. (2000). Словарь компьютерных наук, инженерии и технологий . CRC Press . п. 420. ISBN 978-0-84932691-2.
  9. ^ Хайэм, Николас Джон (2002). Точность и устойчивость численных алгоритмов (2-е изд.). Общество промышленной и прикладной математики (SIAM). С. 43–44. ISBN 978-0-89871521-7.
  10. Перейти ↑ Volkov, EA (1990). Численные методы . Тейлор и Фрэнсис . п. 24. ISBN 978-1-56032011-1.
  11. ^ Коллинз, Чарльз (2005). «Состояние и стабильность» (PDF) . Департамент математики Университета Теннесси . Проверено 28 октября 2018 .
  12. ^ Арнольд, Дуглас. "Неудача ракеты" Патриот " . Проверено 29 октября 2018 .

Внешние ссылки [ править ]

  • Ошибка округления в MathWorld.
  • Гольдберг, Дэвид (март 1991). «Что должен знать каждый компьютерный ученый об арифметике с плавающей точкой» (PDF) . ACM Computing Surveys . 23 (1): 5–48. DOI : 10.1145 / 103162.103163 . Проверено 20 января 2016 .( [1] , [2] )
  • 20 известных программных катастроф