Sekvence Sobol - Sobol sequence
Sobolovy sekvence (také nazývaný LPτ sekvence nebo (t, s) sekvence v bázi 2) jsou příkladem kvazi náhodného sekvence s nízkou odchylkou. Poprvé je představil ruský matematik Ilya M. Sobol (Илья Меерович Соболь) v roce 1967.[1]
Tyto sekvence používají základnu dvou k vytvoření postupně jemnějších jednotných oddílů jednotkového intervalu a poté mění pořadí souřadnic v každé dimenzi.
Dobré distribuce v s-dimenzionální jednotka hyperkrychle
Nechat Jás = [0,1]s být s-dimenzionální jednotka hyperkrychle a F skutečná integrovatelná funkce Jás. Původní motivací Sobola bylo sestavit posloupnost Xn v Jás aby
a konvergence bude co nejrychlejší.
Je víceméně jasné, že pro součet konvergovat k integrálu, body Xn by měl vyplnit Jás minimalizace děr. Další dobrá vlastnost by byla, že projekce Xn na tváři nižší dimenze Jás také ponechte velmi málo otvorů. Proto homogenní náplň Jás se nekvalifikuje, protože v nižších dimenzích bude mnoho bodů na stejném místě, proto je pro integrální odhad zbytečné.
Tyto dobré distribuce se nazývají (t,m,s) -sítě a (t,s) -sekvence v základně b. Chcete-li je představit, definujte nejprve elementární s-interval v základně b podmnožina Jás formuláře
kde Aj a dj jsou nezáporná celá čísla a pro všechny j v {1, ..., s}.
Vzhledem k tomu, 2 celá čísla , a (t,m,s) -net v základně b je sekvence Xn z bm body Jás takhle pro všechny základní intervaly P v základně b hypervolume λ(P) = bt − m.
Bylo zadáno nezáporné celé číslo t, a (t,s) -sekvence v základně b je nekonečný sled bodů Xn taková, že pro všechna celá čísla , sekvence je (t,m,s) -net v základně b.
Sobol ve svém článku popsal Πτ-mesh a LPτ sekvence, což jsou (t,m,s) -sítě a (t,s) -sekvence v základně 2. Podmínky (t,m,s) -sítě a (t,s) -sekvence v základně b (také nazývané Niederreiterovy sekvence) byly vytvořeny v roce 1988 autorem Harald Niederreiter.[2] Termín Sobolovy sekvence byl představen v pozdně anglicky mluvících novinách ve srovnání s Halton, Faure a další sekvence s nízkou odchylkou.
Rychlý algoritmus
Efektivnější Šedý kód implementaci navrhli Antonov a Saleev.[3]
Pokud jde o generování Sobolových čísel, jasně jim pomáhá použití Grayova kódu namísto n pro stavbu n-tý bod remíza.
Předpokládejme, že jsme již vygenerovali všechny čerpané sekvence Sobol n - 1 a uchoval v paměti hodnoty Xn−1,j pro všechny požadované rozměry. Od Šedého kódu G(n) se liší od předchozího G(n - 1) pouze jedním, řekněme k-th, bit (což je bit zcela vpravo) n - 1), vše, co je třeba udělat, je jediný XOR operace pro každou dimenzi za účelem šíření všech Xn−1 na Xn, tj.
Další vlastnosti uniformity
Sobol zavedl další podmínky uniformity známé jako vlastnost A a A '.[4]
- Definice
- Sekvence s nízkou odchylkou je považována za uspokojivou Vlastnost A pokud pro libovolný binární segment (nikoli libovolnou podmnožinu) souboru d-rozměrná posloupnost délky 2d v každé 2 je přesně jedna remízad hyperkrychle, které vznikají rozdělením hyperkrychle jednotky podél každé její prodloužení délky na polovinu.
- Definice
- Sekvence s nízkou odchylkou je považována za uspokojivou Nemovitost A ' pokud pro libovolný binární segment (nikoli libovolnou podmnožinu) souboru d-rozměrná posloupnost délky 4d v každé 4 je přesně jedna remízad hyperkrychle, které vznikají rozdělením hyperkrychle jednotky podél každé její prodloužení délky na čtyři stejné části.
Existují matematické podmínky, které zaručují vlastnosti A a A '.
- Teorém
- The d-dimenzionální sekvence Sobol má vlastnost A iff
- kde PROTId je d × d binární matice definovaná
- s protik,j,m označující m-tá číslice za binárním bodem čísla směru protik,j = (0.protik,j,1protik,j,2...)2.
- Teorém
- The d-dimenzionální sekvence Sobol má vlastnost A 'iff
- kde Ud je 2d × 2d binární matice definovaná
- s protik,j,m označující m-tá číslice za binárním bodem čísla směru protik,j = (0.protik,j,1protik,j,2...)2.
Zkoušky vlastností A a A 'jsou nezávislé. Je tedy možné zkonstruovat Sobolovu sekvenci, která splňuje obě vlastnosti A a A 'nebo pouze jednu z nich.
Inicializace sobolských čísel
Chcete-li vytvořit Sobolovu sekvenci, sadu směrových čísel protii,j je třeba vybrat. Při výběru počátečních čísel směru existuje určitá volnost.[poznámka 1] Proto je možné pro vybrané dimenze přijímat různé realizace Sobolovy sekvence. Špatný výběr počátečních čísel může při použití pro výpočet výrazně snížit účinnost Sobolových sekvencí.
Pravděpodobně nejjednodušší volbou pro inicializační čísla je prostě mít l- nastaven bit úplně vlevo a všechny ostatní bity nulové, tj. mk,j = 1 pro všechny k a j. Tato inicializace se obvykle nazývá inicializace jednotky. Taková posloupnost však pro vlastnosti A a A 'selže i pro malé rozměry, a proto je tato inicializace špatná.
Implementace a dostupnost
Dobrá inicializační čísla pro různé počty dimenzí poskytuje několik autorů. Například Sobol poskytuje inicializační čísla pro dimenze až 51.[5] Stejnou sadu inicializačních čísel používají Bratley a Fox.[6]
Inicializační čísla pro vysoké dimenze jsou k dispozici u Joe a Kuo.[7] Peter Jäckel poskytuje inicializační čísla do své dimenze 32 ve své knize "Metody Monte Carlo ve financích ".[8]
Další implementace jsou k dispozici jako rutiny C, Fortran 77 nebo Fortran 90 v Numerické recepty kolekce softwaru.[9] A zdarma / open-source implementace až v 1111 dimenzích na základě inicializačních čísel Joe a Kuo je k dispozici v jazyce C.[10]a až 21201 dimenzí v Pythonu[11] a Julie[12]. K dispozici je jiná bezplatná / otevřená implementace až v 1111 dimenzích C ++, Fortran 90, Matlab, a Krajta.[13]
Nakonec jsou komerční generátory sekvencí Sobol k dispozici například v rámci Knihovna NAG,[14]. Verze je k dispozici v Britsko-ruské agentuře pro rozvoj offshore (BRODA).[15][16] MATLAB také obsahuje implementaci[17] jako součást jeho statistického nástroje.
Viz také
Poznámky
- ^ Tato čísla se obvykle nazývají inicializační čísla.
Reference
- ^ Sobol, I.M. (1967), „Rozdělení bodů v krychli a přibližné vyhodnocení integrálů“. Zh. Vych. Rohož. Rohož. Fiz. 7: 784–802 (v ruštině); Výpočet SSSR Matematika. Matematika. Phys. 7: 86–112 (v angličtině).
- ^ Niederreiter, H. (1988). "Low-Discrepancy and Low-Dispersion Sequences", Žurnál teorie čísel 30: 51–70.
- ^ Antonov, I.A. a Saleev, V.M. (1979) „Ekonomická metoda výpočtu LPτ-sledky “. Zh. Vych. Rohož. Rohož. Fiz. 19: 243–245 (v ruštině); Výpočet SSSR Matematika. Matematika. Phys. 19: 252–256 (v angličtině).
- ^ Sobol, I. M. (1976) „Rovnoměrně distribuované sekvence s další jednotnou vlastností“. Zh. Vych. Rohož. Rohož. Fiz. 16: 1332–1337 (v ruštině); Výpočet SSSR Matematika. Matematika. Phys. 16: 236–242 (v angličtině).
- ^ Sobol, I.M. a Levitan, Y.L. (1976). "Produkce bodů rovnoměrně rozložených ve vícerozměrné krychli" Tech. Rep. 40, Ústav aplikované matematiky, Akademie věd SSSR (v Rusku).
- ^ Bratley, P. a Fox, B. L. (1988), „Algorithm 659: Implementing Sobol’s quasirandom sequence generator“. ACM Trans. Matematika. Software 14: 88–100.
- ^ "Generátor sekvence Sobol". University of New South Wales. 2010-09-16. Citováno 2013-12-20.
- ^ Jäckel, P. (2002) „Metody Monte Carlo ve financích“. New York: John Wiley and Sons. (ISBN 0-471-49741-X.)
- ^ Press, W. H., Teukolsky, S. A., Vetterling, W. T. a Flannery, B. P. (1992) „Numerical Recipes in Fortran 77: The Art of Scientific Computing, 2nd ed.“ Cambridge University Press, Cambridge, Velká Británie
- ^ C implementace Sobolovy sekvence v Knihovna NLopt (2007).
- ^ Imperiale, G. "pyscenarios: Generátor scénářů Pythonu".
- ^ Sobol.jl balíček: Julia implementace sekvence Sobol.
- ^ Sobolova kvazirandomní sekvence, kód pro C ++ / Fortran 90 / Matlab / Python od J. Burkardta
- ^ „Numerical Algorithms Group“. Nag.co.uk. 2013-11-28. Citováno 2013-12-20.
- ^ I. Sobol ', D. Asotsky, A. Kreinin, S. Kucherenko (2011). „Konstrukce a srovnání vysokodimenzionálních Sobolových generátorů“ (PDF). Wilmott Journal. listopad: 64–79.CS1 maint: více jmen: seznam autorů (odkaz)
- ^ "Broda". Broda. 16. 04. 2004. Citováno 2013-12-20.
- ^ referenční stránka sobolset. Citováno 2017-07-24.
externí odkazy
- Shromážděné algoritmy ACM (Viz algoritmy 647, 659 a 738.)
- Sbírka programovacích kódů generátorů sekvencí Sobol
- Freewarový generátor C ++ sekvence Sobol