36
Řešení soustav lineárních rovnic

Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Embed Size (px)

Citation preview

Page 1: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Řešení soustav lineárních rovnic

Page 2: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Obsah

Řešení soustav lineárních rovnic

přímé metody

Gaussova eliminace

LU rozklad

iterační metody

prostá

Jacobiova

Gaussova-Seidelova

gradientní metody

největšího spádu

sdružených gradientů

2

Page 3: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Řešení soustav lineárních rovnic

• Úloha. Dána soustava rovnic ve tvaru Ax = b.

Určete neznámý vektor x.

• Řešitelnost.

Je li matice A regulární (det A různý od nuly), existuje jediné řešení. (podrobněji viz Skripta Matematika 1, Frobeniova věta)

3

Page 4: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Přímé a iterační metody

Přímé metody

• Za konečný počet kroků určíme přesné řešení (neuvažujeme li zaokrouhlovací chyby výpočtu)

• Příklady: – Gaussova eliminační metoda

– LU rozklad matice soustavy

Iterační metody• Volíme počáteční

aproximaci - vektor x(0) , a postupně vypočítáváme vektory x(1), x(2), … , které se od přesného řešení x* liší tím méně, čím více iteračních kroků provedeme

• Příklady:

• Maticové iterační metody– Prostá, Jacobiova, Gaussova-

Seidelova

• Gradientní metody– největšího spádu

– sdružených gradientů

4

Page 5: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Řešení soustav lineárních rovnicpřímé metody

Gaussova eliminační metoda.Ekvivalentními úpravami (násobení řádunenulovým číslem a přičítání k řádku násobkujiného řádku) převedeme soustavu rovnic naekvivalentní soustavu s trojúhelníkovou maticísoustavy (přímý chod).

Z poslední rovnice (ve které je pouze jednaneznámá) vypočítáme poslední neznámou,kterou dosadíme do zbývajících rovnic, takpokračujeme k první rovnici (zpětný chod).

5

Page 6: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova eliminační metoda - přímý chod

• Označíme A(0) (rozšířenou) matici soustavy - A (nebo A|b)• Krok 1: vytvoříme matici A(1)

– opíšeme první řádek matice A(0), – ke druhému, …, poslednímu řádku matice A(0) přičteme takové násobky prvního řádku, abychom v prvním

sloupci získali nulové prvky, tj. ke druhému řádku přičítáme (-a21)/a11 násobky 1.řádku, ke třetímu řádku přičítáme (-a31)/a11 násobky 1.řádku,…, k poslednímu (n-tému) řádku přičítáme (-an1)/a11 násobky 1.řádku.

– (V LU rozkladu(viz dále) budou právě tyto násobky s opačným znaménkem tvořit 1.sloupec matice L)

• Krok 2: vytvoříme matici A(2)

– Opíšeme první a druhý řádek matice A(1), – Ke třetímu ,…, poslednímu řádku přičteme takové násobky druhého řádku matice A(1), abychom ve druhém

sloupci získali nulové prvky tj. ke třetímu řádku přičítáme (-a32)/a22 násobky 2.řádku, ke čtvrtému řádku přičítáme (-a42)/a22 násobky 2.řádku,…, k poslednímu (n-tému) řádku přičítáme (-an2)/a22 násobky 2.řádku.

– (V LU rozkladu(viz dále) budou právě tyto násobky s opačným znaménkem tvořit 2.sloupec matice L)

• Krok i: vytvoříme matici A(i)

– Opíšeme první, druhý, …, i-tý řádek matice A(i-1),– Ke (i+1) ,…, poslednímu řádku matice A(i-1) přičteme takové násobky i-tého řádku matice A(i-1), abychom v

i-tém sloupci získali nulové prvky tj. k (i+1)-mu řádku přičítáme (-a i+1,i)/a ii násobky i.řádku, …, k poslednímu (n-tému) řádku přičítáme (-ani)/a ii násobky i.řádku.

• Krok poslední (n-1): vytvoříme matici A(n-1)

– Opíšeme první, druhý, …, (n-1) řádek matice A(n-2),– K poslednímu (n-tému) řádku přičteme takové násobky (n-1) řádku, abychom v (n-1) sloupci získaly nulové

prvky.

• Poznámka 1: stane li se, že v některém kroku (k) bude prvek a kk nulový, vyměníme řádek k s řádkem m, m>k. Podmínka , že matice A je regulární zaručuje, že je to možné.

• Poznámka 2: aby vliv zaokrouhlovacích chyb byl menší, je možné v každém kroku i nejprve vyměnit řádek i s takovým řádkem m (m > k), ve kterém je prvek a mi největší v absolutní hodnotě.

6

Page 7: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova eliminační metoda - zpětný chod

• Matice A(n-1), vytvořená přímým chodem vypadá:(horní index v závorce je pro připomenutí,na kterém kroku byl tento prvek vypočten)

Poslednímu řádku odpovídá tvar poslední rovnice : ann xn = bn

• Z poslední rovnice vypočteme poslední neznámouxn = bn / ann, kterou dosadíme do (všech) rovnic n-1…1

• Z předposlední rovnice, která po dosazení vypadá: an-1,n-1 xn-1+ an-1,n xn = bn-1

vypočítáme předposlední neznámou xn-1=(bn-1- an-1,nxn)/an-1,n-1…

• Ze třetí rovnice vypočteme x3 = (b3- a3,nxn- a3,n-1xn-1 - … -a3,4x4)/a3,3

• Z druhé rovnice vypočteme x2 = (b2- a2,nxn- a2,n-1xn-1 - … -a2,3x3)/a2,2

• Z první rovnice vypočteme x1 = (b1- a1,nxn- a1,n-1xn-1 - … -a1,2x2)/a1,1

)1()1()2()1(

)2(

1

)2()2()1(

)2()1(

)1()1()1()1(

)0()0()0()0(

000

00

00

0

,1

2223

111312

n

n

n

n

n

n

b

ba

baa

baaa

nn

n

n

n n

1n1 ,n

2 2

1 1

a

a

a

a

7

Page 8: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova eliminační metoda: soustava s třídiagonální maticí• Uvažujme soustavu rovnic:

Potom v každém kroku (i) přímého chodu přičítáme násobky řádku i pouze k jednomu řádku i+1.

Matice A(0)… A(n-1) můžeme zapisovat jako trojice vektorů u=(u1, u2,…,un-1) = (a12,a23,…,an-1,n), d=(d1,d2,…,dn) = (a11,a22,…,an,n), l=(l 1, l 2,…, l n-1) = (a21,a32,…,an,n-1)a vektoru pravé strany b=(b1,b2,…,bn)Úpravy přímého chodu (které mění pouze vektory d a b) lze zapsat:di=di+ui-1(- l i-1/di-1), bi=bi+bi-1(- l i-1/di-1),i=2,…,nZpětný chod je vyjádřen: xn=bn/dn, xi= (bi-ui xi+1) /di,i=n-1,…,1

6

5

4

3

2

1

6

5

4

3

2

1

6661

565551

454441

343331

232221

1211

0000

000

000

000

000

0000

b

b

b

b

b

b

x

x

x

x

x

x

aa

aaa

aaa

aaa

aaa

aa

8

Page 9: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova eliminační metodapříklady

• Příklad 1.Příklad 2.

1136 :rovnice první

,2 :rovnice druhá

,1 :rovnice posl.

:Zp.chod

00

10

1136

:)(*.2.3 :2Krok

0

10

1136

:)(*.1.3

)(*.1.2 :1Krok

:ozn.

2

3

1

123

122

136

38

32

61

61

61

61

38

32)2(

21

23

21

21

38

32)1(

63

62

)0(

xzyx

yzy

zz

řř

řř

řř

z

y

x

A

A

A2123

3122

1136

:chod Přímý

6

5

4

3

2

1

10

6

,

4

34

34

27

20

13

6

,

2

2

2

2

2

,

4

4

4

4

4

4

,

1

1

1

1

1

34

34

27

20

13

6

20000

2000

0200

000

000

0000

701434

41946

356

7100

70239

41140

1241

724

27

6

5

4

3

2

1

xbd

bldu

x

x

x

x

x

x

:chod Zpětný :chod Přímý

vektory Označíme

4

14

14

142

142

14

9

Page 10: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova eliminační metodaa LU rozklad matice

• V situaci, kdy je potřeba řešit několik (mnoho) soustav rovnic se stejnou maticí soustavy, ale různými pravými stranami, je vhodné jednou rozložit matici soustavy A na součin trojúhelníkových matic L a U, a potom pro každou pravou stranu řešit 2 soustavy rovnic s trojúhelníkovými maticemi (což je méně pracné):

Uy=b (tím aplikujeme úpravy přímého chodu na vektor b) a

Lx=y (odpovídá zpětnému chodu)

• Matice L slouží k „zapamatování“ úprav přímého chodu, U odpovídá matici A(n-1), která vzniká přímým chodem Gaussovy eliminační metody (za předpokladu, že jsme a) v kroku i přičítali násobky i-tého řádku (a ostatní řádky ničím nenásobili) a b) neměnili pořadí řádků matice). Horní index (i) označuje prvek matice, získaný v kroku i přímého chodu Gaussovy eliminace.

)1(

)2(

3

)2(

33

)1(

2

)1(

23

)1(

22

)0(

1

)0(

13

)0(

12

)0(

11

)2(

)2(

1

)1(

22

)1(

1

)0(

11

)0(

1

)1(

22

)1(

32

)0(

11

)0(

31

)0(

11

)0(

21

000

00

0

,

1

01

001

0001

n

nn

n

n

n

n

nn

n

nnna

aa

aaa

aaaa

U

a

a

a

a

a

a

a

a

a

a

a

a

L

10

Page 11: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

LU rozklad matice - příklad• Příklad 3. Řešte soustavy rovnic Ax=b, Az=c užitím LU rozkladu

matice A.

• a)LU rozklad:

v prvním kroku násobíme přičítáme ke druhému řádku (-2/6)násobky prvního řádku a ke třetímu (-3/6) násobky prvního řádku(viz příklad 1), proto v prvním sloupci hledané matice L budou tyto násobky s opačným znaménkem;

ve druhém kroku přičítáme ke třetímu řádku (-1/2) násobky druhého řádku, proto ve druhém sloupci matice L bude tento násobek s opačným znaménkem.

Hledaná matice U odpovídá upravené matici soustavy.

28

24

45

,

2

3

1

,

123

122

136

cbA

61

32

21

63

62

00

10

136

,

1

01

001

UL

61

32

21

21

32

00

10

136

0

10

136

123

122

136-2/6-3/6-

-1/2

11

Page 12: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Řešení soustavy užitím LU rozkladu• b) pomocí matice L upravíme vektor pravé strany b (řešíme Ly=b)

a určíme neznámý vektor x (řešíme Ux=y )==>x3=1,x2=2,x1=-1

• c)stejným způsobem upravíme vektor c: řešíme Lw=c

a určíme neznámý vektor z: řešíme Uz=w ==>z3=6,z2=5,z1=4

1

2

1

1

00

10

136

6/1

3/8

1

2

3

1

1

01

001 1

2

361

38

3

2

1

61

32

3

2

1

3

2

1

21

63

62

x

x

xx

x

x

y

y

y

y

y

y

yUybL

4

5

61

9

45

00

10

136

1

9

45

28

24

45

1

01

001 1

2

33

2

1

61

32

3

2

1

3

2

1

21

63

62

z

z

zz

z

z

y

y

y

y

y

y

wUwcL

12

Page 13: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Některé operace s maticemi v MATLABu• Malá a velká písmena se rozlišují• Proměnné není potřeba deklarovat• Operace s maticemi (+,-, *,/,…) jsou DEFINOVÁNY• Zadání matice: po řádcích, prvky v řádku odděleny mezerou, řádky

odděleny středníkem: A=*a11 a12 a13; … a31 a32 a33+• Vektor řádek (tj. matice 1xn): b=(b1 b2 …bn)• Vektor sloupec(tj. matice nx1):c=(c1;c2; …cn)• Získat (změnit) prvek matice: z=A(1,2) … A(1,2)=4• Násobení matic(rozměry musí odpovídat!): d=A*c výsledný vektor

sloupec, f=A*b nelze, q=b*A výsledný vektor řádek• Transponování: b’ tedy f=A*b’ lze, výsledný vektor sloupec• Řešení soustavy Ax=b: x=A \ b• LU rozklad: [L U]=lu(A) (pozor, algoritmus je jiný---)• Určení determinantu matice: d=det(A)• Určení vlastních čísel matice: vl_cisla=eig(A)• Inverzní matice: Ainv=inv(A)

13

Page 14: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Kontrola výsledků v MATLABu(Gaussova eliminace, LU rozklad)

• A=[6 3 1; 2 2 1; 3 2 1] //zadat matici A

• b=[1; 3; 2] //zadat vektor b

• x_gauss=A\b //vypocet x Gauss.el.

• [L,U]=lu(A) //vytvoreni LU rozkladu

• b_upr=L\b //reseni Lb_upr=b

• x_LU=U\b_upr //reseni LU rozkladem

• b=[45; 24; 28] //zadani jine prave strany

• b_upr=L\b //reseni Lb_upr=b

• x_LU=U\b_upr //reseni LU rozkladem

14

Page 15: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Řešení soustav lineárních rovnicmaticové iterační metody

• Soustavu rovnic Ax=b převedeme na soustavu ve tvaru x=Ux+v

• Volíme x(0), počítáme x(1) = Ux(0)+v,

x(2) = Ux(1)+v,…x(k+1) = Ux(k)+v

• Způsob, jak vytvoříme matici U a vektor v je určen iterační metodou

• Aby posloupnost vektorů x(1),…,x(k) konvergovala k přesnému řešení, musí být splněny podmínky konvergence iterační metody

15

Page 16: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

• Pojmy (A : čtvercová matice , prvky – reálná čísla)– ostře diagonálně dominantní matice (ODD)

po řádcích : když i = 1,…,n platí |aii|>| aij |, j =1,…,n, j≠ipo sloupcích: když i = 1,…,n platí |aii|>| aji |, j =1,…,n, j≠i

– A je ODD, když je ODD po řádcích nebo po sloupcích– symetrická matice

A=AT tj. aij=aji,i,j = 1,…,n– pozitivně definitní matice

jsou li všechny hlavní minory kladné – norma matice

• řádková ||A|| = max i | aij |, j =1,…,n• sloupcová ||A||1 = max j | aij |, i =1,…,n• Euklidovská ||A||1 =( | aij |2 ) 1/2 , i =1,…,n, j =1,…,n

– vlastní čísla matice – řešení charakteristické rovnice det(A-E)=0

– spektrální poloměr matice je největší z absolutních hodnot vlastních čísel tj. (A) = max i | i |

– absolutní hodnota komplexního čísla: z=a+ib, |z| = (a2+b2) 1/2

16

Page 17: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Příklady (vlastnosti matic)• Dány matice, vektor. Určete normy matic a vektoru, spektrální poloměr matic. Jsou

matice symetrické, pozitivně definitní, ostře diagonálně dominantní?

Normy

72.149.025.01||||,2.27.05.01||||,1}7.0,5.0,1max{||||

7.04.0...1.04.0||||

8.0}8.0,7.0,5.0{max||||8}5.1,2,8,4{max||||

8.0}8.0,7.0,5.0{max||||5.5}1,4,5,5.5{max||||

7.0

5.0

1

4.04.00

4.02.01.0

01.04.0

1000

0220

0050

5.0014

21

222

2

..3..2..1

1

||||||||

1

..3..2..1

||||||||

4

1

4

4

1

3

4

1

2

4

1

1

4

1

4

4

1

3

4

1

2

4

1

1

ccc

B

BA

BA

cBA

slslsl

aaaa

rrr

aaaa

i

i

i

i

i

i

i

i

j

j

j

j

j

j

j

j

7.251.25...114||A||

222

2

17

Page 18: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Příklady (vlastnosti matic)spektrální poloměr

symetrie

pozitivní definitnost

ostrá diagonální dominantnost

ODD není B(2.,3.sl.) nenísloupcích po 2.,3.ř.), ve(nesplněno nenířádcích po :B

ODD jeA jesloupcích po 3.ř.), ve(nesplněno nenířádcích po :A

definitní pozitivně je :minory :B

definitní pozitivně není počítat, nemusíme dál :minory :A

symetrická není B :(např.) symetrická neníA

0.5(B) :poloměr spektrální

5| |(A) :poloměr spektrální

01.0)det(,009.02.01.0

1.04.0,0

2050

14,0

4.04.0,1.01.0:,

5.04.03.0||||4.03.02

64.06.04.0

)25.06.0)(4.0()det(

)4.0(01.0)4.0(16.0)4.0)(2.0()4.0()det(

1,2,5,4)1)(2)(5)(4()det(

11

11

2112

23

323,21

2

2

4321

Bb

a

aa

ii

EB

EB

EA

18

Page 19: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Kontrola výsledků v MATLABu - vlastnosti matice• A=[0.4 -0.1 0; 0.1 0.2 0.4; 0 -0.4 0.4] //zadani matice A (3x3) po radcich

• vlastni_cisla=eig(A) //vektor vlastnich cisel

• rho=max(abs(vlastni_cisla)) //spektralni polomer

• isequal(A,A’) //vysledek: 1 - kdyz A je symetricka, 0 - neni

• A(1,1)>0 & det([A(1,1) A(1,2); A(2,1) A(2,2)])>0 & det(A)>0

//vysledek: 1 - kdyz A je pozitivne definitni, 0 – neni

//ODD

• D=abs(diag(A)) // D: vektor absolutnich hodnot A(i,i)

• [M,N]=size(A) //M:pocet radku, N: pocet sloupcu

• for(i=1:1:M) plati=D(i)>sum(abs(A(i,:)))-D(i); end

//plati je vektor z 0 a 1, 1- kdyz podminka splnena

• ODD=isequal(plati, ones) //vysledek: 1 – ODD po radcich, 0 neni

• for(i=1:1:M) plati=D(i)>sum(abs(A(:,i)))-D(i); end //overeni pro sloupce

• ODD=isequal(plati, ones) //vysledek: 1 – ODD po sloupcich, 0 neni

//normy

• norm(A) //vysledek: euklidovska norma

• norm(A,inf) //vysledek: radkova norma

• norm(A,1) //vysledek: sloupcova norma

//kořeny polynomu

• roots([aN … a2 a1 a0]) // určení kořenů aN xN+…a2x2+a1x+a0 = 019

Page 20: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Prostá iterační metoda• Výpočet: x(k+1) = Ux(k)+v (pro U,v musí platit v=Qb, U+QA=E)

• Podmínky konvergence:

– Postačující : existuje alespoň 1 norma matice U, která je menší než 1.

• Je-li splněna, lze odhadnout velikost chyby v kroku i:

• Případně lze určit počet iterací k, abychom získali řešení s chybou menší než :

– Nutná a postačující : spektrální poloměr matice U musí být

menší než 1 (spektrální poloměr je největší z absolutních hodnot vlastních

čísel matice).

||||||||1

||||||||||||

||||1

|||||||| )0()1()(*)1()()(* xx

U

Uxxxx

U

Uxx

iiiii

nebo

||||

||)||1(ln||||ln||||

||||1

||||||||

)0()1(

)0()1()(*

xx

UUkxx

U

Uxx

kk

20

Page 21: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Prostá iterační metoda-příklad

Dána soustava rovnic ve tvaru x=Ux+v, kde

a) Ověřte, že soustavu lze řešit prostou iterační metodou.

Existuje norma matice U, která je menší než 1 (např. řádková: ||U||=0.8), je splněna postačující podmínka konvergence.

b) Volte x(0)=(0,0,0)T a vypočtěte x(1) a x(2) prostou iterační metodou.

c) Odhadněte velikost chyby x(2).

d) Určete počet iterací potřebných k výpočtu x(k) s chybou < 0.1.

Je potřeba 23 iterací.

3

2

1

,

4.04.00

4.02.01.0

01.04.0

vU

4.3

7.3

2.1

3

2

1

3

2

1

4.04.00

4.02.01.0

01.04.0

3

2

1

3

2

1

0

0

0

4.04.00

4.02.01.0

01.04.0

)1()0(

)2()1(

vxUvxU

xx

,

4.67.12.0

8.0||||

4.0

7.1

2.0

8.01

8.0||||||||

||||1

|||||||| )2(*)2(*)1()2()2(*

xxxxxx

U

Uxx

45.223

02.0ln8.0ln

3

2.01.08.01.03.

8.01

8.01.0||||

||||1

||||1.0|||| )0()1()(*

kkxx

U

Uxx k

kkk

21

Page 22: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Kontrola v MATLABu - prostá iterační metoda

• U=[0.4 -0.1 0; 0.1 0.2 0.4; 0 -0.4 0.4] //zadani matice U (3x3) po radcich

• max(abs(eig(A)))<1 // overeni konvergence

• v=[1;2;3] // zadani vektoru – sloupce

• xk=[0;0;0] //zadani x0

////////////////// zpusob iterace po iteraci:

• x_k1=U*xk+v //zobrazi se vysledek dalsi iterace

• xk=x_k1; // strednik zpusobi nezobrazeni vysledku

• x_k1=U*xk+v //pocitame dalsi iteraci

• xk=x_k1; // … a tak dal…

////////////////// nebo pocitame urcity pocet iteraci:

• pocet_iteraci=5 //kolik iteraci chceme vypocitat

• for(i=1:1:pocet_iteraci) x_k1=U*xk+v; xk=x_k1;end //v xk bude posledni vypoctena

////// nebo pocitame dokud norma rozdilu 2 iteraci po sobe bude mensi nez cislo

• cislo = 0.001

• x_k1=U*xk+v

• while(norm(xk-x_k1)>cislo) xk=x_k1; xk_1=U*xk+v; end

22

Page 23: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Jacobiova metoda• Iterační matice UJ(formálně UJ =-D-1(L+U), vJ=D-1 b

kde D,U,L jsou matice

A=L+D+U

viz Gaussova – Seidelova metoda)

(aij jsou koeficienty původní matice soustavy A)

• Podmínky konvergence:

– Postačující :

• Matice A je ostře diagonálně dominantní

• existuje norma matice UJ, která je menší než 1

– Nutná a postačující :

• spektrální poloměr matice UJ musí být menší než 1

nn

n

J

nn

n

nn

n

nn

n

n

n

n

J

a

b

a

b

a

b

a

b

v

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

U

33

3

22

2

11

1

321

33

3

33

32

33

31

22

2

22

23

22

21

11

1

11

13

11

12

,

0

0

0

0

23

Page 24: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Jacobiova metoda - praktický výpočet

• Z první rovnice vyjádříme 1. neznámou

• Z druhé rovnice vyjádříme 2. neznámou

• Ze třetí rovnice vyjádříme 3. neznámou

• Postupně (v libovolném pořadí) vypočítáme nové, přesnější, hodnoty x(k+1). Do výrazů na pravé straně dosazujeme za x(k) hodnoty vypočítané na předcházejícím kroku.

• Určení spektrálního poloměru iterační matice UJ z matice soustavy A:

Vlastní čísla UJ matice určíme z rovnice:

k

nn

kk

n

nn

k

n

k

nn

kkk

k

nn

kkk

k

nn

kkk

xaxaxaba

x

xaxaxaba

x

xaxaxaba

x

xaxaxaba

x

111212111

)1(

12321313

33

)1(

3

13231212

22

)1(

2

13132121

11

)1(

1

1

1

1

1

0det

321

3333231

2232221

1131211

nnnnn

n

n

n

aaaa

aaaa

aaaa

aaaa

24

Page 25: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Jacobiova metoda - příklad

Dána soustava rovnic Ax=b, kde

a) Ověřte, že danou soustavu lze řešit Jacobiovou metodou.

b) Určete spektrální poloměr Jacobiovy matice.

c) Volte x(0)=(0,0,0)T a určete x(1) a x(2) Jacobiovou metodou.

a) Matice A je ostře diagonálně dominantní, je splněna postačující podmínka konvegrence Jacobiovy metody.

b) Vlastní čísla matice UJ určíme z výrazu

tedy (UJ)=0.5

6

1

1

,

420

142

014

bA

0

420

142

014

det

2

1,

2

1,00)14(1608864 321

23

25

Page 26: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Jacobiova metoda - příkladc) Z první rovnice vyjádříme x1, z druhé x2, ze třetí x3.

Při výpočtu první iterace x(1)=(x1(1), x2

(1), x3(1)) (levá strana)

dosadíme do výrazů na pravé straně hodnoty x(0)=(0,0,0).

Dostáváme x(1)=(1/4,-1/4,3/2)T.

Při výpočtu druhé iterace x(2)=(x1(2), x2

(2), x3(2)) (levá strana)

dosadíme do výrazů na pravé straně hodnoty x(1).

Dostáváme

23

312

21

264

1

214

1

14

1

xx

xxx

xx

8

13

4

126

4

1

4

3

2

3

4

121

4

1

16

5

4

11

4

1

)2(

)2(

)2(

3

2

1

x

x

x

26

Page 27: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Jacobiova metoda – kontrola v MATLABu

A=[4 1 0; 2 4 1; 0 2 4];

b=[1;-1;6];

x0=[0;0;0];

////vytvorime matici UJ a vektor vJ

U=triu(A,1); L=tril(A,-1); D=A-U-L;

UJ=inv(D)*(U+L)*(-1); vJ=inv(D)*b;

//// vypocet iteraci jako prostou iteracni metodou

x1=UJ*x0+vJ

X2=UJ*x1+vJ

///... a tak dale

rho=max(abs(eig(UJ))) //spektralni polomer UJ

////spektralni polomer UJ vypocitany z matice A

roots([64 0 -16 0 ]) //urceni korenu 64*x3-16x=0

rho=max(abs(roots ([64 0 -16 0 ]) ))

27

Page 28: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova-Seidelova metoda• Iterační matice UG=-(D+L)-1P (dokážeme se bez ní obejít!), vG=(D+L)-1b, kde

• Podmínky konvergence:

– Postačující :

• Matice A je ostře diagonálně dominantní

• Matice A je symetrická a zároveň pozitivně definitní

• existuje norma matice UG, která je menší než 1

– Nutná a postačující :

• spektrální poloměr matice UG musí být menší než 1

0

00

000

0000

,

000

000

000

000

,

0000

000

00

0

,,

321

3231

21

33

22

11

3

223

11312

3

2

1

321

3333231

2232221

1131211

nnnnn

n

n

n

nnnnnn

n

n

n

aaa

aa

a

L

a

a

a

a

Da

aa

aaa

U

b

b

b

b

b

aaaa

aaaa

aaaa

aaaa

A

28

Page 29: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova-Seidelova metoda - praktický výpočet

• Z první rovnice vyjádříme 1. neznámou

• Z druhé rovnice vyjádříme 2. neznámou

• Ze třetí rovnice vyjádříme 3. neznámou

• Postupně (v pořadí od x1 k xn) vypočítáme nové, přesnější, hodnoty x(k+1). Do výrazů na pravé straně dosazujeme za xi hodnoty vypočtené na tomto kroku (pokud jsou k dispozici) nebo na předcházejícím kroku, tj.

při výpočtu xi(k+1) dosadíme x1

(k+1) x2(k+1) …xi-1

(k+1) a xi+1(k) … xn

(k) .

• Určení spektrálního poloměru iterační matice UG z matice soustavy A:

Vlastní čísla UG matice určíme z rovnice:

1

111

1

212

1

111

)1(

1

1

232

1

1313

33

)1(

3

1323

1

1212

22

)1(

2

13132121

11

)1(

1

1

1

1

1

k

nn

kk

n

nn

k

n

k

nn

kkk

k

nn

kkk

k

nn

kkk

xaxaxaba

x

xaxaxaba

x

xaxaxaba

x

xaxaxaba

x

0det

321

3333231

2232221

1131211

nnnnn

n

n

n

aaaa

aaaa

aaaa

aaaa

29

Page 30: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova-Seidelova metoda – příkladDána soustava rovnic Ax=b, kde

a) Ověřte, že danou soustavu lze řešit Gaussovou-Seidelovou metodou.

b) Určete spektrální poloměr Gaussovy-Seidelovy matice.

c) Volte x(0)=(0,0,0)T a určete x(1) a x(2) Gaussovou-Seidelovou metodou.

a) Matice A je ostře diagonálně dominantní, je splněna postačující podmínka konvegrence Gaussovy-Seidelovy metody.

b) Vlastní čísla matice UG určíme z výrazu

tedy (UG)=0.25

6

1

1

,

420

142

014

bA

0

420

142

014

det

4

1,0,00)14(1608864 321

2223

30

Page 31: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova-Seidelova metoda – příkladc) Z první rovnice vyjádříme x1, z druhé x2, ze třetí x3.

Výpočet první iterace: Výpočet druhé iterace:

Změny vektoru x(0) na x(1) Změny vektoru x(1) na x(2)

2331221 264

1,21

4

1,1

4

1xxxxxxx

64

123

32

2726

4

1

32

27

16

27

32

1121

4

1

32

11

8

31

4

1

16

27

8

326

4

1

8

30

4

121

4

1

4

11

4

