Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОВИ_ЛР_2012

.pdf
Скачиваний:
102
Добавлен:
02.02.2015
Размер:
4.11 Mб
Скачать

можно ввести при помощи команды:

» С = [[3; 4] [-1; 2] [7; 0]]

С =

3 -1 7

4 2 0

Посмотрите переменные рабочей среды, набрав в командной строке

whos:

А2x3 48 double array

В3x3 72 double array

С2x3 48 double array

Итак, в рабочей среде содержится три матрицы, две прямоугольные и одна квадратная.

3.2.2. Обращение к элементам матриц в пакете MATLAB

Доступ к элементам матриц осуществляется при помощи двух индексов номеров строки и столбца, заключенных в круглые скобки,

например

» С(2, 3)

ans =

0

Элементы матриц могут входить в состав выражений:

» С(1, 1) + С(2, 2) + С(2, 3)

51

ans =

5

Расположение элементов матрицы в памяти компьютера определяет еще один способ обращения к ним. Матрица А размера m на n хранится в виде вектора длины mn, в котором элементы матрицы расположены один за другим по столбцам

[А(1,1) А(2,1)...А(m,1)...А(1,n) А(2,n)...А(m,n)].

Для доступа к элементам матрицы можно использовать один индекс,

задающий порядковый номер элемента матрицы в векторе.

Матрица С, определенная в предыдущем подразделе, содержится в векторе

[C(1,1) C(2,1) C(1,2) С(2,2) С(1,3) С(2,3)]

который имеет шесть компонент. Доступ к элементам матрицы осуществляется следующим образом:

» С(1)

ans =

3

» С(5)

ans =

7

52

3.2.3. Операции над матрицами в пакете MATLAB: сложение,

вычитание, умножение, транспонирование и возведение в степень

При использовании матричных операций следует помнить, что для сложения или вычитания матрицы должны быть одного размера, а при перемножении число столбцов первой матрицы обязано равняться числу строк второй матрицы. Сложение и вычитание матриц, так же как чисел и векторов, осуществляется при помощи знаков плюс и минус. Найдите сумму и разность матриц С и А, определенных выше:

» S = А+С

 

S =

 

 

6

0

6

6

6

3

» R = С-А

 

R =

 

 

0

-2

8

2

-2

-3

Следите за совпадением размерности, иначе получите сообщение об ошибке:

» S = А+В

??? Error using ==>

Matrix dimensions must agree.

Для умножения матриц предназначена звездочка:

» Р = С*В

53

P =

-25 9 11

20 26 -4

Умножение матрицы на число тоже осуществляется при помощи звездочки, причем умножать на число можно как справа, так и слева:

» Р = А*3

Р =

9 3 -3

6 12 -3

» Р = 3*А

Р =

9 3 -3

6 12 9

Транспонирование матрицы, так же как и вектора, производится при помощи .', а символ ' означает комплексное сопряжение. Для вещественных матриц эти операции приводят к одинаковым результатам:

» В' ans =

4 2 -5

3 7 1 -1 0 2

» В.' ans =

4 2 -5

3 7 1 -1 0 2

54

Замечание 1.

Если матрица A aik , i 1, n, k 1, m, есть произвольная матрица размера n m, то матрица, транспонированная по отношению к А, есть матрица размера m n: A aki , k 1, m, i 1, n . Таким образом, строки матрицы A становятся столбцами матрицы A , а столбцы матрицы A

становятся строками матрицы A .

Комплексно-сопряженная матрица получается из исходной в два этапа: выполняется транспонирование исходной матрицы, а затем все комплексные числа заменяются на комплексно-сопряженные.

Сопряжение и транспонирование матриц, содержащих комплексные числа, приведут к созданию разных матриц:

» К = [l-i, 2+3i; 3-5i, l-9i]

 

К = 1.0000 – 1.0000i

2.0000 + 3.0000i

3.0000

– 5.0000i

1.0000

– 9.0000i

» К '

 

 

 

ans =

 

 

 

1.0000

+ 1.0000i

3.0000

+ 5.0000i

2.0000

– 3.0000i

1.0000

+ 9.0000i

» К.'

 

 

 

ans =

 

 

 

1.0000

- 1.0000i

3.0000

- 5.0000i

2.0000

+ 3.0000i

1.0000

- 9.0000i

Замечание 2.

При вводе вектор-строк их элементы можно разделять или пробелами, или запятыми. При вводе матрицы К применены запятые для более наглядного разделения комплексных чисел в строке.

55

