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

ЛР_ОТП_M03434

.pdf
Скачиваний:
4
Добавлен:
07.02.2016
Размер:
744.43 Кб
Скачать

51

,

матриця якої є верхньою трикутною. На цьому обчислення прямого

ходу закінчуються.

Зворотний хід. І останнього рівняння системи знаходимо

xm = bm / amm . Підставляючи знайдене значення xm в передостаннє

рівняння, отримаємо xm−1 . Далі послідовно знаходимо невідомі:

1

æ

m

ö

 

 

 

ç

åaik

÷

xi = a

 

çbi -

× xk ÷

 

 

ii è

k =i+1

ø , i=m-1, m-2, …, 1.

Метод Гаусса доцільно використовувати для вирішення систем з

щільно заповненою матрицею

і порядком системи n ≤ 100. Число

арифметичних операцій приблизно рівне (2/3)n2 .

Метод заснований на обчислені оберненої матриці А-1

Система записується у вигляді АХ=В. Тоді, якщо помножити обидві частини цього векторного рівняння зліва на обернену матрицю А-1, отримаємо

Х = А-1В.

Проте, якщо не використовувати економічних схем для обчислення оберненої матриці, цей спосіб також непридатний для практичного вирішення лінійних систем при великих n(наприклад для n =10).

Метод Крамера

Менш трудомістким є метод Крамера, у якому значення невідомих можна отримати за допомогою формули

xi = det Ai , i = 1, 2, … , n, det A

PDF created with pdfFactory Pro trial version www.pdffactory.com

52

де матриця Ai формується з матриці A заміною її і-го стовпця на стовпець вільних членів

Можна спробувати використовувати це правило для вирішення систем рівнянь довільного порядку. Проте при великому числі рівнянь потрібно буде виконати величезне число арифметичних операцій. Кількість арифметичних операцій N =(n+1)(n*n!-1)+n. Вже коли n =50, такий об’єм обчислень практично недоступний сучасним комп’ютерам.

Реалізація прямих методів в системі MatLab

У системі MatLab для вирішення системи лінійних рівнянь алгебри, одній з популярних в обчислювальній математиці, передбачені навіть "елементарні" операції.

Так для вирішення системи AX=B (A - матриця коефіцієнтів розмірності n*n, B- вектор правих частин розмірності n, Х векторівстовпець невідомих) можна використовувати команду зворотного розподілу "\". Наприклад, для розв’язання системи

x1+2 x2+3 x3 = 3

5 x1+4 x2+3 x3 = 9

3 x1+4 x2+3 x3 = 6

задаємо матрицю коефіцієнтів і вектор правої частини

>> A=[1 2 3; 5 4 3; 3 4 3]

 

1

2

3

A =

5

4

3

 

3

4

3

>> B=[3 ; 9 ; 6 ]

 

 

 

3

 

 

B =

9

 

 

 

6

 

 

PDF created with pdfFactory Pro trial version www.pdffactory.com

53

и виконати

>>X=A\B

Алгоритм розв’язання СЛАР за допомогою оператора \ у MatLab визначається структурою матриці коефіцієнтів системи. Під простотою рішення ховається досит серйозний аналіз структури матриці і використання кращого по точності і швидкодії алгоритму (метод Гаусса, розкладання Холецкого і ін.).

Для отримання оберненої матриці передбачена операція піднесення до ступеня -1 і функція inv(A):

>> A=[1 2 3; 5 4 3; 3 4 3] A =

1 2 3

5 4 3

3 4 3

>>C=inv(A) C =

-0.0000 0.5000 -0.5000 -0.5000 -0.5000 1.0000 0.6667 0.1667 -0.5000

Нагадаємо, що обернення матриці може виявитися корисним при вирішенні системи AX=B у вигляді X=A-1B:

>> B=[3 ; 9 ; 6 ]

 

3

B =

9

 

6

>> X=inv(A)*B

X

1.5000

= 0 0.5000

PDF created with pdfFactory Pro trial version www.pdffactory.com

54

Системи з погано обумовленими матрицями

Розглянемо простий приклад: потрібно знайти розв’язок систе-

ми:

ì2x +

3x

2

+

3x

3

= 8,

ï

1

 

 

 

 

í4x1 +

2x2

+

3x3

= 7,

ï

 

5x2

+

6x3

= 7.

î6x1 +

Розв’язання в MatLab: >>A=[2 3 3

4 2 3

6 5 6]; >>B=[8;7;7]; >>x=A\b

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate.

