
- •Интерполяция
- •1. Постановка задачи и основные определения
- •2. Интерполяция многочленами
- •2.1 Интерполяционная формула Лагранжа
- •2.2 Погрешность интерполяционного многочлена
- •2.3 О сходимости процесса интерполяции
- •3. Интерполяция сплайнами
- •3.1 Что такое сплайн
- •3.2 Построение кубического сплайна
- •3.3 Сплайн-квадратура
- •Приложение. Текст библиотечного модуля splinunt на языке Паскаль для интерполяции кубическими сплайнами.
3.2 Построение кубического сплайна
Будем как и раньше считать, что на отрезке [a,b] заданы узлы xi (i=0,1,...,n) и соответствующие значения интерполируемой функции f(xi)fi. Границы отрезка входят в число узлов, т. е. x0=a, xn=b. Таким образом, узлы делят весь отрезок на n частей [x0,x1], [x1,x2], ..., [xn–1,xn]. Интерполяционный кубический сплайн S(x) состоит из отдельных сегментов s0(x), s1(x), ..., sn1(x), каждый из которых определен на соответствующем отрезке, т. е. сегмент si(x) относится к отрезку [xi,xi+1]. Функции si(x) являются многочленами 3-й степени
, (10)
так что в целом сплайн-функция S(x) содержит 4n коэффициентов Ai, Bi, Ci, Di (i=0,1,..., n1). Разумеется, обычных условий (1), накладываемых на интерполяционную функцию, недостаточно для определения такого числа параметров. Однако, как говорилось выше, сплайн должен еще удовлетворять условиям непрерывности первой и второй производных, т. е. на границах отрезков (во внутренних узлах xi, i=1, 2, ..., n1) производная левого сегмента должна совпадать с производной правого сегмента. Запишем все эти условия:
, (11a)
, (11b)
, (11c)
. (11d)
Уравнения
(11a) и (11b) являются условиями
интерполяции и одновременно
задают условия непрерывности
сплайн-функции
.
Уравнения (11c) и (11d) представляют
собой, соответственно,
условия непрерывности
первой и второй производных.
Таким образом, всего имеется
4n2
уравнений (11) для нахождения
4n
коэффициентов, т. е. для
однозначного определения
сплайн-функции не хватает двух
условий. Эти недостающие
условия могут быть заданы
произвольно, и в результате
будут получаться разные
варианты интерполяционных
кубических сплайнов. В частности,
естественному
сплайну
(см. п. 3.1) соответствуют
дополнительные граничные
условия
. (12)
Следует отметить, что естественный сплайн не является наилучшим с точки зрения качества приближения произвольной функции. На практике граничные условия часто выбирают иным образом. Один из таких вариантов реализован в библиотечной процедуре SPLINE [4], которая будет рассмотрена позже.
Решение 4n уравнений (11)-(12) является довольно трудоемкой задачей. Попробуем сократить объем необходимых вычислений, записав сплайн-функцию в такой форме, чтобы автоматически учесть хотя бы часть требуемых условий (подобно тому, как это делает формула Лагранжа в случае интерполяции многочленами). В качестве первой попытки представим сегменты сплайн-функции вместо (10) в виде
. (13)
Запись (13) обладает рядом преимуществ. Во‑первых, теперь автоматически выполнены условия (11a), а количество подлежащих определению коэффициентов уменьшилось с 4n до 3n. Во‑вторых, новые коэффициенты bi, ci и di имеют более ясный смысл: они связаны со значениями трех производных сплайн-функции в узлах интерполяции. Действительно,
(14)
Оказывается однако, что количество параметров сплайна можно сократить в значительно большей степени.
Прежде всего, введем обозначения:
(15)
Вместо общей переменной x введем для каждого сегмента индивидуальную переменную ti, определяемую следующим образом:
. (16a)
Когда значение x пробегает интервал от xi до xi+1, переменная ti изменяется от 0 до 1. Ради удобства введем также дополнительную переменную, которая при аналогичном изменении x будет меняться в обратном направлении — от 1 до 0:
. (16b)
Нетрудно
заметить, что
и
совпадают с многочленами
и
,
соответственно, в формуле
Лагранжа для линейной
интерполяции по узлам xi,
xi+1
(см. уравнение (8)).
Представим теперь сегмент сплайна в виде
, (17)
где
и
– коэффициенты, которые
должны быть определены
из условий непрерывности
производных. Возможно,
выражение (17) выглядит не
вполне очевидным, поэтому
рассмотрим его более подробно.
Первые
два слагаемых в правой части
– это интерполяционный
многочлен первой степени в
форме Лагранжа, который
в крайних точках отрезка
[xi, xi+1]
принимает значения fi
и fi+1,
а при промежуточных x
осуществляет линейную
интерполяцию между
этими значениями. Тем самым
оказываются выполнены
условия (11a) и (11b). Так как
является многочленом
третьей степени, линейные
члены необходимо дополнить
кубической поправкой,
которая на концах отрезка
должна обращаться в нуль,
чтобы не были нарушены
уже достигнутые условия
интерполяции и непрерывности
сплайна. Последнее слагаемое
(заключенное в квадратные
скобки) как раз является
такой поправкой. Действительно,
выражения
и
обращаются в нуль в точках
xi
и
xi+1,
так что поправка ведет себя
нужным образом независимо
от значений параметров
.
Множитель
перед скобками добавлен
ради удобства записи
производных, поскольку
при дифференцировании
и
по x
возникают множители
.
Остальные особенности
формы кубической поправки
станут понятны из дальнейшего.
Получим теперь выражения для производных, последовательно дифференцируя (17) по x:
(18a)
(18b)
(18c)
Выражение
(18b) для второй производной
имеет знакомую форму: это
формула Лагранжа для
линейной интерполяции
между значениями
и
.
Таким образом,
,
.
Отсюда становится ясен
смысл параметров
:
с точностью до коэффициента
6 они совпадают со значениями
второй производной
сплайн-функции в узлах интерполяции.
Отсюда также следует, что
,
т. е. принятая форма кубической
поправки в (17) автоматически
обеспечивает выполнение
условий (11d) непрерывности
второй производной.
Итак, сплайн, представленный в виде (17), содержит n+1 параметров (i=0,1,...,n), причем независимо от значений этих параметров он обеспечивает интерполяцию заданных значений функции в n+1 узлах xi и обладает непрерывной второй производной. Осталось добиться непрерывности первой производной путем надлежащего выбора величин ; для этого в нашем распоряжении имеется n1 уравнений (11c) и два дополнительных краевых условия. Таким образом, для построения кубического интерполяционного сплайна достаточно решить систему не более чем n+1 линейных уравнений, а вовсе не 4n или 3n, как казалось вначале.
Подставляя выражения (18a) для первой производной с соответствующими индексами в условия (11c), получим основную систему уравнений для нахождения параметров кубического сплайна:
или, перенося все неизвестные в левую часть,
(19)
Как можно видеть, каждое уравнение содержит лишь три неизвестных с последовательно идущими индексами, т. е. матрица системы (19) является трехдиагональной. Элементы, стоящие на главной и побочных диагоналях, строго положительны, поскольку мы предполагаем, что узлы интерполяции упорядочены по возрастанию, и среди них нет совпадающих.
Систему
(19) необходимо дополнить
двумя уравнениями,
выражающими краевые
условия. Проще всего эти
условия задаются в случае
естественного сплайна,
поскольку из (12) следует, что
.
Параметр
входит лишь в первое, а
– в последнее уравнение.
Убрав эти два параметра из
(19), придем к системе n1
уравнений для определения
n1
неизвестных
(i=1,
2, ..., n1).
Заметим, что в силу
трехдиагональности
матрицы решение может
быть получено по упрощенному
алгоритму, поскольку во
время прямого хода метода
Гаусса каждое неизвестное
требуется исключить лишь из
одного уравнения, а на стадии
обратного хода каждое
уравнение треугольной
системы содержит не более
двух неизвестных. При этом
элементы, стоящие на диагонали,
больше соседних недиагональных
элементов (т. наз. матрица
с диагональным преобладанием),
что позволяет отказаться
от выбора ведущих элементов
без ущерба для устойчивости
решения.
Рассмотрим
еще один вариант граничных
условий, предложенный в
книге [Error: Reference source not found]. Он состоит
в задании величины третьей
производной для крайних
сегментов сплайн-функции. (Так
как сегменты являются
кубическими многочленами,
то третья производная в
пределах одного подынтервала
сохраняет постоянное
значение.) В качестве
граничных величин принимаются
приближенные (усредненные)
значения третьей производной,
оцениваемые, соответственно,
по четырем первым или четырем
последним узлам с помощью
разделенных разностей.
Величины
,
определяемые в соответствии
с (15), называются первыми
разделенными разностями;
их можно рассматривать как
приближенную оценку первой
производной в промежутке
между соседними узлами.
Из взятых попарно первых
разностей получают вторые
разности
,
причем величина
является оценкой второй
производной на двух смежных
подынтервалах; из вторых
разностей определяют
третьи и т. д.:
В
частности, оценка третьей
производной в промежутке
между узлами xi
и
xi+3
равна
.
С учетом выражений (18c) для третьей производной сплайн-функции, рассматриваемые граничные условия могут быть заданы уравнениями
Умножая
первое уравнение на
,
а второе — на
,
получаем:
(20)
Объединяя уравнения (19) и (20), получаем систему n+1 уравнений для нахождения всех параметров, причем матрица этой системы является симметричной, что еще более упрощает процедуру решения и позволяет сэкономить память, так как требуется хранить содержимое только главной и одной побочной диагонали.
После того, как тем или иным способом определены значения , можно вернуться к коэффициентам bi, ci, di в записи сплайна (13). Сопоставляя выражения производных (14) и (18), легко получить уравнения, связывающие два набора параметров:
(21)
Именно так поступает библиотечная процедура SPLINE. Вычислив по уравнениям (19)-(20) параметры как величины для внутреннего пользования, она выдает в качестве конечного результата коэффициенты сплайна, представленного в форме (13).