Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3324_KT / УМК_Красноярск_Учебное пособие_МатЛаб_МатКад.pdf
Скачиваний:
195
Добавлен:
28.03.2015
Размер:
5.19 Mб
Скачать

6.БЛОЧНЫЕ МАТРИЦЫ

6.1.Работасблочнымиматрицами

Блочные матрицы – это матрицы, составленные из непересекающихся подматриц (блоков). Соответствующие размеры блоков должны совпадать.

6.1.1. Конструированиеблочныхматриц

Введите матрицы

1

4

,

2

0

,

 

3

3

,

8

9

А =

 

 

 

В =

 

 

 

С =

 

 

 

D =

 

 

 

 

1

4

 

 

 

0

5

 

 

 

3

3

 

 

 

1

10

 

 

 

 

 

 

 

 

 

 

 

 

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

 

A

|

B

 

 

− −

+

 

,

K =

− −

 

C

|

 

 

 

D

 

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

>> K = [A B; C D] K =

–1

4

2

0

–1

4

0

5

3

-3

8

9

-3

3

1

10

Блочная матрица получена. Можно было поступить и по-другому, например, считать, что матрица К состоит из двух столбцов: в первом – матрицы А и С, а во втором – В и D. Тогда команду для создания блочной матрицы следовало бы записать так:

>> K = [[A; C] [B; D]]

Рассмотрим еще один пример для проверки знаний о работе с массивами в MatLab. Требуется составить блочную матрицу

Математическое программное обеспечение. Учебное пособие

-56-

6.БЛОЧНЫЕ МАТРИЦЫ

6.1.Работа с блочными матрицами

 

S

|

a

 

 

 

−−

+

−−

 

,

M =

 

 

b

|

2.5

 

 

 

 

 

где

 

2

0

 

,

 

4

 

, b = (9 9).

S =

 

 

 

a =

 

 

 

0

3

 

 

 

5

 

 

 

 

 

 

 

 

Решение этой задачи показано на рис. 6.1.

Последний оператор можно заменить на эквивалентный М = [[S; b] [a; 2.5]].

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

Рис. 6.1

6.1.2. Выделениеблоков

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

 

1

2

0

2

 

 

 

4

10

 

12

5

 

 

 

 

 

 

 

,

P =

0

11

 

10

5

 

 

 

 

 

 

 

 

 

 

 

 

9

2

3

5

 

 

 

 

 

затем выделите очерченный блок, задав номера строк и столбцов при помо-

Математическое программное обеспечение. Учебное пособие

-57-

6.БЛОЧНЫЕ МАТРИЦЫ

6.1.Работа с блочными матрицами

щи двоеточия – см. рис. 6.2.

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

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

>> p = P(2, 2:end) p =

10 12 5

Рис. 6.2

Рис. 6.3

Математическое программное обеспечение. Учебное пособие

-58-

6.БЛОЧНЫЕ МАТРИЦЫ

6.1.Работа с блочными матрицами

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

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

Обратите внимание на соответствующее изменение размеров массива,

которое можно проверить при помощи size:

>> size(M) ans =

2 3

Рис. 6.4

Аналогичным образом удаляются и столбцы. Для удаления нескольких идущих подряд столбцов (или строк) им нужно присвоить пустой массив. Удалите второй и третий столбец в массиве M – см. рис. 6.5.

Математическое программное обеспечение. Учебное пособие

-59-

6.БЛОЧНЫЕ МАТРИЦЫ

6.1.Работа с блочными матрицами

Рис. 6.5

Индексация существенно экономит время при вводе матриц, имеющих определенную структуру.

6.2. Заполнениематрицприпомощииндексации

Выше было описано несколько способов ввода матриц в MatLab, в том числе и считывание из файла. Однако бывает проще сгенерировать матрицу, чем вводить ее, особенно если она обладает простой структурой. Рассмотрим пример такой матрицы:

 

1

1

1

1

1

 

 

0

0

0

0

0

 

 

 

T =

0

0

0

0

0

.

 

0

0

0

0

0

 

 

 

 

0

0

1

1

 

 

 

1

Генерация матрицы Т осуществляется в три этапа:

1.Создание массива T размера пять на пять, состоящего из нулей.

2.Заполнение первой строки единицами.

3.Заполнение части последней строки минус единицами до последнего элемента.

Соответствующие команды MatLab приведены ниже (они записаны в три колонки с целью экономии места, но набирать их надо последовательно).

Команды не завершаются точкой с запятой для вывода промежуточных результатов в командное окно с целью слежения за процессом формирования матрицы

Математическое программное обеспечение. Учебное пособие

-60-

6.БЛОЧНЫЕ МАТРИЦЫ

6.2.Заполнение матриц при помощи индексации

Рис. 6.6

Создание некоторых специальных матриц в MatLab осуществляется при помощи встроенных функций.

6.3. Созданиематрицспециальноговида

Заполнение прямоугольной матрицы нулями производится встроенной функцией zeros, аргументами которой являются число строк и столбцов матрицы, показанной на рис. 6.7.

