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

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

.docx
Скачиваний:
0
Добавлен:
02.01.2025
Размер:
938.02 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра АПУ

отчет

по лабораторной работе №1

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

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

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

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

Тирик Б. Д.

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

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

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

2023

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

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

Пусть дана функция двух аргументов . В области определения , командой [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);

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

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

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

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

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

Умножение матриц . Элемент результирующей матрицы на пересечении строки и столбца равен сумме попарных произведений элементов строки матрицы и столбца матрицы :

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

Рис. 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

imagesc([22,30], [22,30], A);

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

Вывод: в данной работе мы научились работать с Matlab, освоили специфики матричных преобразований, поработали с функциями, которые позволяли производить различные операции над матрицами. Построили пирамиду через преобразование матриц и вывели трёхмерные модели фигур, которые получали в процессе лабораторной работы.