• Nem Talált Eredményt

Fixpont-iterációk

In document Numerikus módszerek (Pldal 147-153)

Ellen®rz® kérdések

5. Nemlineáris egyenletek és egyenletrendszerek megoldásaegyenletrendszerek megoldása

5.2. Fixpont-iterációk

Bizonyítás. Legyen példáulx(0) > x? ésf(x(0))>0, f00(x(0))>0 (ekkorf0(x)>0 x(0) és a x? zérushely között). Az

x(k+1)=x(k)− f(x(k)) f0(x(k))

iterációs képletb®l látható, hogy x(k+1) < x(k), azaz szigorúan monoton csökken® lesz a sorozat (amíg a zérushelyet meg nem találja). Másrészt a szigorú konvexitásból következik, hogyx(k)≥ x?. Így a sorozat konvergens lesz. Legyen a határértéke x¯?. Ekkor az iterációs képlet mindkét oldalán álló sorozatnak ugyanoda kell tartania

x(k+1)

| {z }

→¯x?

=x(k)

|{z}

→¯x?

→f(¯x?)

z }| { f(x(k)) f0(x(k))

| {z }

→f0x?)

,

amib®l következik, hogyx¯?=x?.

5.2. Fixpont-iterációk

A xpont-iterációs egyenletmegoldás a Banach-féle xponttételt (1.1.18.tétel) alkalmazva hatá-rozza meg egy nemlineáris egyenlet megoldását. Valós függvényekre a tétel azt mondja ki, hogy ha egyF : [a, b]→[a, b]függvény kontrakció a0≤q <1kontrakciós tényez®vel, akkor bármilyen x(0) ∈[a, b]kezd®elemre az

x(k)=F(x(k−1))

iterációval el®állított sorozat tart azF függvény egyetlen[a, b]-belix? xpontjához, továbbá

|x(k)−x?| ≤ qk

1−q|x(1)−x(0)|. (5.2.1)

A xpont-iteráció lépései szemléltethet®k az y = F(x) és az y = x függvények grakonjá-nak segítségével. Az x(0) értékkel kiszámítjuk az F(x(0)) értéket, majd ezt az y = x függvény segítségével azx-tengelyre vetítjük. Ezutánx(1)-gyel járunk el hasonlóan, stb (5.2.1.ábra).

Az (5.2.1) becslés használható leállási feltételként, hiszen meg tudjuk becsülni az els® két elem segítségével, hogy hányadik sorozatelemt®l leszünk közelebb a határértékhez, mint egy adott hibaszint.

Ha egy f(x) = 0 egyenlet megoldását szeretnénk megkeresni (f folytonos függvény), akkor el®ször a feladatot átírjuk egy ekvivalensF(x) =x xpontproblémává, ahol most már azF(x) függvény xpontjának megkeresése a feladat. AzF(x) függvényt többféleképpen el®állíthatjuk.

A legegyszer¶bb az, ha ki tudjuk fejezni f(x)-b®l az x változót. Példa lehet erre mondjuk az x2−2 = 0egyenlet megoldása, aholf(x) =x2−2, ésx-et kifejezve kapjuk, hogyx= 2/x, vagyis az F(x) = 2/xválasztás megfelel®. Egy általánosabb módszer xpontprobléma el®állítására az, ha egy tetsz®leges, sehol sem nulla folytonosg függvénnyel képezzük azF(x) =x−g(x)·f(x) függvényt. Mivelg nem vehet fel nulla értéket,x =F(x)pontosan olyan x-re teljesülhet csak, amiref(x) = 0.

Természetesen nem elegend® csak a megoldandó egyenlet xpontproblémává transzformálása a megoldáshoz, hiszen azF(x)függvénynek ki kell elégítenie az Banach-féle xponttétel feltételeit.

A gyakorlatban a kontrakciós tulajdonságot garantálja, haF folytonos[a, b]-n és dierenciálható (a, b)-ben, továbbá van olyan 0 ≤ q < 1 szám, mellyel |F0(x)| ≤ q, ∀x ∈ (a, b) (Lagrange-középértéktétel).

