Машинная арифметика. Представление чисел с фиксированной и плавающей запятой. Диапазон и погрешности машинной арифметики.

 

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

Для представления действительных чисел в ЭВМ применяются два способа: с фиксированной и плавающей запятой. В машине используется представление чисел в системе счисления с основанием r (обычно r =2 или r = 10), где имеется цифр 0, 1,…, r-1.

При записи числа с фиксированной запятой кроме основания r системы счисления и количества k разрядов, отводимых под запись числа, указывается еще количество l разрядов, отводимых по дробную часть. Запись числа имеет следующий вид и реализуется приближенным равенством

,

где .

Числа, представимые таким способом, заключены в отрезке . Абсолютная точность представления  при простом отбрасывании и меньше 0,5r-l при правильном округлении и не зависит от числа a.

Относительная погрешность имеет оценку  и зависит от расположения числа в выше указанном отрезке: чем число ближе к концам отрезка тем меньше машинная относительная погрешность числа.

Запись числа с плавающей запятой в ЭВМ основывается на нормальной форме представления числа в виде

a = M×rp,

где r - основание, p - порядок, M - мантисса числа, 1> M ³ r-1 (или r> M ³ 1 в американских стандартах). Кроме основания r системы счисления и количества k разрядов, отводимых под запись числа, указывается еще количество l разрядов, отводимых под мантиссу, и m разрядов, отводимых под порядок. Запись числа имеет следующий вид и реализуется приближенными равенствоми

 или

где , k - целое число из промежутка . Машинное слово имеет структуру

Подпись: 1 разряд -
знак порядка	m разрядов -
порядок	1 разряд -
знак мантиссы	l разрядов -
мантисса

 

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

Машинным эпсилон называется расстояние между единицей и ближайшим за ним машинным числом с плавающей запятой. Обозначаем его eмаш и называем также macheps. Так как

и следующее за 1 число

,

то

.

Так как

.

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

Пример. Для чисел 22,б34 и 1,234, записанных с фиксированной запятой, абсолютные погрешности равны 0,0005, а относительные погрешности соответственно равны 0,00002209 и 0,00040519.

Для чисел 2,б3*1010 и 2,б3*10-10, записанных с плавающей запятой, абсолютные погрешности равны 0,005*1010 и 0,005*10-10, а относительные погрешности равны 0,0019.

В стандарте IEEE, принятом, например, в процессорах Intel 80387, где используется 32-битная арифметика отводится 24 бита под мантиссу и 8 бит под показатель порядка. Наибольшее число с плавающей запятой  1,1…12*2127 »1038, наименьшее положительное число »10-38, eмаш = 2-22 » 1,2*10-7. Там вычисления можно вести не более чем с 7 -ю верными десятичными знаками.

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

Арифметические операции над машинными словами утрачивают привычные свойства, свойства ассоциативности и дистрибутивности нарушаются на любых ЭВМ. Например, из примеров (rD/2× r3D/4)× r -D/2, rD/2×( r3D/4× r -D/2), где rD - граница правого диапазона, первый пример не может быть вычислен на ЭВМ, а во втором случае будет получен верный результат.

Изучение погрешностей результатов арифметических операций над числами с плавающей запятой проводится с помощью представления:

fl(a) = a(1+d),  где |d |£ eмаш.                                                  (2.1)

Результат любой арифметической операции Å может быть записан в виде

fl(aÅ b) = (aÅb)(1+d1),  где |d1| £ eмаш.

Например, при сложении трех положительных чисел a, b, с получаем

fl(a+b) = (a+b)(1+d1),  где |d1|  £ eмаш;

fl((a+b)+c) = ((a+b)(1+d1)+с)(1+d2) = (a+b)(1+d1)(1+d2)+с(1+d2),  где |d1|,|d2|  £ eмаш.

Отсюда

| fl((a+b)+c)- (a+b)+c| £ 2(a+b)eмаш +сeмаш + (a+b)eмаш2.

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