МатВектор

Command Palette

Search for a command to run...

🔢 Численные методы30 минСложность 3/5+60 XP

Численное дифференцирование: конечные разности и выбор шага

Как посчитать производную без формулы: разности вперёд, назад и центральная, порядки точности из ряда Тейлора, вторые производные и выбор шага h.

3 интерактива3 квизаУрок 4 из 11Обновлено 04.10.2026Обычный

Датчик пишет скорость насоса раз в секунду, производной в этой записи нет — есть столбик чисел. Или хуже: функция существует только в виде программы, и аналитическая формула недостижима в принципе. Производную придётся выжимать из значений. Парадокс в том, что определение через предел — — здесь не помощник, а вредитель: чем меньше шаг, тем ближе мы к машине, которая считает с конечной точностью. Найдём золотую середину.

Определение через предел и его численная ловушка#

По определению . Подставим и попробуем найти производную в точке . Истинный ответ . А машина вернёт — и это ещё не худший случай: при ответ ровно ноль.

Разбор полёта. В double числа около единицы хранятся с точностью , значит, — соседнее машинное число, синус которого неотличим от . Числитель обнуляется. При числитель не ноль, но состоит почти целиком из шума округления: два близких значения функции вычитаются, старшие цифры гасят друг друга — то самое катастрофическое сокращение из урока про источники погрешностей. Вывод: определение в лоб неприменимо, нужен компромиссный шаг.

Разности вперёд, назад и центральная#

Ряд Тейлора раскладывает всё по полочкам: . Каждый шаблон разностей — это способ так скомбинировать значения функции, чтобы лишние члены сократились. Сдвинем ряд на и вычтем его из исходного: члены с и взаимно уничтожатся, и останется производная с добавкой порядка .

разность вперёд: точность , члены и часть не сокращаются
центральная разность: чётные производные выпали из-за симметрии, точность

Разность назад симметрична вперёд и тоже даёт . Почему центральная вдвое точнее? Симметрия: сдвиги и вносят поправки с противоположными знаками, и все чётные степени шага выпадают. Первый неисправленный член — .

  1. Пишем оба разложения: и
  2. Вычитаем второе из первого: члены с и сокращаются, а нечётные степени удваиваются:
  3. Делим на : — чётные степени шага исчезли, точность
  4. Контроль на числах: для в при формула даёт против — ошибка , ровно
ШаблонФормулаПорядокГде применим
Вперёдкрая таблицы, прогноз по последней точке
Назадкрая таблицы, контроль по прошлой точке
Центральнаявнутренние точки, рабочая лошадка
Три главных шаблона: одинаковая цена вызовов, разная точность

Пять точек вместо трёх: шаблон повышенного порядка

Если функция доступна в обе стороны и на два шага, точность можно поднять до без уменьшения шага — комбинируя пять значений с весами, гасящими и , и члены:

пятиточечный шаблон; веса подобраны так, что первые два лишних члена ряда Тейлора сокращаются

Проверка на в при : пятиточечная схема даёт — ошибка против у трёхточечной на том же шаге: в пятьсот раз точнее за те же два лишних вызова функции. Но пятиточечный шаблон унаследовал и главный порок: деление на усиливает шум так же, а весов стало больше. Уменьшать шаг до бесконечности всё равно нельзя — теперь за дело берётся следующая глава.

Вторые производные: центральная схема и её цена#

Сложим ряды для и и вычтем удвоенное : первые степени сократятся, вторые — удвоятся. Деление на даёт шаблон для второй производной:

схема «вперёд-назад» для ; порядок — как у центральной первой производной

Проверим на в : истинная вторая производная . При схема даёт (ошибка ), при — (ошибка ): шаг в десять раз меньше, ошибка в сто раз меньше, порядок подтверждён. Но у этой схемы порок старшего брата: деление на усиливает шум округления вдвое быстрее, и оптимум шага сдвигается к — дальше ошибка только растёт. При ответ вместо : мусор победил.

Дилемма шага: методическая ошибка против округления#

