• Nem Talált Eredményt

ILU-algoritmus

In document Numerikus módszerek példatár (Pldal 117-167)

LINEÁRIS EGYENLETRENDSZER MEGOLDÁSÁNAK ITERÁCIÓS

4.1.6. ILU-algoritmus

36. Legyen

P= Konvergál-e az ILU-algoritmus? Ha igen, akkor tegyünk meg2 lépést!

Hány lépés kell a10−3 pontosság eléréséhez?

37. Legyen

P= Konvergál-e az ILU-algoritmus? Ha igen, akkor tegyünk meg2 lépést!

Hány lépés kell a10−3 pontosság eléréséhez?

38. Legyen

P= Konvergál-e az ILU-algoritmus? Ha igen, akkor tegyünk meg2 lépést!

Hány lépés kell a10−2 pontosság eléréséhez?

39. Legyen

P= Konvergál-e az ILU-algoritmus? Ha igen, akkor tegyünk meg2 lépést!

Hány lépés kell a10−3 pontosság eléréséhez?

40. Legyen

P= Konvergál-e az ILU-algoritmus? Ha igen, akkor tegyünk meg2 lépést!

Hány lépés kell a10−4 pontosság eléréséhez?

118 4. Lineáris egyenletrendszer megoldásának iterációs módszerei

4.2. Megoldások

4.2.1. Egyszerű iteráció

1. Első lépésként meg kell vizsgálni a konvergenciát. Ehhez használjuk fel az elégséges feltételt.

Elégséges feltétel:

Ha valamely illeszkedő mátrixnormában az átmenetmátrixrakBk<1, akkor ∀ x0 ∈Rn -ből indítva az iterációt, konvergens lesz az(xk)iterációs sorozat. Tehát a konvergencia semx0-tól, sem pedigc-től nem függ.

Konkrét példánkra

kBk1 =max3

j=1 3

X

i=1

|aij|= 0,6<1, tehát∀ x0 ∈R3 -re konvergens.

Hibabecslés:

Ak.közelítő vektorra adott hibabecslés alakja kxk−xk ≤ qk

1−q kx1−x0k, aholq=kBk a kontrakciós együttható.

Ahhoz, hogy a képletet alkalmazzuk, ki kell számítanunkx1 -et. Ehhez ki kell számolnunk az iteráció első lépését. Mivel bármely x0 -ból indítva az iteráció konvergens, ezért válasszunk egy kezdővektort. Legyenx0=

0 0 0T

.

x1=B·x0+c=c=

 0,1 0,5 0,1

Így már kiszámolható a hibabecslés. (q =kBk1= 0,6 aB mátrix 1-es normája.) kxk−xk1≤ 0,6k

1−0,6 ·0,7 Lépésszám:

Meg kell határoznunk a lépésszámot a10−3 pontosság eléréséhez.

0,6k

1−0,6 ·0,7≤10−3 3

5 k

·7

4 ≤ 10−3 7

4 ·103 ≤ 5

3 k

lg 7

4 ·103

≤ k·lg 5

3

k ≥ lg 74 ·103

lg 53 ≈14,6 Vissza a tartalomhoz

Tehátk≥15 lépés elegendő a 10−3 pontosság eléréséhez.

Utolsó lépésként azt kell meghatároznunk, hogy melyik lineáris egyenletrendszer megoldásához konvergál az iteráció. Az iterációx határértékére (a fixpontra)

x=Bx+c ⇐⇒ (I−B)

| {z }

A

x=b ⇐⇒ Ax=b.

Tehát a megoldás

A =

1 0 0 0 1 0 0 0 1

−

0,4 0,1 0 0,1 0,3 0,2

0 0,1 0,4

=

0,6 −0,1 0

−0,1 0,7 −0,2 0 −0,1 0,6

,

b = c=

 0,1 0,5 0,1

.

2. Első lépésként meg kell vizsgálni a konvergenciát. Ehhez használjuk fel az elégséges feltételt.

kBk1 = max3

j=1 3

X

i=1

|aij|= 1 ⇒Nem alkalmas!

kBk = max3

i=1 3

X

j=1

|aij|= 0,9<1

Tehát∀ x0 ∈R3-re konvergens.

Hibabecslés:

Az alábbi képletet alkalmazzuk.

kxk−xk ≤ qk

1−q kx1−x0k

Ahhoz, hogy a képletet alkalmazni tudjuk, ki kell számítanunkx1-et. Ehhez ki kell számolnunk az iteráció első lépését. Mivel mindenx0-ból indítva az iteráció konvergens, ezért válasszunk egy kezdővektort. Legyenx0=

0 0 0T

.

x1=B·x0+c=c=

 0,2 0,3 0,1

AB mátrix ∞-normája alkalmas q-nak, így már kiszámolható a hibabecslés a∞ normában.

kxk−xk≤ 0,9k 1−0,9 ·0,3 Lépésszám:

Meg kell határoznunk a lépésszámot a10−3 pontosság eléréséhez.

0,9k

0,1 ·0,3 ≤ 10−3 9

10 k

·3 ≤ 10−3 3·103

10 9

k

lg 3·103

≤ k·lg 10

9

k ≥ lg 3·103

lg 109 ≈75,99 Tehátk≥80 lépés elég a10−3 pontosság eléréséhez.

Utolsó lépésként azt kell meghatároznunk, hogy melyik lineáris egyenletrendszer megoldásához konvergál az iteráció. Az iterációx határértékére (a fixpontra)

x=Bx+c ⇐⇒ (I−B)

| {z }

A

