Интерполяция кубическим сплайном
Сплайн-интерполяция используется для представления данных отрезками полиномов невысокой степени — чаще всего третьей. При этом кубическая интерполяция обеспечивает непрерывность первой и второй производных результата интерполяции в узловых точках. Из этого вытекают следующие свойства кубической сплайн-интерполяции:
график кусочно-полиномиальной аппроксимирующей функции проходит точно через узловые точки;
в узловых точках нет разрывов и резких перегибов функции;
благодаря низкой степени полиномов погрешность между узловыми точками обычно достаточно мала;
связь между числом узловых точек и степенью полинома отсутствует;
поскольку используется множество полиномов, появляется возможность аппроксимации функций с множеством пиков и впадин.
Как отмечалось, в переводе spline означает «гибкая линейка». График интерполирующей функции при этом виде интерполяции можно уподобить кривой, по которой изгибается гибкая линейка, закрепленная в узловых точках. Реализуется сплайн-интерполяция следующей функцией:
yi = spline(x,y,xi) — использует векторы х и у, содержащие аргументы функции и ее значения, и вектор xi, задающий новые точки; для нахождения элементов вектора yi используется кубическая сплайн-интерполяция;
рр = spline(x.y) — возвращает рр-форму сплайна, используемую в функции ppval и других сплайн-функциях.
Пример:
» х=0:10; y=3*cos(x);
» x1=0:0.1:11;
» y1=spline(x,y.x1);
» plot(x,y,'о',x1,y1,'--')
Сплайн-интерполяция дает неплохие результаты для функций, не имеющих разрывов и резких перегибов. Особенно хорошие результаты получаются для монотонных функций.
Результат интерполяции показан на рис. 17.14.
Рис. 17.14. Пример применения функции spline
Ввиду важности сплайн-интерполяции и аппроксимации в обработке и представлении сложных данных в состав системы MATLAB входит пакет расширения Spline Toolbox, содержащий около 70 дополнительных функций, относящихся к реализации сплайн-интерполяции и аппроксимации, а также графического представления сплайнами их результатов. Для вызова данных об этом пакете (если он установлен) используйте команду help splines.