Погрешности вычислений

advertisement
Погрешности вычислений
При работе с приближенными величинами важно уметь:
1) давать математические характеристики точности приближенных величин;
2) зная степень точности исходных данных, оценить степень точности результатов и
требуемую точность промежуточных вычислений;
3) правильно построить вычислительный процесс, чтобы избавить его от тех выкладок,
которые не окажут влияния на точные цифры результата.
1. Источники погрешностей
Погрешность результата решения задачи складывается из трех составных частей:
– неустранимой погрешности решения, обусловленной неточностью исходных данных;
– погрешности метода решения задачи;
– вычислительной погрешности, являющейся результатом округлений в процессе счета.
Неустранимая погрешность решения обусловлена неточностью исходных данных,
которые возникают в результате неточности измерений (инструментальная ошибка) или из-за
невозможности представить необходимую величину конечным числом значащих цифр (ошибка
округления). Инструментальная ошибка всегда возникает при проведении физического
измерения, поскольку оно не может быть выполнено абсолютно точно. Ошибки округления при
задании исходных данных возникают в том случае, когда величину невозможно представить
ограниченным числом значащих цифр, например числа  , e и т.д.
Погрешности метода решения задач очень часто возникают при использовании
численных методов. Действительно, многие математические задачи могут быть решены только
приближенно, хотя и возможно со сколь угодно большой точностью, так как любой численный
метод предполагает использование конечного числа арифметических операций. Например, при
решении задачи обычно производную заменяют разностью, интеграл – суммой, или
бесконечный итерационный процесс обрывают после некоторого конечного числа итераций.
Так же к погрешностям метода можно отнести неточность отображения реальных процессов,
так как рассматривается не сам процесс, а его идеализированная математическая модель.
При решении численных задач на компьютере всегда возникают вычислительные
погрешности, обусловленные ошибками округления в процессе счета (так как вычисления на
ЭВМ выполняются с конечным числом значащих цифр, определенных конечностью разрядной
сетки ЭВМ). Исключения составляют задачи, в которых операции над данными выполняются
точно, например в целочисленной арифметике. Однако в подавляющем большинстве
вычислительных задач используются вещественные числа, операции над которыми
выполняются с ошибками округления. В зависимости от реализованного в алгоритме метода
решения, эти ошибки округления могут либо расти, либо уменьшаться. При расчетах те или
иные погрешности могут отсутствовать или их влияние может быть мало.
2. Абсолютная и относительная погрешности
Абсолютная ошибка  X есть разница между истинным значением величины X (считая
это истинное значение известным) и ее приближенным значением X .
Относительная ошибка  X 
X
X
определяется, как отношение абсолютной ошибки к
приближенному значению величины. Казалось бы, что более естественно определить ее, как
отношение абсолютной ошибки к точному значению, но обычно точное значение нам
неизвестно. Все, что обычно бывает известно, - это приближенное значение величины и оценка
ошибки или границы максимально возможной величины ошибки. Если ошибка мала, то разница
в определениях не скажется на численной величине относительной ошибки.
Для величин, близких по значению к единице, абсолютная и относительная ошибки почти
одинаковы. Для очень больших или очень малых величин относительная и абсолютная ошибки
представляются совершенно разными числами.
Если из условия задачи или из контекста не ясно, какая ошибка имеется ввиду, то чаще
считают, что ошибка относительная.
3. Десятичная запись приближенных чисел. Значащая цифра числа. Верная
значащая цифра
Пусть приближенное число A задано в виде конечной позиционной записи:
A  an an1...a0 , a1a2 ...a m ,

где a j – десятичные цифры  A 

n
 10 a
j
j  m
j

.

(*)
Значащими цифрами числа называются все цифры в его десятичном изображении,
отличные от нуля, и нули, если они содержатся между значащими цифрами или расположены в
конце числа и указывают на сохранение разряда точности. Нули, стоящие левее первой
отличной от нуля цифры, не являются значащими цифрами. (Например, числа 25.047 и 0.00250
имеют соответственно 5 и 3 значащих цифр.)
Любое число A может быть представлено в виде: A  b  q p , где p – некоторое целое
число, называемое порядком числа A , q – основание системы счисления, b – число,
называемое мантиссой числа A . Если выполнено условие q 1  b  1 , то говорят, что число A
записано в нормализованном виде.
Пример. Рассмотрим представления числа a  210 .
Система счисления
Позиционная запись
Запись числа в нормализованном виде
Двоичная
10000000000
.1*101011
Десятичная
1024
0.1024*104
При решении задач очень часто ставится условие: вычислить результат с точностью до
одной десятой, одной сотой и т.д. Создается впечатление, что точность вычислений
определяется числом верных десятичных знаков после запятой. Это не так, число десятичных
знаков зависит от единицы измерения. Остановимся на этом подробнее.
Цифра a j в записи (*) называется верной, если абсолютная погрешность числа A не
превосходит одной единицы соответствующего разряда десятичного числа.
Если приближенное число записывается без указания его предельной абсолютной
погрешности, то выписываются только его верные цифры (знаки). При этом верные нули на
правом конце числа не отбрасываются. Например, числа 0.0344 и 0.034400, как приближенные,
различны. Относительно первого числа можно только утверждать, что его абсолютная
погрешность не превосходит 104 , а из записи второго числа явствует, что его абсолютная
погрешность не больше чем 106 .
В том случае, когда у приближенного числа значащих цифр в целой части больше чем
имеется верных знаков, то прибегают к записи в нормализованном виде. Например,
A  0.390 105 . Из этой записи понятно, что у числа A три верные значащие цифры. В данной
ситуации запись вида A  39000 недопустима. В нормализованном виде можно записать и
рассмотренные выше приближенные числа: 0.344 101 , 0.34400 101 .
Можно говорить о числе верных значащих цифр у приближенного числа и о числе
верных цифр после запятой. Как правило, при реальных вычислениях у приближенных чисел
содержатся цифры после запятой, т.е. имеется дробная часть. Например, приближенное число
A  25.030 имеет 5 верных значащих цифр, и 3 верные цифры после запятой, а у числа
B  0.00230 , наоборот, 3 верные значащие цифры и 5 верных цифр после запятой.
Вывод: Абсолютная погрешность приближенного числа характеризуется числом верных
цифр после запятой, а относительная погрешность – числом верных значащих цифр.
Точность вычисления – это относительная погрешность результата, поэтому она
определяется не числом верных десятичных знаков после запятой, а числом верных
значащих цифр результата.
4. Представление чисел в ЭВМ
Принципиальное ограничение на выполнение арифметических вычислений накладывает
способ представления чисел в памяти ЭВМ. В памяти компьютера действительные числа
представляются в нормализованном виде, т.е. первая значащая цифра мантиссы не равна нулю.
Записи чисел с одинарной точностью (4 байта) соответствует для компьютеров IBM PC
примерно 7 цифр в десятичном представлении мантиссы, а записи с двойной точностью (8 байт)
соответствует 14 цифр в мантиссе. Порядок p изменяется от –37 до +37 для одинарной
точности и от –63 до +63 для двойной точности.
При представлении действительных чисел в памяти ЭВМ возникают ошибки,
обусловленные тем, что дробное десятичное число не всегда точно представимо в двоичной
системе счисления (Например, дробь 1/10 имеет конечное десятичное представление 0.1, но,
будучи переведена в двоичную систему счисления, становится бесконечной дробью
0.000110011001100…). Поэтому в ЭВМ нельзя представить не только все трансцендентные и
иррациональные числа, но и даже все рациональные числа. ЭВМ позволяет представить лишь
конечное подмножество действительных чисел. При этом особо выделяется множество целых
чисел, для которых в ЭВМ, как правило, используется специальный способ представления.
Происходит раздвоение множества целых чисел. Одно и то же целое число можно представить
как:
– машинное целое число;
– машинное число с плавающей точкой.
В языке FORTRAN (и аналогично в любом другом языке) логическое выражение 7.EQ.7.0
не обязательно является истинным. Это объясняется тем, что в ЭВМ используются различные
способы представления целых чисел и чисел с плавающей точкой. Таким образом, один и тот же
набор битов может интерпретироваться по-разному. Например, 32 бита для обычных целых и
вещественных чисел в Фортране могут интерпретироваться как:
a) машинное целое число: 1 бит обозначает знак числа, а остальные 31 бита отводятся под
позиционную запись 31-значного целого числа, в двоичной системе счисления;
b) машинное число с плавающей точкой: 1 бит обозначает знак числа, остальные 31 битов
отводятся для записи значения числа, представленного в экспоненциальном виде в двоичной
системе счисления, при этом под смещенный порядок отводится 8 битов, а под мантиссу 23.
При использовании двойной точности под запись числа отводится 64 бита. Для целых
чисел: 1 бит – знак, остальные 63 бита – позиционная запись числа в двоичной системе
счисления. Для чисел с плавающей точкой: 1 бит – знак числа, 63 бита – экспоненциальная
запись числа в двоичной системе счисления (11 бит – смещенный порядок, 52 бита – мантисса).
Значение смещенного порядка числа вычисляется по формуле p   2m 1  1 , где p –
порядок числа, а m – количество бит, которое отводится под запись порядка числа.
Примеры представления нескольких чисел в памяти ЭВМ.
I) Число a  210 :
210  1.*210  1.*101010  :
2
машинное целое
00000000000000000000010000000000;
машинное число с плавающей точкой
01000100100000000000000000000000.
81
Отметим, что 10  10102 , 10102   2  1  10102  11111112  100010012 .
II) Число a  210 ,
машинное целое
машинное число с плавающей точкой
10000000000000000000010000000000;
11000100100000000000000000000000.
III) Число a  210 ,
( 10  10102 , 10102  11111112  011101012 )
машинное число с плавающей точкой
00111010100000000000000000000000.
IV) Число a 
7
7
 7.* 28  0.000001112  1.11*10110  , ( 1102  11111112  11110012 )
