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

Shevchenko / 2sem / LR7_MatlabZapiska

.doc
Скачиваний:
1
Добавлен:
20.05.2024
Размер:
121.86 Кб
Скачать

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

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

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

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

Кафедра МВЭ

Отчет

По лабораторной работе №7

по дисциплине «Алгоритмы и вычислительные средства»

Тема:Алгоритм вычисления определителя матрицы (метод Гаусса).

Студент гр. 3206

Корепанов Д. М.

Руководитель

Шевченко С. А.

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

2024

  1. Цель

Изучение и программирование быстрого алгоритма вычисления определителя матрицы.

  1. Постановка задачи

Задана матрица исходных данных S(5) и алгоритм вычисления определителя матрицы методом Гаусса.

  1. Алгоритм выполнения работы

  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 и Контрольной программы

  1. Основная часть

Рисунок 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

    1. Вычисление определителя матрицы 5х5

      1. Код программы 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

      1. Листинг результатов

Рисунок 2 – Скриншот окна программы с преобразованной матрицей и вычисленным определителем

      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(a)

Toc

      1. Листинг результатов

Рисунок 3 – Скриншот окна программы с вычисленным определителем

    1. Вычисление определителя больших матриц

      1. Код программы 1

clc

clear

n=1000;

a=rand(n);

tic

da=det_Gauss(a, n)

toc

      1. Код программы обращения к библиотечной функции

clc

clear

n=4000;

a=rand(n);

tic

da=det(a)

toc

      1. Листинг результатов

Таблица 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

  1. Вывод

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

Проведен алгоритм с использованием библиотечной функции det(S), составлен листинг вычисления определителя с использованием библиотечной функции и рассмотрена зависимость время вычисления определителя матрицы от её размера..

Зависимость времени вычисления определителя алгоритма Гаусса: при увеличении порядка матрицы в N раз, время вычисления определителя увеличивается примерно в N3 раз

Алгебраической зависимости времени времени вычисления определителя от порядка матрицы не обнаружено.

Соседние файлы в папке 2sem