Добавить на график дополнительные элементы

Задать значения аргумента функции.

Задать функцию.

Построить график.

Отформатировать график.

Добавить на график дополнительные элементы.

Для построения графиков функций в MATLAB служит команда plot, имеющая несколько вариантов записи (x – аргумент функции, y –функция):

- plot(x,y) – строит график одной функции;

- plot(x,y,s) – строит график функции с заданным типом и цветом линии и точек (s – строковая константа);

- plot(x,y1,x,y2,…) – строит графики нескольких функций в одной системе координат;

- plot(x,y1,s1,x,y2,s2,…) – строит графики нескольких функций в одной системе координат c заданным типом и цветом линии и точек.

С помощью строковой константы s можно изменять цвет линии, представлять узловые точки различными отметками (точка, окружность, крест и т. д.) и менять тип линии графика. Значения строковой константы представлены в табл. 4-6.

Таблица 1.6 Цвет линии

Код Описание Код Описание
Y Желтый G Зелёный
M Фиолетовый B Синий
C Голубой W Белый
R Красный K Чёрный

Таблица 1.7 Тип точки

Код Описание Код Описание
. Точка D Ромб
  Окружность V Треугольник
Х Крест < Треугольник
+ Плюс > Треугольник
* Звёздочка P Пятиугольник
S Квадрат H Шестиугольник

Таблица 1.8 Тип линии

Код Описание
- Сплошная
-. Штрихпунктир
-- Штриховая

Пример: Построить график функции

Команды для построения:

>>x=0:0.5:3;

y=3.*x.^4-7.*x.^3+4.*x.^2-9.*x+2;

plot(x,y)

Результат выполнения команды на рисунке:

Результат выполнения команды plot(x,y,'d--r')

Задание 6 Построить на одних координатных осях графики

Построение трехмерных графиков

Трехмерные поверхности обычно описываются функцией двух переменных 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 возвращает дескриптор для объекта класса surface. Ниже приводится пример применения команды mesh:

x33=-4:0.2:4;

[X33,Y33]=meshgrid(x33);

z33=(X33.^2+Y33.^2)./(X33.*Y33);

mesh(X33,Y33,z33)

Рисунок – график поверхности, построенный командой mesh

Оформление графиков

После того как график уже построен, MATLAB позволяет выполнить его форматирование или оформление в нужном виде. Так, для установки над графиком титульной надписи используется следующая команда title('string') – установка на двумерных и трехмерных графиках титульной надписи, заданной строковой константой 'string'.

Для установки надписей возле осей х, у и z используются следующие команды: xlabel('String'), ylabel('String'), zlabel('String').

Результат добавления подписей к графику командами:xlabel('Ось Х'); ylabel('Ось Y'); zlabel('Ось Z'); title('График') показан на рисунке.

?Рисунок– добавление надписей на график

Часто возникает необходимость добавления текста в определенное место графика, например для обозначения той или иной кривой графика. Для этого используется команда 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) – добавляет к текущему графику легенду в виде строк, указанных в списке параметров;

Пример добавления легенды к графику:

>> x=0:0.1:10;y=cos(x);z=sin(x);

>>plot(x,y,x,z)

>>legend('Косинус','Синус')

Результат на графике:

Рисунок – График с пояснениями

legend (Pos) – помещает легенду в точно определенное место, специфицированное параметром Pos:

- Pos=0 – лучшее место, выбираемое автоматически;

- Pos=l – верхний правый угол;

- Pos=2 –верхнийлевый угол;

- Pos=3 –нижнийлевыйугол;

- Pos=4 –нижнийправыйугол;

- Pos= –l – справа от графика.

При добавлении легенды следует учесть, что порядок и количество аргументов команды legend должны соответствовать порядку вывода графиков и их количеству

Обычно графики выводятся в режиме автоматического масштабирования. Следующие команды класса axis меняют эту ситуацию:

- axis([XMINXMAXYMINYMAX]) – установка диапазонов координат по осям х и у для текущего двумерного графика;

- axis([XMINXMAXYMINYMAXZMINZMAX]) – установка диапазонов координат по осям х, у и z текущего трехмерного графика;

- axisauto – установка параметров осей по умолчанию.

В математической, физической и иной литературе при построении графиков в дополнение к разметке осей часто используют масштабную сетку. Команды grid позволяют задавать построение сетки или отменять это построение:

- gridon – добавляет сетку к текущему графику;

- grid off –отключаетт сетку.

Во многих случаях желательно построение многих наложенных друг на друга графиков в одном и том же окне. Для этого служит команда продолжения графических построений hold. Она используется в следующих формах:

- holdon – обеспечивает продолжение вывода графиков в текущее окно, что позволяет добавлять последующие графики к уже существующим;

- holdoff – отменяет режим продолжения графических построений.

