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

ОВИ_ЛР_2012

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

Аналогичным образом удаляются и столбцы. Для удаления нескольких идущих подряд столбцов (или строк) им нужно присвоить пустой массив. Удалите второй и третий столбец в массиве 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