Формирование векторов и матриц
Особенности задания векторов и матриц
MATLAB — система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами — в том числе многомерными.
При этом она по умолчанию предполагает, что каждая заданная переменная — это вектор, матрица или массив. Все определяется конкретным значением переменной. Например, если задано х=1, то это значит, что X — это вектор с единственным элементом, имеющим значение 1. Если надо задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках, разделяя пробелами. Так, например, присваивание
» V= [ 1 2 3]
V =
12 3
задает вектор V, имеющий три элемента со значениями 1, 2 и 3. После ввода вектора система выводит его на экран дисплея.
Задание матрицы требует указания нескольких строк. Для разграничения строк используется знак ; (точка с запятой). Этот же знак в конце ввода предотвращает вывод матрицы или вектора (и вообще любой операции) на экран дисплея. Так, ввод
» М= [ 1 2 3; 4 5 6; 7 8 9];
задает квадратную матрицу, которую можно вывести:
» м
м =
- 12 3
- 4 5 6
- 7 8 9
Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции, например:
» V= [2+2/(3 + 4) exp (5) sqrt(10)];
» V
V =
2.2857 148.4132 3.1623
Для указания отдельного элемента вектора или матрицы используются выражения вида v(i) илим(1, j ). Например, если задать
» М(2, 2) ans =
5
то результат будет равен 5. Если нужно присвоить элементу м (i, j) новое значение х, следует использовать выражение
М(ij)=х
Например, если элементу м(2, 2) надо присвоить значение 10, следует записать
» М(2, 2)=10
Вообще говоря, в тексте программ MATLAB лучше не использовать буквы i и j как индексы, так как i и j — обозначение квадратного корня из —1. Но можно использовать I и J.
Выражение м (i) с одним индексом дает доступ к элементам матрицы, развернутым в один столбец. Такая матрица образуется из исходной, если подряд выписать ее столбцы. Следующий пример поясняет такой доступ к элементам матрицы м:
» М=[1 2 3; 4 5 6; 7 8 9]
М =
- 12 3
- 4 5 6
- 7 8 9
» М(2)
ans =
4
» М(8)
ans =
6
» М(9)
ans =
9
» М(5)=100;
» М
М =
- 12 3
- 4 100 6
- 7 8 9
Возможно задание векторов и матриц с комплексными элементами, например:
» i=sqrt(-1);
» СМ = [1 2; 34]+ i*[5 6; 7 8]
или
» СМ = [l+5*i 2+6*1; 3 + 7*i 4+8*i]
Это создает матрицу:
см =
- 1.0000 + 5.0000i 2.0000 + 6.00001
- 3.0000 + 7.00001 4.0000 + 8.00001
Наряду с операциями над отдельными элементами матриц и векторов система позволяет производить операции умножения, деления и возведения в степень сразу над всеми элементами, то есть над массивами. Для этого перед знаком операции ставится точка. Например, оператор * означает умножение для векторов или матриц, а оператор . * — поэлементное умножение всех элементов массива. Так, если м — матрица, то м. *2 даст матрицу, все элементы которой умножены на скаляр — число 2. Впрочем, для умножения матрицы на скаляр оба выражения — м*2 и м.*2 — оказываются эквивалентными.
Имеется также ряд особых функций для задания векторов и матриц. Например, функция magic (п) задает магическую матрицу размера п х п, у которой сумма всех столбцов, всех строк и даже диагоналей равна одному и тому же числу:
» M=magic(4) м =
- 16 2 3 13
- 5 11 10 8
- 9 7 6 12
- 4 14 15 1
>> sum(M)
ans =
34 34 34 34
>> sum(M')
ans =
34 34 34 34
» sum(diag(M))
ans =
34
» M(l,2)+M(2,2)+M(3,2)+M(4,2)
ans =
34
Уже сама по себе возможность создания такой матрицы с помощью простой функции magic заинтересует любителей математики. Но векторных и матричных функций в системе множество, и мы их детально рассмотрим в дальнейшем. Напомним, что для стирания переменных из рабочей области памяти служит команда clear.
Объединение малых матриц в большую
Описанный способ задания матриц позволяет выполнить операцию конкатенации — объединения малых матриц в большую. Например, создадим вначале магическую матрицу размера 3x3:
» A=magic(3)
А =
- 8 16
- 3 5 7
- 4 9 2
Теперь можно построить матрицу, содержащую четыре матрицы:
> В=[А |
. А+16; |
А+32 |
А+16] |
||
8 |
1 |
6 |
24 |
17 |
22 |
3 |
5 |
7 |
19 |
21 |
23 |
4 |
9 |
2 |
20 |
25 |
18 |
40 |
33 |
38 |
24 |
17 |
22 |
35 |
37 |
39 |
19 |
21 |
23 |
36 |
41 |
34 |
20 |
25 |
18 |
Полученная матрица имеет уже размер 6x6. Вычислим сумму ее столбцов:
» sum(В) ans =
126 126 126 126 126 126
Любопытно, что она одинакова для всех столбцов. А для вычисления суммы строк используем команду
» sum(В.')
ans =
78 78 78 174 174 174
Здесь запись в. ' означает транспонирование матрицы в, то есть замену строк столбцами. На этот раз сумма оказалась разной. Это отвергает изначально возникшее предположение, что матрица в тоже является магической. Для истинно магической матрицы суммы столбцов и строк должны быть одинаковыми:
» D=magic(6) D =
35 |
1 |
6 |
26 |
19 |
24 |
3 |
32 |
7 |
21 |
23 |
25 |
31 |
9 |
2 |
22 |
27 |
20 |
8 |
28 |
33 |
17 |
10 |
15 |
30 |
5 |
34 |
12 |
14 |
16 |
4 |
36 |
29 |
13 |
18 |
11 |
» sum(D)
ans =
111 |
111 |
111 |
111 |
111 |
111 |
» sum(D.') |
|||||
ans = |
|||||
111 |
111 |
111 |
111 |
111 |
111 |
Более того, для магической матрицы одинаковой является и сумма элементов по основным диагоналям (главной диагонали и главной антидиагонали).
Удаление столбцов и строк матриц
Для формирования матриц и выполнения ряда матричных операций возникает необходимость удаления отдельных столбцов и строк матрицы. Для этого используются пустые квадратные скобки [ ]. Проделаем это с матрицей м:
» М= [ 1 2 3; 4 5 6; 789]
М =
- 12 3
- 4 5 6
- 7 8 9
Удалим второй столбец используя оператор : (двоеточие):
» М(:,2) = [ ] м =
- 1 3
- 4 6
- 7 9
А теперь, используя оператор : (двоеточие), удалим вторую строку:
» М(2, :) = [ ]
М =
- 1 3
- 7 9