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

Отчет по лабораторной работе № 3 на тему: «Решение СЛАУ итерационными методами»

по дисциплине «Вычислительные методы»

Постановка задачи.

Дана система уравнений. Найдите решение этой системы Ax=b А) методом Якоби; Б) методом Зейделя;

В) методом релаксации (SOR), подобрав наилучший (по возможности) параметр; Г) методом сопряженных градиентов (CG).

Сравните быстроту работы методов (по количеству итераций). Задачу следует решить для систем порядка (m) 5, 10 и 100.

1. Матрица A задается с помощью функции:

matrA(m) :=

for i 1 .. m

 

 

 

 

 

for j 1 .. m

 

 

 

A

cos(i + j)

+ 110 e

(ij )2

 

0.1 110

 

 

i ,j

 

 

 

 

A

 

 

 

 

Для m=5:

109.9621685

40.3767392

1.9552981

0.0393625

0.0873006

 

 

40.3767392

109.9405779

40.492526

2.1020085

0.0821116

 

 

 

A =

1.9552981

40.492526

110.0872882 40.5352751

2.001493

 

 

0.0393625

2.1020085

40.5352751

109.9867727

40.3839085

 

 

0.0873006

0.0821116

2.001493

40.3839085

 

 

 

109.9237208

Вектор правых частей b задается с помощью функции:

vectb (m) := for i 1.. m

bi 0.1 i3 + 110

b

Для m=5:

110.1

110.8 b = 112.7

116.4122.5

2. Матрица B задается с помощью функции:

matrB(A ,m) :=

for i 1..m

 

 

 

 

 

for j 1..m

 

 

 

 

 

 

Bi,j

0 if i

 

j

 

 

 

 

 

 

 

 

 

 

B

Ai,j

 

if i j

 

 

 

 

 

 

 

 

 

 

 

i,j

 

Ai,i

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

Для m=5:

 

0

 

 

 

 

0.3671875

 

4

4

 

 

 

 

 

 

0.0177816 3.5796447× 10

7.9391474× 10

 

 

0.3672597

 

 

 

 

0.3683128

 

4

 

 

0

0.0191195

7.4687298× 10

 

B =

0.0177613

 

 

0.367822

0

0.3682103

0.018181

 

 

3.578844× 104

 

0.0191115

0.3685468

0

0.3671706

 

 

 

 

 

7.9419243× 104

7.4698752× 104

0.018208

0.3673812

0

 

 

 

Вектор c задается с помощью функции:

 

 

 

vectc (A ,b ,m) :=

 

for

i 1..m

 

 

 

 

 

 

 

 

 

 

 

 

ci

 

bi

 

 

 

 

 

 

 

 

 

Ai,i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

Для m=5:

 

 

 

 

 

 

 

 

 

1.0012534

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.0078172

 

 

 

 

 

 

 

 

c=

3.Проверка условия сходимости для m=5 для нормы ||·||1.02373311.05830911.1144091

normi(B) = 0.7719746

Полученное значение меньше 1, следовательно условие сходимости выполняется.

2

4. Программы, реализующие итерационные методы. Обозначения:

n – число неизвестных, m – число итераций,

x0 – начальное приближение,

A, B – матрицы из пунктов 1-2, рассчитанные по функциям для соответствующих значений n,

b, c – вектора из пунктов 1-2, рассчитанные по функциям для соответствующих значений n.

Программа, реализующая метод Якоби:

yukobi(m,n ,x0,A ,b ,B,c) :=

x x0

 

 

 

 

 

k 0

 

 

 

 

 

 

 

 

 

 

g0 0

 

 

 

 

 

r0 b A x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r0 max(

 

r0

 

 

)

 

 

 

 

 

 

 

while k < m

 

 

 

 

 

 

 

 

 

 

 

 

 

y x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for i 1..n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

(Bi,j yj)+ ci

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi

 

 

 

 

 

 

 

 

j = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rez

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i,k+1

 

i

 

 

 

k k + 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rk b A x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rk max(

 

rk

)

 

 

 

 

 

 

 

 

 

g

k

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

stack(augment(g0,r0,x0T),augment(g ,r,rezT))

3

Программа, реализующая метод Зейделя:

zeid(m,n ,x0,A ,b ,B,c) := x x0

 

k 0

 

g0 0

 

r0

