ЧМ (ЭКТ-3) / Лабы / Лаба 3 / gauss&zeidel
.doc
Лабораторная работа N3
Решение систем линейных алгебраических уравнений
Краткие теоретические сведения.
Существует множество методов решения С. Л. А. У. . В данной работе рассматриваются два из них. Это метод Гаусса и метод Зейделя. Ниже приведены их краткие описания.
Метод Гаусса.
Рассматривается система уравнений
(1).
Введя матричные обозначения, получим
.
Если число неизвестных менее 200, то для решения СЛАУ используют метод Гаусса, иначе называемый методом последовательного исключения неизвестных. Суть его заключается в приведении матрицы коэффициентов к треугольному виду. Вычисление состоит из двух этапов – прямого хода и обратного хода (обратной подстановки). Прямой ход выражается в последовательном исключении неизвестных из системы для преобразования ее к эквивалентной системе с верхней треугольной матрицей. Вычисление значений неизвестных производят на этапе обратного хода.
Прямой
ход состоит
из
-го
шага.
1-й
шаг. Целью
этого шага является исключение
неизвестного
из уравнений с номерами
.
Предположим, что коэффициент
(это ведущий элемент 1-го шага), вычислим
величины
.
Вычтем последовательно из второго,
третьего, ...,
-го
уравнений системы первое уравнение,
умноженное соответственно на
,
,...,
.
Это позволит обратить в нуль коэффициенты
при
во всех уравнениях, кроме первого. В
результате получим эквивалентную
систему
(2)
где
и
(
)
находятся по формулам
,
.
Фактически
проведенные вычисления означают
умножение матрицы
на некоторую матрицу
следующего вида:
.
Таким образом,
исходное уравнение можно записать при
помощи матрицы
и векторов
в виде
.
2-й
шаг. Целью
этого шага является исключение
неизвестного
из уравнений с номерами
.
Предположим, что коэффициент
(это ведущий элемент 2-го шага), вычислим
величины
.
Вычтем последовательно из третьего,
четвертого, ...,
-го
уравнений системы (2) второе уравнение,
умноженное соответственно на
,
,...,
.
В результате получим эквивалентную
систему

где
и
(
)
находятся по формулам
,
.
Аналогично 1-му
шагу получается уравнение вида
,
где
,
а
.
Матрица преобразования
имеет
вид

k-й
шаг. Целью
этого шага является исключение
неизвестного
из уравнений с номерами
.
Если ведущий элемент
-го
шага отличен от нуля (
),
то
.
Вычтем из
-го,
...,
-го
уравнений полученное на предыдущем
шаге системы
-е
уравнение, умноженное соответственно
на
,
,...,
.
Получим уравнение относительно матрицы
и вектора
.
Окончательно
после
-го
шага исключения получим систему уравнений
(3)
Матрица
системы уравнений (3) является верхней
треугольной и обозначается
.
Вычисления прямого хода заканчиваются.
В результате имеем
или
,
где матрица
является нижней треугольной и имеет
вид
.
Таким образом,
получено
-разложение
матрицы. Исходное уравнение (1) можно
представить как матричное уравнение
или в виде системы
![]()
Данная система
решается просто, так как
и
– треугольные матрицы.
Обратный
ход. Из
последнего уравнения системы (3) находим
.
Подставляя найденное значение
в предпоследнее уравнение (3), получаем
.
Осуществляя обратную подстановку, далее
последовательно находим
,
,...,
.
Вычисления неизвестных здесь производятся
по формулам
,
(4)
при
.
Число арифметических
операций, необходимых для реализации
данного метода, составляет приблизительно
.
При этом необходимо все время отслеживать
неравенство нулю коэффициентов
.
Более того, даже если все ведущие элементы
отличны от нуля, но среди них есть близкие
к нулю, то в этом случае возможен
неконтролируемый рост погрешности.
Избежать этого недостатка метода можно
используя масштабирование, т.е. подбор
множителей, которые приведут систему
уравнений к эквивалентной, но с
коэффициентами близкими к единице.
Другой способ избежать указанного
недостатка состоит в перенумерации на
каждом шаге неизвестных так, чтобы
ведущий элемент был максимальным по
модулю среди оставшихся непреобразованных
уравнений.
Вариант N7.
A=
B=![]()
Текст программы.
A=[64, 21, 28, 31, 27; 14, 176, 25, 18, 13;
15, 15, 113, 29, 29; 22, 17, 5, 256, 28; 13, 14, 11, 26, 24]
b=[16; 22; 20; 4; 0]
n=5
L=eye(n)
C=A;
C(:,n+1)=b
% Pryamoy hod
for j=1:(n-1)
for i=(j+1):n
k=C(i,j)/C(j,j)
C(i,:)=C(i,:)-k*C(j,:)
L(i,j)=k
end
end
% Obratniy hod
x=zeros(n,1)
x(n)=C(n,(n+1))/C(n,n)
for i=1:(n-1)
v=C(n-i,:); v(n+1)=[]
s=v*x
x(n-i)=(C(n-i, n+1)-s)/C(n-i, n-i)
end
clc
C
L
x
e=A*x-b
После выполнения программы получим:
C =
64.0000 21.0000 28.0000 31.0000 27.0000 16.0000
0 171.4063 18.8750 11.2188 7.0938 18.5000
0 0 105.3277 21.0747 22.2548 15.1623
0 0 0 245.8445 19.5187 -1.7349
0 0 0 0 15.7704 -4.7825
L =
1.0000 0 0 0 0
0.2188 1.0000 0 0 0
0.2344 0.0588 1.0000 0 0
0.3438 0.0571 -0.0541 1.0000 0
0.2031 0.0568 0.0403 0.0741 1.0000
x =
0.2484
0.0968
0.2046
0.0170
-0.3033
e =
1.0e-014 *
0
0
0
0.1776
0
Таким образом получено решение заданной С.Л.А.У. методом Гаусса.
Метод Зейделя.
В СЛАУ (1) представим
матрицу A
в виде A=S-T,
где Матрицы
и
определяются следующим образом:
,
,
Тогда система приобретает вид (S-T)*x=B или S*x=T*x+B (5).
Рассмотрим
последовательность векторов
,
удовлетворяющую условию
, (6)
где (
),
и вектор
,
где
– решение заданной системы.
Вычтя из равенства
(5) равенство (6), получим
,
т.е.
.
Поэтому
,
…,
и, если множество
стремится к нулю, то итерационный процесс
(6) сходится и пределом последовательности
является вектор
– решение данной системы.
Итерационный
метод (6) сходится тогда и только тогда,
когда каждое собственное значение
матрицы
удовлетворяет неравенству
.
Скорость сходимости
зависит от спектрального радиуса
матрицы
,
который определяется равенством
.
Из неравенства
(6) следует, что
.
Текст программы.
A=[64, 21, 28, 31, 27; 14, 176, 25, 18, 13;
15, 15, 113, 29, 29; 22, 17, 5, 256, 28; 13, 14, 11, 26, 24]
b=[16; 22; 20; 4; 0]
E=10^(-4)
m=0
S=tril(A)
T=S-A
Si=inv(S)
x0=b
e=2*x0
while e(1)>E || e(2)>E || e(3)>E || e(4)>E
m=m+1
x1=Si*(T*x0+b)
e=abs(x0-x1)
x0=x1
end
clc
x0
e
m
После выполнения программы получим:
x0 =
0.2484
0.0968
0.2046
0.0170
-0.3032
e =
1.0e-004 *
0.6968
0.1788
0.3083
0.0113
0.6353
m = 11
где m- количество итераций.
