Gyökkeresés iterációval
A gyökkeresés iterációval egy módszer egyenletek megoldására. Az eljárás nem a pontos gyököt adja meg, hanem egy közelítő értéket, ez a közelítő módszerek sajátossága.
Az iteráció során minden lépés bemenő adata az előző lépés kimenete lesz. Amikor ezt gyökkeresésre alkalmazzuk, akkor elsősorban a konvergencia érdekes, azaz az eljárás fokozatosan közelítse az etgyenlet gyökét. Ekkor ugyanis meg tudunk határozni egy határt, aminél pontosabb értéket már elfogadunk megoldásnak.
Minden ilyen eljárás során érdekes a kezdő lépés, ettől ugyanis nagy mértékben függ a konvergencia gyorsasága, egyáltalán a léte. Ez egy külön problémakör a numerikus matematikai módszerek témájában.
Jelen eljárás egy lieáris közelítése a gyököknek, azaz a bemenő adat és ez egyenlet helyettesítési értékének lineáris kombinációja lesz a kimenő (elvileg pontosabb) adat, amit a következő lépésben bemenő adatnak felhasználunk.
Matematikai bevezetés
[szerkesztés]Az egyenlet átírható a vele egyenértékű egyenletté. Szükséges kezdetben egy becsült érték. Ezt behelyettesítjük az előbbi egyenlet bal oldalára, és kapunk egy értéket. Ha ez megegyezik az értékünkkel, akkor ezek ketten közösen a megoldást képezik. Ellenkező esetben megismételhető az előbb leírt lépés ből kiindulva és létrehozható az sor, aminek azt a tulajdonságát szeretnénk elérni, hogy konvergáljon a gyökhöz. Legyen az iterációs képletünk a következő:
- ,
Itt Q egy állandó paraméter, amely a konvergenciát biztosítja. A jobbra látható ábrán a g(x) függvény néhány típusára grafikusan ábrázoljuk az iterációt, hogy jobban érthető legyen. Amint az ábra c és d pontjában látható, a színezett területen áthaladó, azaz túlzottan meredek g(x) függvény esetén divergens az iteráció. Tehát úgy kell megválasztanunk a Q értékét, hogy az ne legyen túl nagy és legyen az iterációnk konvergens.
Konkrét példa
[szerkesztés]Legyen az függvény, aminek keressük a gyökeit. A kezdeti tippünk legyen és legyen először a . Ekkor az iteráció első 7 lépése a következőképpen néz ki:
1 | 0.5 | 0.563918396 | 0.563918396 | 0.063918396 |
2 | 0.563918396 | 0.566952490 | 0.566952490 | 0.003034095 |
3 | 0.566952490 | 0.567131903 | 0.567131903 | 0.000179413 |
4 | 0.567131903 | 0.567142610 | 0.567142610 | 1.07072889·10-05 |
5 | 0.567142610 | 0.567143250 | 0.567143250 | 6.39353343·10-07 |
6 | 0.567143250 | 0.567143288 | 0.567143288 | 3.81782835·10-08 |
7 | 0.567143288 | 0.567143290 | 0.567143290 | 2.27977877·10-09 |
Láthatóan nagyon gyorsan konvergált a keresett gyökhöz. Nézzük most meg, hogy mi történik, ha
1 | 0.5 | 0.71306132 | 0.71306132· | 0.21306132 |
2 | 0.71306132 | 0.26722152 | 0.26722152 | 0.44583980 |
3 | 0.26722152 | 1.26378544 | 1.26378544 | 0.99656392 |
4 | 1.26378544 | -0.69862084 | -0.69862084 | 1.96240628 |
5 | -0.698620839 | 4.72057550 | 4.72057550 | 5.41919634 |
6 | 4.72057550 | -4.70275541 | -4.70275541 | -9.42333091 |
7 | -4.70275541 | 225.203833 | 225.203833 | 229.906589 |
Látható ez esetben, hogy az iteráció divergens és a hiba tart a végtelenbe.
Konvergencia
[szerkesztés]Nézzük most meg részletesebben a konvergencia kérdését. Az optimális paraméter a Q-ra a következő: , ez belátható, hogyha megnézzük a Newton-módszer-nél az iterációs képletet: . Ezek alapján belátható, hogy a Newton módszer egy sokkal gyorsabban konvergáló módszer, mivel minden egyes lépés után beállítja a Q értékét az optimális értékre. Az iterációs módszer viszont annyiban jobb, hogy nem mindig áll rendelkezésünkre a függvény deriváltja, vagy nagyon nehézkes deriválni, így ki tudjuk ezt küszöbölni.
Algoritmus
[szerkesztés]A kód Python programozási nyelvben van írva, az epszilon paraméter pedig a kívánt pontosságot jelenti.
import math
def Fx(X):
return X-e^X
def Iteracio(Fx, x0, Q, epszilon):
x1=x0-Q*Fx(x0)
while abs(x1-x0)>epszilon:
x0=x1
x1=x0-Q*Fx(x0)
return x1
print Iteracio(Fx, 0.5, 0.6, 0.0001)
A program a 3. lépés után már kiírja a kívánt 0.5671 értéket.
Megjegyzések
[szerkesztés]Jegyzetek
[szerkesztés]Források
[szerkesztés]- Numerikus módszerek, 1st, Kolozsvári Egyetemi Kiadó (2008)