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

ЧМ (ЭКТ-3) / Лабы / Лаба 3 / gauss&zeidel

.doc
Скачиваний:
102
Добавлен:
17.04.2013
Размер:
367.1 Кб
Скачать

Лабораторная работа 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- количество итераций.

7

Соседние файлы в папке Лаба 3