Численное дифференцирование
Численное дифференцирование — это раздел вычислительной математики, посвящённый методам приближённого вычисления производных функций, заданных таблично, аналитически (но сложно для дифференцирования) или в виде «чёрного ящика». В отличие от аналитического дифференцирования, численное дифференцирование позволяет найти значение производной в точке, не зная явного вида функции, а лишь имея набор её значений в дискретных точках. Основная идея методов заключается в замене производной разностным аналогом, основанным на разложении функции в ряд Тейлора.
Основные понятия и постановка задачи
Пусть функция \( f(x) \) определена на отрезке \([a, b]\) и известны её значения в узлах равномерной сетки \( x_i = x_0 + i h \), где \( h > 0 \) — шаг сетки, \( i = 0, 1, \dots, n \). Задача численного дифференцирования состоит в приближённом вычислении производной \( f'(x) \) в некоторой точке \( x \in [a, b] \) (обычно в узлах сетки) с использованием значений функции \( f(x_i) \).
Все методы численного дифференцирования основаны на аппроксимации производной конечными разностями. Погрешность метода зависит от шага \( h \): при уменьшении \( h \) ошибка аппроксимации (теоретическая) уменьшается, но одновременно возрастает влияние ошибок округления и погрешностей исходных данных (так называемая вычислительная неустойчивость). Поэтому выбор оптимального шага — ключевая практическая задача.
Методы численного дифференцирования
Разностные схемы первого порядка точности
Простейшие формулы получаются из определения производной как предела разностного отношения.
- Правая разностная производная (первая разность вперёд):
\[ f'(x_i) \approx \frac{f(x_{i+1}) - f(x_i)}{h} \] Погрешность аппроксимации: \( O(h) \).
- Левая разностная производная (первая разность назад):
\[ f'(x_i) \approx \frac{f(x_i) - f(x_{i-1})}{h} \] Погрешность аппроксимации: \( O(h) \).
Эти схемы просты в реализации, но имеют низкую точность. Они используются, когда требуется только качественная оценка производной или когда шаг сетки достаточно мал.
Разностные схемы второго порядка точности
Для повышения точности используют симметричные (центральные) разности.
- Центральная разностная производная:
\[ f'(x_i) \approx \frac{f(x_{i+1}) - f(x_{i-1})}{2h} \] Погрешность аппроксимации: \( O(h^2) \). Это наиболее распространённая формула для внутренних точек сетки.
- Формула для второй производной:
\[ f''(x_i) \approx \frac{f(x_{i+1}) - 2f(x_i) + f(x_{i-1})}{h^2} \] Погрешность аппроксимации: \( O(h^2) \).
Схемы более высоких порядков точности
Для получения формул с погрешностью \( O(h^4) \) и выше используются разложения в ряд Тейлора до большего числа членов. Например, пятиточечная формула для первой производной: \[ f'(x_i) \approx \frac{-f(x_{i+2}) + 8f(x_{i+1}) - 8f(x_{i-1}) + f(x_{i-2})}{12h} \] Погрешность: \( O(h^4) \). Аналогичные формулы существуют для второй, третьей и более высоких производных.
Метод неопределённых коэффициентов
Общий подход к построению разностных схем заключается в представлении производной как линейной комбинации значений функции в нескольких точках: \[ f^{(k)}(x_i) \approx \sum_{j=-m}^{m} c_j f(x_{i+j}) \] Коэффициенты \( c_j \) находятся из условия, чтобы разложение в ряд Тейлора правой части совпадало с левой частью с максимально возможным порядком точности. Это приводит к системе линейных алгебраических уравнений.
Проблема выбора шага и устойчивость
Ключевая особенность численного дифференцирования — его неустойчивость по отношению к погрешностям входных данных. Пусть значения функции \( f(x_i) \) известны с некоторой ошибкой \( \varepsilon \) (например, из-за погрешностей измерений или округления). Тогда ошибка в вычислении производной по центральной разности оценивается как: \[ \Delta f' \approx \frac{2\varepsilon}{h} \] При уменьшении \( h \) эта ошибка растёт как \( 1/h \). Одновременно погрешность аппроксимации (теоретическая) уменьшается как \( O(h^2) \). Суммарная погрешность имеет минимум при некотором оптимальном шаге \( h_{opt} \). Для центральной разности: \[ h_{opt} \approx \sqrt[3]{\frac{3\varepsilon}{M_3}} \] где \( M_3 \) — оценка третьей производной функции. На практике оптимальный шаг часто подбирают эмпирически или используют методы автоматического выбора шага, например, алгоритм Рунге — Ромберга — Ричардсона.
Метод Рунге — Ромберга — Ричардсона
Этот метод позволяет повысить точность численного дифференцирования без построения сложных формул. Идея заключается в том, чтобы вычислить производную на двух сетках с шагами \( h \) и \( h/2 \), а затем скомбинировать результаты для исключения главного члена погрешности. Для центральной разности: \[ f'(x) \approx \frac{4D_{h/2} - D_h}{3} \] где \( D_h \) — значение производной, вычисленное с шагом \( h \). Погрешность результата становится \( O(h^4) \). Метод легко обобщается на случай нескольких итераций (экстраполяция Ричардсона).
Применение
Численное дифференцирование широко используется в следующих областях:
- Решение дифференциальных уравнений: в методах конечных разностей (МКР) для аппроксимации производных в уравнениях математической физики.
- Обработка сигналов: вычисление скорости и ускорения по дискретным данным (например, по показаниям датчиков, трекам движения).
- Численная оптимизация: в градиентных методах (например, метод сопряжённых градиентов, метод Ньютона) для вычисления градиента целевой функции, когда аналитическая производная недоступна.
- Статистика и анализ данных: нахождение точек перегиба, максимумов и минимумов эмпирических кривых.
- Финансовая математика: вычисление «греков» (чувствительностей) опционов, например, дельты и гаммы, когда модель ценообразования задана численно.
Критика и ограничения
Основные недостатки численного дифференцирования:
- Неустойчивость: как показано выше, уменьшение шага \( h \) ниже некоторого порога приводит к росту ошибки из-за погрешностей исходных данных.
- Зависимость от гладкости функции: методы работают хорошо только для достаточно гладких функций (с ограниченными производными). Для разрывных или быстро осциллирующих функций точность резко падает.
- Выбор шага: оптимальный шаг априори неизвестен и зависит как от свойств функции, так и от уровня шума в данных.
- Ограниченная точность: даже при оптимальном шаге точность численного дифференцирования обычно существенно ниже, чем точность численного интегрирования. Для достижения высокой точности требуются схемы высоких порядков и малый шаг, что увеличивает вычислительные затраты.
В ситуациях, где требуется высокая точность и функция задана аналитически, предпочтительнее использовать символьное дифференцирование (например, с помощью систем компьютерной алгебры) или автоматическое дифференцирование, которое лишено проблемы выбора шага.
Интересные факты
- В 1950-х годах советский математик А. Н. Тихонов разработал теорию регуляризации, которая позволяет устойчиво решать некорректные задачи, в том числе численное дифференцирование с сильно зашумлёнными данными.
- В современных библиотеках машинного обучения (TensorFlow, PyTorch) численное дифференцирование не используется для обучения нейронных сетей из-за его низкой эффективности и неустойчивости; вместо него применяется автоматическое дифференцирование (backpropagation).
- Классический пример неустойчивости: при вычислении производной функции \( \sin(x) \) в точке \( x=0 \) с использованием правой разности и шагом \( h=10^{-8} \) ошибка округления (из-за конечной точности чисел с плавающей запятой) может превысить истинное значение производной.
Источники
- Самарский А. А., Гулин А. В. «Численные методы». — М.: Наука, 1989.
- Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. «Численные методы». — М.: Бином. Лаборатория знаний, 2008.
- Форсайт Дж., Малькольм М., Моулер К. «Машинные методы математических вычислений». — М.: Мир, 1980.
- Тихонов А. Н., Арсенин В. Я. «Методы решения некорректных задач». — М.: Наука, 1979.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →