Szakdolgozat Matematika BSc Függvényminimalizálás a Wolfram Mathematica-ban Szerz: : Végh László émavezet: : Dr. Vajda Róbert Szegedi udományegyetem Bolyai Intézet Analízis anszék 3
artalomjegyzék
. Bevezetés Dolgozatom célja, Rn R képez: függvényeken keresztül bemutatni különböz: minimalizálási módszereket a Wolfram Mathematica program segítségével. (Elég minimalizálással foglalkozni, hiszen a maximalizáláshoz, csupán a függvény --szeresét kell minimalizálni.) A dolgozatban csak kényszerfeltétel nélküli módszerekkel foglalkozunk. Gyakorlatban nagyon hasznos a matematika ezen ága. Különböz: gazdaságtani problémák, mint a hasznosság maximalizása, illetve a kiadás minimalizálása is többváltozós függvény optimalizálási feladatok. A mérnöki tudományokban több tervezési probléma is kifejezhet: optimalizációs feladatként. Ezt az alkalmazást tervezési optimalizációnak nevezzük. Azért választottam e témát, mert egyrészt mindig érdekelt a matematika ezen ága, másrészt a gyakorlatban nagyon fontos szerepe van. A számítógépek fejl: désével, már sokkal hatékonyabban dolgozhatunk hasonló problémákon. A dolgozat els: részében az alapvet: tételeken és definíciókon keresztül felépítjük a lejt: módszerek általános alakját, majd pedig a kés: bbiekben vizsgált gradiens és módosított Newton-Raphson módszert. A harmadik fejezetben egy gazdaságos vonalmenti minimumkeresési stratégiát valósítunk meg a Wolfram Mathematica program segítségével. Ezek után különböz: példákon keresztül mutatjuk be a gradiens és módosított Newton-Raphson módszer m> ködését, illetve azok konvergenciájának gyorsaságát. Foglalkozunk a Mathematica erre a célra beépített funkcióival is, majd pedig összehasonlítjuk az általunk definiált módszerekkel. Alkalmazásként A.x = b alakú lineáris egyenletrendszerek megoldásával foglalkozunk a gradiens módszer segítségével. Az A mátrixról kikötjük, hogy szimmetrikus és pozitív definit. Definiáljuk a QHxL = x Ax -x b kvadratikus alakot, amelyet minimalizálva nyerjük az egyenletrendszer megoldásait. A dolgozat végén a függelékben olvashatóak a használt utasítások leírásai. 3
. Lejt: módszerek.. Alapfeladat Feladat: Legyen adott egy g HxL : D R folytonos függvény, ahol D egy korlátos zárt halmaz Rn -ben. Meg szeretnénk határozni e függvény lokális (vagy totális) minimumhelyét. Az x* Î D minimumhelyre a g HxL ³ g Hx* L egyenl: tlenség teljesül x* valamely környezetében (vagy " x Î D-re)... Definíciók, tételek Definíció: Egy f : R R függvény folytonos az a Ε R pontban, ha n H" Ε > L H$ > L H" x Î RL H x - a < f HxL - f HaL < ΕL. Definícó: Egy H Ì R halmaz korlátos és zárt, ha komplementere nyílt és " a Î H-ra, $ M > úgy, hogy a n < M. Definíció: Egy p vektort a g HxL függvény lejt: jének nevezünk x-ben, ha p ¹ és $ >, hogy " < h < ra Ekkor g HxL lokálisan csökken a p irányában. g Hx + hpl < g HxL. Definíció: Egy g HxL parciálisan differenciálható függvény gradiens vektorán a következ: t értjük: grad g HxL := g HxL x g HxL x... g HxL xn étel: Ha a g H xl függvény parciálisan differenciálható x-ben, illetve grad g H xl p <, akkor p lejt: x-ben. (Elegend: feltétel lejt: létezésére.) Definíció:. vektornorma elliptikus, ha p := Ip A pm, ahol p Î Rn és az A n n-es mátrix szimmetrikus és pozitív definit. Definíció: Egy g HxL függvény legmeredekebb lejt: je az x helyen az. elliptikus vektornormára nézve az a p ¹ vektor, melyre grad g HxL p p = min lokálisan a p irányában csökken maximálisan g HxL. q¹ grad g HxL q q étel: Legyen g HxL parciálisan differenciálható az x helyen, illetve A az elliptikus vektornormához választott szimmetrikus, pozitív definit mátrix. Ekkor a 4
étel: Legyen g HxL parciálisan differenciálható az x helyen, illetve A az elliptikus vektornormához választott szimmetrikus, pozitív definit mátrix. Ekkor a p : = -A - grad g HxL vektor legmeredekebb lejt: x-ben az. elliptikus vektornormára nézve. Definíció: Legyen g HxL legalább kétszer parciálisan differenciálható függvény. Ekkor g HxL Hessemátrixát az alábbi módon definiáljuk: Hg HxL := B g HxL F x j xk H j, k =,,..., nl. Definíció: Legyen g HxL differenciálható függvény. Ekkor g HxL Jacobi-mátrixán a következ: t értjük: Jg HxL := B g HxL F x j H j =,,..., nl. Megjegyzés: Ha g HxL második parciális deriváltjai léteznek az x egy környezetében és folytonosak is xben, akkor a Hg HxL egy szimmetrikus mátrix. A Hesse-mátrixra igaz a következ: : Hg HxL = Jg Hgrad g HxLL, vagyis egy függvény Hesse-mátrixa megegyezik a gradiensének Jacobi-mátrixával..3. Lejt: módszer általános alakja Miután megismerkedtünk az alapvet: definíciókkal illetve tételekkel, a minimum keresésre bevezethetjük a lejt: módszerek általános alakját leíró iterációt. Legyen x Î D tetsz: leges kiinduló pont. Az x lényegében egy általunk választott kezd: közelítés a minimumhelyre, tehát a keresést lerövidítheti egy jól megválasztott kezd: pont. Legyen HL - m xm+ := xm - Αm A grad g Hxm L ahol a Λ = Αm -et a következ: feltétel alapján határozzuk meg: HL g Hxm+ L := min g Ixm - Λ A Λ> Ez a vonalmenti minimum biztosan létezik, és g Hxm+ L < g Hxm L Hm =,,,...L, - m grad g Hxm LM. Hm =,,,...L. Ezzel definiáltuk a lejt: módszerek általános alakját, azonban a gyakorlati alkalmazás el: tt meg kell határoznunk az A m mátrixot. A dolgozatban a két leggyakoribb esetetet vizsgáljuk. Ezek a gradiens és módosított Newton-Raphson módszerek..4. Gradiens és módosított Newton-Raphson módszer A gradiens módszer alkalmazásakor az A m -et xm+ := xm - Αm grad g H xm L az I egységmátrixnak választjuk. Ekkor az Hm =,,,...L, képlettel kapjuk az iteráció lépéseit. Αm -et pedig a () feltételb: l nyerjük. A módosított Newton-Raphson módszer használatakor az A m := Hg Hxm L választandó feltéve, hogy a Hesse-mátrix létezik és nem szinguláris. Ekkor xm+ := xm - Αm @Hg Hxm LD- grad g Hxm L Ha az Αm = -et választjuk, akkor ez a grad g HxL = Hm =,,,...L. nem lineáris egyenletrendszerre alkalmazott Newton-Raphson módszer. Ebben az esetben a NewtonRaphson módszer gyakran túll: a célon. Amikor Αm -et a () feltétel alapján választjuk, akkor a 5
nem lineáris egyenletrendszerre alkalmazott Newton-Raphson módszer. Ebben az esetben a NewtonRaphson módszer gyakran túll: a célon. Amikor Αm -et a () feltétel alapján választjuk, akkor a g Hxm+ L < g Hxm L Hm =,,,...L egyenl: tlenség garantáltan teljesül. A következ: fejezetben a vonalmenti minimum meghatározására keresünk gazdaságos stratégiát. 6
3. Vonalmenti minimum keresés 3.. Alapfeladat Legyen EHxL egy hibafunkcionál, ekkor keressük EHxL minimumhelyét a v, v,... vektorok által meghatározott irányokban. Kiindulásként tekintsük az Hm =,,...; x adottl xm+ := xm - Αm vm iterációt, ahol a Λ = Αm -et az EHxm+ L = min EHxm + Λv m L ΛÎR feltételb: l határozzuk meg. ehát a feladatunk, egyváltozós függvények minimumhelyének közelítése. Definíció: Ha a ΦHΛL : R Hvagy R+ L R függvény konvex és létezik egy véges Λ minimumhelye, akkor Φ unimodális függvény. Mivel minden unimodális függvények pontosan egy minimumhelye van, ezért feladatunk már csak az, hogy véges számú lépésben megadjunk egy Λ -t tartalmazó, Ε > számnál kisebb hosszúságú intervallumot. Kihasználva az unimodális függvények tulajddonságait, ha Λ Î Ha, bl, a < Λ < Λ < b és ha ΦHΛ L ΦHΛ L, akkor Λ Î Ha, Λ L; ha ΦHΛ L > ΦHΛ L, akkor Λ Î HΛ, bl. 3.. Minimum keres: stratégia Legyen adott Λ Î Ha, bl, ΦHaL, ΦHbL és Ε >. Rögzítsük a < ` Ε számot. A közelítés a következ: képpen m> ködik: a+b a+b ΦI Ha a ΦI Ha a a+b a+b - M > ΦI - M ΦI Λ Î Ia, a+b + M; a+b Λ Î I -, bm. + M, akkor + M, akkor A fed: intervallumok hossza az b-a. lépésben:. lépésben: k. lépésben: b-a k + J + I b-a +, + M + =... +... + k- N= b-a 4 b-a k + I + M, + J - k- N» b-a k +, Mivel a ` Ε, ezért a k-adik fed: intervallum hossza megközelít: leg Hb - al -k. Legyen k a következ: feltételb: l: b-a k <Ε b-a k -. Ekkor b-a < k, Ε b-a k := Alog E +, Ε k - ahol [Α] az Α valós szám egészrészét jelöli. A lépések száma k, azonban minden egyes lépésben két függvényértéket kell kiszámolni. 7
ahol [Α] az Α valós szám egészrészét jelöli. A lépések száma k, azonban minden egyes lépésben két függvényértéket kell kiszámolni. 3.3. Megvalósítás Wolfram Mathematica-ban El: ször is feltesszük, hogy Λ pozitív. Els: lépésben definiáljuk a Mini függvényt, amely meghatározza a fed: intervallumokat a fent meghatározott k lépésben. A függyvény hívásához öt paramétert kell megadnunk. El: ször azt a függvényt, melynek minimum helyét szeretnénk közelíteni, majd annak változóját. A harmadik paraméter egy Ε > szám, amellyel a kívánt pontosságot tudjuk meghatározni az el: z: alfejezetben tárgyalt k definíciója szerint. Utolsó két paraméterként a kezd: intervallum két végpontját kell megadnunk. (Megjegyzés: -t el: re definiáltuk a mini függvényen belül.) Miután a függvény sikeresen hívódott, visszatér a fed: intervallumok sorozatával. Mini@expr_, var_, Ε_, a_, b_d := ModuleB8 = ^ - 8, k = Floor@Log@, Hb - al ΕDD + <, min@8a_, b_<d := IfB expr. var -> F :a, b + a + >, : b + a b + a -, b>f; N@NestList@min, 8a, b<, kd, D + ³ expr. var -> b + a -, A következ: függvényen keresztül bemutatjuk a Mini m> ködését. 3 64 Λ Λ - + 9-3 Λ3 + 6 Λ4 7 Ábrázolva jól látható, hogy a Λ pozitív, azonban nem könny> meghatározni a pontos értékét. ΦHΛL= Λ 64 Λ + -3 Λ3 +6 Λ4 3 9 7 y 3 5 5 5 x - - A Mini meghívása a [,3] kezd: intervalummal lesz> kíti a minimum lehetséges helyét a @.8789644,.884765639D intervallumra. Persze az Ε változtatásával a pontosság növelhet:. 8
@,3.D @,.5D @.749999995,.5D @.749999995,.5D @.749999995,.937538D @.8437499944,.937538D @.8437499944,.89654D @.86787494,.89654D @.8789644,.89654D @.8789644,.884765639D Itt azonban egy problémába ütközhetünk. Nem tudhatjuk el: re, hogy a kezd: intervallumnak milyen végpontot adjunk meg. Mivel nem ismerjük a minimum pontos helyét elképzelhet:, hogy a kezd: intervallum nem is tartalmazza azt. Kihasználva, hogy a minimalizálandó függvényünk unimodális, definiáljuk a következ: SelectREPoint@expr_, var_d := Module@8r =, f = expr. var <, While@Hexpr. var rl <= f, r ++D; rd segédfüggvényt. A SelectREPoint egy olyan pontot keres, ahol a függvényérték már nagyobb vagy egyenl: mint a kezd: fed: intervallum bal végpontjában. Addig, amíg nem talál ilyen pontot egyessével megy végig a számegyenesen. Az els: olyan pontot adja vissza, ahol már nagyobb a függvény értéke, mint a kezd: pontban. Mivel függvényünk unimodális és feltettük, hogy Λ >, ezért az Λ = és a talált pont között kell lennie a minimumnak. Paraméterként a minimalizálandó kifejezést és annak változóját kapja meg. Bemutatjuk hívását ΦHΛL-ra. SelectREPoint@Φ@ΛD, ΛD Ezzel lesz> kítettük Λ lehetséges helyét a @, D intervallumra Ezek után a Mini utasítást kiegészítve a SelectRePoint-tal egy gyorsabb közelítést kapunk, hiszen kezd: intervallumunk finomabban választott. Jelen esetben azért kapunk mégis hosszabb iterációt, mert Ε-t kisebbnek választottuk, ezáltal pontosabb a közelítés. @,.D @,.D @.499999995,.D @.749999995,.D @.87499999,.D @.87499999,.93756D @.87499999,.9659D @.87499999,.8965D @.88849,.8965D @.88849,.8867876D @.88849,.884765636D @.883789537,.884765636D @.884773349,.884765636D @.884773349,.88454955D @.88439945,.88454955D @.88439945,.88446464D A következ: ábrán szemléltetjük a vonalmenti minimum keresés stratégiájának m> ködését. 9
Lépések száma ávolság 5 4 3-4 6 8 Vonalmenti minimum keresés
4. Példák a gradiens és módosított NewtonRaphson módszerekre 4.. Gradiens módszer Ebben a fejezetben a gradiens módszer gyakorlati alkalmazásával fogunk megismerkedni. Vizsgáljuk, hogyan lehet megvalósítani a Wolfram Mathematica-ban, illetve milyen lehet: ségeket biztosít számunkra a program. f@8x_, y_<d = y4 - y + x + x y + x + y + ; 3 A következ: kben a fenti példán keresztül szemléltetjük a gradiens módszert. A példákat megoldjuk a Wolfram Mathematica beépített funkcióival, illetve összehasonlítjuk az általunk definiált módszer viselkedésével. Ábrázoljuk a függvényt az x Î @-5, 3D, y Î @-, D tartományon szintvonalakkal. 5 5-4 - y - x - Szépen kirajzolódik az ábrán a két lokális minimumhely, azonban széls: érték kereséshez optimálisabb az alábbi síkábrázolás.
y - - -4 - x A továbbiakhoz meg kell határoznunk a függvény gradiens vektorát. Ezt egyszer> en megadhatjuk. gf@8x_, y_<d = D@f@8x, y<d, 88x, y<<d; MatrixForm@gf@8x, y<dd + x 3 +y + x - 4 y + 4 y3 Már definiálhatjuk az It eljárást, ami lényegében a gradiens módszer megvalósítása. Miután Λ-ra ad egy jó közelítést a mini segítségével, visszatér az x - Λ grad ghxl értékkel. Emlékeztet: ül, itt az A m = I egységmátrix. Paraméterként egy kezd: pont megadása szükséges. It@8x_, y_<d := Module@8Λ, list<, list = Mini@f@8x, y< - Λ gf@8x, y<dd, Λ,,, SelectREPoint@f@8x, y< - Λ gf@8x, y<dd, ΛDD; Λ = Last@listD@@DD; 8x, y< - Λ gf@8x, y<dd Egy pontokból álló listát ad vissza, amely közelíti f Hx, yl lokális minimumhelyét. Használatára mutatunk egy példát. Legyen a kezd: pontunk a 8-, <. 8-.,.< 8-3.7,.< 8-3.6,.549693< 8-3.9436,.543539< Legyen > kicsi. Összevetve az el: z: ábrával, a kapott pont sugarú környezetében valóban van minimumhely. Ezek után szemléltetjük a módszer m> ködését különböz: kezd: pontokból.
Manipulate@ Module@8list, list<, list = NestList@It, ic, 4D; list = NestList@It, ic, 4D; ContourPlot@f@8x, y<d, 8x, - 5, 3<, 8y, -, <, Contours 8,,,, 5, 3,, 7<, PlotPoints, ContourShading False, Epilog 8Point@listD, Point@listD, Red, Line@listD, Line@listD, Blue, PointSize@.3D, Point@8-3.334873574535`,.5658386693`<D, Point@8.86889637385`, -.496448693`<D<, ImageSize 83, 3<D D, 88ic, 8.5, <<, Locator<, 88ic, 8-3.75, - <<, Locator<, SaveDefinitions rue, rackedsymbols 8ic, ic<, FrameLabel Style@"Gradiens módszer", Red, 6D D - - -4 - Gradiens módszer Most vizsgáljuk példánkat a Mathematica által kínált lehet: ségekkel. Az egyik hasznos utasítás a FindMinimum, amely függvények minimalizálását végzi. Kett: paraméter szükséges a hívásához. Els: a minimalizálandó kifejezés, majd a változók. Illetve kezd: pontot is megadhatunk neki, így segítve bizonyos lokális minimumok keresését. FindMinimum@f@8x, y<d, 8x, y<d 8-.3788, 8x - 3.3349, y.566<< Eredményül egy listát ad, amelynek els: eleme a minimum értéke, a második elem pedig a helye. A FindMinimum egy opciója a metódus kiválasztása, esetünkben a gradiens módszer. Nekünk csak a pont helye kell, erre azonban könnyen hivatkozhatunk a @@, DD paranccsal. Így definiálhatjuk az It iterációt: 3
It@8a_, b_<d := Reap@FindMinimum@f@8x, y<d, 88x, a<, 8y, b<<, Gradient gf@8x, y<d, Method "Gradient", StepMonitor Sow@8x, y<ddd@@, DD Az 8, < pontból való meghívása után látható, hogy egy olyan pontsorozattal tért vissza amely valóban egy lokális minimumhoz konvergál. 8.55458,-.584< 8.97599,-.3< 8.84946,-.4< 8.8687,-.4< 8.8689,-.49< Hasonló módon prezentáljuk a m> ködését. 4
Manipulate@ Module@8list, list<, list = Reap@FindMinimum@f@8x, y<d, 88x, ic@@dd<, 8y, ic@@dd<<, Gradient gf@8x, y<d, Method "Gradient", StepMonitor Sow@8x, y<ddd@@, DD; list = Join@8ic<, listd; list = Reap@FindMinimum@f@8x, y<d, 88x, ic@@dd<, 8y, ic@@dd<<, Gradient gf@8x, y<d, Method "Gradient", StepMonitor Sow@8x, y<ddd@@, DD; list = Join@8ic<, listd; ContourPlot@f@8x, y<d, 8x, - 5, 3<, 8y, -, <, Contours 8,,,, 5, 3,, 7<, PlotPoints, ContourShading False, Epilog 8Point@listD, Point@listD, Red, Line@listD, Line@listD, Blue, PointSize@.3D, Point@8-3.334873574535`,.5658386693`<D, Point@8.86889637385`, -.496448693`<D<, ImageSize 83, 3<D D, 88ic, 8.5, <<, Locator<, 88ic, 8-3.75, - <<, Locator<, rackedsymbols 8ic, ic<, SaveDefinitions rue, FrameLabel Style@"A Mathematica által beépített gradiens módszer", Red, 6D D - - -4 - A Mathematica által beépített gradiens módszer Könnyen észrevehet: a két eredmény közötti különbség, legf: képpen a konvergencia sebességének külünbsége szembeötl:. Nyilván az általunk definiált módszer is jó, csupán a Mathematica által kínált funkció nem a hagyományos gradiens módszer megvalósítása. 4.. Módosított Newton-Raphson módszer A módosított Newton-Raphson módszert a Rosenbrock függvényen keresztül mutatjuk be. A függvényünk minimuma egy parabolikus völgyben helyezkedik el. Általában, ha egy módszer eléri a völgyet ott oszcillálni kezd. Egy nem optimális minimumkeres: stratégiát használva, a völgyben a konvergencia lelassul. Gyakran a Rosenbrock függvényen szokták vizsgálni, hogy egy stratégia men5 nyire hatékony.
A módosított Newton-Raphson módszert a Rosenbrock függvényen keresztül mutatjuk be. A függvényünk minimuma egy parabolikus völgyben helyezkedik el. Általában, ha egy módszer eléri a völgyet ott oszcillálni kezd. Egy nem optimális minimumkeres: stratégiát használva, a völgyben a konvergencia lelassul. Gyakran a Rosenbrock függvényen szokták vizsgálni, hogy egy stratégia mennyire hatékony. g@8x_, y_<d = H - xl + Iy - x M ; Könnyen látható, hogy az g H, L = globális minimum helye a függvényünknek. Más lokális minimumhelye nem létezik. y - 4 3 -. -.5. x.5. A kétdimenziós szintvonalas ábrán valóban kirajzolódik a parabolikus völgy. y - - - - x Jelen esetben az A mátrixot is. m = Hg Hxm L. ehát meg kell határoznunk a gradiens vektort és a Hesse- 6
gg@8x_, y_<d = D@g@8x, y<d, 88x, y<<d Expand; MatrixForm@gg@8x, y<dd - + x + 4 x3-4 x y - x + y A Hesse-mátrix pedig: hg@8x_, y_<d = D@g@8x, y<d, 88x, y<<, 88x, y<<d; MatrixForm@hg@8x, y<dd + 8 x - 4 H- x + yl - 4 x - 4 x A gradiens módszerhez hasonlóan definiáljuk a módosított Newton-Raphson iteráció egy lépését. NIt@8x_, y_<d := Module@8Λ, list<, list = Mini@g@8x, y< - Λ Inverse@hg@8x, y<dd.gg@8x, y<dd, Λ,,, SelectREPoint@g@8x, y< - Λ Inverse@hg@8x, y<dd. gg@8x, y<dd, ΛDD; Λ = Last@listD@@DD; 8x, y< - Λ Inverse@hg@8x, y<dd. gg@8x, y<d D Meghívjuk a 8-, -< kezd: pontból. 8-.,-.< 8-.9956,.99847< 8-.94563,.89733< 8-.94553,.8968434< 8-.9454,.8966546< Ezek után szemléltetjük a módszer m> ködését 4 lépéssel hívva NIt-t. - - - - Módosított Newton-Raphson módszer Látható, hogy amint eléri a völgyet az iteráció lelassul és oszcillálni kezd. (Megjegyzés: A gradiens módszer is hasonlóképpen beragad.) A beépített módosított Newton-Raphson módszerrel sokkal hatékonyabban lehet közelíteni a minimumhelyet. Definiálhatjuk a módosított Newton-Raphson módszer következ: megvalósítását. Legyen 7
Látható, hogy amint eléri a völgyet az iteráció lelassul és oszcillálni kezd. (Megjegyzés: A gradiens módszer is hasonlóképpen beragad.) A beépített módosított Newton-Raphson módszerrel sokkal hatékonyabban lehet közelíteni a minimumhelyet. Definiálhatjuk a módosított Newton-Raphson módszer következ: megvalósítását. Legyen NIt@8a_, b_<d := Reap@FindMinimum@g@8x, y<d, 88x, a<, 8y, b<<, Gradient gg@8x, y<d, Method 8"Newton", "Hessian" hg@8x, y<d<, StepMonitor Sow@8x, y<ddd@@, DD a szükséges iteráció. Meghívásához egy kezd: pont megadása szükséges. Lássunk erre egy példát a 8, < pontból. 8.99834,3.99334< 8.8383,3.959< 8.7765,.957< 8.5637,.678< 8.4549,.< 8.36439,.8597< 8.4749,.5456< 8.89,.398< 8.8476,.674< 8.55,.4< 8.84,.435< 8.5,.5< 8.,.3< 8.,.< 8.,.< Az ábrán látható, hogy sokkal gyorsabban konvergál a minimumhoz az általunk definiált módszernél. - - - - Beépített Newton-Raphson módszer Könnyen lehet, hogy olyan problémával kerülünk szembe, amelyekre a bemutatott két módszer nem elég hatékony. Ha globális minimumot keresünk célszer> bb más módszereket választani. A gradiens és módosított Newton-Raphson módszer nem teljes eljárások, azaz lehetséges, hogy nem a globális minimumhoz konvergálnak. Léteznek egzakt eljárások, amelyek biztosan eljutnak a globális 8 mindig kell valami plusz információ a feladatról, minimumhoz. Azonban ezekhez a módszerekhez általános esetre nem létezik algoritmus. Az ilyen egzakt eljárásokhoz tartoznak a Lipschitz tulajdonságon alapuló módszerek. Err: l a [3]-al jelölt szakirodalomban részletesebben lehet olvasni. A dolgozat-
Könnyen lehet, hogy olyan problémával kerülünk szembe, amelyekre a bemutatott két módszer nem elég hatékony. Ha globális minimumot keresünk célszer> bb más módszereket választani. A gradiens és módosított Newton-Raphson módszer nem teljes eljárások, azaz lehetséges, hogy nem a globális minimumhoz konvergálnak. Léteznek egzakt eljárások, amelyek biztosan eljutnak a globális minimumhoz. Azonban ezekhez a módszerekhez mindig kell valami plusz információ a feladatról, általános esetre nem létezik algoritmus. Az ilyen egzakt eljárásokhoz tartoznak a Lipschitz tulajdonságon alapuló módszerek. Err: l a [3]-al jelölt szakirodalomban részletesebben lehet olvasni. A dolgozatban azonban ezekkel az eljárásokkal már nem célunk foglalkozni. 9
5. Lineáris egyenletrendszerek megoldása gradiens módszerrel 5.. Minimalizálandó kvadratikus alak Vegyünk egy A x = b alakú lineáris egyenletrendszert, ahol A egy n n-es mátrix. Ahhoz, hogy egyenletrendszerünk egyértelm> en megoldható legyen fel tesszük, hogy A szimmetrikus és pozitív definit. Ezek után definiáljuk a QHxL := x A x - x b kvadratikus alakot. ovábbá kihasználva azt, hogy x A v = v A x, igaz a következ: összefüggés (3) QHx + Λ vl - QHxL = Λ v A x + Λ x A v + Λ v A v - Λ v b = Λ v A v - Λ v r, ahol r := b - A x maradékvektor. Lemma: A QHxL kvadratikus alak akkor és csakis akkor veszi fel minimumát x* -ban, ha az A x = b lineráris egyenletrendszernek megoldása x*. Bizonyítás: Legyen h ¹ tetsz: leges vektor. Ekkor a (3) összefüggés szerint QHx* + hl - QHx* L = h A h - h Hb - A x* L = h A h >, mivel A x* = b, és az A mátrix pozitív definit. à Ezzel elértük, hogy egy lineáris egyenletrendszert nem lineáris módszerekkel oldjunk meg. 5.. Általános iteráció Definíció: Legyen xm egy közelítés x* -ra és legyen vm ¹ egy vektor. Értelmezzük az Hm =,,,...L xm+ := xm + Α vm iterációt, ahol a Λ := Αm -et a következ: feltételb: l határozzuk meg QHxm+ L = min QHxm + Λ vm L. ΛÎR étel: Igazak a következ: tulajdonságok (i) (ii) (iii) Αm = vm rm vm A vm, Q Hxm+ L -Q Hxm L = vm rm+ = Bizonyítás: (i) A (3) összefüggésb: l ahol rm := b - A xm ; Ivm rm M vm A vm, Hm =,,,...L. ΦHΛL := QHxm + Λ vm L = Λ vm A vm - Λ vm rm + QHxm L, Φ egy másodfokú polinom Λ-ban. A minimumhely ott van, ahol a derivált elt> nik: Φ HΛL = Λ vm A vm - vm rm =, Λ= vm rm vm A vm = : Αm.
Φ HΛL = Λ vm A vm - vm rm =, Λ= vm rm vm A vm = : Αm. A nevez: nem lehet nulla, hiszen az A mátrix pozitív definit. (ii) Szintén a (3)-ból adódik: QHxm+ L - QHxm L = Ivm rm M vm A vm Αm vm A vm - Αm vm rm = Ivm rm M - vm A vm Ivm rm M vm A vm =- (iii) Felhasználva, hogy rm+ := b - A xm+ = b - AHxm + Αm vm L = rm - Αm A vm, kapjuk (i)-b: l vm rm+ = vm rm - Αm vm A vm = vm rm - vm rm =. Ezzel bebizonyítottuk mindhárom állítást. à 5.3. A gradiens módszer képletei Ha a QHxL kvadratikus alakot gradiens módszerrel szeretnénk minimalizálni, akkor a v vektort a következ: képpen kell választani: v := -grad QHxL. Meg kell határoznunk QHxL-et. Ezt egyszer> en megtehetjük, mivel QHxL := x A x - x b = Ezek után kapjuk QHxL xp tehát Ú Ú a j k x j xk - Ú b j x j. n n j= k= = Ú a p k xk - b p n k= n j= Hp =,,,..., nl, grad QHxL = A x - b = -r. Definiálhatjuk a gradiens módszer képleteit: vm := -grad QHxm L = rm, xm+ := xm + Αm rm. Az 5.. fejezetben taglalt összefüggések a következ: módon változnak: (i ) Αm := rm rm rm A rm, rm+ := rm - Αm A rm, (ii ) (iii ) Q Hxm+ L -Q Hxm L = rm rm+ = Irm rm M rm A rm, Hm =,,,...L. 5.4. Példák lineáris egyenletrendszerek megoldására Az el: z: alfejezetben tárgyalt képletek alapján definiáljuk LIt magfüggvényt, amit iterálva minimalizálhatjuk a QHxL kvadratikus alakot.
LIt@88x_<, 8y_<<D := Module@8r = Hb - A.88x<, 8y<<L<, N@H88x<, 8y<< + r.hranspose@rd.r Hranspose@rD.A.rLLLD D Az els: példánk a következ: két egyenletb: l álló két változós egyenletrendszer x+y =3 x+5y = Jelen esetben az A=K O; 5 3 b = K O; Definiáljuk a feladathoz tartozó kvadratikus alakot. Q@8x_, y_<d = :- 3 x + x 8x, y<.a.8x, y< - 8x, y<.b Expand 5 y -y+xy+ > Majd pedig a hozzá tartozó gradiens vektort. K -3 + x + y O - + x + 5 y A LinearSolve-ot használva, megoldhatunk lineáris egyenletrendszereket. LinearSolve@88, <, 8, 5<<, 83, <D 83, - 5< A láthatjuk, hogy QHxL-nak az x = 3 és y = -5 pontban kell, hogy legyen a minimuma. A gradiens módszerrel valóban erre az eredményre jutunk. Az ábrán jól látható ahogyan a szintvonalak egy pontra, a gradiens módszer által talált minimumra húzódnak.
list = Map@ð. 88x_<, 8y_<< 8x, y< &, NestList@LIt, 884<, 8-4<<, 5DD; Labeled@ContourPlot@Q@8x, y<d, 8x,, 5<, 8y, - 7, - 3<, Contours 8-5, - 6.6, - 6.8, - 6.9, - 6.99<, ContourShading False, Epilog 8Point@listD, Red, Line@listD, Blue, PointSize@.3D, Point@83, - 5<D<, FrameLabel 8x, y<, ImageSize 83, 3<D, "QHxL minimalizálása", Bottom, LabelStyle 86, Red<D -3 y -4-5 -6-7 3 4 5 x QHxL minimalizálása Ezzel megoldottunk egy kétdimenziós lineáris egyenletrendszert nem lineáris eszközökkel. A következ: kben már egy 3 dimenziós példával foglalkozunk. Legyen x+y +z= x+5y +z=9 x + y + 4 z = - A = 5 ; 4 b = 9 ; - Ehhez konstruáljuk a kvadratikus alakot. (Megjegyzés: Az Expand utasítás csupán leegyszer> síti kifejezésünket.) Q @8x_, y_, z_<d = :- x + x -9y+xy+ 8x, y, z<.a.8x, y, z< - 8x, y, z<.b Expand 5 y + z + x z + y z + z > Módosítjuk az LIt-t 3 változóra. 3
LIt @88x_<, 8y_<, 8z_<<D := Module@8r = Hb - A.88x<, 8y<, 8z<<L<, N@H88x<, 8y<, 8z<< + r.hranspose@rd.r Hranspose@rD.A.rLLLD D LinearSolve-al megoldva az egyenletrendszert látjuk, hogy a minimum az x = -7, y = 5, z = - pontban van. MatrixForm@LinearSolve@A, b DD -7 5 - LIt-t 5-szer iterálva is, még elég messze vagyunk a minimumtól. Nest@LIt, 88-5<, 8- <, 8<<, 5D 88-6.636<, 84.83849<, 8-.98<< Most szintfelületekkel szemléltetjük a talált minimumhely helyességét. Függvényérték 8 y 6 4 z - - -3-5 - x -5 Az ábrán látható, ahogyan a szintfelületek a minimumpontra húzódnak, a függvényértékkel közelítve a minimumértékéhez. 4
6. Függelék Ebben a részben a témához tartozó, a Wolfram Mathematica által biztosított legfontosabb utasításokat gy> jtjük ki és mutatjuk be. Nest[f, kif, n] Iteráció megvalósítására szolgál. Az f függvényt alkalmazza kif-re n-szer. f@x_d = x ; Nest@f, x, 5D x3 NestList[f, kif, n] Hasonlóan m> ködik mint a Nest, azonban egy listát ad vissza, amelyben az iterációs sorozat els: n db eleme látható. NestList@f, x, 5D 9x, x, x4, x8, x6, x3 = NestWhileList[f, kif, teszt] Végrehajtja kif-re f-et mindaddig, amíg a teszt teljesül, aztán megáll. NestWhileList@Sqrt, 3 ^ 5, ð > 3 &D :43, 9 3, 3 3 4, 35 8 > N[kif, n] A paraméterként kapott kifejezés numerikus értékét adja vissza n db tizedesjegyig. N@Pi 5, D.6838537 FindMinimum[f, {{x, x}, {y, y},...}] Lokális minimumkeresésre szolgál. Numerikusan keresi f minimumát az {x, y,...}-ból indulva. Megadja a függvény minimumát, majd pedig annak helyét. A továbbiakban az alább definiált f függvénnyel dolgozunk. f@8x_, y_<d = y4 - y + x + x y + x + y + ; 3 FindMinimum@f@8x, y<d, 88x, <, 8y, <<D 8-.3788, 8x - 3.3349, y.566<< A FindMinimum-nak vannak opciói, egy ilyen például a Method amellyel a kívánt módszer adható meg. A válsztható módszerek: Newton, PrincipalAxis, Gradient, ConjugateGradien, LevenbergMarquardt, QuasiNewton, InteriorPoint, LinearProgramming. Azonban ezen eljárások mindegyikével már nem foglalkozunk. Az alábbi módon használható. gf@8x_, y_<d = D@f@8x, y<d, 88x, y<<d : + x 3 + y, + x - 4 y + 4 y3 > 5
FindMinimum@f@8x, y<d, 88x, <, 8y, <<, Method "Gradient", Gradient gf@8x, y<dd 8-.667, 8x.8689, y -.49<< Másik lokális minimumot talál a gradiens módszerrel, mert az alapértelmezett módszerként Automatic opciót használ. A kapott kifejezéshez automatikusan választja az opciót. Minimize[f, {x, y,...}] Szintén minimalizálásra alkalmas. Ha f lineáris vagy polinom, akkor mindig a globális minimummal tér vissza. Ha olyan kifejezést adunk meg, amiben közelített értékek vannak, automatikusan hívja az NMinimize-t. Minimize@f@8x, y<d, 8x, y<d 9 + RootA9 97 + 43 ð + 4 74 ð + 496 ð3 &, E, 9x RootA99 97 + 43 ð + 4 74 ð + 496 ð3 &, - 3-4 ð - ð - ð + 4 ð4 &, - 3 ð + 3 ð - 6 ð + 3 ð4 + 3 ð3 + 3 ð ð3 + ð3 &=, 8,, <E, y RootA 99 97 + 43 ð + 4 74 ð + 496 ð3 &, - 3-4 ð - ð - ð + 4 ð4 &=, 8, <E== Az NMinimize mindig numerikusan keresi a minimumot. NMinimize@f@8x, y<d, 8x, y<d 8-.667, 8x.8689, y -.49<< MinValue[f, {x, y,...}], NMinValue[f, {x, y,...}] Az f minimumával tér vissza. Ekvivalens a First[Minimize[...] ] utasítással. MinValue@f@8x, y<d, 8x, y<d + RootA9 97 + 43 ð + 4 74 ð + 496 ð3 &, E NMinValue@f@8x, y<d, 8x, y<d -.667 LinearSolve[A, b] Egy A.x = b alakú lineáris egyenletrendszer megoldására szolgál. Legyenek A= -3 ; - 4 b= 5 ; 7 MatrixForm@LinearSolve@A, bdd 67 5-8 6 4 ArgMin[f, {x, y,...}], NArgMin[f, {x, y,...}] Az ArgMin szimbolikusan keresi f minimumhelyét. Ha f lineáris vagy polinom, akkor mindig a globális minimumhellyel tér vissza. Illetve, ha f nem szimbolikus, akkor automatikusan hívja NArgMin-t, amely numerikusan keresi a minimumhelyet. Valójában ekvivalens a {x, y,...} /. Last[Minimize[...]] utasítással. 6
ArgMin[f, {x, y,...}], NArgMin[f, {x, y,...}] Az ArgMin szimbolikusan keresi f minimumhelyét. Ha f lineáris vagy polinom, akkor mindig a globális minimumhellyel tér vissza. Illetve, ha f nem szimbolikus, akkor automatikusan hívja NArgMin-t, amely numerikusan keresi a minimumhelyet. Valójában ekvivalens a {x, y,...} /. Last[Minimize[...]] utasítással. ArgMin@f@8x, y<d, 8x, y<d 9RootA99 97 + 43 ð + 4 74 ð + 496 ð3 &, - 3-4 ð - ð - ð + 4 ð4 &, - 3 ð + 3 ð - 6 ð + 3 ð4 + 3 ð3 + 3 ð ð3 + ð3 &=, 8,, <E, RootA99 97 + 43 ð + 4 74 ð + 496 ð3 &, - 3-4 ð - ð - ð + 4 ð4 &=, 8, <E= NArgMin@f@8x, y<d, 8x, y<d 8.8689, -.49< 7
7. Irodalomjegyzék [] [] [3] [4] Móricz Ferenc, Numerikus módszerek az algebrában és analízisben, Polygon Jegyzettár (Szeged, 997), 69-86. o. http://demonstrations.wolfram.com/minimizingherosenbrockfunction/, http://www.math.bme.hu/~bog/globopt/globopt_hun.pdf Wolfram Research, Inc., Mathematica, Version 9., Champaign, Illinois,. 8
8. Köszönetnyilvánítás Ezúton szeretnék köszönetet mondani témavezet: mnek, Dr. Vajda Róbertnek, aki hasznos tanácsaival és kérdéseimre adott válaszaival, valamint érdekes felvetéseivel nagyon sokat segített dolgozatom megírásában. Ajánlott szakirodalmakkal pedig nagyban könnyítette munkámat. Valamint szeretném megköszönni Megyeri Istvánnak a sok türelmet, illetve támogatást. Végül, de nem utolsó sorban hálásan köszönöm családomnak, hogy mindvégig mellettem álltak és támogattak tanulmányaim alatt. 9
9. Nyilatkozat Alulírott... kijelentem, hogy a szakdolgozatban foglaltak saját munkám eredményei, és csak a hivatkozott forrásokat (szakirodalom, eszközök, stb.) használtam fel. udomásul veszem, hogy a szakdolgozatomat a Szegedi udományegyetem könyvtárában a kölcsönözhet: könyvek között helyezik el, és az interneten is nyilvánosságra hozhatják. 3