b A x

 

 

r0

max(

 

r0

 

)

 

 

while k < m for i 1..n

n

xi (Bi,j xj)+ ci j = 1

rezi,k+1 xi k k + 1

rk b A x

rk max( rk )

gk k

stack(augment(g0,r0,x0T),augment(g ,r,rezT))

Программа, реализующая метод релаксации:

rel(m,n ,x0,A ,b ,B,c,w) := x x0

 

k 0

 

g0 0

 

r0 b A x

 

 

r0 max(

r0

)

 

 

while k < m

 

for i 1..n

 

 

 

 

 

n

(Bi,j xj)+ w ci + (1 w) xi

 

 

 

 

xi w

 

 

 

 

j = 1

 

 

rezi,k+1 xi

k k + 1

 

rk b A x

 

 

 

rk max(

rk

)

 

gk k

stack(augment(g0,r0,x0T),augment(g ,r,rezT))

4

5.Значение параметра ω для метода релаксации, при котором норма невязки убывает быстрее всего:

ω =1,1

6.Программа, реализующая метод сопряженных градиентов:

grad(m,x0,A ,b) := r0 b A x0

 

 

result1,3 x0T

 

 

p0 r0

 

 

alf

r0 r0

 

 

 

 

 

 

 

 

A r0 r0

 

 

 

 

 

 

x2 x0 + alf p0

 

 

i 1

 

 

result2,1 i

 

 

result2,3 x2T

 

 

 

 

 

 

result1,2 max(

 

r0

 

 

)

 

 

 

 

 

while 1

 

 

 

x1 x2

 

 

 

 

 

 

r1 r0 alf A p0

 

 

bet r1 r1

 

 

 

 

 

r0 r0

 

 

 

p1 r1 + bet p0

 

 

 

alf

r1 r1

 

 

 

A p1 p1

 

 

 

 

 

 

 

 

x2 x1 + alf p1

 

 

 

r0 r1

 

 

 

p0 p1

 

 

 

i i + 1

 

 

 

resulti+1,1 i

 

 

 

resulti+1,3 x2T

 

 

 

 

 

 

resulti,2 max(

r0

)

 

 

 

break if i m

 

 

r1 r0 alf A p0

resulti+1,2 max( r1 )

result

5

7. Проверка действия программ для m=3, n=5, матриц A, B и векторов b, c, рассчитанных для m=5 и единичного вектора начальных приближений из 5 элементов. Для метода релаксации ω =1,1.

Метод Якоби:

 

 

0

82.3718804

1

 

1

1

1

 

1

 

 

 

1

59.8196007 0.6151325 0.2523783 0.2517585 0.3031223 0.7272788

yukobi(3,5,x0,A ,b ,B,c) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

34.485779

0.9034207 0.6828392 0.7951418 0.6934455 0.9977866

 

 

3

25.8195136 0.7353441 0.3691627 0.4830494 0.3855308 0.8439448

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

82.3718804

 

1

 

1

1

1

 

1

 

 

1

25.5195789 0.6151325 0.3937246 0.4815957 0.5059031 0.9189983

zeid(3,5,x0,A ,b ,B,c) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

5.4957682

0.8472085 0.5089348 0.6185011 0.4829036 0.9246847

 

3

1.3130694

0.802474

0.4753754 0.6400048

0.473548

0.9277909

Метод релаксации:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

82.3718804

1

 

1

1

1

 

1

 

rel(3,5,x0,A ,b ,B,c,

1.1) =

1

31.6368436 0.5766457 0.3486452 0.4487465 0.4707734 0.9258233

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

10.4829469

0.893123

0.5204568 0.6440098 0.4707585 0.9289185

 

 

3

3.2174206

0.7882575 0.4665278 0.6482963 0.4689472

0.929391

Метод сопряженных градиентов:

 

 

 

 

 

 

 

 

 

0

82.3718804

 

 

 

 

( 1 1 1

1 1 )

 

 

 

 

1

6.2251448

( 0.7666501 0.5467968 0.5458158 0.57738 0.8347036)

 

grad(3,x0,A ,b) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

3.1412392

( 0.8113988 0.4718491 0.6126522 0.4941571 0.9492896)

 

3

0.7317604

( 0.8220672 0.4648687 0.6465822 0.4629329 0.9329113)

 

6

