MATHCAD

Кубическая сплайн-интерполяция

 

Смысл сплайн-интерполяции заключается в том, что в промежутках между точками осуществляется аппроксимация в виде зависимости A(t) = at3 + bt2 + ct + d. Коэффициенты a, b, c, d рассчитывают независимо для каждого промежутка, исходя из значений yi в соседних точках.

Функция, аппроксимирующая данные векторов х и у кубическими сплайнами в MathCAD, interp(s, x, y, t), где s вектор вторых производных, созданный одной из сопутствующих функций: cspline, pspline или lspline; х вектор действительных данных аргумента, элементы которого расположены в порядке возрастания; у вектор действительных данных значений того же размера; t значение аргумента, при котором вычисляется интерполирующая функция.

Для осуществления сплайн-интерполяции с помощью MathCAD, надо выполнить следующие действия:

В главном меню необходимо выбрать «Вид Панели инструментов Матрица», после чего в появившейся панели «Matrix» выбрать «Создать матрицу» на 1 строку и 7 столбцов и ввести координаты по оси x. Далее с помощью элемента «Транспонирование матрицы» той же панели транспонировать матрицу данных

 

х := (0 1 2 3 4 5 6)Т.

(1)

 

Аналогичную операцию проводим с координатами по оси у

 

у := (4,7 2,6 3,5 4,4 3,3 5,2 5,1)Т.

(2)

 

Сплайн-интерполяция в MathCAD реализована чуть сложнее линейной. Перед применением функции interp необходимо предварительно определить первый из её аргументов – векторную переменную s при помощи одной из трёх встроенных функций тех же аргументов (х, у):

lspline(x, y) – вектор значений коэффициентов линейного сплайна (англ. linear spline –линейный);

pspline(x, y) – вектор значений коэффициентов квадратичного сплайна (англ. parabolic spline);

cspline(x, y) – вектор значений коэффициентов кубического сплайна (англ. cubic spline).

Затем проводится интерполяция с помощью функции interp(s, x, y, t), где s – вектор вторых производных, созданный одной из сопутствующих функций cspline, pspline или lspline; х – вектор действительных данных аргумента, элементы которого расположены в порядке возрастания; у – вектор действительных данных значений того же размера; t – значение аргумента, при котором вычисляется интерполирующая функция. Далее записываем функцию сплайн-интерполяции в виде:

 

A(t) := linterp(s, x, y, t).

(3)

 

Чтобы построить график, необходимо выбрать в главном меню «Вид Панели инструментов График», затем на появившейся панели «Graph» выбрать элемент «Декартов график», после чего в рабочем окне программы MathCAD отобразится область построения графика. По оси ординат области построения графика необходимо ввести «A(t), y», а по оси абсцисс – «t, x». Далее двойным щелчком левой кнопки мыши по области построения графика необходимо вызвать панель его форматирования, на которой выбрать закладку «Трассировки», выделить мышью «trace и в поле «Символ» выбрать «dmnd». Кроме того, для удобства можно установить диапазон значений по оси абсцисс путём ввода соответствующих значений в области на оси x графика. Поскольку значения по оси х изменяются от 0 до 6, их и введём.

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

Рис. 1. Сплайн-интерполяция

 

Встроенная функция interp позволяет вычислить значения в требуемых точках, например для точки с аргументом x = 1,5 расчёт значения функции интерполяции A(t) будет выглядеть следующим образом: interp(s, x, y, 1,5) = 2,837.

Ниже приведена программа кубической сплайн интерполяции

 

 х := (0 1 2 3 4 5 6)Т

 у := (4,7 2,6 3,5 4,4 3,3 5,2 5,1)Т

 s := cspline(x, y)

 A(t) := interp(x, y).

(4)