Представление чисел в системах с плавающей запятой

Погрешности вычислений

Содержание

1.1. Перевод чисел из одной системы счисления в другую.. 2

1.2. Представление чисел в системах с плавающей запятой. 2

1.3. Оценки погрешности. 3

1.4. Машинный эпсилон. 3

1.5. Погрешности вычисления значений функций. 4

1.6. Примеры неустойчивости алгоритмов. 5

1.7. Пример Уилкинсона. 5


1.1. Перевод чисел из одной системы счисления в другую

Перевод десятичной дроби в двоичную систему: последовательное сравнение дроби с Представление чисел в системах с плавающей запятой - student2.ru . Для выполнения этого число Представление чисел в системах с плавающей запятой - student2.ru умножим на 2 и сравним с 1: если Представление чисел в системах с плавающей запятой - student2.ru , в старший разряд двоичной дроби запишем 1, иначе запишем 0. Обозначим дробную часть числа Представление чисел в системах с плавающей запятой - student2.ru буквой Представление чисел в системах с плавающей запятой - student2.ru . Теперь сравним с единицей число Представление чисел в системах с плавающей запятой - student2.ru и запишем в следующий разряд двоичной дроби 1 или 0. Продолжим подобным образом процесс заполнения двоичных разрядов, на каждом шаге умножая на 2 дробную часть числа, полученного на предыдущем шаге.

Пример 1.1. Найдем двоичное представление числа Представление чисел в системах с плавающей запятой - student2.ru . Выполняя описанный алгоритм, находим последовательность чисел:

Представление чисел в системах с плавающей запятой - student2.ru .

Следовательно, двоичное представление числа имеет вид: Представление чисел в системах с плавающей запятой - student2.ru .

Пример 1.2. Найдем двоичное представление числа Представление чисел в системах с плавающей запятой - student2.ru . Последовательно находим:

Представление чисел в системах с плавающей запятой - student2.ru .

Далее процесс повторяется. Получаем, что данное число в двоичной системе описывается бесконечной, периодической дробью Представление чисел в системах с плавающей запятой - student2.ru . В скобках записан период дроби. Следовательно, при использовании двоичной дроби конечной длины возникает ошибка округления. Например, Представление чисел в системах с плавающей запятой - student2.ru . При большом количестве знаков ошибка округления мала, но она всегда присутствует.

Представление чисел в системах с плавающей запятой

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

  • основанием Представление чисел в системах с плавающей запятой - student2.ru ,
  • длиной мантиссы (точностью) Представление чисел в системах с плавающей запятой - student2.ru ,
  • пределами изменения показателей Представление чисел в системах с плавающей запятой - student2.ru .

Произвольное число Представление чисел в системах с плавающей запятой - student2.ru в системе с плавающей запятой можно представить в виде:

Представление чисел в системах с плавающей запятой - student2.ru ,

где число в круглых скобках – дробная часть – мантисса, p – порядок числа Представление чисел в системах с плавающей запятой - student2.ru .

Система с плавающей запятой называется нормализованной, если для каждого ненулевого числа Представление чисел в системах с плавающей запятой - student2.ru .

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

Представление чисел в системах с плавающей запятой - student2.ru .

Числа расположены неравномерно на оси чисел. Рассмотрим пример нормализованной системы:

Представление чисел в системах с плавающей запятой - student2.ru .

Все возможные дробные части системы – числа, имеющие порядок Представление чисел в системах с плавающей запятой - student2.ru :

Представление чисел в системах с плавающей запятой - student2.ru .

Чтобы получить остальные числа системы, нужно умножить эти дроби на Представление чисел в системах с плавающей запятой - student2.ru . Получим числа от Представление чисел в системах с плавающей запятой - student2.ru до 3.5. Все положительные числа системы показаны на рис. 1.1.

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

Представление чисел в системах с плавающей запятой - student2.ru Рассмотрим пример. Сложим три числа: Представление чисел в системах с плавающей запятой - student2.ru . Рассмотрим два варианта объединения слагаемых: Представление чисел в системах с плавающей запятой - student2.ru и Представление чисел в системах с плавающей запятой - student2.ru .

1) Представление чисел в системах с плавающей запятой - student2.ru ; прибавив к этому Представление чисел в системах с плавающей запятой - student2.ru , получим точный ответ: Представление чисел в системах с плавающей запятой - student2.ru .

