
Информатика_MATLAB / Методические пособия / Лабораторная работа №1. Введение в MATLAB
.pdfЛабораторная работа №1. Введение в MATLAB
Краткая характеристика MATLAB
MATLAB (сокращение от англ. «Matrix Laboratory») – это пакет прикладных программ для решения задач технических вычислений и одноименный язык программирования, используемый в этом пакете.
Система MATLAB предлагается разработчиками (корпорация The MathWorks, Inc.) как лидирующий на рынке, в первую очередь на предприятиях военно-промышленного комплекса, в энергетике, в аэрокосмической отрасли и в автомобиле строении язык программирования высокого уровня для технических вычислений, расширяемый большим числом пакетов прикладных программ – расширений. Самым известным из них стало расширение Simulink, обеспечивающее блочное имитационное моделирование различных систем и устройств. Но и без пакетов расширения MATLAB представляет собой мощную операционную среду для выполнения огромного числа математических и научно технических расчетов и вычислений и создания пользователями своих пакетов расширения и библиотек процедур и функций.
Робота в среде MATLAB может осуществляться в двух режимах:
•в интерактивном режиме, когда вычисления осуществляются сразу после набора
очередного оператора или команды MATLAB; при этом значение результатов вычисления могут присваиваться некоторым переменным, или результаты получаются непосредственно, без присваивания (как в обычных калькуляторах);
•путем вызова имени программы, написанной на языке MATLAB, предварительно
составленной и записанной на диске, которая содержит все необходимые команды, обеспечивающие ввод данных, организацию вычислений и вывод результатов на экран (программный режим).
Именно с интерактивного режима мы начнем работу в MATLAB.
Описание интерфейса MATLAB
После запуска можно будет увидеть следующее окно системы MATLAB, представленное на рисунке 1.
1

Рисунок 1. Окно системы MATLAB R2013b после запуска
Далее рассмотрим основные элементы графического интерфейса MATLAB, отмеченные на рисунке 2, и кратко опишем из назначение.
Рисунок 2. Основные элементы пользовательского интерфейса MATLAB Основные элементы интерфейса MATLAB:
1.Командное окно, предназначенное для интерактивной работы в MATLAB;
2.Рабочая область, в которой отображаются текущие переменные;
3.Рабочий каталог, где содержатся пользовательские скрипты и функции;
4.Содержимое рабочего каталога;
5.История команд введенных в командное окно.
2
Работа с MATLAB в режиме командной строки
Простые вычисления
Рассмотрев основные элементы интерфейса прейдем непосредственно к работе с MATLAB в интерактивном режиме. Для этого вычислим значение полинома
y=3 x2−4 x +10 при значении x=2 . Для этого в командное окно надо ввести:
>> 3 * 2 ^ 2 - 4 * 2 + 10
и нажать Enter. Символом >>, как и в MATLAB, будем в дальнейшем обозначать
приглашение к вводу. После нажатия Enter в ответ MATLAB выведет: ans =
14 |
|
|
|
|
|
|
|
|
Теперь |
попробуем |
вычислить |
более |
сложное |
выражение |
|||
y=cos(a)cos(b)−sin (a)sin(b) |
при a= π |
, |
b=− |
π |
. Заметим, что для |
вычисления |
||
|
||||||||
|
|
2 |
|
6 |
|
|
|
представленного выражения необходимо будет использовать функции MATLAB sin, cos и константу pi (технически так же является функцией). Так же отметим, что все тригонометрические функции в MATLAB принимают значения угла в радианах. Теперь
вычислим данное выражение:
>> cos(pi/2)*cos(-pi/6)-sin(pi/2)*sin(-pi/6)
ans =
0.5000
Объявление переменных
Для создание переменной в MATLAB необходимо просто присвоить ей значение с
помощью оператора присваивания «=». Например создадим переменную x:
>> x = 2
x =
2
В данном случае, когда MATLAB встречает имя новой переменной, он автоматически создает новую переменную и выделяет для нее нужный объем памяти. Если данная переменная уже существовала, то он изменит ее значение, и при необходимости выделит дополнительную память.
Тип созданной переменной определяется типом присваиваемого значения. В данном примере переменная x будет иметь тип double (число с плавающей точкой двойной точности), так как все числа по умолчанию в MATLAB имеют тип double.
Теперь немного остановимся на именах переменных. Имя переменной может содержать:
•латинские буквы (A-Z и a-z)
•цифры (0-9)
•знак подчеркивания (_)
При этом имя обязательно должно начинаться с буквы и не должно совпадать с ключевым словом MATLAB. Так же необходимо учитывать, что MATLAB чувствителен к регистру, и поэтому будет считать переменные x и X разными. В таблице 1 приведены
3