x=1.e+016*

0.9007

1.8014 -2.4019

У командне вікно виводиться попередження про те, що матриця вироджена або погано обумовлена, і розв’язок x. Розв’язок невірний, в чому нескладно переконатися перевіркою, помноживши А на х.

знаходження розв’язку системи лінійних рівнянь алгебри визначається числом обумовленості матриці. Перед розв’язуванням системи має сенс обчислити число обумовленості матриці системи за допомогою вбудованої функції cond, задавши аргументом матрицю А, де

cond(A)= A * A−1 - відносне число обумовленості системи.

Якщо число обумовленості більше 10, то система є погано обумовленою, оскільки можливе сильне зростання похибки результату.

Ітераційні методи і їх реалізація в пакеті MatLab

Ітераційними методами вирішення систем лінійних рівнянь

PDF created with pdfFactory Pro trial version www.pdffactory.com

 

 

 

 

 

 

 

 

 

55

ì a x + a x

2

+ ×××a

 

x

n

= b ,

ï

11 1

12

 

1n

 

1

 

ïa21 x1 + a22 x2 + ×××a2n xn = b2 ,

í

 

 

 

 

×××

 

 

 

 

 

 

ï

 

 

 

 

 

 

 

 

 

 

ïa

x + a

n2

x

2

+ ×××a

nn

x

n

= b

n

,

î

n1 1

 

 

 

 

 

називаються методи, що дають вирішення системи рівнянь як межу послідовності наближень, що обчислюються за одноманітною схемою.

Ітерація Якобі:

xik +1

 

b - a

i1

xk -... - a

ii-1

xk

- a

xk

-... - a

in

xk

 

 

 

=

i

i

i-1

 

i

i+1

 

 

 

n

 

для i=1,2,…,n.

 

 

 

 

 

aii

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ітерація Зейделя:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xik +1

 

b - a

i1

xk +1 -... - a

ii-1

xk +1

- a

xk

-... - a

in

xk

=

i

i

 

i-1

 

i

i+1

 

 

 

 

n

для i=1,2,…,n.

 

 

 

 

 

 

aii

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Достатньою умовою збіжності ітераційних процесів і в методі Якобі, і в методі Зейделя є умова домінування коефіцієнтів що стоять на головній діагоналі:

n

aii > å aij для i=1,2,…,n.

j=1 j¹i

Приклад 6.1. Розглянемо систему лінійних рівнянь

4x -

y +

z = 7

4x -

8y +

z = - 21

- 2x +

y +

5z = 15

Точне рішення:

>>a=[4 -1 1;4 -8 1; -2 1 5]; b=[7;-21;15];

>>x=a\b

x = 2 4 3

PDF created with pdfFactory Pro trial version www.pdffactory.com

56

Итерація Якобі: Рівняння запишим у виді

x = 7 + y z

4

y= 21+ 4x + z

8

z= 15 + 2x y . 5

Це дозволяє запропонувати ітераційний процес Якобі:

xx+1

=

 

7 + yk zk

 

4

 

 

 

 

 

 

 

 

yk +1

=

 

21+ 4xk + zk

 

8

 

 

 

 

 

 

 

 

zk+1

=

 

15 + 2xk yk

.

 

 

 

5

 

 

 

Покажемо, що якщо почати з , P0 = (x0 ; y0 ; z0 ) = (1;2;2), то ітерації сходяться до розв’язку(2;4;3).

Підставимо x0 = 1, y0 = 2, z0 = 2 в праву частину кожного рівняння, набути нових значень:

x

=

 

 

7 + 2 − 2

= 1.75

 

 

1

4

 

 

 

 

 

 

 

y

 

=

21+ 4 + 2

= 3.375

 

 

1

8

 

 

 

 

 

 

 

z

=

15 + 2 − 2

= 3.00.

 

1

5

 

 

 

 

 

 

 

Нова точка P1 = (1.75;3.375;3.00) ближче до (2;4;3), чим P0. Іте-

рації, що використовують ітераційні формули Якобі, генерують послідовність точок Pк. , яка сходиться до розв’язку(2;4;3).

Цей процес називається ітерацією Якобі і може використовуватися для вирішення лінійних систем. Після 19-і ітерацій послідовність наближених рішень сходиться до наближення з дев'ятьма значущими цифрами (2.00000000; 4.00000000; 3.00000000). Лінійні системи з та-

