• Nem Talált Eredményt

4. Egydimenziós közelítések 49

4.3. A becslések alkalmazása numerikus feladatokban

4.3.1. Gyökkereső algoritmus

Legyenprel adott megbízhatósági szint és tekintsük az f(xr) = prel

egyenletet, melynek pontos gyöke xr – ez általánosan egy kvantilis meghatározási prob-léma. Feladatunk egy xr közelítő gyök kiszámítása – ezt röviden gyökkeresési feladatnak nevezzük.

A leírásra kerülő heurisztikus algoritmus a t regressziós becslést használja közelítő gyök meghatározására, ahol t az előzőleg megadott t1(x), t2(x), t3(x) becslések akárme-lyike lehet. Az eljárás működésének egy magyarázata a következő lehet. Ha a közelítő t függvény az f függvényhez közel van, akkor a t(x) = prel-ből meghatározható közelítő gyök is közel lesz a pontos gyökhöz. Az új xi mintapontokat a közelítő gyök környékén vesszük fel, így a következő approximáló függvénynek remélhetőleg kisebb lesz a hibája az igazi gyök körül, tehát a következő közelítő gyök is közelebb kerül az igazi gyökhöz.

A továbbiakban egy iteratív eljárás segítségével keresünk egy, a pontos xr gyökhöz tartó {xr} közelítés–sorozatát; a közelítő gyök meghatározásához használt t(x) becslést fokozatosan egyre pontosabbá tesszük a közelítő gyök környékén. Ezt azáltal érjük el, hogy egy összehúzódó intervallum-sorozatot konstruálunk – ezeket a p értéket tartal-mazó, értékkészletekre vonatkozó [αi, βi] intervallumokat konfidencia-intervallumoknak nevezzük. A megfelelő,x értékeket tartalmazó[ai, bi]intervallumok a ti(xr) =prel egyen-lőségből számítható xr közelítő gyököket tartalmazzák, ahol ti(ai) = αi, ti(bi) = βi. Az intervallumok hosszát minden iterációs lépésben csökkentjük egy% <1 redukciós faktor-ral. Az algoritmus egyes lépéseire vonatkozó részletes megfontolásokat a [De 98a] cikkben közöltük, itt csak az algoritmusok végleges formáját közöljük.

A jelölések egyszerűsítése céljából az algoritmust csak at1(x) =g1(x) = a1x2+b1x+c1 becslésre írjuk le (a szükséges apró módosítások elvégzése után az eljárás at2 és at3 bec-slésekre is alkalmazható), valamint a t1, g1, a1, b1, c1 mennyiségek indexeit is elhagyjuk.

A redukciós faktor értékét % = 0.6-nek, az egyes iterációkban használt pontok számát K = 10-nek vettük. A kezdeti[a0, b0] intervallumot a tapasztalatok szerint szimmetriku-san kellene felvenni axr gyök körül, de mivel ezt nem ismerjük, egy nagyjából jó becslés elegendő itt. Az algoritmusban ezt a szimmetrizálást közelítőleg úgy érjük el, hogy a job-boldali és a baloldali deriváltak közelítő értékeineko hányadosát használjuk az algoritmus 2. lépésében.

Gyökkereső eljárás – az f(x) =prel egyenletre

0. [Előkészítés.] Tegyük fel, hogy a kezdeti [a0, b0] intervallum, az ebben lévő x0j, j = 1,2, . . . , K pont, az ezekben felvett p0j ∼f(x0j) zajos függvényértékek adottak, valamint meghatároztuk már ezek alapján a g(x) becslést. Legyen kezdetben σ0 =σ/%, az iterációs számláló i= 0, és a lépéshossz stl= (b0−a0)/10.

1. [A konfidencia-intervallum meghatározása.] Növeljük meg az

iterációs számlálót i=i+ 1, számítsuk ki a σi =%σi−1 értéket és az xt=−b/(2a) csonkolási pontot.

2. [Az előzetes [ai, bi] intervallum kiszámítása.] Határozzuk meg a g(xr) = prel egyenletből az xr közelítő gyököt. Ha a <0, akkor elfogadjuk azt a gyököt, amely kisebb xt-nél (ha nincs megoldás, akkor legyen xr=xt). Ha a >0, akkor elfogadjuk az xt-nél nagyobb gyököt (ha nincs megoldás, akkor legyen xr =xt). Számítsuk ki a δ= 2∗stl értéket és legyen x=xr−δ, x+ =xr+δ. A jobb és baloldali deriváltak közelítő arányát az o= (prel−g(x))/(g(x+)−prel) hányados mutatja. Legyen αi = max(prel−o·σi,0.0001), βi = min(preli,0.9999).

3. [Az [ai, bi] intervallum meghatározása.] Számítsuk ki az ai =g−1i), bi =g−1i) gyököket. Ha a <0, akkor válasszuk ki azokat a gyököket, amelyek xt-nél kisebbek, ha a >0, akkor válasszuk ki azokat a

gyököket, amelyek xt-nél nagyobbak (ha nincs megoldás, akkor legyen ai =xt, bi =ai+ 0.01).

4. [A g(x) újraszámítása.] Válasszunk ki K = 10 darab új pontot az [ai, bi] intervallumban: xij = (bi−ai)(j−1)/(K −1) +ai, j = 1, . . . , K és egy Monte Carlo eljárással határozzuk meg a pij ∼f(xij),

E(pij) = f(xij) zajos függvényértékeket. Az új pontok halmaza legyen Si ={xij, pij}Kj=1, és S=∪il=0 Sl. Határozzuk meg az új g(x)

approximációt az összes S-beli pont és függvényérték segítségével.

Határozzuk meg az új közelítő xr =g−1(prel) gyököt (ha a <0, akkor vegyük a kisebbet, egyébként pedig a nagyobb értékű gyököt,

illetőleg legyen xr =xt, ha nincs megoldás).

5. [A konvergencia ellenőrzése.] Ha σ/p

(i+ 1)K < ε0 fennáll, ahol ε0 egy előírt hibatűrés, akkor STOP. Egyébként legyen xr =xr, stl= 2(bi−ai)/K és menjünk vissza az 1. lépésre.

Néhány általános megjegyzést teszünk. Számítástechnikai szempontból az algoritmus-nak a következő két előnye látható:

(i) a számítógépes eredmények szerint [De 98a] az approximáció hibája azS={xij, pij} halmazban megadott pontok számának négyzetgyökével arányosan csökken, vagyis|f(xr)−

f(xr)| ≤σ/p

(N + 1)K, aholN az iterációk száma (ezt a tulajdonságot az algoritmus 5.

lépésében használtuk ki).

(ii) a g(x) becslésnek a 4. lépésben leírt újraszámolását nagyon egyszerűen lehet elvégezni, csak az eddig már meghatározott átlagokhoz kell hozzáadni azSi-beli új pontok megfelelő hatványait (momentumait), vagyis nincs szükség arra, hogy minden iterációban teljesen előlről kezdjük a számításokat. Tehát a regressziós becslés meghatározásával kapcsolatos munka csak lineárisan függ azS-beli pontok (függvénykiszámítások) számától.

Ha a prel megbízhatósági szint 0.95-0.99 körül van, akkor a g(x) becslés lineáris csonkolását kell használni, mivel a becslés konstrukciója miatt a közelítő gyök nagyon közel lesz a csonkolási ponthoz, és a valódi gyök gyakran a csonkolási pontnál nagyobb.

Az 5. lépésben szereplő megállási kritérium helyett másmilyen megállási elvet is használhatunk; a legegyszerűbb az elvégzendő iterációk N számát előre lerögzíteni. Egy másik lehetőség lehet az, ha mintavétel hibáját számítjuk az egész algoritmus folyamán és a kívánt hibakorlát elérése esetén állítjuk le az algoritmust.

Eljárhatnánk úgy is a gyökkeresés algoritmusában, hogy a teljes m-dimenziós Φ füg-gvényre adunk meg egy m-dimenziós regressziós becslést, és ennek az egy egyenes menti (sokaságon felvett) egydimenziós függvényét használjuk a fenti eljárásban, de a szükséges munka mennyiségét nem indokolja meg a pontosságban elérhető növekedés, ezért ezzel nem foglalkozunk részletesen.

Néhány számítási eredményt közlünk annak megmutatására, hogyan működik a gyökkereső algoritmus rögzített N iterációszám esetén (további számítási eredmények találhatók a [De 98a] cikkben). A számítógépes futásokban a következőképpen állítottuk be az algo-ritmus állandóit: K = 10, N = 9, σ = 0.05, vagyis minden eljárásban 100 függvényérték kiszámítását végeztük el és a végső eredmény hibája a legtöbb esetben σ/10 = 0.005 körül volt. Az első példa esetében egy m = 2-dimenziós normális eloszlást használtunk, amelynek komponensei korreláltak voltak. A 3. példában pedig egy tíz-dimenziós nor-mális eloszlást használtunk, amely komponensei páronként korreláltak voltak (az első és a második komponensek egymással korreláltak voltak, de függetlenek az összes többi kom-ponenstől, a harmadik és a negyedik komponensek korreláltak voltak, de függetlenek a többitől, stb.) A 4. példában minden komponens független volt, a kapott numerikus eredményeket a 4.3 táblázatban közöljük.

Példa Dimenzió Megb. ”Pontos” gyök Becslés Gyök Hiba

száma m= prel = xr xr |f(xr)−f(xr)|

1. 2 0.80 1.1114 alap 1.099 0.0025

log 1.100 0.0035

f-log 1.131 0.0048

3. 10 0.95 5.895 alap 5.724 0.0024

log 5.827 0.0010

f-log 5.999 0.0012

4. 50 0.90 4.276 alap 4.201 0.0038

log 4.164 0.0050

f-log 4.216 0.0029

4.3. táblázat. A gyökkeresés eredményei.