Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ_2012 / Лекции / Численные_методы.pdf
Скачиваний:
392
Добавлен:
09.06.2015
Размер:
1.99 Mб
Скачать

47

for j = 1:n temp = a(i,i); a(i,i) = 0;

x_1(i) = x_1(i)-a(i,j)*x(j); a(i,i) = temp;

end

x_1(i) = (x_1(i)+a(i,m))/a(i,i); end

x = x_1; z_prev = z;

end

Рис.3.4. Метод простых итераций

4) МЕТОД ЗЕЙДЕЛЯ

Данный метод очень похож на метод простых итераций, отличие заключается в том, что как только мы нашли из формул (*) очередной x1 , то его мы

подставляем сразу же в формулу (*) для x2 . Находим этот x2 и подставляем его вместе с найденным на этой итерации x1 в формулу (*) для x3 , тем самым мы ускоряем процесс.

Для системы (1) зададим начальные значения x1 = 0,

x2 = 0, x3 = 0;

Тогда, из (*) имеем:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

11

 

14

 

 

11

 

 

 

 

5

 

 

= −

14

 

 

 

=

17 + 4

 

 

 

2

 

 

x =

,

x

2

= −

5

,

x

3

5

 

15

0.904762;

 

 

 

 

 

 

 

 

 

 

1

5

 

 

 

3

 

 

15

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Продолжаем итерации (см. табл.3.2):

 

 

 

 

 

 

48

x1

x2

x3

11(5x1 2x2 + x3 )

5 ( x1 3x2 + x3 )

17(4x1 +2x2 7x3)

0

2,2

-0,93333

0,904762

2,771429

-0,90476

0

1

1,645714

-0,63175

0,904762

-0,60317

0,554286

-2,82032

2

1,766349

-0,81651

1,307664

0,772426

-0,52354

0,852063

3

1,611864

-0,642

1,185941

-0,47075

0,276209

-0,96697

4

1,706014

-0,73407

1,324079

0,322277

-0,23229

0,560738

5

1,641558

-0,65664

1,243974

-0,23496

0,144561

-0,41268

6

1,688551

-0,70482

1,302928

0,155328

-0,10595

0,284345

7

1,657485

-0,66951

1,262307

-0,11125

0,071686

-0,19489

8

1,679736

-0,6934

1,290149

0,075633

-0,05009

0,136793

9

1,664609

-0,67671

1,270607

-0,05294

0,034668

-0,0939

10

1,675197

-0,68826

1,284022

0,036527

-0,024

0,065462

11

1,667891

-0,68026

1,27467

-0,02535

0,016657

-0,04522

12

1,672962

-0,68581

1,281131

0,017565

-0,01153

0,031387

13

1,669449

-0,68197

1,276647

-0,01217

0,007997

-0,02174

14

1,671883

-0,68463

1,279752

0,008437

-0,00554

0,015068

15

1,670196

-0,68279

1,2776

-0,00585

0,00384

-0,01044

16

1,671365

-0,68407

1,279092

0,004052

-0,00266

0,007237

17

1,670554

-0,68318

1,278058

-0,00281

0,001844

-0,00502

18

1,671116

-0,6838

1,278774

0,001946

-0,00128

0,003476

19

1,670727

-0,68337

1,278278

-0,00135

0,000886

-0,00241

20

1,670996

-0,68367

1,278622

0,000935

-0,00061

0,001669

21

1,67081

-0,68346

1,278383

-0,00065

0,000425

-0,00116

22

1,670939

-0,6836

1,278549

0,000449

-0,00029

0,000802

23

1,670849

-0,6835

1,278434

-0,00031

0,000204

-0,00056

24

1,670912

-0,68357

1,278514

0,000216

-0,00014

0,000385

25

1,670868

-0,68352

1,278458

-0,00015

9,81E-05

-0,00027

26

1,670898

-0,68356

1,278497

0,000104

-6,8E-05

0,000185

27

1,670878

-0,68354

1,27847

-7,2E-05

4,71E-05

-0,00013

28

1,670892

-0,68355

1,278489

4,97E-05

-3,3E-05

8,88E-05

Таблица.3.2. Итерации Зейделя

Таким образом, вектор ответов:

x1x2

x3

=1,670892

=0.68355 ;

=1.278489

Теперь представим решение в системе Scilab.

Попробуйте найти отличия этой программы от предыдущей, а еще лучше напишите код сами!

Листинг 3.4. e = 0.0001;

z_prev = 1000000;

f = mopen('C:\Matrix.txt','r'); n = mfscanf(f,'%d');

m = mfscanf(f,'%d'); for i = 1:n

for j = 1:m

a(i,j) = mfscanf(f,'%g');

