А. Случай одной переменной
Обратимся для определенности к задаче интерполяции и начнем рассмотрение с обсуждения правил выбора класса кривых.
Ясно, что допустимый класс кривых должен быть таким, чтобы решение задачи было единственным (это обстоятельство сильно помогает в преодоление многих трудностей поиска). Кроме того, желательно, чтобы построенная кривая изменялась плавно.
Пусть на плоскости задан набор точек (xi, yi), i=0,1,…,m, таких, что х0<x1<...<xm-1<xm (рис. 3.48).
Рис. 3.48 Набор точек на плоскости
То обстоятельство, что точки заданного набора занумерованы в порядке возрастания их абсцисс, позволяет искать кривую в классе графиков функции. Мы сможем описать основные проблемы сглаживания этого дискретного набора, ограничившись случаем многочленов.
Как известно из курса математического анализа, существует интерполяционный многочлен Лагранжа
где
график которого проходит через все заданные точки (xi, yi), i=0,1,...,m.
Это обстоятельство и простота описания (заметим, что многочлен однозначно определяется набором своих коэффициентов; в данном случае их число совпадает с количеством точек в заданном наборе) являются несомненными достоинствами построенного интерполяционного многочлена (разумеется, есть и другие).
Однако полезно остановится и на некоторых недостатках предложенного подхода.
1. Степень многочлена Лагранжа на единицу меньше числа заданных точек. Поэтому, чем больше точек задано, тем выше степень такого многочлена. И хотя график интерполяционного члена Лагранжа всегда будет проходить через все точки массива, его уклонение (от ожидаемого) может оказаться довольно значительным.
2. Изменение одной точки (ситуация, довольно часто встречаемая на практике) требует полного пересчета коэффициентов интерполяционного многочлена и к тому же может существенно повлиять на вид задаваемой им кривой.
Приближающую кривую можно построить и совсем просто: если последовательно соединить точки заданного набора прямолинейными отрезками, то в результате получится ломаная рис 3.49.
Рис. 3.49 Приближение ломаной
При такой, кусочно-линейной, интерполяции требуется найти всего 2m чисел (каждый прямолинейный отрезок определяется ровно двумя коэффициентами), но, к сожалению, построенная таким образом аппроксимирующая кусочно-линейная функция не обладает нужной гладкостью: уже первая производная этой функции терпит разрывы в узлах интерполяции.
Рассмотрев эти две крайние ситуации, попробуем найти класс функций, которые сохранили бы перечисленные выше достоинства обоих подходов и были бы в известной степени свободны от их недостатков.
Для этого поступим так: будем использовать многочлены (как и в первом случае) и строить их последовательно, звено за звеном (как и во втором случае). В результате получится, так называемый, полиномиальный многозвенник. При подобном подходе важно правильно выбрать степени привлекаемых многочленов, а для плавного изменения результирующей кривой необходимо еще тщательно подобрать коэффициенты многочленов (из условия гладкого сопряжения соседних звеньев).
То, что получится в результате описанных условий, называют сплайн-функциями или просто сплайнами.
Для того, чтобы понять, какое отношение имеют сплайн-функции к чертежным сплайнам, возьмем гибкую стальную линейку, поставим ее на ребро и, закрепив один из концов в заданной точке, поместим ее между опорами, которые располагаются в плоскости Оху в точках (xi, yi), i=0,1,...,m, где х0<x1<...<xm-1<xm (рис 3.50).
Рис. 3.50 Приближение сплайном
Интересно отметить, что функция у=S(х), описывающая профиль линейки, обладает следующими интересными свойствами:
с довольно большой точностью часть графика этой функции, заключенную между любыми двумя соседними опорами, можно считать многочленом третей степени;
на всем промежутке [х0, хm] функция у=S(х) дважды непрерывно дифференцируемая.
Построенная функция S(х) относится к так называемым интерполяционным кубическим сплайнам. Этот класс в полной мере удовлетворяет высказанным выше требованиям и обладает еще целым рядом замечательных свойств.
Перейдем, однако, к точным формулировкам.
Интерполяционным кубическим сплайном называется функция S(х), обладающая следующими свойствами:
1) график этой функции проходит через каждую точку этого массива, S(хi)=yi, i=0,1,...,m;
2) на каждом из отрезков [хi, хi+1], i=0,1,...,m-1, функция является многочленом третей степени,
3) на всем отрезке задания [х0, хm] функция S(хi) имеет непрерывную вторую производную.
Так как на каждом из отрезков [хi, хi+1] сплайн S(х) определяется четырьмя коэффициентами, то для полного построения на всем отрезке задания необходимо найти 4m чисел.
Третье условие будет выполнено, если потребовать непрерывности сплайнов во всех внутренних узлах хi , i=0,1,...,m-1 (это дает m-1 условий на коэффициенты), а также его первой (m-1 условий) и второй (еще m-1 условий) производных в этих узлах. Вместе с первым условием получаем
m-1+m-1+m-1+m+1=4m-2
равенства. Недостающие два условия для полного определения коэффициентов можно получить, задав, например, значения первых производных на концах отрезка [х0, хm] (граничные условия):
S'(х0)=10, S'(хm)=1m.
Существуют граничные условия и других типов.