jueves, septiembre 28, 2006

Los decimales de pi

A raiz de la entrada anterior, se planteó en el Foro de Migui (concretamente aquí) la cuestión de si los decimales de pi (o de cualquier otro numero trascendente en general) podrían contener todo lo que el mono es capaz de escribir.Uno podría inventarse una codificación de las letras, de manera que una secuencia de letras se convierta en una secuencia de numeros.Por ejemplo, si definimos la sencilla relación a=01, b=02, c=03, d=04, l=12, o=16...encontramos que la palabra "blog" se puede escribir como 02121607 .Si encontramos en los decimales de pi la secuencia "02121607" diríamos que pi tiene escrita la palabra "blog".A partir de este punto, y aplicando el razonamiento del mono, parece que podríamos llegar a la conclusión de que toda la información del universo (y algo más) está contenida en los decimales de pi, dado que pi posee infinitos decimales.

Pero hay una trampa ;).Nuestra razonamiento se realizó bajo la suposición de que el mono escribía aleatoriamente, en todo momento existía la misma probabilidad de que pulsase cada tecla.En los decimales de pi, y usando nuestro anterior código, esto se traduce en que cada pareja de decimales desde 00 hasta 99 tenga la misma probabilidad de aparecer*.¿Es esto cierto? ¿Por qué deberíamos suponer que los decimales de pi son aleatorios? A fin de cuentas, pi tiene su origen en la geometría, no en la estadística, no tiene por qué tener una distribución uniforme de decimales.Así que esta tarde decidí resolver la cuestión por la fuerza.He puesto al programa Mathematica a hacer un recuento de los 40000 primeros decimales de pi.Ayer hice lo mismo, pero al final descubrí un error en la programación que lo manda todo a hacer gárgaras.Hoy lo he intentado de nuevo, con el error corregido.Al acabar, me dará una lista de diez números, cada uno representando el número de veces que han aparecido los números 1,2,3...en los 40000 primeros decimales de pi.Si los decimales de pi son realmente aleatorios, los 10 valores deberían ser iguales, en torno a 4000 cada uno.Si no lo son, puede significar o que los decimales de pi no son aleatorios, o que sencillamente necesitamos una muestra más grande apra el experimento (necesitamos un mayor numero de decimales).Estoy esperando a que acabe...

Bien! Por fín tengo el resultado! Y un bonito histograma que da una idea bastante gráfica del asunto:

Ahora, unos cuantos números:

-Nº de veces que aparece el uno:4060--10'2%
-Nº de veces que aparece el dos:3892--9'7%
-Nº de veces que aparece el tres:3971--10%
-Nº de veces que aparece el cuatro:4014--9'9%
-Nº de veces que aparece el cinco:4040--10'1%
-Nº de veces que aparece el seis:4026--10'1%
-Nº de veces que aparece el siete:3977--9'9%
-Nº de veces que aparece el ocho:4032--10'1%
-Nº de veces que aparece el nueve:3998--10%
-Nº de veces que aparece el cero:3989--9'9%

Como se puede ver, parece que los decimales de pi cumplen bastante bien el requisito de estar distribuidos uniformemente.Os pongo aquí otros histogramas, calculados para los valores de p(numero de decimales considerados) p=10,100,1000,10000.Para que comparéis, y veáis cómo la cosa se va haciendo cada vez más uniforme:

Bueno, yo diría que los decimales de pi son bastante aleatorios :).Pero para asegurarme, mañana haré el cálculo con p=1000000.De ser aleatorios los decimales apenas debería haber diferencia de altura entre las barras del histograma. Seguramente el cálculo le tome un tiempo enorme a mi pobre CPU, pero bueno, todo sea por el bien de la ciencia :P. Sin embargo ahora mismo me apostaría unos leros virtuales a que los decimales de pi son aleatorios.Así que cuestión resuelta :).

Un saludo.

P.S:La diversión no acaba aquí :).¿Qué ocurre con los decimales de e, la constante de Mascheroni o cualquier otro numero trascendente que se nos ocurra? Bueno, para el lector que esté interesado en el tema (y que posea el porgrama Mathematica), voy a colgar en la sección de recursos el .nb que usé para hacer las cuentas.Simplemente tenéis que tocar los dos primeros números que aparecen, p es el número de decimales que entrarán en la estadística y n es el número decimal a considerar (pi, e...).Debéis aseguraros de introducir este número mediante una expresión que le permita calcular a Mathematica los decimales que hagan falta (pi y e ya vienen por defecto en Mathematica, y con muchos decimales, así que en estos casos no hace falta).Lo que quiero decir es que si vais a trabajar con la cte. de Euler-Mascheroni no pongáis 5.77... sino una expresión analítica que tenga a esa constante por límite, por ejemplo.

El resultado que obtendréis será un bonito histograma (con el 10 en el lugar del 0), y 10 números que serán el número exacto de veces que apareció cada dígito, en el orden 1,2,3...8,9,0. Sí, el 0 es el último, más por vagancia mía que por otra cosa XD.Quien quiera puede editarlo of course.La idea matemática subyacente es muy sencilla.

*El decir que las parejas 00 a 99 tienen la misma probabilidad de aparecer (1%)equivale a decir que los dígitos individuales tienen cada uno la misma probabilidad de aparecer (10%), ya que así la probabilidad de aparición de una pareja determinada es (1/10)(1/10)=1/100.

EDIT:Tesseract, un colega del foro de MiGUi, me ha prestado una ayuda inestimable con el algoritmo de mi programa, mejorando su rapidez en varios órdenes de magnitud:El caso p=500000, que se muestra abajo, lo realicé en apenas unos minutos con el algoritmo de Tesseract, mientras que el mío hubiera tardado varias horas (el viernes pasado estuvo como 8 h y no acababa).Además , lo hizo sin conocer el lenguaje de Mathematica XD, ¡lo aprendió sobre la marcha!En resumen, muchas gracias, Tesseract.Podeís ver la conversación que tuve con Tesseract en los comentarios de esta misma entrada.En breves sustituiré en la sección de recursos el algoritmo viejo por el nuevo de Tesseract.Por cierto, como se puede ver, las barras están prácticamente a la misma altura, la diferencia de una a otra es de unos pocos pixels.Otra prueba más de que los decimales de pi son aleatorios :).

EDIT 2: En los comentarios sobre este artículo se ha hecho ver que la condición que este proceso estudia y los decimales de pi cumplen (que cada cifra decimal aparece con la misma frecuencia relativa) es una condicion necesaria pero no suficiente para garantizar la aleatoriedad de los decimales de pi; La secuencia 123456789123456789123456789... pasaría este test y obviamente no es aleatoria.Lo que habría que hacer para subsanar esto es comprobar que las parejas 01,02,03...56...78..98..99,00 aparecen todas con igual frecuencia relativa en los decimales de pi, y lo mismo con las ternas 001,002...998,999,000, con las cuaternas 0001...9999,0000 y así.El numero pi cumple todos estos requisitos, como muestran algunos enlaces que podéis encontrar en los comentarios de este artículo.Así que podemos decir sin miedo que es aleatorio, hasta donde sabemos (no hay por el momento un prueba definitiva).

51 comentarios:

Anónimo dijo...

Interesante, como siempre. Por si no quieres torturar tu CPU :P, en esta página he encontrado esto:

One interesting list of numbers tested for randomness is the digits in the decimal approximation for pi, which has been computed to more than two and a quarter billion places. The digits are not random in the sense that they occur by chance, but they are in the sense that they pass the tests of randomness. In fact, the decimal approximation for pi has been described as the "most nearly perfect random sequence of digits ever discovered."

Tesseract dijo...

Maldito blogger, siempre hago mal lo de poner quién soy.

Anónimo dijo...

ya habia leido sobre la probable normalidad de pi ,muy interesante la verdad que hay infinitas cosas por encontrar en el universo .

Smaigol dijo...

Muchas gracias Tesseract.Te agradezco el link, aparte de confirmar mis conclusiones (eso siempre sienta bien), no creo que mi CPU huiera podido lograrlo:Ayer cuando llegué a casa (a las 15:15 o así) puse al programa a calcular para p=500000 (me di cuenta después de publicar la entrada de que p=1000000 está fuera del alcance de Mathematica), y a la una y media de la mañana no había acabado XD.En fin, que decidí olvidarme de hacerlo.En resumen, que gracias por tu información :D.

Tesseract dijo...

Bienvenido al maravilloso mundo de la informática (léase reventar CPUs con programitas que nunca terminan).

Ahí lo bonito sería intentar mejorar la eficiencia del programa. No tengo ni idea del Mathematica, pero echando un vistazo a tu programa podrías mejorarlo con alguna cosilla:

- Lo que más salta a la vista es que en cada ejecución del bucle utilizas diez "if", cuando si, por ejemplo, la primera de las condiciones se cumple ya no sería necesario evaluar las siguientes. Si cambias los nueve últimos "if" por "else if" te ahorrarás bastante tiempo de ejecución (el tiempo requerido por esas líneas se reducirá a la mitad) (y digo "la mitad" porque sabemos que cada número tiene la misma probabilidad de aparecer ;-) ).

- Pese a lo anterior, lo más costoso de tu programa es, sin duda, la operación de elevar n a k-1. No sé cómo maneja el Mathematica la exponenciación. Ésta, implementada a lo bruto, requiere un tiempo directamente proporcional al exponente. Cuando elevas un número a 10000 tarda el doble que para elevarlo a 5000. La exponenciación se puede implementar de forma que requiera un tiempo algo menor (sin complicarse, del orden del logaritmo del exponente), pero eso sigue siendo un tiempo enorme.

Mucho mejor sería que hicieses otra pequeña modificación al programa. Elimina la parte en la que elevas n a k-1 y sustitúyelo por lo siguiente: restas a n su parte entera, y luego multiplicas n por 10. Esto tiene lo que se llama un coste constante, siempre tarda lo mismo y además es muy poco.

Haz esas dos modificaciones (sobre todo la segunda, la primera no tendrá prácticamente efecto) y tu programa irá mucho más rápido. Concretamente, tu programa original requiere un tiempo más o menos proporcional al cuadrado de k, y con estas modificaciones será más o menos proporcional a k.

Hala, toma rollo sin venir a cuento, jeje.

Tesseract dijo...

Una forma más elegante de hacer lo de los ifs:

En vez de tener las diez variables sueltas que usas como contadores, utilizas un vector con diez posiciones (de la 0 a la 9). Llamémosle contador [0..9]. Inicializas todas las posiciones a 0.

Así, toda la parte de los if se reduciría a:

contador[f]++

Y ya está. Luego, obviamente, al hacer el barchart tendrás que hacer

BarChart[{contador[1], contador[2]... y tal y tal ...contador[0]}] y cambiar la parte de los prints.

No sé si te interesa, pero yo me entretengo. xD Aun así, lo que tiene una importantcia crucial es eliminar la exponenciación, el resto son cosillas para arañar milisegundos.

Smaigol dijo...

Pues qué quieres que te diga Tesseract, hoy eres mi dios XD.He arreglado lo de la exponenciación, lo voy a runear para p=100000 ahora, se supone que no debería tardar demasiado.Perdona que no te contestara antes, he estado todo el día fuera de casa.Lo de los Ifs voy a arreglarlo ahora, pero la historia esa de los vectores prefiero no hacerla, puesto que no sé exactamente cómo maneja mathematica los vectores.No es exactamente un lenguaje de programación, básicamente es un programa de hacer cuentas a lo bruto XD, aunque tiene algunas sentencias de control de flujo como el for o el if.No tiene else if, pero tengo which que es lo mismo.En fin, que lo estoy corrigiendo ahora y lo pondré en marcha en breves.Si todo va bien mañana actualizaré el blog (con mencion especial para ti por supuesto) y colgaré el resultado para p=100000 y p=500000.

De todas formas, ocurra lo que ocurra, mcuhas gracias por la molestia, eres un crack ;).

P.S:¿Algun link donde te enseñen a calcular el tiempo que le lleva a la CPU hacer cada operación? :P

Tesseract dijo...

Si no es molestia, no suelo tener ocasión de hablar de algoritmia y me encanta. ;)

No sé qué tal irán tus pruebas, mi análisis anterior se basaba en algunas suposiciones (ya que no controlo el Mathematica) que si no son correctas lo chafan, a saber:

- Mathematica implementa la exponenciación con el algoritmo que tarda un tiempo proporcional al exponente. Esto fácilmente podría no ser así y utilizar el que usa el proporcional al logaritmo del exponente.

- El tiempo que se tarda en multiplicar n por 10 es despreciable en relación al que se tarda en elevar 10 a un número muy grande (esto es lo que tú hacías en tu algoritmo original, y como no tengo ni zorra de cómo hace esas operaciones el Mathematica...)

Para lo de calcular la eficiencia de los algoritmos hay que saber unas cuantas cosas. Una búsqueda en Google con eficiencia algoritmos y cosas así en castellano e inglés no me ha devuelto resultados interesantes. Puedes encontrar introducciones al tema, como la que hay en http://web.jet.es/jqc/progii2.html , pero si realmente quieres aprender algo útil hay que saber esas cosas como que la exponenciación requiere tal o cuál tiempo, y eso requiere estudiar. Si de verdad alguna vez te apetece ponerte con el tema, te recomiendo el libro "Fundamentos de algoritmia", de Brassard y Bratley. Es de segundo de informática, pero tú eres un tío listo.

Para que te hagas una idea de cómo va el asunto, te explico cómo he hecho los análisis de los algorimos. Empezaré con el mío, pero suponiendo que no cambiamos nada de los ifs, sólo lo de la exponenciación:

Hay operaciones que son básicas: una comparación, una asignación de un valor a una variable, sumas o multiplicaciones de números pequeños... Si yo tengo una o varias de estas operaciones digo que tienen un coste constante, lo cual en este contexto significa que el tiempo que se necesita para ejecutarlas está acotado por una constante.

Bien, comencemos analizando qué pasa dentro del bucle. Hay unas cuantas comparaciones y sumas y la extracción de un valor entero. Así que cualquier ejecución del bucle requiere un tiempo acotado por una constante. Nos da igual la escala de tiempo, digamos que tarda un tiempo "1".

Nos falta por considerar lo que pasa en la línea que te dije que se podía modificar. O sea, restar a n su parte entera y multiplicarlo por diez. Dos operaciones de coste constante.

Vale, el bucle se ejecuta p veces. Por lo tanto, la ejecución de todas las pasadas del bucle requiere como máximo un tiempo p·1=p. Fuera del bucle sólo quedan asignaciones y cosas así, por lo que mi algoritmo, en definitiva, necesita un tiempo proporcional a p. Formalmente, necesita un tiempo que está acotado por p multiplicado por una constante.

Vamos con tu algoritmo. Dentro del bucle hay las comparaciones, asignaciones y todo eso que tienen un coste constante. Lo que cambia es que haces una operación que tiene un coste proporcional al exponente (p-k), ese coste ya no está acotado por una constante.

Ok, el bucle tiene un coste p-k. Como hay p ejecuciones del bucle, si no me equivoco nos vamos a un coste (p^2+p)/2. En realidad no suele hacer falta un análisis tan exhaustivo, normalmente con ver que tenemos un bucle de coste p que se ejecuta p veces ya vemos que el coste va a estar en n^2.

Ahora puedes ver por qué si alguna de mis suposiciones falla mi análisis se va al carallo. Si el Mathematica implementa la exponenciación con un coste log(n) el coste de tu algoritmo sería n·log(n).

En cuanto a la segunda suposición, si se requiriese más tiempo para multiplicar n por diez que para elevar 10 a un número muy grande, el análisis también falla, porque aunque el tiempo de la multiplicación sea constante no es despreciable con relación a la exponenciación.

Bueno, a ver si se entiende algo. xD Si no se me entiende (no son horas), que no te dé miedo el tema, en realidad con un poco de práctica ves el coste de algoritmos sencillos a simple vista.

Tesseract dijo...

Fe de erratas: en el tercer y cuarto párrafos, contando desde el final, alguna neurona me ha jugado una mala pasada y, de estar hablando de p paso a hablar de n. Me refería a p.

Smaigol dijo...

Hola Tesseract.Hoy tampoco he podido ponerme con el ordenata hasta hace poco, así que no he podido comparar tu algoritmo con el mío antiguo hast hace poco.He cronometrado el tiempo de ejecución para p=10000 de los dos algoritmos, y el resultado ha sido:
-Argoritmo antiguo:1 min 21 segs.
-Argoritmo nuevo:Más de 4 min O_O.

No lo entiendo, no puede ser que tarde tanto en hacer algo tan tonto como multiplicar por 10.Te pongo a continuación el código del nuevo algoritmo:
----------------------------
p = 10000; n = π;

No toques nada de aquí en adelante;

a = 0; b = 0; c = 0; d = 0; e = 0; g = 0; h = 0; i = 0; j = 0; l = 0; \
Block[{$MaxExtraPrecision = p},
For[k = 1, k < p, k++,
n = 10*FractionalPart[n];
f = IntegerPart[n];
Which[f == 1, a++, f == 2,
b++, f == 3, c++, f == 4, d++, f == 5, e++, f == 6, g++,
f == 7, h++, f == 8, i++, f == 9, j++, f == 0, l++];]];
<< Graphics`Graphics`
BarChart[{a, b, c, d, e, g, h, i, j, l}];
Print[a]; Print[b]; Print[c]; Print[d];
Print[e]; Print[g]; Print[h]; Print[i]; Print[j]; Print[l];p = 10000; n = π;

No toques nada de aquí en adelante;

a = 0; b = 0; c = 0; d = 0; e = 0; g = 0; h = 0; i = 0; j = 0; l = 0; \
Block[{$MaxExtraPrecision = p},
For[k = 1, k < p, k++,
n = 10*FractionalPart[n];
f = IntegerPart[n];
Which[f == 1, a++, f == 2,
b++, f == 3, c++, f == 4, d++, f == 5, e++, f == 6, g++,
f == 7, h++, f == 8, i++, f == 9, j++, f == 0, l++];]];
<< Graphics`Graphics`
BarChart[{a, b, c, d, e, g, h, i, j, l}];
Print[a]; Print[b]; Print[c]; Print[d];
Print[e]; Print[g]; Print[h]; Print[i]; Print[j]; Print[l];

---------------------------

Como puedes ver, lo único que he cambiado ha sido lo de la exponenciación y los Ifs los he sustituido por el supuestamente más rápido which.No sé por qué tengo la corazonada de que el problema es con el Which XDD.En fin, lo comprobaré y te informo en breves.No obstante estoy liado y puede que no pueda editar la entrada del blog hasta mañana, o incluso hasta el finde (dios no lo quiera, eso significaría que estaría MUY atareado XDD).

Ah, y muchas gracias por tu lección de algorítmica.Es un tema interesante.Quizá me baje el libro ese de la mula este finde :P.

Un saludo.

Smaigol dijo...

Pues no, sustituí el which por el conjunto de ifs y sigue tardando mas de minuto y medio, mientras que el otro algoritmo no llega al minuto (la estimación de antes era una cota superior basada en que cuando miré la pantalla habían pasado 1 min 21 segs y ya había acabado :P).No sé cómo implementa Mathematica la exponenciación, pero sin duda lo hace bien.

En fin...se te ocurre alguna explicación? Porque me cuesta creer que Mathematica tenga implementada una exponenciación que tarde menos que una multiplicación O_O.

Tesseract dijo...

Pues estamos buenos. xD

Amos a ver, parece que el Mathematica se dedica a tomarnos el pelo. En tu algoritmo original también hay una multiplicación de n por un número, o sea que la diferencia no debe estar ahí.

Lo otro que se hace, extraer la parte entera de un número decimal, se lleva a cabo en los dos algoritmos, por lo que no debe estar ahí la diferencia.

Todo eso nos lleva a lo único que queda: la asignación de un nuevo valor a n en mi algoritmo. Parece muy inocente, pero el tema tiene que estar ahí.

Supongamos que al Mathematica le pides que haga una serie de operaciones con un número, y que va almacenando todo eso en una zona de la memoria. Ahora, ¿qué pasa con el resultado de esas operaciones? Veamos por ejemplo lo que pasa en esta línea de tu algoritmo:

f = IntegerPart[10*FractionalPart[10\^\((k - 1)\)*n]];

Se van haciendo todas esas operaciones con n, que ya sabemos que eso requiere bastante tiempo, pero al final sólo se asigna un valor a f, como sabemos un número de una sola cifra. Esta asignación la hará enseguida.

Ahora veamos que pasa con esta línea de mi algoritmo:

n = 10*FractionalPart[n];

Nuevamente se hacen unas cuantas operaciones con n, que necesariamente requerirán un tiempo menor que el utilizado por la línea de tu algoritmo comentada anteriormente. Sin embargo, al final de esas operaciones hay que copiar un número de muchísimas cifras a la memoria reservada para la variable n.

Yo creo que ahí está la clave. El tiempo que se necesita para la nueva asignación de n parece que es mayor que el que se ahorra al eliminar la exponenciación. Si aumentásemos un güevo el valor de p llegaría un momento que mi algoritmo sería más rápido que el tuyo, pero en estas condiciones parece que no es así.

Para comprobar esto, ¡nada mejor que un nuevo algoritmo! xxD Te propongo utilizar tu algoritmo pero con una modificación:

El problema de tu algoritmo es la exponenciación. En la primera pasada haces 10^0, en la segunda 10^1... Pero, ¿por que no utilizar una variable que acumule esos productos?

Me explico, al inicio declara una variable v con valor uno. Ahora las dos primeras líneas del bucle serían algo así como (no domino la sintaxis del Mathematica):

f = IntegerPart[10*FractionalPart[v*n]];
v = v * 10;

Así nos ahorramos el coste de la exponenciación y a la vez no hacemos mi asignación que tanto tiempo llevaba.

Aun así, no me satisface, molaría tener una instrucción que desplazase la coma decimal sin requerir un millón de años. A ver si se me ocurre algo, pero tampoco te quiero aburrir.

Tesseract dijo...

Estoy curioseando con un manual del Mathematica (por cierto, me lo voy a instalar, tiene buena pinta).

Así de primeras no encuentro nada que me sirva, pero sí he visto algo interesante: N[Pi, x] devuelve el valor de Pi con x dígitos. Tendría sentido que cuando inicializas n hicieras n=N[Pi,p], para no utilizar más decimales de los necesarios. Y a lo mejor haciendo mejora mucho la eficiencia de mi algoritmo original, porque la asignación ya no llevaría tanto tiempo.

Como te debo aburriiiiir xxxDDD

Tesseract dijo...

Hum, seguro que la instrucción

v = v * 10

a la larga requiere también un montón de tiempo (por la asignación de un número muy grande a la variable).

Tesseract dijo...

¡Bingo!

Me he bajado el Mathematica y efectivamente el problema estaba en lo de la asignación, porque al usar lo de n = N[Pi, p] se soluciona completamente el problema y el análisis ya tiene sentido.

Haciendo eso y utilizando el algoritmo sin exponenciación mi ordenata termina el caso p=100000 en menos de diez segundos, que viene a ser lo que necesita el algoritmo con exponenciación para p=10000.

Te pongo cómo me ha quedado el algoritmo:


p = 100000; n = N[Pi, p];

No toques nada de aquí en adelante;

a = 0; b = 0; c = 0; d = 0; e = 0; g = 0; h = 0; i = 0; j = 0; l = 0; \
Block[{$MaxExtraPrecision = p}, For[k = 1, k < p, k++, n = \
10*FractionalPart[n];
f = IntegerPart[n];
Which[f == 1, a++, f == 2, b++, f == 3, c++, f == 4, d++, f == 5, e++, f \
== 6, g++, f == 7, h++, f == 8, i++, f == 9, j++, f == 0, l++];]];
<< Graphics`Graphics`
BarChart[{a, b, c, d, e, g, h, i, j, l}];
Print[a]; Print[b]; Print[c]; Print[d];
Print[e]; Print[g]; Print[h]; Print[i]; Print[j]; Print[l];


Hala, ya te dejo en paz. xD Quién me levantará mañana...

Tesseract dijo...

Pequeño bug por novato: N[Pi, x] devuelve el valor de Pi con x dígitos, no con x decimales. Por ejemplo N[Pi,3]=3.14.

O sea, que el algoritmo tal como está al final siempre suma un cero de más. Hay que cambiar n = N[Pi, p] por n = N[Pi, p+1].

Smaigol dijo...

Tesseract, eres el puto amo :D.Se me pasó por la cabeza lo de que lo que consume tiempo es la asignación de la variable, pero no le di importancia. Y lo de N[Pi,p+1] no se me habría ocurrido en la vida, a pesar que es lógico y de sentido común. En fin, que muchísimas gracias, efectivamente p=100000 lo resuelve en 10 segs (O_O), y ahora estoy runeando p=500000 para colgarlo en la entrada, como prometí, junto con tu nombre.Y en cuanto pille a nesimo y/o Gato Cuantico por banda colgamos tu nuevo algoritmo en lugar del mio viejo.

La verdad, cuando lo hice no pensaba en la eficiencia, sino en acabar, y ya veo que la broma me salió cara XDD.

El Mathemaica es un gran programa.EL lenguaje es muy directo, los comandos a menudo se explican a sí mismos (p.ej. IntegerPart) y, lo mejor de todo, tiene una ayuda co-jo-nu-da.Cuando programo algo en mathematica, tengo siempre al lado el buscador de la ayuda, y con poner cualquier cosa que desee hacer me sale el comando adecuado casi siempre.Por ejemplo, el comando BarCHart no lo conocía hasta que hice este programa :P.En fin, que instalarse el Mathematica me parece siempre una decisión excelente.Además, así ya no dependes del Integrator.

Una ultima cosa:Esas NO son horas de postear, hay que estar en la camita durmiendo como los buenoc chicos XD.

Un saludo, y de nuevo muchísmias gracias.Si hubiera un smiley con una reverencia te ponía 4.

P.D:Ya he acabado con p=500000.Le estoy poniendo p=1000000, a ver que pasa...

Smaigol dijo...

Joder, por fin he conseguido que el puñetero blogger me plublicase el edit.Se cae a pedazos esto.Tengo el reultado para p=1000000, pero no hay gran diferencia con p=500000 y colgarlo sería toda una odisea, así que mejor lo dejo.

Tesseract dijo...

Si hay algo que me alucina de la algoritmia son estas cosas, cambias dos chorradas de aspecto inofensivo y te encuentras estas sorpresas. Y desde luego he aprendido una lección xD, no siempre se puede despreciar el tamaño de una asignación.

El Mathematica, aún no he tenido mucho tiempo para darle uso, pero desde luego parece una maravilla. Lo malo es que ya tengo problemas por practicar poco las mates y esto va a hacer definitivamente que me olvide de cómo se resuelve un sumatorio. xxxDD Es como los niños pequeños, que no hay que dejarles usar la calculadora, a mí deberían prohibirme el Mathematica.

Bueno, ha sido un placer. ;)

Tesseract dijo...

Oyes, cambiando de tema: me temo que con el programita no comprobamos que los decimales de pi son aleatorios ¿Y si a partir de la cifra 500000, por ejemplo, los decimales fueran 12345678901234567890...?

Si fuera así, los decimales de pi ya no serían aleatorios (aka serían más compresibles/predecibles), a pesar de que lo pareciesen por sus frecuencias relativas.

He buscado sobre el particular y me he encontrado tests que se hacen a los números para ver si son aleatorios, los más sencillos aquí y los más avanzados acá.

Smaigol dijo...

Hombre, los decimales de Pi son aleatorios en el sentido que le doy en el texto, contando un número grande de decimales tienden a caer con un 10% de probabilidad cada uno.Por supuesto, a partir de p=500000 podría romperse la aleatoreidad, pero asumimos que eso no ocurre XD.En cualquier caso, a lo máximo que podemos aspirar es a esto, supongo que una demostración matemática sería muy complicada, de ser factible.

Otra cosa, los decimales de pi siguen una secuencia conocida.Es decir, yo puedo diseñar una función Pi(n) que me dé el dígito en el lugar n-ésimo, usando series de Taylor, por ejemplo, eso sí, de grado monstruoso.Puedes ver aquí un montón de fórmulas para Pi.En este sentido, la función de distribución de los decimales de pi es conocida, sí, pero eso no quita que sus dígitos puedan ser aleatorios (que ocurran a la larga con un 10% de probabilidad de aparecer cada uno).

Tesseract dijo...

Pero Smaigol, todos esos métodos para hallar pi son sumas y multiplicaciones infinitas y cosas así.

Vamos a verlo de otra manera. Una serie de símbolos es más aleatoria cuanto más compresible es. Si yo tengo la serie "TTTTTT" puedo comprimirla como "5-T". Como la serie es predecible, puedo comprimirla (uso el guión como separador).

Veamos la serie "T$·g2d". ¿Puedo comprimirla? No, sus cifras son impredecibles. Aunque el alfabeto de símbolos sólo consisiese en esos seis, no sabría comprimirla.

Ahora con números. Yo tengo el número "123123123123". Puedo comprimirla como "4-123". Según interpreto tu visión de la aleatoriedad, y suponiendo que 1, 2 y 3 fueran los únicos símbolos del alfabeto, cada número tiene una probabilidad del 33% de aparecer.

Otro número, en binario: 0010101110. No puedo comprimirlo, a menos que lo haga como "1-0010101110". Esta descripción del número es igual (o más) de larga que el número a comprimir. Sin embargo, dado que está en binario, cada número tiene la misma probabilidad de aparecer, un 50%. ¿Significa eso que este número es menos aleatorio que el anterior?

Vamos ahora con pi. Hay algoritmos para saber sus cifras, sí. Pero son más largos que el mismo pi.

Predicción, en este contexto, no significa ser capaz de calcular un número, sino ser capaz de hacerlo necesitando menos información de la que obtenemos. No sé si me explico.

Anónimo dijo...

Fe de erratas :P : donde dice "5-T" debería poner "6-T"

Esto de no poder editar mensajes, yo, un editador compulsivo... xD

El pesado de siempre dijo...

Ya no estoy de acuerdo conmigo mismo xD, los algoritmos no son más largos que pi. Si se pudieran editar mensajes te ahorraría leer tonterías. :)

Smaigol dijo...

Jejeje me parto al leer tus mensajes/intento de editarte :P.

Los algoritmos permiten hallar cifras de pi, la que yo quiera.Sin ir más lejos, usando series de Taylor, puedo minimizar el error para que sea menor que, digamos, 10^-4, por lo que al menos con seguridad hasta la tercera cifra decimal lo tenemos bien.Usando este procedimiento, podemos predecir los decimales de pi, que sin enbargo son aleatorios en el sentido que puse arriba.

Como dices, de todas formas, mi test no vale para asegurar al 100% la aleatoreidad de pi.No sé si en tu primer o tu segundo mensaje (ya llevamos 24 XD) pusiste un link en el que dice que para asegurarse habría que comprobar que las parejas desde 00 hasta 99, los tríos desde 000 hasta 999...etc también son aleatorios.De esta manera te evitas poder encontrarte con series tipo 123123123...como la que proponías.

Bueno, tengo que irme y he escrito esto a toda leche, así que espero que no haya ninguna cagada gorda.Un saludo.

Tesseract dijo...

Me he quedado extrañado con lo paradójico que es que en pi haya tanta información (todo lo que teclea el mono) y tan poca a la vez (es muy compresible). Y justo Tio Petros habla del tema.

Y como dato friki simpático me he encontrado esto. :P

Smaigol dijo...

Muy guapo el articulo de tito Petros. Estoy pensando en buscar la frase "Yo soy el camino, la verdad y la vida", a ver si hay suerte y me convierto en el nuevo profeta :P.

Tesseract dijo...

Me había prometido a mí mismo no darte más la brasa, pero bueno, es que tenemos un bug. En la línea

For[k = 1, k < p, k++,

estamos cometiendo un error, debería ser k=0, sino siempre se cuenta una cifra de menos. Comprúebalo por ejemplo contando los resultados del caso p=10, sólo se han contado 9 decimales. En cualquier caso no afecta en absoluto al tema de la aleatoriedad contar un decimal menos de los prometidos, pero yo es que estoy algo majara por los excesos cometidos en mi juventud.

Esto lo he descubierto porque para practicar con el Mathematica me he puesto a mejorar el programita, que por cierto ya va algo más rápido, pero no te pienso torturar con el tema. xD

Smaigol dijo...

Sipo, cierto, cada vez que hago un programa siempre meto un bug de esos tontos, no falla XDD.Gracias por avisarme ;).Y suerte con Mathematica! Habrás comprobado que la ayuda es cojonuda.

rmcantin dijo...

tesseract tiene razon. Esos experimentos no demuestran absolutamente nada. Existen test de aleatoriedad basada, como bien dice, en la "informacion" que tiene la cadena de simbolos. Una cadena totalmente aleatoria no tienen informarcion. Una medida tipica es la entropia aunque hay otras mucho mas eficientes a la hora de la verdad.

Por ejemplo, la cadena 1234567891234... pasaria todos tus test, los agrupes en pares, trios o lo que quieras, y no es para nada aleatoria.

A ver si nos informamos un poco mejor. Por cierto, te aconsejo que huyas de Mathematica para calculo numerico, su punto fuerte es el simbolico. Fuera de ahi es horrible.

Tesseract dijo...

Me imagino que la cadena 1234567891234 no pasaría un test en el que las cifras estuviesen agrupadas en grupos de nueve. Y Smaigol ya ha dicho que estos tests no son una prueba definitiva de la aleatoriedad de un número.

El Mathematica, pues no es la panacea universal, pero para las matemáticas que yo necesito me sirve. Echo de muchísimo de menos más potencia a la hora de programar, pero recuerdo que con las modificaciones que había hecho al programita que hay aquí contaba 100000 decimales de pi en alrededor de un segundo, tampoco lo llamaría horrible. Para cálculo numérico avanzado no sé, pero para contar es mejor que los dedos. :P

Y bueno, no sé a qué viene ese comentario chulesco de "a ver si nos informamos un poco mejor". Alla tú con el tono que empleas.

Smaigol dijo...

Últimamente tengo algo descuidado el blog, así que no sé de cuando es el mensaje de rmcantin, pero tiene razón en una cosa; El artículo debería especificar que el test que realizo es necesario pero no suficiente para que pi sea irracional.Cierto que lo hemos mencionado un par de veces en los comentarios, pero el tipo promedio no va a leerselos por supuesto.Así que ahora me pondré a corregirlo.Sobre la cadena 123456789 ya te ha respondido Tesseract, y sobre el tono...mientras la cosa no se pase de la raya no me molesta, aunque ciertamente rmcantin no haces agradable el leerte.

Smaigol dijo...

Mierda, con la historia esta de la versión beta de blogger no me deja retocar el artículo :@.Dice que eventualmente podré hacerlo, y como no es plan montar toda una cuenta nueva para esto, esperaremos un poco.

Tesseract dijo...

Pues yo tampoco sé exactamente de cuándo es el mensaje, yo le respondí hace un par de días o así.

Por cierto, he rescatado mi programita de las profundidades de mi disco duro, lo dejo por aquí por si alguien necesita contar millones de decimales de algún número xD:

p = 100000;
n = FractionalPart[N[Pi, p + 1]];
contadores = Table[0, {10}];
tamañotrozo = 3000;
diezeletamtroz = 10^tamañotrozo;
numerotrozos = Floor[p/tamañotrozo];
cuenta [maximo_] := Module[{},
For[k = 0, k < maximo, k++,
cuentame = cuentame*10;
ent = IntegerPart[cuentame];
contadores[[ent + 1]]++;
cuentame = cuentame - ent;]];
For[i = 0, i < numerotrozos, i++,
cuentame = N[n, tamañotrozo + 1];
n = FractionalPart[n*diezeletamtroz];
cuenta[tamañotrozo]];
cuentame = n;
cuenta[Mod[p, tamañotrozo]];
contadores = Append[contadores, contadores[[1]]];
contadores = Delete[contadores, 1];
<< Graphics`
BarChart[contadores];
For[a = 1, a < 11, a++,
Print[contadores[[a]]];]

rmcantin dijo...

Juraria que hace tiempo respondi con otro comentario, pero no esta. Estos de blogger... ;)

Bueno, pues me repito. Antes de nada, perdon por el tono. Pense que esto era cosa de Nesimo, que es compañero en algunos foros y me conoce de sobras. Lo que vosotros entendisteis como un tono amenazante, era en realidad de broma.

Despues de aclarado esto, decir que teneis razon sobre la cadena. Realmente lo hice en plan rapido. Pero siempre se puede construir una cadena que pase el test, por ejemplo... 01234567890011223344 y asi consecutivamente con todas las permutaciones posibles. Si, es retorcido, pero existe y no es unico. De hecho, existen infinitos con esas propiedades :D

Hay muchos test para medir la aleatoriedad en secuencias, y no solo de numeros. Por ejemplo, podeis pasar un test de entropia. O montar una cadena de markov y ver que es totalmente conexa, etc.

De hecho, una cadena finita, por definicion, no sera totalmente aleatoria, lo unico que se puede asegurar es que "se aproxima" a ser aleatoria. Y como no podemos pasar un test a los infinitos decimales de pi (es lo que tiene no vivir eternamente), pues realmente no hay un test que nos garantice esa aleatoriedad totalmente.

Smaigol dijo...

Ok, todo aclarado ;).Hace tiempo que actualicé el artículo para reflejar lo que comentas.Gracias por la aportación :).

david dijo...

rmcantin se me ha adelantado, pero claro, llego por aquí tardísimo v_v

En cualquier caso estáis mezclando conceptos de manera salvaje, y trabajando de más. ¿Estás calculando, , los dígitos de Pi? Si quieres hacer trabajos estadísticos sobre él, puedes ahorrarte esa labor que tiene poco de matemática; Al final de la página sobre Pi de la Wikipedia, http://en.wikipedia.org/wiki/Pi tienes links que te llevan a sitios donde tienen Pi con millones de decimales. Y hace un par de años, buscando poco más, encontré sitios donde podías bajarte Pi con mil millones de decimales y mucha paciencia (era un giga de información, al fin y al cabo). Creo que es más que suficiente para hacer tu análisis estadístico.

Ese análisis estadístico, de todas formas, no es concluyente. Análisis de ese tipo sólo pueden hacerse para cierto margen de confianza: No puedes afirmar sin más que a ojo parece que las frecuencias se hacen iguales, si no quieres que mis profesores de estadística vayan a sacarte los ojos y a mearte en las cuencas.

Sobre el uso que le dais a la palabra "aleatorio", bueno, decir que se me revuelven las tripas cada vez que lo escucho y mi demonio lógico me dice ¿¡pero cómo van a ser aleatorios los decimales de un número que sabes calcular!?, pero como sé que no estáis hablando de eso intento no ponerme muy quisquilloso al respecto. De todas formas la forma lógica de decir la hipótesis sería no afirmar simplemente que los dígitos del Pi son aleatorios, sino que la distribución de series de dígitos de Pi elegidos al azar sería aleatoria. Como esto es un nombre bastante largo y los matemáticos somos bichos perezosos, a eso se lo abrevia definiendo un número normal como un número al que le pasa eso y dejándolo en "¿Es Pi normal?". A día de hoy, no está probado ni siquiera para el sistema de base 10.

A Tesseract decirle que no es paradójico que en Pi haya tanta información: De hecho se va más allá; creo que es un corolario de la conjetura anterior, Pi podría contener CUALQUIER cadena de números. Está el ejemplo de cualquier libro escrito, que en teoría (y si la conjetura fuese cierta) podríamos encontrar siempre codificado de cualquier manera que qusiésemos a partir de cierto decimal. Lo gracioso es que también podríamos encontrar cualquier libro no escrito, como no sé, una biblia con los mandamientos al revés, o cosas más pintorescas como un trozo que si cortásemos y pegásemos como unos y ceros sería la imagen de un DVD en el que saliese, digamos, Scarlett Johansson haciéndome guarrerías.

Sobre lo de estudiar la aleatoriedad de una serie en función de lo compresible que sea, no me convence mucho la idea, por ejemplo el número 0'01001000100001000001... tendría una representación infinita pero es de lo más predecible y para nada normal ni siquiera sobre sus dos únicos dígitos. El problema, de todas formas, es que todos los ejemplos que pones de números "comprimidos" los haces con números de tamaño finito, y las conclusiones no son extrapolables a números de infinitos decimales.

Lo de que los algoritmos para determinar las cifras de Pi son más largos que Pi es directamente absurdo: Pi es infinamente largo, y los programas que lo calculan obviamente no, luego es falso. Vale, lo has dicho más abajo, pero por si las moscas.

Lo de calcular el número necesitando menos información de la que se obtiene yo, personalmente, no, no lo entiendo: Cualquier método de calcular decimales de Pi da, eventualmente, información infinita (todos los dígitos de Pi, claro), pero ninguno necesita un "input" infinito. Si no vaya gracia que tendrían los métodos.

Nick dijo...

Hola, este campo de las matematicas me interesa mucho, pero tengo una pregunta : ¿en vez de usar todo el tiempo que usan en ver los infinitos decimales de pi, no seria mejor investigar otro campo que nos pudiese ser de mas ayuda?

Smaigol dijo...

Hola! lo primero, gracias por la aportacion David.Vayamos por partes.

Primero, yo no intento calcular los decimales de pi.Asumo que Mathematica tiene guardados en la memoria los suficientes como para que yo no tenga que preocuparme de eso.El problema que teniamos con el programa es que al no truncarlos el tiempo de ejecucion crecia enormemente.

Segundo, diles a tus profes de estadistica que tengo una escopeta y un atizador candente para meterles por el culo en caso de que se acerquen a mi casa xD.Creo que ya se ha comentado arriba que el analisis como dices no es concluyente.Sin embargo, podrias ller la entrada y los comentarios antes de criticar algo que ya se ha comentado, no?

Tercero, lo de la aleatoreidad.No sé donde me explicaron que no es correcto llamarles aleatorios sino "pseudoaleatorios", por lo que comentas.Pero todo esto fue hace casi un año y lamentablemente el proyecto esta un poco abandonado (se suponia que este era un blog de equipo y solo posteaba yo) con lo cual no me molesté en actualizar.

En cuanto a lo demás que dices, son o apreciaciones personales o valoraciones que no son una critica a la entrada.Por tanto ahi no opino.

Un saludo.

P.S: Nick, no estamos calculando los infinitos decimales de pi, solo si se distribuyen de manera pseudoaleatoria, es decir, si tomando un decimal de pi al azar la probabilidad de que sea cada uno de los digitos del 0 al 9 es 0.1.Y bueno, sin duda hay cosas mas productivas que hacer, pero precisamente por eso se lo llama "pasatiempo" xD.

Kabrius dijo...

Pi con 16000 decimales:
(n : m )(n=decimales de pi, m=número de decimales que lleva)
Pi = 3.
1415926535 8979323846 2643383279 5028841971 6939937510 : 50
5820974944 5923078164 0628620899 8628034825 3421170679 : 100
8214808651 3282306647 0938446095 5058223172 5359408128 : 150
4811174502 8410270193 8521105559 6446229489 5493038196 : 200
4428810975 6659334461 2847564823 3786783165 2712019091 : 250
4564856692 3460348610 4543266482 1339360726 0249141273 : 300
7245870066 0631558817 4881520920 9628292540 9171536436 : 350
7892590360 0113305305 4882046652 1384146951 9415116094 : 400
3305727036 5759591953 0921861173 8193261179 3105118548 : 450
0744623799 6274956735 1885752724 8912279381 8301194912 : 500
9833673362 4406566430 8602139494 6395224737 1907021798 : 550
6094370277 0539217176 2931767523 8467481846 7669405132 : 600
0005681271 4526356082 7785771342 7577896091 7363717872 : 650
1468440901 2249534301 4654958537 1050792279 6892589235 : 700
4201995611 2129021960 8640344181 5981362977 4771309960 : 750
5187072113 4999999837 2978049951 0597317328 1609631859 : 800
5024459455 3469083026 4252230825 3344685035 2619311881 : 850
7101000313 7838752886 5875332083 8142061717 7669147303 : 900
5982534904 2875546873 1159562863 8823537875 9375195778 : 950
1857780532 1712268066 1300192787 6611195909 2164201989 : 1000
3809525720 1065485863 2788659361 5338182796 8230301952 : 1050
0353018529 6899577362 2599413891 2497217752 8347913151 : 1100
5574857242 4541506959 5082953311 6861727855 8890750983 : 1150
8175463746 4939319255 0604009277 0167113900 9848824012 : 1200
8583616035 6370766010 4710181942 9555961989 4676783744 : 1250
9448255379 7747268471 0404753464 6208046684 2590694912 : 1300
9331367702 8989152104 7521620569 6602405803 8150193511 : 1350
2533824300 3558764024 7496473263 9141992726 0426992279 : 1400
6782354781 6360093417 2164121992 4586315030 2861829745 : 1450
5570674983 8505494588 5869269956 9092721079 7509302955 : 1500
3211653449 8720275596 0236480665 4991198818 3479775356 : 1550
6369807426 5425278625 5181841757 4672890977 7727938000 : 1600
8164706001 6145249192 1732172147 7235014144 1973568548 : 1650
1613611573 5255213347 5741849468 4385233239 0739414333 : 1700
4547762416 8625189835 6948556209 9219222184 2725502542 : 1750
5688767179 0494601653 4668049886 2723279178 6085784383 : 1800
8279679766 8145410095 3883786360 9506800642 2512520511 : 1850
7392984896 0841284886 2694560424 1965285022 2106611863 : 1900
0674427862 2039194945 0471237137 8696095636 4371917287 : 1950
4677646575 7396241389 0865832645 9958133904 7802759009 : 2000
9465764078 9512694683 9835259570 9825822620 5224894077 : 2050
2671947826 8482601476 9909026401 3639443745 5305068203 : 2100
4962524517 4939965143 1429809190 6592509372 2169646151 : 2150
5709858387 4105978859 5977297549 8930161753 9284681382 : 2200
6868386894 2774155991 8559252459 5395943104 9972524680 : 2250
8459872736 4469584865 3836736222 6260991246 0805124388 : 2300
4390451244 1365497627 8079771569 1435997700 1296160894 : 2350
4169486855 5848406353 4220722258 2848864815 8456028506 : 2400
0168427394 5226746767 8895252138 5225499546 6672782398 : 2450
6456596116 3548862305 7745649803 5593634568 1743241125 : 2500
1507606947 9451096596 0940252288 7971089314 5669136867 : 2550
2287489405 6010150330 8617928680 9208747609 1782493858 : 2600
9009714909 6759852613 6554978189 3129784821 6829989487 : 2650
2265880485 7564014270 4775551323 7964145152 3746234364 : 2700
5428584447 9526586782 1051141354 7357395231 1342716610 : 2750
2135969536 2314429524 8493718711 0145765403 5902799344 : 2800
0374200731 0578539062 1983874478 0847848968 3321445713 : 2850
8687519435 0643021845 3191048481 0053706146 8067491927 : 2900
8191197939 9520614196 6342875444 0643745123 7181921799 : 2950
9839101591 9561814675 1426912397 4894090718 6494231961 : 3000
5679452080 9514655022 5231603881 9301420937 6213785595 : 3050
6638937787 0830390697 9207734672 2182562599 6615014215 : 3100
0306803844 7734549202 6054146659 2520149744 2850732518 : 3150
6660021324 3408819071 0486331734 6496514539 0579626856 : 3200
1005508106 6587969981 6357473638 4052571459 1028970641 : 3250
4011097120 6280439039 7595156771 5770042033 7869936007 : 3300
2305587631 7635942187 3125147120 5329281918 2618612586 : 3350
7321579198 4148488291 6447060957 5270695722 0917567116 : 3400
7229109816 9091528017 3506712748 5832228718 3520935396 : 3450
5725121083 5791513698 8209144421 0067510334 6711031412 : 3500
6711136990 8658516398 3150197016 5151168517 1437657618 : 3550
3515565088 4909989859 9823873455 2833163550 7647918535 : 3600
8932261854 8963213293 3089857064 2046752590 7091548141 : 3650
6549859461 6371802709 8199430992 4488957571 2828905923 : 3700
2332609729 9712084433 5732654893 8239119325 9746366730 : 3750
5836041428 1388303203 8249037589 8524374417 0291327656 : 3800
1809377344 4030707469 2112019130 2033038019 7621101100 : 3850
4492932151 6084244485 9637669838 9522868478 3123552658 : 3900
2131449576 8572624334 4189303968 6426243410 7732269780 : 3950
2807318915 4411010446 8232527162 0105265227 2111660396 : 4000
6655730925 4711055785 3763466820 6531098965 2691862056 : 4050
4769312570 5863566201 8558100729 3606598764 8611791045 : 4100
3348850346 1136576867 5324944166 8039626579 7877185560 : 4150
8455296541 2665408530 6143444318 5867697514 5661406800 : 4200
7002378776 5913440171 2749470420 5622305389 9456131407 : 4250
1127000407 8547332699 3908145466 4645880797 2708266830 : 4300
6343285878 5698305235 8089330657 5740679545 7163775254 : 4350
2021149557 6158140025 0126228594 1302164715 5097925923 : 4400
0990796547 3761255176 5675135751 7829666454 7791745011 : 4450
2996148903 0463994713 2962107340 4375189573 5961458901 : 4500
9389713111 7904297828 5647503203 1986915140 2870808599 : 4550
0480109412 1472213179 4764777262 2414254854 5403321571 : 4600
8530614228 8137585043 0633217518 2979866223 7172159160 : 4650
7716692547 4873898665 4949450114 6540628433 6639379003 : 4700
9769265672 1463853067 3609657120 9180763832 7166416274 : 4750
8888007869 2560290228 4721040317 2118608204 1900042296 : 4800
6171196377 9213375751 1495950156 6049631862 9472654736 : 4850
4252308177 0367515906 7350235072 8354056704 0386743513 : 4900
6222247715 8915049530 9844489333 0963408780 7693259939 : 4950
7805419341 4473774418 4263129860 8099888687 4132604721 : 5000
5695162396 5864573021 6315981931 9516735381 2974167729 : 5050
4786724229 2465436680 0980676928 2382806899 6400482435 : 5100
4037014163 1496589794 0924323789 6907069779 4223625082 : 5150
2168895738 3798623001 5937764716 5122893578 6015881617 : 5200
5578297352 3344604281 5126272037 3431465319 7777416031 : 5250
9906655418 7639792933 4419521541 3418994854 4473456738 : 5300
3162499341 9131814809 2777710386 3877343177 2075456545 : 5350
3220777092 1201905166 0962804909 2636019759 8828161332 : 5400
3166636528 6193266863 3606273567 6303544776 2803504507 : 5450
7723554710 5859548702 7908143562 4014517180 6246436267 : 5500
9456127531 8134078330 3362542327 8394497538 2437205835 : 5550
3114771199 2606381334 6776879695 9703098339 1307710987 : 5600
0408591337 4641442822 7726346594 7047458784 7787201927 : 5650
7152807317 6790770715 7213444730 6057007334 9243693113 : 5700
8350493163 1284042512 1925651798 0694113528 0131470130 : 5750
4781643788 5185290928 5452011658 3934196562 1349143415 : 5800
9562586586 5570552690 4965209858 0338507224 2648293972 : 5850
8584783163 0577775606 8887644624 8246857926 0395352773 : 5900
4803048029 0058760758 2510474709 1643961362 6760449256 : 5950
2742042083 2085661190 6254543372 1315359584 5068772460 : 6000
2901618766 7952406163 4252257719 5429162991 9306455377 : 6050
9914037340 4328752628 8896399587 9475729174 6426357455 : 6100
2540790914 5135711136 9410911939 3251910760 2082520261 : 6150
8798531887 7058429725 9167781314 9699009019 2116971737 : 6200
2784768472 6860849003 3770242429 1651300500 5168323364 : 6250
3503895170 2989392233 4517220138 1280696501 1784408745 : 6300
1960121228 5993716231 3017114448 4640903890 6449544400 : 6350
6198690754 8516026327 5052983491 8740786680 8818338510 : 6400
2283345085 0486082503 9302133219 7155184306 3545500766 : 6450
8282949304 1377655279 3975175461 3953984683 3936383047 : 6500
4611996653 8581538420 5685338621 8672523340 2830871123 : 6550
2827892125 0771262946 3229563989 8989358211 6745627010 : 6600
2183564622 0134967151 8819097303 8119800497 3407239610 : 6650
3685406643 1939509790 1906996395 5245300545 0580685501 : 6700
9567302292 1913933918 5680344903 9820595510 0226353536 : 6750
1920419947 4553859381 0234395544 9597783779 0237421617 : 6800
2711172364 3435439478 2218185286 2408514006 6604433258 : 6850
8856986705 4315470696 5747458550 3323233421 0730154594 : 6900
0516553790 6866273337 9958511562 5784322988 2737231989 : 6950
8757141595 7811196358 3300594087 3068121602 8764962867 : 7000
4460477464 9159950549 7374256269 0104903778 1986835938 : 7050
1465741268 0492564879 8556145372 3478673303 9046883834 : 7100
3634655379 4986419270 5638729317 4872332083 7601123029 : 7150
9113679386 2708943879 9362016295 1541337142 4892830722 : 7200
0126901475 4668476535 7616477379 4675200490 7571555278 : 7250
1965362132 3926406160 1363581559 0742202020 3187277605 : 7300
2772190055 6148425551 8792530343 5139844253 2234157623 : 7350
3610642506 3904975008 6562710953 5919465897 5141310348 : 7400
2276930624 7435363256 9160781547 8181152843 6679570611 : 7450
0861533150 4452127473 9245449454 2368288606 1340841486 : 7500
3776700961 2071512491 4043027253 8607648236 3414334623 : 7550
5189757664 5216413767 9690314950 1910857598 4423919862 : 7600
9164219399 4907236234 6468441173 9403265918 4044378051 : 7650
3338945257 4239950829 6591228508 5558215725 0310712570 : 7700
1266830240 2929525220 1187267675 6220415420 5161841634 : 7750
8475651699 9811614101 0029960783 8690929160 3028840026 : 7800
9104140792 8862150784 2451670908 7000699282 1206604183 : 7850
7180653556 7252532567 5328612910 4248776182 5829765157 : 7900
9598470356 2226293486 0034158722 9805349896 5022629174 : 7950
8788202734 2092222453 3985626476 6914905562 8425039127 : 8000
5771028402 7998066365 8254889264 8802545661 0172967026 : 8050
6407655904 2909945681 5065265305 3718294127 0336931378 : 8100
5178609040 7086671149 6558343434 7693385781 7113864558 : 8150
7367812301 4587687126 6034891390 9562009939 3610310291 : 8200
6161528813 8437909904 2317473363 9480457593 1493140529 : 8250
7634757481 1935670911 0137751721 0080315590 2485309066 : 8300
9203767192 2033229094 3346768514 2214477379 3937517034 : 8350
4366199104 0337511173 5471918550 4644902636 5512816228 : 8400
8244625759 1633303910 7225383742 1821408835 0865739177 : 8450
1509682887 4782656995 9957449066 1758344137 5223970968 : 8500
3408005355 9849175417 3818839994 4697486762 6551658276 : 8550
5848358845 3142775687 9002909517 0283529716 3445621296 : 8600
4043523117 6006651012 4120065975 5851276178 5838292041 : 8650
9748442360 8007193045 7618932349 2292796501 9875187212 : 8700
7267507981 2554709589 0455635792 1221033346 6974992356 : 8750
3025494780 2490114195 2123828153 0911407907 3860251522 : 8800
7429958180 7247162591 6685451333 1239480494 7079119153 : 8850
2673430282 4418604142 6363954800 0448002670 4962482017 : 8900
9289647669 7583183271 3142517029 6923488962 7668440323 : 8950
2609275249 6035799646 9256504936 8183609003 2380929345 : 9000
9588970695 3653494060 3402166544 3755890045 6328822505 : 9050
4525564056 4482465151 8754711962 1844396582 5337543885 : 9100
6909411303 1509526179 3780029741 2076651479 3942590298 : 9150
9695946995 5657612186 5619673378 6236256125 2163208628 : 9200
6922210327 4889218654 3648022967 8070576561 5144632046 : 9250
9279068212 0738837781 4233562823 6089632080 6822246801 : 9300
2248261177 1858963814 0918390367 3672220888 3215137556 : 9350
0037279839 4004152970 0287830766 7094447456 0134556417 : 9400
2543709069 7939612257 1429894671 5435784687 8861444581 : 9450
2314593571 9849225284 7160504922 1242470141 2147805734 : 9500
5510500801 9086996033 0276347870 8108175450 1193071412 : 9550
2339086639 3833952942 5786905076 4310063835 1983438934 : 9600
1596131854 3475464955 6978103829 3097164651 4384070070 : 9650
7360411237 3599843452 2516105070 2705623526 6012764848 : 9700
3084076118 3013052793 2054274628 6540360367 4532865105 : 9750
7065874882 2569815793 6789766974 2205750596 8344086973 : 9800
5020141020 6723585020 0724522563 2651341055 9240190274 : 9850
2162484391 4035998953 5394590944 0704691209 1409387001 : 9900
2645600162 3742880210 9276457931 0657922955 2498872758 : 9950
4610126483 6999892256 9596881592 0560010165 5256375678 : 10000
5667227966 1988578279 4848855834 3975187445 4551296563 : 10050
4434803966 4205579829 3680435220 2770984294 2325330225 : 10100
7634180703 9476994159 7915945300 6975214829 3366555661 : 10150
5678736400 5366656416 5473217043 9035213295 4352916941 : 10200
4599041608 7532018683 7937023488 8689479151 0716378529 : 10250
0234529244 0773659495 6305100742 1087142613 4974595615 : 10300
1384987137 5704710178 7957310422 9690666702 1449863746 : 10350
4595280824 3694457897 7233004876 4765241339 0759204340 : 10400
1963403911 4732023380 7150952220 1068256342 7471646024 : 10450
3354400515 2126693249 3419673977 0415956837 5355516673 : 10500
0273900749 7297363549 6453328886 9844061196 4961627734 : 10550
4951827369 5588220757 3551766515 8985519098 6665393549 : 10600
4810688732 0685990754 0792342402 3009259007 0173196036 : 10650
2254756478 9406475483 4664776041 1463233905 6513433068 : 10700
4495397907 0903023460 4614709616 9688688501 4083470405 : 10750
4607429586 9913829668 2468185710 3188790652 8703665083 : 10800
2431974404 7718556789 3482308943 1068287027 2280973624 : 10850
8093996270 6074726455 3992539944 2808113736 9433887294 : 10900
0630792615 9599546262 4629707062 5948455690 3471197299 : 10950
6409089418 0595343932 5123623550 8134949004 3642785271 : 11000
3831591256 8989295196 4272875739 4691427253 4366941532 : 11050
3610045373 0488198551 7065941217 3524625895 4873016760 : 11100
0298865925 7866285612 4966552353 3829428785 4253404830 : 11150
8330701653 7228563559 1525347844 5981831341 1290019992 : 11200
0598135220 5117336585 6407826484 9427644113 7639386692 : 11250
4803118364 4536985891 7544264739 9882284621 8449008777 : 11300
6977631279 5722672655 5625962825 4276531830 0134070922 : 11350
3343657791 6012809317 9401718598 5999338492 3549564005 : 11400
7099558561 1349802524 9906698423 3017350358 0440811685 : 11450
5265311709 9570899427 3287092584 8789443646 0050410892 : 11500
2669178352 5870785951 2983441729 5351953788 5534573742 : 11550
6085902908 1765155780 3905946408 7350612322 6112009373 : 11600
1080485485 2635722825 7682034160 5048466277 5045003126 : 11650
2008007998 0492548534 6941469775 1649327095 0493463938 : 11700
2432227188 5159740547 0214828971 1177792376 1225788734 : 11750
7718819682 5462981268 6858170507 4027255026 3329044976 : 11800
2778944236 2167411918 6269439650 6715157795 8675648239 : 11850
9391760426 0176338704 5499017614 3641204692 1823707648 : 11900
8783419689 6861181558 1587360629 3860381017 1215855272 : 11950
6683008238 3404656475 8804051380 8016336388 7421637140 : 12000
6435495561 8689641122 8214075330 2655100424 1048967835 : 12050
2858829024 3670904887 1181909094 9453314421 8287661810 : 12100
3100735477 0549815968 0772009474 6961343609 2861484941 : 12150
7850171807 7930681085 4690009445 8995279424 3981392135 : 12200
0558642219 6483491512 6390128038 3200109773 8680662877 : 12250
9239718014 6134324457 2640097374 2570073592 1003154150 : 12300
8936793008 1699805365 2027600727 7496745840 0283624053 : 12350
4603726341 6554259027 6018348403 0681138185 5105979705 : 12400
6640075094 2608788573 5796037324 5141467867 0368809880 : 12450
6097164258 4975951380 6930944940 1515422221 9432913021 : 12500
7391253835 5915031003 3303251117 4915696917 4502714943 : 12550
3151558854 0392216409 7229101129 0355218157 6282328318 : 12600
2342548326 1119128009 2825256190 2052630163 9114772473 : 12650
3148573910 7775874425 3876117465 7867116941 4776421441 : 12700
1112635835 5387136101 1023267987 7564102468 2403226483 : 12750
4641766369 8066378576 8134920453 0224081972 7856471983 : 12800
9630878154 3221166912 2464159117 7673225326 4335686146 : 12850
1865452226 8126887268 4459684424 1610785401 6768142080 : 12900
8850280054 1436131462 3082102594 1737562389 9420757136 : 12950
2751674573 1891894562 8352570441 3354375857 5342698699 : 13000
4725470316 5661399199 9682628247 2706413362 2217892390 : 13050
3176085428 9437339356 1889165125 0424404008 9527198378 : 13100
7386480584 7268954624 3882343751 7885201439 5600571048 : 13150
1194988423 9060613695 7342315590 7967034614 9143447886 : 13200
3604103182 3507365027 7859089757 8272731305 0488939890 : 13250
0992391350 3373250855 9826558670 8924261242 9473670193 : 13300
9077271307 0686917092 6462548423 2407485503 6608013604 : 13350
6689511840 0936686095 4632500214 5852930950 0009071510 : 13400
5823626729 3264537382 1049387249 9669933942 4685516483 : 13450
2611341461 1068026744 6637334375 3407642940 2668297386 : 13500
5220935701 6263846485 2851490362 9320199199 6882851718 : 13550
3953669134 5222444708 0459239660 2817156551 5656661113 : 13600
5982311225 0628905854 9145097157 5539002439 3153519090 : 13650
2107119457 3002438801 7661503527 0862602537 8817975194 : 13700
7806101371 5004489917 2100222013 3501310601 6391541589 : 13750
5780371177 9277522597 8742891917 9155224171 8958536168 : 13800
0594741234 1933984202 1874564925 6443462392 5319531351 : 13850
0331147639 4911995072 8584306583 6193536932 9699289837 : 13900
9149419394 0608572486 3968836903 2655643642 1664425760 : 13950
7914710869 9843157337 4964883529 2769328220 7629472823 : 14000
8153740996 1545598798 2598910937 1712621828 3025848112 : 14050
3890119682 2142945766 7580718653 8065064870 2613389282 : 14100
2994972574 5303328389 6381843944 7707794022 8435988341 : 14150
0035838542 3897354243 9564755568 4095224844 5541392394 : 14200
1000162076 9363684677 6413017819 6593799715 5746854194 : 14250
6334893748 4391297423 9143365936 0410035234 3777065888 : 14300
6778113949 8616478747 1407932638 5873862473 2889645643 : 14350
5987746676 3847946650 4074111825 6583788784 5485814896 : 14400
2961273998 4134427260 8606187245 5452360643 1537101127 : 14450
4680977870 4464094758 2803487697 5894832824 1239292960 : 14500
5829486191 9667091895 8089833201 2103184303 4012849511 : 14550
6203534280 1441276172 8583024355 9830032042 0245120728 : 14600
7253558119 5840149180 9692533950 7577840006 7465526031 : 14650
4461670508 2768277222 3534191102 6341631571 4740612385 : 14700
0425845988 4199076112 8725805911 3935689601 4316682831 : 14750
7632356732 5417073420 8173322304 6298799280 4908514094 : 14800
7903688786 8789493054 6955703072 6190095020 7643349335 : 14850
9106024545 0864536289 3545686295 8531315337 1838682656 : 14900
1786227363 7169757741 8302398600 6591481616 4049449650 : 14950
1173213138 9574706208 8474802365 3710311508 9842799275 : 15000
4426853277 9743113951 4357417221 9759799359 6852522857 : 15050
4526379628 9612691572 3579866205 7340837576 6873884266 : 15100
4059909935 0500081337 5432454635 9675048442 3528487470 : 15150
1443545419 5762584735 6421619813 4073468541 1176688311 : 15200
8654489377 6979566517 2796623267 1481033864 3913751865 : 15250
9467300244 3450054499 5399742372 3287124948 3470604406 : 15300
3471606325 8306498297 9551010954 1836235030 3094530973 : 15350
3583446283 9476304775 6450150085 0757894954 8931393944 : 15400
8992161255 2559770143 6858943585 8775263796 2559708167 : 15450
7643800125 4365023714 1278346792 6101995585 2247172201 : 15500
7772370041 7808419423 9487254068 0155603599 8390548985 : 15550
7235467456 4239058585 0216719031 3952629445 5439131663 : 15600
1345308939 0620467843 8778505423 9390524731 3620129476 : 15650
9187497519 1011472315 2893267725 3391814660 7300089027 : 15700
7689631148 1090220972 4520759167 2970078505 8071718638 : 15750
1054967973 1001678708 5069420709 2232908070 3832634534 : 15800
5203802786 0990556900 1341371823 6837099194 9516489600 : 15850
7550493412 6787643674 6384902063 9640197666 8559233565 : 15900
4639138363 1857456981 4719621084 1080961884 6054560390 : 15950
3845534372 9141446513 4749407848 8442377217 5154334260 : 16000

Kabrius dijo...

PI

niko dijo...

vale me ayudaste pa una tarea

Carlos dijo...

Muy interesante el tema, me encantaría escribir cosas por el estilo en mi blog, estoy aquí de paso por si alguien le interesa saber sobre programacion de la calculadora CASIO fx 7400G PLUS

LOS TONTOS SON LOS MATEMÁTICOS dijo...

Contrástese la editorial de http://boletinmatematico.ual.es/boletines/Vol2_1.pdf con http://primatematica.blogspot.com

AnibalRealMadrid dijo...

Buenas. No sé si alguien ya lo habrá dicho pero acá hay una página donde puedes encontrar cualquier combinación de números que quieras en los primeros 200 millones de decimales de Pi.
Saludos.

http://www.angio.net/pi/piquery

Anónimo dijo...

a todas esas personas amantes de las matematicas interesadas no olviden de visitan http://www.icm.espol.edu.ec encontraras lo bello de las matematicas

samuel dijo...

Saludos a todos los invito a qeu revisen la pagina web del Instituto de Ciencias Matematicas de la Escuela Superior Politecnica del Litoral en Guayaquil, Ecuador.

Enlace: Instituto de Ciencias Matematicas

Anónimo dijo...

SMAIGOL!! me gustaria mucho contactarme con vos!! necesito tu ayhuda para un trabajo del colegio!! tienes una direccion de e-mail o algo??

Fly me to the moon dijo...

hola: solo queria agradecerte porque el codigo de tus graficos me sirvio para ir viendo como se usan las funciones en el mathematica :)
Exitos

Juan Romero dijo...

muy interesante este blog, de verdad :). Yo soy estudiante y estoy llevando un blog de ciencias, quien lo quiera ver: http://elrincondelquark.blogspot.com

Espero que sigais asi :)

Anónimo dijo...

hola a mi nena le dejaron investigar y copiar 24mil numeros del pi decimales ya he buscado y aqui encontre 16000 alguna idea para encontrar el resto porfavor, no se mucho de matematicas jeje, les agradezco de antemano su asesoria gracias!!!!!!!!!!!!!