
- •Глава 2
- •2.1. Введение
- •Относительные и абсолютные ошибки
- •2.3. Ошибки, содержащиеся в исходной информации
- •2.4. Ошибки ограничения
- •2.5. Ошибки округления
- •2.6. Распространение ошибок
- •2 .7. Графы вычислительных процессов
- •Пример 1
- •2.9. Памятка программисту
- •Упражнения
- •Численное решение уравнений
- •5.1. Введение
- •5.2. Метод последовательных приближений
- •5.3.Усовершенствованный метод последовательных приближений
- •5.4. Метод ньютона — рафсона
- •5.5. Случай почти равных корней
- •5.6. Сравнение методов и их ошибок округления
- •5.7. Корни многочленов
- •5.8. Влияние неточности коэффициентов многочлена
- •5.9. Системы уравнений
- •5.10. Комплексные корни
- •5.11. Нахождение исходного приближения
- •Упражнения
- •Глава 8
- •8.1. Введение
- •8.3. Ошибки округления
- •8.5. Влияние погрешностей коэффициентов. Достижимая точность решения
- •8.6. Итерационные методы решения систем линейных уравнений
- •8.7. Сравнение методов
- •8.8. Практический пример 10: проведение кривой методом наименьших квадратов
- •Лекция №1 Численное интегрирование
- •Лекция №2
- •Правило Симпсона.
- •Метод Гаусса
- •Методы прогноза и коррекции
- •Анализ ошибок при использовании метода прогноза и коррекции
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 для симметричного округления. В дальнейшем все вопросы, касающиеся округления действительных чисел, будут рассматриваться для случая десятичных чисел, но все сказанное будет с несущественными изменениями применимо к числам, выраженным в другой системе счисления.