
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра МВЭ
Отчет
По лабораторной работе №8
по дисциплине «Алгоритмы и вычислительные средства»
Тема: Алгоритмы и программы решения систем линейных алгебраических уравнений.
Студент гр. 3206 |
|
Корепанов Д. М. |
Руководитель |
|
Шевченко С. А. |
Санкт-Петербург
2024
Цель
Изучение и программирование стандартных алгоритмов решения СЛАУ.
Постановка задачи
Задана система линейных алгебраических уравнений: матрица коэффициентов при неизвестных A, вектор свободных членов B, вектор начальных приближений X и машинная точность отыскания решения tol.
Алгоритм выполнения работы
Реализовать алгоритм поиска корней x1, x2, … , xn для заданной СЛАУ в программе Matlab.
Вставить комментарии к операторам программы.
Вставить в программу стандартные функции tic, toc для оценки времени решения задачи.
Проверить программу Matlab на следующих исходных данных:
О
пределить количество итераций алгоритма поиска корней x1, x2, … xn.
Получить листинг, включающий: вектор с найденными корнями x1 , x2 , … , xn, число итераций алгоритма и время решения задачи.
Получить решение заданной системы уравнений с помощью штатного оператора “\” программы Matlab.
Модифицировать программу Matlab по п.8.1 таким образом, чтобы отыскание корней происходило по алгоритму Гаусса-Зейделя.
Модифицировать программу таким образом, чтобы на каждой итерации алгоритма вычислялась и запоминались следующие величины:
П
остроить зависимость от числа итераций максимального значения ошибки max Δi, а также относительной и усредненной ошибок (δrel и ̅δi соответственно). Сравнить полученные результаты для разработанных алгоритмов решения СЛАУ по методам Якоби и Гаусса-Зейделя. Сделать выводы.
Оформить отчет, включив в него тексты программ Matlab, листинги с результатами их работы. В выводы включить зависимости от числа итераций максимального значения ошибки max Δi а также относительной и усредненной ошибок (δrel и ̅δi соответственно).
Основная часть
4.1 Алгоритм решения СЛАУ методом Якоби
Рисунок 1 -- Блок-схема алгоритма решения СЛАУ методом Якоби
4.1.1 Код программы
clc
clear
A = [4 1 2 -1; 3 6 -1 2; 2 -1 5 -3; 4 1 -3 -8];
B = [2 -1 5 -3];
N = size(A,1);
X = zeros(N,1);
tol = 1e-6;
tic;
count = 0;
while true
x_new = zeros(N, 1);
for i = 1:N
sum = 0;
for j = 1:N
if i ~= j
sum = sum + A(i, j) * X(j);
end
end
x_new(i) = 1/A(i, i) * (B(i) - sum);
end
count = count + 1;
if (abs(x_new - X)) < tol
break;
else
X = x_new;
end
end
toc;
disp('Итерации'); disp(count);
disp('Решение'); disp(x_new);
4.1.2 Листинг результатов
Рисунок 2 – Скриншот окна программы с результатом алгоритма
4.2 Алгоритм решения СЛАУ методом Гаусса-Зейделя
Рисунок 3 -- Блок-схема алгоритма решения СЛАУ методом Гаусса-Зейделя
4.2.1 Код программы