Возведение квадратной матрицы в целую степень производится с использованием оператора ^:

» В2 = В^2

B2 =

27 32 -6

22 55 -2 -28 -6 9

Проверьте полученный результат, умножив матрицу саму на себя.

Убедитесь, что вы освоили простейшие операции с матрицами в

MATLAB. Найдите значение следующего выражения

(A + С) В3 (A С)Т.

Учтите приоритет операций, сначала выполняется транспонирование, потом возведение в степень, затем умножение, а

сложение и вычитание производятся в последнюю очередь.

» (А+С)*В^3*(А-С)' ans =

1848 1914

10290 3612

3.2.4. Умножение матриц и векторов

Вектор-столбец или вектор-строка в MATLAB являются матрицами,

у которых один из размеров равен единице, поэтому все вышеописанные операции применимы и для умножения матрицы на вектор-столбец или вектор-строки на матрицу. Например, вычисление выражения

56

 

2

0

1

8

[1 3 2]

 

4

8

1

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

9

2

 

4

 

 

 

 

 

 

 

можно осуществить следующим образом:

»a = [1 3 -2];

»B = [2 0 1; -4 8 -1; 0 9 2];

»c = [-8; 3; 4];

»a*B*c

ans = 74

3.2.5.Решение систем линейных уравнений

Вматематике ничего не говорится про деление матриц и векторов,

однако в MATLAB символ \ используется для решения систем линейных уравнений. Решим систему из трех уравнений с тремя неизвестными:

1.2x1 0.3x2 0.2x3 1.3;

 

0.5x1 2.1x2 1.3x3 3.9;

 

 

0.9x 0.7x

5.6x 5.4.

 

1

2

3

Введем матрицу коэффициентов системы в массив A, а вектор правой части системы в массив b. Решим систему при помощи при помощи символа \:

» x = A\b

x =

1.0000

57

1.0000

1.0000

Проверьте правильность ответа, умножив матрицу коэффициентов системы A на вектор-столбец x.

3.2.6. Блочные матрицы

Очень часто в приложениях возникают так называемые блочные матрицы, т.е. матрицы, составленные из непересекающихся подматриц

(блоков). Рассмотрим вначале конструирование блочных матриц. Введите матрицы:

1

4

2

0

3

3

8

9

A

1

4

 

, B

0

5

 

, C

3

3

 

, D

1

10

 

 

 

 

 

 

 

 

 

A

B

и создайте из них блочную матрицу K

.

C

D

Учитывая, что матрица К состоит из двух строк, в первой строке матрицы А и B, а во второй С и D, блочную матрицу можно сформировать следующим образом:

» К = [А В; С D]

K =

-1

4

2

0

-1

4

0

5

3

-3

8

9

-3

3

1

10

58

Блочную матрицу можно получить и другим способом, если считать,

что матрица К состоит из двух столбцов, в первом матрицы А и С, а во втором В и D:

» К = [[А; С] [В; D]]

Обратной задачей к конструированию блочных матриц является задача выделения блоков. Выделение блоков матриц осуществляется индексацией при помощи двоеточия. Введите матрицу

1

2

0

2

 

4

10

12

5

 

 

 

P

0

11

10

5

 

 

 

 

 

 

 

 

9

2

3

5

 

 

 

и затем выделите подматрицу с элементами a42, a43, a52, a53 , задав номера строк и столбцов при помощи двоеточия:

»Р1 = Р(2:3,2:3)

Р1 =

1012

1110

Для выделения из матрицы столбца или строки (то есть массива, у

которого один из размеров равен единице) следует в качестве одного из индексов использовать номер столбца или строки матрицы, а другой индекс заменить двоеточием без указания пределов. Например, запишите вторую строку матрицы Р в вектор р

»p = P(2, :)

59

p =

4 10 12 5

При выделении блока до конца матрицы можно не указывать ее размеры, а использовать элемент end:

»p = Р(2, 2:end) p =

10 12 5

3.2.7. Удаление строк и столбцов

В MATLAB парные квадратные скобки [ ] обозначают пустой массив, который, в частности, позволяет удалять строки и столбцы матрицы. Для удаления строки следует присвоить ей пустой массив.

Удалите, например, первую строку квадратной матрицы:

»М =[2 0 3; 1 1 4; 6 1 3];

»M(1,:)=[];

»M

M =

1 1 4

6 1 3

Обратите внимание на соответствующее изменение размеров массива, которое можно проверить при помощи size:

» size(M)

ans =

2 3

60