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

1 лабораторная МОТС

.pdf
Скачиваний:
0
Добавлен:
02.01.2025
Размер:
1.38 Mб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра АПУ

ОТЧЕТ по лабораторной работе №1

по дисциплине «Математические основы теории систем»

ТЕМА: Матричные преобразования и трехмерная графика

 

 

 

Поникаровский А. В.

Студенты гр. 1391

 

Тирик Б. Д.

Преподаватель

 

 

Гульванский В. В.

Санкт-Петербург

2023

Цель работы: освоение специфики матричных преобразований MATLAB и сравнительный анализ различных форм графического отображения результатов.

Теоретические положения.

Пусть дана функция двух аргументов z f (x, y) . В области определения x [xmin , xmax ] , y [ ymin , ymax ] командой [X,Y] = meshgrid(xgv,ygv) создайте координатную сетку с заданным шагом. Теперь можно создавать саму функцию, например:

>>[x,y]=meshgrid(-10:0.3:10,-10:0.3:10);

>>z=(sin(x)./x).*(sin(y)./y);

>>surf(x,y,z)

Полученная поверхность приведена на рисунке 3.1. Можно произвольно выбрать шкалу цветовых оттенков (см. help colormap).

Рис. 1. Трехмерная поверхность

Второй способ состоит в формировании двух взаимно перпендикулярных плоскостей X и Y – аналогов двумерных осей ординат.

>>x=-10:10;

>>y=ones(1,21);

>>X=x'*y;

>>Y=y'*x;

Теперь используем координатные плоскости для построения конуса:

>>R1=sqrt(X.^2+Y.^2);

>>surf(X,Y,-R1);

или пирамиды (рис. 3.2):

>>R2=max(abs(X),abs(Y))

>>surf(X,Y,-R2);

Матричные операции, вычисление функций от матриц. Кратко напомним основные матричные операции.

Определитель .

aij Aij i 1n

j 1

n

,

Aij

– алгебраическое дополнение;

Обратная матрица

A 1

.

 

 

 

 

A

1

 

A

 

 

A

 

 

 

A*

– союзная матрица;

Умножение матриц

w

. Элемент результирующей матрицы

w

jk

 

на

пересечении

строки

j

и столбца

k

равен сумме попарных произведений

элементов строки j

матрицы

Возведение в степень

и столбца k

vwp w w...

матрицы : wjk

jl lk

 

 

l

 

w

осуществляется

p -кратным

умножением матрицы на себя.

Рис. 2. Трехмерные фигуры

Обработка результатов

1. В качестве исходной фигуры, на которой будем изучать матричные преобразования, выберем пирамиду (рис. 3). Присвоим ей имя R.

x=-10:10; y=ones(1,21); X=x'*y; Y=y'*x;

R=max(abs(X),abs(Y)); surf(X, Y, -R); title('Исходная пирамида');

Рис. 3. Исходная пирамида

Симметрия матрицы R относительно главной диагонали и антидиагонали делает такую матрицу вырожденной – её определитель равен нулю (проверьте).

det(R);

Результат проверки: ans = 0

Соответственно, большинство матричных операций для неё невыполнимо. Поэтому добавим к элементам на главной диагонали по единице, сложив её с единичной матрицей (eye) того же размера (рис. 4).

R = R + eye(21); surf(X, Y, -R);

title('Прибавление к исходной матрице единичной');

Рис. 4. Прибавление к исходной матрице единичной

Теперь над матрицей можно производить как поэлементные, так и матричные операции.

Проверям, что после преобразования определитель нашей матрицы не равен 0:

det(R);

Результат проверки: ans = -11.0000

2. Сравните (по графикам) результаты двух операций – обращения матрицы командой inv (рис. 5) и поэлементного деления матрицы ones(n,n) на

R (рис. 6).

surf(X, Y, inv(R));

title('Обращённая командой inv матрица');

Рис. 5. Обращённая командой inv матрица

surf(X, Y, ones(21)./R)

title('Матрица поэлементного деления матрицы ones(n,n) на R');

Рис. 6. Матрица поэлементного деления матрицы ones(n,n) на R

3. Сравните матричные операции sqrtm(A), logm(A), expm(A) с

аналогичными операциями, выполняемыми поэлементно.

Создадим новую матрицу размерностью 3*3 для сравнения матричных операций.

A = [1 2 3; 4 5 6; 7 8 9];

Сравнение матричной операции sqrtm(A) с sqrt(A)

disp(sqrt(A));

 

 

 

 

1.0000

1.4142

1.7321

 

 

 

2.0000

2.2361

2.4495

 

 

 

2.6458

2.8284

3.0000

 

 

 

disp(sqrtm(A));

 

 

 

 

0.4498

+ 0.7623i

0.5526

+ 0.2068i

0.6555

- 0.3487i

1.0185

+ 0.0842i

1.2515

+ 0.0228i

1.4844

- 0.0385i

1.5873

- 0.5940i

1.9503

- 0.1611i

2.3134

+ 0.2717i

Сравнение матричной операции logm(A) с log(A)

disp(log(A));

 

0

0.6931

1.0986

1.3863

1.6094

1.7918

1.9459

2.0794

2.1972

disp(logm(A));

-5.3211 + 2.7896i 11.8288 - 0.4325i -5.2948 - 0.5129i 12.1386 - 0.7970i -21.9801 + 2.1623i 12.4484 - 1.1616i -4.6753 - 1.2421i 12.7582 - 1.5262i -4.0820 + 1.3313i

Сравнение матричной операции expm(A) с exp(A)

disp(exp(A));

 

0.0027

0.0074

0.0201

0.0546

0.1484

0.4034

1.0966

2.9810

8.1031

disp(expm(A));

 

1.1189

1.3748

1.6307

2.5339

3.1134

3.6929

3.9489

4.8520

5.7552

4. Преобразуйте пирамиду R операциями врезки. «Отрежьте» какойнибудь из углов, приравняв нулю выбранные элементы (рис. 7).

R(11:21,1:11)=10; surf(X, Y, -R);

title('"Отрежем" угол у пирамиды');

Рис. 7. Пирамида с «отрезанным» углом

5. Очень полезной операцией размножения массивов (мультиплицирования) является операция кронекеровского умножения матриц, в которой вся правая матрица умножается на каждый элемент левой.

Создадим конус (рис. 8)

R1 = sqrt(X.^2 + Y.^2); surf(X, Y, -R1); title('Конус');

Рис. 8. Конус

Создадим 9 конусов c помощью матрицы 3*3 (рис. 9).

A = [1, 1, 1; 1, 1, 1; 1, 1, 1]; surf(-kron(A, R1)); title('Размноженный конус');

Рис. 9. Размноженный конус

Поменяем порядок матриц в последней операции (рис.10).

surf(-kron(R1, A));

title('Изменённый порядок умножения');

Рис. 10. Изменённый порядок умножения

Сделаем центральный конус в два раза выше соседей (рис. 11).

A = [1, 1, 1; 1, 2, 1; 1, 1, 1]; A = kron(A, R1);

A(22:42, 22:42) = A(22:42, 22:42) -15; surf(-A);

title('Увеличенный в 2 раза центральный конус');

Рис. 11. Увеличенный в 2 раза центральный конус

6. На основе данных из пункта 5 создадим две картинки с помощью функций heatmap и imagesc, установим границы сегментации данных. Сравним полученные результаты (рис. 12, рис. 13).

heatmap(A(22:42, 22:42));

Рис. 12. Использование функции heatmap