x=b ⇐⇒ Ax=b.

Tehát a megoldás A =

1 0 0 0 1 0 0 0 1

−

0,1 0,3 0,1 0,5 0,3 0,1 0 0,4 0,1

=

0,9 −0,3 −0,1

−0,5 0,7 −0,1 0 −0,4 0,9

b = c=

 0,2 0,3 0,1

.

3. A feladat megoldásához először meg kell vizsgálni a konvergencia teljesülését. Ehhez használjuk fel az elégséges feltételt.

kBk1=max2

j=1 2

X

i=1

|aij|= 0,9<1

Mivel találtunk olyan illeszkedő mátrixnormát, aminek az értéke kisebb mint1, ezért ∀ x0 ∈ R3-re konvergens.

Hibabecslés.

Az alábbi képletet alkalmazzuk.

kxk−xk ≤ qk

1−q kx1−x0k

Ahhoz, hogy a képletet alkalmazni tudjuk, ki kell számítanunkx1-et. Ehhez ki kell számolnunk az iteráció első lépését. Mivel mindenx0-ból indítva az iteráció konvergens, ezért válasszunk egy kezdővektort. Legyenx0=

0 0 0T

.

x1=B·x0+c=c= 0,1

0,3

Így már kiszámolható a hibabecslés. (B mátrix egyes normája alkalmas q-nak.) kxk−xk1 ≤ 0,9k

1−0,9 ·0,4 Lépésszám:

Meg kell határoznunk a lépésszámot a10−2 pontosság eléréséhez.

0,9k

0,1 ·0,4 ≤ 10−2 9

10 k

·4 ≤ 10−2 4·102

10 9

k

lg 4·102

≤ k·lg 10

9

k ≥ lg 4·102

lg 109 ≈56,87 Tehátk≥57 lépés elég a10−2 pontosság eléréséhez.

Utolsó lépésként azt kell meghatároznunk, hogy melyik lineáris egyenletrendszer megoldásához konvergál az iteráció. Az iterációx határértékére (a fixpontra)

x=Bx+c ⇐⇒ (I−B)

| {z }

A

x=b ⇐⇒ Ax=b.

Tehát a megoldás

A =

1 0 0 1

0,2 0,3 0,7 0,1

=

0,8 −0,3

−0,7 0,1

b = c= 0,1

0,3

.

4. Első lépésként meg kell vizsgálni a konvergenciát. Ehhez használjuk fel az elégséges feltételt:

kBk1 = max4

j=1 4

X

i=1

|aij|= 1 ⇒Nem alkalmas!

kBk = max4

i=1 4

X

j=1

|aij|= 1 ⇒Nem alkalmas!

kBkF = v u u t

4

X

i=1 4

X

j=1

|aij|2=p

0,72≈0,85<1 Tehát∀x0 ∈R3-re konvergens.

Hibabecslés.

Az alábbi képletet alkalmazzuk.

kxk−xk ≤ qk

1−q kx1−x0k

Ahhoz, hogy a képletet alkalmazni tudjuk, ki kell számítanunkx1-et. Ehhez ki kell számolnunk az iteráció első lépését. Mivel mindenx0-ból indítva az iteráció konvergens, ezért válasszunk egy kezdővektort. Legyenx0=

0 0 0T

.

x1=B·x0+c=c=

 0,1 0,2 0,3 0,4

A hibabecslés így már kiszámolható. Mivel ak.kF norma illeszkedik a k.k2 normára, ezért a hibabecslésben használhatjuk a vektoroknál ak.k2 normát. (Bmátrix k.kF-normája alkalmas q-nak.)

kxk−xk2 ≤ 0,85k

1−0,85 ·0,55 Lépésszám:

Meg kell határoznunk a lépésszámot a10−4 pontosság eléréséhez.

0,85k

0,15 ·0,55 ≤ 10−4 17

20 k

·11

3 ≤ 10−4 11

3 ·104 ≤ 20

17 k

lg 11

3 ·104

≤ k·lg 20

17

k ≥ lg 113 ·104

lg 2017 ≈50,5 Tehátk≥51 lépés elég a10−4 pontosság eléréséhez.

Utolsó lépésként azt kell meghatároznunk, hogy melyik lineáris egyenletrendszer megoldásához konvergál az iteráció. Az iterációx határértékére (a fixpontra)

x=Bx+c ⇐⇒ (I−B)

| {z }

A

x=b ⇐⇒ Ax=b.

Tehát a megoldás

A =

1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

0,2 0,2 0,3 0,3 0,2 0,2 0,1 0,1 0,3 0,1 0,2 0,2 0,3 0,1 0,2 0,2

=

0,8 −0,2 −0,3 −0,3

−0,2 0,8 −0,1 −0,1

−0,3 −0,1 0,8 −0,2

−0,3 −0,1 −0,2 0,8

b = c=

 0,1 0,2 0,3 0,4

 .

4.2.2. Jacobi-iteráció

5. A továbbiakban a Jacobi-módszerre aJ(1)rövidítést fogjuk használni, utalva ezzel arra, hogy a csillapított Jacobi-iterációbanω = 1 paraméterrel kapjuk meg a Jacobi-iterációt.

Tudjuk, hogy

Ax=b⇔x=−D−1(L+U)x+b.

Innen a Jacobi-iteráció

xk+1 =−D−1(L+U)

| {z }

´

atmenetm´atrix

·xk+D−1b

| {z }

c

.

Első lépésként meg kell határoznunk az átmenetmátrixot.

BJ(1) =−D−1(L+U) ahol

