ОВИ_ЛР_2012
.pdfАналогичным образом удаляются и столбцы. Для удаления нескольких идущих подряд столбцов (или строк) им нужно присвоить пустой массив. Удалите второй и третий столбец в массиве M
» М(:, 2:3) = []
M =
1
6
Индексация существенно экономит время при вводе матриц,
имеющих определенную структуру.
3.2.8. Заполнение матриц при помощи индексации
Выше было описано несколько способов ввода матриц в 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.Заполнение части последней строки минус единицами до последнего элемента.
61
Соответствующие команды MATLAB приведены ниже.
» A(1:5, 1:5) = 0
A=
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
» A(1, :) = 1
A=
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
» A(end, 3:end) = -1 A=
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
-1 -1 -1 |
||
Создание некоторых специальных матриц в MATLAB
осуществляется при помощи встроенных функций.
62
3.2.9. Создание матриц специального вида
Заполнение прямоугольной матрицы нулями производится встроенной функцией zeros, аргументами которой являются число строк и столбцов матрицы:
» A = zeros(2, 6) A =
0 0 0 0 0 0
0 0 0 0 0 0
Один аргумент функции zeros приводит к образованию квадратной матрицы заданного размера:
» A = zeros(3)
A =
0 0 0
0 0 0
0 0 0
Единичная матрица инициализируется при помощи функции eye:
» I = eye(3) I=
1 0 0
0 1 0
0 0 1
63
Функция eye с двумя аргументами создает прямоугольную матрицу,
у которой на главной диагонали стоят единицы, а остальные элементы равны нулю:
» I = eye(4, 8)
I =
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
Матрица, состоящая из единиц, образуется в результате вызова
функции ones:
» E = ones(3, 7)
E =
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
Использование одного аргумента в ones приводит к созданию квадратной матрицы, состоящей из единиц.
MATLAB предоставляет возможность заполнения матриц случайными элементами. Результатом функции rand является матрица чисел, распределенных случайным образом между нулем и единицей, а
функции randn — матрица чисел, распределенных по нормальному закону:
» R = rand(3, 5)
R =
0.9501 0.4860 0.4565 0.4447 0.9218
64
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
Один аргумент функций rand и randn приводит к формированию квадратных матриц:
Часто возникает необходимость создания диагональных матриц, т.е.
матриц, у которых все недиагональные элементы равны нулю. Функция diag формирует диагональную матрицу из вектор-столбца или вектор-
строки, располагая их элементы по диагонали матрицы:
»d = [1; 2; 3; 4];
»D = diag(d)
D =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
Функция diag служит и для выделения диагонали матрицы в вектор,
например
»A = [10 1 2; 1 20 3; 2 3 30];
»d = diag(A)
d =
10
20
30
65
3.2.10. Поэлементные операции с матрицами
Поскольку векторы и матрицы хранятся в двумерных массивах, то применение математических функций к матрицам и поэлементные операции производятся так же, как для векторов.
Введите две матрицы
2 |
5 |
1 |
1 2 |
8 |
||||
A |
3 |
4 |
9 |
|
, B |
7 |
3 |
. |
|
|
|
5 |
|||||
Умножение каждого элемента одной матрицы на соответствующий элемент другой производится при помощи оператора .*:
» С = А.*В
С =
-2 10 -8 21 -12 -45
Для деления элементов первой матрицы на соответствующие элементы второй используется оператор ./, а для деления элементов второй матрицы на соответствующие элементы первой служит .\:
» R1 = А./В1
R1 =
-2.0000 2.5000 -0.1250 0.4286 -1.3333 -1.8000
» R2 = А.\В1
R2 =
-0.5000 0.4000 -8.0000 2.3333 -0.7500 -0.5556
66
Поэлементное возведение в степень осуществляется при помощи оператора .^. Показатель степени может быть числом или матрицей того же размера, что и матрица, возводимая в степень. Во втором случае элементы первой матрицы возводятся в степени, равные элементам второй матрицы.
3.2.11. Визуализация матриц
Матрицы с достаточно большим количеством нулей называются разреженными. Часто необходимо знать, где расположены ненулевые элементы, т.е. получить так называемый шаблон матрицы. Для этого в
MATLAB служит функция spy. Посмотрим шаблон матрицы G
2 |
1 |
0 |
0 |
0 |
0 |
0 |
|
|
|
1 |
2 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|||||||
|
0 |
1 |
2 |
1 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
G 0 0 1 2 1 0 |
0 . |
|||||||
|
0 |
0 |
0 |
1 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
1 |
2 |
1 |
|
|
0 |
0 |
0 |
0 |
0 |
1 |
2 |
|
|
|
|||||||
» spy(G)
После выполнения команды spy на экране появляется графическое окно Figure No. 1. На вертикальной и горизонтальной осях отложены номера строк и столбцов. Ненулевые элементы обозначены маркерами,
внизу графического окна указано число ненулевых элементов (nz = 19).
Наглядную информацию о соотношении величин элементов матрицы дает функция imagesc, которая интерпретирует матрицу как прямоугольное изображение. Каждый элемент матрицы представляется в виде квадратика,
цвет которого соответствует величине элемента. Для того чтобы узнать
67
соответствие цвета и величины элемента следует использовать команду colorbar, выводящую рядом с изображением матрицы шкалу цвета (Insert (в
графическом окне Figure No. 1), colorbar). Наконец, для печати на монохромном принтере удобно получить изображение в оттенках серого цвета, используя команду colormap(gray) (Edit (в графическом окне
Figure No. 1), Colormap, Colormap Editor, Tools, gray). Мы будем работать с матрицей G. Набирайте команды, указанные ниже, и следите за состоянием графического окна:
»imagesc(G)
»colorbar
»colormap(gray)
Врезультате получается наглядное представление матрицы.
3.3.Индивидуальные задания
1.Создайте журнал выполнения лабораторной работы.
2.Введите две матрицы A и B размерностью три на три.
3.Выполните над матрицами операции сложения, вычитания и умножения.
4.Выполните транспонирование матриц A и B.
5.Создайте из матриц A и B матрицу C с комплексными числами,
причем, элементы матрицы A должны стать действительными частями комплексных чисел, а элементы матрицы B комплексными частями, т.е.
между элементами матриц должно выполняться соотношение:
ckj akj bkji, k, j =1, 2, 3.
6. Определите матрицу, комплексно-сопряженную матрице C.
68
7.Возведите квадратную матрицу A в квадрат с использованием оператора ^. Сравните полученный результат, умножив матрицу A саму на себя.
8.Вычислите произведение первой строки матрицы A и матрицы B, а
также произведение матрицы B и третьего столбца матрицы A.
9.Решите систему линейных уравнений
a11x a12 y a13z d1, a21x a22 y a23z d 2, a21x a32 y a33z d 3,
где коэффициенты системы уравнений определяются номером по списку в журнале группы из следующей таблицы 3.1.
10. Создайте из матриц A и B и транспонированных матриц AT и BT
|
A |
B |
|
блочную матрицу K |
|
T |
T . |
B |
|
A |
|
11. Удалите второй столбец и третью строку из матрицы K.
12. Заполните прямоугольную матрицу размерами не менее 58
нулями с помощью функции zeros.
13.Инициализируйте при помощи функции eye прямоугольную и квадратную единичные матрицы, содержащие не менее пяти единиц.
14.Создайте с помощью функции ones прямоугольную и квадратную матрицы из единиц, содержащие не менее четырех строк.
15.Создайте с помощью функции rand матрицу 4 5 чисел,
распределенных случайным образом между нулем и N.
16.Из элементов первой строки блочной матрицы с помощью функции diag сформируйте диагональную матрицу.
17.Выполните известные Вам поэлементные операции над матрицами A и B.
69
18. Выполните визуализацию блочной матрицы, используя команды
spy, imagesc, colorbar, colormap(gray).
19.Приведите из журнала выполнения лабораторной работы несколько первых и последних строк.
20.Оформите отчет по лабораторной работе.
Таблица 3.1 – Коэффициенты системы уравнений
№ |
a11 |
a12 |
a13 |
a21 |
a22 |
a23 |
a31 |
a32 |
a33 |
d1 |
d2 |
d3 |
1 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.32 |
3.91 |
5.4 |
2 |
1.2 |
0.3 |
-0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.32 |
3.91 |
5.4 |
3 |
-1.2 |
0.3 |
-0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.32 |
3.91 |
5.4 |
4 |
1.2 |
-0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.32 |
3.91 |
5.4 |
5 |
-1.2 |
-0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.32 |
3.91 |
5.4 |
6 |
-1.2 |
-0.3 |
-0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.32 |
3.91 |
5.4 |
7 |
-1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.32 |
3.91 |
5.4 |
8 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.60 |
3.91 |
5.4 |
9 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.60 |
4.90 |
5.4 |
10 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.81 |
4.53 |
5.4 |
11 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.81 |
4.53 |
5.8 |
12 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
2.83 |
4.53 |
5.8 |
13 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
3.83 |
4.53 |
5.8 |
14 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
3.32 |
4.53 |
5.8 |
15 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
0.32 |
0.53 |
5.8 |
16 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
0.32 |
0.45 |
5.8 |
17 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
0.45 |
5.8 |
18 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
-0.45 |
5.8 |
19 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
-0.35 |
5.8 |
20 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
-0,25 |
-5.8 |
21 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
-0,18 |
5.0 |
22 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
-0,15 |
4.0 |
23 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
-0.1 |
2.0 |
24 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.10 |
-0.1 |
1.0 |
25 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
0 |
-0.1 |
0.5 |
26 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
0 |
-0.01 |
0 |
27 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
-5.6 |
-0.32 |
-0,18 |
5.0 |
28 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
1.81 |
4.53 |
5.8 |
29 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
2.83 |
4.53 |
5.8 |
30 |
1.2 |
0.3 |
0.2 |
0.5 |
2.1 |
1.3 |
-0.9 |
0.7 |
5.6 |
3.83 |
4.53 |
5.8 |
70
