§ 4. О вычислительной погрешности
Ограничение на порядки чисел в ЭВМ иногда приводит к прекращению вычислений; в других случаях относительно небольшая разрядность чисел в ЭВМ приводит к недопустимому искажению результата вычислительной погрешностью. Такие алгоритмы, где вследствие ограниченности или малости t возникают подобные эффекты, называют «неустойчивыми».
Построение «устойчивых» алгоритмов, при использовании которых искажение окончательного результата вычислительной погрешностью находится в допустимых пределах, составляют существенную часть теории численных методов.
Рассмотрим пример, показывающий, что повышение точности иногда может быть достигнуто за счет несложного алгебраического преобразования.
Пусть отыскивается наименьший корень уравнения . Для определенности условимся о следующих правилах округления. Вычисления производятся в десятичной системе счисления, причем в мантиссе числа после округлений удерживается 4 разряда. Имеем
после округления получаем
То же самое значение можно, «избавившись от иррациональности в числителе», представить в виде . Последовательно производя вычисления, получаем и после округления
Наконец,
и после округления
Производя вычисления с дополнительными разрядами, можно проверить, что в обоих случаях все подчеркнутые цифры результатов верные; однако во втором случае точность результата существенно выше. Дело в том, что в первом случае пришлось вычитать близкие большие числа; так как эти числа были большие, то они были округлены с большой абсолютной погрешностью, в результате и ответ получился с большой абсолютной погрешностью.
Здесь нам впервые встретилось явление потери значащих цифр (или «пропадания» значащих цифр), имеющее место при вычитании близких величин; это явление, например, довольно часто приводит к существенному искажению результата при решении систем линейных алгебраических уравнений.
Рассмотрим другой типичный пример, где порядок выполнения операций влияет на погрешность результата. На машине с плавающей запятой вычисляется значение суммы
Можно вычислять либо по рекуррентной формуле
либо по рекуррентной формуле
Оказывается, во втором случае суммарная вычислительная погрешность будет существенно меньше.
Дело заключается в следующем. В большинстве случаев сложение чисел в ЭВМ осуществляется по следующей схеме. Два числа и складываются абсолютно точно, а затем происходит отбрасывание последних знаков или округление результата с тем, чтобы осталось t или t—1 значащих цифр. В результате получается приближенное значение суммы с погрешностью, не превосходящей , но в неблагоприятном случае большей, чем . В первом случае у нас при каждом сложении значение суммы больше 1 и в принципе возможно получение погрешности около . Во втором случае
поэтому погрешность накапливается существенно медленнее. Можно показать, что что погрешность окончательного результата не превосходит .
На конкретной ЭВМ было проведено вычисление по обоим алгоритмам и оказалось, что для первого алгоритма погрешность , а для второго — .
Заметим, что в настоящее время проблемы, возникающие в такого рода простейших задачах, обходятся за счет вычислений с двойной точностью.