5.2.1. ábra. A xpont-iteráció szemléltetése.

5.2.1. megjegyzés. A kontrakciós tulajdonságra nincs szükségünk a konvergencia garantálásá-hoz, ha az F [a, b]-b®l [a, b]-be képez® folytonos függvény monoton növ®, és a-ból vagy b-b®l indítjuk az iterációt. Ha pl.a=x(0)-ból indítjuk, akkor x(1) =F(x(0))≥x(0), és a monotonitás miattx(2)=F(x(1))≥F(x(0)) =x(1), azaz a generált sorozat monoton növ® lesz. Mivel minden elem fels® korlátjab, így a sorozat konvergens lesz. A határértékF folytonossága miatt csak F egy xpontja lehet (aza-hoz legközelebbi).

A xpont-iteráció konvergenciájáról szól az alábbi tétel.

5.2.2. tétel.

Legyen F : [a, b]→[a, b]kontrakció, továbbá legyenF legalább r-szer folytonosan dierenci-álható úgy, hogy

F0(x?) =. . .=F(r−1)(x?) = 0,

és F(r)(x?) 6= 0. Ekkor az F által meghatározott xpontiteráció [a, b] bármelyik pontjából indítva r-ed rendben tart azF függvény egyetlen[a, b]-beli xpontjához.

Bizonyítás. Csak azt kell igazolnunk, hogy a konvergencia rendje r. A tétel többi állítása a Banach-féle xponttétel következménye.

Azx? körüli sorfejtésb®l (feltesszük, hogyx?6=a, b, különben megtaláltuk a xpontot) F(x(k)) =F(x?) +F(r)(ξ)

r! (x(k)−x?)r, azaz

F(x(k))−x?= F(r)(ξ)

r! (x(k)−x?)r.

Mivel az r-edik derivált folytonos és x?-ban nem nulla, ezért x? egy környezetében teljesülnek az1.3.5.tétel feltételei. Így ezen tétel miatt a konvergenciarend valóbanr.

Most megadunk egy olyan hibabecsl® formulát, amely két egymást követ® sorozatelem segít-ségével mond becslést a xpponttól való távolságra.

5.2. Fixpont-iterációk 145

5.2.3. tétel.

Az f(x) = 0 egyenlet egy [a, b] intervallumbeli x? megoldásának megkeresésére alkalmazzuk azx(k+1)=F(x(k))xpont-iterációt, ahol azF(x)függvényt azF(x) =x−g(x)f(x)módon választjuk. Tegyük fel, hogy F az[a, b] intervallumot önmagára képezi, hogy f ésg az [a, b]

intervallumon folytonos, (a, b)-ben deriválható függvény, hogy g-nek nincs zérushelye [a, b] -ben, valamint hogy teljesül az m1:= minx∈(a,b){|(gf)0(x)|}>0 feltétel. Ekkor ha valamilyen ε >0 számra éskindexre

|x(k+1)−x(k)|

|x(k)| ≤ ε

1 +εm1, (5.2.2)

akkor az

|x(k)−x?| ≤ε|x?| becslés is igaz.

Bizonyítás. Rendezzük át ak-adik iterációs lépésx(k+1)=x(k)−g(x(k))f(x(k))képletét, majd alkalmazzuk a Lagrange-középértéktételt.

|x(k+1)−x(k)|=|g(x(k))f(x(k))|=|g(x(k))f(x(k))−g(x?)f(x?)

| {z }

=0

|

=|(gf)0k)| · |x(k)−x?| ≥m1|x(k)−x?|,

aholξk megfelel® konstans azx?ésx(k)pontok között (Lagrange-középértéktétel).

Becsüljük az (5.2.2) képletb®lm1 értékét, majd helyettesítsük be azt a fenti képletbe

|x(k+1)−x(k)| ≥ 1 +ε ε

|x(k+1)−x(k)|

|x(k)| |x(k)−x?|.

Az|x(k+1)−x(k)|tényez®vel egyszer¶sítve az|x(k)−x?|hibára az alábbi becslés nyerhet®

