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

5.2.3. Побудова графіків. Команди Plot, Plot3

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

Побудова графіків відрізками прямих. Для відображення таких функцій використовують графіки в декартовій (прямокутній) системі координат. У цьому разі, за звичай, будують дві осі – горизонтальну X і вертикальну Y, та задають координати х і у, які визначають вузлові точки функції у(х). Ці точки з’єднують одна з одною відрізками прямих, під час побудови графіка відбувається лінійна інтерполяція для проміжних точок. Оскільки MATLAB – матрична система, то сукупність точок у(х) задана векторами х і у однакового розміру.

Команда plot слугує для побудови графіків функцій у декартовій системі координат. Вона має низку параметрів, наведених нижче.

Команда plot (X, Y) будує графік функції у(х), координати точок (х, у) якої взяті з векторів однакового розміру Y і X. Якщо X або Y – матриця, то відбувається побудова сім’ї графіків за даними, які містяться в стовбцях.

Наприклад, якщо хочемо нарисувати графік функції в інтервалі [0 8π] то потрібно виконати такі кроки:

function draw_sinx(pedio,shmeia) % 1

h = (pedio(2)-pedio(1))/(shmeia-1); % 2

x = pedio(1):h:pedio(2); % 3

y = sin(x); % 4

plot(x,y) % 5

axis equal % 6

Числа у правій частині тіла функції не впливають на програму, однак, завдяки їм можна проаналізувати, що робить кожний рядок. У першому рядку ми оголошуємо, що створено М-функцію, якій дано ім'я draw_sinx. Тут також оголошено, що вона має два вхідні параметри. З другого рядка зрозуміло, що перший параметр є масивом, розміром , а другий – числом. За допомогою масиву додаємо інтервал, у якому відбуватиметься побудова кривої. В другому рядку – точки графіка. У третьому рядку визначаємо всі х , а в четвертому обраховується значення функції y = sin(x). У п’ятому використана функція plot для малювання графіка обчислених значень аргументу(рис.5.8). Шостий рядок відображає на те, що вздовж кожної осі однакове масштабування. Введемо конкретні параметри для отримання результату, а саме, draw_sinx([0,4*pi],28).

Рис. 5.8. Графік функії

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

Функція plot(Y) будує графік у(і), значення у беруть з вектора Y, a i є індексом відповідного елемента. Якщо Y містить комплексні елементи, то виконується команда plot (real (Y). imag(Y)). В інших випадках уявна частина даних ігнорована

» х=2*pi:0.02*pi:2*pi; 

» y=sin(x)+i*cos(3*x); 

» plot(y)

Функція plot(X,Y,S) аналогічна до команди plot(X,Y), однак тип лінії графіка можна задавати за допомогою рядкової константи S.

Значеннями константи S можуть бути такі символи (табл.5.1).

Таблиця 5.1. Символи

Колір лінії

Y

М

С

R

G

В

W

К

Жовт.

Фіол.

Голуб.

Червон.

Зел.

Синій

Білий

Чорн.

Тип точки

.

0

+

*

S

D

V

A

<

>

P

H

точ-

ка

коло

плюс

зірка

квад-

рат

ромб

три-

кут-

ник

униз

три-

кут-

ник

уверх

три-

кут-

ник

уліво

три-

кут-

ник

управо

п’яти-

кутник

шести-

кутник

Тип лінії

-

:

-.

--

Суцільна

Подвійний пунктир

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

Штрих

Отже, за допомогою рядкової константи можна змінювати колір лінії, задавати вузлові точки різними значками і змінювати тип лінії графіка.

Якщо немає посилання на колір ліній і точок, то він буде вибираний автоматично з таблиці кольорів (білий вилучений). Якщо ліній більше шести, то вибір кольорів повторюється. Для монохромних систем лінії виокремлювані стилем.

Нижче наведено приклад побудови графіків трьох функцій з різним стилем кожної з них.

» x=-2*pi:0.1*pi:2*pi;

» yl=sin(x);

» y2=sin(x).^2;

» y3=sin(x).^3:

» plot(x,yl,'-m',x,y2,'-.+r',х,у3,'--ok')

Тут графік функції y1 побудований суцільною фіолетовою лінією, графік у2 – штрих пунктирною лінією з крапками у вигляді знака «плюс» червоного кольору, а графік уЗ – штриховою лінією з кружечками чорного кольору.

Створення масивів даних для тривимірної графіки. Перш ніж описувати команди plot3, розглянемо різні команди побудови поверхонь. За допомогою Matlab можна рисувати поверхні. Для цього є достатньо команд, які можна легко використовувати, наприклад: meshgrid, surfc, meshc, peaks. Звичайно, можна застосовувати і команду patch.

