Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ДЗ _ САВ.doc
Скачиваний:
2
Добавлен:
12.11.2019
Размер:
286.72 Кб
Скачать

Пример выполнения программы:

condA =

2.6569

q =

0.9700

X =

-2.4731

1.5106

-3.2266

2.3083

итераций

i =

46

5. Метод Зейделя.

Метод Зейделя - видоизменение МПИ (3) решения СЛАУ, приведённых к виду (2), при котором для подсчёта i-ой компоненты (k+1)-го приближения к искомому вектору используются уже найденные на этом, т.е. (k+1)-ом шаге, новые значения первых (i-1) компонент. Т.е если система (1) тем или иным способом сведена к системе (2) с матрицей коэффициентов и вектором свободных членов , то приближения к её решению по методу Зейделя определяются системой неравенств

где k=0,1,2,…, а - компоненты заданного (выбранного) начального вектора .

Применительно к компьютерным расчётам один полный, т.е. векторный итерационный шаг метода Зейделя может интерпретироваться как реализация формулы (2), где под знаком равенства следует понимать знак присваивания, а под x – один и тот же линейный массив из n элементов, на нулевом шаге заполненный компонентами заданного начального вектора . Для компьютерной реализации одного шага метода простых итераций нужно целиком сохранять n-элементный массив x, подставляемый в правую часть, до тех пор, пока не сформируется полностью n-элементный массив – результат данного итерационного шага. В связи с такой интерпретацией метод Зейделя называют методом последовательных смещений, а метод простых итераций – одновременным смещением.

Практическая часть(листинг программы MatLab)

function zdl

b=[-1.83; 0.65; -2.23; 1.13];

A=[-0.68 -0.18 0.02 0.21;

0.16 -0.88 -0.14 0.27;

0.37 0.27 -1.02 -0.24;

0.12 0.21 -0.18 -0.75 ];

A_Tr=A';

condA=cond(A);

condA

e=[1 1 1 1];

E=diag(e);

B=A+E;

c=b;

q=norm(B,1);

q

X=[0;0;0;0];

X_k1=[0;0;0;0];

X_k=[0;0;0;0];

X(1,1)=B(1,1)*X(1,1)+B(1,2)*X(2,1)+B(1,3)*X(3,1)+B(1,4)*X(4,1)+c(1,1);

X(2,1)=B(2,1)*X(1,1)+B(2,2)*X(2,1)+B(2,3)*X(3,1)+B(2,4)*X(4,1)+c(2,1);

X(3,1)=B(3,1)*X(1,1)+B(3,2)*X(2,1)+B(3,3)*X(3,1)+B(3,4)*X(4,1)+c(3,1);

X(4,1)=B(4,1)*X(1,1)+B(4,2)*X(2,1)+B(4,3)*X(3,1)+B(4,4)*X(4,1)+c(4,1);

i=1;

n=max(abs(X-X_k1));

while n> (((1-q)/q)*eps)

X_k=X;

X(1,1)=B(1,1)*X(1,1)+B(1,2)*X(2,1)+B(1,3)*X(3,1)+B(1,4)*X(4,1)+c(1,1);

X(2,1)=B(2,1)*X(1,1)+B(2,2)*X(2,1)+B(2,3)*X(3,1)+B(2,4)*X(4,1)+c(2,1);

X(3,1)=B(3,1)*X(1,1)+B(3,2)*X(2,1)+B(3,3)*X(3,1)+B(3,4)*X(4,1)+c(3,1);

X(4,1)=B(4,1)*X(1,1)+B(4,2)*X(2,1)+B(4,3)*X(3,1)+B(4,4)*X(4,1)+c(4,1);

n=max(abs(X-X_k));

i=i+1;

end

X=X_k

disp('итераций'), i

Результат выполнения программы:

condA =

2.6569

q =

0.9700

X =

-2.4731

1.5106

-3.2266

2.3083

итераций

i =

36

Выводы:

Полученные результаты сведем в таблицу:

Метод Гаусса

LU – разложение

Метод вращений

МПИ

Метод Зейделя

итераций

-

-

-

46

36

решение

-2.4731

1.5106

-3.2266

2.3083

-2.4731

1.5106

-3.2266

2.3083

-2.4731

1.5106

-3.2266

2.3083

-2.4731

1.5106

-3.2266

2.3083

-2.4731

1.5106

-3.2266

2.3083

Исходя из полученных экспериментально данных, можно заключить, что скорость сходимости метода Зейделя выше, чем у МПИ. (метод Зейделя – 36 итераций, МПИ – 46 итераций) Однако, имеющий высокую скорость сходимости метод Зейделя, требует целиком сохранять n – элементный массив х на каждом шаге итерации, что вызывает дополнительные затраты ресурсов ЭВМ.

Положительное отличие метода Гаусса от других - простота реализации. Метод LU – разложения имеет смысл применять, если вектор – столбец свободных членов переменный. Метод вращений имеет самую высокую точность решения среди неитерационных методов решения СЛАУ.