Работа со сплайнами в Spline Toolbox. Сплайны и формы их представления. Интерполяционные сплайны. Построение кубического сплайна. Стандартные краевые условия. Операции над сплайнами

Страницы работы

Фрагмент текста работы

построим график сплайна и исходной функции на одних осях, а на других — график погрешности:

>> subplot(2, 1, 1)

>> х = -1:0.05:1;

>> у = fun(x);

>> plot( х, у,‘гр’)

>> hold on

>> fnplt(s)

>> title('Графики функции и сплайна')

>> legend('функция', 'сплайн',0)

>> хе = -1:0.01:1;

>> ye = abs(fnval(s, хе)  - fun(xe));

>> subplot (2, 1, 2)

>> plot(xe, ye)

>> title('График ошибки')

Получающийся результат приведен на рис. 18.1.

Рис. 18.1 Представление кубического сплайна и погрешность интерполяции для функции у(х)=

Интерфейс функции csapi позволяет вместо конструирования сплайна в виде структуры вычислить его значения в заданных точках. Создадим вектор с абсциссами точек

» xl = -0.9:0.2:0.9;

и укажем его при обращении к csapi в качестве третьего входного аргумента:

>> value = csapi(x,  у,  xl);

В вектор value занесены значения кубического сплайна в заданных точках. Обращение csapi(х, у, xl) дает тот же результат, что и fnval(csapi(х, у), xl).

Построение сплайна для вектор - функции

Spline Toolbox позволяет конструировать сплайны для вектор - функций. Для построения, например, кубического сплайна используется рассмотренная выше функция csapi. В случае вектор - функций она вызывается от второго входного аргумента — матрицы, строки которой содержат значения функции в узлах.

Продемонстрируем приближение табличных одномерных данных, каждому значению аргумента которых соответствует два значения функции. Эти значения являются координатами точек, лежащих на кривой, которая называется "улиткой Паскаля" и задается параметрическими зависимостями:

х = a* cos2 t + b* cos t,   y = a- cos t * sin t + b* sin t,

где 0 < t < 2π , a > 0,  b > 0.

Листинг 18.1 содержит текст файл - функции uiitka2, которая строит улитку Паскаля при помощи кубических сплайнов.

Листинг 18.1. Файл-функция для построения улитки Паскаля

function ulitka2(a, b)

% Построение улитки Паскаля кубическими сплайнами

% Задание шага изменения параметра

h = pi/20;

% Задание значений параметра

t = 0:h:2*pi;

% Вычисление таблицы значений х = a*cos(t).*cos(t) + b*cos(t); у = a*cos(t).*sin(t) + b*sin(t)

% Формирование матрицы со значениями табличной функции

R = [х ; у] ;

% Создание сплайна рр = csapi(t ,R);

о Вывод графика сплайна на оси с одинаковым масштабом

figure

fnplt(pp)

axis equal

Вызов файл-функции

>> ulitka2(2, 1)

приводит к появлению улитки Паскаля (рис. 18.2).

Входными аргументами файл - функции uiitka2 являются геометрические параметры улитки Паскаля а и b. Меняя эти величины, можно получит различные формы улитки. Исходными данными для построения сплайна являются равноотстоящие точки с шагом h, помещенные в t, и соответствующие им координаты х, у   точек на кривой —  координаты радиус вектора улитки r . Функция csapi строит кусочно-полиномиальную форму кубического сплайна, который затем отображается графически при помощи fnplt.


Рис. 18.2. Улитка Паскаля, построенная с помощью применения кубического сплайна, при значениях параметров a = 2, b = 1

Примечание

Для некоторых функций, в том числе и для рассмотренной csapi происходит усреднение значения функции, если приближаемая функция много-; значна, т. е. таблица содержит несколько одинаковых значений аргумента

Произвольные краевые условия

Как уже отмечалось выше, функция csapi строит сплайн с условиями "отсутствия узла". Эти условия дают наиболее точное представление интерполируемой функции, если нет информации об ее производных на границах рассматриваемого отрезка. При наличии каких-либо дополнительных данных о приближаемой функции, зачастую, целесообразно поставить другие краевые условия. Для этого применяется функция csape. Она допускает различные варианты обращения. Первый способ

s = csape(х,   у)

приводит к построению кусочно-полиномиальной формы интерполяционного кубического сплайна с краевыми условиями, заданными по умолчанию (ниже мы скажем, что это за условия). Вызов csape с третьим входным гументом

s = csape(х,  у,   conds)

позволяет выбрать краевые условия из довольно обширного списка, представленного в табл. 18.1. При этом может потребоваться расширение массива у для указания значений производной сплайна на границах отрезка. Возможно также задание собственных граничных условий, но тогда параметр conds должен быть не текстовой строкой, а вектор-строкой из двух элементов. При таком способе можно определить различные краевые условия. При этом значение первого элемента соответствует левой границе отрезка, а второго — правой. В массив у при этом добавляются дополнительные значения в начало и конец массива. Приняты следующие правила: если значение элемента вектора строки conds равно 1, то дополнительный элемент в у задает значение первой производной, если в conds элемент равен 2, то дополнительный элемент в у задает значение второй производной. В случае периодических условий conds задается массивом [0 0] и обращения si = csape

Похожие материалы

Информация о работе