A=L+D+U=

0 0 0

−1 0 0

−2 −2 0

+

1 0 0 0 1 0 0 0 1

+

0 −2 2 0 0 −1

0 0 0

. Tehát

BJ(1) = −

1 0 0 0 1 0 0 0 1

−1

·

0 −2 2

−1 0 −1

−2 −2 0

= −

0 −2 2

−1 0 −1

−2 −2 0

=

0 2 −2

1 0 1

2 2 0

Mivel megkaptuk az átmenetmátrixot, meg kell vizsgálnunk, hogy melyik konvergencia tétel feltételei teljesülnek. Először megvizsgáljuk az elégséges feltételt.

kBJ(1)k1 = 4 kBJ(1)k = 4 kBJ(1)kF =√

18>4

Mint látható mindegyik normával kapott eredmény nagyobb, mint egy, tehát az elégséges feltétel ebben az esetben nem használható.

Megjegyzés. Ha a mátrixban találhatóak 1-nél nagyobb elemek, akkor az elégséges feltétel nem használható.

Mivel az elégséges feltételt nem tudtuk használni, a szükséges és elégséges feltételt kell al-kalmaznunk

Szükséges és elégséges feltétel:

∀ x0∈Rn-ből indított iteráció konvergens⇔ρ(B)<1, aholρ(B) = maxni=1i|aB mátrix spektrálsugara. A spektrálsugár nagysága mutatja a konvergencia gyorsaságát.

A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot!

det(BJ(1)−λI) =

−λ 2 −2 1 −λ 1 2 2 −λ

=

= −λ·

−λ 1 2 −λ

−2·

1 1

2 −λ

−2·

1 −λ

2 q

=

= −λ(λ2−2)−2(−λ−2)−2(2 + 2λ) =

= −λ3+ 2λ+ 2λ+ 4−4−4λ=

= −λ3 = 0⇒ λ1,2,3 = 0 A sajátértékek alapján a mátrix spektrálsugara

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 0<1, így∀ x0 ∈R3-re J(1) konvergens lesz!

Ha az átmenetmátrix spektrálsugara nulla, akkor véges iterációra számíthatunk, legfeljebbn lépésben konvergál.

6. Első lépésként meg kell határoznunk az átmenetmátrixot.

A=L+D+U=

0 0

12 0

+ 1 0

0 43

+ 0 2

0 0

Tehát

BJ(1) = −D−1(L+U) =− 1 0

0 43 −1

·

0 2

12 0

= − 1 0

0 34

·

0 2

12 0

=

0 2

38 0

=

0 −2

3

8 0

.

Vizsgáljuk meg a konvergenciát! Először az elégséges feltételt vizsgáljuk.

kBJ(1)k1 = 2 kBJ(1)k = 2 kBJ(1)kF =

r 4 + 9

64 >2

Mint látható mindegyik normával kapott eredmény nagyobb mint egy, tehát az elégséges feltétel ebben az esetben nem használható, ezért a szükséges és elégséges feltételt kell alkal-maznunk.

A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot!

det(BJ(1)−λI) =

−λ −2

3

8 −λ

=

= λ2+3

4 = 0 ⇒ |λ1,2|= r3

4 Mint látható a sajátértékek komplex számok, de ρ(BJ(1)) =

q3

4 < 1, így a konvergencia teljesül.

7. Első lépésként meg kell határoznunk az átmenetmátrixot.

BJ(1)=−D−1(L+U), ahol

A=L+D+U=

0 0 0

2

3 0 0

1

8 0 0

+

1 0 0 0 2 0 0 0 12

+

0 0 3 0 0 0 0 0 0

Tehát

BJ(1) = −

1 0 0 0 2 0 0 0 12

−1

·

0 0 3

2

3 0 0

1

8 0 0

= −

1 0 0 0 12 0 0 0 2

·

0 0 3

2

3 0 0

1

8 0 0

= −

0 0 3

1

3 0 0

1

4 0 0

=

0 0 −3

13 0 0

14 0 0

Az átmenetmátrixot megkapva, lehetőségünk van a konvergencia vizsgálatára. Mivel|a13|>1, ezért az elégséges feltétel biztosan nem teljesül. A szükséges és elégséges feltétel teljesülését kell megvizsgálnunk. A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot.

det(BJ(1)−λI) =

−λ 0 −3

13 −λ 0

14 0 −λ

=

= −λ·(λ2)−3·

−λ 4

=

= −λ3+ 3

4λ= 0 ⇒ λ1 = 0

⇒ −λ2+ 3

4 = 0⇔λ2= 3 4

⇒ λ2 =

√ 3

2 , λ3=−

√ 3 2 Most már tudjuk a mátrix spektrálsugarát.

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}=

√ 3

2 ≈0,866<1 Tehát a Jacobi-iteráció konvergens a megadott mátrixra.

8. Első lépésként meg kell vizsgálnunk, hogy a feladatra konvergens-e a Jacobi-iteráció.

Először ki kell számolni az átmenetmátrixot.

Megkaptuk az átmenetmátrixot, az elégséges feltételt kell megvizsgálnunk.

kBJ(1)k1 = 2 3 <1

Mivel találtunk olyan illeszkedő normát, aminek az értéke egynél kisebb, így ∀ x0 ∈R3-ből indítva az iterációt, konvergens lesz. Ezzel tehát beláttuk, hogy a feladat megoldható Jacobi-iterációval.

Ahhoz, hogy kiszámoljuk az első két lépést, alkalmasx0-t kell választanunk. Mivel bármilyen x0 jó, ezért a legegyszerűbb megoldás azx0 =

