Добавил:
Адепт твердотельной электроники, последователь учений Михайлова Н.И. Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы 2 Семестр / 0207 Маликов БИ Лабораторная работа №6.pdf
Скачиваний:
2
Добавлен:
18.06.2024
Размер:
580.87 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"

Факультет электроники Кафедра радиотехнической электроники

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к лабораторной работе №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