Рис. 6.7

Один аргумент функции zeros приводит к образованию квадратной

Математическое программное обеспечение. Учебное пособие

-61-

6.БЛОЧНЫЕ МАТРИЦЫ

6.3.Создание матриц специального вида

матрицы заданного размера – см. рис. 6.8.

Рис. 6.8

Единичная матрица инициализируется при помощи функции eye – см.

рис. 6.9.

Рис. 6.9

Функция eye с двумя аргументами создает прямоугольную матрицу, у

которой на главной диагонали стоят единицы, а остальные элементы равны нулю – см. рис. 6.10.

Математическое программное обеспечение. Учебное пособие

-62-

6.БЛОЧНЫЕ МАТРИЦЫ

6.3.Создание матриц специального вида

Рис. 6.10

Матрица, состоящая из единиц, образуется в результате вызова функции ones – см. рис. 6.11.

Использование одного аргумента в ones приводит к созданию квадрат-

ной матрицы, состоящей из единиц.

MatLab предоставляет возможность заполнения матриц случайными элементами. Результатом функции rand является матрица чисел, распреде-

ленных случайным образом между нулем и единицей, а функции randn – матрица чисел, распределенных по нормальному закону, – см. рис. 6.12.

Рис. 6.11

Математическое программное обеспечение. Учебное пособие

-63-

6.БЛОЧНЫЕ МАТРИЦЫ

6.3.Создание матриц специального вида

Рис. 6.12

Один аргумент функций rand и randn приводит к формированию квадратных матриц – см. рис. 6.13.

Рис. 6.13

Вопрос об автоматическом заполнении векторов или вектор-строк не должен поставить нас в тупик, поскольку мы знаем что вектор или векторстрока в MatLab являются матрицей, у которой один из размеров равен единице. Заполните вектор-строку случайными числами.

Проверьте себя, выполнив следующий пример, – см. рис. 6.14.

Математическое программное обеспечение. Учебное пособие

-64-

6.БЛОЧНЫЕ МАТРИЦЫ

6.3.Создание матриц специального вида

Рис. 6.14

Часто возникает необходимость создания диагональных матриц, т. е. матриц, у которых все внедиагональные элементы равны нулю. Функция diag

формирует диагональную матрицу из вектора или вектор-строки, располагая их элементы по диагонали матрицы, – см. рис. 6.15.

Рис. 6.15

Для заполнения не главной, а побочной диагонали предусмотрена возможность вызова функцииdiag с двумя аргументами. В этом случае второй аргумент

означает, насколько побочная диагональ отстоит от главной, а его знак указывает на направление: плюс– вверх, минус – вниз от главной диагонали (рис. 6.16).

Математическое программное обеспечение. Учебное пособие

-65-

6.БЛОЧНЫЕ МАТРИЦЫ

6.3.Создание матриц специального вида

Рис. 6.16

Функция diag служит и для выделения диагонали матрицы в вектор – см. рис. 6.17.

Рис. 6.17

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

1

0

0

0

0

2

2

2

2

2

 

 

 

 

 

 

 

 

 

 

0

1

0

0

0

2

2

2

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1

0

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

0

0

2

2

2

2

2

 

 

 

 

 

 

 

 

 

 

 

1

2

1

0

0

0

0

 

 

 

0

0

0

1

0

2

2

2

2

2

 

 

0

1

2

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

M =

0

0

0

0

1

2

2

2

2

2

,

 

0

0

1

2

1

0

0

 

G =

.

 

3

3

3

3

3

4

0

0

0

0

 

 

0

0

0

1

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

3 3 3 3 3 0

4 0

0

0

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

1

2

1

 

 

3

3

3

3

3

0

0

4 0

0

 

 

 

 

3

3

3

3

3

0

0

0

4 0

 

 

0

0

0

0

0

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

3

3

3

3

3

0

0

0

0

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Матрицу М можно представить в виде блочной матрицы из четырех квадратных блоков размера пять, диагональные блоки формируются при помо-

Математическое программное обеспечение. Учебное пособие

-66-

6.БЛОЧНЫЕ МАТРИЦЫ

6.3.Создание матриц специального вида

щи функцииeye, а внедиагональные – с использованиемones – см. рис. 6.18.

Рис. 6.18

Квадратная матрица G размера семь является трехдиагональной. Заполняя эту матрицу, можно использовать то обстоятельство, что G является суммой диагональной матрицы и двух матриц с шестью ненулевыми элементами над и под главной диагональю (рис. 6.19).

Математическое программное обеспечение. Учебное пособие

-67-

6.БЛОЧНЫЕ МАТРИЦЫ

6.3.Создание матриц специального вида

Рис. 6.19

Посмотрите содержание полученных файлов (они должны находиться в подкаталоге work основного каталога MatLab). При больших размерах матриц бывает удобно получить ее представление в наглядном виде. В MatLab это можно проделать при помощи визуализации матриц. В следующем разделе разобраны простейшие способы визуализации матричных данных.

Математическое программное обеспечение. Учебное пособие

-68-