Вот сердце всей темы. Методическая ошибка центральной разности равна и падает с уменьшением шага. Ошибка округления ведёт себя противоположно: вычитание близких чисел оставляет шум порядка , а деление на малое его раздувает — примерно . Сумма двух конкурентов имеет минимум в точке, где они сравниваются: для double.

Шаг hЦентральная: численноОшибкаКомментарий
10⁻¹0.53940229.0·10⁻⁴виновата методика
10⁻³0.5403022169.0·10⁻⁸ошибка / 100 при h / 10
10⁻⁵0.5403023058571.1·10⁻¹¹оптимум: h ≈ ∛ε
10⁻⁷0.5403023056741.9·10⁻¹⁰округление подступает
10⁻¹⁰0.5403022473875.9·10⁻⁸шум побеждает
10⁻¹³0.5401235011.8·10⁻⁴цифры гибнут массово
10⁻¹⁶0.5551115131.5·10⁻²чистый шум, производной нет
Реальный double-расчёт (f = sin x, x = 1, центральная разность; истина cos 1 = 0.540302306)

Таблица снята с настоящей арифметики double, и кривая ошибки V-образна: слева методика, справа шум, дно — у . Односторонняя разность живёт по той же схеме, но её оптимум сдвинут к , а потолок точности — порядка против у центральной. Дороже ли платить за точность? Центральной схеме нужны значения с двух сторон — на краях таблицы их просто нет, и приходится довольствоваться односторонними шаблонами.

Производная по таблице данных#

Таблица с постоянным шагом развязывает руки: шаблоны переносятся на узлы буквально. Для узла центральная разность — ; на левом крае таблицы нет , и работает разность вперёд , на правом — назад. Неравномерный шаг усложняет коэффициенты, но не меняет идею: комбинируем соседние значения так, чтобы члены Тейлора сокращались.

Числа для ощутимости. Пусть на сетке с шагом , и нужна производная в узле . Истина . Разность вперёд — ошибка . Центральная — ошибка , в шестнадцать раз лучше на тех же данных. Один и тот же столбик чисел, одна и та же цена — разная точность.

  • Внутренние точки — центральная разность: она даёт без всяких дополнительных измерений
  • Края таблицы — односторонние шаблоны, а точнее их версии второго порядка: тоже даёт
  • Шумные данные — сначала сглаживание или МНК, потом разности: дифференцирование усиливает шум как
  • Нужна вторая производная — помните про как оптимум и не верьте цифрам при
  • Проверка всегда: сравните численный ответ с аналитическим эталоном на тестовой функции, где производная известна

Отсюда производственный рецепт: если таблица зашумлена — строим по ней гладкую модель и дифференцируем модель. Кандидат на роль модели — интерполяционный сплайн по точкам или регрессия из урока про метод наименьших квадратов. Обратная операция — интегрирование — шум, наоборот, глушит; этому посвящён урок численное интегрирование. Определение производной и её геометрию напомнит урок производная: определение и касательная, из которого всё и выросло; разложения, на которых держатся выводы порядков, разобраны в формуле Тейлора, а для вторых производных высших порядков пригодится материал о производных высших порядков. Перед сдачей работы сверьте таблицу производных в шпаргалке — численный ответ обязан ложиться на аналитический эталон.

Проверь себя+10 XP

Какой порядок точности у центральной разности ?

Проверь себя+10 XP

Шаг центральной разности уменьшили с до . Что произошло с полной ошибкой для в ?

Проверь себя+10 XP

По таблице с шагом нужно , данных достаточно с обеих сторон. Какой шаблон взять?

Частые вопросы

Как выбрать шаг 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. Сначала сглаживают: скользящее среднее, кубический сплайн или регрессия по методу наименьших квадратов, затем дифференцируют гладкую модель. Альтернатива — регуляризованные схемы, которые заодно контролируют вторую производную.

Готовитесь к контрольной?

Чеклист тем по «Численные методы»: что вы уже умеете, что повторить и в каком порядке.

Открыть чеклист предмета →

Проверьте себя в бою

Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.

Начать босс-экзамен →