Главная > Математика > Методы вычислений, Т.1
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

§ 3. Погрешности округления

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

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

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

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

Округлять при этом не придется, и следовательно, ошибок округления не возникает.

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

где введено для упрощения последующих записей.

Точно так же при делении х на у мы будем получать не точное частное а псевдочастное причем

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

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

Но числа, разность которых стоит под знаком модуля, могут отличаться друг от друга лишь на величину, кратную (кратную единице последнего разряда), и следовательно,

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

При

а

Мы как раз получили разницу в единицу последнего знака.

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

и следовательно,

Аналогично получим.

Отсюда

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

И здесь нетрудно привести пример, когда такая разность достигается. Пусть и нам нужно найти произведение При этом

и

В то же время

и

Рассмотрим еще один пример. Пусть нам требуется вычислить выражение

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

Второй член правой части оценивается без труда:

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

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

во втором — к

Точное частное при будет 2/6 и погрешность составляет около 25%.

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

Опять следует рассмотреть только первый член. Результат будет зависеть от того, что больше: у или z. Лучший результат получится при Это мы будем предполагать. Так как

(иначе деление невозможно было бы выполнить на машине), то

Можно считать, что следовательно,

Отсюда

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

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

<< Предыдущий параграф Следующий параграф >>
Оглавление