
Матрицы.
MATLAB — это сокращенно матричная лаборатория. Мы не будем вдаваться в подробности матричных операций, лежащих в основе вычислений, а лишь рассмотрим интерактивные возможности MATLAB, облегчающие анализ и синтез систем управления. Начнем с введения основных понятий, поясняющих действия с матрицами и векторами. Основной вычислительной единицей является матрица. Векторы и скаляры можно рассматривать как частные случаи матрицы. Матрица обычно заключается в квадратные скобки, [•]. Элементы столбца отделяются пробелами или занятыми, а строки разделяются точками с запятой или возвратом каретки. Матрицы можно вводить посредством записи нескольких строк, завершая их точкой с запятой и возвратом каретки или просто возвратом каретки. Это очень удобно при вводе больших матриц. Для разделения столбцов можно использовать различные комбинации пробелов и запятых, а для разделения строк — различные комбинации точек с запятой и возврата каретки.
>> A=[1 -4*j sqrt(2)
log(-1) sin(pi/2) cos(pi/3)
asin(0.5) acos(0.8) exp(0.8)]
A =
1.0000 0 - 4.0000i 1.4142
0 + 3.1416i 1.0000 0.5000
0.5236 0.6435 2.2255
Рис. 5. Способ задания матрицы.
При вводе матриц нет необходимости в специальных инструкциях, указывающих их тип или размерность; память под матрицы отводится автоматически. Заметим также, что элементы матриц могут быть комплексными числами либо содержать тригонометрические и элементарные математические функции. К основным матричным операциям относятся сложение, вычитание, транспонирование, возведение в степень и так называемые операции над массивами. Мы не будем рассматривать деление матриц, но имейте в виду, что в MATLAB имеется возможность левостороннего и правостороннего деления матриц.
Матричные операции требуют
согласования размерностей. Это означает,
что при сложении
и вычитании матриц они должны иметь
одинаковую размерность. Если матрица
А имеет размерность
,
а матрица В — размерность
,
то А ± В имеет смысл
только
тогда, когда n
= p,
а m
= r.
Умножение
матриц А* В возможно только в случае т
=
р.
Особым случаем
является умножение матрицы на вектор.
Предположим, что b
есть вектор
(столбец) из p
элементов. Умножение матрицы А размерности
на
вектор b
возможно
только в случае т
=
р.
В
результате будет получен вектор у = А*
b
размерности
.
>> A=[1 3;5 9]; B=[4 -7;10 0];
>> A+B
ans =
5 -4
15 9
>> b=[1;5];
>> A*b
ans =
16
50
>> A'
ans =
1 5
3 9
Рис. 6. Три основные матричные операции: сложение, умножение и транспонирование.
Транспонирование матрицы
обозначается символом апострофа ('). С
помощью операций
транспонирования и умножения можно
получить так называемое внутреннее
произведение
векторов. Поясним это
на примере. Предположим, что w
и v
есть векторы
размерности
.
Тогда их внутреннее
произведение (известное также как
произведение с точкой) находится как
w'
* v.
Внутреннее произведение
двух векторов дает скалярную величину.
Аналогично можно вычислить внешнее
произведение двух
векторов как w
* v'.
Внешнее произведение
двух векторов размерности
дает матрицу размерности
,
ранг
которой равен 1. Основные
матричные операции можно заменить
поэлементными действиями с использованием
периодически действующего предшествующего
оператора. Такие процедуры известны
как операции
над массивами. Операции
сложения и вычитания являются простейшими
и не требуют указания
дополнительного периода, соответствующего
предшествующему оператору. Однако
при умножении, делении и возведении
матрицы в степень обязательно надо
указать
точку перед символом операции.
>> x=[5;pi;sin(pi/2)]; y=[exp(-0.5);-13;pi^2];
>> x'*y
ans =
-27.9384
Рис. 7. Внутреннее произведение двух векторов.
>> x=[5;pi;sin(pi/2)]; y=[exp(-0.5);-13;pi^2];
>> x*y'
ans =
3.0327 -65.0000 49.3480
1.9055 -40.8407 31.0063
0.6065 -13.0000 9.8696
Рис. 8. Внешнее произведение двух векторов.
Используя двоеточие, можно легко сформировать векторы и, как мы скоро увидим, этот прием весьма полезен при построении графиков. Предположим, что мы хотим построить график функции y=sin(x) для x=0; 0.1; 0.2; … 1.0. Первый шаг состоит в том, чтобы получить таблицу значений x и y. Вектор, соответствующий искомой функции, легко получается с помощью операции умножения массивов. После того, как получена таблица значений x и y, построение графика функции y=xsinx не вызывает затруднений.
>> x=[0:0.1:1]';y=x.*sin(x);
>> [x y]
ans =
0 0
0.1000 0.0100
0.2000 0.0397
0.3000 0.0887
0.4000 0.1558
0.5000 0.2397
0.6000 0.3388
0.7000 0.4510
0.8000 0.5739
0.9000 0.7050
1.0000 0.8415
Рис. 9. Формирование векторов с использованием двоеточия.