2) Представление чисел в системах с плавающей запятой - student2.ru . Такого числа нет в системе – требуется округление. Возможны два

варианта: округление до большего и округление до меньшего

а) Округляем до большего: Представление чисел в системах с плавающей запятой - student2.ru . Прибавив Представление чисел в системах с плавающей запятой - student2.ru , вновь получаем число, которого нет в системе: Представление чисел в системах с плавающей запятой - student2.ru . Вновь округляя до большего, получаем неверный ответ: сумма равна 1.0.

б) При округлении до меньшего полагаем Представление чисел в системах с плавающей запятой - student2.ru . Прибавив Представление чисел в системах с плавающей запятой - student2.ru , опять получим число, которого нет в системе: Представление чисел в системах с плавающей запятой - student2.ru . В соответствии с выбранным правилом округления до меньшего отбрасываем последний разряд и вновь получаем неверный результат: Представление чисел в системах с плавающей запятой - student2.ru .

Получили, что в нашей системе от перемены мест слагаемых сумма меняется!

Оценки погрешности

Пусть a – точное значение некоторой величины, a* – ее приближенное значение. Абсолютная погрешность приближенного значения равна Представление чисел в системах с плавающей запятой - student2.ru . Поскольку точное значение a обычно неизвестно, то задача состоит в нахождении оценки абсолютной погрешности Представление чисел в системах с плавающей запятой - student2.ru , которая удовлетворяет неравенству Представление чисел в системах с плавающей запятой - student2.ru – оценка не должна быть меньше истинной погрешности.

Относительная погрешность определяется отношением: Представление чисел в системах с плавающей запятой - student2.ru . Для оценки абсолютной величины относительной погрешности Представление чисел в системах с плавающей запятой - student2.ru должно выполняться неравенство:

Представление чисел в системах с плавающей запятой - student2.ru .

Значащими цифрами числа называются все цифры в его записи, начиная с первой ненулевой слева. В нормализованной системе все цифры – значащие.

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

Машинный эпсилон

Пусть имеется двоичная нормализованная система с t разрядами. Пусть точное значение числа a представляет собой бесконечную двоичную дробь с экспоненциальным множителем:

Представление чисел в системах с плавающей запятой - student2.ru .

Пусть приближенное значение получается в результате усечения – отбрасывания всех разрядов, начиная с Представление чисел в системах с плавающей запятой - student2.ru -го:

Представление чисел в системах с плавающей запятой - student2.ru , –

тогда абсолютная ошибка равна

Представление чисел в системах с плавающей запятой - student2.ru .

В нормализованной системе

Представление чисел в системах с плавающей запятой - student2.ru .

Следовательно, относительная ошибка удовлетворяет неравенству:

Представление чисел в системах с плавающей запятой - student2.ru .

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

Представление чисел в системах с плавающей запятой - student2.ru .

Отсюда следует, что точное число и соответствующее ему округленное число связаны равенством:

Представление чисел в системах с плавающей запятой - student2.ru , где Представление чисел в системах с плавающей запятой - student2.ru .

Число Представление чисел в системах с плавающей запятой - student2.ru называется машинный эпсилон. Машинный эпсилон характеризует точность арифметики с плавающей запятой.

Машинный эпсилон определяют как наименьшее число Представление чисел в системах с плавающей запятой - student2.ru , такое, что Представление чисел в системах с плавающей запятой - student2.ru .

Один из вариантов оценки числа Представление чисел в системах с плавающей запятой - student2.ru на языке пакета Mathematica:

For[ep=1.,1.+ep>1.,ep=ep/2];2 ep

Исходное число ep=1. делится многократно пополам до тех пор, пока не будет нарушено условие Представление чисел в системах с плавающей запятой - student2.ru На печать выводится удвоенный результат последнего деления Представление чисел в системах с плавающей запятой - student2.ru .

Отметим, что в библиотеках языка Си имеются встроенные значения машинного эпсилон для формата float: FLT_EPSILON= Представление чисел в системах с плавающей запятой - student2.ru и для формата double: DBL_EPSILON= Представление чисел в системах с плавающей запятой - student2.ru .

Наши рекомендации