Тривимірні поверхні, як звичайно описують функцією двох змінних z(x, у). Побудова тривимірних графіків потребує не просто задання векторів х і у, та визначення двовимірних масивів – матриць. Для їхнього створення слугує функція meshgrid, яку головно використовують сумісно з функціями побудови графіків тривимірних поверхонь. Функцію meshgrid записують так:

  • [X,Y] = meshgrid(x) – аналогічна до [X,Y] = meshgrid(x,x);

  • [X,Y,Z] = meshgrid(x,y,z) – повертає тривимірні масиви, які використовують для обчислення функцій трьох змінних і побудови тривимірних графіків;

  • [X,Y] = meshgrid(x,y) – перетворює область, задану векторами х і у, у масиви X і Y, які можуть бути використані для обчислення функції двох змінних і побудови тривимірних графіків. Рядки масиву X є копіями вектора х; а стовпці Y – копіями вектора у.

Команда meshgrid створює координати (x,y), які використовують для утворення z-координати.

[X,Y] = meshgrid(-8:.5:8);

R = sqrt(X.^2 + Y.^2) + eps;

Z = sin(R)./R;

mesh(X,Y,Z)

Унаслідок виконання описанихвище дій можна отримати поверхню.

Рис. 5.9. Поверхня, створена командою meshgrid

За допомогою сіткоподібних графіків з заданим функціональним заповненням поверхні можна зобразити найліпше. Команди, які їх викликають містять слово mesh. Ці команди такі:

  • mesh(X,Y,Z,C) – виводить у графічне вікно сіткову поверхню Z(X,Y) з кольорами вузлів поверхні, які задані масивом С;

  • mesh(X,Y,Z) – аналог попередньої команди при C=Z. У цьому випадку використовують функціональне заповнення, за якого колір заданий висотою поверхні.

Можливі також форми команди mesh(x,y,Z), mesh(x,y,Z,C), mesh(Z) і mesh(Z,C).

Система MATLAB має декілька графічних функцій, які повертають матричний образ поверхні. Наприклад, функція peaks(N) повертає матричний образ поверхні з низкою піків і западин.

Інколи графік поверхні доцільно об'єднати з контурним графіком її проекції на площину, розташовану під поверхнею. Для цього використовують команду meshc. Команда meshc(...) – аналогічна до mesh(...), однак, крім графіка поверхні, дає зображення її проекції у вигляді ліній одного рівня.

Уявлення про поверхні можна отримати з сіткових графіків, які використовують функціональне заповнення комірок. Наприклад, колір заповнення поверхні z(x, у) можна задати згідно з висотою z поверхні, вибравши для малих висот темні тони, а для великих – світлі. Для побудови таких поверхонь використовують команди класу surf (...):

  • surf (X, Y, Z, С) – будує кольорову параметричну поверхню за даними матриць X, Y и Z з кольором, що заданий масивом С;

  • surf(X,Y,Z) – аналогічна до попередньої команди, де C=Z, так що колір задається висотою тої чи іншої комірки поверхні;

  • surf(x,y,Z) і surf(x,y,Z,C) з двома векторними аргументами х і у – вектори х і у заміняють перші два матричні аргументи і повинні мати довжини length(x)=n і length(y)=m, де [m,n]=size(Z). Тут вершини областей поверхні задані трьома координатами (x(j), y(i), Z(i,j)). Зазначимо, що х відповідає стовпцям Z, а у – рядкам;

  • surf(Z) і surf(Z,C) використовують х = 1:n і у = 1:m. Тут висота Z – однозначно визначена функція, задана геометрично прямокутною сіткою;

  • surfc(...) – аналогічна до команди surf, однак забезпечує додаткову побудову контурного графіка проекції фігури на опорну площину.

Побудова графіків поверхонь. Команда plot3(...) є аналогом команди plot (...), однак належить до функції двох змінних z(x, у). Вона будує аксонометричне зображення тривимірних поверхонь і має різні форми.

Функція plot3(x,y,z) будує масив точок, заданих векторами х, у і z, з’єднує їх відрізками прямих.

Функція plot3(X,Y,Z), де X, Y, Z – три матриці однакового розміру, будує точки з координатами X(i.:), Y(i,:) і Z(i,:) і з’єднує їх відрізками прямих. Розглянемо побудову тривимірної поверхні, яку описує функція z(х, у)=х^2+у^2.

» [X,Y]=meshgrid(-3:0.15:3);

» Z=X.^2+Y. ^2;

» plot3(X,Y,Z)

Функція plot3 (X, Y, Z, S) – забезпечує побудови, аналогічні до наведених нижче але зі специфікацією стилю лінії і точок. Нижче в прикладі цю команду застосовано для побудови поверхні колами.

» [X.Y]-meshgrid([-3:0.15:3]): 

» Z=X.^2+Y.^2; 

» plot3(X,Y,Z,'o')

Функція plot3(xl, yl, zl, sl,х2,у2,z2, s2, хЗ,уЗ,z3,s3,...) будує на одному рисунку графіки декількох функцій zl(xl ,yl), z2(x2,y2) і так далі зі специфікацією ліній і маркерів кожної з них.

» [X,Y]=meshgrid([-3:0.15:3]);

» Z=X.^2+Y.^2;

» plot3(X,Y,Z,'-k',Y,X,Z,'-k')