0 0 0T

=0 vektor. Tudjuk, hogy Ax=b⇔x=−D−1(L+U)x+b.

Innen a Jacobi-iteráció

xk+1 =−D−1(L+U)

| {z }

´

atmenetm´atrix

·xk+D−1b

9. Első lépésként meg kell vizsgálnunk, hogy a feladatra konvergens-e a Jacobi-iteráció.

Először ki kell számolni az átmenetmátrixot.

BJ(1) = −D−1(L+U) = Megkaptuk az átmenetmátrixot, az elégséges feltételt kell megvizsgálnunk.

kBJ(1)k= 1 2 <1

Mivel találtunk olyan illeszkedő normát, aminek az értéke kisebb, mint egy, teljesül az a feltétel, hogy∀x0 ∈R3-ből indítva az iterációt, konvergens lesz. Ezzel tehát beláttuk, hogy a feladat megoldható Jacobi-iterációval.

Ahhoz, hogy kiszámoljuk az első két lépést, alkalmasx0-t kell választanunk. Mivel bármilyen x0 jó, ezért a legkézenfekvőbb megoldás azx0 =

0 0 0T

=0vektor. Az xk+1=−D−1(L+U)·xk+D−1b

képletet felhasználva, könnyen elvégezhetjük az első két lépést.

1. lépés:

10. Első lépésként meg kell vizsgálnunk, hogy a feladatra konvergens-e a Jacobi-iteráció.

Először ki kell számolni az átmenetmátrixot.

BJ(1) = −D−1(L+U) =

Megkaptuk az átmenetmátrixot, az elégséges feltételt kell megvizsgálnunk. Mivel a mátrix elemei kivétel nélkül egynél nagyobb számok, ezért az elégséges feltételt nem lehet alkalmazni.

A szükséges és elégséges feltételt kell alkalmazni. A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot.

det(BJ(1)−λI) = Az átmenetmátrix spektrálsugara

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 0<1.

Ezzel tehát beláttuk, hogy a Jacobi-iteráció bármely x0 vektorra konvergens, így a feladat megoldható Jacobi-iterációval.

Ahhoz, hogy kiszámoljuk az első három lépést, alkalmas x0-t kell választanunk. A legegy-szerűbb megoldás azx0=

0 0 0T

=0 vektor. Az

xk+1=−D−1(L+U)·xk+D−1b képletet felhasználva, könnyen elvégezhetjük az első három lépést.

1. lépés:

4.2.3. Gauss–Seidel-iteráció

1. A továbbiakban a Gauss–Seidel-iterációra az S(1) rövidítést fogjuk használni, utalva ezzel arra, hogy a relaxációs módszerbenω= 1 paraméterrel kapjuk meg a Gauss–Seidel-iterációt.

Tudjuk, hogy

Ax=b⇔x=−(D+L)−1Ux+ (D+L)−1b.

Innen a Jacobi-iteráció

xk+1 =−(D+L)−1U

| {z }

´

atmenetm´atrix

·xk+ (D+L)−1b

| {z }

c

.

A feladatunk, hogy meghatározzuk, hogy azAmátrixra felírt Gauss-Seidel-iteráció konvergens-e. Ehhez első lépésként az átmenetmátrixot kell kiszámítanunk. Tudjuk, hogy

BS(1) =−(L+D)−1U ahol,

A=L+D+U=

0 0 0

−1 0 0 0 1 0

+

1 0 0 0 1 0 0 0 1

+

0 −12 0 0 0 −12

0 0 0

 Ezt felhasználva kapjuk meg aBS(1) mátrixot.

BS(1) = −

1 0 0

−1 1 0 0 1 1

−1

·

0 −12 0 0 0 −12

0 0 0

=

= −

1 0 0

1 1 0

−1 −1 1

·

0 −12 0 0 0 −12

0 0 0

=

= −

0 −12 0 0 −1212 0 12 12

=

0 12 0 0 12 12 0 −1212

A konvergencia vizsgálatához először megpróbáljuk használni az elégséges feltételt.

Elégséges feltétel:

Ha valamely illeszkedő mátrixnormában az átmenetmátrixrakBk<1, akkor ∀ x0 ∈Rn -ből indítva az iterációt, konvergens lesz az(xk) iterációs sorozat.

kBS(1)k1 = 1,5 kBS(1)k = 1

kBS(1)kF = r5

4

Mivel nem találtunk olyan mátrixnormát, ami kisebb lenne egynél, ezért a szükséges és elégséges feltételt használjuk.

Szükséges és elégséges feltétel:

∀ x0∈Rn-ből indított iteráció konvergens⇔ρ(B)<1, aholρ(B) = maxni=1i|aB mátrix spektrálsugara.

A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot! A sajátértékek segítségével kiszámoljuk a spektrálsugarat.

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 0<1 Ezzel tehát beláttuk, hogy azA mátrixra felírt S(1) iteráció konvergens.

Ha az átmenetmátrix spektrálsugara nulla, akkor véges iterációra számíthatunk, legfeljebbn lépésben konvergál.

2. A feladatunk, hogy meghatározzuk, hogy azAmátrixra felírt Gauss-Seidel-iteráció konvergens-e. Ehhez első lépésként az átmenetmátrixot kell kiszámítanunk.

BS(1) = −(L+D)−1U=

A konvergencia vizsgálatához először megpróbáljuk az elégséges feltételt használni. Mivel a mátrixban találhatóak egynél nagyobb elemek is, ezért az elégséges feltétel nem teljesül. A szükséges és elégséges feltétellel kell próbálkoznunk. A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot!

