Материал: MATLAB. Довідник для користувача

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Для действительных матриц, операция транспонирования меняет взаимное местоположение элементов 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)

Index exceeds matrix dimensions

(Индекс превышает размерность матрицы)

С другой стороны, если вы попытаетесь запомнить какое-либо число вне размеров матрицы, размер будет соответствующим образом увеличен увеличен, чтобы принять новое значение.

 

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

Двоеточие (Colon)

Двоеточие, : , является одним из наиболее важных операторов 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