Sobol sekvens

256 poäng från de första 256 poängen för 2,3 Sobol'-sekvensen (överst) jämfört med en pseudoslumptalskälla (nederst). Sobol'-sekvensen täcker utrymmet jämnare. (röd=1,..,10, blå=11,..,100, grön=101,..,256)

Sobol'-sekvenser (även kallade LP τ- sekvenser eller ( t , s )-sekvenser i bas 2) är ett exempel på kvasi-slumpmässiga lågdiskrepanssekvenser . De introducerades först av den ryske matematikern Ilya M. Sobol' (Илья Меерович Соболь) 1967.

Dessa sekvenser använder en bas av två för att bilda successivt finare enhetliga partitioner av enhetsintervallet och sedan ordna om koordinaterna i varje dimension.

Bra fördelningar i den s -dimensionella enhetens hyperkub

Låt I s = [0,1] s vara den s -dimensionella enheten hyperkub, och f en verklig integrerbar funktion över I s . Den ursprungliga motiveringen för Sobol' var att konstruera en sekvens x n i I s så att

och konvergensen vara så snabb som möjligt.

xn fylla tydligt att för att summan ska konvergera mot integralen bör punkterna I s för att minimera hålen. En annan bra egenskap skulle vara att projektionerna av x n på en lägre dimensionell yta av I s lämnar väldigt få hål också. Därför är den homogena fyllningen av I s inte kvalificerad eftersom i lägre dimensioner kommer många punkter att vara på samma plats, därför värdelösa för integraluppskattningen.

Dessa goda fördelningar kallas ( t , m , s )-nät och ( t , s )-sekvenser i bas b . För att introducera dem, definiera först ett elementärt s -intervall i bas b en delmängd av I s av formen

där a j och d j är icke-negativa heltal, och för alla j i {1, ...,s}.

Givet 2 heltal , är a ( t , m , s )-net i bas b en sekvens x n av b m punkter av I s så att för alla elementära intervall P i bas b av hypervolym λ ( P ) = b t−m .

Givet ett icke-negativt heltal t , är a ( t , s )-sekvensen i bas b en oändlig sekvens av punkter x n så att för alla heltal , sekvensen en ( t , m , s )-net i bas b .

I sin artikel beskrev Sobol' Π τ -maskor och LP τ - sekvenser , som är ( t , m , s )-nät respektive ( t , s )-sekvenser i bas 2. Termerna ( t , m , s )-nät och ( t , s )-sekvenser i bas b (även kallade Niederreiter-sekvenser) myntades 1988 av Harald Niederreiter . Termen Sobol'-sekvenser introducerades i sent engelsktalande tidningar i jämförelse med Halton , Faure och andra sekvenser med låg diskrepans.

En snabb algoritm

En effektivare implementering av Gray-kod föreslogs av Antonov och Saleev.

När det gäller genereringen av Sobol'-nummer är de tydligt hjälpta av användningen av grå kod istället för n för att konstruera den n -te punkten.

Antag att vi redan har genererat alla Sobol'-sekvenser upp till n − 1 och sparat värdena x n −1, j för alla nödvändiga dimensioner i minnet. Eftersom den grå koden G ( n ) skiljer sig från den för den föregående G ( n − 1) med bara en singel, säg den k -:te biten (som är en nollbit längst till höger av n − 1), behöver allt som behövs för att göras är en enda XOR- operation för varje dimension för att sprida alla x n −1 till x n , dvs.

Ytterligare enhetlighetsegenskaper

Sobol' introducerade ytterligare enhetlighetsvillkor kända som egenskap A och A'.

Definition
En sekvens med låg diskrepans sägs uppfylla egenskap A om det för något binärt segment (inte en godtycklig delmängd) av den d -dimensionella sekvensen med längden 2 d finns exakt ett drag i varje 2 d hyperkub som är ett resultat av att dela upp enhetens hyperkub längs var och en av dess längdförlängningar till hälften.
Definition
En sekvens med låg diskrepans sägs uppfylla egenskap A' om det för något binärt segment (inte en godtycklig delmängd) av den d -dimensionella sekvensen med längden 4 d finns exakt ett drag i varje 4 d hyperkuber som är ett resultat av att dela upp enheten hyperkub längs var och en av dess längdförlängningar i fyra lika delar.

Det finns matematiska villkor som garanterar egenskaperna A och A'.

Sats
Den d -dimensionella Sobol'-sekvensen har egenskapen A iff
där Vd är den binära matrisen
× d definierad av d
med v k , j , m betecknar den m -:te siffran efter den binära punkten för riktningsnumret v k , j = (0. v k , j ,1 v k , j ,2 ...) 2 .
Teorem
Den d -dimensionella Sobol'-sekvensen har egenskapen A' iff
där U d är den 2 d × 2 d binära matrisen definierad av
med v k , j , m som betecknar den m -:te siffran efter den binära punkten för riktningsnumret v k , j = (0. v k , j ,1 v k , j ,2 ...) 2 .

Tester för egenskaperna A och A' är oberoende. Således är det möjligt att konstruera Sobol'-sekvensen som uppfyller både egenskaperna A och A' eller bara en av dem.

Initieringen av Sobols nummer

För att konstruera en Sobol'-sekvens måste en uppsättning riktningsnummer v i , j väljas. Det finns en viss frihet i valet av initiala riktningsnummer. Därför är det möjligt att ta emot olika realiseringar av Sobol'-sekvensen för utvalda dimensioner. Ett dåligt urval av initiala siffror kan avsevärt minska effektiviteten hos Sobol'-sekvenser när de används för beräkning.

Förmodligen är det enklaste valet för initialiseringsnumren bara att ha den l -:e biten längst till vänster inställd , , j och alla andra bitar ska vara noll, dvs mk = 1 för alla k och j . Denna initiering kallas vanligtvis enhetsinitiering . En sådan sekvens klarar emellertid inte testet för egenskap A och A' även för låga dimensioner och därför är denna initiering dålig.

Implementering och tillgänglighet

Bra initialiseringsnummer för olika antal dimensioner tillhandahålls av flera författare. Till exempel tillhandahåller Sobol' initialiseringsnummer för dimensioner upp till 51. Samma uppsättning initialiseringsnummer används av Bratley och Fox.

Initialiseringsnummer för höga dimensioner finns på Joe och Kuo. Peter Jäckel tillhandahåller initialiseringsnummer upp till dimension 32 i sin bok " Monte Carlo-metoder inom finans ".

Andra implementeringar är tillgängliga som C-, Fortran 77- eller Fortran 90-rutiner i samlingen Numerical Recipes av programvara. En med gratis/öppen källkod i upp till 1111 dimensioner, baserad på Joe- och Kuo-initieringsnumren, finns tillgänglig i C och upp till 21201 dimensioner i Python och Julia . En annan gratis/öppen källkod-implementering i upp till 1111 dimensioner är tillgänglig för C++, Fortran 90 , Matlab och Python .

Slutligen finns kommersiella Sobol' sekvensgeneratorer tillgängliga inom till exempel NAG Library . En version finns tillgänglig från British-Russian Offshore Development Agency (BRODA). MATLAB innehåller även en implementering som en del av sin statistikverktygslåda.

Se även

Anteckningar

  1. ^ Dessa nummer kallas vanligtvis initialiseringsnummer .
  1. ^ Sobol',IM (1967), "Fördelning av poäng i en kub och ungefärlig utvärdering av integraler". Z H. Vych. Matta. Matta. Fiz. 7 : 784–802 (på ryska); USSR Comput. Matte. Matematik. Phys. 7 : 86–112 (på engelska).
  2. ^ Niederreiter, H. (1988). "Låga avvikelser och låga spridningssekvenser", Journal of Number Theory 30 : 51–70.
  3. ^ Antonov, IA och Saleev, VM (1979) "En ekonomisk metod för att beräkna LP τ -sekvenser". Z H. Vych. Matta. Matta. Fiz. 19 : 243–245 (på ryska); USSR Comput. Matte. Matematik. Phys. 19 : 252–256 (på engelska).
  4. ^ Sobol', IM (1976) "Enhetligt fördelade sekvenser med en ytterligare enhetlig egenskap". Z H. Vych. Matta. Matta. Fiz. 16 : 1332–1337 (på ryska); USSR Comput. Matte. Matematik. Phys. 16 : 236–242 (på engelska).
  5. ^ Sobol', IM och Levitan, YL (1976). "Produktionen av punkter likformigt fördelade i en flerdimensionell kub" Tech. Rep. 40, Institute of Applied Mathematics, USSR Academy of Sciences (på ryska).
  6. ^ Bratley, P. och Fox, BL (1988), "Algorithm 659: Implementing Sobol' quasirandom sequence generator". ACM Trans. Matematik. Programvara 14 : 88–100.
  7. ^ "Sobol' sekvensgenerator" . University of New South Wales . 2010-09-16 . Hämtad 2013-12-20 .
  8. ^   Jäckel, P. (2002) "Monte Carlo metoder inom finans". New York: John Wiley and Sons . ( ISBN 0-471-49741-X .)
  9. ^ Press, WH, Teukolsky, SA, Vetterling, WT och Flannery, BP (1992) "Numeriska recept i Fortran 77: Konsten av vetenskaplig beräkning, 2nd ed." Cambridge University Press, Cambridge, Storbritannien
  10. ^ C implementering av Sobol'-sekvensen i NLopt-biblioteket (2007).
  11. ^ "SciPy API-referens: scipy.stats.qmc.Sobol" .
  12. ^ Imperiale, G. "pyscenarios: Python Scenario Generator" .
  13. ^ Sobol.jl -paket: Julia-implementering av Sobol'-sekvensen.
  14. ^ The Sobol' Quasirandom Sequence , kod för C++/Fortran 90/Matlab/Python av J. Burkardt
  15. ^ "Numeriska algoritmer grupp" . Nag.co.uk. 2013-11-28 . Hämtad 2013-12-20 .
  16. ^ I. Sobol', D. Asotsky, A. Kreinin, S. Kucherenko (2011). "Konstruktion och jämförelse av högdimensionella Sobol'-generatorer" (PDF) . Wilmott Journal . Nov (56): 64–79. doi : 10.1002/wilm.10056 . {{ citera tidskrift }} : CS1 underhåll: flera namn: lista över författare ( länk )
  17. ^ "Broda" . Broda. 2004-04-16 . Hämtad 2013-12-20 .
  18. ^ sobolset hänvisar till sidan . Hämtad 2017-07-24.

externa länkar