
1 лабораторная МОТС
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра АПУ
отчет
по лабораторной работе №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, освоили специфики матричных преобразований, поработали с функциями, которые позволяли производить различные операции над матрицами. Построили пирамиду через преобразование матриц и вывели трёхмерные модели фигур, которые получали в процессе лабораторной работы.