:
2
256 256
машинное число с плавающей точкой
машинное число с плавающей точкой
VI) Число a  2
7
:
16
2
7
:
16
( 102  11111112  11111012 )
00111110111000000000000000000000.
7
 2.  7.* 24  10.01112  1.00111*101  ,
2
16
( 12  11111112  1000000002 )
машинное число с плавающей точкой
VII) Число a  12
00111100111000000000000000000000.
7
 7.* 24  0.01112  1.11*1010  ,
2
16
7
V) Число a  :
16
12
00111110111000000000000000000000.
7
 12.  7.* 24  1100.01112  1.1000111*1011  ,
2
16
( 112  11111112  100000102 )
машинное число с плавающей точкой
01000001010001110000000000000000.
5. Распространение ошибок
Одним из наиболее важных вопросов в численном анализе является вопрос о том, как
ошибка, возникшая в определенном месте в ходе вычислений, распространяется дальше, т.е.
становится ли ее влияние больше или меньше по мере того, как производятся последующие
операции.
Крайним случаем является вычитание двух почти равных чисел: даже при очень
маленьких ошибках обоих этих чисел относительная ошибка разности может оказаться очень
большой. Эта большая относительная ошибка будет распространяться дальше при выполнении
всех последующих арифметических операций.
Для оценки ошибок, получаемых при вычислениях, нам потребуются формулы оценки
абсолютной и относительной ошибок арифметических операций. Выпишем эти формулы.
 X Y    X  Y
 X Y    X  Y
 X Y   Y   X  X  Y
X Y 
1
X
 X  2  Y
Y
Y
X
Y
X 
Y
X Y
X Y
X
Y
  X Y  
