<< Las cifras de Pi >> |
Lecciones anteriores: |
|
En esta lección vamos a calcular muchas cifras del número , 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 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 . 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 . Para el polígono circunscripto se puede realizar un procedimiento análogo y obteniendo valores ligeramente mayores que . El problema de este método es que se necesitan muchos pasos trabajando con mucha precisión para obtener . En los últimos siglos se desarrollaron otros métodos que permiten calcular 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 . Por ejemplo:
Si sumamos sólo hasta el 1/13 queda
Resultado = 3,283738 Si sumamos sólo hasta el 1/15 queda
Resultado = 3,017071 Asi que 3,017 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 , que se parezca a una escritura en base factorial: 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
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:
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:
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.
OmaNet Curso CyM98 | OmaNet - Educación Interactiva www.oma.org.ar/omanet | omanet@oma.org.ar |
mensajes: webmaster@oma.org.ar |