Articulo de referencia

Secuencia de Van der Corput

Ilustración del llenado del intervalo unitario (eje horizontal) utilizando los primeros n términos de la secuencia decimal de Van der Corput, para n desde 0 hasta 999 (eje verti...

Ilustración del llenado del intervalo unitario (eje horizontal) utilizando los primeros n términos de la secuencia decimal de Van der Corput, para n desde 0 hasta 999 (eje vertical).

Una secuencia de van der Corput es un ejemplo de la secuencia unidimensional más simple de baja discrepancia sobre el intervalo unitario ; fue descrita por primera vez en 1935 por el matemático holandés JG van der Corput . Se construye invirtiendo la representación en base n de la secuencia de números naturales (1, 2, 3, …).

Elb{\displaystyle b}representación -aria del entero positivonorte1{\displaystyle n\geq 1}es norte = k=0L1dk(norte)bk = d0(norte)b0++dL1(norte)bL1,{\displaystyle n~=~\sum _{k=0}^{L-1}d_{k}(n)b^{k}~=~d_{0}(n)b^{0}+\cdots +d_{L-1}(n)b^{L-1},} dóndeb{\displaystyle b}es la base en la que el númeronorte{\displaystyle n}está representado y0dk(norte)<b;{\displaystyle 0\leq d_{k}(n)<b;}es decir, elk{\displaystyle k}-ésimo dígito en elb{\displaystyle b}expansión -aria denorte.{\displaystyle n.} Elnorte{\displaystyle n}El -ésimo número en la secuencia de van der Corput es gramob(norte) = k=0L1dk(norte)bk1 = d0(norte)b1++dL1(norte)bL.{\displaystyle g_{b}(n)~=~\sum _{k=0}^{L-1}d_{k}(n)b^{-k-1}~=~d_{0}(n)b^{-1}+\cdots +d_{L-1}(n)b^{-L}.}

Ejemplos

Por ejemplo, para obtener la secuencia decimal de van der Corput, comenzamos dividiendo los números del 1 al 9 en décimas (incógnita/10{\displaystyle x/10}), luego cambiamos el denominador a 100 para comenzar a dividir en centésimas (incógnita/100{\displaystyle x/100}En cuanto al numerador, comenzamos con todos los números de dos dígitos del 10 al 99, pero en orden inverso de dígitos. Por lo tanto, obtendremos los numeradores agrupados por el último dígito. Primero, todos los numeradores de dos dígitos que terminan en 1, por lo que los siguientes numeradores son 01, 11, 21, 31, 41, 51, 61, 71, 81, 91. Luego, los numeradores que terminan en 2, por lo que son 02, 12, 22, 32, 42, 52, 62, 72, 82, 92. Y después, los numeradores que terminan en 3: 03, 13, 23, y así sucesivamente...

Así comienza la secuencia {110,210,310,410,510,610,710,810,910,1100,11100,21100,31100,41100,51100,61100,71100,81100,91100,2100,12100,22100,32100,},{\displaystyle \left\{{\tfrac {1}{10}},{\tfrac {2}{10}},{\tfrac {3}{10}},{\tfrac {4}{10}},{\tfrac {5}{10}},{\tfrac {6}{10}},{\tfrac {7}{10}},{\tfrac {8}{10}},{\tfrac {9}{10}},{\tfrac {1}{100}},{\tfrac {11}{100}},{\tfrac {21}{100}},{\tfrac {31}{100}},{\tfrac {41}{100}},{\tfrac {51}{100}},{\tfrac {61}{100}},{\tfrac {71}{100}},{\tfrac {81}{100}},{\tfrac {91}{100}},{\tfrac {2}{100}},{\tfrac {12}{100}},{\tfrac {22}{100}},{\tfrac {32}{100}},\ldots \right\},} o en representación decimal:

0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,01, 0,11, 0,21, 0,31, 0,41, 0,51, 0,61, 0,71, 0,81, 0,91, 0,02, 0,12, 0,22, 0,32, …,

Lo mismo se puede hacer para el sistema numérico binario , y la secuencia binaria de van der Corput es

0,1 2 , 0,01 2 , 0,11 2 , 0,001 2 , 0,101 2 , 0,011 2 , 0,111 2 , 0,0001 2 , 0,1001 2 , 0,0101 2 , 0,1101 2 , 0,0011 2 , 0,1011 2 , 0,0111 2 , 0,1111 2 , …

o, equivalentemente, 12,14,34,18,58,38,78,116,916,516,1316,316,1116,716,1516,.{\displaystyle {\tfrac {1}{2}},{\tfrac {1}{4}},{\tfrac {3}{4}},{\tfrac {1}{8}},{\tfrac {5}{8}},{\tfrac {3}{8}},{\tfrac {7}{8}},{\tfrac {1}{16}},{\tfrac {9}{16}},{\tfrac {5}{16}},{\tfrac {13}{16}},{\tfrac {3}{16}},{\tfrac {11}{16}},{\tfrac {7}{16}},{\tfrac {15}{16}},\ldots .}

Los elementos de la sucesión de van der Corput (en cualquier base) forman un conjunto denso en el intervalo unitario; es decir, para cualquier número real en[0,1]{\displaystyle [0,1]}Existe una subsecuencia de la secuencia de van der Corput que converge a ese número. Además, están equidistribuidas en el intervalo unitario.

Implementación en Python

def corput ( n , base : int ) -> float : """  Devuelve el n-ésimo elemento de la secuencia de van der Corput en una base dada  """ output = 0.0 output_increment = 1 / base while n > 0 : # procesa el dígito menos significativo de la posición n de la secuencia # para obtener el dígito más significativo de la salida least_significant_digit = n % base output += least_significant_digit * output_increment# elimina el dígito menos significativo de la posición de la secuencia n //= base # mueve el incremento de salida al siguiente dígito incremento de salida /= base return salida

Véase también

Referencias

  • van der Corput, JG (1935), "Verteilungsfunktionen (Erste Mitteilung)" (PDF) , Actas de la Koninklijke Akademie van Wetenschappen te Amsterdam (en alemán), 38 : 813–821 , Zbl 0012.34705 
  • Kuipers, L.; Niederreiter, H. (2005) [1974], Distribución uniforme de secuencias , Publicaciones de Dover , p.  129.158, ISBN 0-486-45019-8, Zbl 0281.10001