Бывает, что в одном окне надо расположить несколько координатных осей с различными графиками без наложения их друг на друга. Для этого используются команды subplot, применяемые перед построением графиков:

- subplot(m, n, p) – разбивает графическое окно на m×n подокон, при этом m – число подокон по горизонтали, n – число подокон по вертикали, а р – номер подокна, в которое будет выводиться текущий график (подокна отсчитываются последовательно по строкам).

Работа функции subplot выглядит следующим образом:

>>subplot(3,2,1);plot(x,y)

>>subplot(3,2,3);plot(x,z)

>>subplot(3,2,2);plot(x,z,x,y)

>>subplot(3,2,6);mesh(X33,Y33,z33)

Рисунок – Работа функции subplot

Было сформировано 3 строки и два столбца полей для вывода графи-ков. Обращение к каждому конкретному полю происходит с указанием его номера. Нумерация происходит слева направо и снизу вверх.

Задание7 Построить трехмерный график согласно варианту

№ вар. Значение переменных Функция Тип графика
  от -3 до 3 с шагом 0,2 Mesh
  от -3 до 3 с шагом 0,2 Surf
  от -3 до 3 с шагом 0,2 plot3
  от -3 до 3 с шагом 0,2 Surf
  от -3 до 3 с шагом 0,2 Surf
  от -3 до 3 с шагом 0,2 Waterfall
  от -3 до 3 с шагом 0,2 Surf
  от -3 до 3 с шагом 0,2 Mesh
  от -3 до 3 с шагом 0,2 plot3
  от -3 до 3 с шагом 0,2 Waterfall

Задание 8 Используя команду subplot создать фигуру содержащую три графика:

1. График функции . Подписать график «График 1», оси – «Ось Х» и «Ось Y» соответственно. Включить отображение сетки графика.

2. График, полученный в задании 6. Подписать график «График 2», оси – «Ось Х» и «Ось Y» соответственно. Включить отображение сетки графика.

3. График, полученный в задании 6. Подписать график «График 2», оси – «Ось Х», «Ось Y» и «Ось Z» соответственно.

Рисунок – пример выполнения задания 8


Лабораторная работа № 6

Операции с матрицами

По умолчанию все числовые переменные в MATLAB считаются матрицами, так что скалярная величина есть матрица первого порядка, а векторы являются матрицами, состоящими из одного столбца или одной строки. Матрицу можно ввести, задав ее элементы или считав данные из файла, а также в результате обращения к стандартной или написанной пользователем функции.

Матричные данные размещаются в памяти последовательно по столбцам. Элементы матрицы в пределах строки отделяются пробелами или запятыми. Непосредственное задание матрицы можно осуществить несколькими способами. Например, вектор-столбец, то есть матрица, вторая размерность которой равна единице, может быть присвоена переменной А вводом одной строки:

>> A=[7+4i; 4; 3.2] % Ввод вектора-столбца

A =

7.0000 + 4.0000i

4.0000

3.2000

или вводом нескольких строк

>> A = [ % ввод вектора по строкам

7+4i

3.2];

Векторы могут быть сформированы как диапазоны – при помощи двоеточий, разделяющих стартовое значение, шаг и предельное значение. Если величина шага отсутствует, то по умолчанию его значение равно единице.

В результате n:m:k будет сформирован вектор, последний элемент которого не больше k для положительного шага m, и не меньше – для отрицательного: [n, n+m,n+m+m,…]

Например:

>> a=1:2:5

a =

1 3 5

В таблице представлен некоторый набор функций для создания матриц специального вида.

Функция Описание
eye(m,n) Единичная матрица размерности m × n
zeros(m,n) Нулевая матрица размерности m × n
ones(m,n) Матрица, состоящая из одних единиц размерности m × n
rand(m,n) Возвращает матрицу случайных чисел равномерно распределенных в диапазоне от 0 до 1, размерность m × n
randn(m, n) Возвращает матрицу размерности m × n, состоящих из случайных чисел, имеющих гаусовское распределение
tril(A),triu(A) Выделение нижней треугольной и верхней треугольной частей матрицы A
inv(A) Нахождениеобратнойматрицы A
det(A) Нахождение определителя (детерминанта) квадратной матрицы A

Обращение к элементу матрицы производится по правилу, – в круглых скобках после имени матрицы даются индексы, которые должны быть положительными целыми числами, указывающими номер строки и через запятую, номер столбца. Например, А(2,1) означает элемент из второй строки первого столбца матрицы А.

Для дальнейших примеров введем матрицу 2x2:

>> A=[1 2+5*i; 4.6 3]

A =

1.0000 2.0000 + 5.0000i

4.6000 3.0000

Чтобы изменить элемент матрицы, ему нужно присвоить новое значение:

>> A(2,2)=10 % Второй элемент второй строки

A =