49

end end mclose(f);

//проверка на сходимость for i = 1:n

for j = 1:n

if abs(a(i,j)) > abs(a(i,i)) disp('Система расходится'); return;

end end

end

//будущий вектор ответов

for i = 1:n x(i) = 0.0;

end

while 5 < 7 for i = 1:n

x_1(i) = 0.0; end

z = 0; z_1 = 0; z_2 = 0; for i = 1:n

z = z + a(1,i)*x(i);

z_1 = z_1 + a(2,i)*x(i); z_2 = z_2 + a(3,i)*x(i);

end

z = a(1,m)-z;

z_1 = a(2,m)-z_1; z_3 = a(3,m)-z_2;

if abs(z) < e & abs(z_1) < e & abs(z_1) < e disp('Вектор ответов');

x return;

end

for i = 1:n for j = 1:n

temp = a(i,i); a(i,i) = 0;

x_1(i) = x_1(i)-a(i,j)*x(j); a(i,i) = temp;

end

x_1(i) = (x_1(i)+a(i,m))/a(i,i); x(i) = x_1(i);

end z_prev = z;

end

W W * = E ,

50

Рис.3.5 Метод Зейделя

5) МЕТОД ОТРАЖЕНИЙ

Метод отражений применяется для решения систем линейных уравнений Ax = f . Это один из лучших методов для решения СЛАУ общего вида

(матрица системы может быть как действительной, так и комплексной). Идея метода заключается в следующем: матрица A системы раскладывается в произведение двух матриц – унитарной матрицы и правой треугольной матрицы: A =WT , где W - унитарная матрица, T - правая треугольная матрица.

Унитарная матрица W – такая матрица, для которой выполнено:

где E - единичная матрица. Унитарную матрицу W можно получить как произведение специальных матриц, называемых матрицами отражения Vi :

W =Vi .

i

 

 

 

 

 

 

 

a

a

K

a

 

 

 

11

12

 

1n

 

 

Разложение матрицы

A = a21

a22

K a2n

системы в произведение

 

M

M

O

K

 

 

 

an2

 

 

 

 

 

an1

K ann

 

унитарной и правой треугольной происходит в несколько этапов:

1)Задаем вектор S . В качестве данного вектора выбираем первый столбец матрицы A системы: S = (a11 ,a21 , K,an1 ) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Находим вектор ϖ1 по формуле: ω =

 

 

S

 

S

 

 

e

, где

e - единичный

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

S

 

 

S

 

 

 

 

 

 

вектор. Заметим, что ω - вектор-столбец единичной длины ( (ω,ω) =1).

Строим матрицу отражения по формуле:

V1 = E 2ϖ1ϖ1* .

 

Домножаем A слева на V1 , получаем матрицу

A1 =V1 A ,

которая имеет

следующий вид:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

51

 

 

 

 

 

 

 

 

 

 

a

 

(1) a

(1)

K

a

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

12

(1)

 

 

1n

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

A

=

0

a22

K a2n

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

M

 

M

 

O

K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

a

 

(1)

K a

 

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n2

nn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Домножаем также B - вектор свободных членов, слева на V1 , получаем

матрицу

B1 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Получаем новую систему

A1 X = B1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

 

 

выбираем

вектор

 

 

 

(1) , K, an2

(1) ) . В

Теперь в качестве вектора S

 

