19. Формирование векторов и матриц

 

Формирование векторов и матриц

Особенности задания векторов и матриц


Описанные выше простые правила вычислений распространяются и на гораздо более сложные вычисления, которые (при использовании обычных языков программирования типа Бейсик или Паскаль) требуют составления специальных программ. MATLAB — система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами. При этом она по умолчанию предполагает, что каждая заданная переменная — это вектор, матрица или массив. Все определяется конкретным значением переменной. Например, если задано Х=1, то это значит, что X —это вектор с единственным элементом, имеющим значение 1. Если надо задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках, разделяя пробелами. Так, например, присваивавание
» V=[l 2 3] 

V=
1   2   3
задает вектор V, имеющий три элемента со значениями 1, 2 и 3. После ввода вектора система выводит его на экран дисплея.
Задание матрицы требует указания нескольких строк. Для разграничения строк используется знак ; (точка с запятой). Этот же знак в конце ввода предотвращает вывод матрицы или вектора (и вообще результата любой операции) на экран дисплея. Так, ввод
» М=[1 2 3: 4 5 6; 7 8 9];
задает квадратную матрицу, которую можно вывести:
» M
M =
1     2     3

4     5     6

7     8     9
Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции, например:
» V= [2+2/(3+4) exp(5) sqrt(l0)]: 

» V 

V =

2.2857     148.4132     3.1623
Для указания отдельного элемента вектора или матрицы используются выражения вида V(1) или M(i. j). Например, если задать
» М(2. 2)
arts= 5
то результат будет равен 5. Если нужно присвоить элементу M(i. j) [ В тексте программ MATLAB лучше не использовать i и j как индексы, так как i и j — обозначение квадратного корня из -1. Но можно использовать I и J. — Примеч. ред. ] новое значение х, следует использовать выражение
M(ij)=x
Например, если элементу М(2, 2) надо присвоить значение 10, следует записать 

» М(2. 2)=10
Выражение М( i) с одним индексом дает доступ к элементам матрицы, развернутым в один столбец. Такая матрица образуется из исходной, если подряд выписать ее столбцы.
Следующий пример поясняет такой доступ к элементам матрицы М:
» М=[1 2 3: 4 5 6: 7 8 9] 

М =
1     2     3
4     5     6
7     8     9 

» М(2)
ans =
4
» M(8) 

ans =
6
» M(9) 

ans =
9
» М(5)=100; 

» М 

М =
1     2     3
4     100   6
7     8     9
Возможно задание векторов и матриц с комплексными элементами, например:
» i=sqrt(-l):
» СМ =[1 2: 3 4] + i*[5 6: 7 8]
или
» СМ - [1+5*1 2+6*1: 3+7*1 4+8*1]
Это создает матрицу:
CM=
1.0000 + 5.00001     2.0000 + 6.00001 

3.0000 + 7.00001     4.0000 + 8.00001
Наряду с операциями над отдельными элементами матриц и векторов система позволяет производить операции умножения, деления и возведения в степень сразу над всеми элементами, т. е. над массивами. Для этого перед знаком операции ставится точка. Например, оператор * означает умножение для векторов или матриц, а оператор .* —поэлементное умножение всех элементов массива. Так, если М — матрица, то М.*2 даст матрицу, все элементы которой умножены на скаляр — число 2. Впрочем, для умножения матрицы,на скаляр оба выражения — М*2 и М.*2 — оказываются эквивалентными.
Имеется также ряд особых функций для задания векторов и матриц. Например, функция magic(n) задает магическую матрицу размера пхп, у которой сумма всех столбцов, всех строк и даже диагоналей равна одному и тому же числу:
» 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(1.2)+M(2.2)+M(3.2)+M(4.2)
ans= 34

Уже сама по себе возможность создания такой матрицы с помощью простой функции magic заинтересует любителей математики. Но векторных и матричных функций в системе множество, и мы их детально рассмотрим в дальнейшем. Напомним, что для стирания переменных из рабочей области памяти служит команда clear.