PDF created with pdfFactory Pro trial version www.pdffactory.com

57

кою великою кількістю змінних, як 100000, часто виникають при розв’язуванні диференціальних рівнянь із частинними похідними.

Ітерація Зейделя

Метод можна розглядати як модифікацію методу Якобі. Основна ідея полягає в тому, що при обчисленні чергового (k+1)-го наближення до невідомого xi при i >1 використовують вже знайдені (k+1)-е наближення до невідомих x1, x2, ..., xi-1, а не k-е наближення, як в методі Якобі.

Ітеративний процес Зейделя запишемо в наступному виді::

xx+1

=

 

7 + yk

zk

 

4

 

 

 

 

 

 

 

 

 

 

 

yk +1

=

 

21+ 4xk +1 + zk

 

 

8

 

 

 

 

 

 

 

 

 

 

zk+1

=

15 + 2xk +1 yk+1

.

 

 

 

 

 

5

 

 

 

Покажемо, що якщо почати з точки

P0 = (x0 ; y0 ; z0 ) = (1;2;2), то іте-

рації сходяться до розв’язку(2;4;3). На першій ітерації :

x

=

 

7 + 2

− 2

= 1.75

 

 

 

 

 

1

4

 

 

 

 

 

 

 

 

 

y

 

=

21+ 4(1.75) + 2

= 3.75

 

1

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

z

=

15 + 2(1.75) − 3.75

= 2.95.

 

1

 

 

 

 

5

 

 

 

 

 

 

 

 

 

Нова точка P1 = (1.75;3.75;2.95) ближче до (2;4;3), чим Р0 , і краще,

ніж значення, отримане в методі Якобі на першій ітерації. Для запропонованої СЛАР розв’язання методом Зейделя за 10 ітерацій (у методі Якобі було потрібно 19 ітерацій).

PDF created with pdfFactory Pro trial version www.pdffactory.com

58

Закінчення ітераційного процесу

Слід дати визначення близькості двох векторів так, щоб можна було ввести поняття збіжності послідовності наближень {Pk} до розв’язку P.

Найбільш використовуваними є наступні дві норми:

P - Q

 

 

 

æ

n

 

xi

 

2

ö1/ 2

 

 

 

 

 

 

 

= ç

å

 

 

 

÷

- відстань Евкліда між P = (x1 , x2 ,..., xn ) і

 

 

 

 

è i=1

 

 

 

 

ø

 

Q = ( y1 , y2 ,..., yn ) .

n

x1 = å xi - норма, що вимагає менше зусиль для обчислень.

i=1

Т.ч. для заданої допустимої похибки ε>0 критерій закінчення ітераційного процесу можна записати у вигляді:

P - Q

 

 

 

æ

n

 

xi

 

2

ö1/ 2

 

 

 

 

 

 

 

= ç

å

 

 

 

÷

< ε,

 

 

 

 

è i=1

 

 

 

 

ø

 

або:

n

x1 = å xi < ε.

i=1

Система MatLab має команду norm, яка є нормою Евкліда. Д інформацію про використання команди norm можна прочитати в системі

Help MatLab.

Лістинг програми 6.1 (ітерація Якобі). Розв’язання системи

Ax=b, починаючи з початкового наближення x=P0, і генерування послідовності {Pk} , котра сходиться до розв’язку. Ефективною умовою для методу є те, що А – строго діагонально домінуюча матриця.

function [x,k]=jacobi(A,b,P,eps,maxiter) %Input data – A – матриця розміру n*n

%- b – матриця розміру n*1

%- p – матриця розміру n*1, початкове наближення

%- eps – точність обчислень

%- maxiter – максимальне число ітерацій

%Output data – x – матриця розміру n*1: наближення Якобі до

%розв’язку Ax=b

PDF created with pdfFactory Pro trial version www.pdffactory.com

59

n=length(b); for k=1:maxiter

for i=1:n x(i)=(b(i)-A(i,[1:i-1,i+1:n])*P([1:i-1,i+1:n]))/A(i,i);

end err=abs(norm(x’-P)); P=x’;

if err<eps break;

end

end x=x’;

6.4Індивідуальні завдання до лабораторної роботи

1.Обчисліть число обумовленості матриць А і С. Розв’яжіть системи

засобами MatLab. Внесіть похибки до одного елементу матриці і в один елемент вектора правої частини. Зно розв’яжіть системи і порівняйте отримані розв’язки. Запишіть оцінки похибок.

