Eötvös Loránd Tudományegyetem Természettudományi Kar Kerényi Péter Gyökkeresés iterációval BSc. szakdolgozat Témavezet : Sigray István Analízis tanszék Budapest,
Tartalomjegyzék. Bevezetés 4. Newton-módszer a valós esetben 5.. Newton-módszer és konvergencia-sebessége............... 5.. Ellenpéldák................................ 8.3. Ellenpéldák egy lehetséges feloldása................... 3. Newton-módszer a komplex esetben 5 3.. Newton-módszer............................. 5 3.. Newton-módszer különböz kezd pontokból indítva.......... 8 4. Curt McMullen javított algoritmusa 4 4.. Javított algoritmus............................ 4 4.. McMullen-módszer különböz kezd pontokból indítva......... 6 5. Összefoglalás 7 A. A NewMeth program 9 A.. A feladat.................................. 9 A.. Elemzés.................................. 9 A.3. Input paraméterek............................ 3 A.4. Implementáció............................... 3 A.4.. További alprogram........................ 3 A.5. Absztrakt program............................ 33 Hivatkozások 35
Köszönetnyilvánítás Szeretnék köszönetet mondani témavezet mnek, Sigray Istvánnak, aki érdekes felvetéseivel és kérdéseimre adott körültekint válaszaival segítette munkámat. Köszönettel tartozom csoporttársaimnak, kiváltképp Englert Ákosnak, akinek MatLab könyvét immáron másfél éve használom dolgozatom elkészítéséhez. 3
. fejezet Bevezetés A dolgozatban különböz harmadfokú polinomok gyökeit keressük, mind valós, mind pedig komplex együtthatós polinomok esetében. A gyökök megtalálásához két iterációs eljárást használunk. El ször a talán legismertebb eljárást a Newton- Raphson módszert (továbbiakban Newton-módszer) vizsgáljuk (. fejezet, 3. fejezet), példákon keresztül bemutatjuk a módszer m ködését valamint a m ködés során fellép esetleges hibákat, a hibák okait és lehetséges megoldásokat. Ezek után áttérünk egy Curt McMullen [McMullen 987] által módosított algoritmusra (4. fejezet), példák segítségével kielemezzük annak m ködését és m ködésének sajátosságait. A két módszer elvégzése során kapott adatokat összehasonlítjuk és összefoglaljuk hasonlóságaikat és különbségeiket (5. fejezet). A példák megválasztásánál William Gilbertet [Gilbert ] követjük és négy tizedesjegy pontossággal dolgozunk. A vizsgálatokhoz az általunk a MatLab programcsomagban készített NewMeth programot használjuk. A program leírását és f paramétereit tartalmazza az A. függelék. A NewMeth program letölthet az ELTE TTK Matematika intézetének honlapjáról (http://www.cs.elte.hu/keppabt/documents/newmeth.zip). A program kicsomagolás (és a megfelel MatLab program mellett) azonnal indítható, így az olvasó maga is meg tudja ismételni a dolgozatban tárgyalt példákat vagy akár új feladatok megoldására is használhatja azt. 4
. fejezet Newton-módszer a valós esetben.. Newton-módszer és konvergencia-sebessége A Newton-módszer egy approximációs eljárás, melynek alapvet ötlete, hogy a függvény egyik x gyökéhez "közeli" x kezd pontot ismerve próbálja meghatározni az f(x) függvény egyik x gyökét. Jelöljük ε -val a nulladik tag hibáját, azaz ε = x x. Írjuk fel az f(x) függvény x körüli Taylor-sorát. f(x) = f(x ) + f (x )(x x ) +... x = x -ra az alábbi összefüggést kapjuk: f(x ) f(x ) + f (x )(x x ) f(x ) + f (x )(ε + x x ) ε f(x ) f (x ) x x f(x ) f (x ) Iterálva az eljárást a következ pont kiszámításának képlete: x n+ = x n f(x n) f (x n ) 5
.. Newton-módszer és konvergencia-sebessége 6 A leképezés tehát a következ képpen adható meg: R(x) = x f(x) f (x) Geometriailag ez azt jelenti, hogy egy függvény x gyökét úgy találja meg a módszer, hogy a gyökhöz megfelel távolságon belül található x ponthoz érint t húz, majd ezen érint és az x tengely metszéspontja lesz az x jobb közelítése az x gyöknek. Ezek után az eljárás iterálva folytatódik... Példa. (.. ábra) Tekintsük az f(x) =, 3x x +, 5 függvényt. Indítsuk az iterációt az x =, 5 pontból. NewMeth(,.3,-,.5,-.5,4,'newton') 3.5.5.5.5 3 3.. ábra. Az f(x) =, 3x x+, 5 függvény megoldása Newton-módszerrel. Els iterációs lépés pirossal, második iterációs lépés zölddel, gyök ciánnal jelölve. Els iterációs lépés (.. ábrán pirossal jelölve): f(, 5) =, 675 Az érint meredeksége: f (, 5) =, 9
.. Newton-módszer és konvergencia-sebessége 7 Következ pont: x = x f(x ) f (x ) =, 5 f(,5) f (,5) =, 5,675,9 =, 9 Második iterációs lépés (.. ábrán zölddel jelölve): f(x ) =, 5946 f (x ) =, 55 x =, 474 Harmadik iterációs lépés: f(x ) =, 95 f (x ) =, 77 x 3 =, 64 Negyedik iterációs lépés: f(x 3 ) =, 53 f (x 3 ) =, 6374 x 4 =, 65 Ötödik iterációs lépés: f(x 4 ) =, 4 f (x 4 ) =, 635 x 5 =, 66 f(x 5 ) (minimum 4 tizedesjegy pontossággal) A megtalált gyök, 66 (.. ábrán cián négyzettel jelölve). A.. Példa esetén a Newton-módszer az ötödik iterációs lépésben találja meg az egyik gyököt (minimum 4 tizedesjegy pontossággal). Általánosságban a konvergencia sebességér l a következ tételt fogalmazhatjuk meg... Tétel. Ha az x kezd pont "elég jó" közelítése az x gyöknek, f (x ) és f kétszer folytonosan dierenciálható x környezetében, akkor a Newton-módszer
.. Ellenpéldák 8 kvadratikusan konvergens: x n+ x c x n x Bizonyítás. x n+ x = x n f(x n) f (x n ) x = x n x f(x n) f(x ) f (x n ) = = f (x n )(x n x ) (f(x n ) f(x )) f (x n ) A Lagrange középérték tétel szerint ξ n [x n, x ] : f(x n ) f(x ) = f (ξ n )(x n x ) Tehát az el z kifejezés tovább egyenl : (f (x n ) f (ξ n ))(x n x ) f (x n ) Ismét a Lagrange középérték tételt alkalmazva ξ n [x n, x ] : f (x n ) f (x ) = f ( ξ n )(x n x ), tehát az egyenl séget tovább folytatva kapjuk, hogy: f ( ξ n )(x n ξ n )(x n x ) f (x n ) Ebb l következik, hogy: x n+ x f ( ξ n ) f (x n ) x n x.. Ellenpéldák Mi történik viszont akkor, ha nem "elég jó" kezd pontot választunk vagy függvényünk nem dierenciálható a megfelel módon. Ilyenkor el fordul, hogy az iteráció lassabban vagy egyáltalán nem konvergál a gyökhöz. A következ kben erre látunk majd néhány példát.
.. Ellenpéldák 9.. Példa. (.. ábra) Tekintsük az f(x) = x 3 x + függvényt. Az iterációt az x = pontból indítva a következ eredményeket kapjuk: NewMeth(,,-,,,4,'newton') 3.5.5.5.5 3 3.. ábra. Az f(x) = x 3 x + függvény megoldása Newton-módszerrel. Els iterációs lépés pirossal, második iterációs lépés zölddel, gyök ciánnal jelölve. Els iterációs lépés (.. ábrán pirossal jelölve): f(x ) = f (x ) = x = Második iterációs lépés (.. ábrán zölddel jelölve): f(x ) = f (x ) = x = Innent l kezdve az iteráció ezen két pont között oszcillál vagyis egy hosszú ciklusba
.. Ellenpéldák jutunk. Ha a kezd pontban a függvény deriváltja nulla, akkor nem tudjuk kiszámítani a következ pontot, mert ilyenkor nullával kellene osztani. Geometriailag ez azt jelenti, hogy a függvény egy széls értékében húzunk a függvényhez egy érint t, ami pedig párhuzamos lesz az x tengellyel..3. Példa. (.3. ábra) Tekintsük az f(x) = x függvényt. Az iterációt az x = pontból indítva a következ eredményeket kapjuk: NewMeth(,-,,,,4,'newton') 3.5.5.5.5 3 3.3. ábra. Az f(x) = x függvény megoldása Newton-módszerrel. Els iterációs lépés pirossal, gyök ciánnal jelölve. Els iterációs lépés (.3. ábrán pirossal jelölve): f(x ) = f (x ) = x = NaN
.3. Ellenpéldák egy lehetséges feloldása Ez esetben a Newton-módszer nem találja meg a gyököt. Mi történik akkor, ha a függvényünknek nincs valós gyöke?.4. Példa. (.4. ábra) Tekintsük az f(x) = x + függvényt. Az iterációt az x = pontból indítva a következ eredményeket kapjuk: NewMeth(,,,,,4,'newton') 3.5 3.5.5.5.5 3 3.4. ábra. Az f(x) = + x függvény. A módszer ilyenkor természetesen nem találja meg a gyököt..3. Ellenpéldák egy lehetséges feloldása A.. Példában kezd pontnak a x = pontot választottuk. Ez pedig az R R(x) leképezés egy xpontja: R R() = R(R()) R() = 3 + 3 = R(R()) = R() = 3 + 3 =
.3. Ellenpéldák egy lehetséges feloldása Ezen okból kifolyólag kaptunk a módszer elvégzése során egy hosszú ciklust. Ebb l látható, hogyha kezd pontnak nem xpontot, hanem ennél egy kis értékkel eltér számot választunk, akkor ez a probléma jó eséllyel megsz nik és az iterációs eljárás meg fogja találni a gyököt. Ezt az eljárást nevezzük perturbálásnak..5. Példa. Tekintsük az f(x) = x 3 x+ függvényt. Az iterációt az x = pont helyett indítsuk az x =, 3 pontból (azért ezt választjuk, mert ez a legközelebbi érték, amit a 38 számjeggyel dolgozó programunk még kezelni tud). A következ eredményeket kapjuk: NewMeth(,,-,,-.3,4,'newton') Els iterációs lépés: x =, 3 x =, 83 Második iterációs lépés: x =, 488 Harmadik iterációs lépés: x 3 =, 39... Negyvenötödik iterációs lépés: x 45 =, 8438... Negyvennyolcadik iterációs lépés: x 48 =, 7693 f(x) = (minimum 4 tizedesjegy pontossággal) A megtalált gyök, 7693. A.5. Példa esetén a Newton-módszer a negyvennyolcadik iterációs lépésben találja meg az egyik gyököt (minimum 4 tizedesjegy pontossággal). Ez esetben tehát
.3. Ellenpéldák egy lehetséges feloldása 3 a perturbálás segít és a módszernek sikerül gyököt találnia. A.3. Példában kezd pontnak a x = választottuk. A problémát a módszer képletében szerepl tört nevez jében található függvény deriváltja és annak értéke okozta. Most is azt várjuk, hogy a perturbálás segíteni fog..6. Példa. Tekintsük az f(x) = x függvényt. Az iterációt az x = pont helyett indítsuk az x =, pontból. A következ eredményeket kapjuk: NewMeth(,-,,,.,4,'newton') Els iterációs lépés: x =, x =, 5 Második iterációs lépés: x = 5, 5 Harmadik iterációs lépés: x 3 = 5, 65... Tízedik iterációs lépés: x =, 44 Tizenegyedik iterációs lépés: x =, 44 f(x) = (minimum 4 tizedesjegy pontossággal) A megtalált gyök, 44. A.6. Példa esetén a Newton-módszer az tizenegyedik iterációs lépésben találja meg az egyik gyököt (minimum 4 tizedesjegy pontossággal). Ez esetben tehát a perturbálás ismét segít és a módszernek sikerül gyököt találnia.
.3. Ellenpéldák egy lehetséges feloldása 4 A.4. Példában szerepl függvényünknek nincs valós gyöke, ezért az el z két példában (.5. Példa,.6. Példa) m köd perturbálás itt nem vezet eredményre és a Newton-módszer továbbra sem talál gyököt.
3. fejezet Newton-módszer a komplex esetben 3.. Newton-módszer Az el z fejezetben tárgyalt.4. példában, mivel a függvénynek nincs valós gyöke, ezért a Newton-módszer semmilyen valós kezd pontból nem talált gyököt, így a perturbálás sem segített. Mi történik viszont akkor, ha a kezd ponthoz nem egy kicsi valós számot, hanem egy kicsi képzetes részt adunk. 3.. Példa. (3.. ábra) Tekintsük az f(z) = z + függvényt. Indítsuk az iterációt az z = +, i pontból. NewMeth(,,i,--i,+i,4,'newton',) Els iterációs lépés (3.. ábra): z = +, i z =, 4999 +, 5i Második iterációs lépés: z =, 7486 +, 675i Harmadik iterációs lépés: z 3 =, 333 +, 558i 5
3.. Newton-módszer 6 Kezdõ pont Elsõ lépés Második lépés.5.5.5.5.5.5 Harmadik lépés Tizedik lépés Tizenegyedik lépés.5.5.5.5.5.5 3.. ábra. Az f(z) = z + függvény megoldása Newton-módszerrel. Iterációs lépések pirossal, gyök ciánnal jelölve.... Tízedik iterációs lépés: z =, +, 44i Tizenegyedik iterációs lépés: z =, 44i f(z ) = A megtalált gyök, 44i, melyet a Newton-módszer az tizenegyedik iterációs lépésben talál meg (minimum 4 tizedesjegy pontossággal). A Newton-módszer azonban nem csak valós, hanem komplex együtthatós polinomokra is m ködik. A következ kben erre fogunk néhány példát látni. 3.. Példa. (3.. ábra) Tekintsük az f(z) = (z )(z + i)(z + i) függvényt. Indítsuk az iterációt az z = + i pontból.
3.. Newton-módszer 7 NewMeth(,,i,--i,+i,4,'newton',) Kezdõ pont Elsõ lépés Második lépés.5.5.5.5.5.5 Harmadik lépés Negyedik lépés Ötödik lépés.5.5.5.5.5.5 3.. ábra. Az f(z) = (z )(z + i)(z + i) függvény megoldása Newton-módszerrel. Iterációs lépések pirossal, gyök ciánnal jelölve. Els iterációs lépés (3.. ábra): z = + i Következ pont: z = z f(z ) f (z ) = + i f(+i) f (+i) =, 376 +, 568i Második iterációs lépés: z =, 45 +, 4i Harmadik iterációs lépés: z 3 =, 973 +, 37i Negyedik iterációs lépés: z 4 =, 9988, 8i
3.. Newton-módszer különböz kezd pontokból indítva 8 Ötödik iterációs lépés: z 5 = f(z 5 ) = A gyök (3.. ábrán ciánnal jelölve), melyet a Newton-módszer az ötödik iterációs lépésben talál meg (minimum 4 tizedesjegy pontossággal). 3.. Newton-módszer különböz kezd pontokból indítva A következ kben különböz polinomok gyökeit keressük Newton-módszer segítségével. Ehhez az általunk a MatLab programcsomagban készített NewMeth programot használjuk (ld. A. függelék). A különböz gyökhöz konvergáló kezd pontokat különböz színnel ábrázolja a komplex számsíkon a program. 3.3. Példa. (3.3. ábra) Tekintsük az f(z) = (z )(z + i)(z + i) függvényt. NewMeth(,,i,--i,testarea(-,,-,,),4,'newton') A 3.3. ábrán jól láthatóak a különböz szín részek, ahonnan a három gyök valamelyikébe konvergál az iteráció. A sárgával jelölt részb l a + i, a kékkel jelölt részb l i, a pirossal jelölt részb l pedig a gyökhöz konvergál az iteráció. A fekete kezd pontokból 4 iterációs lépés alatt nem konvergál, de ezeknél a kezd pontoknál is segít a perturbálás, mert egy kis számot hozzáadva már valamelyik színes részbe kerülünk. 3.4. Példa. (3.4. ábra) Tekintsük az f(z) = (z )(z +, 5, 33i)(z +, 5+, 33i) függvényt. NewMeth(,,-.64,-.3589,testarea(-,,-,,),4,'newton') A 3.4. ábrán a már korábban látott részeken kívül megjelentek kisebb-nagyobb fe-
3.. Newton-módszer különböz kezd pontokból indítva 9 3.3. ábra. Az f(z) = (z )(z + i)(z + i) függvény megoldása Newton-módszerrel. Sárga kezd pontokból + i, kék kezd pontokból i, piros kezd pontokból gyökhöz konvergál az iteráció. A fekete kezd pontokból 4 iterációs lépés alatt nem konvergál. kete szín csomók. Ezekb l a részekb l indított iterációk nem konvergálnak egyik gyökhöz sem. Most nagyítsuk ki az egyik ilyen fekete részt (3.5. ábra). NewMeth(,,-.64,-.3589,testarea(.4,.,.,,45),4,'newton') A 3.5. ábrán jól láthatók a különböz fekete szín, azaz nem konvergáló bels pontokkal rendelkez részek. A következ kben vizsgáljuk meg, hogy mi történik pontosan, ha egy ilyen fekete részb l indítjuk az iterációt. 3.5. Példa. (3.6. ábra) Tekintsük az f(z) = (z )(z +, 5, 33i)(z +, 5+, 33i) függvényt. Indítsuk az iterációt az z =, 7 +, 6i pontból. NewMeth(,,-.64,-.3589,.7+.6i,4,'newton') Els iterációs lépés (3.6. ábra): z =, 7 +, 6i
3.. Newton-módszer különböz kezd pontokból indítva 3.4. ábra. Az f(z) = (z )(z +, 5, 33i)(z +, 5+, 33i) függvény megoldása Newtonmódszerrel. Sárga kezd pontokból, 5 +, 33i, kék kezd pontokból, 5, 33i, piros kezd pontokból gyökhöz konvergál az iteráció. A fekete kezd pontokból 4 iterációs lépés alatt nem konvergál. Következ pont: z = z f(z ) f (z ) =, 7 +, 6i f(,7+,6i) f (,7+,6i) =, 4676 +, 9678i Második iterációs lépés: z =, 88 +, 469i Harmadik iterációs lépés: z 3 =,, 5i Negyedik iterációs lépés: z 4 =, 5585, 3i
3.. Newton-módszer különböz kezd pontokból indítva 3.5. ábra. Az f(z) = (z )(z +, 5, 33i)(z +, 5+, 33i) függvény megoldása Newtonmódszerrel. Sárga kezd pontokból, 5 +, 33i, kék kezd pontokból, 5, 33i, piros kezd pontokból gyökhöz konvergál az iteráció. A fekete kezd pontokból 4 iterációs lépés alatt nem konvergál. Ötödik iterációs lépés: z 5 =, 355, 88i Látható, hogy a módszer során az els két lépésben egy-egy következ fekete foltba jut az iteráció, majd ezután a valós tengely közelében kezdenek el ugrálni a pontok. Hogy jobban lássuk mi is történt nézzünk meg négy további iterációs lépést. 3.6. Példa. (3.7. ábra) Tekintsük az f(z) = (z )(z +, 5, 33i)(z +, 5+, 33i) függvényt. Indítsuk az iterációt az z 5 =, 355, 88i pontból. Hatodik iterációs lépés:
3.. Newton-módszer különböz kezd pontokból indítva Kezdõpont Elsõ lépés Második lépés.5.5.5.5.5.5 Harmadik lépés.5.5 Negyedik lépés.5.5 Ötödik lépés.5.5 3.6. ábra. Az f(z) = (z )(z + i)(z + i) függvény megoldása Newton-módszerrel. Iterációs lépések zölddel jelölve. z 6 =, 563 +, 8i Hetedik iterációs lépés: z 7 =, 6 +, i Nyolcadik iterációs lépés: z 8 =, 5596, 4i Kilencedik iterációs lépés: z 9 =, 8, 6i Meggyelhet, hogy a negyedik lépést l kezd d en a, 5 és közelében felváltva
3.. Newton-módszer különböz kezd pontokból indítva 3.5 Hatodik lépés.5 Hetedik lépés.5.6.4...5.6.4...5 Nyolcadik lépés.5 Kilencedik lépés.5.6.4...5.6.4.. 3.7. ábra. Az f(z) = (z )(z + i)(z + i) függvény megoldása Newton-módszerrel. Iterációs lépések zölddel jelölve. ugrál az iteráció. Látható, hogy ezeknek a fekete részeknek az el z eknél jóval nagyobb a kiterjedésük, így ezen bels pontokon nem segít a perturbálás, mert továbbra is fekete részben maradunk.
4. fejezet Curt McMullen javított algoritmusa 4.. Javított algoritmus alakú: Curt McMullen módszere [McMullen 987] szerint, ha a függvényünk a következ f(z) = z 3 + a z + a akkor az n +.-ik pont kiszámításának képlete: z n+ = z n (z 3 n + a z n + a )(3a z n + 9a z n a ) 3a z 4 n + 8a z 3 n 6a z n 6a a z n 9a a 3 4.. Megjegyzés. Általános harmadfokú polinomokra is létezik a módszer, de mivel minden harmadfokú polinom a fenti alakra hozható, ezért ezen hosszadalmas képlet közlését l eltekintünk. Nézzük meg most ezzel a módszerrel az el z fejezetben tárgyalt 3.4. Példát, melyben a Newton-módszer nem vezetett eredményre, mert a 3.4. ábrán látható fekete részekb l még perturbáció segítségével sem sikerült az iterációnak gyököt találnia. 4.. Példa. (4.. ábra) Tekintsük az f(z) = (z )(z +, 5, 33i)(z +, 5+, 33i) függvényt. Indítsuk az iterációt az z =, 7 +, 6i pontból. NewMeth(,,-.64,-.3589,.7+.6i,4,'mcmullen') Els iterációs lépés (4.. ábra): 4
4.. Javított algoritmus 5 Kezdõpont Elsõ lépés.5.5.5.5 Második lépés Harmadik lépés.5.5.5.5 4.. ábra. Az f(z) = (z )(z + i)(z + i) függvény megoldása McMullen-módszerrel. Iterációs lépések pirossal, gyök ciánnal jelölve. z =, 7 +, 6i Következ pont: z =, 784 +, 6i Második iterációs lépés: z =, 9 +, 36i Harmadik iterációs lépés: z 3 = A gyök (4.. ábrán ciánnal jelölve), melyet a módszer a harmadik iterációs lépésben talál meg (minimum 4 tizedesjegy pontossággal).
4.. McMullen-módszer különböz kezd pontokból indítva 6 4.. McMullen-módszer különböz kezd pontokból indítva Az el z fejezethez hasonlóan most ezt a javított módszert is alkalmazzuk különböz kezd pontokból. 4.. Példa. (4.. ábra) Tekintsük az f(z) = (z )(z + i)(z + i) függvényt. NewMeth(,,-.64,-.3589,testarea(-,,-,,),4,'mcmullen') 4.. ábra. Az f(z) = (z )(z + i)(z + i) függvény megoldása McMullen-módszerrel. Sárga kezd pontokból, 5 +, 33i, piros kezd pontokból, 5, 33i, kék kezd pontokból gyökhöz konvergál az iteráció A 4.. ábrán ismét látható a már megszokott három szín, valamint a fekete, azaz a nem konvergáló részek elt nnek, eszerint tehát McMullen algoritmusa minden kezd pontból indítva talál gyököt.
5. fejezet Összefoglalás A dolgozatban áttekintettük a Newton-Raphson módszernek nevezett approximációs eljárást, mellyel harmadfokú polinomok gyökeit kerestük. Valós együtthatós polinomok esetén bebizonyítottuk, hogy az eljárás kvadratikusan konvergál (.. Tétel), mely kvadratikus konvergenciát példán is szemléltettük. Ezek után azokat a speciális eseteket vizsgáltuk, amikor a Newton-módszer nem találta meg a gyököt. Ekkor, ha a kiválasztott kezd pont a leképezés egy xpontja volt és ciklusba jutott a módszer (.. Példa), vagy ha a kezd pontban a polinom deriváltja volt (.3. Példa), a perturbálás segített és a módszer talált gyököt. Azonban ha a polinomnak nem létezett valós gyöke (.4. Példa), akkor ez a fajta perturbáció nem javított az iteráción, továbbra sem találtunk gyököt. Ezen a problémán csak a 3. fejezetben bemutatott képzetes rész hozzáadás a valós kezd ponthoz segített (3.. Példa). Ekkor a Newton-módszer talált komplex gyököt. Ezek után a valós együtthatós polinomokról áttértünk a komplex együtthatókra, amikor is a Newton-módszer az el z ekhez hasonlóan m ködött. A következ példában különböz komplex kezd pontokból indítottuk az iterációt, így kaptuk a különböz színes ábrákat. Ezeken az ábrákon különböz színnel jelöltük a különböz gyökhöz konvergáló kezd pontokat. Az ábrákon (3.4. ábra) meggyelt nagy kiterjedés fekete csomók azt jelezték, hogy ezeknél a bels pontokkal rendelkez részeknél nem konvergál az iteráció egyik gyökhöz sem. Ilyenkor a már korábban bevált perturbáció sem segített, mert perturbálás után is fekete részben maradtunk. Tüzetesebben megvizsgáltuk mi történik, ha egy ilyen kezd pontból indítjuk az iterációt 7
8 (3.5. Példa), majd azt tapasztaltuk, hogy egyik fekete csomóból egy másikba ugrunk, míg nem két érték közelében kezd el oszcillálni a módszer. A 4. fejezetben bemutattuk Curt McMullen javított algoritmusát, amelyik módszer harmadfokú polinomok esetében minden kezd pontból talál gyököt. Ezzel az eljárással is megvizsgáltuk a korábban tárgyalt polinomokat és ezen esetekben mindig gyorsabb konvergenciát tapasztaltunk, mint a Newton-módszer esetében. Összességében elmondható, hogy mind a Newton-módszer mind McMullen módszere egy kiváló eljárást ad harmadfokú polinomok gyökeinek megtalálására.
A. Függelék A NewMeth program A NewMeth program letölthet az ELTE TTK Matematika intézetének honlapjáról (http://www.cs.elte.hu/keppabt/documents/newmeth.zip). A.. A feladat A NewMeth program a MatLab programcsomaggal készült, célja komplex együtthatós, legfeljebb harmadfokú polinomok gyökeinek megkeresése és azok ábrázolása a komplex számsíkon. A gyökök keresésére a program két matematikai eljárást, a Newton-Raphson módszert, és egy Curt McMullen által módosított módszert használ. A különböz gyökhöz konvergáló pontokat különböz színnel színezi. A.. Elemzés A program során lehet ségünk van beállítani kezd pontokat és a maximális iterációs számot is (ha ezt a számot meghaladja az iteráció, ekkor az adott pontokat feketére színezi a program). A kapott adatokat egy mátrixban tároljuk melynek els oszlopában a pontok, második oszlopában pedig a pontokhoz tartozó gyökök találhatóak. A hatalmas memória igény miatt ezt a tömböt egy fájlba írjuk. Az iterációs lépést, a fájlba való kiírást, az onnan való beolvasást és képerny re való megfelel kirajzolást különböz alprogramok segítségével hajtjuk végre. 9
A.3. Input paraméterek 3 A.3. Input paraméterek A program futatásához az alábbi input paraméterekre van szükségünk: a3 - polinom együtthatója (szokásos jelölés) [komplex] a - polinom együtthatója [komplex] a - polinom együtthatója [komplex] a - polinom együtthatója [komplex] x - kezd pont(ok) [komplex vektor] maxit - maximális iteráció szám [pozitív egész]. Ha ennyi lépés alatt nem találja meg a gyököt akkor a program feketével színezi az adott pontokat. meth - használni kivánt módszer neve [karakterlánc] - értéke ['newton' 'mcmullen'] marker size (opcionális) - ábrázolás során használt pontok mérete [pozitív egész]. Alapértelmezett érték: len (opcionális) - az adatok tárolására használt fájl neve [karakterlánc]. Alapértelmezett érték: 'tempdata.txt' A.4. Implementáció A NewMeth.m f program feladata az input paraméterek ellen rzése és további alprogramok futtatása. A f programban található alprogramok: make title - az adatokat tartalmazó fájl fejlécének elkészítése input paraméterek: K - polinom együtthatóit tartalmazó vektor [komplex vektor] sum - eddig vizsgált kezd pontok száma [nem negatív egész]
A.4. Implementáció 3 len - adatokat tartalmazó fájl neve [karakterlánc] newton.m - az iterációs lépést végrehajtó alprogram input paraméterek: a3 - polinom együtthatója (szokásos jelölés) [komplex] a - polinom együtthatója [komplex] a - polinom együtthatója [komplex] a - polinom együtthatója [komplex] x - kezd pont(ok) [komplex vektor] k - kezd pont száma [pozitív egész] x - kezd pontokat tartalmazó vektor [komplex vektor] maxit - maximális iteráció szám [pozitív egész] meth - használni kivánt módszer neve [karakterlánc] - értéke ['newton' 'mcmullen'] output paraméterek: A - pontokat tartalmazó vektor [komplex vektor] kon - konvergál-e az adott kezd pontból [ nem tudjuk; igen; nem] roots.m - az input paraméterek: A - pontokat tartalmazó vektor [komplex vektor] kon - konvergál-e az adott kezd pontból [ nem tudjuk; igen; nem] V - eddig megtalált különböz gyököket tartalmazó vektor [komplex vektor] output paraméter: V - eddig megtalált különböz gyököket tartalmazó vektor [komplex vektor]
A.4. Implementáció 3 writting to file.m - adatok kiírása egy fájlba input paraméterek: A - pontokat tartalmazó vektor [komplex vektor] V - eddig megtalált különböz gyököket tartalmazó vektor [komplex vektor] sum - eddig vizsgált kezd pontok száma [nem negatív egész] kon - konvergál-e az adott kezd pontból [ nem tudjuk; igen; nem] d - fájl azonosítója plotting the datas.m - kapott pontok kirajzolása a komplex számsíkon a megfelel módon input paraméterek: len - adatokat tartalmazó fájl neve [karakterlánc] marker size - ábrázolás során használt pontok mérete [pozitív egész] A.4.. További alprogram További alprogram a testarea.m, amely program egy téglalap alakú területen, adott távolságokként lév pontokat helyezi el egy vektorban. Ezek a pontok lesznek az iteráció során használt kezd pontok. testarea.m - kezd pontok elkészítése input paraméterek: xmin - x tengelyen vett baloldali végpont [pozitív valós] xmax - x tengelyen vett jobboldali végpont [pozitív valós] ymin - y tengelyen vett baloldali végpont [pozitív valós] ymax - y tengelyen vett jobboldali végpont [pozitív valós] l - egységnyi intervallumon lév pontok száma [pozitív egész] output paraméter: A - kezd pontok [komplex vektor]
A.5. Absztrakt program 33 A.5. Absztrakt program A program lényegi algoritmusa az iterációs lépést végrehajtó program ( newton.m). Ezen program struktogramját ábrázolja a A.. ábra.
A.5. Absztrakt program 34 A.. ábra. newton.m alprogram struktogramja
Irodalomjegyzék [] McMullen, Curt Families of Rational Maps and Iterative Root-Finding Algorithms, Annals of Mathematics 5 (987), 467-493. [] Gilbert, William J. Generalizations of Newton's method, Fractals, Vol 9., No. 3 (), 5-6. 35