Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КМСхКТ_мет_2012.doc
Скачиваний:
6
Добавлен:
19.11.2019
Размер:
1.81 Mб
Скачать

6.2.Метод Гауса-Зейделя

Головний недолік метода Якобі полягає у тому, що для заміни попереднього вектора змінних треба отримати повний вектор нових значень, що не тільки потребує більше памяті для зберігання попереднього і нового векторів змінних, але й сповільнює сходимість розрахунків [6]. Тому розрахунки виконуються за формулою:

.

(6.4)

Фрагмент програми Gauss-Zadel, що реалізує метод Гауса-Зейделя наведений нижче.

Repeat

writeln; write('it=',it:2);

for i:=1 to n do

Begin

x1:=b[i]; kl:=0;

for j:=1 to n do

begin x1:=x1+a[i,j]*x[j];

if abs(x1-x[i])>0.001 then kl:=1; x[i]:=x1;

end;

write(x1:9:3);

End;

Until kl=0;

Результати розрахунку системи із задачі 5.5 методом Гауса-Зейделя наведені в таблиці:

it

Х1

х2

х3

0

0.000

0.000

0.000

1

3.000

1.000

0.500

2

4.000

1.500

0.750

3

4.500

1.750

0.875

4

4.750

1.875

0.938

5

4.875

1.938

0.969

6

4.938

1.969

0.984

7

4.969

1.984

0.992

8

4.984

1.992

0.996

9

4.992

1.996

0.998

10

4.996

1.998

0.999

11

4.998

1.999

1.000

12

4.999

2.000

1.000

13

5.000

2.000

1.000

При застосуванні метода Гауса-Зейделя для заданої задачі обчислювальний процес зійшовся удвічи швидше порівняно з методом Якобі.

6.3.Метод послідовної верхньої релаксації

Метод верхньої релаксації – це розвиток метода Гауса-Зейделя [6]. В основі метода лежить послідовне зменшення залишка (різниці між поточним і точним значеннями) для кожного невідомого. Він базується на лінійній екстраполяції між двома кроками послідовного заміщення. Нові значення невідомих розраховуються за формулою

xi(k+1) = xi(k) + w(xi(k+1) - xi(k)),

(6.5)

де xi(k+1), що записане праворуч – значення змінної, розрахованої за методом Гауса-Зейделя; w – релаксаційний множник (1  w  2).

Фрагмент програми Relax, що реалізує метод верхньої релаксації навендено нижче.

Repeat

writeln; write('it=',it:2); kl:=0;

for i:=1 to n do

Begin

x1:=b[i];

for j:=1 to n do

x1:=x1+a[i,j]*x[j];

dx:= w*(x1-x[i]);

x[i]:=x[i]+dx;

write(x[i]:9:3);

If abs(dx)>0.001 then kl:=1;

End;

Until kl=0;

Результати розвязання системи рівнянь (6.1) для w = 1.2 і точності =0.001 наведено у таблиці:

t

х1

х2

х3

0

0.000

0.000

0.000

1

3.600

1.440

0.864

2

4.608

1.901

0.968

3

4.959

1.991

1.001

4

4.997

2.001

1.000

5

5.002

2.001

1.000

6

5.000

2.000

1.000

При застосуванні метода послідовної верхньої релаксації з коефіцієнтом w = 1.2 обчислювальний процес зійшовся удвічи швидше порівняно з методом Гауса-Зейделя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]