Основные операции > Дифференцирование > Некорректность   

Некорректность численного дифференцирования

Рассмотрим одну из формул разностной двухточечной аппроксимации ("назад"):

.
Мы исследовали погрешности численного дифференцирования при изменении параметра шага, причем делали это для не слишком малых D. Посмотрим, как станет вести себя погрешность вычисления разностной производной при существенном уменьшении D.

Типичный график такой зависимости, включающий как неразумно большие, так и неразумно малые значения шага (порядка 10-20), показан на рис. сверзху для той же функции f(x)=sin(x). На нем начения D по оси абсцисс отложены в логарифмическом масштабе. График той же самой зависимости, когда в логарифмическом масштабе представлена и ось ординат, приведен на рис. снизу:

Если увеличение ошибки на правом конце графика нами было уже рассмотрено (см. предыдущий разд., то рост ошибки при очень малых D (на левом конце, при D~0) может на первый взгляд показаться неожиданным. В частности, такой рост не укладывается в выведенные нами формулы для погрешности разностных аппроксимаций производной. Однако, все дело в том, что, применяя их, мы неявно полагали, что умеем точно вычислять значения функции f(x) в любой точке. Между тем, любые компьютерные вычисления сопряжены с неустранимыми погрешностями, в частности, обусловленными дискретным представлением чисел. Поэтому в реальности мы можем вычислить значение f(x) лишь с некоторой погрешностью d, обусловленной (по крайней мере) заведомым округлением чисел при расчетах на компьютере.
В результате при очень малом шаге разностные формулы означают вычитание друг из друга близких чисел. В этом случае ошибки вычисления функции f(x) становятся доминирующими, и приводят к существенному росту ошибки вычисления разностной производной. Отсюда следует вывод: значение шага следует выбирать "не очень малым", иначе ошибки вычисления f(x) сделают результат дифференцирования неправильным!
О специальном методе решения некорректной задачи дифференцирования рассказывается на следующей странице Регуляризация дифференцирования.

Просмотреть пример MathCAD-программы  

Просмотреть Java-пример из Практикума