Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие АиЛОВТ.doc
Скачиваний:
106
Добавлен:
11.05.2015
Размер:
5.6 Mб
Скачать

Погрешность выполнения арифметических операций

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

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

Рассмотрим арифметические операции над операндами, заданными с абсолютными погрешностями: А=[A]+∆Aи B=[B]+∆B.

A+B=[A]+[B]+(∆A+∆B),

где абсолютная погрешность суммы ∆(A+B)=∆A+∆B.

A-B=[A]-[B]+(∆A-∆B),

где абсолютная погрешность разности ∆(A-B)=∆A-∆B.

AB=[A][B]+[A]∆B+[B]∆A+∆A∆B.

Произведением ∆A∆Bможно пренебречь, следовательно,

AB≈[A][B]+[A]∆B+[B]∆A,

то есть абсолютная погрешность произведения ∆(AB)≈[A]∆B+[B]∆A.

При выполнении операции деления

абсолютная погрешность частного ∆(A/B)=∆A/[B]-[A]∆B/([B])2.

Округление

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

В общем виде число с плавающей запятой, размещенное в разрядной сетке размерностью k, имеет видAr=mark . Если для записи мантиссы используются только n разрядов, то число может быть представлено в виде двух частей:Ar=[ma]rn+[A0]rk-n,где [A0]rk-n=A0– часть числа, не вошедшая в разрядную сетку размерностьюk.

В зависимости от того, как учитывается А0при записи числа А вn–раз-рядную сетку, можно выделить несколько способов округления чисел.

  1. Отбрасывание А0. При этом возникает относительная погрешность

õокр=|А0|rk-n/(|mA|rn), так как r -1≤ |mA| <1, 0≤ |A0| <1, то õокр=r--(n-1).

  1. Симметричное округление. При этом производится анализ величины А0:

При условии|А0|≥r-1 единица добавляется к младшему разряду мантиссы. Данный способ округления наиболее часто используется на практике.

3. Округление по дополнению. В этом случае для округления используется (n+1)-й разряд. Если в нем находится единица, то она передается вn-й разряд, иначе разряды начиная с (n+1)-гоотбрасываются.

4. Случайное округление. Генератор случайных чисел формирует нулевое или единичное значение, посылаемое в младший разряд мантиссы.

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

Нормализация чисел

Число называется нормализованным, если его мантисса удовлетворяет условию r-1≤ |MA|<1.

Нормализация – процесс, относящийся к числам, записанным в форме с плавающей запятой. Число A=0,00101…1 – денормализованное (признак нарушения нормализации вправо). Для нормализации число нужно сдвинуть в сторону, противоположную направлению нарушения нормализации. Таким образом, в примере мантиссу числа А необходимо сдвинуть влево на два разряда. При этом порядок необходимо уменьшить на два. Различают два вида сдвигов: простой и модифицированный.

Простой сдвиг – сдвиг, выполняемый по правилу:

Исходная

комбинация

Сдвиг влево

Сдвиг вправо

0,a1a2….an

a1,a2….an0

0,0a1a2….an-1

1,a1a2….an

a1,a2….anα

0,1a1a2….an-1

Модифицированный сдвиг - сдвиг, при котором в сдвигаемый разряд заносится значение, совпадающее со значением знакового разряда.

Исходная

комбинация

Сдвиг влево

Сдвиг вправо

00,a1a2….an

0a1,a2….an0

00,0a1a2….an-1

01,a1a2….an

1a1,a2….an0

00,1a1a2….an-1

10,a1a2….an

0a1,a2….anα

1,1a1a2….an-1

11,a1a2….an

1a1,a2….anα

1,1a1a2….an-1

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