Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коссак графіка.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.68 Mб
Скачать

5.5. Зображення плоских кривих

Система Matlab може підтримувати побудову 2D кривих за допомогою інструменттарію Spline toolbox. Розглянемо лише деякі команди, та деякі прості застосування. Для ліпшого розуміння можливостей рекомендуємо користуватися допомогою меню Matlab.

5.5.1. Команда spline

Першою базовою командою є команда splinе, що повертає точки відповідного кубічного сплайну, який бажаємо апроксимувати. Ця команда дуже легка для виконання: достатньо задати потрібні точки для побудови кривої, а також інтервал між ними. Розглянемо такий приклад: нехай маємо масив з даними зростання населення в США за 10 років:

Таблиця 5.2. Зростання населення в США за 10 років

Роки

1930

1940

1950

1960

1970

1980

Населення

123,203

131,669

150,697

179,323

203,212

226,505

Приймемо x= [ 1930, 1940,1950,1960,1970,10980 ], а – кількість населення. Після написання відповідного скрипт - файла нарисуємо кубічний сплайн на підставі наведених вище даних:

x = [1930 1940 1950 1960 1970 1980];

y = [123.203 131.669 150.697 179.323 203.212 226.505];

diam = 1930:1:1980;

sp = spline(x,y,diam);

plot(diam, sp)

Результатом виконання програми є графік кривої, який інтерполює задані точки (рис. 5.26).

Рис. 5.26. Графік Рис. 5.27. Використання

інтерполяції кривої команди spline

Розглянемо ще один приклад використання команди spline. Визначимо і намалюємо кубічний сплайн, який інтерполює криву, що відображає верхню частину контуру собаки( рис. 5.27).

Оскільки в точках, де лапи доторкаються голови і голова з’єднується зі спинкою, не забезпечена неперервність похідних, то тут використовують окремі сплайни для кожної з цих ділянок. Наведені нижче результати (таб. 5ю3) відображають вибрані точки, що будуть використані під час інтерполяції. Задача має простий розв'язок, якщо ми використовуємо команду spline. Результат виконання програми зображений на рис. 5.28.

Таблиця 5.3

X1 = [1,2,5,6,7,8,10,13,17];

Y1 = [3,3.7,3.9,4.2,5.7,6.6,7.1,6.7,4.5];

X2 = [17,20,23,24,25,27,27.7];

Y2 = [4.5,7.0,6.1,5.6,5.8,5.2,4.1];

X3 = [27.7,28,29,30];

Y3 = [4.1,4.3,4.1,3.0];

XX1 = linspace(1,17,480);

XX2 = linspace(17,27.7,321);

XX3 = linspace(27.7,30,69);

YY1 = spline(X1,Y1,XX1);

YY2 = spline(X2,Y2,XX2);

YY3 = spline(X3,Y3,XX3);

plot([XX1, XX2, XX3],[YY1, YY2, YY3]);

axis equal;

5.5.2. Команда pchip

Ще одна корисна команда Matlab для зображення 2D кривих – pchip. Її запис подібний до запису команди spline. Різниця полягає у тому, що вони обчислюють відповідні інтерполяційні поліноми. Наведемо такий приклад:

x = -3:3;

y = [-1 -1 -1 0 1 1 1];

t = -3:0.1:3;

p = pchip(x,y,t);

s = spline(x,y,t);

plot(x,y,'o',t,p,'-',t,s,'-.')

Рис. 5.28. Результат виконання програми Рис. 5.29. Порівняння результатів

Суцільна крива є результатом використання команди pchip, а пунктирна – результатом використання команди spline. Вхідні дані позначають голубими кілецями.