Главная > Прикладная теория цифровых автоматов
НАПИШУ ВСЁ ЧТО ЗАДАЛИ
СЕКРЕТНЫЙ БОТ В ТЕЛЕГЕ
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO

3.6. ТОЧНОСТЬ ВЫПОЛНЕНИЯ ОПЕРАЦИИ В МАШИНЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

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

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

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

Пример. Заданы

Вычислить

Мантисса результата денормализовала вправо на один разряд. Следовательно, необходима ее нормализация и последующее округление до 4-х разрядов.

После нормализации имеем:

После округления получим

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

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

Пример. Заданы

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

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

Некоторым выходом из создавшегося положения могла бы послужить возможность задания входных данных задачи в ненормализованной форме, которая бы отражала степень принятой точности, и если бы при этом в выходных данных имелась информация о том, какова точность ответа. Некоторые возможности в этом плане дает ненормализованная арифметика. Ее правила состоят в следующем: пусть — количество нулей, стоящих в начале дробной части числа А. Тогда сложение и вычитание выполняются по обычным правилам за тем исключением, что все сдвиги опускаются. Умножение и деление выполняются как обычно за тем исключением, что результат сдвинут вправо или влево, так как дробная часть ответа будет начинаться в точности с нулей. По-существу те же правила используются и для традиционных вычислений вручную. Когда итогом вычислений является нуль, то в качестве результата выдается ненормализованный нуль. Это означает, что в действительности результат может быть и не равен нулю, но мы просто не знаем ни одной его значащей цифры.

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

Другой выход к проблеме оценки погрешности связан с так называемой «интервальной» арифметикой [16], в которой вычисления выполняются с учетом верхней и нижней оценок для каждого числа. Так, например, если известно, что то и при положительных Аналогичные правила можно записать и для других случаев. Вычисления кодов проводятся с соответствующим округлением (к нулю для нижних границ и от нуля для верхних). Такие вычисления лишь вдвое больше по объему, чем те же вычисления в обычной арифметике, и могут оказаться весьма ценными, так как обеспечивают точную оценку ошибки. Однако возникают трудности, когда мы пытаемся делить на В. Кроме того, ввиду зависимости промежуточных результатов друг от друга окончательные оценки часто оказываются не слишком удовлетворительными. При этом

имеются также некоторые проблемы, связанные с применением итерационных численных методов.

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

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

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

1
Оглавление
email@scask.ru