det(BS(1)−λI) =

Mivel találtunk egynél nagyobb sajátértéket, ezért a spektrálsugár is nagyobb lesz egynél.

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 5 2 >1

Mint látható nem teljesül a szükséges és elégséges feltétel, ezért a konvergencia nem teljesül minden kezdővektorra!

3. A feladatunk, hogy meghatározzuk, hogy azAmátrixra felírt Gauss-Seidel-iteráció konvergens-e. Ehhez első lépésként az átmenetmátrixot kell kiszámítanunk.

BS(1) = −(L+D)−1U=

Mivel a mátrixban egynél nagyobb abszolút értékű elemek vannak, ezért az elégséges felté-tel nem használható. A szükséges és elégséges feltéfelté-tellel kell próbálkoznunk. A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot!

det(BS(1)−λI) =

Mivel találtunk egynél nagyobb sajátértéket, ezért a spektrálsugár is nagyobb lesz egynél.

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 2 +

√ 8>1

Mint látható nem teljesül a szükséges és elégséges feltétel, ezért a konvergencia nem teljesül minden kezdővektorra.

4. A feladatunk, hogy meghatározzuk, hogy azAmátrixra felírt Gauss-Seidel-iteráció konvergens-e. Ehhez első lépésként az átmenetmátrixot kell kiszámítanunk.

BS(1) = −(L+D)−1U=

Mivel a mátrixban egynél nagyobb abszolút értékű elemek vannak, ezért az elégséges felté-tel nem használható. A szükséges és elégséges feltéfelté-tellel kell próbálkoznunk. A sajátértékek

meghatározásához írjuk fel a karakterisztikus polinomot!

det(BS(1)−λI) =

−λ −1 0

0 −12 −λ −18 0 1 14 −λ

=

= −λ

−1

2−λ 1 4−λ

−1 8

=

= −λ

−1 8 +1

2λ− 1

4λ+λ2+ 1 8

=

= −λ3−1

2= 0 ⇒ λ1,2 = 0

−λ−1

4 = 0⇒ λ3 =−1 4

A sajátértékek segítségével az átmenetmátrix spektrálsugara kiszámítható.

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 1 4 <1

Mivel a spektrálsugár egynél kisebb, ezért azAmátrixra felírt S(1) iteráció konvergens minden kezdővektorra.

5. A feladatunk, hogy eldöntsük, azAmátrixra felírt Gauss-Seidel-iteráció konvergens-e. Ehhez első lépésként az átmenetmátrixot kell kiszámítanunk.

BS(1) = −(L+D)−1U=

= −

1 0 0

−1 1 0 0 1 1

−1

·

0 4 1 0 0 3 0 0 0

=

= −

1 0 0

1 1 0

−1 −1 1

·

0 4 1 0 0 3 0 0 0

=

= −

0 4 1

0 4 4

0 −4 −4

=

0 −4 −1 0 −4 −4

0 4 4

Mivel a mátrixban egynél nagyobb abszolút értékű elemek vannak, ezért az elégséges feltételt nem használhatjuk. A szükséges és elégséges feltételt kell alkalmaznunk. A sajátértékek meg-határozásához írjuk fel a karakterisztikus polinomot!

det(BS(1)−λI) =

−λ −4 −1

0 −4−λ −4

0 4 4−λ

=

= −λ((−4−λ)(4−λ)−(−4)·4)) =

= −λ(−16 + 4λ−4λ+λ2+ 16) =

= −λ3 = 0⇒ λ1,2,3 = 0

A sajátértékek segítségével az átmenetmátrix spektrálsugara kiszámítható.

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 0<1

Ha az átmenetmátrix spektrálsugara nulla, akkor véges iterációra számíthatunk, legfeljebbn lépésben konvergál.

6. A feladatunk, hogy eldöntsük, azAmátrixra felírt Gauss-Seidel-iteráció konvergens-e. Ehhez első lépésként az átmenetmátrixot kell kiszámítanunk.

BS(1) = −(L+D)−1U=

Mivel a mátrixban vannak egy abszolútértékű elemek, ezért az elégséges feltételt nem használ-hatjuk. A szükséges és elégséges feltételt kell alkalmaznunk. A sajátértékek meghatározásához írjuk fel a karakterisztikus polinomot!

det(BS(1)−λI) =

Mivel az átmenetmátrix felsőháromszög alakú és diagonálisában nullák vannak, ezért ránézésre is látszik, hogy a nulla háromszoros sajátértéke. Az átmenetmátrix spektrálsugara így nulla.

ρ(BJ(1)) = max{|λ1|,|λ2|,|λ3|}= 0<1

Ha az átmenetmátrix spektrálsugara nulla, akkor véges iterációra számíthatunk, legfeljebbn lépésben konvergál.

Ahhoz, hogy kiszámoljuk az első három lépést, alkalmas x0-t kell választanunk. Mivel bár-milyen x0 -ra konvergens, ezért a legegyszerűbb megoldás az x0 =

0 0 0T

= 0 vektor.

Tudjuk, hogy

Ax=b ⇔ x=−(D+L)−1Ux+ (D+L)−1b.

Innen a Gauss-Seidel-iteráció

xk+1 =−(D+L)−1U

| {z }

´

atmenetm´atrix

·xk+ (D+L)−1b

| {z }

c

. Ezt felhasználva, el tudjuk végezni az iteráció első három lépését.

1. lépés:

3. lépés:

