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

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

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
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >