UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY BAKALÁŘSKÁ PRÁCE Numerické metody jednorozměrné minimalizace Vedoucí bakalářské práce: RNDr. Horymír Netuka, Ph.D. Rok odevzdání: 2013 Vypracovala: Barbora Dohnalová MATAP, III. ročník
Prohlášení Prohlašuji, že jsem tuto práci zpracovala samostatně. Veškeré zdroje a literatura, kterých bylo při práci používáno, jsou citovány a uvedeny v seznamu literatury. V Olomouci dne 26.4.2013
Poděkování Ráda bych na tomto místě poděkovala svému vedoucímu práce, RNDr. Horymíru Netukovi, PhD., za cenné připomínky a rady, bez nichž by práce nemohla být vypracována. Také děkuji své rodině a příteli, kteří mě během psaní podporovali.
Obsah Úvod 4 1 Základní pojmy 5 2 Typy metod 8 3 Metody druhého řádu 10 3.1 Newtonova metoda.......................... 10 4 Metody prvního řádu 12 4.1 Metoda půlení intervalu....................... 12 4.2 Metoda sečen............................. 13 4.3 Metoda regula falsi.......................... 13 4.4 Metoda kubické interpolace..................... 15 5 Metody nevyužívající derivace 18 5.1 Metoda kvadratické interpolace................... 18 5.2 Rovnoměrná komparativní metoda................. 21 5.3 Metoda zlatého řezu......................... 23 5.4 Fibonacciho metoda......................... 25 6 Příklady 26 Literatura 36
Úvod Tématem této práce jsou numerické metody, které se používají při hledání nepodmíněného minima funkcí jedné proměnné. Numerické metody řeší mnoho matematických úloh, u kterých neznáme přesné analytické řešení nebo je nalezení takového řešení těžce proveditelné. Hledání minima funkce je součástí procesu optimalizace, jenž má široké využití. Optimalizaci nalezneme například v přírodních vědách (optimalizace chemických či biologických procesů) nebo v ekonomice (optimalizace výrobních procesů, využití skladových zásob). Cílem práce je seznámení se nejenom se základními numerickými metodami, jenž jsou obsahem studia na Přírodovědecké fakultě Univerzity Palackého, jako je například Newtonova metoda či metoda sečen, ale také s méně známými numerickými metodami, jimž nejsou věnovány učební texty, jako je kvadratická či kubická interpolace. Záměrem této práce není srovnání daných metod ani zkoumání jejich rychlosti konvergence. 4
1. Základní pojmy V této kapitole si zavedeme základní pojmy vztahující se k tématu jednorozměrné minimalizace. Zároveň předpokládáme, že čtenář má základní znalosti z oblasti numerických metod a matematické analýzy, tedy chápe pojmy jako rostoucí funkce, derivace funkce, iterace apod. Definice 1. Řekneme, že funkce f má v bodě x 0 nepodmíněné lokální minimum (resp. maximum), jestliže existuje δ-okolí bodu x 0, takové, že f(x 0 ) f(x) (resp.f(x) f(x 0 )) pro každé x z δ-okolí. Bude-li platit ostrá nerovnost, nazveme lokální minimum (resp. maximum) ostré. Definice 2. Nechť f je funkce s definičním oborem D(f), M D(f) je neprázdná množina. Řekneme, že funkce f má v bodě x 0 nepodmíněné globální minimum (resp. maximum) na M, jestliže Mplatí f(x) f(x 0 ) (resp. f(x) f(x 0 )). Bude-li platit ostrá nerovnost, nazveme globální minimum (resp. maximum) ostré. Definice 3. Funkce f se nazývá unimodální na intervalu I, jestliže má na I právě jeden lokální extrém. (viz [10], str.3) Poznámka 1. Unimodální funkce se dá definovat více způsoby, další z nich je ukázán v následující definici. Definice 4. Funkce f : R R se nazývá unimodální na intervalu I, jestliže existuje bod x I takový, že x je bodem minima funkce f na I a jestliže pro libovolné x 1, x 2 I takové, že x 1 < x 2 platí x 2 x = f(x 1 ) > f(x 2 ) x 1 x = f(x 2 ) > f(x 1 ). (viz [5], str.22) 5
Obrázek 1: Příklad unimodální funkce Definice 5. Nechť je funkce f definovaná na intervalu I R. Pokud pro libovolnou dvojici bodů x 1, x 2 I a libovolné λ [0, 1] platí f(λx 1 + (1 λ)(x 2 )) λf(x 1 ) + (1 λ)f(x 2 ), pak funkci f nazýváme konvexní funkce na intervalu I. Poznámka 2. Dá se ukázat, že funkce, která je v intervalu [a, b] konvexní, je v tomto intervalu také unimodální. Účelovou funkcí nazýváme funkci, jejíž minimum hledáme. Budeme se zabývat numerickými metodami pro unimodální spojité funkce, tedy budeme hledat řešení optimalizační úlohy x = minf(x), x [a, b], kde f = f(x ). V teorii numerických metod je také třeba definovat přesnost vyznačení optimálního řešení x, to jest číslo ε 0 takové, pro něž k-tá aproximace řešení x k vyhovuje nerovnosti x k x ε. Tento vztah bývá také nazýván odhadem absolutní chyby k-té aproximace. Přesností vyznačení optimální hodnoty účelové funkce f je číslo δ 0, pro něž 6
hodnota účelové funkce v bodě x k vyhovuje této nerovnosti f(x k ) f δ. Obrázek 2: Přesnost řešení Splnění podmínek přesnosti je však značně problematické, jelikož je k jeho výpočtu třeba znát optimální řešení x. Naším cílem je ale právě toto řešení najít, je tedy zřejmé, že při výpočtu numerických úloh pomocí algoritmů nelze dané vztahy pro přesnost užít. Z tohoto důvodu užíváme modifikované vztahy, které využívají hodnot x k, x k+1, tedy hodnot, jichž dosáhneme výpočtem. Vztah užívající odhad absolutní chyby x k+1 x k ε 1, a vztah pro odhad relativní chyby x k+1 x k x k ε 2, kde ε 1,ε 2 jsou kladná reálná čísla. 7
2. Typy metod Numerické metody jednorozměrné minimalizace lze rozdělit na dva typy: metody využívající derivace - metody vyžadující hodnoty účelové funkce a hodnoty první a druhé derivace této funkce ve všech bodech z intervalu [a, b] metody druhého řádu - metody vyžadujicího hodnoty účelové funkce a hodnoty první i druhé derivace Newtonova metoda metody prvního řádu - metody vyžadujicího hodnoty účelové funkce a hodnoty první derivace metoda půlení intervalu metoda sečen metoda regula falsi metoda kubické interpolace Metody využívající derivace jsou založeny na principu nalezení jediného stacionárního bodu, v němž má funkce f(x) na intervalu I ostré globální minimum, a který je reálným kořenem rovnice f (x) = 0. V některých případech je rovnice řešitelná analyticky, jesliže však není algebraická, je třeba její řešení najít numerickými metodami. Pro zajištění nalezení minima je třeba předpokládat, že funkce f(x) je na intervalu I = [a, b] spojitá a f(a),f(b) mají rozdílná znaménka, tedy platí f(a)f(b) < 0. 8
metody nevyužívající derivace - metody vyžadující jen hodnoty účelové funkce metoda kvadratické interpolace rovnoměrná komparativní metoda metoda zlatého řezu Fibonacciho metoda Metody nevyužívající derivace, někdy také nazývané jako metody nultého řádu, neužívají derivace minimalizovaných funkcí ani jejich aproximace. Byly využívany především v 60. letech 20. století, kdy byly považovány za spolehlivější než metody prvního a druhého řádu. Důvodem, proč je používáme dodnes, je fakt, že metody prvního a druhého řádu nefungují pro všechny optimalizační problémy a také to, že technická realizace přímých metod je snadná. 9
3. Metody druhého řádu 3.1. Newtonova metoda Newtonova metoda (neboli metoda tečen) je iterační metoda, ke které je třeba znát počáteční hodnotu x k a k ní jsme schopni vypočítat hodnoty f(x k ), f (x k ), f (x k ). Geometrický význam této metody spočívá v tom, že v počátečním bodě [x k, f(x k )] sestrojíme tečnu ke grafu funkce f(x). V bodě, ve kterém se protne graf tečny s osou x, leží bod [x k+1, 0], protože platí (x k+1 x k )f (x k ) = f (x k ). Hledáme tedy průsečík přímky y s osou x y = (x k+1 x k )f (x k ) + f (x k ) = 0 => x k+1 = x k f (x k ) f (x k ). Z předpisu iteračního procesu je zřejmé, že nezávisí na hodnotě f(x k ). Newtonova metoda se tedy dá technicky zjednodušit na iterační řešení rovnic typu: g(x) = 0, kde g(x) f (x). Poté se dá metoda psát stylem: x k+1 = x k g(x k) g (x k ). Výpočet se ukončí při splnění nerovnosti x k+1 x k ε. 10
Obrázek 3: Newtonova metoda 11
4. Metody prvního řádu 4.1. Metoda půlení intervalu Metoda půlení intervalu je známá také pod pojmy Bolzanova metoda, metoda bisekce nebo metoda dichotomie. Jedná se o nejjednodušší iterační metodu, která spočívá v utvoření posloupnosti intervalů I k = [a k, b k ], I k+1 I k, kde délka následujícího intervalu s k+1 je vždy poloviční oproti původnímu intervalu s k s k+1 = 1 2 s k = 1 2 (b k a k ), tedy optimální bod x I k, a 1 = a, b 1 = b, k = 1 : N. Intuitivně je zřejmé, že lim I k = x k lim s k = 0. k Z unimodálnosti funkce je zřejmé, že jestliže nalezneme hledané minimum x na intervalu [a, b], pak nám tento bod rozdělí funkci f tak, že na intervalu [a, x ] klesá a na intervalu [x, b] roste. Z toho nám plyne, že x [a, x ] je f (x) < 0 a x [x, b] je f (x) > 0. Přirozeně platí, že f (x ) = 0. Na těchto vlastnostech postavíme metodu půlení intervalu. V prvním kroku položíme a 1 = a, b 1 = b, x 1 = 1 2 (a 1 + b 1 ), s 1 = b 1 a 1 = b a, a pro k = 1 : N opakujeme postup níže, dokud nedostaneme požadovanou přesnost 1. jestliže f (x k ) < 0 x > x k, položíme a k+1 = x k, b k+1 = b k, x k+1 = 1 2 (a k+1 + b k+1 ) 12
2. jestliže f (x k ) > 0 x < x k, položíme a k+1 = a k, b k+1 = x k, x k+1 = 1 2 (a k+1 + b k+1 ) 3. jestliže f (x k ) = 0 x k je hledané minimum. Lze odvodit, že nutný počet iterací pro dosažení požadované přesnosti ε je dán vztahem N log b a 2ε log 2. 4.2. Metoda sečen Metoda sečen, někdy také nazývaná jako sekantová, vychází z Newtonovy metody. Počítání funkčních hodnot první a druhé derivace může být pracné, a tak aproximujeme f (x k ) takto f (x k ) f (x k ) f (x k 1 ) x k x k 1. Následným dosazením do vzorce pro Newtonovu metodu dostaneme x k+1 = x k x k x k 1 f (x k ) f (x k 1 ) f (x k ). Takto jsme získali metodu sečen, která požaduje na vstup dvě počáteční iterace x k, x k 1 a funkční hodnoty první derivace v těchto bodech. Geometrický význam spočívá v nalezení iterace x k+1 jako průsečíku přímky [(x k, f(x k )), (x k 1, f(x k 1 ))] s osou x. 4.3. Metoda regula falsi Metoda regula falsi, v literatuře někdy uváděná jako "method of false position", je dalším typem iterační metody, která vychází z metody Newtonovy. Newtonova metoda je založena na informacích o jediném bodu x k, funkční hodnotě a funkční hodnotě první a druhé derivace v tomto bodě. Užitím více bodů snížíme požadavky na každý z nich. Metoda regula falsi tedy spočívá v užití bodu x k a 13
v hodnotách f(x k ), f (x k ), f (x k 1 ). Poté můžeme vytvořit kvadratickou funkci h(x) h(x) = f(x k ) + f (x k )(x x k ) + f (x k 1 ) f (x k ). (x x k) 2, x k 1 x k 2 která má odpovídající hodnoty stejné. Stejně jako u Newtonovy metody funkci zderivujeme, dosadíme do bodu x k+1 a položíme rovnu nule: A po úpravě dostáváme h (x) = f (x k ) + (f (x k 1 ) f (x k ))(x x k ) x k 1 x k h (x k+1 ) = f (x k ) + (f (x k 1 ) f (x k ))(x k+1 x k ) x k 1 x k = 0 x k+1 = x k f x k 1 x k (x k ). f (x k 1 ) f (x k ) Metoda regula falsi také nezávisí na hodnotě f(x k ), proto naše aproximace povede buď přes f(x k ) nebo f(x k 1 ). Na tuto metodu se dá také nahlížet jako na aproximaci Newtonovy metody, kde druhou derivaci nahradíme rozdílem dvou prvních derivací ve dvou různých bodech. Další podobností s metodou tečen je, že se dá také psát ve tvaru f (x) g(x) = 0, tedy také iterační předpis je možné přepsat na tvar x k 1 x k x k+1 = x k g(x k ). g(x k 1 ) g(x k ). 14
Obrázek 4: Princip metody regula falsi, první tři iterace 4.4. Metoda kubické interpolace Další metoda, která je při jednorozměrné minimalizaci užitečná, se nazývá metoda kubické interpolace. Je založena na polynomu třetího stupně neboli na kubickém polynomu: y = f(x) = a 0 + a 1 x + a 2 x 2 + a 3 x 3. Z nákresu polynomu y je zřejmé, že polynom může mít minimum stejně tak jako maximum. Obrázek 5: Kubická funkce, vlevo s koeficentem a 3 > 0, vpravo s koeficientem a 3 < 0 15
minima x y (x ) = 2a 2 + 6a 3 x > 0 Nyní si ukážeme způsob, jakým nalezneme hledané minimum. Postupujeme jako při obvyklém hledání extrému, tedy položíme první derivaci funkce rovno nule: y = f (x) = a 1 + 2a 2 x + 3a 3 x 2 = 0 Vypočteme kořeny této kvadratické rovnice klasickým způsobem a dostáváme x = 2a 2 ± 4a 2 2 12a 1 a 3 = a 2 ± a 2 2 3a 1 a 3 6a 3 3a 3 Z matematické analýzy plyne, že v bodech lokálního minima je druhá derivace kladná, takže nám platí následující vztah pro druhou derivaci v hledaném bodě neboli x > a 2 3a 3 (1) Za vztahu (1) a odvození je nyní zřejmé, který ze dvou kořenů je minimum. Neznámé koeficienty a 0, a 1, a 2, a 3 se dají určit několika způsoby, jedním z nich je vycházet ze systému rovnic y 1 = f(x 1 ) = a 0 + a 1 x 1 + a 2 x 2 1 + a 3 x 3 1 y 2 = f(x 2 ) = a 0 + a 1 x 2 + a 2 x 2 2 + a 3 x 3 2 y 3 = f(x 3 ) = a 0 + a 1 x 3 + a 2 x 2 3 + a 3 x 3 3, a k tomuto systému přidat funkční hodnotu první derivace v jednom z bodů x 1, x 2, x 3, vybereme například bod x 1, tedy platí y = f (x) = a 1 + 2a 2 x + 3a 3 x 2 y 1 = f (x 1 ) = a 1 + 2a 2 x 1 + 3a 3 x 2 1 Řešením tohoto systému čtyř rovnic o čtyřech neznámých nalezneme hodnoty koeficientů a 0, a 1, a 2, a 3, přičemž koeficient a 0 nás početně nezajímá. Hodnoty koeficientů jsou nicméně velmi rozsáhlé, proto je zapisujeme touto formou: 16
a 1 = y 1 2a 2 x 1 3a 3 x 2 1 a 2 = α γa 3 a 3 = α β γ δ, kde α = y 2 y 1 + y 1(x 1 x 2 ) (x 1 x 2 ) 2 β = y 3 y 1 + y 1(x 1 x 3 ) (x 1 x 3 ) 2 γ = 2x2 1 x 2 (x 1 + x 2 ) (x 1 x 2 ) δ = 2x2 1 x 3 (x 1 + x 3 ) (x 1 x 3 ) Je zřejmé, že při užití metody kubické interpolace zahrnuje jedna iterace mnohem více počítání, než-li při užití interpolace kvadratické. I přesto však může být kubická interpolace účinnější než kvadratická, protože aproximace funkce f(x) polynomem třetího řádu je přesnější než aproximace polynomem řádu dva. Obrázek 6: Příklad užití metody kubické interpolace, funkci f(x) = x 5 2x proložíme kubickou křivkou y = 1.75x 3 0.75x 2 2x 17
5. Metody nevyužívající derivace 5.1. Metoda kvadratické interpolace Metoda kvadratické interpolace (někdy také známá jako Powellova metoda) je iterační metoda, která požaduje na vstup do algoritmu (a také do každé další iterace) tři body - (x i, y i ), y i = f(x i ), i = 1, 2, 3. Těmito body poté proložíme kvadratickou parabolu y = a 0 + a 1 x + a 2 x 2 (2) a najdeme její extrém, jehož souřadnice označíme (x 4, y 4 ). Pro extrém kvadratické fce (2) platí Řešení systému rovnic dy dx = a 1 + 2a 2 x => x 4 = x = a 1 2a 2. y 1 = a 0 + a 1 x 1 + a 2 x 2 1 y 2 = a 0 + a 1 x 2 + a 2 x 2 2 y 3 = a 0 + a 1 x 3 + a 2 x 2 3 vede k hodnotám koeficientů a 1, a 2. Po odečtení první rovnice od druhé dostáváme výraz y 2 y 1 = a 1 (x 2 x 1 ) + a 2 (x 2 2 x 2 1) => a 1 = y 2 y 1 a 2 (x 2 2 x 2 1) x 2 x 1 Po odečtení první rovnice od třetí dostáváme výraz y 3 y 1 = a 1 (x 3 x 1 ) + a 2 (x 2 3 x 2 1) a po dosazení již odvozeného a 1 dostaneme y 3 y 1 = y 2 y 1 a 2 (x 2 2 x 2 1) x 2 x 1 (x 3 x 1 ) + a 2 (x 2 3 x 2 1) (y 3 y 1 )(x 2 x 1 ) = (y 2 y 1 a 2 (x 2 2 x 2 1))(x 3 x 1 ) + a 2 (x 2 3 x 2 1)(x 2 x 1 ) 18
(y 3 y 1 )(x 2 x 1 ) = (y 2 y 1 )(x 3 x 1 ) + a 2 ((x 2 3 x 2 1)(x 2 x 1 ) (x 2 2 x 2 1)(x 3 x 1 )) a 2 = (y 3 y 1 )(x 2 x 1 ) (y 2 y 1 )(x 3 x 1 ) (x 2 3 x 2 1)(x 2 x 1 ) (x 2 2 x 2 1)(x 3 x 1 ) Dosazením do rovnice x = x 4 = a 1 2a 2 dostáváme výraz x = a 1 2a 2 = (y 2 y 1 ) + a 2 (x 2 2 x 2 1) x 2 x 1 2a 2 = = (y 2 y 1 ) + (x2 x1)(y3 y1) (x3 x1)(y2 y1) (x 2 3 x2 1 )(x 2 x 1 ) (x 2 2 x2 1 )(x 3 x 1 ) (x2 2 x 2 1) 2 (x 2 x 1 )(y 3 y 1 ) (x 3 x 1 )(y 2 y 1 ) (x 2 3 x2 1 )(x 2 x 1 ) (x 2 2 x2 1 )(x 3 x 1 ) (x 2 x 1 ) = 1 2.(x2 2 x 2 1)(y 3 y 1 ) (x 2 3 x 2 1)(y 2 y 1 ) (x 2 x 1 )(y 3 y 1 ) (x 3 x 1 )(y 2 y 1 ) Další postup při hledání extrému funkce f na intervalu [a, b]: = 1. V bodech x 1 = a, x 2 = b, x 3 = a + b 2 f(x i ), i = 1, 2, 3. vypočítáme hodnoty funkce y i = 2. Využitím vztahu pro x 4 vypočítáme další aproximaci polohy extrému. Dále vypočítáme y 4 = f(x 4 ). 3. Zjistíme, zda hodnoty funkce vyhovují požadavku na přesnost, tedy jestli platí vztah x 3 x 4 ε, jestliže ano, přejdeme k následující bodu. Jestliže vztah není splněn, je třeba udělat tyto substituce x 1 = x 2, y 1 = y 2 x 2 = x 3, y 2 = y 3 x 3 = x 4, y 3 = y 4, a vrátit se k bodu 2. 19
4. Výpočet nyní můžeme ukončit, souřadnice extrému jsou (x 4, y 4 ). Obrázek 7: Princip metody kvadratické interpolace Nevýhoda metody kvadratické interpolace je v tom, že někdy může selhat i při unimodální funkci, například tehdy, když není účelová funkce při hledání minima konvexní. Důvodem je to, že při prokládání bodů parabolou může vzniknout parabola konkávní a extrém, který nalezneme, nebude hledané minimum, ale naopak maximum funkce. Poté metoda kvadratické interpolace nepočítá správné hodnoty a je třeba užít jinou metodu. Příklad 1. Metodou kvadratické interpolace nalezněte minimum funkce f(x) = x 5 2x na intervalu [ 1, 0.5], kde přesnost ε = 0.01. Zaokrouhlujte na tři desetinná místa. V prvním kroku kvadratické interpolace volíme jako body x 1,x 2 krajní body intervalu a jako bod x 3 = a + b 2. Poté vypočítáme hodnoty y i = f(x i ) pro i = 1 : 3 a hodnotu x 4. 20
x 1 = 1, y 1 = 1 x 2 = 0.5, y 2 = 0.969 x 3 = 0.75, y 3 = 1.263 x 4. = 0.794, y4. = 1.272 x 3 x 4 = 0.044 > 0.01. Přesnost nebyla splněna, je potřeba udělat dané substituce a opakovat postup. x 1 = 0.5, y 1 = 0.969 x 2 = 0.75, y 2 = 1.263 x 3 = 0.794, y 3 = 1.272 x 4. = 0.804, y4. = 1.272 x 3 x 4 = 0.01 = 0.01. Nyní je splněna přesnost, ale je zřejmé, že výsledek není správný, protože funkční hodnota v bodě x 4 je 1.272, což je více než funkční hodnota v krajním bodě intervalu x 1 = 0.5, kde f(x 1 ) = y 1 = 0.969, tedy v bodě x 4 určitě neleží minimum. Naopak se nám povedlo nalézt maximum dané funkce na tomto intervalu. Důvodem je to, že funkce není na našem intervalu konvexní, i přesto, že je unimodální. Z definice konvexity platí, že pro libovolnou dvojici bodů x 1, x 2 I a libovolné λ [0, 1] platí vztah f(λx 1 + (1 λ)(x 2 )) λf(x 1 ) + (1 λ)f(x 2 ). Zvolíme-li tedy za x 1 = 1, x 2 = 0.5 a λ = 0.5, dostáváme f( 0.75) 1 (f( 1) + f( 0.5)) = 1.263 0.985, 2 což ale určitě neplatí. 5.2. Rovnoměrná komparativní metoda bodů Rovnoměrná komparativní metoda spočívá v rozdělení intervalu [a, b] pomocí x k = a + k b a N + 1, k = 1 : N 21
a nalezení f(x m ) = min 1 k N f(x k). Optimální bod x se tedy nachází v intervalu [x m 1, x m+1 ] a lze psát x = x m ± b a N + 1 U komparativních metod nazýváme určení hodnoty účelové funkce (ať už výpočtem či experimentálním měřením) experiment. Efektivnost metody je vyjádřena poměrem délky počátečního intervalu k délce posledního j-tého intervalu neurčitosti, tedy E = b a l j. Pokud není předem dán počet experimentů N, lze z požadované přesnosti ε tato hodnota odvodit, neboť l j = x m+1 x m 1 = 2. b a N + 1 2ε b a N + 1 ε b a ε(n + 1) b a εn + ε b a ε εn N b a ε 1 22
Vztah pro efektivnost se dá také upravit následujícím způsobem E = b a l j = b a 2(b a) N+1 = N + 1. 2 Obrázek 8: Princip rovnoměrné komparativní metody 5.3. Metoda zlatého řezu Metoda zlatého řezu se řadí mezi postupné komparativní metody. Stejně jako u metody půlení intervalu vytvoříme posloupnost intervalů I k = [a k, b k ], I k+1 I k... I 2 I 1 = [a, b], kde délka intervalů s se neustále snižuje s k+1 < s k < < s 2 < s 1 = b a. Je tedy zřejmé, že opět lim I k = x k 23
lim s k = 0. k Metoda zlatého řezu je založena na rozdělení intervalu neurčitosti následujícím způsobem s k 1 s k = s k s k+1 = r = konst. a platí s k 1 = s k + s k+1, k = 2 : N Obrázek 9: Dělení intervalu metodou zlatého řezu Dosazením do proměnné r dostaneme kvadratickou rovnici r 2 r 1 = 0, která má dva reálné kořeny. Zajímá nás jen kladný kořen r = 1 + 5 2. = 1, 618034, který se nazývá zlatý řez. Platí pro něj následující vztahy 1 r = 5 1 2. = 0, 618034, 1 r = 3 5 2 2. = 0, 381966, 1 r 2 + 1 r = 1. Obrázek 10: k-tý krok dělení metodou zlatého řezu 24
V prvním kroce položíme a 1 = a, b 1 = b, x 1 1 = a 1 + 1 r 2 (b 1 a 1 ), x 2 1 = b 1 1 r 2 (b 1 a 1 ), s 1 = b 1 a 1 = b a a pro k = 2 : N 1 opakujeme tento postup 1. jestliže f(x 1 k 1 ) f(x2 k 1 ), položíme a k = a k 1, b k = x 2 k 1, x 1 k = a k + 1 r 2 (b k a k ), x 2 k = x1 k 1 2. jestliže f(x 1 k 1 ) > f(x2 k 1 ), položíme a k = x 1 k 1, b k = b k 1, x 1 k = x2 k 1, x2 k = b k 1 r 2 (b k a k ) V posledním, N-tém kroce, užijeme tento postup 1. jestliže f(x 1 k 1 ) f(x2 k 1 ), položíme a N = a N 1, b N = x 2 N 1, x N = 1 2 (a N + b N ) 2. jestliže f(x 1 k 1 ) > f(x2 k 1 ), položíme a N = x 1 N 1, b N = b N 1, x N = 1 2 (a N + b N ). Lze odvodit, že nutný počet iterací pro dosažení požadované přesnosti ε je dán vztahem N log b a 2ε log r + 1. 5.4. Fibonacciho metoda Fibonacciho metoda, někdy též známá pod pojmem Kieferova, je modifikací metody zlatého řezu. Je také založena na posloupnosti intervalů I k = [a k, b k ] a na práci s délkami těchto intervalů. Při snaze zkrátit délky intervalů neurčitosti využívá Fibonacciho číselné posloupnosti. Počítací technika je podobná jako v metodě zlatého řezu. Algoritmus postupu je součástí přílohy. 25
6. Příklady V této kapitole si pro ilustraci uvedeme jednoduché příklady na určité typy metod. Příklad 2. Newtonovou metodou, metodou půlení intervalu, metodou sečen a metodou kubické interpolace nalezněte minimum funkce f(x) = x 3 5x + 3 na intervalu [1, 2], kde přesnost ε = 0.05. Zaokrouhlujte na čtyři desetinná místa. V metodách užívajících derivace je zapotřebí první a druhá derivace f(x), tedy f (x) = 3x 2 5, f (x) = 6x. Newtonova metoda Jako vhodné se jeví zvolit za počáteční iteraci některý bod intervalu, tedy například zvolíme x 1 = 1. Dále spočítáme hodnoty f (x 1 ) = 2, f (x 1 ) = 6. Druhou iteraci spočítáme dosazením do vzorce Newtonovy metody a dostáváme Poté otestujeme přesnost x 2 = x 1 f (x 1 ) f (x 1 ) = 4 3. x 2 x 1 = 1 3 > 0.05. Přesnost není splněna, je třeba pokračovat další iterací. f (x 2 ) = 1 3, f (x 2 ) = 8, x 3 = x 2 f (x 2 ) f (x 2 ) = 31 24. = 1.2917, x 3 x 2 = 0.0417 < 0.05. Výpočet nyní můžeme ukončit, požadovaný výsledek je (x 3, f(x 3 )) = (1.2917, 1.3033). 26
Metoda půlení intervalu Jako první je dobré spočítat si potřebný počet iterací N, který zaručuje dosažení přesnosti. N V prvním kroce pokládáme log b a 2ε log2 = log 1 0.1 log2 = 3.32 = N = 4. a 1 = a = 1, b 1 = b = 2, x 1 = 1.5. Spočítáme f (x 1 ) = 1.75 > 0 a algoritmem metody bisekce pokračujeme. a 2 = a 1 = 1, b 2 = x 1 = 1.5, x 2 = 1.25, f (x 2 ) = 0.3125 < 0 a 3 = x 2 = 1.25, b 3 = b 2 = 1.5, x 3 = 1.375, f (x 3 ). = 0.6719 > 0 a 4 = a 3 = 1.25, b 4 = x 3 = 1.375, x 4 = 1.3125. Námi hledané minimum je tedy v bodě (x 4, f(x 4 )) = (1.3125, 1.3015). Metoda sečen V metodě sečen je zapotřebí na vstup dvě iterace. Zvolíme proto krajní body našeho intervalu a dopočítáme hodnoty potřebné pro vzorec. x 1 = 1, x 2 = 2, f (x 1 ) = 2, f (x 2 ) = 7, x 2 x 1 x 3 = x 2 f (x 2 ) f (x 1 ).f (x 2 ) =. 1.2222, x 3 x 2 =. 0.7778 > 0.05 x 3 x 2 x 4 = x 3 f (x 3 ) f (x 2 ).f (x 3 ) =. 1.2759, x 4 x 3 =. 0.0537 > 0.05 x 4 x 3 x 5 = x 4 f (x 4 ) f (x 3 ).f (x 4 ) =. 1.2914, x 4 x 3 =. 0.0155 < 0.05 V páté iteraci jsme nalezli výsledek odpovídající kritériím přesnosti, (x 5, f(x 5 )) = (1.2914, 1.3033). 27
Metoda kubické interpolace Jelikož zadaná funkce je třetího stupně, není třeba počítat koeficienty v kubické interpolaci, stačí si pouze uvědomit, že a 0 = 3, a 1 = 5,a 2 = 0,a 3 = 1. Poté dosadíme do vzorce pro minimum x = a 2 ± a 2 2 3a 1 a 3 ( 3)(5) = ± 3a 3 3. = ±1.291. Z teorie metody kubické interpolace ale víme, že musí platit následující vztah, ze kterého je jasné, který z kořenů je minimum. x > a 2 3a 3 > 0 = x = 1.291. Příklad 3. Metodou kvadratické interpolace, rovnoměrnou komparativní metodou a metodou zlatého řezu nalezněte minimum funkce f(x) = 3x 3 2x + 7 na intervalu [0, 1], kde přesnost ε = 0.1. Zaokrouhlujte na tři desetinná místa. Metoda kvadratické interpolace V kvadratické interpolaci volíme jako body x 1,x 2 krajní body intervalu a jako bod x 3 = a + b 2. Dále vypočítáme hodnoty y i = f(x i ) pro i = 1 : 3 a hodnotu x 4. Pak otestujeme přesnost. x 1 = 0, y 1 = 7 x 2 = 1, y 2 = 8 x 3 = 0.5, y 3 = 6.375 x 4. = 0.389, y4. = 6.399 x 3 x 4 = 0.111 > 0.1. Přesnost není splněna, je třeba udělat substituce a zopakovat daný postup. 28
x 1 = 1, y 1 = 8 x 2 = 0.5, y 2 = 6.375 x 3 = 0.389, y 3 = 6.399 x 4. = 0.464, y4. = 6.372 x 3 x 4 = 0.075 < 0.1. Splnili jsme požadavek přesnosti a tím nalezli minimum funkce, kterým je bod (x 4, f(x 4 )) = (0.464, 6.372). Rovnoměrná komparativní metoda V této metodě je vhodné začít spočítáním počtu iterací N pro zaručení přesnosti. N b a ε 1 = 9 = N = 9. k(b a) Pomocí vzorce x k = a+ spočítáme devět iterací a jejich funkční hodnoty. N + 1 Z funkčních hodnot pak vybereme tu nejmenší. x 1 = 0.1, f(x 1 ) = 6.803 x 2 = 0.2, f(x 2 ) = 6.624 x 3 = 0.3, f(x 3 ) = 6.481 x 4 = 0.4, f(x 4 ) = 6.392 x 5 = 0.5, f(x 5 ) = 6.375 x 6 = 0.6, f(x 6 ) = 6.448 x 7 = 0.7, f(x 7 ) = 6.629 x 8 = 0.8, f(x 8 ) = 6.936 x 9 = 0.9, f(x 9 ) = 7.387 Nejmenší funkční hodnota je f(x 5 ) = 6.375 = minimum se nachází v bodě (x 5, f(x 5 )) = (0.5, 6.375). Metoda zlatého řezu Opět začneme výpočtem N log b a 2ε logr tedy aplikujeme metodu zlatého řezu podle popisu. + 1. = 4.3445 = N = 5. V pěti krocích 29
1. a 1 = a = 0, b 1 = b = 1, x 1 1 = 0.382, x 2 1 = 0.618 f(x 1 1) = 6.403 < f(x 2 1) = 6.472 2. a 2 = a 1 = 0, b 2 = x 2 1 = 0.618, x 1 2 = 0.236, x 2 2 = 0.382 f(x 1 2) = 6.567 > f(x 2 1) = 6.403 3. a 3 = x 1 2 = 0.236, b 3 = b 2 = 0.618, x 1 3 = 0.382, x 2 3 = 0.472 f(x 1 3) = 6.403 > f(x 2 3) = 6.372 4. a 4 = x 1 3 = 0.382, b 4 = b = 3 = 0.618, x 1 4 = 0.472, x 2 4 = 0.528 f(x 1 4) = 6.372 < f(x 2 4) = 6.386 5. a 5 = a 4 = 0.382, b 5 = x 2 4 = 0.528, x 1 5 = x 2 5 = 0.455 Minimum jsme našli v bodě (x 5, f(x 5 )) = (0.455, 6.373). Následující příklady budou popsány velmi stručným, ilustračním způsobem. Příklad 4. Metodami využívajícími derivace nalezněte minimum funkce f(x) = 6x 4 7sin(x) na intervalu [0, 1], kde přesnost ε = 0.01. Zaokrouhlujte na čtyři desetinná místa. f (x) = 24x 3 7cos(x), f (x) = 72x 2 + sin(x) Newtonova metoda Za počáteční bod nelze zvolit nula, protože ve vzorci Newtonovy metody bychom dostali nulu ve jmenovateli. Jako počáteční bod tedy zvolíme x 1 = 1. x 2 = 0.7404, x 2 x 1 = 0.2596 > 0.01 x 3 = 0.6369, x 3 x 2 = 0.1035 > 0.01 x 4 = 0.6167, x 4 x 3 = 0.0172 > 0.01 x 5 = 0.6193, x 5 x 4 = 0.0004 < 0.01 Minimum nalezené Newtonovou metodou leží v bodě (0.6193, 3.1807). 30
Metoda půlení intervalu N log b a 2ε log2 = log 1 0.02 log2 = 5.64 = N = 6. a 1 = a = 0, b 1 = b = 1, x 1 = 0.5 f (x 1 ) = 3.1431 < 0 a 2 = x 1 = 0.5, b 2 = b 1 = 1, x 2 = 0.75, f (x 2 ) = 5.0032 > 0 a 3 = a 2 = 0.5, b 3 = x 2 = 0.75, x 3 = 0.625, f (x 3 ) = 0.1826 > 0 a 4 = a 3 = 0.5, b 4 = x 3 = 0.625, x 4 = 0.5625 f (x 4 ) = 1.645 < 0 a 5 = x 4 = 0.5625, b 5 = b 4 = 0.625, x 5 = 0.5938, f (x 5 ) = 0.7768 < 0 a 6 = x 5 = 0.5938, b 6 = b 5 = 0.625, x 6 = 0.6094, Námi hledané minimum je (0.6094, 3.1792). Metoda sečen, metoda regula falsi Metoda regula falsi vychází v tomto příkladu při zaokrouhlení na čtyři desetinná místa stejně jako metoda sečen, proto jsou jejich hodnoty uvedeny společně. x 1 = 0, x 2 = 1, f (x 1 ) = 7, f (x 2 ) = 20.2179, x 3 = 0.2572 x 3 x 2 = 0.7428 > 0.01 x 4 = 0.4350 x 4 x 3 = 0.1958 > 0.01 x 5 = 0.8260 x 5 x 4 = 0.391 > 0.01 x 6 = 0.5650 x 6 x 5 = 0.261 > 0.01 x 7 = 0.6049 x 7 x 6 = 0.0399 > 0.01 x 8 = 0.6205 x 8 x 7 = 0.0156 > 0.01 x 9 = 0.6193 x 9 x 8 = 0.0012 < 0.01 31
Metoda kubické interpolace Za vstupní body zvolíme hodnoty x 1 = 0,x 2 = 0.5,x 3 = 1. x 1 = 0 y 1 = 0 x 2 = 0.5 y 2 = 2.981 x 3 = 1 y 3 = 0.1097 y 1 = 7 α = 2.076 a 3 = 10.0674 β = 7.1097 a 2 = 2.9577 γ = 0.5 a 1 = 7 δ = 1 x m1 = 0.3934 x m2 = 0.5892 x > a 2 3a 3 > 0.0979 x = x m2 = 0.5892 y m = max(y 1, y 2, y 3 ) m = 3 x 0 = x = 0.5892 x m = x 3 = x = 0.5892 x 1 = 0 y 1 = 0 x 2 = 0.5 y 2 = 2.981 x 3 = 0.5892 y 3 = 3.1668 y 1 = 7 α = 2.076 a 3 = 7.6502 β = 2.7584 a 2 = 1.7491 γ = 0.5 a 1 = 7 δ = 0.5892 x m1 = 0.4813 x m2 = 0.6337 x > a 2 3a 3 > 0.0762 x = x m2 = 0.6337 y m = max(y 1, y 2, y 3 ) m = 1 x 0 = x = 0.6337 x m = x 1 = x = 0.6337 32
x 1 = 0.6337 y 1 = 3.1773 x 2 = 0.5 y 2 = 2.981 x 3 = 0.5892 y 3 = 3.1668 y 1 = 0.4666 α = 14.4713 a 3 = 14.759 β = 15.7878 a 2 = 11.6138 γ = 1.7674 a 1 = 2.5952 δ = 1.8566 x m1 = 0.0947 x m2 = 0.6193 x > a 2 3a 3 > 0.262 x = x m2 = 0.6193 Aproximací kubickým polynomem jsme nalezli minimum (0.6193, 3.1807). Příklad 5. Metodami bez využití derivací nalezněte minimum funkce f(x) = sinh(x) 4x 2 na intervalu [ 1, 0], kde přesnost ε = 0.1. Zaokrouhlujte na čtyři desetinná místa. Metoda kvadratické interpolace x 1 = 1 y 1 = 2.8248 x 2 = 0 y 2 = 0 x 3 = 0.5 y 3 = 0.4789 x 4 = 0.1217 x 3 x 4 = 0.3738 > 0.1 x 1 = 0 y 1 = 0 x 2 = 0.5 y 2 = 0.4789 x 3 = 0.1217 y 3 = 0.0628 x 4 = 0.1271 x 3 x 4 = 0.0054 < 0.1 Minimum bylo nalezeno v bodě ( 0.1271, 0.0628). 33
Rovnoměrná komparativní metoda N b a ε 1 = 9 = N = 9. x 1 = 0.9, f(x 1 ) = 2.2135 x 2 = 0.8, f(x 2 ) = 1.6719 x 3 = 0.7, f(x 3 ) = 1.2014 x 4 = 0.6, f(x 4 ) = 0.8033 x 5 = 0.5, f(x 5 ) = 0.4789 x 6 = 0.4, f(x 6 ) = 0.2292 x 7 = 0.3, f(x 7 ) = 0.0555 x 8 = 0.2, f(x 8 ) = 0.0413 x 9 = 0.1, f(x 9 ) = 0.0602 Nejmenší funkční hodnota je f(x 9 ), minimum se nachází v bodě ( 0.1, 0.0602). Metoda zlatého řezu N log b a 2ε logr + 1. = 4.3445 = N = 5 1. a 1 = 1, b 1 = 0, x 1 1 = 0.618, x 2 1 = 0.382 f(x 1 1) = 0.8696 > f(x 2 1) = 0.1923 2. a 2 = 0.618, b 2 = 0, x 1 2 = 0.382, x 2 2 = 0.236 f(x 1 2) = 0.1923 > f(x 2 1) = 0.0154 3. a 3 = 0.382, b 3 = 0, x 1 3 = 0.236, x 2 3 = 0.1459 f(x 1 3) = 0.0154 > f(x 2 3) = 0.0613 4. a 4 = 0.236, b 4 = 0, x 1 4 = 0.1459, x 2 4 = 0.0902 f(x 1 4) = 0.0613 < f(x 2 4) = 0.0579 5. a 5 = 0.236, b 5 = 0.0902, x 1 5 = x 2 5 = 0.1631 34
Minimum jsme našli v bodě (x 5, f(x 5 )) = ( 0.1631, 0.0574). Fibonacciho metoda N log b a 2ε logr + log 5 logr 1. = 4.016 = N = 5 F 1 = 1.3416 F 2 = 2 F 3 = 3.1305 F 4 = 5 F 5 = 8.0498 1. a 1 = 1, b 1 = 0, x 1 1 = 0.6111, x 2 1 = 0.3889 f(x 1 1) = 0.8439 > f(x 2 1) = 0.2062 2. a 2 = 0.6111, b 2 = 0, x 1 2 = 0.3889, x 2 2 = 0.2444 f(x 1 2) = 0.2082 > f(x 2 1) = 0.0079 3. a 3 = 0.3889, b 3 = 0, x 1 3 = 0.2444, x 2 3 = 0.1667 f(x 1 3) = 0.0079 > f(x 2 3) = 0.0563 4. a 4 = 0.2444, b 4 = 0, x 1 4 = 0.1667 = x 2 4 f(x 1 4) = 0.0563 > f(x 1 4 + g) = 0.0566, kde g=0.001 5. a 5 = 0.1667, b 5 = 0, x 1 5 = x 2 5 = 0.0833 Minimum leží v bodě ( 0.0833, 0.0556). 35
Literatura [1] Antoniou, A., Lu, W-S.: Practical Optimization: Alghoritms and Engineering applications. Springer, 2007. [2] Brunovská, A.: Malá optimalizácia: Metódy, programy, príklady. Alfa, Bratislava, 1990. [3] Luenberger, D.G., Ye, Y.: Linear and Nonlinear Programming. 3rd Edition, Springer, 2008. [4] Machalová, J.: Numerické metody (učební text), 2011. [5] Machalová, J., Netuka, H.: Numerické metody nepodmíněné optimalizace. PřF UP, 2013. [6] Míka, S.: Matematická optimalizace. Vydavatelství ZČU Plzeň, 1997. [7] Netuka, H.: Numerické metody optimalizace (učební text), 2012. [8] http://mi21.vsb.cz/sites/mi21.vsb.cz./files/unit/metody_optimalizace_obr.pdf [online 5. 1. 2013] (Dostál, Z., Beremlijski, P.: Metody optimalizace - interaktivní verze. VŠB - TUO, ZČU, 2012) [9] http://is.muni.cz/th/150978/prif_b/novy3.pdf [online 5. 1. 2013] (Dokanová, L.: Konvexní funkce. PřF MU, 2007) [10] http://is.muni.cz/th/72828/prif_b/min.pdf [online 10. 12. 2012] (Urbánek, J.: Hledání minima funkce jedné proměnné. PřF MU, 2006) [11] http://cs.wikipedia.org/wiki/metoda_tečen [online 10.2.2013] (Wikipedia.org: Metoda tečen) [12] http://books.fs.vsb.cz/statickaoptimalizace [online 11.10.2012] (Vítečková, M., Jedlička, D.: Statická optimalizace systému. VŠB-TU Ostrava, 2003) 36