В большинстве практических приложений желательно соединить экспериментальные точки не ломаной линией, а гладкой кривой. Лучше всего для этих целей подходит интерполяция кубическими сплайнами, т. е. отрезками кубических парабол (рис. 13.4):
- s — вектор вторых производных, созданный одной из сопутствующих функций cspline, pspline или lspline;
- х — вектор действительных данных аргумента, элементы которого расположены в порядке возрастания;
- у — вектор действительных данных значений того же размера;
- t — значение аргумента, при котором вычисляется интерполирующая функция.
- х, у — векторы данных.
Смысл сплайн-интерполяции заключается в том, что в промежутках между точками осуществляется аппроксимация в виде зависимости
A(t)=at3+bt2+ ct+d. Коэффициенты
а, b, с, d рассчитываются независимо для каждого промежутка, исходя из значений
у* в соседних точках. Этот процесс скрыт от пользователя, поскольку смысл задачи интерполяции состоит в выдаче значения
A(t) в любой точке t (рис. 13.4).
Рис. 13.4. Сплайн-интерполяция (продолжение листинга 13.2)
Чтобы подчеркнуть различия, соответствующие разным вспомогательным функциям cspline,
pspline, ispline, покажем результат действия листинга 13.2 при замене функции
cspline в предпоследней строке на линейную ispline (рис. 13.5). Как видно, выбор вспомогательных функций существенно влияет на поведение
A(t) вблизи граничных точек рассматриваемого интервала (0,6) и особенно разительно меняет результат экстраполяции данных за его пределами.
В заключение остановимся на уже упоминавшейся в предыдущем разделе распространенной ошибке при построении графиков интерполирующей функции (см. рис. 13.3). Если на графике, например, являющемся продолжением листинга 13.2, задать построение функции А<Х) вместо A(t), то будет получено просто соединение исходных точек ломаной (рис. 13.6). Так происходит потому, что в промежутках между точками вычисления интерполирующей функции не производятся.
Рис. 13.5. Сплайн-интерполяция с выбором коэффициентов линейного сплайна
lspline
Рис. 13.6. Ошибочное построение графика сплайн-интерполяции (продолжение листинга 13.2)