Сплайн-интерполяция

Часто хорошие результаты дает сплайн-аппроксимация отрезками кубических полиномов, проходящих через три смежные узловые точки. Коэффициенты полиномов рассчитываются так, чтобы непрерывными были первая и вторая производные. Линия, которую описывает сплайн-функция, напоминает по форме гибкую линейку, закрепленную в узловых точках (откуда и название аппроксимации: splaine – гибкая линейка). Для осуществления сплайн-аппроксимации система Mathcad предлагает следующие функции:

cspline (VX, VY) – возвращает вектор VS вторых производных при приближении в опорных точках отрезками кубических полиномов;

pspline (VX, VY) – возвращает вектор VS вторых производных при приближении к опорным точкам отрезками парабол;

lspline (VX, VY) - возвращает вектор VS вторых производных при приближении к опорным точкам отрезками прямой;

interp (VS, VX, VY, x) –возвращает значение функции y(x) для заданных векторов VS, VX, и значения x.

Сплайн-аппроксимация проводится в два этапа. Вначале с помощью функций cspline, pspline или lspline отыскивается вектор вторых производных функции y(x), заданной векторами VX и VY ее абсцисс и ординат. Затем для каждой точки вычисляется y(x) с помощью функции interp.

Сплайн интерполяции даже при небольшом количестве точек (5-6) дает хорошие результаты:

· график функции оказывается плавным;

· точки его перегиба незаметны.

Проведем сплайн-интерполяцию для рассмотренного выше примера.

Сплайн-интерполяция - №1 - открытая онлайн библиотека

V:= csort (V,0)

Сплайн-интерполяция - №2 - открытая онлайн библиотека Сплайн-интерполяция - №3 - открытая онлайн библиотека

Этапы записи таблицы в виде матрицы и сортировки аналогичны кусочно-линейной интерполяции.

Далее записываем:

S:=

Открываем встроенные функции f(x) и в разделе «категория функций» выбираем «интерполяция», а в разделе «имя функции» - «cspline». После щелчка по клавише «ОК» появится

S:=cspline( , )

Вводим под знак cspline аргумент Х и функцию Y.

S:=cspline(X, Y)

Далее записываем:

W(x):=

Открываем встроенные функции f(x) и в разделе «категория функций» выбираем «интерполяция», а в разделе «имя функции» - «interp». После щелчка по клавише «ОК» появляется:

W(x):= interp( , , , ),

куда последовательно под знак функции вводятся обозначения S,X,Y,x.

W(x):= interp(S, X, Y, x).

Далее по правилам построения графиков строим в декартовой системе координат график функции W(x)= f(x) (Рис. 6.38).

Сплайн-интерполяция - №4 - открытая онлайн библиотека

Рис.6.38 График функции W(x)= f(x)

Экстраполяция

В математике экстраполяцией называется предсказание поведения некоторой зависимости по имеющимся измерениям ее характеристики в определенной, иногда довольно узкой области.

В MathCAD экстраполяция основывается на анализе поведения зависимости в нескольких точках.

Функцией, реализующей алгоритм линейной экстраполяции является встроенная функция

predict (y, m, n),

где y – вектор эмпирических значений экстраполируемой характеристики по оси ординат. Особенность алгоритма, используемого функцией, заключается в том, что экстраполяцию он делает только на основании y-координат выборки при постоянном шаге по оси абсцисс;

m– количество ближайших к правой границе выборки точек, на основании которых проводится экстраполяция;

n – количество точек в просчитываемом векторе прогноза.

При помощи функции «predict» можно проводить довольно эффективную экстраполяцию непрерывных, периодических или осциллирующих функций в относительно неширокой области.

Пример:

Предсказать поведение кривой затухающих колебаний.

Для этого зададим вектор из y-координат его 101-ой точкой на промежутке от 0 до 3π. Шаг изменения переменной при определении вектора данных должен быть постоянным. Организуем вектор путем использования ранжированных переменных.

Сплайн-интерполяция - №5 - открытая онлайн библиотека

Сплайн-интерполяция - №6 - открытая онлайн библиотека

Сплайн-интерполяция - №7 - открытая онлайн библиотека Сплайн-интерполяция - №8 - открытая онлайн библиотека

Далее зададим векторы экстраполяции при помощи функции «predict».

Чтобы сравнить степень влияния количества анализируемых точек выборки на качество предсказания, определим три экстраполяционных вектора при различных значениях параметра m. Размерность этих векторов определим, например, 150.

Сплайн-интерполяция - №9 - открытая онлайн библиотека

Сплайн-интерполяция - №10 - открытая онлайн библиотека

Сплайн-интерполяция - №11 - открытая онлайн библиотека

Строим графики векторов приближений (рис. 6.39 ).

Сплайн-интерполяция - №12 - открытая онлайн библиотека

Рис. 6.39 Графики векторов приближений

При этом переменная для векторов экстраполяции может быть определена прибавлением к вектору x соответствующей координаты крайнего значения в выборке (3π).

Из анализа графиков можно сказать, что функция «predict» довольно эффективна лишь на небольшом отрезке правой крайней точки выборки, что отсутствует прямая зависимость между обрабатываемым числом точек и точностью информации о продолжаемой кривой.

Успех экстраполяции зависит от типа исследуемой зависимости. Лучше всего удается предсказание поведения парабол, экспоненциальных кривых и несложных периодических функций.

Чем сложнее зависимость, тем короче интервал экстраполяции.

Если в выборке мало точек и шаг между ними велик, то экстраполяция бессмысленна.

Вопросы для самоконтроля

1. Понятие об интерполяции и экстраполяции

2. Понятие о кусочно-линейной интерполяции

3. Способ реализации кусочно-линейной интерполяции в среде MathCAD

4. Понятие о сплайн-интерполяции

5. Способ реализации сплайн-интерполяции в среде MathCAD