примеры допустимых и недопустимых имен переменных:
|
Таблица 1: Примеры имен переменных |
|
|
допустимые имена переменных |
недопустимые имена переменных |
|
|
x6 |
6x |
|
|
lastValue |
end |
|
|
n_factorial |
n! |
Далее проделаем те же вычисления, что и в предыдущем пункте, но с использованием переменных:
>>x = 2;
>>y = 3 * x ^ 2 - 4 * x + 10;
Отметим, что в данном случае после выражения был поставлен символ «;». Данный символ подавляет вывод в консоль значения вычисленного выражения или результата присвоенного переменной. Поэтому для того чтобы вывести значение данной переменной
достаточно просто ввести ее имя:
>> y
y =
14
Теперь произведем аналогичные действия для второго примера:
>>a = pi / 2;
>>b = - pi / 6;
>>cos(a) * cos(b) - sin(a) * sin(b)
ans =
0.5000
Отметим, что в приведенном выше примере, результат вычисления выражения не были присвоены какой либо переменной. В таких случаях MATLAB присваивает результаты вычислений переменной ans.
Удаление созданных переменных
Все созданные переменные и их значения можно отображаются в окне workspace (рисунок 3).
4

Рисунок 3. Текущие переменные
Для удаления переменных в MATLAB из рабочей области предусмотрена команда
clear. Так для удаления переменной x нужно ввести:
>> clear x
Для удаления нескольких переменных сразу необходимо после команды сlear перечислить имена переменных через пробел. Если нужно удалить сразу все переменные, то
нужно ввести команду clear без аргументов:
>> clear
Для очистки командного окна нужно ввести следующую команду:
>> clc
Создание матриц и векторов
Почти все переменные в MATLAB являются матрицами, даже скалярные значения, созданные в примерах выше, считаются матрицами размером 1 на 1. Матрицы в MATLAB являются важнейшим типом для данного языка, поэтому рассмотрим способы ввода матрицы
с указания полного списка элементов. Для примера создадим матрицу A=[4.31.2 |
5.32.4 |
6.43.1] : |
||
>> A = [1.2 2.4 3.1; 4.3 5.3 6.4] |
|
|
||
A = |
|
|
|
|
1.2000 |
2.4000 |
3.1000 |
|
|
4.3000 |
5.3000 |
6.4000 |
|
|
В данном случае элементы матрицы, находящиеся в одной строке, разделяют пробелами, а строки разделяются символом «;». Так же элементы находящиеся в одной
строке можно разделить с помощью запятых:
>> A = [1.2, 2.4, 3.1; 4.3, 5.3, 6.4]
A =
5
1.2000 |
2.4000 |
3.1000 |
4.3000 |
5.3000 |
6.4000 |
Следует отметить, что дробная часть числа отделяется от целой точкой, а не запятой.
Аналогичным образом можно создать векторы:
>> x = [1 2 3]
x =
1 2 3
>> y = [1; 2; 3]
y =
1
2
3
В данном случае x это вектор-строка, а y вектор-столбец. Отличия вектора-столбца от вектора-строки проявляются при использовании матричных операций и использовании функций.
Рассмотрим еще один важный способ задания вектора-строки — оператор двоеточия
«:». Например:
>> 1:10
ans =
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
В данном случае был создан вектор-строка со значениями от 1 до 10 с шагом 1. В
случае необходимости шаг можно указать явно:
>> 1:2:10
ans =
1 |
3 |
5 |
7 |
9 |
В данном случае значение 10 не содержится в векторе, так как оно задает лишь максимальное значение (или минимальное, при отрицательном шаге), которое будет содержаться в векторе.
Шаг так же может быть отрицательным:
>> 0 : -pi/4 : -2 * pi ans =
-4.7124 |
0 |
-0.7854 |
-1.5708 |
-2.3562 |
-3.1416 |
-3.9270 |
|
-5.4978 |
-6.2832 |
|
|
|
|
Поэлементные операции над матрицами
Рассмотрим поэлементные операции над матрицами/векторами, которые понадобятся
6
в дальнейшем для построения графиков.
Многие функции MATLAB могут работать с матрицами и векторами. Рассмотрим в
качестве примера функцию sin:
>> x = 0 : pi/6 : pi x =
0 |
0.5236 |
1.0472 |
1.5708 |
2.0944 |
2.6180 |
3.1416 >> sin(x) ans =
0 |
0.5000 |
0.8660 |
1.0000 |
0.8660 |
0.5000 |
0.0000
Результат данных вычислений является вектор такого же размера, что и входной аргумент функции sin, содержащий значения синуса элементов вектора x.
Так же можно производить поэлементные операции сложения, вычитания, умножения, деления и возведения в степень для матриц/векторов одинаковой размерности. Например:
>>x = [1 2 3];
>>y = [3 2 1];
>>x + y
ans =
4 4 4
>> x - y
ans =
-2 0 2
>> x .* y
ans =
3 4 3
>> x ./ y
ans =
0.3333 1.0000 3.0000
>> x .^ y
ans =
7
1 4 3
Однако если попытаться поэлементно умножить матрицы разного размера, то получим ошибку:
>>x = [1 2 3];
>>y = [3; 2; 1];
>>x .* y
Error using .*
Matrix dimensions must agree.
Отметим, что для поэлементного умножения, деления и возведения в степень необходимо перед операцией ставить точку: «.*», «./», «.^», иначе будут применяться
матричные операции.
При вычислении более сложных операций в MATLAB нужно помнить о приоритете этих операций. Приоритет операций представлен в таблице 2.
Таблица 2. Приоритеты арифметических операций
уровень |
операции |
|
|
|
поэлементное транспонирование «.'», поэлементное возведение в степень «.^», |
1 |
эрмитово сопряженное транспонирование матрицы «'», возведение матрицы в |
|
степень «^» |
2 |
унарное сложение «+», унарное вычитание «-» |
|
|
3 |
поэлементное умножение «.*», поэлементное деление «./», умножение матриц |
|
«*», решение систем линейных уравнений «/» |
4 |
сложение «+», вычитание «-» |
5 |
оператор формирования массивов «:» |
Внутри каждого уровня операторы имеют равный приоритет и вычисляются в порядке следования слева направо. Заданный по умолчанию порядок следования может быть изменен с помощью круглых скобок.
Приведем пример:
>>x = [0 pi*5/2];
>>y = ( sin( 2 * x ) + 1 ) .* x
y =
07.8540
Отметим, что матрицы или вектора можно складывать со скалярными значениями и в
этом случае скалярное значение прибавится к каждому элементу матрицы или вектора:
>> [1 2 3] - 2
ans =
-1 0 1
Аналогичные действия можно выполнять с операциями вычитания, умножения, деления и операции поэлементного возведения в степень.
Основы построения графиков
8

