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


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

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

Рассмотрим арифметические операции над операндами, заданными с абсолютными погрешностями: А=[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).

2. Симметричное округление. При этом производится анализ величины А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

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



Дата добавления: 2022-02-05; просмотров: 273;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.