stringtranslate.com

Algoritmo de Chudnovsky

El algoritmo de Chudnovsky es un método rápido para calcular los dígitos de π , basado en las fórmulas de π de Ramanujan . Publicado por los hermanos Chudnovsky en 1988, [1] se utilizó para calcular π hasta mil millones de decimales. [2]

Se utilizó en los cálculos de récord mundial de 2,7 billones de dígitos de π en diciembre de 2009, [3] 10 billones de dígitos en octubre de 2011, [4] [5] 22,4 billones de dígitos en noviembre de 2016, [6] 31,4 billones de dígitos en septiembre de 2018-enero de 2019, [7] 50 billones de dígitos el 29 de enero de 2020, [8] 62,8 billones de dígitos el 14 de agosto de 2021, [9] 100 billones de dígitos el 21 de marzo de 2022, [10] 105 billones de dígitos el 14 de marzo de 2024, [11] y 202 billones de dígitos el 28 de junio de 2024. [12]

Algoritmo

El algoritmo se basa en el número de Heegner negado , la función j y en la siguiente serie hipergeométrica generalizada rápidamente convergente : [13] Una prueba detallada de esta fórmula se puede encontrar aquí: [14]


Esta identidad es similar a algunas de las fórmulas de Ramanujan que involucran π , [13] y es un ejemplo de una serie de Ramanujan-Sato .

La complejidad temporal del algoritmo es . [15]

Optimizaciones

La técnica de optimización utilizada para los cálculos del récord mundial se llama división binaria . [16]

División binaria

Se puede sacar un factor de la suma y simplificarlo a


Sea , y sustituya eso en la suma.


se puede simplificar a , así que

de la definición original de , entonces

Esta definición de no está definida para , así que calcule el primer término de la suma y use la nueva definición de

Sea y , entonces

Dejar y

nunca se puede calcular, por lo tanto, en lugar de calcular y a medida que se aproxima , la aproximación mejorará.

De la definición original de ,

Calcular recursivamente las funciones

Considere un valor tal que

Caso base para la recursión

Considerar

Código Python

#Nota: Para cálculos extremos, se puede usar otro código para ejecutar en una GPU, que es mucho más rápido que esto.importar  decimaldefinición  binaria_split ( a ,  b ): si  b  ==  a  +  1 : Pab  =  - ( 6 * un  -  5 ) * ( 2 * un  -  1 ) * ( 6 * un  -  1 ) Qab  =  10939058860032000  *  a ** 3 Rab  =  Pab  *  ( 545140134 * a  +  13591409 ) demás : m  =  ( a  +  b )  //  2 Pam ,  Qam ,  Ram  =  división binaria ( a ,  m ) Pmb ,  Qmb ,  Rmb  =  división binaria ( m ,  b )  Pab  =  Pam  *  Pmb Qab  =  Qam  *  Qmb Rab  =  Qmb  *  Ram  +  Pam  *  Rmb volver  Pab ,  Qab ,  Rabdefinición  chudnovsky ( n ): """Algoritmo de Chudnovsky.""" P1n ,  Q1n ,  R1n  =  división binaria ( 1 ,  n ) devuelve  ( 426880  *  decimal.decimal ( 10005 ) .sqrt ( ) * Q1n ) / ( 13591409 * Q1n + R1n )      imprimir ( f "1 = { chudnovsky ( 2 ) } " )  # 3.141592653589793238462643384decimal . getcontext () . prec  =  100  # número de dígitos de precisión decimalpara  n  en  el rango ( 2 , 10 ): print ( f " { n } = { chudnovsky ( n ) } " )  # 3.14159265358979323846264338...

Notas

Véase también

Enlaces externos

Referencias

  1. ^ Chudnovsky, David; Chudnovsky, Gregory (1988), Aproximación y multiplicación compleja según Ramanujan , Ramanujan revisitado: actas de la conferencia del centenario
  2. ^ Warsi, Karl; Dangerfield, Jan; Farndon, John; Griffiths, Johny; Jackson, Tom; Patel, Mukul; Pope, Sue; Parker, Matt (2019). El libro de matemáticas: grandes ideas explicadas de forma sencilla . Nueva York: Dorling Kindersley Limited . pág. 65. ISBN. 978-1-4654-8024-8.
  3. ^ Baruah, Nayandeep Deka; Berndt, Bruce C.; Chan, Heng Huat (1 de agosto de 2009). "Serie de Ramanujan para 1/π: una encuesta". Mensual Matemático Estadounidense . 116 (7): 567–587. doi :10.4169/193009709X458555.
  4. ^ Yee, Alexander; Kondo, Shigeru (2011), 10 billones de dígitos de Pi: un estudio de caso de suma de series hipergeométricas con alta precisión en sistemas multinúcleo , Informe técnico, Departamento de Ciencias de la Computación, Universidad de Illinois, hdl :2142/28348
  5. ^ Aron, Jacob (14 de marzo de 2012), "Las constantes chocan en el día de Pi", New Scientist
  6. ^ "22,4 billones de dígitos de Pi". www.numberworld.org .
  7. ^ "Google Cloud rompe el récord de Pi". www.numberworld.org/ .
  8. ^ "El récord Pi regresa al ordenador personal". www.numberworld.org/ .
  9. ^ "Pi-Challenge - Weltrekordversuch der FH Graubünden - FH Graubünden". www.fhgr.ch. ​Consultado el 17 de agosto de 2021 .
  10. ^ "Cálculo de 100 billones de dígitos de pi en Google Cloud". cloud.google.com . Consultado el 10 de junio de 2022 .
  11. ^ Yee, Alexander J. (14 de marzo de 2024). "Avanzando hacia un nuevo récord de Pi de 105 billones de dígitos". NumberWorld.org . Consultado el 16 de marzo de 2024 .
  12. ^ Ranous, Jordan (28 de junio de 2024). "StorageReview Lab rompe el récord mundial de cálculo de Pi con más de 202 billones de dígitos". StorageReview.com . Consultado el 20 de julio de 2024 .
  13. ^ ab Baruah, Nayandeep Deka; Berndt, Bruce C.; Chan, Heng Huat (2009), "La serie de Ramanujan para 1/ π : una encuesta", American Mathematical Monthly , 116 (7): 567–587, doi :10.4169/193009709X458555, JSTOR  40391165, MR  2549375
  14. ^ Milla, Lorenz (2018), Una prueba detallada de la fórmula de Chudnovsky con medios de análisis complejo básico , arXiv : 1809.00533
  15. ^ "y-cruncher - Fórmulas". www.numberworld.org . Consultado el 25 de febrero de 2018 .
  16. ^ Brent, Richard P .; Zimmermann, Paul (2010). Aritmética informática moderna . Vol. 18. Cambridge University Press . doi :10.1017/CBO9780511921698. ISBN . 978-0-511-92169-8.