Выражение
|
Переменные
|
1
|
2
|
3
|
1
|
|
|
2
|
|
|
3
|
|
|
4
|
|
|
5
|
|
|
6
|
|
|
7
|
|
|
8
|
|
|
9
|
|
|
10
|
|
|
11
|
|
|
12
|
|
|
Окончание таблицы 1.1
№
|
Выражение
|
Переменные
|
13
|
|
|
14
|
|
|
15
|
|
|
16
|
|
k =2 ;
m =1.8
|
17
|
|
а =7 ;
b =2.3
|
18
|
|
а =2 ;
p =1.6
|
19
|
; ;
|
х =1.52 ;
c = 5
|
20
|
|
t =4.1 ;
p =3
|
21
|
|
m=2 ; x=1.1
|
22
|
|
k =7.2 ;
x =0.5
|
23
|
|
b =3 ;
c =1.7
|
24
|
|
t = 2.2 ;
b =3
|
25
|
|
х = 11 ;
p = 2.6
|
26
|
|
N = 7.1 ;
b =3
|
27
|
|
M = 3.8 ;
p =2
|
28
|
|
b =2 ;
х =1.2
|
29
|
|
k =2 ;
m =1.8
|
30
|
|
b =7.1;
t =2
|
2. РАБОТА С ГРАФИКОЙ СРЕДСТВАМИ MATLAB
Основные теоретические сведения
Одно из достоинств системы MatLab – обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI).
Для отображения функций одной переменной у(х) используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси – горизонтальная X и вертикальная Y, и задаются координаты х и у, определяющие узловые точки функции у(х). Поскольку MatLab – матричная система, совокупность точек у(х) задается векторами X и Y одинакового размера.
Команда plot (X, Y) служит для построения графиков функций в декартовой системе координат, координаты точек (х, у) берутся из векторов одинакового размера Y и X. Если X или Y – матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.
Функция plot имеет различные формы, связанные с входными параметрами, например plot(y) создает кусочно-линейный график зависимости элементов y от их индексов. Если в качестве аргументов заданы два вектора, то plot(x,y) создаст график зависимости y от x. Например, для построения графика функции sin в интервале от 0 до 2π, сделаем следующее
Программа построила график зависимости, который отображается в окне Figure 1 (рис. 2.1).
Рисунок 2.1 – График зависимости y=f(x) построенный функцией plot(x,y)
Приведеный ниже пример иллюстрирует построение графиков двух функций – sin(x) и cos(x), значения которых содержатся в матрице Y, а значения аргумента x сохраняются в векторе Х:
» х = [0 1 2 3 4 5];
» Y = [sin(x) cos(x)];
» plot(x, Y)
На рис. 2.2 приведен график функци для этого примера. На нем четко видно,что графики складываются из отрезков.
Рисунок 2.2 − Графики двух функций в декартовой системе координат
Для того, чтобы функция была непрерывной линей, следует увеличить количество узловых точек, например задать x = 0 : 0.01 : 5 (рис. 2.3).
Рисунок 2.3 − График непрерывной функции
Команда plot(y) – строит график y(n), где значения аргумента n это индексы элементов вектора y, a ось абсцисс представляет собой соответсвующий элемент. Если y содержит комплексные элементы, то выполняется команда plot(real(y), imag(y)). Пример использования команды plot(y):
» х = 2*pi : 0.02*pi : 2*pi;
» y = sin(x) + i*cos(3*x);
» plot(y)
Соответствующий график приведен на рис. 2. 4.
Рисунок 2.4 − График функции, который изображает вектор y с комплексними элементами
Построим график двух функций: y1 = 200 sin(x)/x; y2 = x2.
Для этого создадим М-файл, который вычисляет значения этих функций:
function y = myfun(x)
% Вычисление двух функций
% y(1) = 200 sin(x)/x, y(2) = x2.
y(:,1) = 200*sin(x) . / x;
y(:,2) = x . 2;
Теперь построим графики этих функций в интервале [-20 20] с разбиением интервала минимум на 50 частей и так, чтобы <приращение угла> не превышало 2. Результат изображен на рис. 2.5.
» fplot('myfun', [-20 20], 50, 2), grid
» set(gcf,'color','white'); title('Графік функции "MYFUN"')
Рисунок 2.5 – График двух функций: y1 = 200 sin(x)/x; y2 = x2
Команда plot(X, Y, S) аналогична команде plot(X, Y), но тип линии графика можно задавать с помощью строковой константы S.
Значениями константы S могут быть следующие символы, которые приведены в табл. 2.1.
Таблица 2.1 – Задание типа линии
Маркер типа линии
|
Маркер
|
Тип линии
|
-
|
Непрерывная
|
--
|
Штриховая
|
:
|
Пурктирная (точками)
|
-.
|
Штрих-пунктирная
|
Маркер цвета графика
|
Маркер
|
Цвет графика
|
c
|
Голубой
|
m
|
Фиолетовый
|
y
|
Желтый
|
r
|
Красный
|
g
|
Зеленый
|
b
|
Синий
|
w
|
Белый
|
k
|
Черный
|
Тип проставляемой точки
|
Маркер
|
Тип точки
|
.
|
Точка
|
+
|
Плюс
|
*
|
Звездочкой
|
о
|
Кружком (указывается латинская буква о)
|
х
|
Крестиком (указывается латинская буква x)
|
Таким образом, с помощью строковой константы S можно изменять цвет линии, представлять узловые точки различными отметками (точка, окружность, крест, треугольник с разной ориентацией вершины и т. д.) и менять тип линии графика.
Команда рlot(X1, Y1, S1, Х2, Y2, S2, ХЗ, Y3, S3,...) строит на одном графике ряд линий, представленных данными вида (X, Y, S), где X и Y – векторы или матрицы, a S — строки. С помощью такой конструкции возможно построение, например, графика функции линией, цвет которой отличается от цвета узловых точек. При отсутствии указания на цвет линий и точек он выбирается автоматически из таблицы цветов (белый исключается). Если линий больше шести, то выбор цветов повторяется.
Рассмотрим пример построения графиков трех функций с разными стилями представления каждого из них (рис. 2.6):
>> x = –2*pi : 0.1*pi : 2*pi;
>> y1 = sin(x);
>> y2 = sin(x).^2;
>> y3 = sin(x).^3;
>> plot(x, y1, '-m', x, y2, '-.+r', х, y3, '--ok')
Из рисунка видно, что график функции y1 строится сплошной линией, график у2 строится пунктирной линей с маркерами в виде знака “плюс”, а график у3 строится штриховой линией с кружочками.
Рисунок 2.6 − Вид трех функций на одном графике с разными стилями линий
Для построения графика в полярной системе координат используется функция polar.
Рассмотрим пример построения графиков в полярной системе координат (рис. 2.7):
phi=0:0.001:2*pi;
>> z=sin(3*phi);
>> polar(phi,z)
Рисунок 2.7 − Вид функции в полярной системе координат
Трехмерные поверхности обычно описываются функцией двух переменных z(x, у). Специфика построения трехмерных графиков требует не просто задания ряда значений х и у, т. е. векторов х и у. Она требует определения для X и Y двумерных массивов – матриц.
Для создания таких массивов служит функция meshgrid. В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция meshgrid записывается в следующих формах:
– [X,Y,Z] = meshgrid(x, y, z) – возвращает трехмерные массивы, используемые для вычисления функций трех переменных и построения трехмерных графиков;
– [X,Y] = meshgrid(x, y) — преобразует область, заданную векторами х и у, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора х, а столбцы Y — копиями вектора у.
Команда plot3(...) является аналогом команды plot(...), но относится к функции двух переменных z(x, у). Она строит аксонометрическое изображение трехмерных поверхностей и представлена следующими формами:
– plot3(x, y, z) — строит массив точек, представленных векторами х, у и z, соединяя их отрезками прямых. Эта команда имеет ограниченное применение;
– plot3(X, Y, Z, S) – обеспечивает построения со спецификацией стиля линий и точек;
– plot3(x1, y1, z1, s1, х2, у2, z2, s2,...) – строит на одном рисунке графики нескольких функций z1(x1,y1), z2(x2,y2) и т. д. со спецификацией линий и маркеров каждой из них.
Наиболее наглядными являются сетчатые графики поверхностей с заданной или функциональной окраской. В названии их команд присутствует слово mesh. Имеются три группы таких команд:
– mesh(X, Y, Z, C) – выводит в графическое окно сетчатую поверхность Z(X,Y) с цветами узлов поверхности, заданными массивом С;
– mesh(X, Y, Z) – аналог предшествующей команды при C = Z.
Ниже приводится пример применения команды mesh:
>> [X, Y]=meshgrid([-3:0.15:3]);
>> Z=X.^2+Y.^2;
>> mesh(X, Y, Z)
Рисунок 2.8 – График поверхности, созданный командой mesh(X,Y,Z)
После того как график уже построен, MatLab позволяет выполнить его форматирование или оформление в нужном виде. Для установки над графиком титульной надписи используется следующая команда title('string') – установка на двумерных и трехмерных графиках титульной надписи, заданной строковой константой 'string'.
Для установки надписей возле осей х, у и z используются следующие команды: xlabel('String'), ylabel('String'), zlabel('String').
Рисунок 2.9 – Установка надписей с использованием команды:
xlabel('String'), ylabel('String'), zlabel('String')
Часто возникает необходимость добавления текста в определенное место графика, например для обозначения той или иной кривой графика. Для этого используется команда text:
– text(X,Y, 'string') – добавляет в двумерный график текст, заданный строковой константой 'string', так что начало текста расположено в точке с координатами (X, Y). Если X и Y заданы как одномерные массивы, то надпись помещается во все позиции [x(i), y(i)];
– text(X,Y, Z, 'string') – добавляет в трехмерный график текст, заданный строковой константой 'string', так что начало текста расположено в позиции, заданной координатами X, Y и Z.
Очень удобный способ ввода текста предоставляет команда gtext:
– gtext('string') – задает выводимый на график текст в виде строковой константы 'string' и выводит на график перемещаемый мышью маркер в виде крестика. Установив маркер в нужное место, достаточно щелкнуть любой кнопкой мыши для вывода текста.
Пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него, называется легендой. Для создания легенды используются различные варианты команды legend:
legend(stringl, string2,…, strings) – добавляет к текущему графику легенду в виде строк, указанных в списке параметров (рис. 2.10);
>> legend('график')
Рисунок 2.10 – График с пояснениями
legend (Pos) — помещает легенду в точно определенное место, специфицированное параметром Pos:
Pos = 0 – лучшее место, выбираемое автоматически;
Pos = l – верхний правый угол;
Pos = 2 – верхний левый угол;
Pos = 3 – нижний левый угол;
Pos = 4 – нижний правый угол;
Pos = -l – справа от графика.
При добавлении легенды следует учесть, что порядок и количество аргументов команды legend должны соответствовать порядку вывода графиков и их количеству.
Обычно графики выводятся в режиме автоматического масштабирования. Следующие команды класса axis меняют эту ситуацию:
–axis([XMIN XMAX YMIN YMAX]) – установка диапазонов координат по осям х и у для текущего двумерного графика;
–axis([XMIN XMAX YMIN YMAX ZMIN ZMAX]) – установка диапазонов координат по осям х, у и z текущего трехмерного графика;
– axis auto – установка параметров осей по умолчанию.
При построении графиков в дополнение к разметке осей часто используют масштабную сетку. Команды grid позволяют задавать построение сетки или отменять это построение:
–grid on – добавляет сетку к текущему графику;
–grid off – отключает сетку.
Во многих случаях желательно построение многих наложенных друг на друга графиков в одном и том же окне. Для этого служит команда продолжения графических построений hold. Она используется в следующих формах:
–hold on – обеспечивает продолжение вывода графиков в текущее окно, что позволяет добавлять последующие графики к уже существующим;
–hold off – отменяет режим продолжения графических построений.
Бывает, что в одном окне надо расположить несколько координатных осей с различными графиками без наложения их друг на друга. Для этого используются команды subplot, применяемые перед построением графиков:
–subplot(m, n, p) – разбивает графическое окно на m×n подокон, при этом m – число подокон по горизонтали; n – число подокон по вертикали, а р – номер подокна, в которое будет выводиться текущий график (подокна отсчитываются последовательно по строкам).
Проиллюстрируем работу функции subplot (см рис. 2.11):
>> subplot(3, 2, 1); plot (x,y);
>> subplot(3, 2, 4); plot (x,y);
>> subplot(3, 2, 5); plot (x,y);
Рисунок 2.11 – Работа функции subplot
Было сформировано три строки и два столбца полей для вывода графиков. Обращение к каждому конкретному полю происходит с указанием его номера. Нумерация происходит слева направо и снизу вверх.
Лабораторная работа № 2
РАБОТА С ГРАФИКОЙ В MATLAB
Цель работы: изучение основных операторов графики системы MatLab и создание программ, реализующих графический вывод
Контрольные вопросы
1. С помощью какой команды осуществляется построение графиков в декартовой системе координат?
2. Для чего служит команда mesh?
3. Как осуществляется задание надписей?
4. Для чего используется команда grid?
5. Как осуществляется разбивка окна на меньшие окна?
6. Для чего используется команда hold?
Лабораторное задание
Составить и отладить программы для вывода графиков функций f1, f2, f3 соответственно индивидуальному заданию (табл. 2.1). Вывод графиков должен быть осуществлен в одном окне, графики должны быть подписаны, отмасштабированы.
Таблица 2.1 – Варианты заданий
Номер варианта
|
|
|
|
|
1
|
2
|
3
|
4
|
5
|
1
|
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
|
4
|
|
|
|
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
|
|
8
|
|
|
|
|
9
|
|
|
|
|
10
|
|
|
|
|
11
|
|
|
|
|
12
|
|
|
|
|
13
|
|
|
|
|
14
|
|
|
|
|
15
|
|
|
|
|
2. Составить и отладить программы для вывода графика трехмерной поверхности для функции f4 ( ) задания из табл. 2.1.
3. Написать файл-функцию для вычисления кусочно-заданной функции (табл. 2.2) и построить ее график.
Таблица 2.2 – Варианты заданий кусочно-заданной функции
№ варианта
|
Функция
|
№ варианта
|
Функция
|
1
|
2
|
3
|
4
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
10
|
|
11
|
|
12
|
|
13
|
|
14
|
|
Окончание таблицы 2.2
15
|
|
16
|
|
17
|
|
18
|
|
19
|
|
20
|
|
21
|
|
22
|
|
23
|
|
24
|
|
25
|
|
26
|
|
27
|
|
28
|
|
29
|
|
30
|
|
3. ПРОГРАММИРОВАНИЕ В СРЕДЕ MATLAB.
Достарыңызбен бөлісу: |