- •Лабораторная работа №1
- •1. Графический интерфейс пользователя matlab
- •2. Структура окна Command Window
- •3. Браузер рабочей области – окно Workspace.
- •4. Интерфейс редактора м-файлов
- •5. Matlab в роли суперкалькулятора.
- •5.3. Действия над матрицами
- •6. Основные объекты matlab
- •7. Константы и системные переменные
- •8. Текстовые комментарии
- •9. Переменные и присваивание им значений
- •10. Операторы и функции
- •11. Функции комплексного аргумента
- •12. Погрешность измерения величин
- •Контрольные вопросы
- •Практические задания
5.3. Действия над матрицами
5.3.1. Ввод вектора
Две записи для вектора – V = [l 2 3 4] и V = [l, 2, 3, 4] – являются идентичными. Список заключается в квадратные скобки. Для выделения п-го элемента вектора V используется выражение V(n). Оно задаёт соответствующую индексированную переменную.
5.3.2 Ввод матрицы
Матрица задаётся в виде ряда векторов, представляющих е` строки и заключённых в квадратные скобки. Для разделения элементов векторов используется пробел или запятая, а для отделения одного вектора от другого – точка с запятой. Для выделения отдельного элемента матрицы М используется выражение вида M(j,i), где М – имя матрицы, j – номер строки и i – номер столбца.
Для ввода матрицы нужно:
>> М = [l, 2; 4, 5] или
>> М = [l, 2; 4, 5] или
>> М = [l, 2 <ENTER>
4 5] <ENTER>
M =
1 2
4 5
>> M (2,1) – индексированная переменная
ans=
4
5.3.3. Выполнение простых векторных операций
В примере, рассмотренном ниже, задан четырёхэлементный вектор V со значениями элементов 1, 2, 3 и 4. Далее вычисляются функции синуса и экспоненты с аргументом в виде вектора, а не скаляра.
>> u = [1 2 3 4]
u =
1 2 3 4
>> sin(u)
ans =
0.8415 0.9093 0.1411 -0.7568
>> exp(u)
ans =
2.7183 7.3891 20.0855 54.5982
>> u*3
ans =
3 6 9 12
>> u.^2
ans =
1 4 9 16
В языках программирования высокого уровня вычисления с массивами осуществляются поэлементно, поэтому в соответствующих процедурах приходится программировать вычисление выражений для каждого элемента массива. В MATLAB этого не требуется, так как в М-языке имеются групповые операции, выполняемые сразу над всем массивом. В частности, в М-языке MATLAB можно производить групповые вычисления над массивами, используя обычные математические функции, которые в традиционных языках программирования работают только со скалярными аргументами. Например, для вычисления таблицы значений функции косинус в равноотстоящих точках отрезка [0; π/2], отстоящих друг от друга на расстоянии 0,01 достаточно использовать всего две команды
>> х = 0:0.01 : pi / 2;
>> y = cos (х) ;
>> whos x у
Name Size Bytes Class
x 1x158 1264 double array
у 1x158 1264 double array
Grand total is 316 elements using 2528 bytes
Аналогично вычисляются функции от двумерных массивов:
>> b= [0 pi / 6 ; pi / 4 pi / 2 ; 5 * pi / 6 3 * pi / 4]
b =
0 0.5236
0.7854 1.5708
2.6180 2.3562
>> sin (b)
ans =
0 0.5000
0.7071 1.0000
0.5000 0.7071
5.3.4 Создание матриц
Простейшей операций с матрицей является её создание. Для создания строки необходимо указать его имя, знак равенства и в квадратных скобках через запятую или через пробел перечислить значения элементов:
>> А=[1 2 3 4 5];
В случае если необходимо создать столбец чисел, то в качестве разделителя выступает символ точка с запятой:
>> B=[1 ; 3 ; 5 ; 7];
Для создания квадратной или прямоугольной матрицы понадобится чередовать оба этих способа.
>> С=[1 2 3 ; 4 5 6 ; 7 8 9];
5.3.5 Создание матриц специального вида.
Для генерации векторов пользователю предоставляется следующая команда: <Имя вектора>=<Начальное значение>:<Шаг>:<Конечное значение>
>> Х=6 : 0.2 : 26;
В результате получиться вектор X следующего вида:
6 |
6.2 |
6.4 |
6.6 |
… |
25.6 |
25.8 |
26 |
В математике часто встречаются матрицы специального вида. Ниже приведён ряд из них:
Единичная матрица, рис. 8.а. В единичной матрице все элементы равны нулю, кроме элементов стоящих на главной диагонали (матрица является квадратной). Для создания единичной матрицы Вам необходимо подать команду <Имя матрицы>=eye(<Размер>);
>> a = eye(4);
Матрица со всеми единицами, рис. 8б. Эта матрица содержит единицы во всех ячейках. Для создания матрицы необходимо указать <Имя матрицы>=ones(<Кол-во строк>, <Кол-во столбцов>);
>> b = ones(3, 4);
Нулевая матрица, рис. 8в. Эта матрица содержит во всех своих ячейках одни нули. Для создания необходимо выполнить следующую команду: <Имя матрицы>=zeros(<Кол-во строк>, <Кол-во столбцов>);
>> c =zeros(4, 2);
Случайная матрица, рис. 8г. Все значения этой матрицы получаются с генератора случайных чисел. Для создания такой матрицы необходимо дать следующую команду: <Имя матрицы>=rand(<Кол-во строк>, <Кол-во столбцов>);
>> d =rand(3, 4);
1 |
0 |
0 |
0 |
|
1 |
1 |
1 |
1 |
|
0 |
0 |
|
5 |
6 |
|
|
|
|
|
0 |
1 |
0 |
0 |
|
1 |
1 |
1 |
1 |
|
0 |
0 |
|
4 |
1 |
|
|
|
|
|
0 |
0 |
1 |
0 |
|
1 |
1 |
1 |
1 |
|
0 |
0 |
|
0 |
3 |
|
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
|
|
0 |
0 |
|
|
|
|
|
|
|
|
|
а |
|
|
|
|
б |
|
|
|
|
в |
|
|
г |
|
|
|
|
|
Рис. 8. Специальные матрицы.
5.3.6 Доступ к ячейкам матрицы.
Для доступа к ячейкам матрицы необходимо указать имя матрицы, номер строки и номер столбца. Нумерация строк и столбцов ведётся с ЕДИНИЦЫ! Номера пишутся в круглых скобках. Общий формат записи: <Имя массива>(<Номер строки>, <Номер столбца>);
>> d(3,2)
ans =
2
>> d(3,1) = 9;
>> d
ans =
5 6
4 1
9 3
5.3.7 Умножение, деление матрицы на скаляр.
В математики для всех матриц определена операция умножения (деления) матрицы на скаляр (число) – «.*» («./»). Все значения матрицы в этом случае умножаются (делятся) на это число.
A(1,1) |
A(1,2) |
A(1,3) |
|
|
|
A(1,1).*r |
A(1,2).*r |
A(1,3).*r |
A(2,1) |
A(2,2) |
A(2,3) |
.* |
r |
= |
A(2,1).*r |
A(2,2).*r |
A(2,3).*r |
A(3,1) |
A(3,2) |
A(3,3) |
|
|
|
A(3,1).*r |
A(3,2).*r |
A(3,3).*r |
5.3.8 Сложение, вычитание скаляра из матрицы.
Кроме операции умножения матрицы на скаляр, для матрицы и скаляра определены операции сложение «+» и вычитания «–». Действия так же выполняются с каждой ячейкой матрицы отдельно.
5.3.9 Сложение, вычитание матриц.
Эта операция допустима только с матрицами одинакового размера. При выполнении операции действие выполняется с соответствующими друг другу ячейками. Пример:
а(1,1) |
а(1,2) |
а(1,3) |
|
b(1,1) |
b(1,2) |
b(1,3) |
|
а(1,1)+ b(1,1) |
а(1,2)+ b(1,2) |
а(1,3)+ b(1,3) |
а(2,1) |
а(2,2) |
а(2,3) |
+ |
b(2,1) |
b(2,2) |
b(2,3) |
= |
а(2,1)+ b(2,1) |
а(2,2)+ b(2,2) |
а(2,3)+ b(2,3) |
а(3,1) |
а(3,2) |
а(3,3) |
|
b(3,1) |
b(3,2) |
b(3,3) |
|
а(3,1)+ b(3,1) |
а(3,2)+ b(3,2) |
а(3,3)+ b(3,3) |
5.3.10 Произведение матриц.
При выполнении операции перемножения матриц выполняется последовательное умножение строки на столбец. При этом количество столбцов в первой матрице должно равняться количеству строк во второй матрице. Матрица результата будет иметь столько же строк, сколько и в первой матрице, и количество столбцов равное количеству столбцов во второй матрице.
A(1,1) |
A(1,2) |
A(1,3) |
|
B(1,1) |
B(1,2) |
|
A(1,1)*B(1,1)+ A(1,2)*B(2,1)+ A(1,3)*B(3,1) |
A(1,1)*B(1,2)+ A(1,2)*B(2,2)+ A(1,3)*B(3,2) |
A(2,1) |
A(2,2) |
A(2,3) |
* |
B(2,1) |
B(2,2) |
= |
A(2,1)*B(1,1)+ A(2,2)*B(2,1)+ A(2,3)*B(3,1) |
A(2,1)*B(1,2)+ A(2,2)*B(2,2)+ A(2,3)*B(3,2) |
|
|
|
|
B(3,1) |
B(3,1) |
|
|
|