2.Розв’язати систему Cx=D використовуючи формули Крамера.

3.Перевірити програми розв’язання СЛАР методами а) Якобі; б) Зейделя для заданих систем лінійних алгебраїчних рівнянь.

4.Виконати розрахунки з різною точністю, обчислюючи необхідне число ітерацій. Побудуватиграфіки залежності числа ітерацій від точності для різних методів.

Таблиця 6.1 – Варіанти завдань

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

B

 

 

 

 

 

 

C

 

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

0.47

 

-0.11

 

 

0.55

 

.1.33

 

1

 

 

 

 

2

 

3

 

 

13

 

№1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.42

 

 

1

 

0.35

 

 

0.17

 

1.29

 

2

 

 

 

 

3

 

5

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.25

 

0.67

 

1

 

 

0.36

 

2.11

 

3

 

 

 

 

5

 

9

 

 

17

 

 

0.54

 

 

-0.32

 

-0.74

 

 

1

 

0.10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.63

 

1

0.11

0.34

 

2.08

1

2

3

 

 

0.55

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PDF created with pdfFactory Pro trial version www.pdffactory.com

 

 

 

 

 

 

 

 

 

 

 

60

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.17

 

1.18

 

 

-0.45

 

 

0.11

 

0.17

 

1

 

 

4

 

 

 

9

 

 

 

 

1.35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.31

 

-0.15

 

 

1.17

 

 

-2.35

 

1.28

 

1

 

 

8

 

 

 

27

 

 

 

3.55

 

 

 

0.58

 

0.21

 

 

-3.45

 

 

-1.18

 

0.05

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.77

 

 

0.04

 

 

-0.21

 

0.18

1.24

0.42

 

1.43

 

 

0.27

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№3

-0.45

 

 

1.23

 

 

-0.06

 

 

0

 

-0.88

 

1.43

 

-0.84

 

 

 

0.93

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.26

 

 

-0.34

 

 

 

 

1.11

 

 

0

 

0.62

 

0.27

 

0.93

 

 

 

-0.48

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.05

 

 

0.26

 

 

-0.34

 

 

1.12

 

-1.17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.79

 

 

-0.12

 

 

0.34

 

0.16

 

-0.64

0.64

 

 

 

0.54

 

 

-0.33

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№4

-0.34

 

 

1.18

 

 

-0.17

 

 

0.18

 

1.42

 

0.54

 

 

 

-0.92

 

 

 

0.24

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.16

 

 

-0.34

 

 

 

 

0.85

 

 

0.31

 

-0.42

 

-0.33

 

 

0.24

 

 

 

0.78

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.12

 

 

0.26

 

 

 

0.08

 

 

0.75

 

0.83

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.68

 

-0.18

 

0.02

0.21

 

-1.83

0.5

 

1.77

 

0.39

 

 

1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№5

0.16

 

 

 

-0.88

 

 

-0.14

 

0.27

 

0.65

 

0.84

 

1.79

 

 

0.95

 

 

2.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.37

 

 

 

0.27

 

 

 

 

-1.02

 

-0.24

 

-2.23

 

0.24

 

1.03

 

 

-0.41

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.12

 

 

 

0.21

 

 

 

 

-0.18

 

-0.75

 

1.13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.58

 

-0.32

 

0.03

0

 

-0.44

0.19

 

0.51

 

0.86

0.35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№6

0.11

 

 

 

-1.26

 

 

-0.36

 

0

 

-1.42

 

0.51

 

0.32

 

 

0.95

 

0.42

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.12

 

 

 

0.08

 

 

 

 

-1.14

 

-0.24

 

0.83

 

0.86

 

0.95

 

 

-0.12

 

0.45

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.15

 

 

 

-0.35

 

 

 

 

-0.18

 

0

 

1.42

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.83

 

 

 

0.31

 

 

 

-0.18

 

0.22

 

1.71

 

0.64

 

 

1.54

 

-0.33

0.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№7

-0.21

 

 

 

-0.67

 

 

 

0

 

0.22

 

-0.62

 

1.54

 

 

-0.92

0.24

 

0.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.32

 

 

 

-0.18

 

 

 

 

-0.95

 

-0.19

 

0.89

 

-0.33

 

 

0.24

 

0.78

 

0.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.12

 

 

 

0.28

 

 

 

-0.14

 

-1

 

-0.94

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PDF created with pdfFactory Pro trial version www.pdffactory.com