Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
krav.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.45 Mб
Скачать

2.4. Ошибки ограничения

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

может использоваться для вычисления синуса любого угла x, выраженного в радианах

( Однако , как мы увидим в главе 3 , это далеко не самый лучший способ вычисления синуса угла )

. Конечно, невозможно использовать все члены ряда для вычислений, так как ряд беско­нечен; вычисления ограничиваются конечным числом членов: например, до х7 или x9. Отброшенные члены ряда (а их число бесконечно) вносят некоторую ошибку в результат вычислений. Эта ошибка называется ошибкой ограничения, так как она возникает в результате ограничения бесконеч­ного математического процесса.

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

2.5. Ошибки округления

Даже если предположить, что исходная информация не содержит никаких ошибок и все вычислительные про­цессы конечны и не приводят к ошибкам ограничения, то все равно в этом случае присутствует третий тип оши­бок — ошибки округления. Предположим, что вычисления производятся на машине, в которой каждое число пред­ставляется пятью значащими цифрами, и что необходимо сложить два числа 9.2654 и 7.1625, причем эти два числа являются точными. Сумма их равна 16.4279, она содержит шесть значащих цифр и не помещается в разрядной сетке нашей гипотетической машины. Поэтому шестизначный результат будет округлен до 16.428, и при этом возникает ошибка округления. Так как вычислительные машины всег­да работают с конечным количеством значащих цифр, то потребность в округлении возникает довольно часто.

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

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

0.7392-104 (= 7392.)

0.3246*102 (=32.46)

0.1627-10-3 (= 0.0001627)

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

Если обозначить мантиссу действительного числа х через f, а его порядок через е, то в общей форме число запишется следующим образом:

x=f*10e

Величина f не может быть меньше 1/10, так как все числа должны быть нормализованными; эта величина не может также быть больше 1, так как мантисса должна быть пра­вильной дробью.

Результат выполнения арифметической операции в об­щем случае состоит из двух частей: старшей и младшей. Например, предположим, что необходимо сложить два действительных числа и что в ячейке памяти вычислитель­ной машины мантисса может представляться четырьмя значащими цифрами, а порядок — одной цифрой:

0.1624*103 (= 162.4),

0.1769*101(== 1.769).

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

0.1624*103

0.001769*103

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

Очевидно, что сумма будет иметь больше четырех значащих цифр в мантиссе. Результат до

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

0.1624*103

0.001769*103

0.164169*103 = 0.1641*103+0.6900*10 -1

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

y= f y *10 e g y *10 e-t

Здесь fy имеет t значащих цифр. Диапазон возможных значений fy, как мы условились, лежит между 0.1 и 1.0 (0.1  fy< 1.0). Для gy это не так, потому что gy может и не быть нормализованным числом; в частности, gy может оказаться равным нулю. Для gy диапазон возможных значе­ний составляет 0  gy<. 1.0.

Теперь мы подходим к двум вопросам первостепенной важности: согласно каким правилам следует учитывать величину gy при изменении fy и какова максимально возможная ошибка округления величины у для каждого из та­ких правил?

Обычно «округление» означает, что с величиной fy производится какое-то действие, зависящее от величины gy. В общем случае необходимо рассматривать и такую возмож­ность, когда никакого действия не производится, т. е. когда gy просто отбрасывается. Соответствующий метод округления называется отбрасыванием младших разрядов.

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

Довольно легко определить максимально возможную относительную ошибку для случая отбрасывания gy. Мак­симальная ошибка возникает тогда, когда gy велико, a fy мало. Максимально возможное значение gy равно 1.0, минимально возможное значение fy равно 0.1. Величина относительной ошибки (без учета знака) выразится так:

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

Более общепринятый способ округления, так называемое симметричное округление, можно описать следующим обра­зом: если две части арифметического результата обозначены так же, как и раньше, то округленный результат записывается так:

_

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

Если

то абсолютная ошибка равна

Е сли

то абсолютная ошибка равна

В обоих случаях 10e-t умножается на число, не большее 1/2 по абсолютной величине. Максимально возможное значение модуля абсолютной ошибки для этого способа округления составляет

Т еперь легко найти максимально возможную относительную ошибку:

Иногда применяется более точное правило округления, учитывающее случай g = 1/2: fy не изменяется, если ее последняя цифра четная, и округляется, если эта цифра нечетная. Это несколько усложняет систему и редко используется. Таким образом, мы предположим, что округление производится обычным образом, без учета случая gy == 1/2.

Чтобы проиллюстрировать разницу между двумя спосо­бами округления, рассмотрим следующую арифметическую операцию:

у =0.7324*103+0.8261*10-1

Для случая отбрасывания _

у = 0.7324*103

и

В случае симметричного округления

у= 0.7325*103; e = - 0.1739. 10 –1

и

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

И та и другая ошибки гораздо меньше своих максималь­но возможных значений (10-3 для отбрасывания и 5*10-4 для симметричного округления). Может случиться даже так, что ошибка округления будет равна нулю. Вообще говоря, обычно бывает известен только верхний предел возможной ошибки, но не она сама. Для полной уверенности всегда необходимо предполагать самое худшее, т. е. ситуа­цию, когда ошибка равна своему верхнему пределу. Более близкий к истине результат можно получить, введя некую «среднюю» ошибку и пользуясь методами математической статистики для определения наиболее вероятной величины ошибки в вычислениях. В этой книге, однако, такие методы рассматриваться не будут.

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

представлено в виде двоичной дроби, умноженной на целую степень 2:

Анализ, подобный тому, который был проведен для деся­тичных чисел, позволяет показать, что максимально воз­можные значения ошибок округления составляют 2*2-t для отбрасывания и 2-t для симметричного округления.

Некоторые ЭЦВМ работают с шестнадцатеричными чис­лами, т. е. с числами, построенными по основанию 16. В этом случае максимальные ошибки составляют 16*16-t для отбрасывания и 8*16-t для симметричного округления. В дальнейшем все вопросы, касающиеся округления действительных чисел, будут рассматриваться для случая десятичных чисел, но все сказанное будет с несущественны­ми изменениями применимо к числам, выраженным в другой системе счисления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]