|x(k)−x?| ≤ε|x(k)| −ε|x(k)−x?|=ε(||x(k)| − |x(k)−x?||)≤ε|x(k)−(x(k)−x?)|=ε|x?|.

Az utolsó el®tti lépésben felhasználtuk az1.1.10.tételt.

A tételben bizonyított állítás felhasználható leállási feltételként az iteráció végrehajtása során.

Mivel |x?| ≤max{|a|,|b|}, ezért haε-t úgy választjuk meg, hogy az εmax{|a|,|b|}érték kisebb legyen, mint egy elérni kívánt hibaérték, akkor az (5.2.2) feltétel teljesüléséb®l következik, hogy x(k)az adott hibértéknél közelebb lesz a xponthoz.

5.2.1. Aitken-gyorsítás

Az alábbi eljárás segítségével a xponthoz tartó sorozat konvergenciáját gyorsíthatjuk fel. Az eljárást Aitken3-gyorsításnak nevezzük.

Tegyük fel, hogy van egy iterációval el®állított els®rend¶ konvergens sorozatunk. Ekkor az el®z® fejezet szerint

e(k+1)=F0k)e(k), aholξk x(k)ésx? közé esik. Hasonlóan

e(k)=F0k−1)e(k−1).

3Alexander Aitken, 1895-1967, Új-Zéland

AzF0 függvény folytonossága miatt nyilvánvalóanF0k−1)→F0(x?), azaz hakértéke elég nagy, akkor a fenti két képletben szerepl® konstansok kb. megegyeznek. Így

(e(k))2=e(k−1)e(k+1), azaz

(x(k)−x?)2= (x(k−1)−x?)(x(k+1)−x?).

Fejezzük ki innét azx?xpontot.

(x(k))2+ (x?)2−2x(k)x?

=x(k−1)x(k+1)−x?(x(k−1)+x(k+1)) + (x?)2 Ebb®l a zérushely

x?= x(k−1)x(k+1)−(x(k))2

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

| {z }

=:∆xk+1

−(x(k)−x(k−1))

| {z }

∆xk

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

∆xk+1−∆xk

=x(k+1)− (∆xk+1)2

∆xk+1−∆xk

| {z }

=:∆2xk

.

A bevezetett jelölések segítségével tehát

x?=x(k+1)−(∆xk+1)2

2xk

=: ˆx(k−1)

Természetesen az alkalmazott közelítés miatt ez nem adja meg pontosan x? értékét, de az így kiszámolt {xˆ(k−1)} sorozat gyorsabban tart x?-hoz, mint az eredeti sorozat, nevezetesen igaz, hogy

lim

k→∞

ˆ x(k)−x? x(k)−x? = 0.

5.3. Mintafeladat

Ebben a fejezetben az x2−2 = 0 egyenleten mutatjuk meg az egyes ismertetett módszerek alkalmazását. Határozzuk meg az egyenletx?=√

2megoldását. Kiindulási intervallumnak mindig válasszuk az[1,2]intervallumot. Ebben el®re tudhatjuk, hogy van megoldás, hiszenf(x) =x2−2 folytonos,f(1) =−1ésf(2) = 2. Az iterációkat addig csináljuk, míg a megoldást10−6-nál kisebb hibával kapjuk már meg.

Intervallumfelezési módszer. El®re kiszámolható, hogy hány lépést kell tennünk az adott pon-tosság eléréséhez. kmax = (ln(b−a)/10−6)/ln 2−1 = (ln(106))/ln 2−1 ≈ 18.9316, azaz 19 iterációs lépés elegend®. Az iterációs lépéseket az 5.3.1. táblázatban foglaltuk össze. Érdemes észrevenni, hogy a konvergencia nem monoton, vagyis az utolsó oszlopbeli értékek nem monoton csökken®ek.

Húrmódszer. Mivel f0(x) = 2x és f00(x) = 2, emiatt az els® és második derivált nem vált el®jelet az [1,2] intervallumban, így az 5.1.9.tétel feltételei teljesülnek. Az m1 = 2és M2 = 2 választás megfelel®, kiindulásként megadható pl. az|e(0)|=|a−x?|=|1−x?| ≤1fels® becslés.

5.3. Mintafeladat 147

k a b x(k) |x(k)−x?|

0 1.00000000000000 2.00000000000000 1.50000000000000 0.08578643762690 1 1.00000000000000 1.50000000000000 1.25000000000000 0.16421356237310 2 1.25000000000000 1.50000000000000 1.37500000000000 0.03921356237310 3 1.37500000000000 1.50000000000000 1.43750000000000 0.02328643762690 4 1.37500000000000 1.43750000000000 1.40625000000000 0.00796356237310 5 1.40625000000000 1.43750000000000 1.42187500000000 0.00766143762690 6 1.40625000000000 1.42187500000000 1.41406250000000 0.00015106237310 7 1.41406250000000 1.42187500000000 1.41796875000000 0.00375518762690 8 1.41406250000000 1.41796875000000 1.41601562500000 0.00180206262690 9 1.41406250000000 1.41601562500000 1.41503906250000 0.00082550012690 10 1.41406250000000 1.41503906250000 1.41455078125000 0.00033721887690 11 1.41406250000000 1.41455078125000 1.41430664062500 0.00009307825190 12 1.41406250000000 1.41430664062500 1.41418457031250 0.00002899206060 13 1.41418457031250 1.41430664062500 1.41424560546875 0.00003204309565 14 1.41418457031250 1.41424560546875 1.41421508789063 0.00000152551753 15 1.41418457031250 1.41421508789063 1.41419982910156 0.00001373327153 16 1.41419982910156 1.41421508789063 1.41420745849609 0.00000610387700 17 1.41420745849609 1.41421508789063 1.41421127319336 0.00000228917974 18 1.41421127319336 1.41421508789063 1.41421318054199 0.00000038183110 19 1.41421318054199 1.41421508789063 1.41421413421631 0.00000057184321

5.3.1. táblázat. Az intervallumfelezési eljárás adatai a mintafeladatra.

Így az (5.1.1) becslés miatt|e(k)| ≤(1/2)k, és a kívánt pontosság eléréséhez elegend®kmax = 20 iterációs lépést végezni (a valóságban kevesebb is elég, de a fenti becslésünk ezt adja). Az iterációs lépéseket az5.3.2.táblázatban foglaltuk össze. Az utolsó oszlop a logaritmikus relatív csökkenést adja meg. Látható, hogy ennek értéke 1-hez tart, hiszen els®rend¶ a módszer. A sorozat hibája (második oszlop)k≥2esetén monoton csökken®.

Szel®módszer. Az 5.1.11. tételnek megfelel®en legyen C =M2/(2m1) = 1/2. Ekkor nyilván teljesül, hogy

max{|a−x?|,|b−x?|}= max{|1−x?|,|2−x?|} ≤1<1/C.

Így a szel®módszer monoton módon konvergálni fog. Miveld= 1/2, emiatt alkalmazhatjuk az

|e(k)| ≤dk

C = 2dk ≤10−6

becslést. Ebb®l kapjuk, hogykmax= 21iterációs lépés után10−6-nál pontosabb közelítést kapunk.

Az5.3.3.táblázatból látszik, hogy sokkal hamarabb (6. lépésben) is elérjük a kívánt pontosságot, s®t tovább már nem is tudunk menni, mert a MATLAB nullával való osztás miatt hibaüzenetet ad. Ak ≥2 értékekre jól látszik a monoton konvergencia (3. oszlop) és a konvergenciarend (4.

oszlop).

Newton-módszer. Mivel f00 = 2 > 0, és f(x) > 0, ha x > x?, ezért a Newton-módszer bármilyen x(0) > x? pontból indítható (5.1.13. tétel). Indítsuk el az x(0) = 1.9 pontból. Ekkor nyilván teljesülnek az 5.1.12.tétel feltételei. Így az (5.1.3) becslés miatt, ha az |e(0)| ≤1 durva becslést használjuk, akkor |e(1)| ≤ C|e(0)|2 ≤ 1/2, |e(2)| ≤ C|e(1)|2 ≤ 1/8, |e(3)| ≤ C|e(2)|2 ≤ 1/128, |e(4)| ≤C|e(3)|2≤1/32768 és|e(5)| ≤C|e(4)|2≤1/(2(32768)2)≈4.6566×10−10<10−6. Ez mutatja, hogy négy lépés biztosan elég lesz az adott pontosság eléréséhez, ahogy ezt az5.3.4.

táblázatban szerepl® adatok is mutatják. Figyeljük meg, hogy a logaritmikus relatív csökkenés valóban 2 közeli.

k x(k) |x(k)−√

2| log. rel. csökk.

0 1.00000000000000 0.41421356237310 -1 2.00000000000000 0.58578643762690

-2 1.33333333333333 0.080880-2-2903976 4.70-2-29-2-23589887 3 1.40000000000000 0.01421356237310 1.69141982231166 4 1.41176470588235 0.00244885649074 1.41343626909880 5 1.41379310344828 0.00042045892482 1.29307890232953 6 1.41414141414141 0.00007214823168 1.22672843924426 7 1.41420118343195 0.00001237894114 1.18483435747867 8 1.41421143847487 0.00000212389823 1.15600171615800 9 1.41421319796954 0.00000036440355 1.13494961104049 10 1.41421349985132 0.00000006252177 1.11890364913929 11 1.41421355164605 0.00000001072704 1.10626800210629 12 1.41421356053263 0.00000000184047 1.09605990342007 13 1.41421356205732 0.00000000031577 1.08764109222480 14 1.41421356231892 0.00000000005418 1.08057902359452 15 1.41421356236380 0.00000000000930 1.07456970644472 16 1.41421356237150 0.00000000000159 1.06939397673514 17 1.41421356237282 0.00000000000027 1.06487465606826 18 1.41421356237305 0.00000000000005 1.06086537951130 19 1.41421356237309 0.00000000000001 1.05688612585613 20 1.41421356237309 0.00000000000000 1.05133725968926

5.3.2. táblázat. A húrmódszer lépései a tesztfeladatra.

k x(k) |x(k)−x?| log. rel. csökk.

0 1.00000000000000 0.41421356237310 -1 2.00000000000000 0.58578643762690

-2 1.33333333333333 0.080880-2-2903976 4.70-2-29-2-23589887 3 1.40000000000000 0.01421356237310 1.69141982231166 4 1.41463414634146 0.00042058396837 1.82761471235075 5 1.41421143847487 0.00000212389823 1.68027808569044 6 1.41421356205732 0.00000000031577 1.67474819872268

5.3.3. táblázat. A szel®módszer iterációs lépései.

Fixpont iteráció. Az x2−2 = 0egyenletet átírhatjuk pl. azx= 2/x=:F(x)alakra, mellyel deniálhatjuk azx(k+1)=F(x(k))iterációt. Sajnos ez az iteráció nem fogja megtalálni a xpontot, hiszenx(0)-ról indítvax(1)= 2/x(0) ésx(2)= 2/(2/x(0)) =x(0), azaz az iteráció felváltva lépeget x(1)-re ésx(0)-ra. Így más iterációs eljárást kell keresnünk.

Írjuk át az egyenletet az ekvivalensx=x−g(x2−2) =:F(x)alakba, aholgmeghatározandó pozitív konstans. Most F0(x) = 1−2gx. Az [1,2] intervallumon ennek akkor lesz a legkisebb az abszolútérték-maximuma, ha g = 2/5, és ekkor a maximum 3/5 = q < 1. Azaz F valóban kontrakció lesz az[1,2]intervallumon. Továbbá, mivelF-nek stacionárius pontja vanx= 5/4-nél és F(1) = 1.4, F(2) = 1.2 és F(5/4) = 1.425, ezért F az [1,2] intervallumot valóban az [1,2]

intervallum belsejébe képezi. Így a Banach-féle xponttétel miatt bármilyenx(0)∈[1,2]pontból indítva az

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

5((x(k))2−2)

In document Numerikus módszerek (Pldal 147-153)