CyM98 << Las cifras de Pi >>

Lecciones anteriores:

Las cifras de e

 
Google
Web www.oma.org.ar


En esta lección vamos a calcular muchas cifras del número Pi, que es muy conocido y aparece por ejemplo como la relación entre la longitud y el diámetro de una circunferencia.(¿Para qué tantas cifras?)

Para poder calcular muchas cifras, es necesario utilizar métodos complicados. Así que la segunda mitad de esta lección es dificil de entender sin haber leido las lecciones anteriores.

El primer método conocido para calcular Pi con tanta precisión como uno quisiera fue propuesto por Arquímedes, y consiste en inscribir y circunscribir polígonos regulares en un círculo de radio 1. El perímetro del polígono inscripto es menor que la longitud de la circunferencia y el perímetro del circunscripto es mayor, así que esto nos permite encontrar una buenas cotas de Pi. Utilizando algunas propiedades geométricas se puede encontrar una formula que relaciona los lados del polígono inscripto de n lados con el de 2n lados. Con esta misma formula se pueden encontrar el lado del polígono de 4n lados y así sucesivamente. En cada paso la aproximación es mejor y siempre el perímetro de este polígono es menor que Pi. Para el polígono circunscripto se puede realizar un procedimiento análogo y obteniendo valores ligeramente mayores que Pi. El problema de este método es que se necesitan muchos pasos trabajando con mucha precisión para obtener Pi.

En los últimos siglos se desarrollaron otros métodos que permiten calcular Pi como una serie , o sea una suma infinita. La idea es que a medida que uno suma más y más términos el número se parece cada vez más a Pi.

Por ejemplo:

Pi = 4(1 - 1/3 + 1/5 - 1/7 + 1/9 -1/11 +1/13 ...)

Si sumamos sólo hasta el 1/13 queda

Print 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13)

Resultado = 3,283738

Si sumamos sólo hasta el 1/15 queda

Print 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15)

Resultado = 3,017071

Asi que 3,017 <= Pi <= 3,284

Para llegar a tener los dos primeros decimales correctos (3,14..) es necesario sumar alrededor de 150 términos (sugerencia: escribir un programa).

 

Hay varios métodos, incluso algunos que permiten calcular el valor de algunos dígitos sin conocer el valor de todos los anteriores. En esta lección vamos a utilizar uno que calcula las primeras cifras de una manera parecida a la que usamos para calcular las cifras de e

Para ello buscamos otra serie que da Pi, que se parezca a una escritura en base factorial:

Pi = 2*(1 +1/3 +(1*2)/(3*5) +(1*2*3)/(3*5*7) +(1*2*3*4)/(3*5*7*9) +... +(1*2*3*4*...*n)/(3*5*7*9*...*(2*n+1)) +... )

Estos factoriales formados sólo por impares se conocen como doble factorial (7!!=1*3*5*7)

De vuelta usamos un programa elemental y obtenemos

Print 2*(1 +1/3 +1*2/3/5 +1*2*3/3/5/7 +1*2*3*4/3/5/7/9 +1!*2*3*4*5/3/5/7/9/11 +1*2*3*4*5*6/3/5/7/9/11/13 ) 

Salida: 3,132157

Además esta es mejor ya que se necesitan muchos menos términos para que el error sea pequeño. Por ejemplo alcanza con 10 términos pera llegar al valor de 3,14 .

La diferencia respecto de la serie de e es que en realidad no esta en base factorial, porque los en los denominadores no están los números pares, pero es bastante parecida. Además las "cifras" son demasiado grandes, pero esto tampoco representa un problema serio aunque complica un poco el programa.

Para obtener más cifras escribimos un programa parecido al de la lección anterior, donde sumamos sólo los primeros términos. En un primer momento, se puede tratar de reemplazar el 1 que aparece en e por el numerador de las fracciones:

' Defino algunas constantes y variables
'???????????????
'Inicializo  pi()

arriba = 2 ' el dos de adelante
For t = 1 To Terminos
    arriba = arriba * t
    pi(t) = arriba
Next t
' Imprimo el numero en pantalla igual que antes
'???????????????

Pero en seguida arriba se hace muy grande y aparece un error. Entonces para calcularlo hacemos todas las cuentas en base doble factorial. Pero para que sea más rápido sacamos factor común y multiplicamos una sola vez por cada número. Por ejemplo si tomamos solo 4 términos en vez de sumar de esta manera

2,(2*1)(2*1*2)(2*1*2*3)!!

Hacemos la cuenta así:

2!!+1*(0,2!!+2*(0,02!! +3*0,002!!))

 