x3 = −(L+D)−1U·x2+ (L+D)−1b=BS(1)·x2+c=

=

0 0 −1

0 0 1

0 0 0

·

 2 0

−1

+

 1 1

−1

=

 2 0

−1

Mint látható, az iteráció a2.lépéstől kezdve ugyanazt a vektort adja. Ez az x=−(D+L)−1Ux+ (D+L)−1b

fixpontegyenlet- illetve a vele ekvivalensAx=b lineáris egyenletrendszer megoldása.

A továbbiakban megmutatjuk, hogy az iteráció az átmenetmátrix meghatározása nélkül is elvégezhető, vagyis nincs szükség mátrix invertálásra az iterációs lépések számításához. Ehhez az iterációt szorozzuk meg balról(D+L)-el, majd rendezzük át a következőképpen.

xk+1 = −(D+L)−1U·xk+ (D+L)−1b (D+L)·xk+1 = −U·xk+b

D·xk+1 = −L·xk+1−U·xk+b xk+1 = −D−1(L·xk+1+U·xk−b) Koordinátákkal felírva

x(k+1)i =− 1 aii

i−1

X

j=1

aijx(k+1)j +

n

X

j=i+1

aijx(k)j −bi

, i= 1, . . . , n.

A képletből látszik, hogy a következő koordináta közelítéséhez a már kiszámított új koor-dinátát használjuk.3×3-as mátrix esetén az alakja

x(1)1 = − 1 a11 ·

a12·x(0)2 +a13·x(0)3 −b1 x(1)2 = − 1

a22

·

a21·x(1)1 +a23·x(0)3 −b2 x(1)3 = − 1

a33

·

a31·x(1)1 +a32·x(1)2 −b3

. Alkalmazzuk ebben az alakban a konkrét iterációt!

1. lépés:

x(1)1 = −1 1 ·

0·x(0)2 + 1·x(0)3 −1

=−(0 + 0−1) = 1 x(1)2 = −1

1 ·

0·x(1)1 −1·x(0)3 −1

=−(0−0−1) = 1 x(1)3 = −1

1 ·

1·x(1)1 + 1·x(1)2 −1

=−(1 + 1−1) =−1 2. lépés:

x(2)1 = −1 1 ·

0·x(1)2 + 1·x(1)3 −1

=−(0−1−1) = 2 x(2)2 = −1

1 ·

0·x(2)1 −1·x(1)3 −1

=−(0−(−1)−1) = 0 x(2)3 = −1

1 ·

1·x(2)1 + 1·x(2)2 −1

=−(2 + 0−1) =−1

3. lépés: Látjuk, hogy a korábbi számolással egyező eredményt kaptunk.

7. Meg kell vizsgálnunk, hogy az A mátrixra felírt Gauss-Seidel-iteráció konvergens-e. Ehhez első lépésként az átmenetmátrixot kell kiszámítanunk.

BS(1) = −(L+D)−1U= A konvergencia bizonyításához az elégséges feltételt alkalmazzuk.

kBS(1)k= 5 16 <1

A kapott eredmény egynél kisebb, tehát a Gauss-Seidel-iterációval mindig konvergens soroza-tot kapunk. Ahhoz, hogy kiszámoljuk az első 2 lépést, alkalmasx0-t kell választanunk. Mivel bármilyenx0 jó, ezért a legegyszerűbb megoldás azx0 =

0 0 0T

=0 vektor. Az xk+1 =−(L+D)−1U·xk+ (L+D)−1b

sorozattal tudjuk az iteráció lépéseit kiszámolni. Ezt felhasználva végezzük el az iteráció első két lépését!

1. lépés:

Végezzük el a két lépést az előző feladatban ismertetett módon, az átmenetmátrix felhasználása nélkül is! A következő koordináta közelítéséhez a már kiszámított új koordinátát használjuk.

1. lépés:

Látjuk, hogy a korábbi számolással egyező eredményt kaptunk. Ez a megoldás akkor előnyös, ha nem kell kiszámolni az átmenetmátrixot. Ha csak konvergenciát kellett volna a feladatban bizonyítani, azt megtehettük volna az átmenetmátrix nélkül is, hiszen a Gauss–Seidel-iteráció konvergencia tétele szimmetrikus, pozitív definit mátrixok esetén (a konkrétA ilyen) garan-tálja a konvergenciát.

Utolsó feladatunk, hogy kiszámoljuk a lépésszámot a10−3 pontosság eléréséhez.

(q= 165 a kontrakciós együttható, a BS(1) mátrix k.k normája.)

Mint láthatók≥7 iterációs lépés elvégzése után elérjük a10−3 pontosságot.

8. A feladat megoldásához először azt kell megvizsgálnunk, hogy ∀ x0 ∈ R3-ből indítva az

iterációt, konvergens-e. Ehhez ki kell számolnunk az átmenetmátrixot. A konvergencia vizsgálatához az elégséges feltételt alkalmazzuk.

kBS(1)k= 13 16 <1

A kapott eredmény egynél kisebb, tehát teljesül a konvergencia. Az első 2 lépés kiszámolásához, alkalmasx0-t kell választanunk. Mivel bármilyenx0alaklmas, ezért a legegyszerűbb megoldás azx0 =

0 0 0T

=0 vektor. Az

xk+1 =−(L+D)−1U·xk+ (L+D)−1b

sorozattal tudjuk az iteráció lépéseit kiszámolni. Végezzük el az iteráció első két lépését!

1. lépés: Utolsó feladatunk, hogy kiszámoljuk a lépésszámot a10−3 pontosság eléréséhez.

(q= 1316 a kontrakciós együttható, a BS(1) mátrix k.k normája.)

Látható, hogyk≥35 iterációs lépés elvégzése után elérjük a10−3 pontosságot.

9. A feladat megoldásához először azt kell megvizsgálnunk, hogy ∀ x0 ∈ R3-ből indítva az iterációt, konvergens lesz-e. Ehhez ki kell számolnunk az átmenetmátrixot.

BS(1) = −(L+D)−1U=

= −

4 0 0 2 3 0 1 0 1

−1

·

0 1 1 0 0 1 0 0 0

=

= −

1

4 0 0

16 13 0

14 0 1

·

0 1 1 0 0 1 0 0 0

=

= −

0 14 14 0 −16 16 0 −1414

=

0 −1414 0 1616 0 14 14

Alkalmazhatjuk az elégséges feltételt.

kBS(1)k1 = 2 3 <1

Az átmenetmátrix normája egynél kisebb, tehát teljesül a konvergencia. Az első 2 lépés kiszá-molásához, alkalmas x0-t választunk. Mivel bármilyen x0-ra konvergens az iteráció, ezért a legegyszerűbb megoldás azx0 =

0 0 0T

=0 vektor. Az xk+1 =−(L+D)−1U·xk+ (L+D)−1b sorozattal tudjuk az iteráció lépéseit kiszámolni.

1. lépés:

x1 = (L+D)−1U·x0+ (L+D)−1b=BS(1)·0+c=

= c=

1

4 0 0

16 13 0

14 0 1

·

 1 1 1

=

1 41 63 4

2. lépés:

x2 = (L+D)−1U·x1+ (L+D)−1b=BS(1)·x1+c=

=

0 −1414 0 1616 0 14 14

·

1 41 63 4

+

1 41 63 4

=

1 485 7247 48

Utolsó feladatunk, hogy kiszámoljuk a lépésszámot a10−3 pontosság eléréséhez.

(q= 23 a kontrakciós együttható, a BS(1) mátrix k.k1 normája.)

kxk−xk ≤ qk

1−qkx1−x0k1≤10−2

2

Tehátk≥15 iterációs lépés elvégzése után elérjük a10−2 pontosságot!

10. A feladat megoldásához először azt kell megvizsgálnunk, hogy ∀ x0 ∈ R3-ből indítva az iterációt, konvergens lesz-e. Ehhez ki kell számolnunk az átmenetmátrixot.

BS(1) = −(L+D)−1U= Alkalmazhatjuk az elégséges feltételt.

kBS(1)k= 21 25 <1

Az átmenetmátrix normája egynél kisebb, tehát teljesül a konvergencia. Az első 2 lépés kiszá-molásához, alkalmas x0-t választunk. Mivel bármilyen x0-ra konvergens az iteráció, ezért a legegyszerűbb megoldás azx0 =

0 0 0T

=0 vektor. Az xk+1 =−(L+D)−1U·xk+ (L+D)−1b sorozattal tudjuk az iteráció lépéseit kiszámolni.

1. lépés:

Utolsó feladatunk, hogy kiszámoljuk a lépésszámot a10−3 pontosság eléréséhez.

(q= 2125 a kontrakciós együttható, a BS(1) mátrix k.k normája.)

kxk−xk ≤ qk

1−qkx1−x0k ≤ 10−3

21 25

k

1−2125 ·

1 35 25

507

−

 0 0 0

≤ 10−3 21

25 k

·

1 5 4 25

= 21

25 k

·1 5·25

4 ≤ 10−3 5

4 ·103 ≤ 25

21 k

lg 5

4 ·103

≤ k·lg 25

21 lg 54 ·103

lg 2521 ≈40,90 ≤ k

Tehátk≥41 iterációs lépés elvégzése után elérjük a10−3 pontosságot!

4.2.4. Paraméteres iterációk: csillapított Jacobi-iteráció és a relaxá-ciós módszer

11. A feladatunk, hogy megállapítsuk, hogy a csillapított Jacobi-iteráció milyen ω esetén lesz konvergens. A módszer képletét a következőképpen származtathatjuk.

Ax=b ⇔ ωx=−ωD−1(L+U)x+D−1b ⇔

⇔ (1−ω)x+ωx= (1−ω)x−ωD−1(L+U)x+D−1b ⇔

⇔ x= (1−ω)I−ωD−1(L+U)

x+D−1b A kapott fixpontegyenletből felírhatjuk az iteráció képletét.

xk+1 =

BJ(ω)