8. Таблица 1. Решение СЛАУ порядка m = 5.

Номер

 

Норма невязки

 

Норма невязки

 

Норма невязки

Норма невязки для

итерации

 

для метода

 

для метода

 

для метода SQR

метода CG

 

 

Якоби

 

Зейделя

 

при ω=1,1

 

 

 

 

 

 

 

 

 

 

 

0

 

82.3718804

 

82.3718804

 

82.3718804

82.3718804

 

 

 

 

 

 

 

 

 

 

1

 

59.8196007

 

25.5195789

 

31.6368436

6.2251448

 

 

 

 

 

 

 

 

 

 

2

 

34.485779

 

5.4957682

 

10.4829469

3.1412392

 

 

 

 

 

 

 

 

 

 

3

 

25.8195136

 

1.3130694

 

3.2174206

0.7317604

 

 

 

 

 

 

 

 

 

 

4

 

15.069627

 

0.4748357

 

0.0474064

0.1968782

 

 

 

 

 

 

 

 

 

 

5

 

11.1376948

 

0.1691849

 

0.0197926

7.8201334*10^-15

 

 

 

 

 

 

 

 

 

 

6

 

6.6020427

 

0.062247

 

4.7339752*10^-3

0

 

 

 

 

 

 

 

 

 

 

10

 

1.2633238

 

1.2227787*10^-3

 

6.8273843*10^-6

0

 

 

 

 

 

 

 

 

 

 

15

 

0.1683223

 

9.1400055*10^-6

 

1.8506512*10^-9

0

 

 

 

 

 

 

 

 

 

 

20

 

0.0199908

 

6.834199*10^-8

 

4.9737992*10^-13

0

 

 

 

 

 

 

 

 

 

 

Таблица 2. Решение СЛАУ порядка m = 10.

 

 

 

 

 

 

 

 

 

Норма невязки для

 

 

Номер

 

Норма невязки

 

Норма невязки

Норма невязки

итерации

 

для метода

 

для метода

 

метода SQR при

для метода CG

 

 

 

Якоби

 

Зейделя

 

ω=1,1

 

 

 

 

 

82.3859701

 

 

0

82.3859701

82.3859701

82.3859701

 

 

 

 

1.4128235

 

 

4

31.5388678

0.9949374

1.9091779

 

 

 

 

0.0706312

 

 

7

8.6052029

0.093531

0.056911

 

 

 

 

4.4476555*10^-3

 

 

10

3.4123952

0.0108746

1.0168732*10^-15

 

 

 

 

1.6408453*10^-3

 

 

11

2.4812895

5.4082444*10^-3

0

 

 

 

 

5.4857986*10^-4

 

 

12

1.8411484

2.7473668*10^-3

0

 

 

 

 

1.7252942*10^-5

 

 

15

0.7253586

3.4263969*10^-4

0

 

 

 

 

4.804663*10^-8

 

 

20

0.2133492

8.2758462*10^-6

0

 

 

 

 

4.5433524*10^-9

 

 

22

0.0858819

1.7676234*10^-6

0

 

 

 

 

1.1937118*10^-12

 

 

29

0.0137599

7.1743216*10^-9

0

 

 

 

 

3.6948222*10^-13

 

 

30

7.4777144*10^-3

3.2480045*10^-9

0

 

 

 

 

 

 

 

 

 

 

7

Таблица 3. Решение СЛАУ порядка m = 100.

Номер

Норма невязки

Норма невязки

Норма невязки

Норма невязки

итерации

для метода Якоби

для метода

для метода SQR

для метода CG

 

 

Зейделя

при ω=1,1

 

 

 

 

 

 

0

9.9957553*10^4

9.9957553*10^4

9.9957553*10^4

9.9957553*10^4

 

 

 

 

 

10

6.0255085*10^3

7.1592019

4.4137716

5.4013765

 

 

 

 

 

20

415.8054455

8.4782202*10^-3

1.577451*10^-3

1.5267986*10^-3

 

 

 

 

 

35

7.8677214

5.3831172*10^-7

4.5110937*10^-9

9.6779317*10^-10

 

 

 

 

 

37

4.647257

1.5088881*10^-7

9.3859853*10^-10

1.6727035*10^-10

 

 

 

 

 

45

0.5655975

9.4587449*10^-10

2.910383*10^-11

1.459562*10^-13

 

 

 

 

 

