- •Вероятностный подход к оценке погрешности.
- •Среднее арифметическое значение приближённых чисел имеет повышенную точность по сравнению с самими этими числами.
- •2.2 Представление чисел на компьютере.
- •2.3 Машинное представление целых чисел.
- •2.4 Машинное представление вещественных чисел: арифметика с плавающей точкой.
- •2.6 Погрешности результатов арифметических операций.
- •Литература
Среднее арифметическое значение приближённых чисел имеет повышенную точность по сравнению с самими этими числами.
Причём из формулы (6) следует, что 0 при n .
Аналогично на основе вероятностного подхода для случая умножения n сомножителей с одинаковой относительной предельной погрешностью можно доказать, что практическая предельная относительная погрешность произведения определяется формулой:
=
(7)
Погрешность машинной арифметики.
Общие замечания.
Люди занимаются вычислениями уже тысячи лет. Но лишь с изобретением электронного компьютера автоматизированные вычисления большого масштаба стали важным инструментом в науке и технологии. При реализации вычислительного процесса на компьютере необходимо учитывать два основных важных обстоятельства.
Машинная арифметика отличается от арифметики используемой для учёта погрешностей при ручных вычислениях. При проведении ручных вычислений промежуточные результаты непосредственно доступны для обозрения вычислителя, и точность вычислений можно изменить в соответствии с требованиями момента. В машинной арифметике каждое число имеет фиксированное количество разрядов, которого в известных случаях может не хватать для получения приемлемой точности результата.
Ручные вычисления обычно не бывают длинными, тогда как машинный процесс вычислений может состоять из миллионов шагов. Ничтожно малые ошибки, которыми в коротком вычислении можно было бы пренебречь, накапливаясь в протяжённом процессе автоматических вычислений, могут приводить к «разрушительным последствиям». Кроме того, методы, вполне удовлетворительные для малых задач (т.е. используемые при ручных расчетах), могут быть безнадёжно неэффективными для больших задач того же типа.
Здесь мы сосредоточимся, главным образом, на первом из казанных выше обстоятельств, а именно на свойствах машинной арифметики. Её отличия от арифметики «реальной» могут казаться несущественными, однако не таковы последствия этих отличий. Проиллюстрируем сказанное некоторыми простыми примерами.
Пример 1. Разностное уравнение для производной.
Как известно производная функции f в точке x определяется соотношением:
,
поэтому при очень малых h предельный переход в данном разностном отношении можно опустить, в результате чего можно записать, что:
В таблице 1 показаны результаты вычислений производной по указанной формуле, полученные на машине VAX, для функции f (x) = e x в точке x = 1. точное значение производной в этой точке (с восемью разрядами после десятичной точки) равно 2.71828175 .
Таблица 1
-
h
h f (1)
e
Ошибка
100
4.67077446
2.71828175
1.95100
101
2.85884380
2.71828175
1.41101
102
2.73191929
2.71828175
1.36102
103
2.71987939
2.71828175
1.60103
104
2.72035623
2.71828175
2.07103
105
2.71797204
2.71828175
3.10104
106
2.62260461
2.71828175
9.57102
107
4.76837206
2.71828175
2.05100
108
0.00000000
2.71828175
2.72100
Из таблицы 1 видно, что при уменьшении h приближение к производной, даваемое разностным отношением, вначале улучшается, но затем становится всё хуже и хуже. Результат, указанный в последней строке, означает, что мы достигли предела точности машинной арифметики.
Пример 2.
Система
линейных уравнений.
Если данную систему уравнений решать на компьютере с использованием одного из стандартных «высококачественных» методов решения систем линейных уравнений, то, работая в рамках трёхразрядной десятичной арифметики, получим следующее решение: x = 1.71; y = 1.98;
Если подставить найденные решения в левые части уравнений и вычесть из полученных результатов правые части системы, то получим разности между левыми и правыми частями, называемые невязками, которые достаточно малы:
В тоже время если данную систему решать, используя рассмотренную нами классическую арифметику, то, очевидно, что её точное решение имеет вид: x = 1.000; y = 1.000;
Хотя данный пример сконструирован искусственно, тем не менее, он всё же явно показывает, что вычисленное решение может очень существенно отличаться от точного (т.е. при использовании машинной арифметики вычисленные значения совсем не похожи на точные) и в то же время вычисленные решения ведут себя примерно также, как и точные решения (т.е. поскольку невязка мала, и они «почти решают» систему уравнений).
Таким образом, машинная арифметика есть лишь приближение к тому, что мы обычно понимаем под арифметикой. Реальные различия между ними и являются причинами «странных» эффектов, иллюстрируемых рассмотренными примерами. Хорошие численные методы должны учитывать эффекты этой машинной арифметики. Но даже такие методы не всегда в состоянии вычислить решения задачи с требуемой точностью.
