
- •Цель работы.
- •Изучение и программирование быстрого алгоритма вычисления определителя матрицы.
- •Задание.
- •Задана матрица исходных данных S(5):
- •Задан алгоритм вычисления определителя матрицы методом Гаусса:
- •2. Проверить вычисление определителя исходной матрицы S(5) библиотечной функцией Matlab det(S). В отчет включить программный код Контрольной программы с обращением к det(S) и значение определителя из «Командного окна»;
- •3. Модифицировать Программу 1, добавив в нее формирование исходной матрицы S(N). Для этого использовать функцию rand: S= rand (N). Задать начальное значение N=1000;
- •Таблица 1. Алгоритм Гаусса
- •Таблица 2. Алгоритм Гаусса
- •Таблица 3. Функция Матлаб
- •Таблица 4. Функция Матлаб

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"
Факультет электроники Кафедра радиотехнической электроники
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к лабораторной работе №6 по дисциплине "Информационные технологии"
Доцент, к.т.н. |
И.А. Рябцев |
Студент гр.0207 |
Б.И. Маликов |
Санкт-Петербург
2021

Цель работы.
Изучение и программирование быстрого алгоритма вычисления определителя матрицы.
Задание.
Задана матрица исходных данных S(5):
Задан алгоритм вычисления определителя матрицы методом Гаусса:
2
1.Реализовать в Программе 1 в Matlab алгоритм вычисления определителя матрицы методом Гаусса и рассчитать определитель для матрицы S(5). Вставить комментарии к операторам Программы 1. В отчет включить Программу 1, копию преобразованной матрицы S(5) и значение определителя из «Командного окна» (Command
Window);
2.Проверить вычисление определителя исходной матрицы S(5) библиотечной функцией Matlab det(S). В отчет включить программный код Контрольной программы с обращением к det(S) и значение определителя из «Командного окна»;
3.Модифицировать Программу 1, добавив в нее формирование исходной матрицы S(N). Для этого использовать функцию rand: S= rand (N). Задать начальное значение N=1000;
4.Определить зависимость времени вычисления определителя
(наибольшее из 3 прогонов программы) по Программе 1 для матриц
S(1000), S(1600), S(2000);
5.Составить Таблицу 1 из трех строк (i=1-3), включив шесть столбиков: номер матрицы, ее размерность, три отсчета времени вычисления определителя и максимальное значение времени;
6.Составить Таблицу 2 из трех строк и трех столбиков. В первом столбике разместить комбинации (i-j: 1-2, 1-3, 2-3). Рассчитать коэффициенты: KN=Nj/Ni, Kt=tj/ti и K3=(Nj/Ni) 3. Разместить полученные значения во втором, третьем и четвертом столбиках;
7.Определить зависимость времени вычисления определителя
(наибольшее из 3 прогонов программы) библиотечной функцией
Matlab det(S) для матриц, S(1600), S(2000), S(4000);
8.Составить Таблицу 3 из трех строк (i=1-3), включив шесть столбиков: номер матрицы, ее размерность, три отсчета времени вычисления определителя и максимальное значение времени;
9.Составить Таблицу 4 из трех строк и трех столбиков. В первом столбике разместить комбинации (i-j: 1-2, 1-3, 2-3). Рассчитать коэффициенты: KN=Nj/Ni, Kt=tj/ti и K3=(Nj/Ni) 3. Разместить полученные значения во втором, третьем и четвертом столбиках; 10. Оформить отчет, включив в него основную и модифицированную Программу 1, Контрольную программу и Таблицы 1-4. В выводы включить закономерность изменения времени вычисления определителя от размерности матрицы (Kt ~ K3) для модифицированных Программы 1 и Контрольной программы;
3
Выполнение заданий.
1. Реализуем алгоритм вычисления определителя матрицы методом Гаусса и рассчитаем определитель для матрицы S(5) в программе Matlab:
clear all;%удалим все переменные из текущей рабочей области clc;
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;%конец отсчета времени disp(a)%вывод результатов disp(da)
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
Листинг результатов:
Columns 1 through 4
1.0000 2.0000 3.0000 4.0000
10.0000 -11.0000 -22.0000 -33.0000
4
5.0000 -1.0000 -2.0000 -5.0000
20.0000 -39.0000 21.0000 1.5000
12.0000 -14.0000 -4.0000 20.0000
Column 5
5.0000
-44.0000 -8.0000 -14.0000 213.6667
Elapsed time is 0.058308 seconds. 7.0510e+03
2. Проверим вычисление определителя исходной матрицы S(5) библиотечной функцией Matlab det(S):
clear all; clc;
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;
disp(da)
Листинг результатов:
Elapsed time is 0.003327 seconds. 7051
3. Модифицируем Программу 1, добавив в нее формирование исходной матрицы S(N). Используем функцию rand: S= rand
(N). Определим зависимость времени вычисления
5
определителя (наибольшее из 3 прогонов программы) по Программе 1 для матриц S(1000), S(1600), S(2000):
1) |
2) |
3) |
clear all; |
clear all; |
clear all; |
clc; |
clc; |
clc; |
n=1000; |
n=1600; |
n=2000; |
a=rand(n); |
a=rand(n); |
a=rand(n); |
tic; |
tic; |
tic; |
da=det_Gauss(a,n) |
da=det_Gauss(a,n) |
da=det_Gauss(a,n) |
; |
; |
; |
toc; |
toc; |
toc; |
disp(n) |
disp(n) |
disp(n) |
Листинг |
Листинг |
Листинг |
результатов: |
результатов: |
результатов: |
1 - Elapsed time is |
1 - Elapsed time is |
1 - Elapsed time is |
8.086512 seconds. |
32.258192 seconds. |
71.277662 seconds. |
2 - Elapsed time is |
2 - Elapsed time is |
2 - Elapsed time is |
8.005265 seconds. |
32.095109 seconds. |
69.552391 seconds. |
3 - Elapsed time is |
3 - Elapsed time is |
3 - Elapsed time is |
8.006370 seconds. |
32.291432 seconds. |
69.497588 seconds. |
4. Определим зависимость времени вычисления определителя (наибольшее из 3 прогонов программы) библиотечной функцией Matlab det(S) для матриц, S(1600), S(2000), S(4000):
1) |
2) |
|
clear all; |
clear all; |
|
clc; |
clc; |
|
n=1600; |
n=2000; |
|
a=rand(n); |
a=rand(n); |
|
tic; |
tic; |
|
da=det(a); |
da=det(a); |
|
toc; |
toc; |
|
disp(n) |
disp(n) |
|
Листинг результатов: |
Листинг результатов: |
|
1 - Elapsed time is 0.862178 seconds. |
1 |
- Elapsed time is 1.358922 seconds. |
2 - Elapsed time is 0.864080 seconds. |
2 |
- Elapsed time is 1.510029 seconds. |
3 - Elapsed time is 0.837908 seconds. |
3 |
- Elapsed time is 1.436013 seconds |
3) |
|
|
6