1.0000 2.0000 + 5.0000i

4.6000 10.0000

Размер матрицы можно уточнить по команде size, а результат команды size можно использовать для организации новой матрицы.

Например, нулевая матрица того же порядка, что и матрица А, будет сформирована по команде

>> A2=zeros(size(A))

A2 =

0 0

0 0

С помощью двоеточия легко выделить часть матрицы. Например, вектор из первых двух элементов второго столбца матрицы A задаётся выражением:

>> A(1:2, 2)

ans =

2.0000 + 5.0000i

10.0000

Двоеточие само по себе означает строку или столбец целиком. Для удаления элемента вектора достаточно присвоить ему пустой массив – пару квадратных скобок []. Чтобы вычеркнуть одну или несколько строк (столбцов) матрицы нужно указать диапазон удаляемых строк (столбцов) для одной размерности и поставить двоеточие для другой размерности. Для нахождения длины вектора можно воспользоваться также командой length.

Набор арифметических операций в MATLAB для работы с матрицами состоит из стандартных операций сложения – вычитания, умножения – деления, операции возведения в степень и дополнены специальными матричными операциями. Если операция применяется к матрицам, размеры которых не согласованы, то будет выведено сообщение об ошибке.

Для поэлементного выполнения операций умножения, деления и возведения в степень применяются комбинированные знаки (точка и знак операции). Например, если за матрицей стоит знак (^), то она возводится в степень, а комбинация (.^) означает возведение в степень каждого элемента матрицы. При умножении (сложении, вычитании, делении) матрицы на число соответствующая операция всегда производится поэлементно.

Символ Назначение
+,- Символы плюс и минус обозначают знак числа или операцию сложения и вычитания матриц, причем матрицы должны быть одной размерности
* Знак умножения обозначает матричное умножение, для поэлементного умножения матрицы применяется комбинированный знак (.*)
' Апостроф обозначает операцию транспонирования (вместе с комплексным сопряжением), транспонирование без вычисления сопряжения обозначается при помощи комбинированного знака (.')
/ Левое деление
\ Правое деление
^ Оператор возведения в степень, для поэлементного возведения в степень применяется комбинированный знак (.^)

Проиллюстрируем различие обычного и поэлементного умножений при помощи следующего примера.

Введём матрицу H размера 2х2 и матрицу D из единиц той же размерности:

>> H=[0 1; 2 3], D=ones(size(H))

H =

0 1

2 3

D =

1 1

1 1

Перемножим матрицы, используя обычное умножение:

>> H*D

ans =

1 1

5 5

Теперь применим поэлементную операцию:

>> H.*D

ans =

0 1

2 3

Система MATLAB имеет ряд функций, предназначенных для обработки данных, заданных в матричной или векторной форме

Функция Описание
size(A) Возвращает массив, состоящий из числа строк и числа столбцов матрицы.
sum(A) Возвращает сумму всех элементов по столбцу
mean(A) Возвращает среднее значение столбца матрицы
std(A) Возвращает среднеквадратическое отклонение столбца матрицы
min(A),max(A) Возвращает минимум и максимум соответственно, по столбцу матрицы
sort(A) Сортирует столбец матрицы по возрастанию
prod(A) Вычисляет произведение всех элементов столбцов

Задание 1 Ввод с клавиатуры векторов и матриц.

Ввести:

– произвольную вектор-строку (v), размерность 2;

– произвольный вектор-столбец (w), размерность 2;

– произвольную матрицу (m), размерности 2×2.

Задание 2 Генерация матриц специального вида.

Создать:

– матрицу с нулевыми элементами (m0), размерности 2×2;

– матрицу с единичными элементами(m1), размерности 2×2;

– матрицу с элементами, имеющими случайные значения(mr), размерности 2×2;

– матрицу с единичными диагональными элементами(me), размерности 2×2.

Задание 3 Вычислить матрицу М по формуле согласно варианту:

№ варианта Задание
  M=v*w+m+mr*me
  M=m+mr*me
  M=(v/m)*(mr+me)
  M=w*v+mr*me
  M=m*mr+me
  M=m.*mr+100
  M=v*w+mr–m
  M=m+mr*me–10
  M=m*w+mr*v'
  M=m’+mr*me

Задание 4 Изучение функций обработки данных:

– определение числа строк и столбцов матрицы M;

– определение максимального элемента матрицы M;

– определение минимального элемента матрицы M;

– суммирование элементов матрицы M;

– перемножение элементов матрицы M.

Задание 5. Решение системы алгебраических уравнений в матричной форме

Система линейных алгебраических уравнений в матричной форме имеет вид:

где: А – квадратная матрица коэффициентов; Х – вектор-столбец неизвестных; В – вектор-столбец правых частей.

Решение системы в матричной форме имеет вид:

Решим в матричной форме систему:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: