20
Lineáris egyenletrendszerek Adott az alábbi lineáris egyenletrendszer: n n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 2 2 1 1 2 2 2 22 1 21 1 1 2 12 1 11 (1) melynek mátrixos alakja a következő: b x A (2) Ha az A n-ed rendű négyzetes mátrix reguláris (rangja n, ill. detA0), akkor a fenti egyenletrendszer egyértelműen megoldható, melyre kétféle numerikus módszer létezik: 1. Direkt eljárás, mely az egyenletrendszert elemi átalakításokkal olyan alakra hozza, ahonnan a megoldások közvetlenül leolvashatók. 2. Iterációs eljárás, amely adott kezdeti értékekből kiindulva a közelítő megoldások olyan sorozatát adja, amely (1) megoldásához konvergál. A Matlab programban ha meg van adva az A és a b mátrix, a megoldást x=A\b utasítással számítjuk ki. Direkt eljárások Gauss elimináció Az egyenletrendszert elemi átalakításokkal (sorok felcserélése, egy sor szorzása nullától különböző számmal, egyik sor hozzáadása egy másik sorhoz) úgynevezett lépcsős egyenletrendszer alakjára hozzuk (felső háromszögmátrix): c x U , ahol nn n n r r r r r r U 0 0 0 2 22 1 12 11 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező esetben sort cserélünk), az A együtthatómátrix i-edik sorából kivonjuk az első sor 11 1 a a i -szeresét (i2,3,…,n), Vagy mátrix alakban:

Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

Lineáris egyenletrendszerek

Adott az alábbi lineáris egyenletrendszer:

nnnnnn

nn

nn

bxaxaxa

bxaxaxa

bxaxaxa

2211

22222121

11212111

(1)

melynek mátrixos alakja a következő:

bxA (2)

Ha az A n-ed rendű négyzetes mátrix reguláris (rangja n, ill. detA0), akkor a fenti

egyenletrendszer egyértelműen megoldható, melyre kétféle numerikus módszer létezik:

1. Direkt eljárás, mely az egyenletrendszert elemi átalakításokkal olyan alakra hozza,

ahonnan a megoldások közvetlenül leolvashatók.

2. Iterációs eljárás, amely adott kezdeti értékekből kiindulva a közelítő megoldások olyan

sorozatát adja, amely (1) megoldásához konvergál.

A Matlab programban ha meg van adva az A és a b mátrix, a megoldást

x=A\b

utasítással számítjuk ki.

Direkt eljárások

Gauss elimináció

Az egyenletrendszert elemi átalakításokkal (sorok felcserélése, egy sor szorzása nullától különböző

számmal, egyik sor hozzáadása egy másik sorhoz) úgynevezett lépcsős egyenletrendszer alakjára

hozzuk (felső háromszögmátrix):

cxU , ahol

nn

n

n

r

rr

rrr

U

00

0 222

11211

(3)

Az eljárás n-1 eliminációs lépésben történik. Ha a11 0 (ellenkező esetben sort cserélünk), az A

együtthatómátrix i-edik sorából kivonjuk az első sor

11

1

a

ai -szeresét (i2,3,…,n), Vagy mátrix alakban:

Page 2: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

szorozzuk A-t S1- mátrixszal

10

01

001

11

1

11

1

1

a

a

a

a

S

n

i

majd az első sort változatlanul hagyva az eljárást folytatjuk a többi sorra.

Az ekvivalens átalakításokból adódóan (2) és (3) megoldása ugyan az, amelyet visszafelé haladva

nn

nn

r

cx -ből helyettesítéssel mind megkaphatunk:

n

ikkikii

ii

i xrcr

x1

1, (i=n-1, n-2,…,1)

Példa. Hajtsuk végre az adott egyenletrendszeren a Gauss-eliminaciot!

13

8

15

311

413

124

3

2

1

x

x

x

Megoldás

Egyenletek megoldásakor a bevett gyakorlat, hogy mindkét oldalon azonos műveleteket végzünk.

Az induló eliminációs táblázat a következő alakú (kibővített együttható mátrix):

BA

4 2 1 15

3 1 4 8

1 1 3 13

(*)

Ahhoz, hogy az első oszlopban a főátló alatti elemek eltűnjenek, az első lépésben (*)-t szorozzuk S1-

mátrixszal:

104/1

014/3

0011S

BAS1

104/1

014/3

001 4 2 1 15

3 1 4 8

1 1 3 13

4 2 1 15

0 2.5 4.75 19.25

0 0.5 2.75 9.25

(**)

Már csak a harmadik sor második elemét kell nullává változtatni, ehhez szorozzuk (**)-et S2-

mátrixszal:

Page 3: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

15/10

010

0012S

212 BAS

15/10

010

001 4 2 1 15

0 2.5 4.75 19.25

0 0.5 2.75 9.25

4 2 1 15

0 2.5 4.75 19.25

0 0 1.80 5.40

Innen azt kapjuk, hogy 38.1

4.53 x , visszahelyettesítéssel pedig az adódik, hogy

25.2

3*75.425.192

x , 2

4

2*23151

x .

Háromszög-faktorizáció (LU-felbontás)

Az LU faktorizációs módszer levezethető a Gauss módszerből, ugyanis ha a Gauss módszerben

ismert szorzók el segítségével megszerkesztjük az S(k) elemi alsóháromszög mátrixot:

100

01..

.01..

..01..

...010

00..01

)(

)(

)(

)(1

kkk

knk

kkk

kkkk

a

a

a

aS

akkor

)1()( kkk ASA

ahol A(k) a k iterációban, Gauss módszerrel generált mátrix (A(1) = A).

Tehát

ASSSAU nn 121)( ..

ahonnan

USSSA n 111211 )....()()(

Az S(k) mátrix egyszerű szerkezetének köszönhetően könnyen kiszámítható az inverze:

Page 4: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

100

01..

.01..

..01..

...010

00..01

)(

)(

)(

)(

)(11

kkk

knk

kkk

kkkk

a

a

a

aS

és igazolható, hogy

L

a

a

a

a

a

a

a

a

SSS

kkk

knkn

kkk

kkk

n

1....

01....

.01..

..01..

...01

00..01

)....()()(

)(

)(

)1(11

)1(1

)(

)(1

)1(11

)1(21

111211 (***)

vagyis (***)-ből A = LU.

Példa: Határozzuk meg az A mátrix LU-felbontását.

325

027

1310

A

Megoldás:

Kidolgozott példa:

>> A=[0 2 0 1 0;2 2 3 2 -2;4 -3 0 1 -7;6 1 -6 -5 6]

A =

Page 5: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

0 2 0 1 0

2 2 3 2 -2

4 -3 0 1 -7

6 1 -6 -5 6

>> P=[0 0 0 1 ;0 1 0 0;0 0 1 0;1 0 0 0]

% A P permutáció mátrix felcseréli az első és 4 - edik sort.

P =

0 0 0 1

0 1 0 0

0 0 1 0

1 0 0 0

>> A1=P*A

A1 =

6 1 -6 -5 6

2 2 3 2 -2

4 -3 0 1 -7

0 2 0 1 0

>> S1=[1 0 0 0 ;-1/3 1 0 0;-2/3 0 1 0;0 0 0 1]

S1 =

1.0000 0 0 0

-0.3333 1.0000 0 0

-0.6667 0 1.0000 0

0 0 0 1.0000

>> A2=S1*A1

A2 =

6.0000 1.0000 -6.0000 -5.0000 6.0000

0 1.6667 5.0000 3.6667 -4.0000

0 -3.6667 4.0000 4.3333 -11.0000

Page 6: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

0 2.0000 0 1.0000 0

>> S2=[1 0 0 0 ;0 1 0 0;0 (3.6667/1.6667) 1 0;0 -(2.0000/1.6667) 0 1]

S2 =

1.0000 0 0 0

0 1.0000 0 0

0 2.2000 1.0000 0

0 -1.2000 0 1.0000

>> A3=S2*A2

A3 =

6.0000 1.0000 -6.0000 -5.0000 6.0000

0 1.6667 5.0000 3.6667 -4.0000

0 -0.0000 14.9999 12.3999 -19.7999

0 0.0000 -5.9999 -3.3999 4.7999

>> S3=[1 0 0 0 ;0 1 0 0;0 0 1 0;0 0 (5.9999/14.9999) 1]

S3 =

1.0000 0 0 0

0 1.0000 0 0

0 0 1.0000 0

0 0 0.4000 1.0000

>> A4=S3*A3

A4 =

6.0000 1.0000 -6.0000 -5.0000 6.0000

0 1.6667 5.0000 3.6667 -4.0000

0 -0.0000 14.9999 12.3999 -19.7999

0 0.0000 0.0000 1.5600 -3.1200

Visszahelyettesítés.

>> x4=-3.1200/1.5600

x4 =

-2

Page 7: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

>> x3=(-19.7999-12.3999*x4)/14.9999

x3 =

0.3333

>> x2=(-4.0000-5.0000*x3-3.6667*x4)/1.6667

x2 =

1.0000

>> x1=(6.0000-1.0000*x2+6.0000*x3+5.0000*x4)/6.0000

x1 =

-0.5000

Példa. Hajtsuk végre az adott egyenletrendszeren a Gauss-eliminaciot!

.1435

;252

;3432

;42210

4321

4321

4321

4321

xxxx

xxxx

xxxx

xxxx

Megoldás:

Az induló eliminációs táblázat a következő alakú (kibővített együttható mátrix):

355.140

4.28.09.42.20

8.36.08.36.20

4.02.01.02.01

14135

21521

31432

421210

846.80769.4346.400

6153.53077.11153.800

4615.123077.04615.110

4.02.01.02.01

.

8388.57772.4000

69194.016114.0100

4615.123077.04615.110

4.02.01.02.01

Innen azt kapjuk, hogy

Page 8: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

2222.17772.4

8388.54

x

visszahelyettesítéssel pedig az adódik, hogy

.33334.0

)2222.1(2.0)88889.0(1.044443.02.04.0;44443.0

)2222.1(23077.0)88889.0(4615.14615.188889.0)2222.1(16114.069194.0

1

2

3

x

xx

Az előző eljárásból adódik, hogy minden reguláris mátrixra alkalmazható az úgynevezett

háromszög-, vagy LU-faktorizáció:

PA=LU, ahol

nn

n

n

r

rr

rrr

U

00

0 222

11211

és

1

0

1

001

1,1

21

nnn ll

lL

Felső ill. alsó háromszögmátrix (upper ill. lower triangular matrix), a P pedig egy olyan permutációs

mátrix, melynek minden sorában és minden oszlopában pontosan egy elem 1, a többi mind 0. P írja le

az A sorcseréit.

Definíció:

Permutáció mátrix (NN - es) :

A permutáció mátrix felcseréli az i - edik és j - edik sort.

Megjegyzés: ijP nem szinguláris, és belátható, hogy ijij PP 1)( .

Ennek segítségével a (2) egyenletrendszer megoldását három lépésben írhatjuk le:

1. LUPA : A háromszög-faktorizáció végrehajtása

2. bPyL : Az y meghatáozása

3. yxU : Az x megoldás meghatározása visszafelé helyettesítéssel.

Page 9: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

Ha a lineáris egyenletrendszer megoldásánál (Ab) kibővített együttható mátrixra a Gauss-

algoritmust alkalmazzuk, az L alsó háromszögmátrixot nem használjuk. L-t hatásosan alkalmazhatjuk

akkor, amikor egyszerre több olyan lineáris egyenletrendszert kell megoldanunk, melyeknek ugyanaz

az A együttható mátrixa, de a b jobb oldalak különböző vektorok.

Egy A mátrix felbontása a Matlab programmal:

1. [L,U]=lu(A)

y = L\b;

x = U\y;

2. [L,U,P]=lu(A)

y = L\(P*b);

x = U\z;

ahol a P mátrix a permutációs mátrix, i.e.: PA=LU.

Példa:

>> A = [2 6 3; 1 5 15; 3 10 4];

>> b = [2 4 6]';

>> [L,U] = lu(A);

>> y = L\b;

>> x = U\y

x =

-7.3793

2.8966

-0.2069

Példa:

>> A=[2 4 -2;4 9 -3;-2 -3 7];

>> [L,U,P]=lu(A)

L =

1.0000 0 0

-0.5000 1.0000 0

0.5000 -0.3333 1.0000

Page 10: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

U =

4.0000 9.0000 -3.0000

0 1.5000 5.5000

0 0 1.3333

P =

0 1 0

0 0 1

1 0 0

Cholesky FELBONTÁS

Ha az A mátrix szimmetrikus és pozitív definit, akkor az LU felbontás TLU alakban létezik, tehát

UUA T

ahol L alsó háromszögmátrix, amelynek diagonális elemei pozitív számok (nem feltétlen egyesek). Az

ilyen felbontást Cholesky felbontásnak hívjuk.

Cholesky algoritmus:

A tárgyalt algoritmusok az L mátrixot elemről-elemre számolják ki a következő képletek alapján:

33

3222

312111

333231

2221

11

332313

232212

131211

00

00

00

l

ll

lll

lll

ll

l

aaa

aaa

aaa

L főátlóbeli elemeit így számoljuk:

1

1

2i

kikiiii lal

L főátló alatti elemeit ji pedig így:

1...2,1

1

1

jil

lla

lii

i

kjkikij

ji

Az algoritmus: Ha A 3x3 mátrix:

Page 11: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

22

312123322332223121

2

21222222

2

22

2

21

11

1331133111

11

1221122111

111111

2

11

l

llalallll

lalall

l

alall

l

alall

alal

Példa: Állítsuk elő az

97922555

2255515

55156

A

mátrix Cholesky-felbontását!

Megoldás:

Mivel A mátrix szimmetrikus, a felbontás megvalósítható Cholesky algoritmus segítségével

A keresett L mátrix tehát a

mátrix lesz.

Cholesky felbontás Matlabbal

A Matlabban a következő lépésekkel oldhatjuk meg a Cholesky felbontás alapján:

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

>> b = [9 8 9]’;

Page 12: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

>> R = chol(A)

R =

2.0000 1.0000 1.5000

0 1.7321 0.2887

0 0 1.2910

>> x = R\y

x =

1.0000

1.0000

1.0000

Iterációs eljárások

Tekintsük

bAx

Tekintsük az

NMA

felbontást, ekkor

bxNM

bNxMx

adódik, amely a lineáris egyenletrendszerek esetén lineáris iterációkkal foglalkozunk,

melyek általában felírhatók

bMNxMx kk 1)(1)1(

Tekintsük az

U L D A

23

1312

3231

21

33

22

11

333231

232221

131211

a

aa

aa

a

a

a

a

aaa

aaa

aaa

Page 13: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

felbontást, ahol

L alsó háromszög mátrix, D diagonális mátrix, U felső háromszög mátrix.

A Matlab programban ha meg van adva az A és a b mátrix, a felbontást következő utasítással

számítjuk ki:

>> U = triu(A,1)

>> L = tril(A,-1)

>> D = diag(diag(A))

Jacobi-eljárás

Bontsuk fel A-t a következő módon:

)( ULN

DM

Így tetszőleges x0-ból kiindulva képezhetjük a közelítő megoldások sorozatát.

bDxULDx kk 1)(1)1( )( .

Koordinátánként írva:

Tegyük fel, hogy az (1) egyenletrendszer együttható mátrixában a főátlóbeli elemek mindegyike

nullától különböző. Ekkor az i-edik sorban az xi ismeretlent kifejezhetjük, amiből a következő

iterációs formula adódik ( az iterációs index):

)(

1

)1( k

n

kik ii

ik

ii

ii x

a

a

a

bx

(i=1, 2, …, n)

( =0, 1, 2,…;)0()0(

2)0(

1 ,,, nxxx kezdeti értékek).

Ezt az eljárást teljeslépés eljárásnak is nevezik,, mert az új x(+1)

vektor valamennyi komponensét x()

vektor komponenseiből számítjuk. A Jacobi-eljárás tetszőleges kezdeti vektor esetén akkor konvergál,

ha:

1max1

n

kii ii

ik

k a

a oszlopösszeg-feltétel

vagy a

1max1

n

kii ii

ik

i a

a sorösszeg-feltétel teljesül.

Page 14: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

Példa: Legyen

Alkalmazzuk az Ax = b lineáris egyenletrendszerre a Jacobi-iterációt!

Megoldás.

Látható, hogy az A mátrix nem átlósan domináns.

n

ijj

ijii aa1

|| || ( ij aa ijii , || )

Rendezzük át az egyenletrendszerünket a következő alakra:

5952

173

97

321

321

321

xxx

xxx

xxx

.

Látható, hogy az együttható mátrix diagonálisan domináns, így az eljárás konvergens lesz.

Innen a Jacobi-iteráció:

)525(9

1

)31(7

1

)9(7

1

213

312

321

xxx

xxx

xxx

Induljunk el az 0321 xxx kezdővektorból.

0 ,0 ,0 )0(3

)0(2

)0(1 xxx ,

1. Iteráció.

,5556.0)525(9

1

,1429.0)31(7

1

,2857.1)9(7

1

)0(2

)0(1

)1(3

)0(3

)0(1

)1(2

)0(3

)0(2

)1(1

xxx

xxx

xxx

2. Iteráció.

Page 15: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

,7619.0)525(9

1

,7732.0)31(7

1

,1859.1)9(7

1

)1(2

)1(1

)2(3

)1(3

)1(1

)2(2

)1(3

)1(2

)2(1

xxx

xxx

xxx

….

4246.0

6865.0

1270.1

)18(3

)17(3

)18(2

)17(2

)18(1

)17(1

xx

xx

xx

Jacobi-iteráció Matlabbal

A következő függvény megadott A mátrixú, b jobb oldalú lineáris egyenletrendszer és x0 kezdeti érték

megoldását állítja elő Jacobi-iterációval maxiter számú lépésben.

function x = Jacobi_it(A,b,x0, maxiter)

D = diag(diag(A));

T = D-A;

for k = 1:maxiter

k

x = D\(T*x0+b)

x0=x;

end

Az iterációt úgy is elvégezhetjük, hogy akkor is álljon le, ha két egymást követő iteráció már elég

közel van egymáshoz.

function x = Jacobi_it_tol(A,b,x0,maxiter,tol)

D = diag(diag(A));

T = D - A;

for k = 1:maxiter

x = D\(T*x0+b);

relerr = norm(x-x0);

Page 16: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

if relerr < tol

k

break;

end

x0=x

end

x0=x

end

Gauss-Siedel-eljárás

Bontsuk fel A-t a következő módon:

UN

LDM

Így tetszőleges x0-ból kiindulva képezhetjük a közelítő megoldások sorozatát.

bLDxULDx kk 1)(1)1( )()()( .

Koordinátánként írva:

Ez az eljárás annyiban tér el az előzőtől, hogy az új x(+1)

az i-edik komponens kiszámításához a

már ebben az iterációs lépésben nyert értékeket is felhasználjuk, és csak az i-nél nagyobb

komponensek esetében használjuk a x()

i-nél nagyobb komponensei értékét. Az )1(

1x első

komponenst a Jacobi eljárással határozzuk meg. Formálisan:

)(

1

)1(1

1

)1( k

n

ik ii

ikk

i

k ii

ik

ii

ii x

a

ax

a

a

a

bx

(i=1, 2, …, n)

( =0, 1, 2,…;)0()0(

2)0(

1 ,,, nxxx kezdeti értékek).

Ezt egyenkénti lépések módszerének is nevezik, az előző eljárásnál valamivel gyorsabban konvergál.

Példa: Legyen

Page 17: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

Alkalmazzuk az Ax = b lineáris egyenletrendszerre a Gauss-Siedel eljárást!

Megoldás.

Látható, hogy az A mátrix nem átlósan domináns.

n

ijj

ijii aa1

|| || ( ij aa ijii , || )

Rendezzük át az egyenletrendszerünket a következő alakra:

5952

173

97

321

321

321

xxx

xxx

xxx

.

Látható, hogy az együttható mátrix diagonálisan domináns, így az eljárás konvergens lesz.

Innen a Gauss-Seidel iteráció:

0 ,0 ,0 )0(3

)0(2

)0(1 xxx ,

,4558.0)525(9

1

,6939.0)31(7

1

,2857.1)9(7

1

)1(2

)1(1

)1(3

)0(3

)1(1

)1(2

)0(3

)0(2

)1(1

xxx

xxx

xxx

,4222.0)525(9

1

,6886.0)31(7

1

,1215.1)9(7

1

)2(2

)2(1

)2(3

)1(3

)2(1

)2(2

)1(3

)1(2

)2(1

xxx

xxx

xxx

….

4246.0

6865.0

1270.1

)7(3

)6(3

)7(2

)6(2

)7(1

)6(1

xx

xx

xx

Azaz a Gauss-Seidel iteratív eljárás gyorsabban konvergál mint a Jacobi-iterációt

Page 18: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

Gauss-Seidel-iteráció Matlabbal

Az A mátrix L és U összetevőjének az előállításához használhatjuk a tril, triu függvényeket.

(Mindkettő meghagyja A főátlóbeli elemeit is.)

A következő függvény megadott A mátrixú, b jobb oldalú lineáris egyenletrendszer és x0 kezdeti érték

megoldását állítja elő Gauss-Seidel iteracioval maxiter számú lépésben.

function x = Gauss_Seidel_it(A,b,x0,maxiter)

LD = tril(A); % LU = L + D

U = LD - A;

for i = 1:maxiter

x= LD\(U*x0+b);

end

Az iterációt úgy is elvégezhetjük, hogy akkor is álljon le, ha két egymást követő iteráció már elég

közel van egymáshoz.

function x = Gauss_Seidel_it_tol(A,b,x0,maxiter,tol)

LD = tril(A); % LU = L + D

U = LD - A;

for k = 1:maxiter

x = LD\(U*x0+b);

relerr = norm(x-x0);

if relerr < tol

k

break;

end

x0=x

end

Kidolgozott példa:

Végezzünk el egy-egy lépést a Jacobi- és a Gauss-Seidel-iterációkkal az x(0) = [0; 0;0; 0]

vektorról indulva a

Page 19: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

10x1 – x2 + 2x3 = 6

– x1 + 11x2 – x3 + 3x4 = 25

2x1 – x2 + 10x3 – x4 = –11

3x2 – x3 + 8x4 = 15

egyenletrendszerre!

Megoldás. :

1. Jacobi-iteráció:

1

)k

1(x + k

3(x5

1k2(x

10

1))

5

3

k1(x

11

1k2(x )

1)

11

25k4(x

11

3k3(x

11

1 ))

k2(x

10

1k1(x

5

1k3(x ))

1)

10

11k4(x

10

1 )

1

)k

4(x k

3(x8

1k2(x

8

3))

8

15

Induljunk el az )0(x = (0,0,0,0)

T kezdővektorból.

1. Iteráció. )1(x = )8750.1,1000.1,2727.2,6000.0(

2. Iteráció. )2(x = (1.0473 , 1.7159 , – 0.8052 , 0.8852)

3. Iteráció. )3(x = (0.9326 , 2.0533 , – 1.0493 , 1.1309)

T

… )5(x = (0.9890 , 2.0114 , – 1.0103 , 1.0214 )

…… )10(x = (1.0001 , 1.9998 , – 0.9998 , 0.9998)

.

A pontos gyökök az x = (1, 2, – 1, 1) vektor elemei.

2. Gauss-Seidel-iteráció:

1

)k

1(x + k

3(x5

1k2(x

10

1))

5

3

1

)1

)

k

1(x11

1k2(x

11

25k4(x

11

3k3(x

11

1 ))

1

)1

)1

)

k

2(x10

1k1(x

5

1k3(x

10

11k4(x

10

1 )

1

)k

4(x 1

)1

)

k

3(x8

1k2(x

8

3

8

15

Induljunk el az )0(x = (0,0,0,0)

kezdővektorból.

1. Iteráció.

0.6000x(1)1

Page 20: Jacobi és Gauss-Seidelrs1.sze.hu/~lotfi/Numerical-Methods/Linearis-egyenletrendszerek.pdf · 0 22 2 11 12 1 (3) Az eljárás n-1 eliminációs lépésben történik. Ha a 11 0 (ellenkező

2.327311

25

3

0.6000x(1)

2

0.98731.10000.23270.120010

11(2.3273)

10

1

3

0.6000x(1)

3

8

150.9873)(

8

1(2.3273)

8

3x(1)

4

= – 0.8727 – 0.1234 + 1.8750 = 0.8789

)1(x = )0.87896000.0( ,0.9873,2.3273,

2. Iteráció. )2(x (1.0300 , 2.037 , – 1.014 , 0.9844)

3. Iteráció. )3(x = (0.9326 , 2.0533 , – 1.0493 , 1.1309)

… )5(x (1.0001 , 2.0000 , – 1.0000 , 1.0000)