z }| {

((1−ω)I−ωD−1(L+U)

| {z }

BJ(1)

)xk+ωD−1b

Mint látható a képletben megtalálható a BJ(1) mátrix is, mely a Jacobi-iteráció átmenet-mátrixa. Azt is észrevehetjük, hogy a képletben azω= 1választással visszakapjuk az egyszerű Jacobi-iteráció képletét. Ahhoz, hogy megállapítsuk, pontosan melyek azok azω-k, melyekre konvergens a módszer, a szükséges és elégséges feltételt kell alkalmaznunk.

Szükséges és elégséges feltétel:

∀ x0 ∈ Rn-ből indítva az iterációt konvergens lesz pontosan akkor, ha ρ(B) < 1, ahol ρ(B) = maxni=1i|aB mátrix spektrálsugara.

A feltétel alkalmazásához ki kell számítanunk a BJ(ω) mátrixot. Először azonban érdemes

meghatároznunk aBJ(1) mátrixot. Ebből már könnyen származtatható aBJ(ω) mátrix.

BJ(ω) = (1−ω)I−wD−1(L+U) = (1−ω)I+wBJ(1)=

A szükséges és elégséges feltétel használatához szükségünk van aBJ(ω) mátrix sajátértékeire.

Írjuk fel a karakterisztikus polinomot!

det(BJ(ω)−λI) = A három sajátérték paraméteres alakja a következő lesz.

1−ω−λ1(ω) = 0 ⇒ λ1(ω) = 1−ω

Ahhoz, hogy az iteráció konvergens legyen a spektrálsugárnak kisebbnek kell lennie egynél.

ρ(BJ(ω)) = max{|λ1(ω)|,|λ2(ω)|,|λ3(ω)|}<1

Látjuk, hogy a kapott függvények az abszolút értéken belül lineárisan függnek ω-tól, így grafikonjuk V alakú lesz. A könnyebb átláthatóság kedvéért érdemes felrajzolnunk a füg-gvényeket. Ehhez először ki kell számítani azxtengellyel való metszéspontokat.

λ1(ω) = 1−ω= 0 ⇒ ω1 = 1 λ2(ω) = 1−ω− ω

√8 = 0 ⇒ ω2 = 1 1 +1

8

=

√ 8 8 + 1 λ3(ω) = 1−ω+ ω

8 = 0 ⇒ ω3 = 1 1−1

8

=

√ 8 8−1 A metszéspontok meghatározása után már fel lehet rajzolni az ábrát.

4.1. ábra.

Amint az 4.1 ábrán is látható, arra az intervallumra lesz szükségünk, ahol mind a három függvény grafikonja 1 alatt van. Ez a (0,2ω2) intervallum, hiszen ha 2·ω2-nél nagyobb ω, akkor|λ2|nagyobb lesz egynél, illetve ha ω kisebb0, akkor a helyzet ugyanez. Tehát

ω ∈(0,2ω2)

esetén bármely kezdővektorra konvergens lesz a csillapított Jacobi-iteráció.

Az ábráról az is leolvasható, hogy az optimálisω-t aλ2(ω)ésλ3(ω)függvények metszéspont-jánál kapjuk.

2opt)| = |λ3opt)|

λ2opt) = −λ3opt) 1−ωopt−ωopt

8 = −(1−ωoptopt

√ 8) 1−ωopt−ωopt

√8 = −1 +ωopt−ωopt

√8 ωopt = 1

Tehát az optimális paraméterωopt = 1, azaz a Jacobi-iteráció gyorsabb bármely paraméteres változatánál.

12. A feladatunk, hogy megállapítsuk, hogy a csillapított Jacobi-iteráció milyen ω esetén lesz konvergens. Ehhez első lépésként írjuk fel az iteráció képletét.

xk+1 =

BJ(ω)

z }| {

((1−ω)I−ωD−1(L+U)

| {z }

BJ(1)

)xk+ωD−1b

Mint látható a képletben megtalálható a BJ(1) mátrix is. Ahhoz, hogy megállapítsuk, hogy milyen ω-ra konvergens, alkalmaznunk kell a szükséges és elégséges feltételt. A feltétel alka-lmazásához ki kell számítanunk aBJ(ω) mátrixot. Érdemes előbb aBJ(1) mátrixot kiszámol-nunk. Ebből már könnyen származtatható aBJ(ω) mátrix.

BJ(ω) = (1−ω)I−wD−1(L+U) = (1−ω)I+wBJ(1)=

A szükséges és elégséges feltétel használatához szükségünk van aBJ(ω) mátrix sajátértékeire.

Írjuk fel a karakterisztikus polinomot!

det(BJ(ω)−λI) = A három sajátérték paraméteres alakja a következő lesz.

1−ω−λ1(ω) = 0 ⇒ λ1(ω) = 1−ω

Ahhoz, hogy az iteráció konvergens legyen, a spektrálsugárnak kisebbnek kell lennie egynél.

ρ(BJ(ω)) = max{|λ1(ω)|,|λ2(ω)|,|λ3(ω)|}<1

Látjuk, hogy a kapott függvények az abszolút értéken belül lineárisan függnek ω-tól, így grafikonjuk V alakú lesz. A könnyebb átláthatóság kedvéért érdemes felrajzolnunk a füg-gvényeket. Ehhez ki kell számítani azx tengellyel való metszéspontokat.

λ1(ω) = 1−ω= 0 ⇒ ω1 = 1 λ2(ω) = 1−ω−4ω

3 = 0 ⇒ ω2 = 1 1 +43 = 3

7 λ3(ω) = 1−ω+4ω

3 = 0 ⇒ ω3 = 1

1−43 =−3

A metszéspontok meghatározása után már fel tudjuk rajzolni az ábrát.

4.2. ábra.

Azok azω-k lennének jók, ahol mindhárom függvény grafikon1alatt van, hiszen ekkor lenne a spektrálsugár kisebb egynél. Azonban - mint az a 4.2 ábrán is látható - nincs olyan pont ahol mindhárom függvény1 alatt lenne. Mindhárom metszi azy tengelyt az 1 pontban, azonban,

Azok azω-k lennének jók, ahol mindhárom függvény grafikon1alatt van, hiszen ekkor lenne a spektrálsugár kisebb egynél. Azonban - mint az a 4.2 ábrán is látható - nincs olyan pont ahol mindhárom függvény1 alatt lenne. Mindhárom metszi azy tengelyt az 1 pontban, azonban,

In document Numerikus módszerek példatár (Pldal 117-167)