Приведем пример построения графика в MATLAB:
>>x = 0 : 0.05 : 6*pi;
>>y = ( sin( 2 * x ) + 1 ) .* ( x .^ 2 );
>>plot(x, y);
>>xlabel x
>>ylabel y
После ввода данных команд появится график представленных на рисунке 4.
Рисунок 4. График в MATLAB
В простейшем случае для построения графиков используется функция plot, принимающая два входных аргумента, которыми являются векторы одинаковой длинны, задающие координаты точек для построения графика. В первом аргументе содержится значение координат точек по оси абсцисс, а во втором — по оси ординат.
Для того чтобы подписать оси графиков используется команды xlabel и ylabel, за которыми следует название оси графика.
Задания на лабораторную работу
После выбора номера варианта выполнить следующие этапы:
1.выбрать функцию для вычисления в соответствии с номером варианта;
2.вычислить значение заданной функции в точке x1;
3.с использованием оператора двоеточия сформировать вектор x со значениями от xMin до xMax с шагом dx;
4.для каждого элемента вектора x вычислить значение функции, заданной по варианту, и записать результат в переменную y;
5.используя созданные вектора, построить график функции и подписать оси.
Примечание к заданию
Для вычисления натурального логарифма, тангенса и экспоненты в MATLAB предусмотрены функции log, tan и exp соответственно.
Варианты задания
Номер |
функция |
x1 |
xMin |
|
dx |
xMax |
|
варианта |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
y=sin (2 x )2−cos(5 x)+ 2 |
π |
−2 π |
|
π |
2 π |
|
3 |
|
25 |
|
9
Номер |
|
|
|
|
|
|
|
|
функция |
|
|
|
|
|
|
|
|
|
x1 |
xMin |
|
dx |
xMax |
|||||||||||||
варианта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
2 |
π |
|
|
π |
|
||||||||||
2 |
y= sin( x) +cos(−3 x) +2 |
−2 π |
|
2 π |
||||||||||||||||||||||||||||||||
3 |
|
25 |
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
3 |
y=−5cos( x2)+ x−sin( x) x 2 |
π |
−2 π |
|
π |
2 π |
||||||||||||||||||||||||||||||
3 |
|
25 |
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
tg(2x) sin ( |
x |
) |
|
π |
|
|
π |
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
4 |
y= |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
3 |
−2 π |
25 |
|
2 π |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 +1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
5 |
y=6sin( |
x |
|
|
|
+1)+cos( |
|
x |
2 |
|
−3 x ) |
π |
−2 π |
|
π |
2 π |
||||||||||||||||||||
|
|
|
|
|
|
|
|
3 |
|
25 |
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
10 |
|
|||||||||||||||||||||||||||
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
6 |
y= |
|
|
x3+ 4 x −10 |
|
|
|
|
|
|
5 |
−8 |
0.16 |
8 |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 x2−4 x +1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
−x2+ |
4 |
x+ 2 |
|
|
|
|
|
|
||||||||||||||||||
7 |
|
|
|
|
|
|
5 |
−8 |
0.16 |
8 |
||||||||||||||||||||||||||
y= |
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
2 x3−9 x +2 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
8 |
|
|
|
|
|
|
|
|
|
|
|
x4 |
−10 x2 +4 |
3 |
0 |
0.08 |
8 |
|||||||||||||||||||
y= |
|
|
|
|
|
|
2 |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
−6 x3 −2 x +2 |
|
|
|
|
|
|
|
|||||||||||||||||||||||
9 |
y= |
|
|
|
x2−4 x +4 |
|
|
|
|
|
|
3 |
0 |
0.08 |
8 |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
3 x2−4 x+4 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
10 |
y= |
x2 + 4 x−10 |
|
|
|
|
|
|
3 |
0 |
0.08 |
8 |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 x3−4 x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
e |
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
11 |
y= |
4 |
|
+ sin( x+1) x |
4 |
1 |
0.08 |
9 |
||||||||||||||||||||||||||||
|
x |
|
|
|
|
|
|
|||||||||||||||||||||||||||||
12 |
y=2 e−(x−3)2 + 2 e−(x−6)2 |
4 |
1 |
0.08 |
9 |
|||||||||||||||||||||||||||||||
13 |
y=−x e−(x−4)2 + x e−( x−9 )2 |
4 |
1 |
0.08 |
9 |
|||||||||||||||||||||||||||||||
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−(x−4 )2 |
|
|
|
|
|
|
|||||||
14 |
y=ln ( |
|
) x sin (x )+ e |
2 |
4 |
0.02 |
6 |
|||||||||||||||||||||||||||||
4 |
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
ln ( |
x |
) x +10 |
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
15 |
y= |
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
4 |
0.02 |
6 |
|||||||||||||||
|
2 |
|
|
1 |
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
ln( |
x |
) x+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10