![](/user_photo/_userpic.png)
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра МВЭ
Отчет
По лабораторной работе №7
по дисциплине «Алгоритмы и вычислительные средства»
Тема:Алгоритм вычисления определителя матрицы (метод Гаусса).
Студент гр. 3206 |
|
Корепанов Д. М. |
Руководитель |
|
Шевченко С. А. |
Санкт-Петербург
2024
Цель
Изучение и программирование быстрого алгоритма вычисления определителя матрицы.
Постановка задачи
Задана матрица исходных данных S(5) и алгоритм вычисления определителя матрицы методом Гаусса.
Алгоритм выполнения работы
Реализовать в Программе 1 в Matlab алгоритм вычисления определителя матрицы методом Гаусса и рассчитать определитель для матрицы S(5). Вставить комментарии к операторам Программы 1. В отчет включить Программу 1, копию преобразованной матрицы S(5) и значение определителя из «Командного окна» (Command Window).
Проверить вычисление определителя исходной матрицы S(5) библиотечной функцией Matlab det(S). В отчет включить программный код Контрольной программы с обращением к det(S) и значение определителя из «Командного окна».
Модифицировать Программу 1, добавив в нее формирование исходной матрицы S(N). Для этого использовать функцию rand: S= rand (N). Задать начальное значение N=1000.
Определить зависимость времени вычисления определителя (наибольшее из 3 прогонов программы) по Программе 1 для матриц S(1000), S(1600), S(2000).
Составить Таблицу 1 из трех строк (i=1-3), включив шесть столбиков: номер матрицы, ее размерность, три отсчета времени вычисления определителя и максимальное значение времени.
Составить Таблицу 2 из трех строк и трех столбиков. В первом столбике разместить комбинации (i-j: 1-2, 1-3, 2-3). Рассчитать коэффициенты: KN=Nj/Ni, Kt=tj/ti и K3=(Nj/Ni)3. Разместить полученные значения во втором, третьем и четвертом столбиках.
Определить зависимость времени вычисления определителя (наибольшее из 3 прогонов программы) библиотечной функцией Matlab det(S) для матриц, S(1600), S(2000), S(4000).
Составить Таблицу 3 из трех строк (i=1-3), включив шесть столбиков: номер матрицы, ее размерность, три отсчета времени вычисления определителя и максимальное значение времени.
Составить Таблицу 4 из трех строк и трех столбиков. В первом столбике разместить комбинации (i-j: 1-2, 1-3, 2-3). Рассчитать коэффициенты: KN=Nj/Ni, Kt=tj/ti и K3=(Nj/Ni)3. Разместить полученные значения во втором, третьем и четвертом столбиках.
Оформить отчет, включив в него основную и модифицированную Программу 1, Контрольную программу и Таблицы 1-4. В выводы включить закономерность изменения времени вычисления определителя от размерности матрицы (Kt ~ K3) для модифицированных Программы 1 и Контрольной программы
Основная часть
Рисунок 1 – Блок-схема алгоритма
Задание функции определителя матрицы методом Гаусса
function [DET] = det_Gauss(A,N)
for K=1:(N-1)
for I=(K+1):N
for J=K:N
if J==K
aik=A(I,K);
else
A(I,J)=A(I,J)-(aik/A(K,K)*A(K,J));
end
end
end
end
DET=1;
for i=1:N
DET=DET*A(i,i);
end
End
Вычисление определителя матрицы 5х5
Код программы 1
clc
clear
n=5;
a=[1 2 3 4 5; 10 9 8 7 6; 5 9 11 12 13; 20 1 3 17 14; 12 10 4 16 15];
tic
da=det_Gauss(a, n)
toc
Листинг результатов
Рисунок 2 – Скриншот окна программы с преобразованной матрицей и вычисленным определителем
Код программы обращения к библиотечной библиотечной функции
clc
clear
n=5;
a=[1 2 3 4 5; 10 9 8 7 6; 5 9 11 12 13; 20 1 3 17 14; 12 10 4 16 15];
tic
da=det(a)
Toc
Листинг результатов
Рисунок 3 – Скриншот окна программы с вычисленным определителем
Вычисление определителя больших матриц
Код программы 1
clc
clear
n=1000;
a=rand(n);
tic
da=det_Gauss(a, n)
toc
Код программы обращения к библиотечной функции
clc
clear
n=4000;
a=rand(n);
tic
da=det(a)
toc
Листинг результатов
Таблица 1 – Листинг алгоритма Гаусса программы 1
i |
N |
t1,сек |
t2,сек |
t3,сек |
tmax,сек |
1 |
1000 |
5045 |
5174 |
5101 |
5174 |
2 |
1600 |
20522 |
21409 |
21385 |
21409 |
3 |
2000 |
44067 |
42001 |
45166 |
45166 |
Таблица 2 – Коэффициенты программы 1
i-j |
KN |
Kt |
K3 |
1-2 |
1.60 |
4.14 |
4.096 |
1-3 |
2.00 |
8.73 |
8.000 |
2-3 |
1.25 |
2.11 |
1.950 |
Таблица 3 – Листинг алгоритма библиотечной программы
i |
N |
t1,сек |
t2,сек |
t3,сек |
tmax,сек |
1 |
1600 |
0.0730181 |
0.072726 |
0.076617 |
0.076617 |
2 |
2000 |
0.121794 |
0.122374 |
0.124671 |
0.124671 |
3 |
4000 |
0.696661 |
0.725739 |
0.692577 |
0.725739 |
Таблица 4 – Коэффициенты библиотечной программы
i-j |
KN |
Kt |
K3 |
1-2 |
1.25 |
1.6 |
1.95 |
1-3 |
2.50 |
9.5 |
15.63 |
2-3 |
2.00 |
5.8 |
8.00 |
Вывод
В ходе выполненной работы был изучен алгоритм вычисление определителя матрицы методом Гаусса. Проведен алгоритм для больших матрицы, составлен листинг вычисления определителя и рассмотрена зависимость времени сортировки от размера матрицы.
Проведен алгоритм с использованием библиотечной функции det(S), составлен листинг вычисления определителя с использованием библиотечной функции и рассмотрена зависимость время вычисления определителя матрицы от её размера..
Зависимость времени вычисления определителя алгоритма Гаусса: при увеличении порядка матрицы в N раз, время вычисления определителя увеличивается примерно в N3 раз
Алгебраической зависимости времени времени вычисления определителя от порядка матрицы не обнаружено.