Для действительных матриц, операция транспонирования меняет взаимное местоположение элементов aij aji, симметричных относительно главной диагонали. Для обозначения транспонирования MATLAB использует одиночную кавычку (апостроф) (‘). Для нашей симметричной матрицы Паскаля A’ = A. Однако матрица В не является симметричной и поэтому:
X = B'
X =
8 |
3 |
4 |
1 |
5 |
9 |
6 |
7 |
2 |
Транспонирование превращает вектор-строку в вектор-столбец и наоборот. Если x и y оба являются действительными векторами, то произведение x*y не определено, но оба произведения x'*y и y'*x дают один и тот же скаляр. Это соотношение используется так часто, что имеет три различных имени: скалярное произведение, внутреннее произведение и точечное произведение.
Для комплексного вектора или матрицы, z, величина z' обозначет комплексно-сопряженное транспонирование. В MATLAB-е предусмотрены также поэлементные операции над элементами массивов. Признаком поэлементных операций служит точка после обозначения переменной. Так, транспонирование элементов матрицы z как массива чисел обозначается z.', по аналогии с другими операциями на массивами чисел. Например, если
z = [1+2i 3+4i]
то
z' =
1-2i
3-4i
тогда как z.' есть
z.' =
1+2i
3+4i
Для комплексных векторов, два скалярных произведения x'*y и y'*x комплексно сопряжены,
а скалярное произведение x'*x комплексного вектора с самим собой есть действительное число.
Для произведения двух совместимых А и В матриц в MATLAB–е достаточно записать в командной строке С = А*В . MATLAB самостоятельно проверит совместимость размерностей матриц и выдаст результат. Если матрицы несовместимы, выдается сообщение об ошибке:
Error using ==> *
Inner matrix dimensions must agree.
26
Индексирование (Subscripts)
Для краткого рассмотрения некоторых основных понятий, связанных с индексированием дву-мерных массивов (матриц), введем «волшебную» матрицу 4-го порядка:
F = magic(4)
F =
16 |
2 |
3 |
13 |
5 |
11 |
10 |
8 |
9 |
7 |
6 |
12 |
4 |
14 |
15 |
1 |
Элемент в i-ой строке и j-ом столбце матрицы F обозначается через F (i,j). Например, F (4,2) есть число в четвертой строке и втором столбце. Для нашего волшебного квадрата, F(4,2) есть 14. Таким образом, можно вычислить сумму элементов четвертого столбца матрицыF, напечатав
F (1,4) + F (2,4) + F (3,4) + F (4,4)
Это дает ответ
ans =
34
но, как мы увидим в дальнейшем, не является самым элегантным способом суммирования элементов одного столбца.
Имеется также возможность обращения к элементам матрицы при помощи одного индекса, F(k). Это обычный способ обращения к элементам векторов (строк или столбцов). Но в MATLAB-е такой способ индексирования можно применить и к двумерным(в общем случае
– многомерным) матрицам, так как система MATLAB хранит все многомерные массивы чисел в виде одного длинного вектора-столбца, сформированного из столбцов исходной матрицы. Так, для нашего волшебного квадрата, F (8) есть другой способ обращения к начени14 хранящемуся в F (4,2).
Если вы попытаетесь использовать элемент, находящийся вне размеров матрицы, это приведет к сообщению об ошибке
t = F (4,5)
(Индекс превышает размерность матрицы)
С другой стороны, если вы попытаетесь запомнить какое-либо число вне размеров матрицы, размер будет соответствующим образом увеличен увеличен, чтобы принять новое значение.
|
X = A; |
|
||
X(4,5) |
= 17 |
|
||
X = |
|
|
|
|
16 |
3 |
2 |
13 |
0 |
5 |
0 |
11 |
8 |
0 |
9 |
6 |
7 |
12 |
0 |
4 |
15 |
14 |
1 |
17 |
27
Двоеточие, : , является одним из наиболее важных операторов MATLAB-а. Оно встречается в нескольких разных формах. Выражение 1:10 есть вектор-строка, содержащий целвые числа от 1 до 10:
1 2 3 4 5 6 7 8 9 10
Чтобы получить неединичное приращение, нужно задать приращение. Например,
есть |
|
100 : -7 : 50 |
|
|
|||
|
|
|
|
|
|
|
|
100 |
93 |
86 |
79 |
72 |
65 |
58 |
51 |
а |
|
|
|
|
|
|
|
0 : pi/4 : pi
есть
0 0.7854 1.5708 2.3562 3.1416
Индексы, содержащие двоеточия, допускают обращение к частям матриц. Так, выражение
F (1:k, j)
дает первые k элементов j-го столбца матрицы F. То есть,
sum(F (1:4, 4))
вычисляет, как и в примере выше, сумму элементов 4-го столбца. Но есть еще лучший путь. Двоеточие само по себе означает обращение всемко элементам строки или столбца матрицы, а зарезервированное слово end есть обращение кпоследним строке или столбцу матрицы (в случае векторов-строк или столбцов словоend есть обращение кпоследнему элементу векто-ра). Значит,
sum(F (:, end))
вычисляет сумму элементов последнего столбца матрицы F . Ответ: ans = 34. Почему магическая сумма для волшебного квадрата 4 х 4 равна 34 ? Дело в том, что если целые числа от 1 до 16 (число элементов матрицы размера 4 х 4) упорядочены в четыре группы с равными сум-мами элементов, эта сумма должна быть равна
sum(1:16)/4
что, конечно, дает ans = 34.
Единичная матрица, нулевая матрицы и матрица из единиц. Двумерные массивы случайных чисел
Единичная матрица, то есть матрица имеющая единицы на главной диагонали и нулевые остальные элементы, в MATLAB-е обозначается eye, причем eye(n) есть единичная квадратная матрица размера nxn, eye(m,n) - прямоугольная единичная матрица размераmxn, а eye(size(A)) есть единичная матрица, имеющая размерность матрицы A. Например,
I = eye(3)
28
I =
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
I = eye (3,5)
I =
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
I = eye (4,2)
I =
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Нулевая матрица, то есть матрица состоящая из нулей (массив нулей), в MATLAB-е обозначается zeros, причем zeros (n) есть нулевая квадратная матрица размераnxn, zeros (m,n) - прямоугольная нулевая матрица размера mxn, а zeros (size(A)) есть нулевая матрица имеющая размерность матрицы A.
Z = zeros(2,4)
Z =
0 0 0 0
0 0 0 0
Наконец, матрица состоящая из единиц(массив единиц), в MATLAB-е обозначается ones, причем ones (n) есть квадратный массив единиц размераnxn, ones (m,n) – прямоугольный массив единиц размераmxn, а ones (size(A)) есть массив единиц, имеющий размерность матрицы A.
S = 5*ones(3, 3)
S =
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
Аналогично, функция rand дает возможность сформировать соответствующие массивы случайных чисел в диапазоне от 0 до 1, распределенных по равномерному закону, а функция randn – по нормальному закону.
N = fix(10*rand(1,10))
N =
4 9 4 4 8 5 2 6 8 0
29
R = randn(4,4)
R =
1.0668 0.2944 -0.6918 -1.4410
0.0593 -1.3362 0.8580 0.5711 -0.0956 0.7143 1.2540 -0.3999 -0.8323 1.6236 -1.5937 0.6900
Одной из важнейших задач в технических приложениях и расчетах является задача решения систем линейных уравнений. В матричных обозначениях, данная задача может быть сформулирована следующим образом. При заданных двух матрицахA and B, существует ли такая единственная матрица X, что AX = B или XA = B?
Для наглядности рассмотрим одномерный пример. Имеет ли уравнение
7x = 21
единственное решение? Ответ, разумеется, да. Это уравнение имеет единственное решение x = 3. Решение может быть легко получено обычным делением.
x = 21/7 = 3
Решение при этом обычно не состоит в определении обратной величины от числа 7 (т.е. величины 7-1 = 0.142857…), и последующим умножением числа 7-1 на число 21. Это было бы более трудоемко и, если число 7-1 представлено конечным числом цифр(разрядов), менее точно. Аналогичные рассуждения применимы и к системам линейных алгебраически уравнений с более чем одной неизвестной; MATLAB решает такие уравнения без вычисле-
ния обратной матрицы. Хотя это и не является стандартным математическим обозначением, система MATLAB использует терминологию, связанную с обычным делением в одномерном случае, для описания общего случая решения совместной системынескольких линейных уравнений. Два символа деления / (косая черта (по английски - slash)) и \ (обратная косая черта (backslash)) используются в двух случаях, когда неизвестная матрица появляется слева или справа от матрицы коэффициентов:
X = A\B обозначает решение матричного уравнения AX = B
X = B/A обозначает решение матричного уравнения XA = B.
Вы можете представлять себе это как процесс«деления» обеих частей уравнения AX = B или XA = B на A. Матрица коэффициентов A всегда находится в «знаменателе».Условие совместимости размерностей для X = A\B требует чтобы две матрицы A и B имели одинаковое число строк. Решение X тогда имеет такое же число столбцов как и B, а число ее строк будет равно числу столбцов A. Для X = B/A, строки и столбцы меняются ролями. На практике, линейные уравнения в виде AX = B встречаются более часто, чем в виде XA = B. Следовательно, обратная наклонная черта \ используется более часто, чем прямая / . Поэтому, в оставшейся части данного раздела мы ограничимся рассмотрением оператора \ ; соответствующие свойства оператора / можно вывести из тождества
(B/A)' = (A'\B')
30