Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПР_КТіООР.doc
Скачиваний:
38
Добавлен:
11.05.2015
Размер:
9.89 Mб
Скачать

Практична робота №7 Побудова графіків функцій

Мета: Ознайомлення з методикою побудови графіків.

Теоретичні питання

Графічні можливості системи MATLAB є могутніми і різноманітними. Вивчимо найбільш прості у використовуванні можливості.

Двохвимірна графіка. Сформуйте два вектори х і у: » x=0:0.01:2; y=sin(x); Викличте функцію:

» plot(x,y

і ви тримаєте на екрані графік функції (рис. 7.1).

Рисунок 7.1 – Графік функції y=sin(x)

MATLAB показує графічні об'єкти в спеціальних графічних вікнах, що мають в заголовку слово Figure.

Не прибираючи з екрану дисплея перше графічне вікно, введіть з клавіатури виразу

» z=cos(x);

» plot(x,z)

і отримаєте новий графік функції в тому ж самому графічному вікні (при цьому старі осі координат і графік пропадають – цього також можна добитися командою clf, командою cla видаляють тільки графік з приведенням осей координат до їх стандартних діапазонів від 0 до 1).

Якщо потрібно другий графік провести «поверх першого графіка», то перед вторинним викликом графічної функції plot потрібно виконати команду hold on, яка призначена для утримання поточного графічного вікна:

» x=0:0.01:2; y=sin(x);

» plot(x,y)

» z=cos(x);

» hold on

» plot(x,z)

Практично теж саме вийде (рис. 7.2), якщо набрати:

» x=0:0.01:2; y=sin(x); z=cos(x);

» plot(x,y,x,z)

Рисунок 7.2 – Графіки функцій y=sin(x), z=cos(x) (в одному графічному вікні)

Якщо потрібно одночасно візуалізувати декілька графіків так, щоб вони не заважали один одному, то це можна зробити двома способами. Першим рішенням є побудова їх в різних графічних вікнах. Для цього перед вторинним викликом функції plot слід набрати команду figure, яка створює нове графічне вікно і примушує всі подальші за нею функції побудови графіків виводити їх туди.

Другим рішенням показу декількох графіків без конфлікту діапазонів осей координат є використовування функції subplot. Ця функція дозволяє розбити область виводу графічної інформації на декілька підобластей, в кожну з яких можна вивести графіки різних функцій.

Наприклад, для раніше виконаних обчислень з функціями sin і cos побудуйте графіки цих двох функцій в першій підобласті, а графік функції exp(х) – в другій підобласті одного і того ж графічного вікна (рис. 7.3):

» w=exp(x);

» subplot(1,2,1); plot(x,y,x,z)

» subplot(1,2,2); plot(x,w)

Рисунок 7.3 – Графіки функцій y=sin(x), z=cos(x) і w=exp(x)

Діапазони змінних на осях координат цих підобластей незалежні один від одного. Функція subplot приймає три числові аргументи, перший з яких рівний числу рядів підобластей, другий рівний числу колонок підобластей, а третій аргумент – номеру підобласті (номер відраховується уздовж рядів з переходом на новий ряд). Зняти дію функції subplot можна командою: » subplot(1,1,1).

Якщо для одиночного графіка діапазони зміни змінних уздовж однієї або обох осей координат дуже великі, то можна скористатися функціями побудови графіків в логарифмічних масштабах. Для цього призначені функції semilogx, semilogy і loglog.

Побудувати графік функції в полярних координатах (рис. 7.4) можна за допомогою графічної функції роlar.

» phi=0:0.01:2*pi; r=sin(3*phi);

» роlar(phi,r)

Рисунок 7.4 – Графік функції r=sin(3*phi) в полярних координатах

Розглянемо додаткові можливості, пов'язані з управлінням зовнішнім виглядом графіків – завдання кольору і стилю ліній, а також розміщення різних написів в межах графічного вікна. Наприклад, команди

» x=0:0.1:3; y=sin(x);

» plot(x,y,'r-',x,y,'ko')

дозволяють додати графіку вигляд червоної суцільної лінії (рис. 7.5), на якій в дискретних обчислюваних крапках проставляють чорні кола. Тут функція plot двічі будує графік однієї і тієї ж функції, але в двох різних стилях. Перший з цих стилів відзначений як 'r-', що означає проведення лінії червоним кольором (буква r), а штрих означає проведення суцільної лінії. Другий стиль, помічений як 'ko', означає проведення чорним кольором (буква к) кіл (буква о) на місці обчислюваних крапок.

Рисунок 7.5 – Побудова графіка функції y=sin(x) в двох різних стилях

В загальному випадку функція plot (x1, y1, s1, x2, y2, s2) дозволяє об'єднати в одному графічному вікні декілька графіків функцій y1(x1), y2(x2) . провівши їх із стилями s1, s2 . і т.д.

Стилі s1, s2 задаються у вигляді набору трьох символьних маркерів, укладених в одиночні лапки (апострофи). Один з цих маркерів задає тип лінії (таблиця 7.1). Інший маркер задає колір (таблиця 7.2). Останній маркер задає тип «крапок», що проставляються (таблиця 7.3). Можна вказувати не всі три маркери. Тоді використовуються маркери, встановлені за умовчанням. Порядок в якому вказують маркери, не є істотним, тобто 'r+-' і '-+r' приводить до однакового результату.

Таблиця 7.1 – Маркери, які задають тип лінії.

Маркер

-

--

:

-.

Тип лінії

Неперервна

Штрихова

Пунктирна

Штрихпунктирна

Таблиця 7.2 – Маркери, які задають колір лінії

Маркер

Колір лінії

Маркер

Колір лінії

с

Голубий

g

Зелений

m

Фіолетовий

b

Синій

у

Жовтий

w

Білий

r

Червоний

к

Чорний

Таблиця 7.3 – Маркери, які задають тип крапки

Маркер

.

+

*

о

х

Тип крапки

Крапка

Плюс

Зірочка

Кружок

Хрестик

Якщо в рядку стилю поставити маркер на тип крапки, але не проставити маркер на тип лінії, то тоді відображаються тільки обчислювані крапки, а безперервною лінією вони не з'єднуються.

Тепер перейдемо до оформлення осей координат, до написів на осях. Система MATLAB встановлює межі на горизонтальній осі рівними тим значенням, що вказані користувачем для незалежної змінної. Для залежної змінної по вертикальній осі MATLAB самостійно обчислює діапазон зміни значень функції. Якщо ми хочемо відмовитися від цієї особливості масштабування при побудові графіків в системі MATLAB, то ми повинні явним чином вказати свої межі змінних по осях координат. Це робиться за допомогою функції ахis( [ xmin, xmax, ymin, ymax ] ).

Для проставляння різних написів на отриманому малюнку застосовують функції xlabеl, ylabеl, title і text. Функція xlabеl створює підпис на горизонтальнії осі, функція ylabеl –для вертикальної осі (причому ці написи орієнтовані уздовж осей координат). Якщо вимагається розмістити напис в довільному місці малюнка, застосовуємо функцію text. Загальний заголовок для графіка створюється функцією title. Крім того, використовуючи команду grid on, можна нанести вимірювальну сітку на всю область побудови графіка. Наприклад (рис. 7.6):

Рисунок 7.6 – Графік функції y=sin(x), побудований в двох стилях, з написами на координатних осях і на малюнку

» x=0:0.1:3; y=sin(x);

» plot(x,y,'r-',x,y,'ko')

» title('Function sin(x) graph');

» xlabel('xcoordinate'); ylabel('sin(x)');

» text(2.1, 0.9, '\leftarrowsin(x)'); grid on

Напис функцією text розміщюється починаючи від крапки з координатами, вказаними першими двома аргументами. За умовчанням координати задаються в тих же одиницях вимірювання, що і координати, вказані на горизонтальній і вертикальних осях. Спеціальні управляючі символи вводяться усередині тексту після символу \ (зворотна коса межа).

Тривимірна графіка. Можливості відображення тривимірних графічних об'єктів в системі MATLAB досить потужні. Зосередимося на зображенні просторових ліній і на побудові графіків функцій двох дійсних змінних, які представляють поверхні в просторі.

Кожна крапка в просторі характеризується трьома координатами. Набір крапок, що належать деякій лінії в просторі, потрібно задати у вигляді трьох векторів, перший з яких містить перші координати цих крапок, другий вектор – другі їх координати, ну а третій вектор - треті координати. Після чого ці три вектори можна подати на вхід функції plot3, яка і здійснить проектування відповідної тривимірної лінії на площину і побудує результуюче зображення (рис. 7.7). Введіть з клавіатури:

» t=0:pi/50:10*pi;

» x=sin(t);

» y=cos(t); plot3(x,y,t); grid on

Переконайтеся, що вийшла гвинтова лінія.

Рисунок 7.7 – Графік гвинтової лінії, побудований за допомогою функції plot3

Цю ж функцію plot3 можна застосувати і для зображення поверхонь в просторі, якщо, звичайно, провести не одну лінію, а багато. Наберіть з клавіатури:

» u=-2:0.1:2; v=-1:0.1:1; [X,Y]=meshgrid(u,v); z=exp(-X .^2-Y.^2); plot3(X,Y,z)

Отримаєте тривимірне зображення графіка функції (рис. 7.8).

Рисунок 7.8 – Графік поверхні в просторі, побудований за допомогою функції plot3

Функція plot3 будує графік у вигляді набору ліній в просторі, кожна з яких є перетином тривимірної поверхні площинами, паралельними площині yOz. Крім цієї найпростішої функції система MATLAB використовує ще ряд функцій, що дозволяють добиватися більшої реалістичності в зображенні тривимірних графіків.