Методическое пособие (Лаб.1-2)
.pdfФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
Информатика
Методические указания к выполнению лабораторных работ
Санкт-Петербург 2014
Содержание |
|
Лабораторная работа №1. Введение в MATLAB............................................................................. |
3 |
Лабораторная работа №2. Программы в MATLAB....................................................................... |
14 |
2
Лабораторная работа №1. Введение в MATLAB
Краткая характеристика MATLAB
MATLAB (сокращение от англ. «Matrix Laboratory») – это пакет прикладных программ для решения задач технических вычислений и одноименный язык программирования, используемый в этом пакете.
Система MATLAB предлагается разработчиками (корпорация The MathWorks, Inc.) как лидирующий на рынке, в первую очередь на предприятиях военно-промышленного комплекса, в энергетике, в аэрокосмической отрасли и в автомобиле строении язык программирования высокого уровня для технических вычислений, расширяемый большим числом пакетов прикладных программ – расширений. Самым известным из них стало расширение Simulink, обеспечивающее блочное имитационное моделирование различных систем и устройств. Но и без пакетов расширения MATLAB представляет собой мощную операционную среду для выполнения огромного числа математических и научно технических расчетов и вычислений и создания пользователями своих пакетов расширения и библиотек процедур и функций.
Робота в среде MATLAB может осуществляться в двух режимах:
•в интерактивном режиме, когда вычисления осуществляются сразу после набора очередного оператора или команды MATLAB; при этом значение результатов вычисления могут присваиваться некоторым переменным, или результаты получаются непосредственно, без присваивания (как в обычных калькуляторах);
•путем вызова имени программы, написанной на языке MATLAB, предварительно составленной и записанной на диске, которая содержит все необходимые команды, обеспечивающие ввод данных, организацию вычислений и вывод результатов на экран (программный режим).
Именно с интерактивного режима мы начнем работу в MATLAB.
Описание интерфейса MATLAB
После запуска можно будет увидеть следующее окно системы MATLAB, представленное на рисунке 1.
3
Рисунок 1. Окно системы MATLAB R2013b после запуска
Далее рассмотрим основные элементы графического интерфейса MATLAB, отмеченные на рисунке 2, и кратко опишем из назначение.
Рисунок 2. Основные элементы пользовательского интерфейса MATLAB Основные элементы интерфейса MATLAB:
1.Командное окно, предназначенное для интерактивной работы в MATLAB;
2.Рабочая область, в которой отображаются текущие переменные;
3.Рабочий каталог, где содержатся пользовательские скрипты и функции;
4
4.Содержимое рабочего каталога;
5.История команд введенных в командное окно.
Работа с 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 встречает имя новой переменной, он автоматически
5
создает новую переменную и выделяет для нее нужный объем памяти. Если данная переменная уже существовала, то он изменит ее значение, и при необходимости выделит дополнительную память.
Тип созданной переменной определяется типом присваиваемого значения. В данном примере переменная x будет иметь тип double (число с плавающей точкой двойной точности), так как все числа по умолчанию в MATLAB имеют тип double.
Теперь немного остановимся на именах переменных. Имя переменной может содержать:
•латинские буквы (A-Z и a-z)
•цифры (0-9)
•знак подчеркивания (_)
При этом имя обязательно должно начинаться с буквы и не должно совпадать с ключевым словом MATLAB. Так же необходимо учитывать, что MATLAB чувствителен к регистру, и поэтому будет считать переменные x и X разными. В таблице 1 приведены примеры допустимых и недопустимых имен переменных:
Таблица 1: Примеры имен переменных
недопустимые имена переменных
6x
lastValue |
end |
n_factorial |
n! |
Далее проделаем те же вычисления, что и в предыдущем пункте, но с использованием |
|
переменных: |
|
>>x = 2;
>>y = 3 * x ^ 2 - 4 * x + 10;
Отметим, что в данном случае после выражения был поставлен символ «;». Данный символ подавляет вывод в консоль значения вычисленного выражения или результата присвоенного переменной. Поэтому для того чтобы вывести значение данной переменной достаточно просто ввести ее имя:
>> y
y =
14
Теперь произведем аналогичные действия для второго примера:
>>a = pi / 2;
>>b = - pi / 6;
6
>> cos(a) * cos(b) - sin(a) * sin(b)
ans =
0.5000
Отметим, что в приведенном выше примере, результат вычисления выражения не были присвоены какой либо переменной. В таких случаях MATLAB присваивает результаты вычислений переменной ans.
Удаление созданных переменных
Все созданные переменные и их значения можно отображаются в окне workspace (рисунок 3).
Рисунок 3. Текущие переменные
Для удаления переменных в MATLAB из рабочей области предусмотрена команда clear. Так для удаления переменной x нужно ввести:
>> clear x
Для удаления нескольких переменных сразу необходимо после команды сlear перечислить имена переменных через пробел. Если нужно удалить сразу все переменные, то нужно ввести команду clear без аргументов:
>> clear
Для очистки командного окна нужно ввести следующую команду:
>> clc
7
Создание матриц и векторов
Почти все переменные в 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 =
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 вектор-столбец. Отличия вектора-столбца от вектора-строки проявляются при использовании матричных операций и использовании функций.
8
Рассмотрим еще один важный способ задания вектора-строки — оператор двоеточия «:». Например:
>> 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 = |
|
|
|
0 |
-0.7854 |
-1.5708 -2.3562 -3.1416 -3.9270 |
|
-4.7124 |
-5.4978 |
|
-6.2832 |
Поэлементные операции над матрицами
Рассмотрим поэлементные операции над матрицами/векторами, которые понадобятся в дальнейшем для построения графиков.
Многие функции 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
9
Результат данных вычислений является вектор такого же размера, что и входной аргумент функции 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 =
1 4 3
Однако если попытаться поэлементно умножить матрицы разного размера, то получим ошибку:
>>x = [1 2 3];
>>y = [3; 2; 1];
>>x .* y
Error using .*
Matrix dimensions must agree.
Отметим, что для поэлементного умножения, деления и возведения в степень необходимо перед операцией ставить точку: «.*», «./», «.^», иначе будут применяться
10