Математика / Интерполяция
Кубический сплайн с заданными наклонами на концах
Две краевые строки системы кубического сплайна позволяют задать наклон в начале и в конце таблицы. Внутренние вторые производные при этом находят вместе с краевыми.
Формула
В узлах отмечены положения 0, 1 и 8 м. Секущая на втором интервале имеет наклон 7 м/с, а касательная в конечной точке — 12 м/с.
Обозначения
- $hᵢ$
- шаг между соседними абсциссами, ед. x
- $δᵢ$
- секущий наклон (yᵢ₊₁ − yᵢ)/hᵢ, ед. y / ед. x
- $Mᵢ$
- вторая производная сплайна в узле i, ед. y / ед. x²
- mL, mR
- заданные первая производная на левом и правом конце, ед. y / ед. x
- $n$
- число промежутков, —
Условия применения
Узлы строго упорядочены, оба концевых наклона заданы по одной и той же шкале x. На каждом промежутке берут кубический полином. Внутри области его значение и первые две производные согласованы в соседних кусках.
Ограничения
Если наклоны неизвестны, подстановка нулей навяжет остановку на границах. При неточных скоростях погрешность особенно заметна у концов. Гладкость второй производной сама по себе не сохраняет монотонность и не оправдывает экстраполяцию.
Подробное объяснение
Обычная таблица фиксирует только значения в узлах. Две краевые скорости дают дополнительную информацию о форме в начале и в конце. Например, для координаты по времени нулевой начальный наклон означает покой, но начальное ускорение при этом может быть ненулевым.
Вторая производная на первом промежутке меняется линейно от M₀ до M₁. После интегрирования секущий наклон равен mL + h₀(2M₀ + M₁)/6. Справа удобнее выразить правый наклон через секущий: mR = δₙ₋₁ + hₙ₋₁(Mₙ₋₁ + 2Mₙ)/6. Отсюда получаются две строки с разным порядком вычитания.
Во внутренних узлах производную считают с двух соседних промежутков и приравнивают. Для узла i получается hᵢ₋₁Mᵢ₋₁ + 2(hᵢ₋₁+hᵢ)Mᵢ + hᵢMᵢ₊₁ = 6(δᵢ−δᵢ₋₁). У каждой строки участвуют только ближайшие узлы, поэтому систему удобно решать прогонкой.
После решения используют Mᵢ для восстановления кубиков. На левом краю сравнивают производную первого кубика с mL, на правом краю производную последнего кубика сравнивают с mR. Натуральный сплайн использует ту же внутреннюю систему, но заменяет краевые строки условиями M₀ = Mₙ = 0.
Как пользоваться формулой
- Упорядочьте абсциссы и вычислите каждый шаг, включая первый и последний промежутки.
- Рассчитайте секущие наклоны по разностям ординат и согласуйте единицы с заданными скоростями.
- Запишите две краевые строки и добавьте уравнение непрерывности наклона для каждого внутреннего узла.
- Решите трёхдиагональную систему, восстановите кубики и продифференцируйте крайние куски для контроля.
Историческая справка
Численные методы построения кубических сплайнов стали отдельным предметом литературы о приближении во второй половине XX века. В указателе NIST DLMF к разделу интерполяции среди руководств, рассматривающих сплайны, указана книга Булирша и Рутишаузера 1968 года. Предписанный наклон относится к постановке краевых условий в этой области численного анализа.
Современная документация SciPy различает несколько способов замыкания задачи для одних и тех же узловых данных. При передаче двух пар, где первый элемент пары равен единице, можно задать произвольные наклоны на обоих концах. Короткое имя clamped в этом интерфейсе обозначает частный случай с двумя нулевыми наклонами. Явная запись двух краевых строк раскрывает тот же выбор через узловые вторые производные.
Историческая линия формулы
Условия с заданным наклоном принадлежат практике кубической сплайн-интерполяции. Они получаются из интегрирования линейной второй производной и не требуют атрибуции отдельной эмпирической формуле. В SciPy произвольные наклоны задаются явно через порядок производной и её значение.
Пример
Положение задано в моменты 0, 1 и 2 с, его значения 0, 1 и 8 м. По условиям движения скорости на краях равны 0 и 12 м/с. Шаги по 1 с, секущие наклоны 1 и 7 м/с. Получаем 2M₀+M₁=6, M₀+4M₁+M₂=36 и M₁+2M₂=30. Первая и последняя строки дают M₀=(6−M₁)/2, M₂=(30−M₁)/2, после подстановки 3M₁=18. В узлах получаем 0, 6 и 12 м/с². При x в секундах это вторые производные полинома x³, который проходит через все три положения. Контроль по первой производной 3x² даёт 0 и 12 м/с, как и требовалось. На отметке 1 с производная равна 3 м/с.
Частая ошибка
Первую строку иногда записывают с разностью mL − δ₀. Проверка на траектории x² обнаруживает ошибку знака. Подмена краевых скоростей нулевыми вторыми производными меняет смысл задачи. Ещё одна ошибка возникает при переводе времени из минут в секунды без пересчёта скоростей.
Практика
Задачи с решением
Постоянное ускорение
Условие. x = 0, 1, 3 с, y = 0, 1, 9 м. Наклоны 0 и 6 м/с. Найдите вторые производные.
Решение. Шаги равны 1 и 2, секущие равны 1 и 4. Строки: 2M₀+M₁=6, M₀+6M₁+2M₂=18, 2M₁+4M₂=12. Вектор (2, 2, 2) удовлетворяет всем трём строкам; система строго диагонально преобладает.
Ответ. Во всех узлах 2 м/с².
Один отрезок с остановками
Условие. За 2 с объект сместился на 4 м, на обоих концах скорость нулевая. Чему равны краевые ускорения?
Решение. h=2, δ=2. Строки 4M₀+2M₁=12 и 2M₀+4M₁=−12. Сложение даёт M₁=−M₀; первая строка даёт M₀=6.
Ответ. 6 м/с² в начале и −6 м/с² в конце.
Дополнительные источники
- https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.CubicSpline.html
- https://dlmf.nist.gov/3.3
Связанные формулы
Математика
Натуральный кубический сплайн: уравнения для вторых производных
Натуральный кубический сплайн: уравнения для вторых производных даёт не только вычислительную запись, но и правило, какие данные определяют результат и как проверить его численно. Формула применяется к строго указанной модели; ниже разобраны предпосылки, два решённых задания и границы корректной интерпретации.
Математика
Кубическая интерполяция Эрмита по значениям и наклонам
Кубический полином Эрмита согласует значения и первые производные на двух концах интервала. Четыре заданных условия определяют единственную кубическую или более простую кривую между узлами.
Математика
Линейная интерполяция: значение между двумя узлами
Линейная интерполяция оценивает значение между двумя заданными точками по соединяющей их прямой. Доля положения внутри интервала задаёт веса концов; оценка учитывает наклон, но не кривизну исходного графика.