1

)(

)2(

3

),(

)2(

)(

)2(

)(

)1(

)0,(

)1(

)0(

)1(

3227

2

1627

33211

1

2

83

2

1

83

2

3

341

1

2

2

1

x

xx

x

x

xx

x

x

x

x

x

x

x

)1()0(

1627

83

41

0

83

41

0

0

41

0

0

0

xx

)2()1(

64123

3227

3211

1627

3227

3211

1627

83

3211

1627

83

41

xx

31

Page 32: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Gaussova-Seidelova metoda – kontrola v MATLABu

A=[4 1 0; 2 4 1; 0 2 4];

b=[1;-1;6];

x0=[0;0;0];

////vytvorime matici UGa vektor vG

U=triu(A,1); L=tril(A,-1); D=A-U-L;

UG=inv(D+L)*U*(-1); vG=inv(D+L)*b;

//// vypocet iteraci jako prostou iteracni metodou

x1=UG*x0+vG

X2=UG*x1+vG

///... a tak dale

rho=max(abs(eig(UJ))) //spektralni polomer UJ

////spektralni polomer UG vypocitany z matice A

roots([64 -16 0 0 ]) //urceni korenu 64*x3-16x2=0

rho=max(abs(roots ([64 -16 0 0 ]) ))

32

Page 33: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Řešení soustav lineárních rovnicgradientní metody

(Podle F.Bubeník, M.Pultar, I.Pultarová – Matematické vzorce a metody, Vydavatelství ČVUT, 2001)

• Metodu největšího spádu a metodu sdružených gradientů lze použít pro řešení soustav se symetrickou a pozitivně definitní maticí A. Řešení takové soustavy je jediným minimem kvadratické formy Q(x)=1/2xTAx-xTb. Volíme počáteční aproximaci x(0) . Aproximaci x(k+1) počítáme z aproximace x(k) přičtením (k) násobku vektoru p(k). Směr p(k) zvolíme a číslo (k)

vypočítáme tak, aby aproximace x(k+1) minimalizovala kvadratickou formu Q na přímce x= x(k) + p(k). Metody se liší podle volby směru p(k).

• Reziduum k-té aproximace je definováno vztahem r(k)=A x(k) – b

• x (k+1)= x(k) + p(k)

33

Page 34: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Metoda největšího spádu• Směr p(k) se volí jako směr gradientu funkce Q.

• Postačující podmínka konvergence : A je symetrická a pozitivně definitní.

Výpočet 1. a 2. aproximace podrobněji:

)(

)()(

)()()()1( k

kTk

kTkkk r

Arr

rrxx

)0()0()1(

)0()0(

)0()0(

)0()0()0()0(

)0()0(

)0(

rxx

Arr

rr

rArrr

bAxr

x

T

T

TT

číslo

součin a součin skal.

reziduum

:vypočteme

volíme

)1()1()2(

)1()1(

)1()1(

)1()1()1()1(

)1()1(

)1(

rxx

Arr

rr

rArrr

bAxr

x

T

T

TT

číslo

součin a součin skal.

reziduum

:vypočteme

máme

34

Page 35: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Metoda největšího spádu - příklad

Dána soustava rovnic Ax=b, kde

a) Ověřte, že danou soustavu lze řešit metodou největšího spádu.

b) Volte x(0)=(0,0,0)T a určete x(1) metodou největšího spádu.

a) Matice A je symetrická. Ověříme, zda je pozitivně definitní:

a11 = 2 > 0, 18-16=2>0, det A = 90+8+8-9-8-80 = 9 > 0.

Matice A je symetrická a pozitivně definitní, lze použít metodu největšího spádu.

b) Výpočet x(1) :

r(0)=Ax(0)-b= (1, 3, -4)T,

r(0)Tr(0)=1 1+3 3+(-4)(-4) = 26,

r(0)TAr(0) = (1, 3, -4)(2+12-4, 4+27-8, 1+6-20)T = (1, 3, -4)(10, 23, -13)T = 10+69+52=131,

= 26/131 ,

x(1) = x(0) - r(0) = -26/131 (1, 3, -4)T = (-0.198, -0.595, 0.794) T

35

4

3

1

,

521

294

142

bA

Page 36: Řešení soustav lineárních rovnic - majlingova.euweb.czmajlingova.euweb.cz/NMA/soustavy_lr.pdf · Obsah Řešení soustav lineárních rovnic přímé metody Gaussova eliminace

Metoda sdružených gradientů• Směry p(k) se získají A-ortogonalizací posloupnosti vektorů reziduí r(k) .

• Postačující podmínka konvergence : A je symetrická a pozitivně definitní.

Výpočet aproximací :

první aproximace – x(1) - analogicky metodě největšího spádu

druhá a další aproximace:

)()()()1( kkkk pxx

)0()0()0()1(

)0()0(

)0()0()0(

)0()0()0()0(

)0(

,

,

pxxApp

rr

rpbAxr

x

T

T

aproximaci číslo

směr reziduum :vypočteme

, volíme

36

)1()1()1()2(

)1()1(

)1()1()1(

)0()0()1()1(

)0()0(

)1()1()0(

)0()0()0()1(

,

,

,

pxx

App

rr

prp

rr

rr

Aprr

T

T

T

T

číslo

směr

číslo

reziduum

)1()1()1()2(

)1()1(

)1()1()1(

)()()1()1(

)()(

)1()1()(

)()()()1(

,

,

,

kkkk

kTk

kTkk

kkkk

kTk

kTkk

kkkk

pxx

App

rr

prp

rr

rr

Aprr

číslo

směr

číslo

reziduum