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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

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

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

>> 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

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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.