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

§ 5. Арифметические операции

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

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

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

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

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

для всех чисел х, у, представленных в ЭВМ, если при этом сама операция выполнима.

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

где

Предполагается, конечно, что сами операции выполнимы.

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

где согласно (4.6)

Формулы (5.5) нельзя существенно улучшить на множестве всех чисел, представленных в ЭВМ. Однако для некоторых практически важных случаев можно гарантировать, что Нетрудно проверить, что это будет, например, если складываются числа одинаковых знаков

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

Несмотря на то, что в случае операции сложения (вычитания) ошибка округления появляется, она все же имеет некоторую особенность, на которую стоит обратить внимание. Пусть

где мантиссы, порядки чисел х, у. Будем считать, для определенности, что и представим в таком виде:

Мантиссы удовлетворяют условиям (3.2). Поэтому число

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

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

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

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

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

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

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

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

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

точностью, выражения вида (5.6) в режиме накопления вычисляются почти за то же время, что и в режиме одинарной точности. Будем считать в дальнейшем, что

при этом

как и в других аналогичных случаях.

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

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

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

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

УПРАЖНЕНИЯ

(см. скан)

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