50

0.1520457

6.5483619*10^-11

2.910383*10^-11

1.5562589*10^-15

 

 

 

 

 

80

5.8818878*10^-5

2.1827873*10^-11

2.910383*10^-11

0

 

 

 

 

 

100

3.1665695*10^-7

2.1827873*10^-11

2.910383*10^-11

0

 

 

 

 

 

120

1.724402*10^-9

2.1827873*10^-11

2.910383*10^-11

0

 

 

 

 

 

123

7.9307938*10^-10

2.1827873*10^-11

2.910383*10^-11

0

 

 

 

 

 

150

2.910383*10^-11

2.1827873*10^-11

2.910383*10^-11

0

 

 

 

 

 

Примечание: подчеркнуты номера значений и соответствующие им номера итераций, на которых невязка впервые уменьшается в К=1010 раз.

10. Выводы.

1) Сравнение номеров итерации, на которых невязка впервые уменьшается в К=1010 раз для рассматриваемых итерационных методов.

Порядок СЛАУ

 

Номер итерации

 

 

 

 

 

Метод Якоби

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

Метод SQR

Метод CG

 

 

 

 

15

 

5

-

-

5

 

 

 

22

 

10

-

29

10

 

 

 

37

 

100

123

45

35

 

 

 

 

 

8

2) Сравнение качества приближения на m-й итерации:

Для m=5, 10, 100 норма невязки метода CG равна нулю, то есть метод дает точное решение. Норма невязки для метода SQR при m=5, 10 меньше, чем норма невязки для методов Зейделя и Гаусса, то есть метод дает более приближенное к искомому решение на данном этапе. При m=100 норма невязки для метода Зейделя имеет наименьшее значение при сравнении методов Якоби, Зейделя и SQR, и показывает, что метод Зейделя дает более приближенное к искомому решение, чем другие два.

3) Результаты расчета уменьшения нормы невязки на m-й итерации и скорости сходимости методов Якоби и Зейделя.

Порядок СЛАУ

Уменьшение нормы невязки на последней итерации (число раз)

 

 

 

 

Метод Якоби

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

Метод SQR

Метод CG

 

 

 

 

16,56*1013

 

5

41,2*102

12,05*108

 

 

 

22,3*1013

 

10

11,02*103

25,37*109

 

 

 

 

34,35*1014

 

100

34,35*1014

45,79*1014

 

Метод Якоби сходится со скоростью геометрической прогрессии со знаменателем q=||B||.

Для m=5:

normi(B) = 0.7719746

q=0,7719746

Практически полученное значение q 0,6 ÷0,77.

Метод Зейделя сходится со скоростью геометрической прогрессии со знаменателем q=||B2|| / (1-||B1||).

Для m=5:

normi(B1) = 0.3881792

normi(B2) = 0.3880162

0.3881792

 

= 0.6342965

1 0.3880162

 

q= 0,6342965

Практически полученное значение q 0,2 ÷0,54.

9

4)Введение значения релаксационного параметра в методе SQR оказалось достаточно эффективным по сравнению с методами Якоби и Зейделя - метод SQR сходится быстрее методов Зейделя и Якоби; и не эффективным по сравнению с методом сопряженных градиентов, так как сходится медленнее него.

5)Для СЛАУ порядка m=5 норма невязки в методе сопряженных градиентов перестала изменяться после 5-го шага, порядка m=10 – 10-го шага, порядка m=100 – 50-го шага. Шагов в методе сопряженных градиентов не может быть больше, чем количество неизвестных (не больше размерности пространства, в котором ищем решение).

11. Графики зависимости десятичного логарифма нормы невязки для различных

итерационных методов при m=20, n=5, матриц A, B и векторов b, c, рассчитанных для m=5

и единичного вектора начальных приближений из 5 элементов:

 

 

 

 

 

0

 

 

 

 

log yukobi

i

,2)

 

 

 

 

(

 

 

 

 

 

 

log zeid

i ,2)

 

 

 

 

 

(

 

 

 

 

 

 

log rel

 

 

 

 

 

 

 

(

i ,2)

 

 

 

 

 

 

log grad

 

 

 

 

 

 

(

 

i ,2)

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

200

5

10

15

20

 

 

 

 

 

 

reli ,1

 

 

 

 

 

 

 

 

 

 

10

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