Численное дифференцирование: конечные разности и выбор шага
Как посчитать производную без формулы: разности вперёд, назад и центральная, порядки точности из ряда Тейлора, вторые производные и выбор шага h.
Датчик пишет скорость насоса раз в секунду, производной в этой записи нет — есть столбик чисел. Или хуже: функция существует только в виде программы, и аналитическая формула недостижима в принципе. Производную придётся выжимать из значений. Парадокс в том, что определение через предел — — здесь не помощник, а вредитель: чем меньше шаг, тем ближе мы к машине, которая считает с конечной точностью. Найдём золотую середину.
Определение через предел и его численная ловушка#
По определению . Подставим и попробуем найти производную в точке . Истинный ответ . А машина вернёт — и это ещё не худший случай: при ответ ровно ноль.
Разбор полёта. В double числа около единицы хранятся с точностью , значит, — соседнее машинное число, синус которого неотличим от . Числитель обнуляется. При числитель не ноль, но состоит почти целиком из шума округления: два близких значения функции вычитаются, старшие цифры гасят друг друга — то самое катастрофическое сокращение из урока про источники погрешностей. Вывод: определение в лоб неприменимо, нужен компромиссный шаг.
Разности вперёд, назад и центральная#
Ряд Тейлора раскладывает всё по полочкам: . Каждый шаблон разностей — это способ так скомбинировать значения функции, чтобы лишние члены сократились. Сдвинем ряд на и вычтем его из исходного: члены с и взаимно уничтожатся, и останется производная с добавкой порядка .
Разность назад симметрична вперёд и тоже даёт . Почему центральная вдвое точнее? Симметрия: сдвиги и вносят поправки с противоположными знаками, и все чётные степени шага выпадают. Первый неисправленный член — .
- Пишем оба разложения: и
- Вычитаем второе из первого: члены с и сокращаются, а нечётные степени удваиваются:
- Делим на : — чётные степени шага исчезли, точность
- Контроль на числах: для в при формула даёт против — ошибка , ровно
| Шаблон | Формула | Порядок | Где применим |
|---|---|---|---|
| Вперёд | края таблицы, прогноз по последней точке | ||
| Назад | края таблицы, контроль по прошлой точке | ||
| Центральная | внутренние точки, рабочая лошадка |
Пять точек вместо трёх: шаблон повышенного порядка
Если функция доступна в обе стороны и на два шага, точность можно поднять до без уменьшения шага — комбинируя пять значений с весами, гасящими и , и члены:
Проверка на в при : пятиточечная схема даёт — ошибка против у трёхточечной на том же шаге: в пятьсот раз точнее за те же два лишних вызова функции. Но пятиточечный шаблон унаследовал и главный порок: деление на усиливает шум так же, а весов стало больше. Уменьшать шаг до бесконечности всё равно нельзя — теперь за дело берётся следующая глава.
Вторые производные: центральная схема и её цена#
Сложим ряды для и и вычтем удвоенное : первые степени сократятся, вторые — удвоятся. Деление на даёт шаблон для второй производной:
Проверим на в : истинная вторая производная . При схема даёт (ошибка ), при — (ошибка ): шаг в десять раз меньше, ошибка в сто раз меньше, порядок подтверждён. Но у этой схемы порок старшего брата: деление на усиливает шум округления вдвое быстрее, и оптимум шага сдвигается к — дальше ошибка только растёт. При ответ вместо : мусор победил.
Дилемма шага: методическая ошибка против округления#
Вот сердце всей темы. Методическая ошибка центральной разности равна и падает с уменьшением шага. Ошибка округления ведёт себя противоположно: вычитание близких чисел оставляет шум порядка , а деление на малое его раздувает — примерно . Сумма двух конкурентов имеет минимум в точке, где они сравниваются: для double.
| Шаг h | Центральная: численно | Ошибка | Комментарий |
|---|---|---|---|
| 10⁻¹ | 0.5394022 | 9.0·10⁻⁴ | виновата методика |
| 10⁻³ | 0.540302216 | 9.0·10⁻⁸ | ошибка / 100 при h / 10 |
| 10⁻⁵ | 0.540302305857 | 1.1·10⁻¹¹ | оптимум: h ≈ ∛ε |
| 10⁻⁷ | 0.540302305674 | 1.9·10⁻¹⁰ | округление подступает |
| 10⁻¹⁰ | 0.540302247387 | 5.9·10⁻⁸ | шум побеждает |
| 10⁻¹³ | 0.540123501 | 1.8·10⁻⁴ | цифры гибнут массово |
| 10⁻¹⁶ | 0.555111513 | 1.5·10⁻² | чистый шум, производной нет |
Таблица снята с настоящей арифметики double, и кривая ошибки V-образна: слева методика, справа шум, дно — у . Односторонняя разность живёт по той же схеме, но её оптимум сдвинут к , а потолок точности — порядка против у центральной. Дороже ли платить за точность? Центральной схеме нужны значения с двух сторон — на краях таблицы их просто нет, и приходится довольствоваться односторонними шаблонами.
Производная по таблице данных#
Таблица с постоянным шагом развязывает руки: шаблоны переносятся на узлы буквально. Для узла центральная разность — ; на левом крае таблицы нет , и работает разность вперёд , на правом — назад. Неравномерный шаг усложняет коэффициенты, но не меняет идею: комбинируем соседние значения так, чтобы члены Тейлора сокращались.
Числа для ощутимости. Пусть на сетке с шагом , и нужна производная в узле . Истина . Разность вперёд — ошибка . Центральная — ошибка , в шестнадцать раз лучше на тех же данных. Один и тот же столбик чисел, одна и та же цена — разная точность.
- Внутренние точки — центральная разность: она даёт без всяких дополнительных измерений
- Края таблицы — односторонние шаблоны, а точнее их версии второго порядка: тоже даёт
- Шумные данные — сначала сглаживание или МНК, потом разности: дифференцирование усиливает шум как
- Нужна вторая производная — помните про как оптимум и не верьте цифрам при
- Проверка всегда: сравните численный ответ с аналитическим эталоном на тестовой функции, где производная известна
Отсюда производственный рецепт: если таблица зашумлена — строим по ней гладкую модель и дифференцируем модель. Кандидат на роль модели — интерполяционный сплайн по точкам или регрессия из урока про метод наименьших квадратов. Обратная операция — интегрирование — шум, наоборот, глушит; этому посвящён урок численное интегрирование. Определение производной и её геометрию напомнит урок производная: определение и касательная, из которого всё и выросло; разложения, на которых держатся выводы порядков, разобраны в формуле Тейлора, а для вторых производных высших порядков пригодится материал о производных высших порядков. Перед сдачей работы сверьте таблицу производных в шпаргалке — численный ответ обязан ложиться на аналитический эталон.
Какой порядок точности у центральной разности ?
Шаг центральной разности уменьшили с до . Что произошло с полной ошибкой для в ?
По таблице с шагом нужно , данных достаточно с обеих сторон. Какой шаблон взять?
Частые вопросы
Как выбрать шаг h при численном дифференцировании?
Уравновесить два конкурента: методическую ошибку (∝ h² у центральной разности) и шум округления (∝ ε/h). Минимум полной ошибки достигается при h ≈ ∛ε, что для double даёт 10⁻⁶–10⁻⁵. Для односторонних разностей оптимум h ≈ √ε ≈ 10⁻⁸. Если же функция задана таблицей, шаг навязан сеткой — и точность ограничивает именно она.
Почему нельзя брать очень маленький шаг?
Потому что f(x+h) и f(x) становятся соседними машинными числами: их вычитание оставляет только шум округления, а деление на малое h умножает шум. Для sin в точке 1 разность при h = 10⁻¹⁶ возвращает ровно ноль. Определение требует h → 0, а машина — конечна; рабочий диапазон лежит в середине, у минимума V-образной кривой ошибок.
Чем центральная разность лучше разности вперёд?
Порядком точности: O(h²) против O(h) при тех же двух значениях функции. На сетке с шагом 0.2 для sin в точке 0.8 центральная дала ошибку 4.6·10⁻³, вперёд — 7.6·10⁻². Ограничение одно: нужны значения с обеих сторон, поэтому на краях таблицы без односторонних шаблонов не обойтись.
Как найти производную по зашумлённым измерениям?
Прямое дифференцирование таблицы усиливает шум как δ/h — ошибка данных 0.001 при шаге 0.01 даёт шум производной порядка 0.1. Сначала сглаживают: скользящее среднее, кубический сплайн или регрессия по методу наименьших квадратов, затем дифференцируют гладкую модель. Альтернатива — регуляризованные схемы, которые заодно контролируют вторую производную.
Готовитесь к контрольной?
Чеклист тем по «Численные методы»: что вы уже умеете, что повторить и в каком порядке.
Открыть чеклист предмета →
Проверьте себя в бою
Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.
Начать босс-экзамен →