El millonésimo dígito debe ser “1”
El 1 billonésimo dígito debe ser “2 ”
Lectura de 10 millones de dígitos de pi en sas
No deseo escribir 10 millones de dígitos, por lo que utilizaré SAS para leer un archivo de texto en una URL de la Universidad de Princeton. Las siguientes declaraciones usan la declaración FILENAME para señalar la URL:
- ¿Cuál es el resto de [matemáticas] 10 ^ {10} / 1001 [/ matemáticas]?
- ¿Por qué el valor de [math] \ pi [/ math] es tan grande?
- ¿Por qué, en algunos casos, las expansiones decimales de fracciones regulares producen cadenas repetitivas de dígitos (por ejemplo, 1/35 = 0,0285714285714286, 2/35 = 0,0571428571428571, 3/35 = 0,0857142857142857), mientras que en otros casos, parece no haber ningún patrón en absoluto?
- Si el rango y = (x2 + ax + b) / (x2 + 2x + 3) es [-5,4]; y a y b son números naturales, entonces, ¿cuál es el valor de ab?
- ¿Cuál es la fórmula general para encontrar los números mínimo y máximo donde la suma de los dígitos de un número es k?
/ * leer datos a través de Internet desde una URL * / nombre de archivo rawurl url "http://www.cs.princeton.edu/introcs/data/pi-10million.txt" / * proxy = 'http: //yourproxy.company.com: 80' * /; PiDigits de datos; rawurl infile lrecl = 10000000; ingrese el Dígito 1. @@; Posición = _n_; Diff = dif (dígito); / * calcular diferencia entre dígitos adyacentes * / correr; datos de impresión de proceso = PiDigits (obs = 9); var digit; correr;
los
PiDigits
El conjunto de datos contiene 10 millones de filas. La llamada a PROC PRINT muestra los primeros dígitos decimales, que son (omitiendo el 3) 141592653….
Para otras formas de usar SAS para descargar datos de Internet, busque el blog de Chris Hemedinger, The SAS Dummy para “PROC HTTP” y encontrará varios ejemplos de cómo descargar datos de una URL.
La distribución de dígitos de pi
Puede ejecutar muchas pruebas estadísticas en estos números. Se conjetura que los dígitos de pi se distribuyen aleatoriamente de manera uniforme en el sentido de que los dígitos del 0 al 9 aparecen con la misma frecuencia, al igual que pares de dígitos, tríos de dígitos, etc.
Puede llamar a PROC FREQ para calcular la distribución de frecuencia de los primeros 10 millones de dígitos de pi y probar si los dígitos parecen estar distribuidos uniformemente:
/ * ¿Están los dígitos 0-9 igualmente distribuidos? * / datos de frecuencia de proceso = PiDigits; tablas Digit / chisq out = DigitFreq; correr;
El análisis de frecuencia de los primeros 10 millones de dígitos muestra que cada dígito aparece aproximadamente un millón de veces. Una prueba de chi-cuadrado indica que los dígitos parecen estar distribuidos uniformemente. Si activa los gráficos ODS, PROC FREQ también produce un diagrama de desviación que muestra que las desviaciones de la uniformidad son pequeñas.
Un “gráfico pi” de la distribución de los dígitos de pi
Como defensor de la iniciativa de gráfico #OneLessPie, me opongo intelectualmente a crear gráficos circulares. Sin embargo, voy a apretar los dientes y hacer una excepción para este Día del Pi súper especial. Puede usar el lenguaje de plantillas de gráficos (GTL) para crear un gráfico circular. Aún más simple, Sanjay Matange ha escrito una macro SAS que crea un gráfico circular con un esfuerzo mínimo. El siguiente paso de DATOS crea una variable de porcentaje y luego llama a la macro de Sanjay:
datos DigitFreq; establecer DigitFreq; Pct = Porcentaje / 100; formato Pct PERCENT8.2; correr; / * macro de http://blogs.sas.com/content/graphicallyspeaking/2012/08/26/how-about-some-pie/ * / % GTLPieChartMacro (data = DigitFreq, category = Digit, response = Pct, title = Distribución de los primeros 10 millones de dígitos de Pi, DataSkin = NINGUNO);
El gráfico circular aparece en la parte superior de este artículo. Muestra que los dígitos del 0 al 9 están igualmente distribuidos.
¿Alguna autocorrelación en la secuencia?
En el paso DATOS que lee los dígitos de pi, calculé la diferencia entre los dígitos adyacentes. Puede usar el procedimiento SGPLOT para crear un histograma que muestre la distribución de esta cantidad:
datos de sgplot de proc = PiDigits (obs = 1000000); vbar Diff; correr;
¡Esa es una distribución triangular muy buena! No te aburriré con detalles matemáticos, pero esta forma surge cuando examinas la diferencia entre dos variables aleatorias uniformes discretas independientes, lo que sugiere que los dígitos pares de pi son independientes de los dígitos impares de pi.
De hecho, más es verdad. Puede ejecutar una prueba formal para verificar la autocorrelación en la secuencia de números. La estadística de Durbin-Watson, que está disponible en PROC REG y PROC AUTOREG, tiene un valor cercano a 2 si una serie de valores no tiene autocorrelación. La siguiente llamada a PROC AUTOREG solicita la estadística de Durbin-Watson para la autocorrelación de primer orden a quinto orden para el primer millón de dígitos de pi. Los resultados muestran que no hay autocorrelación detectable a través del quinto orden. Para la prueba de Durban-Watson, los dígitos de pi son indistinguibles de una secuencia aleatoria:
datos de autorregulación de proceso = PiDigits (obs = 1000000); Modelo Dígito = / dw = 5 dwprob; correr;
¿Son aleatorios los dígitos de pi?
Los investigadores han realizado docenas de pruebas estadísticas de aleatoriedad en los dígitos de pi. Todos llegan a la misma conclusión. Estadísticamente hablando, los dígitos de pi parecen ser la realización de un proceso que escupe dígitos al azar de manera uniforme.
Sin embargo, los matemáticos aún no han podido demostrar que los dígitos de pi son aleatorios. Uno de los principales investigadores de la búsqueda comentó que si son aleatorios, puede encontrar en la secuencia (apropiadamente convertida en letras) los “trabajos completos de Shakespeare” o cualquier otro mensaje que pueda imaginar (Bailey y Borwein, 2013). Por ejemplo, si asigno valores numéricos a las letras de “Pi Day” (P = 16, I = 9, D = 4, A = 1, Y = 25), entonces la secuencia “1694125” debería aparecer en algún lugar del decimal expansión de pi. Escribí un programa SAS para buscar la expansión decimal de pi para la secuencia de siete dígitos “Día Pi”. Esto es lo que encontré:
proc print noobs data = PiDigits (firstobs = 4686485 obs = 4686491); Var Posición Dígito; correr;
¡Ahí está! La representación numérica de “Pi Day” aparece cerca del 4,7 millones de decimales de pi. Otros “mensajes” podrían no aparecer en los primeros 10 millones de dígitos, pero este sí. Encontrar sonetos y obras de Shakespeare probablemente requerirá calcular más dígitos de pi que el récord mundial actual.
Los dígitos de pi pasan todas las pruebas de aleatoriedad, pero pi es un valor matemático preciso que describe la relación entre la circunferencia de un círculo y su diámetro. ¡Esta dicotomía entre “muy aleatorio” y “muy estructurado” es fascinante!