- •ОГЛАВЛЕНИЕ
- •ВВЕДЕНИЕ
- •1. НАЗНАЧЕНИЕ, ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ И ИСПОЛЬЗОВАНИЯ СИСТЕМЫ MATLAB
- •2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB
- •3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ
- •4. РАБОТА С МАССИВАМИ
- •5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ
- •6. БЛОЧНЫЕ МАТРИЦЫ
- •7.1. Визуализация матриц
- •8. ДИАГРАММЫ И ГИСТОГРАММЫ
- •8.3. Графики функций
- •9. ГРАФИКИ ФУНКЦИЙ
- •10. М-ФАЙЛЫ
- •11. ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ
- •12. ОПЕРАТОРЫ ЦИКЛА
- •13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
- •14. ПРЕРЫВАНИЯ ЦИКЛА. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
- •15. ОСНОВНЫЕ ВОЗМОЖНОСТИ ПАКЕТА SIMULINK
- •16. ИНТЕРФЕЙС БРАУЗЕРА БИБЛИОТЕК
- •17. ИНТЕРФЕЙС ОКНА МОДЕЛЕЙ SIMULINK
- •18. СОЗДАНИЕ МОДЕЛИ
- •18.2. Создание модели ограничителя
- •19.2. Соединение блоков
- •21. РАБОТА С УСТАНОВКАМИ MATHCAD
- •22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD
- •22.2. Инициализация переменной
- •22.5. Глобальное определение переменной
- •22.6. Использование комплексных чисел
- •22.7. Константы
- •22.8. Использование констант
- •22.11. Стандартные математические функции
- •22.12. Математические функции
- •22.13. Работа с комплексными числами
- •22.14. Функции округления численных значений
- •22.15. Символьный результат
- •22.16. Вычисление выражений
- •22.19. Матрицы и векторы
- •22.20. Создание массивов
- •22.21. Векторы и матрицы
- •22.22. Начальный индекс массива
- •22.23. Определение массива
- •22.24. Вложенные массивы
- •22.25. Операции с массивами
- •22.26. Транспонирование матриц
- •22.27. Обращение матриц
- •22.28. Векторное произведение
- •22.29. Сумма элементов векторов
- •22.30. Выделение строк и столбцов
- •22.31. Преобразование массивов
- •22.32. Функции для работы с массивами
- •22.32.1. Функция matrix( )
- •23.2. Графики нескольких функций
- •23.4.1. Создание поверхностей
- •23.4.2. Основные настройки трехмерного графика
- •24.3. Логические операторы
- •24.6. Вложенные операторы
- •24.7. Арифметическое выражение в условии
- •24.8. Операторы циклов
- •24.8.1. Сумма квадратов
- •24.9. Рекурсия
- •25.2. Решение нелинейной системы
- •26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
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- |