X 
Y
X Y
X Y
  X Y    X  Y
  X Y  
  X Y    X  Y
Ошибки округления в вышеприведенных формулах не учитываются, поэтому, если
необходимо будет подсчитать, как распространяется в последующих арифметических операциях
ошибка результата, то следует к вычисленной по одной из формул ошибке прибавить ошибку
округления.
Большинство трансляторов Фортрана устроено таким образом, что младшие разряды, не
вошедшие в разрядную сетку, отбрасываются, что вносит ошибку отбрасывания, но экономит
машинное время. Относительная ошибка отбрасывания равна 10t 1 , где t – число значащих
цифр в мантиссе. Если же в трансляторе применяется симметричное округление, то к самому
младшему разрядку прибавляется 1, если отброшенное число начинается с цифры 5 или с
большей. Максимально возможная относительная ошибка округления в этом случае равна
0.5 10t 1 .
6. Правила подсчета цифр (по В.М. Брадису)
Эти правила даются в предположении, что компоненты действий содержат только верные
цифры и число действий невелико.
1) При сложении и вычитании приближенных чисел в результате следует сохранить
столько десятичных знаков после запятой, сколько их в приближенном данном с наименьшим
числом десятичных знаков после запятой.
2) При умножении и делении в результате следует сохранить столько значащих цифр,
сколько их в приближенном данном с наименьшим числом верных значащих цифр.
3) При возведении приближенного числа в квадрат в результате следует сохранить
столько значащих цифр, сколько их в основании степени.
4) При извлечении квадратного и кубического корней из приближенного числа в
результате следует сохранить столько значащих цифр, сколько их в подкоренном числе.
5) При вычислении промежуточных результатов следует сохранить на одну цифру
больше, чем рекомендуют правила 1-4. В окончательном результате эта «запасная цифра»
отбрасывается.
6) Если данные можно брать с произвольной точностью, то для получения результата с m
верными цифрами исходные данные следует брать с таким числом цифр, которые согласно
предыдущим правилам обеспечивают m+1 цифру в результате.
7. Общие рекомендации, позволяющие уменьшить погрешность вычислений.
1) Если необходимо произвести сложение-вычитание длинной последовательности чисел,
то начинать надо с наименьших чисел;
2) Необходимо избегать вычитания двух почти равных чисел, по возможности преобразуя
формулы;
3) Необходимо сводить к минимуму число необходимых арифметических операций.
4) Очень важно использовать алгоритмы, в которых ошибки округления не
накапливаются. Такие алгоритмы называются устойчивыми.
8. Ошибки в FORTRAN-программах, связанные с особенностью выполнения
арифметических операций
Порядок выполнения арифметических операций на ЭВМ играет существенную роль, так
как для машинных арифметических операций не выполняются ассоциативный и
дистрибутивный законы арифметики.
При вычислении выражений процессору разрешаются эквивалентные преобразования при
условии, что соблюдается неприкосновенность скобок и что целые операнды не смешиваются с
операндами других типов так, чтобы мог получиться неэквивалентный результат.
Допустимые преобразования арифметических выражений 1)
Выражение
Допустимое преобразование
Выражение
A+B
A*B
–A+B
A+B+C
A–B+C
B+A
B*A
B–A
A+(B+C)
A–(B–C)
A*B/C
A*B–A*C
A/B/C
A/5.0
Допустимое
преобразование
A*(B/C)
A*(B–C)
A/(B*C)
0.2*A
Недопустимые преобразования арифметических выражений 1)
Выражение
Недопустимое преобразование
Причина
I/2
0.5*I
Математически разная форма
A*I/J
A*(I/J)
Математически разная форма
I/J/A
I/(J*A)
Математически разная форма
(A*B)–(A*C)
A*(B–C)
Неприкосновенность скобок
A*(B–C)
A*B–A*C
Неприкосновенность скобок
1)
Замечание. A, B, C – вещественные, с двойной точностью или комплексные операнды,
I и J – целые операнды.
Download