ПОГРЕШНОСТИ ВЫЧИСЛЕНИЙ
В этой работе Вы познакомитесь с основными источниками возникновения погрешности. На специально подобранных примерах изучите влияние конечной арифметики на достоверность результатов, получаемых при численном решении задачи. В частности, для функции, представляемой сходящимся рядом Тейлора с теоретически бесконечным радиусом сходимости, вычислить ее значение с заданной точностью путем суммирования ряда удается лишь для сравнительно небольших значений аргумента. Реальный «радиус сходимости» весьма невелик, и он сильно зависит от числа значащих цифр, используемых для представления чисел в ЭВМ.
Вычисление производной с использованием формул численного дифференцирования также таит в себе много интересного. Все это Вы узнаете, если проделаете предлагаемую работу, но прежде чем Вы начнете ее выполнять, советуем ознакомиться с теоретической справкой, которая, конечно же, ни в коей мере не заменяет учебника.
Выполнение этой работы необходимо для понимания реальной ситуации, в которой используются рассматриваемые в других работах численные методы решения задач.
Напомним некоторые понятия, связанные с погрешностями.
Если a — точное значение некоторой величины, — ее
приближенное значение, то абсолютной погрешностью величины
обычно
называют наименьшую величину
про которую известно, что
Относительной
погрешностью приближенного значения называют наименьшую величину про которую известно, что
В любой вычислительной
задаче по некоторым входным данным требуется найти ответ на поставленный
вопрос. Для вычисления значения функции при
входными
данными задачи служат число x и закон f, по которому каждому
значению аргумента x ставится в соответствии значение функции
Если ответ можно дать с любой точностью, то погрешность отсутствует. Но обычно ответ удается найти лишь приближенно. Погрешность задачи вызывается тремя причинами.
Первая — неопределенность при задании входных данных, которая приводит к неопределенности в ответе. Ответ может быть указан лишь с погрешностью, которая называется неустранимой.
Проиллюстрируем понятие неустранимой погрешности на
примере. Пусть функция известна приближенно, например, она
отличается от
не более чем на величину
(1.1)
Кроме того, пусть значение аргумента получается
приближенным измерением, в результате которого получаем
причем
известно, что t лежит в пределах
(1.2)
где — число, характеризующее точность
измерения (для определенности будем считать, что функция
на
отрезке (1.2) монотонно возрастает).
Величиной может
оказаться любая точка отрезка
(см. рис. 1), где
Понятно,
что, приняв за приближенное значение величины
любую точку
отрезка
[a, b], можно гарантировать оценку погрешности:
(1.3)
Эту гарантированную оценку погрешности нельзя существенно улучшить при имеющихся неполных входных данных.
Рис. 1
Самая малая погрешность,
получается, если принять за середину отрезка [a, b],
положив
Тогда справедлива оценка
(1.4)
Таким образом, 0,5ïb – aï и есть та неустранимая (не
уменьшаемая) погрешность, которую можно гарантировать при имеющихся
неопределенных входных данных в случае самого удачного выбора приближенного
решения Оптимальная оценка (1.4) ненамного
лучше оценки (1.3). Поэтому не только о точке
но и о любой
точке
условимся говорить, что она
является приближенным решением задачи вычисления числа
найденным
с неустранимой погрешностью, а вместо 0,5ïb – aï из (1.4) за величину неустранимой погрешности
примем (условно) число ïb – aï.
Вторая причина возникновения погрешности состоит в том, что при фиксированных входных данных ответ вычисляется с помощью приближенного метода. Возникает погрешность, связанная с выбором метода — погрешность метода вычислений. Проиллюстрируем это понятие на следующем простом примере.
Положим Точка
выбрана среди
других точек отрезка [a, b]
(см. выше по поводу неустранимой погрешности), так как она задается при помощи
удобной для дальнейшего формулы.
Воспользуемся разложением
функции в ряд Тейлора:
(1.5)
Для вычисления значения можно выбрать
одно из следующих выражений:
(1.6)
Выбирая для приближенного вычисления одну из
формул (1.6), тем самым выбираем метод вычисления.
Величина —
погрешность метода вычисления.
Фактически выбранный метод вычисления зависит от параметра n и позволяет добиться, чтобы погрешность метода была меньше любой наперед заданной величины за счет выбора этого параметра.
Очевидно, нет смысла стремиться, чтобы погрешность метода была существенно (во много раз) меньше неустранимой погрешности. Поэтому число n не стоит выбирать слишком большим. Однако, если n слишком мало и погрешность метода существенно больше неустранимой погрешности, то избранный способ не полностью использует информацию о решении, содержащуюся во входных данных. Часть этой информации теряется.
Наконец, сам выбранный приближенный метод реализуется
неточно из-за ошибок округления при вычислениях на реальном компьютере. Так,
при вычислении по одной из формул (1.6) на
реальном компьютере в результате ошибок округления мы получим значение
Величину
называют
погрешностью округления. Она не должна быть существенно больше
погрешности метода. В противном случае произойдет потеря точности метода за
счет ошибок округления. Точность метода вычислений также целесообразно
согласовывать с величиной ожидаемых ошибок округления.
Погрешность результата складывается, таким образом, из неустранимой погрешности, погрешности метода и погрешности округления. Рассмотрим несколько простых примеров.
Пусть требуется вычислить
значения Воспользуемся разложением функции
в
окрестности нуля в ряд Тейлора, радиус сходимости которого для данной функции
равен бесконечности:
Для вычисления y можно воспользоваться одним из приближенных выражений:
Выбирая для вычисления y одну из приведенных формул, мы тем самым выбираем приближенный метод вычисления, точность которого определяется числом привлекаемых членов ряда n.
Ряд Тейлора для функции является
знакопеременным, сходится для любого значения t, а его частичная сумма
отличается от точного значения функции не более, чем на величину первого
отброшенного члена ряда. Выбирая n так, чтобы
можно добиться любой наперед заданной точности e.
Однако при вычислениях на реальном компьютере получить
результат с требуемой точностью для t (которое существенно больше
единицы) не удается из-за быстрого роста ошибок округления. Последние тем
больше, чем больше t. Это связано с различным характером поведения
величины членов ряда Тейлора при и
При
члены
ряда по абсолютной величине монотонно убывают в зависимости от n. При
члены
ряда по модулю сначала растут (тем сильнее, чем больше t) и только
потом, достигнув при некотором
максимума, начинают убывать и
стремиться к нулю при
Для того, чтобы обеспечить при
вычислении, например,
-го (максимального по модулю) члена ряда
абсолютную погрешность, не превосходящую
необходимо
вычислить его с относительной погрешностью, не хуже чем
Требуемая относительная точность тем выше, чем больше что
можно обеспечить только увеличением длины мантиссы.
Величина погрешности округления зависит также от того, как
алгоритмически реализован приближенный метод. Например, частичную сумму ряда
для функции можно подсчитывать, суммируя члены
ряда в их естественном порядке; можно суммировать в обратном порядке (с конца);
можно рассматривать отрезок ряда как полином и использовать для его вычисления схему
Горнера; можно просуммировать отдельно положительные и отрицательные члены
ряда и затем вычесть из первой суммы вторую и т. д. (из перечисленных
алгоритмов последний наиболее чувствителен к ошибкам округления).
Схемой Горнера называют запись полинома n-й степени в следующем виде
Формальное использование этой схемы для вычисления значений отрезка ряда без учета специфики вычислений на ЭВМ приведет к неверным результатам уже при сравнительно небольших n. Сохранив идею, необходимо внести в нее соответствующие коррективы.
Пусть задана функция Необходимо
вычислить ее первую производную в некоторой точке x. Воспользуемся для
этого формулами численного дифференцирования различного порядка аппроксимации.
(1.7)
Пусть известно, что тогда погрешность
метода для этой формулы имеет первый порядок по h:
(1.8)
Пусть значения функции известны с
погрешностью
Даже в случае
отсутствия неустранимой погрешности f, при вычислении значения функции
на ЭВМ возникает погрешность за счет ошибок округления, и ее величина в этом
случае зависит от представления чисел в машине. Тогда при вычислении
производной по формуле (1.7) возникает погрешность
причем
(1.9)
Для суммарной погрешности r имеем оценку
(1.10)
Для уменьшения погрешности метода необходимо, согласно оценке (1.8), уменьшить шаг h, но при этом растет второе слагаемое в (1.10).
На рис. 2 представлен характер зависимости
погрешности метода, погрешности вычисления функции и суммарной погрешности в
зависимости от шага h. Минимум суммарной погрешности достигается в точке
экстремума
функции
причем в ней
Рис. 2
Тогда имеем для оптимального шага дифференцирования:
(1.11)
При использовании формулы (1.7) нельзя рассчитывать на точность более высокую, чем
(1.12)
которая является следствием (1.10) при
Если погрешность при вычислении функции связана лишь с
ошибками округления, то в этом случае где t —
число разрядов, отводимых под хранение мантиссы числа. Следовательно,
производную можно вычислить, в лучшем случае, с половиной верных знаков (если
и
).
Рассмотрим теперь как изменятся результаты в случае использования формулы численного дифференцирования второго порядка аппроксимации.
(1.13)
Пусть известно, что тогда погрешность
метода для этой формулы имеет второй порядок по h:
(1.14)
Пусть значения функции известны
с погрешностью
Тогда при
вычислении производной по формуле (1.13) возникает погрешность
причем
(1.15)
Для суммарной погрешности r имеем оценку:
(1.16)
Для уменьшения погрешности метода необходимо, согласно оценке (1.14), уменьшить шаг h, но при этом растет второе
Рис. 3
слагаемое в (1.16). На рис. 3 представлен характер
зависимости погрешности метода, погрешности вычисления функции и суммарной
погрешности в зависимости от шага h. Минимум погрешности достигается в
точке h — экстремума функции
Оптимальное
значение шага численного дифференцирования есть:
(1.17)
Таким образом, при использовании формулы (1.13) нельзя рассчитывать на точность более высокую, чем
(1.18)
Ниже рассматривается формула четвертого порядка аппроксимации.
(1.19)
Пусть известно, что тогда погрешность
метода для этой формулы имеет четвертый порядок по h:
(1.20)
Пусть значения функции известны с
погрешностью
Тогда при
вычислении производной по формуле (1.19) возникает погрешность
причем
(1.21)
Для суммарной погрешности r имеем оценку
(1.22)
Для уменьшения погрешности метода необходимо, согласно оценке (1.20), уменьшить шаг h, но при этом растет второе слагаемое в (1.22).
На рис. 4 представлен характер зависимости погрешности метода, погрешности вычислений и суммарной погрешности в зависимости от шага h.
Рис. 4
Минимум погрешности достигается в точке экстремума
функции
Имеем для
оптимального шага численного дифференцирования
(1.23)
Таким образом, при использовании формулы (1.19) нельзя рассчитывать на точность более высокую, чем
Подробнее элементарная теория погрешностей рассмотрена в [1, 32]. Некоторые аспекты вычислений с конечной арифметикой можно найти в [5]. Анализ влияния конечноразрядной арифметики на результаты вычислений в задачах линейной алгебры проведен в [6].
Начните выполнение работы с вычисления функции с
помощью ряда Тейлора. Задайте длину мантиссы, используемую при работе с
переменными двойной точности (типа double); задайте начальный интервал
изменения аргумента
Последовательно увеличивая число
членов ряда, привлекаемых для вычисления суммы, визуально убедитесь в том, что
для фиксированного x
точность метода растет с ростом числа членов ряда n. Отметьте, что чем
больше x, тем
большее число членов ряда необходимо привлекать для обеспечения необходимой
точности.
Отодвиньте правую
границу интервала x вправо
настолько, чтобы наблюдаемое отклонение от точного значения функции нельзя было устранить увеличением точности
метода. Установите режим «Обеспечивать заданную точность» (в этом режиме программа сама выбирает минимально
необходимое число членов ряда для вычисления
значения функции при каждом x с
заданной точностью) и
убедитесь, что результат будет тем же. Попытайтесь объяснить наблюдаемое
явление; в случае затруднений обратитесь к разделу меню «Учебник». Меняя
длину мантиссы (число десятичных знаков), убедитесь, что наблюдаемый эффект
возникает тем раньше, чем меньше это число. Задайте точность очень грубую,
например
Объясните наблюдаемую картину.
Задайте интервал число
десятичных знаков 6 (это соответствует длине мантиссы K = 20), число
членов ряда n = 24. Оцените, какой вклад в наблюдаемую погрешность
вносит ошибка метода, и какая ошибка возникает из-за мантиссы конечной длины. Задайте достаточно высокую точность. Объясните,
почему наблюдаемая погрешность намного превышает заданную точность.
Используя информацию с экрана, оцените величину максимального по модулю члена ряда для x = 20, приняв в качестве гипотезы, что наблюдаемая погрешность возникла при вычислении только одного максимального члена ряда.
Найдите номер m максимального по модулю члена ряда.
Для этого можно воспользоваться связью между -м и
-м
членами ряда:
Найдя m, оцените Сравните
полученный результат с ранее найденным значением
Установите Почему в этом случае погрешность
носит пилообразный характер?
Установите длину мантиссы (начните с максимальной). Задайте начальный шаг h для вычисления производной. Выберите формулу первого порядка аппроксимации и функцию, для которой будет вычисляться производная. Последовательно уменьшая шаг h, проследите, как ведет себя погрешность метода и погрешность, связанная с использованием конечной арифметики. Уменьшайте шаг до тех пор, пока на графике производной не появятся аномальные эффекты; посмотрите, что произойдет при дальнейшем уменьшении шага. Постарайтесь объяснить наблюдаемые явления. Изменяя длину мантиссы, исследуйте, какое влияние оказывает на них эта характеристика ЭВМ.
Получите зависимость погрешности вычисления производной от шага, сравните ее с теоретической. Определите, при каком шаге h погрешность минимальна, и какова эта погрешность. Как влияет на эти величины число десятичных знаков (длина мантиссы)? Сравните результаты с теоретическими оценками.
Проделайте это же задание, используя формулы численного дифференцирования второго и четвертого порядка точности. Сравните все три метода по оптимальному шагу, при котором достигается минимум погрешности, по величине этой погрешности. Сравните с теоретическими оценками.
1. Как известно, для вычисления функции можно
использовать следующий ряд по x:
(а)
Можно представить в виде
где
положив
далее
для представления логарифма получаем ряд
(б)
В чем преимущества и недостатки использования ряда (б)? Как оценить погрешность метода при использовании каждого из этих разложений?
2. Какова
относительная погрешность округления при представлении действительного числа в
ЭВМ, если под хранение мантиссы отводится p бит? (Ответ: )
Указание: Рассмотрите представление произвольного действительного числа в виде бесконечной двоичной дроби:
где равно 0
или 1, и соответствующее ему округленное представление:
3. Пусть функция задана
таблично: заданы значения аргументов
(расстояние между
двумя соседними точками h) и значения функции в них
…
Самостоятельно выведите формулу
вычисления односторонней производной для приближенного вычисления в
точках
и
с точностью до
и
Найдите
оптимальные шаги численного дифференцирования. Сравните их с оценками для
центральных разностей.
Указание: Для вывода формул используйте метод неопределенных коэффициентов, а именно, равенство
Подберите
и
так,
чтобы равенство выполнялось с точностью до
4. Вторая и третья производные функции вычисляются по приближенным формулам
и
Найдите погрешность метода
и неустранимую погрешность при вычислениях по этим формулам. Найдите
оптимальные шаги численного дифференцирования и минимально возможную ошибку.