En toda la historia se han descubierto/creado muchas maneras para calcular aproximaciones del número Pi. En el post del día de Pi ya vimos algunas aproximaciones numéricas. Hoy os traigo dos algoritmos para el cálculo de aproximaciones de Pi. Vamos con ellos:
- Algoritmo de Gauss-Legendre:
Partimos de los siguientes datos iniciales:
A partir de ellos realizamos la siguientes operaciones:
Entonces Pi se aproxima de la siguiente forma:
El método tiene convergencia de segundo orden. Es decir, en cada iteración duplicamos el número de dígitos exactos obtenidos en la iteración anterior.
- Algoritmo de Borwein:
Partimos de los siguientes datos iniciales:
Con ellos operamos de la siguiente forma:
Entonces se tiene lo siguiente:
La convergencia de este método es cuártica. Es decir, en cada iteración se consiguen el cuádruple de dígitos exactos que en la iteración anterior. Existen variaciones de este método que consiguen en cada iteración muchos más dígitos exactos. En este enlace de la Wikipedia inglesa podéis ver algunas de ellas.
Evidentemente existen muchísimos más. Y también muchas fórmulas que involucran a Pi mediante las cuales podemos calcular aproximaciones de este número. Más adelante irán apareciendo en este blog muchas más. Se aceptan sugerencias en los comentarios.
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉
Particularmente me gusta la idea de la aproximación por el método de Montecarlo: Construimos un cuadrado de lado igual a 2 y inscribimos una circumferencia. Entonces la circumferencia tendra un radio igual a 1. La superfície de la circumferencia serà: pi*r^2 = pi. Y la superfície del cuadrado: l^2 = 4. Entonces, si empezásemos a lanzar dardos aleatoriamente dentro del cuadrado, la probabilidad de que este entrase en el círculo seria de pi/4. Solo deberiamos contar las veces que hemos lanzado dardos y cuantos de estos han entrado en el círculo, dividirlo y multiplicarlo por cuatro de forma que: pi… Lee más »
Mmmm… no me acaban de convencer estos métodos. Con el primero tendríamos, de entrada, saber el valor de raíz de 2, y luego calcular unas cuantas raices cuadradas en cada valor. No es que me cree un conflicto en mi interior el usar raíces cuadradas, es que tenemos que tener en cuenta que hay que cortar en algún lugar el cálculo de la raíz y eso afecta (y mucho) a lo precisos que queramos ser con Pi Con el segundo tenemos raíces de orden cuarto… Pues más de lo mismo. Con lo del método de lanzar dardos sobre una diana,… Lee más »
Otro puede ser la aguja de Buffon: http://www.genciencia.com/2006/08/28-el-problema-de-la-aguja-de-buffon
Saludos! 🙂
¿¿Cómo se demuestra matemáticamente que esos algoritmos conducen efectivamente a PI al iterar una infinidad de veces??
Algoritmos para el cálculo de π…
En toda la historia se han descubierto/creado muchas maneras para calcular aproximaciones del número Pi. Aquí dos algoritmos para el cálculo de aproximaciones de Pi: Algoritmo de Gauss-Legendre y algoritmo de Borwein…
Más información sobre cómo calcular PI por el «método de Buffon» aquí.
Ondia, eso lo he escrito yo!! qué autobombo más indiscreto xD
Un dia descubrí uno muy curioso, ineficiente como él sólo, pero curioso como ninguno. Es usando el Conjunto de Mandelbrot. Se trata de que en la unión del cardiode con la circunferencia de la izquierda, realmente no existe. La gracias es que mientras más te acercas al punto exacto de la unión (-3/4) en el eje y, más iteraciones se necesitan para demostrar que está fuera del Conjunto de Mandelbrot. Si coges un número muy cercano del estilo -3/4 + εi, donde ε es un número muy pequeño, 0.00000001, p.e. Calculas el número de iteraciones en ese punto necesarias para… Lee más »
En el último número de la Gaceta de la RSME (vol 10 núm 1) hay un artículo muy interesante que describe muchos algoritmos y fórmulas para calcular pi.
Hace tiempo lo comenté, y me parece curiosísimo (y cuya aplicación en la vida real es nula claro): Utilizando la función iteración que genera el conjunto de mandelbrot: z0 = 0 z = z^2 + c c = -3/4 + a i Para a = 0 el punto pertenece al conjunto; sin embargo si n es el número de iteraciones que tardamos en conseguir un z cuyo módulo sea mayor que 2 (radio de escape): n * a = pi Y la precisión es la misma que la de a Es matemáticamente irrelevante quizá, costoso de calcular, pero curioso sin… Lee más »
Para muestra, un botón: http://dev.gentoo.org/~ferdy/stuff/pi_mandel_gmp.c
– ferdy
Os recomiendo el programa gratuito que circula por ahí PiFast para calcular mega archivos con cifras de pi hasta millones y millones en poco rato.
Alguna justificación de estos algoritmos?
Es interesante la pregunta de wallace.
Las convergencia de las iteraciones tiene su propia demostración en cada caso. Habitualmente, se basa en que el punto límite de la sucesión cumple un papel determinado que sólo puede cumplir el número pi.
Ahora mismo no recuerdo ninguna en concreto, pero síme viene a la cabeza una demostración de convergencia que se limitaba a comprobar que la tangente (en radianes) de la cuarta parte del límite era 1. Para obtener la tangente empleaba una transformada que simplificaba las fórmulas extraordinariamente.
Acabo de rehacer un método basado en el que ya pensó Arquímedes: el polígono inscrito. Sabiendo que media circunferencia es pi/2, partimos del lado AB de un cuadrado inscrito: A:(1,0) B:(x=0,y=1), de longitud raiz(2) y aproximamos pi=2*raiz(2). Doblamos los lados del polígono calculando el corte de la recta que pasa por (0,0) y el punto medio del anterior: (Xm=(1+0)/2,Ym=(0+1)/2). El número de lados es 2^i, así que aproximamos pi=2^i*L. En ecuaciones (ojo con i+1 que es el siguiente término): i=iteración — Li=raiz(Xi^2+Yi^2) ~pi=2^i*Li Xmi=(1+Xi)/2 Ymi=Yi/2 — para el siguiente término: Xi+1=raiz(1/(1+Ymi/Xmi)) Yi+1=(Ymi/Xmi)*Xi+1 Li+1=raiz(Xi+1^2+Yi+1^2) ~pi=2^i+1*Li+1 Estos resultados me da, con OpenOffice… Lee más »
wena
2+2 = 4 x π
estoy de acuerdo con witilongi, ya que he usado ese programa y he calculado 1.000.000 de digitos del numero pi. se podrian calcular mas pero el tiempo seria mucho mayor. se los recomiendo ese programa. ademas se puede calcular la raiz de 2 y el numero e.
leandro.
No entiendo el porqué de tanta pérdida de tiempo. Todo el mundo sabe que pi es exactamente igual a 3 😉
http://buscandoasusy.wordpress.com/2007/06/14/%cf%80-igual-a-3/
Por cierto, estoy de acuerdo con Uno de Tantos.
1. Toma una calculadora
2. Presiona los tres primeros dígitos de tu numero telefónico
3. Multiplícalo por 80.
4. Súmale 1.
5. Multiplícalo por 250.
6. Súmale los últimos cuatro dígitos de tu numero telefónico.
7. Otra vez, súmale los últimos cuatro dígitos de tu numero telefónico.
8. Réstale 250.
9. Divídelo por 2
Reconoces el numero?????? ????????
¿Qué tan eficiente y exacto sería usar lo del problema de Basilea para calcular Pi?
(Pi^2)/6 = 1/(1^2) + 1/(2^2) + 1/(3^2)+…+ 1/(n^2)
ó
Pi = Sqrt(6[1/(1^2) + 1/(2^2) + 1/(3^2)+…+ 1/(n^2)])
daniel, no se de exactitud, yo creo que se dice que un método es mejor que otro en función de la velocidad de convergencia.
y que tal buscar la solución a la ecuación
sen(x) = 0 en [3,4]
que se puede resolver por muchos métodos iterativos (bisección*, newton-raphson…)
o se puede buscar el punto fijo de la función f:
f(x) = sen(x) – x
se empieza, en 3, por ejemplo y seguimos por f(3), f(f(3)), f(f(f(3)))…
*bisección basicamente consiste en dividir [3,4] en dos subintervalos y quedarnos con aquel que cumpla bolzano (sen(a)*sen(b)
Daniel, he calculado lo del probelma de Basilea y me sale bastante ineficiente: al inicio consigue unas 0,2 cifras por iteración, pero al cabo de 200 baja hasta 0,002. Necesita 600 iteraciones para llegar a la aproximación 3,14 y por entonces sólo avanza 0,01 cifras por iteración. Avanza MUY lentamente, pero lo que más gracia me hace es que ¡¡¡ sabemos que, igual que el resto de métodos, en el infinito también sale PI !!!
Tal vez la serie que propone Daniel sea muy lenta, pero ¡qué decir de la serie de Ramanujan! que se aproxima al valor de pi a velocidad de vértigo. Cada nuevo sumando proporciona 8 decimales exactos de pi. La fórmula se puede ver en http://www.epsilones.com/paginas/i-formulas.html#formulas-piramanujan Poco más arriba de este enlace aparece otra fórmula que proporciona 14 decimales… Contestando al interrogante planteado en epsilones, Ramanujan ideó la fórmula investigando las funciones modulares(alguien de aquí lo entenderá…) Pueden ver la fórmula de otra manera http://suanzes.iespana.es/ramanuj.htm Y para los avanzados e interesados en más fórmulas de Ramanujan para el cálculo de pi… Lee más »
Al estilo de Ramanujan
(150 + 1/200)^2
——————- = casi un entero (231)
pi ^4
Daniel, yo tuve la misma idea que vos….
de hecho, hice un programita en VB que itera basado en el problema de basilea y desp de 2.000.000 de iteraciones el resultado es este:
3. 14 15 92 17 61 25 09
Son 6 decimales para 2.000.000 de iteraciones
El problema, creo yo, es que la raiz cuadrada hace que pierda mucha potencia,
El metodo no es bueno para aproximar pi
Este mensaje va dirigido al que puso el comentario sobre una formula para el numero pi con el nombre de rober con fecha 12 junio 2007 he intentado hacer funcionar tu formula en un programa de ordenador y no he obtenido el resultado esperado supongo que es debido a que la interpretacion de tu escrito no es la misma que la que tu posees.Quisiera que me dieses una explicacion mas detallada y clara sobre tu formula puedes hacerlo a traves de estos comentarios o mandarme un mensaje a la direccion de E-mail MSN messenger. oteropera@hotmail.com.Estoy interesado en cualquier formula o… Lee más »
Este mensaje es un añadido al anterior debido a un error mio al redactar el mensaje la direccion correcta de E-mail MSN MESSENGER es oteropera@hotmail.com
Talvez si los programadores utilizarían las ya clasicas fórmulas de Leibniz y Euler, les podría parecer más útil, en todo caso, yo no se mucho sobre programación pero en algoritmos matemáticos que justifiquen el valor de pi, talvez pueda dar algunas sugerencias
hola, me gustaría saber como puedo conseguir dibujar pi en la recta real de forma exacta. Gracias.
disculpa quisiera saber como ordena la siguientes funciones de un programa en java q es oriendato a objetos, acerca de estadistica para calcular la media,moda,desviacion estandar ,media armonica,el rango,varianza ,para datos agrupados claro. porfa aclara mis dudas.
gracias me ayudaron en mi trabajo
Hola soy alumno de bioquimica, pero aun asi amante de la matematica, y desarrollé un método bastante «bruto» para calcular pi a gusto. Es bastante simple, el unico problema es que incluye la función seno, bueno soy un amateur, por lo tanto les dejo el desafio de seguir mejorándola.. Bueno acá va con explicación: Si tienes una circunferencia de radio 1, le dibujas 4 radios que esten a 90º uno del otro y luego trazas diagonales entre el extremo de cada radio, por supuesto obtendremos 4 diagonales con valor squr (2), llamemos a esto una secuencia P, en su primer… Lee más »
Sugiero que veas el método que utilizo Arquímedes en en siglo 3ª ADC
José: no se puede. Fíjate los artículos sobre regla y compás.
Para una libreria que estoy programando necesitaba calcular pi, y decidí usar la fórmula de Euler, pero pude comprobar lo lento que convergía. Buscando por internet, encontré un interesante programa de ejemplo en Java que calculaba pi con precisión configurable. Utiliza la fórmula: pi/4 = 4 * arctan( 1/5 ) – arctan( 1/239 ) y para calcular el arcotangente, utiliza la serie: arctan(x) = x – (x^3)/3 + (x^5)/5 – (x^7)/7 + (x^9)/9 … que, al ser el argumento pequeño, converge bastante rápidamente. Para lo que yo lo necesito, me viene perfecto. (en mi PC calcula 10.000 decimales en menos… Lee más »
prueba esta… .(2-….(2-(2-(2-2^1/2)^1/2)^1/2)^1/2….)^1/2.. basada en poligonos de 4, 8,16,64…. lados….. muy facil de implementar informaticamente..
hola que tal yo quiero saber como puedo desarrollar este algoritmo
el algoritmo es una calculadora cientifica con las funciones de seno y coseno
sera que me pueden decir algunas paginas en las que pueda encontrar algo
muchisimas gracias
Hola. He intentado calcular el valor de Pi (y generarlo con C++) utilizando una serie. La serie es mas o menos así: Pi = 4*(1 -1/3 +1/5 -1/7…) donde la serie va aumentando el denominador en un número impar y el signo va cambiando de término en término. Pero no se que ha pasado, no se si hice un infinito y nunca logré cerrar el bucle while propiamente. Suscede que para calcular un valor aproximado, utilizo un paso donde calculo el valor absoluto de la resta entre el ultimo término y el penúltimo y si es menor o igual a… Lee más »
ola, daniel yo tengo el mismo problema y es para una tarea si lo solucionaste me mandarias el programa porfa
gracias xau
necesito hacer un programa en dev c++ para calcular el valor de pi de la siguiente serie xx= 4*(1/3 – 1/3+1/5-1/7…1/n)
el programa debe indicar el numero de terminos rekeridos para obtener una presicion menor o igual a 0.0001( precision es la diferencia entre pi y el valor de la serie)
SI PUDEN AYUDARME PORFAVOR ES URGENTE.GRACIAS
Hola necesito hacer un programa en devc que haga todos los calculos y dibuje el triangulo de pascal.
Es urgente please!!!
Hay una sucesión muy sencilla, que ya debeis conocer supongo, que se obtiene apartir de los poligonos inscritos y aumentando el numero de lados (n) el cociente entre el perimetro y el diametro del poligono tiende a pi. Aunque no sea un algoritmo lo pongo por si a alguien le interesa.
hola me pueden ayudar por favor necesito buscar la respuesta a esto y no se nada sajkasjka
gracias!!!
Calcule el número pi, para ello use los tres métodos observados:
bisección, secante y newton. Para lograr ello debe escoger alguna de las
funciones trigonométricas clásicas: seno, coseno o tangente, y ver que
puntos escoge para comenzar. Para lograr el objetivo, puede consultar sus
apuntes de cálculo.
En su informe debe presentar:
– La función que usó.
– Los puntos de partida.
– Las precisiones empleadas.
– La diferencias observadas en los métodos.
todo en scilab
Muchas gracias por la publicación. he empleado el primer algoritmo y me va perfecto:
3.14159265358979
14 decimales a la perfeccion.
ps el primer metodo no conveence mucho ya que la raiz de 2 pues es un numero muy grande con muchos decimales y tendriamos que truncar o redondear ese numero y estariamos afectando el resultado de la aporoximacion de pi no lo creen?
Realmente para el verdadero calculo como ya hemos de saber de antemano su limite es infinito por tanto el verdadero calculo se hace con una serie infinita;
pi= 4(1- 1/3 +1/5 -1/7 ….) y asi sucesivamente lo que aumenta de dos en dos es el denominador, por lo tanto en el programa hacemos una sucesion.
Justificacion de la aproximación de Ramón a Pi:
http://cienciacuriosa-newton.blogspot.com/2010/06/calcular-facil-y-rico.html
Pi = lim n –> infinito de (n · sen (180/n))
gracias por el algoritmo ma sirbio bastante. bye
[…] Algoritmos para el cálculo de Pi | Gaussianos La conjetura de Casas-Alvero, contada por Eduardo Casas-Alvero (1) … de Ramanujan como no en http://criptociencia.blogspot.com/2007/05/calculo-mental. .. […]
No es mala aproximación pi = raíz cuarta de (2143/22)