Para no tener que escribir el mismo código varias veces, agregamos dos subrutinas, una que multiplica a las cifras por un número y otra que corrige la escritura de manera que el valor en cada posición esté en el rango permitido.

Deflng A-Z
Const cifras = 1000
Const terminos = 3333'Deberia llamarse TerminosMenosUno
' Cifras de pi en base doble factorial
Dim Shared pi(0 TO terminos)
' 0=parte entera

Const PrimeroNoNulo = 0
Const UltimoNoNulo = terminos



Cls
ini! = Timer

For t = terminos TO 1 Step -1
   If t Mod 100 = 0 Then
        Print "Voy por el"; t; "de"; terminos; Timer - ini!
        ' cartel para no aburrirse
   End If
   ' Calculo el termino t
   pi(t) = pi(t) + 2' el dos de adelante
   Multiplicar t
   Arrastrar
Next t
pi(0) = pi(0) + 2
Cls
Print pi(0); ".";
' es casi igual que para e
' calculo las cifras en base 10
For c = 1 TO cifras
   pi(0) = 0 ' borro la cifra anterior
   'Multiplico por 10 para obtener la siguiente cifra
   Multiplicar 10
   Arrastrar
   Print pi(0); ' la parte entera es la nueva cifra
Next c
Print
Print Timer - ini!

SUB Arrastrar
   arrastre = 0 ' borro el valor anterior de arrastre
   For t = terminos TO 1 Sete -1 ' De atras hacia adelante
      pi(t) = pi(t) + arrastre
      ' el valor tiene que estar entre 0 y (2*t+1)-1
      arrastre = pi(t) \ (t * 2 + 1)
      pi(t) = pi(t) Mod (t * 2 + 1)
   Next t
   pi(0) = pi(0) + arrastre'no hay limites para la parte entera
End SUB

SUB Multiplicar (n)
   For t = 0 TO terminos
      pi(t) = pi(t) * n
   Next t
End SUB

 

Para calcular cuantos términos necesitamos sumar, basta notar que cada uno es menos de la mitad del anterior. Así que si sumamos todos los términos que cortamos obtenemos un número menor que el doble del primero que cortamos. Además el termino n es menor que 1/2n. Entonces si cortamos en el termino n el error es menor que 2*2*1/2n. Con esto podemos verificar que tomamos suficientes términos.


Ejercicios:

  1. Escribir un programa que calcule Pi utilizando las dos series que aparecen en esta lección (sin utilizar base factorial ni nada raro). Buscar en cada caso la relación entre cantidad de términos sumados y el error (aproximadamente).
  2. Calcular la relación entre el lado de un polígono regular de n lados y uno de 2n lados inscriptos en un circulo. Hacer lo mismo para polígonos circunscriptos. Utilizar estas formulas para calcular Pi. ¿Qué pasa cuando n es demasiado grande?
  3. Analizar el tiempo que tarda el programa utilizado para calcular 1000 cifras de Pi en función de la cantidad de cifras. Estimar cuanto tiempo tardaría en calcular 10000 cifras. ¿Se te ocurre por qué?
  4. Analizar las primeras 100 cifras de Pi y ver que no son periódicas (hasta donde uno analizó).
    (Nota: como Pino es racional las cifras no son periódicas, aunque la demostración de la irracionalidad de Pinecesita análisis y es bastante más difícil que la de e.)

Lecciones siguientes:

Por ahora ninguna.

 


La idea es que hagan los ejercicios y piensen que otras cosas interesantes se pueden hacer relacionadas con estos temas. Cuéntennos lo que consiguieron y pregunten lo que no les salió. Envíen sus preguntas, dudas, sugerencias, experiencias y propuestas. Nuestra dirección es cym98@oma.org.ar .

También nos gustaría saber tu opinión sobre esta clase. Les pedimos que se tomen unos instantes y contesten estas preguntas. Con tu ayuda podremos hacer un curso cada vez mejor.

¿Cuál es tu calificación general de esta clase?

No entendí nada   Mala   Regular   Buena   Muy buena

El contenido de esta clase te resultó:

Nuevo   Conocido en parte   Conocido

El contenido de esta clase te pareció:

Difícil   Regular   Fácil

Los problemas de esta clase te parecieron:

Difíciles   Regulares   Fáciles

Comentarios, preguntas, sugerencias:

Métodos más sencillos para calcular Pi

Nombre y apellido (opcional):

E-mail (opcional):

    


OmaNet   Curso CyM98 OmaNet - Educación Interactiva
   
www.oma.org.ar/omanet | omanet@oma.org.ar
mensajes: webmaster@oma.org.ar
buy alcohol duty free duty free cigarette uk buy cigars online free shipping duty free cosmetic brands buy duty free perfume online where to buy tobacco online uk