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 i1 2 y i − y i1 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 , i1, , j−1, j , j1  i−1, j , j−1, , i1, i , j1
Transport i−1, i , i1, , j−1, j , j1,, k −1, k , k 1 
 i−1, j1, , k −1, k ,i , i1,, 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 Oh  .
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 Oh5 .
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 Oh5.
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í Newton­Cotesovy 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 n1 , dostali bychom tzv.
otevř ené Newton­Cotesovy vzorce. Příkladem takové vzorce je
x5
I=∫ f xdx=
x0
5h
11 f 1 f 2 f 3 11 f 4 Oh5.
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 xdx= h f 2 Oh 
2
x2
, x1
∫ f xdx= h
x1


3
1
f 2 − f 3 Oh2 .
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 xdx= h f 3 Oh3 
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 xdx= 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 xdx= 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 Oh4  . 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 xdx= 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 N­1 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