S = (0, a22

 

качестве же

e

возьмем вектор равный

 

e = (0,1, 0, K,0) . С помощью

 

приведенных выше формул

находим вектор ϖ

2

 

и строим матрицу V2

 

по формуле V2 = E 2ϖ

2ϖ

2

* .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Находим матрицу A2 =V2 A1 , которая имеет следующий вид:

 

 

 

a (2)

a (2)

a

(2)

K a

(2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

12

13

 

 

 

1n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

0

a22 (2)

a23(2)

K a2n (2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

0

0

a

(2)

K a

 

(2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

33

3n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

M

 

M

O

 

K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

(2)

 

 

 

 

(2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

an3

K ann

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Домножаем B1 слева на V2 . Получаем новую систему A2 X = B2 Продолжая описанный процесс построения, на (n 1) -м шаге получим матрицу An1 =Vn1 Vn2 K V2 V1 A , которая имеет вид:

 

a

(n1)

a (n1)

K

a

(n1)

 

 

 

11

12

 

1n

 

An1

=

 

0

a22(n1)

K a2n (n1)

.

 

 

 

M

M

O

 

K

 

 

 

 

0

0

K a

(n1)

 

 

 

 

 

 

 

 

 

 

 

 

nn

 

В итоге, получим систему An1 X = Bn1 . Далее решение можно легко найти, используя метод обратной подстановки.

Рассмотрим пример. Дана система линейных уравнений:

X1 + X 2 + X 3 = 3,

2X1 + X 2 +3X 3 = 6,

X1 + 2X 2 2X 3 =1.

эту систему можно записать в матричном виде: A X = B ,

1

1

1

X1

3

A = 2

1

3 ,

X = X 2

,

B = 6 .

 

2

 

 

 

 

1

2

X 3

 

1

52

1

В качестве S возьмем первый столбец матрицы A : S = 2 , S = 6 в

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

S e

1

6

 

 

 

 

6 .

 

 

 

 

 

качестве e : e =

0

,

=

2

 

=

12 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 2

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Находим ω :

ω

=

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 2

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найдем матрицу V1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

6

 

 

 

 

2

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

ω* =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 2 6

 

12 2 6

 

12 2 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

7

2 6 2

2 6 1

6

 

 

 

 

 

 

 

 

 

 

 

 

ωω* =

 

 

2 6

 

4

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

2 6

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

1

 

6

 

2

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 0

 

 

 

 

7 2 6 2 2 6 1

6

 

 

 

 

6 1 2 6 2

6 1

V =

0 1 0 1

 

2

2 6

 

4

 

2

 

 

= 1

 

2 6

2 2

6

2

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

6

 

 

 

 

 

 

 

 

 

 

 

6 6

 

 

 

2

 

1

 

 

 

6

1

2

5

6

 

 

0 0 1

 

 

 

 

16

 

 

 

 

 

 

 

 

Домножаем

A слева на V1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6 6 6 5 6 5 5 6 5

 

 

 

 

 

 

 

 

 

 

A1 =V1 A =

 

1

 

 

 

0

 

6 4

8 6

 

 

 

 

 

 

 

 

 

 

 

 

 

6 6

 

 

0

 

7 6 3 6 17

 

 

 

 

 

 

 

 

 

 

Домножаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B слева на V1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

6

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B1 =V1 B =

1

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

6

2

6 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Получаем новую систему

 

1

A1 X =

 

1

B1

или A1 X = B1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

6

 

6

6

 

 

 

 

 

 

 

 

53

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

На 2-м шаге в качестве

 

возьмем: S =

6 4 ,

S =

77 22

6 в качестве

S

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e :

e = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

S

 

6

4

 

77 22

 

154 44

6 2(

6 4)

77 22

6 = 7,819

S e =

 

6 =

 

 

 

7

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

4

77 22

6

 

 

 

 

 

 

 

 

 

ω :=

 

154 44

6 2(

6 4)

77 22

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

6

 

 

 

 

 

 

 

Находим ω :

 

 

 

 

 

 

6 2(

6 4)

 

 

 

 

 

 

 

 

 

 

154 44

77 22

6 .

 

 

Найдем матрицу V2 :

 

 

 

 

 

6 4 77 22 6

 

 

 

 

7 6

 

 

ω* = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

154 44

6 2( 6 4) 77 22 6

154 44 6 2( 6

4) 77 22 6

 

 

 

 

 

ωω* =

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

154 44

6 2( 6 4) 77 22

6

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

( 6 4

77 22 6 )

2

(7

6)( 6 4 77

 

 

 

0

 

 

22 6 )

 

 

 

 

6)( 6 4 77 22 6 )

 

(7

6)

2

 

 

 

0 (7

 

 

 

 

 

 

1

0

0

 

 

 

1

 

 

 

 

 

 

 

V = 0

1

0

 

 

 

 

 

 

 

 

 

 

2

 

 

 

77

22 6 ( 6 4) 77 22 6

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

( 6 4

77 22 6 )

2

(7

6)( 6 4 77

 

 

 

0

 

 

22 6 ) =

 

 

 

 

6)( 6 4 77 22 6 )

 

(7

6)

2

 

 

 

0 (7

 

 

 

 

 

=

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

77 22

6 (

6 4) 77 22

6

 

 

 

 

 

 

 

1

 

 

 

 

0

 

 

 

 

0

 

 

 

 

22 +8 6 + ( 6 4) 77 22 6 (7 6)( 6 4

 

 

 

0

77 22 6 )

 

 

(7 6)( 6 4 77 22 6 ) 22 8 6 ( 6 4) 77 22 6

 

 

0

 

 

Домножаем A1 слева на V2 , предварительно домножив обе части

 

системы A1 X = B1

на

 

 

1

 

 

 

:

 

 

 

6 (

6 4)

77 22 6

 

 

 

 

 

 

 

77 22

 

 

 

54

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

A

=V

A

=

0

 

 

22 +8 6 + ( 6 4) 77 22 6 (7 6)( 6 4 77 22 6 )

 

 

 

 

 

2

 

 

2 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(7 6)( 6 4

77 22 6 ) 22 8 6 ( 6 4) 77 22 6

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

6 6 6 5 6 5 5 6 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

6 4

8

6

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

7

 

6

3 6 17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6 6 6

 

 

 

 

 

 

 

 

 

5 6 5

 

 

 

 

5 6 5

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

(77 22

6)(

77 22 6 6 + 4) (175 50

6)(

6 4

77 22

 

 

 

 

 

 

=

 

 

 

 

6 )

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

 

(24 14

6)(

6 4

77 22 6 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Домножаем

B1

 

слева на V2 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

B

2

=V B = 0

22 +8 6 + ( 6 4) 77 22 6 (7 6)( 6 4 77 22 6 )

 

 

 

 

 

 

2 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(7 6)( 6 4

77 22 6 ) 22 8 6 ( 6 4) 77 22 6

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

16

6 16

 

 

 

 

 

 

 

 

 

16

6 16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

6)(

6 4

77 22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= (98 28

6 )

 

 

 

 

 

 

 

 

 

 

 

 

2

6

10

 

 

 

(24 14

6)(

6 4

77 22

6 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Получаем новую систему

A2 X = B2 :

 

 

 

 

 

 

 

 

 

 

 

6 6 6

 

 

 

 

 

 

 

 

 

 

5 6 5

 

 

 

 

 

5 6 5

 

 

 

X1

 

 

 

 

 

0

 

(77

22

 

6)(

77 22

6

6 + 4)

(175 50

6)( 6 4

77 22

 

 

 

 

=

 

 

 

 

 

6 )

X 2

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

(24 14

6)(

6 4

77 22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6 )

X 3

 

 

 

 

 

 

 

 

 

 

 

16

 

6 16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

28

6)(

 

6 4

77 22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(98

 

6 ) .

 

 

 

 

 

 

 

 

 

 

 

 

 

(24

14

6)(

 

6 4

77 22

6 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отсюда X = [1

 

 

1

 

1].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача

 

1.

 

Решить систему

трех

линейных

алгебраических

уравнений

 

 

 

4x 2x

2

+ x

3

=12,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

методом отражений.

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 +4x2 2x3 = 7,

 

 

 

 

 

 

 

 

 

 

 

 

 

2x x

2

+4x

3

= 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение.

Приведем решение данной задачи в системе Scilab.

 

 

 

 

 

Листинг 3.5.

n=3;

A=[4, -2, 1;1, 4, -2;-2, -1, 4]; //задаем матрицу системы b=[12, 7, 0]; //задаем вектор свободных членов

for i=1:n s(i)=0; v(i)=0; e(i)=0;

55

b1(i)=0; for j=1:n

E(i, j) = 0; V(i, j) = 0; A1(i, j) = 0;

end

E(i, i) = 1; end norma=0; norma1=0; for i = 1:n-1

norma = 0; norma1 = 0; e(i) = 1;

for j = i:n

s(j) = A(j, i);

norma1 = norma1+ s(j)*s(j);

end

for j = 1:i-1 s(j) = 0;

end

norma1 = sqrt(norma1); for j = i:n

w(j) = s(j) - norma1*e(j); norma = norma+w(j)*w(j);

end

norma = sqrt(norma); for j = i:n

w(j) = w(j) / norma;

end

for j = i:n

for l = i:n

V(j, l) = E(j, l) - 2*w(j)*w(l);

end

end

for j = i:n

for l = i:n

b1(j) = b1(j)+V(j, l)*b(l); for k = i:n

A1(j, l) = A1(j, l)+V(j, k)*A(k, l);

end

end

end

for j=i:n

b(j) = b1(j); b1(j) = 0; for l=i:n

A(j, l) = A1(j, l); A1(j, l) = 0;

end

end e(i) = 0;

56

end x=[0,0,0]; for i=n:(-1):1

x(i) = b(i); for j=i+1:n

x(i)=x(i)-A(i, j)*x(j);

end

x(i) = x(i)/A(i, i); end

"Решение: " for l = 1:n

x(l) //выводим вектор-решение (х1, х2, х3) end

Рис. 3.6. Метод отражений

Решим теперь систему уравнений с комплексными коэффициентами.

Задача 2. Решить систему трех линейных алгебраических уравнений

(4 +2i) x1

2x2 + x3 =12,

 

+i) x1 +4x2 2x3 = 7, методом отражений.

(1

2x

x

2

+4x

3

= 0.

 

1

 

 

 

Решение. Программа для решения этой задачи отличается от предыдущей программы только коэффициентами матрицы системы, все остальные действия, производимые в программе, - точно такие же.