zde
Transkript
zde
Kombinatorická minimalizace Cílem je nalézt globální minimum ve velké diskrétní množině, kde může být mnoho lokálních minim. Úloha obchodního cestujícího Cílem je najít nejkratší cestu, která spojuje všechny body a vrací se zpět do výchozího bodu. Možností sice je velký počet, ale příliš mnoho na to, abychom je vyzkoušeli 20 ! 18 ≈10 všechny. Například pokud musí obchodní cestující projet 20 měst, máme 2 možností. Pro výpočet se používá Metropolisův algoritmus ● vygeneruje se počáteční cesta spojující města N ● počítá se minimum jisté funkce např. E=∑ x i −x i1 2 y i − y i1 2 , která i=0 ● může vyjadřovat třeba vzdálenost měst (nebo cenu jízdenek) generujeme náhodně nové konfigurace (cesty) a přijímáme je s jistou pravděpodobností většinou danou p=exp−E /T , rychlost konvergence pak závisí na parametru T Náhodné změny konfigurací Reverse i−1, i , i1, , j−1, j , j1 i−1, j , j−1, , i1, i , j1 Transport i−1, i , i1, , j−1, j , j1,, k −1, k , k 1 i−1, j1, , k −1, k ,i , i1,, j−1, j , k 1 Lineární programování (simplexová metoda) Nebudeme na cvičení dělat, materiály viz. slidy nebo Numerical Recipies. Numerické integrování b V 1D se jedná o úlohu výpočtu integrálu I =∫ f x dx . Tato úloha je ekvivalentní a řešení počátečního problému pro obyčejnou diferenciální rovnici (ODE) dI = f x s dx počáteční podmínkou I a=0 , přičemž se hledá hodnota I b . Metody řešení ODE obsahují adaptivní volba kroku, a proto převedení na úlohu ODE je vhodné u funkcí, které mají proměnné měřítko (např. integrace spektra s úzkými spektrálními čarami). Pro integraci v 1D se používají: ● ● ● integrace aproximace funkce (kubického splinu, Čebyševova polynomu, ...) klasické kvadraturní vzorce, založené na integraci aproximace pomocí Lagrangeových polynomů, také Rombergova integrace Gaussovy kvadratury Pro integraci ve více dimenzích se používá: ● ● rozklad na opakované integrace v jedné proměnné (dimenzi) metoda Monte Carlo Klasické kvadraturní vzorce Klasické kvadraturní vzorce se dají odvodit z interpolace funkce f x na intervalu 〈 x 1 , x n 〉 Lagrangeovým polynomem a integrace tohoto polynomu. Pro jednoduchost uvažujme, že uvnitř intervalu x 1 , x n se nachází n−2 ekvidistantně rozložených bodů s krokem h , tedy x i =x 1 i h , i=1,, n−2 . V bodech x 1 , , x n známe funkční hodnoty funkce f x , f 1 , , f n . Odvození vzorce pro integraci na dvou bodech – tzv. Lichoběžníkové pravidlo : x2 Funkce f x integrál I =∫ f x dx=? x1 Aproximace Lagrangeovým polynomem f x ≈ L 1 x = f 1 x−x 2 f 2 x 1−x 2 x−x 2 x−x 1 Označení délky intervalu h=x 2 −x 1 , f x≈− f 1 f 2 h h Integrace x2 x2 1 1 x2 x2 1 1 x−x 1 x 2 −x 1 1 I =∫ f x dx≈∫ L 1 x dx= − f 1 ∫ x−x 2 dx f 2 ∫ x−x 1 dx h x x x x x 22 x 12 x 22 x 12 1 I≈ − f 1 − − x 1 x 2 f 2 −x 1 x 2 = h 2 2 2 2 = 1 h 2 x 2 −x 1 f 1 f 2 = f 1 f 2 2h 2 h f f 2 a z chyby pro aproximaci Lagrangeovým interpolačním 2 1 polynomem (nebo z Taylorova rozvoje) se dá vykoukat, že chyba integrace je řádu h 3 , h 3 tedy I= f 1 f 2 Oh . 2 Tedy I ≈ Odvození vzorce pro integraci na třech bodech – tzv. Simpsonovo pravidlo : x3 Funkce f x integrál I =∫ f x dx=? x1 Aproximace Lagrangeovým polynomem x−x 2 x−x 3 x−x 1 x−x 3 x−x 1 x−x 2 f x ≈ L 2 x = f 1 f 2 f 3 x 1−x 2 x 1 −x 3 x 2 −x 1 x 2 −x 3 x 3−x 1 x 3−x 2 Označení délky intervalu h=x 2 −x 1 =x 3 −x 2 , x−x 2 x−x 3 x−x 1 x−x 3 x−x 1 x−x 2 f x ≈ f 1 f f 2 3 2 h2 −h 2 2 h2 Integrace x3 x3 x1 x1 I =∫ f x dx≈∫ L 2 x dx Výsledný vzorec po integraci bude I ≈ h f 4 f 2 f 3 a chyba bude řádu h 5 , 3 1 h f 1 4 f 2 f 3 Oh5 . 3 O výsledku integrace se můžete rychle přesvědčit v Maplu kfe/~klimo/nm/kvadr.mws . tedy I= Podobně integrace na čtyřech bodech – 3/8 pravidlo 3h I= f 3 f 2 3 f 3 f 4 Oh5. 8 1 Simpsonovy vzorce jsou přesné pro integraci polynomů do třetího stupně včetně, lichoběžníkové pravidlo je přesné pro polynomy do prvního stupně včetně. Těmto vzorcům se obecně nazývají NewtonCotesovy a vznikly Lagrangeovou interpolací na bodech x 1 , , x n a integrací s mezemi x 1 , x n . Říká se jim proto uzavřen é, obsahují totiž i krajní body intervalu. Pokud bychom udělali interpolaci na bodech x 1 , , x n ale pak integrovali s mezemi x 0 , x n1 , dostali bychom tzv. otevř ené NewtonCotesovy vzorce. Příkladem takové vzorce je x5 I=∫ f xdx= x0 5h 11 f 1 f 2 f 3 11 f 4 Oh5. 24 Někdy se při integraci využívá také extrapolace (hodí se na okrajích intervalu). Integrál se počítá pomocí funkčních hodnot v bodech, ležících na hranicích intervalu a mimo něj (tyto vzorce se opět dají získat integrací Lagrangeových polynomů). x2 ∫ f xdx= h f 2 Oh 2 x2 , x1 ∫ f xdx= h x1 3 1 f 2 − f 3 Oh2 . 2 2 Nejjednodušší možností integrace je pak obdélníkové pravidlo, kdy celou funkci f x na intervalu 〈 x 1 , x 2 〉 nahradíme konstantou (rovnou funkční hodnotě v prostředku intervalu f 3 ) 2 x2 ∫ f xdx= h f 3 Oh3 x1 . 2 Složené vzorce K výpočtu integrálu přes celý zadaný interval není při rovnoměrné (ekvidistantní) síťi vhodné použít jeden mnohabodový vzorec s vysokým řádem přesnosti (interpolace Lagrangeovým polynomem řádu většího než 7 se v praxi nepoužívá, protože může mezi uzly oscilovat). Je lepší interval rozdělit na více bodů a využít některého složeného pravidla. Uzavřené Newton Cotesovy vzorce a obdélníkové pravidlo se dají velmi dobře skládat a použít pro integraci na intervalu, obsahujícím mnohem více než 1,2,3,4 ... body. Složené lichoběžníkové pravidlo xN ∫ f xdx= h x1 [ ] 1 1 1 f f f f N−1 f N O 2 2 1 2 3 2 N Složené Simpsonovo pravidlo xN ∫ f xdx= h x1 [ ] 1 4 2 4 4 1 1 f 1 f 2 f 3 f 4 f N−1 f N O 4 3 3 3 3 3 3 N Praktická implementace lichoběžníkového pravidla: Postupné zpřesňování při jednotlivých voláních odpovídá půlení podintervalů. Přitom se využívá znalosti předchozích bodů (hodnot v nich). Odhad chyby můžeme získat porovnáním výsledků dvou volání (tedy s délkami intervalů h a h /2 ). Konečný výsledek možno zpřesnit z posledních dvou integrací jako 4 1 I= Ih − I2h Oh4 . Tento výsledek je identický se složeným Simpsonovým 3 3 pravidlem. Rombergova integrace Výsledky numerické integrace například pomocí lichoběžníkového pravidla lze chápat jako funkci veličiny h 2 !!! Protože s h 0 klesá chyba k 0 , je hodnota integrálu v bodě h=0 přesná. Tu samozřejmě nemůžeme spočítat přímo, ale pokud zavedeme funkci f h 2 =I h ( f h=I h ) , můžeme funkci f po vypočtení několika jejích hodnot interpolovat a vzorec použít k extrapolaci v bodě h 2 =0 . Rombergova metoda tedy často výrazně sníží počet bodů, ve kterých musíme funkci počítat, abychom dosáhli zadané přesnosti. Např. pokud provedeme polynomiální extrapolaci na h 2 =0 a použijeme pro výpočet integrálů složené lichoběžníkové pravidlo, které má přesnost 2. řádu, získáme extrapolací ze 2 výsledků metodu 4. řádu 3 výsledků metodu 6. řádu 4 výsledků metodu 8. řádu ... Ze 7. integrací s různým h lze získat metodu 14. řádu, tedy velmi přesnou. Více integrací se již nepoužívá, protože pro výšší řády není polynomiální extrapolace vhodná. Příklady v PASCALU VYPINTM.PAS , QROMZKM.PAS , QROMINFM.PAS . Integrály se singularitami Singularity : ● na okraji má f x konečnou limitu, ale nelze tam přímo počítat, např. sin x v bodě 0 x ● krajní bod integrálu je ∞ nebo −∞ nebo oboje ● integrál je integrabilní, ale má singularitu na okraji ● integrál má integrabilní singularitu ve známém bodě uprostřed (uvnitř) intervalu ● integrál má integrabilní singularitu v neznámém bodě uprostřed (uvnitř) intervalu, řešíme vždy jako ODE Neexistující nebo nekonečný integrál se neřeší, je to nekorektní úloha. Konečná limita na kraji nelze přímo počítat xN Použije se složené obdélníkové pravidlo ∫ f xdx= h [ f 3 f 5 f N− 1 ] . x1 2 2 2 Pokud bychom interval půlili, nelze využít předchozí body. Proto se krok zmenšuje jako h /3 . Pak je implementace obdobná jako u lichoběžníkového pravidla. I zde se dá využít Rombergova metoda. Nekonečné meze Integrál transformujeme na integrál s konečnými mezemi a na ten použijeme složené z 1 obdélníkové pravidlo. Např. ∫ f x dx transformujeme substitucí t= na integrál x −∞ 1 z 1 1 dt . Tato substituce je samozřejmě možná pouze, pokud interval integrace t 0 neobsahoval 0 . Jinak je třeba integrál rozdělit na více integrálů a integrovat zvlášť. ∫ t 2 f Gaussovy kvadratury Pokud chceme vypočítat integrál s minimálním počtem vyčíslení funkce, hodí se Gaussovy kvadratury. Volí se optimální poloha bodů a jejich váhy tak, že Gaussova metoda pro N bodů dává přesný výsledek až pro polynomy řádu 2 N −1 , tedy téměř dvojnásobek přesnosti integrace s ekvidistantními body. Polohy bodů a váhy lze nalézt např. http://mathworld.wolfram.com/GaussianQuadrature.html http://pathfinder.scar.utoronto.ca/~dyer/csca57/book_P/node44.html další informace v Numerical Recipies a na slidech. Příklady v PASCALU GAULEG.PAS , QGAUS.PAS . Integrace ve více dimenzích Počet bodů vyčíslení funkce roste s počtem dimenzí mocnině, tedy v N dimenzích je třeba n N vyčíslení funkce. Pro 30 bodů ve třech dimenzích je tedy třeba výpočet funkce ve 27000 bodech. Hranice integrálu je N1 dimenzionální nadplocha, proto přechod k 1D integrálům může být obtížný. Pro hledání mezí může být třeba řešit nelineární rovnice. Metody: ● ● snížení počtu dimenzí ze symetrie úlohy – např. integrace sféricky symetrické funkce přes kouli posloupnost opakovaných 1D integrací – oblast přes kterou integrujeme musí mít jednoduchou hranici a funkce musí být hladká, můžeme získat poměrně dobrou přesnost, pokud má funkce v oblasti ostrá maxima, je třeba je najít a počítat v nich integrál přesněji, jinak je výpočet integrálu beznadějný Příklad v PASCALU QUAD3D.PAS . Metoda Monte Carlo Při integraci uzavřeme oblast integrace V do co nejmenší oblasti se známým objemem V ' , ve které umíme snadno generovat náhodné body. Zavedeme funkci definovanou na oblasti V ' . Generujeme N náhodných bodů v oblasti V ' a integrál vypočteme jako Přesnost metody je řádu 1 , kde N je počet bodů v MC metodě. N