Задать значения аргумента функции.
Задать функцию.
Построить график.
Отформатировать график.
Добавить на график дополнительные элементы.
Для построения графиков функций в 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. Решение системы алгебраических уравнений в матричной форме
Система линейных алгебраических уравнений в матричной форме имеет вид:
где: А – квадратная матрица коэффициентов; Х – вектор-столбец неизвестных; В – вектор-столбец правых частей.
Решение системы в матричной форме имеет вид:
Решим в матричной форме систему: