Одномерная
табличная интерполяция
В ряде случаев
очень удобна сплайновая интерполяция и аппроксимация таблично заданных функций.
При ней промежуточные точки ищутся по отрезкам полиномов третьей степени — это
кубическая сплайновая интерполяция.
При этом обычно такие полиномы вычисляются
так, чтобы не только их значения совпадали с координатами узловых точек, но
также чтобы в узловых точках были непрерывны производные первого и второго порядков.
Такое поведение характерно для гибкой линейки, закрепленной в узловых точках,
откуда и происходит название spline (сплайн) для этого вида интерполяции (аппроксимации).
Для одномерной табличной интерполяции используется функция interpl:
-
yi = Interpl(x.Y.xi)
— возвращает вектор yi, содержащий элементы, соответствующие элементам xi
и полученные интерполяцией векторов х и Y. Вектор х определяет точки, в
которых задано значение Y. Если Y — матрица, то интерполяция выполняется
для каждого столбца Y и у1 имеет длину length (xi) - by- size (Y. 2);
-
yi = interpl
(x.Y.xi .method) — позволяет с помощью параметра method задать метод интерполяции:
-
'nearest'
— ступенчатая интерполяция;
-
'linear'
— линейная интерполяция (принята по умолчанию);
-
'spline'
— кубическая сплайн-интерполяция;
-
'cubic'
или 'pchip' — интерполяция многочленами Эрмита;
-
'v5cubic'
— кубическая интерполяция MATLAB 5.
-
yi
= interpl (x.Y.xi .method, значение величин вне пределов изменения х)
—
позволяет
отобразить особенные точки на графике;
-
yi = i
nterpl(х, Y, xi.method.' сообщение') — позволяет изменить сообщение об особенных
точках на графике.
Все методы
интерполяции требуют, чтобы значения х изменялись монотонно. Когда х — вектор
равномерно распределенных точек, для более быстрой интерполяции лучше использовать
методы '*1inear', '*cubic', '*nearest' или '*spline'. Обратите внимание, что
в данном случае наименованию метода предшествует знак звездочки.
Пример (интерполяция
функции косинуса):
»
x=0:10:y=cos(x);
»
xi=0:0.1:10;
»
yi=interpl(x,y,xi);
»
plot(x,y,'x',xi,yi,'g'),hold on
»
yi=interpl(x,y,xi.'spline'):
»
plot(x,y,'o
'
,xi,yi,'m').grid,hold off
Узловые точки
на рис. 17.17 обозначены кружками с наклонными крестиками. Одна из кривых соответствует
линейной интерполяции, другая — сплайн-интерполяции. Нетрудно заметить, что
сплайн-интерполяция в данном случае дает гораздо лучшие результаты, чем линейная
интерполяция. При последней точки просто соединяются друг с другом отрезками
прямых, так что график интерполирующей кривой при линейной интерполяции получается
негладким.
Содержание раздела