При численном решении задач на компьютере возникают погрешности, искажающие результаты вычислений. Различают 3 источника погрешностей (слайд 18):
1) Погрешности в исходных данных. Это неустранимые погрешности; их следует учитывать при выборе точности метода решения задачи, а также иметь представление об их влиянии на точность окончательных результатов.
2) Погрешности метода решения задачи. Это регулируемые погрешности; они могут быть уменьшены до любого разумного значения путем изменения некоторого параметра метода. Погрешности метода специфичны для каждого из конкретных численных методов, и мы будем рассматривать их при изучении соответствующих методов.
3) Погрешности округления. Этот вид погрешности связан с ограниченностью разрядной сетки компьютера.
Рассмотрим подробнее вопросы, связанные с погрешностями округления.
Числа с плавающей точкой
В задачах вычислительной математики нам приходится иметь дело с действительными числами (слайд 19). Действительное число – это, вообще говоря, бесконечная десятичная дробь, например:
π = 3.14159… √2 = 1.414… 1/3 = 0.333…
Некоторые действительные числа представляются конечными десятичными дробями, например:
0.1 2.125 0.0000512
В памяти компьютера действительные числа представляются в форме с плавающей точкой (слайд 20):
где β – основание системы счисления;
k – разрядность (точность);
m – мантисса числа;
n – порядок числа (nL ≤ n ≤ nU, nL и nU – границы порядка);
di – цифры числа (0 ≤ di ≤ β–1, i=1,2,…k).
Если d1 > 0, то такая форма представления числа называется нормализованной. Мантисса для экономии занимаемого места хранится в памяти компьютера в виде целого числа m∙βk.
Пусть, например (слайд 21):
β = 10, k = 5, nL = -99, nU = +99
Тогда записанные выше действительные числа могут быть представлены в нормализованной форме с плавающей точкой следующим образом:
π = 0.31416∙10+01 √2 = 0.14142∙10+01 1/3 = 0.33333∙10+00
0.1 = 0.10000∙10+00 2.125 = 0.21250∙10+01 0.0000512 = 0.51200∙10-04
Диапазон чисел, представимых в форме с плавающей точкой, определяется количеством разрядов, отводимых под порядок числа (слайд 22). Так для приведенного примера
0.10000∙10-99 ≤ |x| ≤ 0.99999∙10+99
Величина β1–k характеризует относительную точность представления с плавающей точкой:
где r – действительное число, x – его представление в форме с плавающей точкой. Для нашего примера относительная точность представления составляет 0.5*10–4.
В современных компьютерах числовые данные хранятся в шестнадцатеричной системе счисления (β = 16), и для представления действительных чисел имеются две основные формы представления с плавающей точкой (слайд 23): с обычной (одинарной) точностью (тип данных Single в языке Visual Basic) и с двойной точностью (тип данных Doub le в языке Visual Basic).
Числа с одинарной точностью занимают в памяти компьютера 4 байта (32 бита: 1 бит под знак, 8 бит под порядок и 23 бита под мантиссу). Такое представление обеспечивает относительную точность 6-7 десятичных цифр в примерном диапазоне:
1.2∙10-38 ≤ |x| ≤ 3.4∙10+38
Числа с двойной точностью занимают в памяти компьютера 8 байтов (64 бита: 1 бит под знак, 11 бит под порядок и 52 бита под мантиссу). Это представление обеспечивает относительную точность 15-16 десятичных цифр в примерном диапазоне:
2.3∙10-308 ≤ |x| ≤ 1.7∙10+308
Таким образом, компьютер оперирует с приближенными (округленными) значениями действительных чисел, представленными в форме с плавающей точкой с одинарной или двойной точностью. При этом следует иметь в виду, что числа, представимые в десятичной системе в виде конечной дроби, в шестнадцатеричной системе могут представлять собой бесконечные дроби. Например:
(0.1)10 = (0.199999…)16
и в памяти компьютера хранится приближенное значение числа 0.1.
Мерой точности приближенного значения является его погрешность.