Un poco de historia
El valor de π se ha obtenido con diversas aproximaciones a lo largo de la historia, siendo una de las constantes matemáticas que más aparece en las ecuaciones de la física, junto con el número e. Por ello, tal vez sea la constante que más pasiones desata entre los matemáticos profesionales y aficionados.Tomando en cuenta que el número pi forma un decimal infinito, lo habitual es usar una aproximación del mismo.
Los matemáticos han encontrado varias series matemáticas que si se repiten infinitamente pueden calcular con precisión el valor de Pi con una gran cantidad de decimales. Algunas de estas series son tan complejas que se necesitan supercomputadoras para procesarlas. Sin embargo, una de las más simples, es la serie Gregory-Leibniz. Aunque no es muy eficiente, se acerca cada vez más al valor de Pi en cada repetición, produciendo con precisión hasta cinco mil decimales de Pi con 500000 repeticiones.
Objetivo I
Desarolle un programa para estimar el valor de π usando la siguiente suma infinita:π = 4*(1 − 1/3 + 1/5 − 1/7 + ···)
La entrada del programa debe ser un número entero n que indique cuántos términos de la suma se utilizará.
Por ejemplo, si la entrada es 3, el programa debe entregar como salida:
3.466666666666667
Si la entrada es 1000, la salida debe ser:
3.140592653839794
Mientras más veces repitas la serie, más te acercarás al valor de Pi.
Solución en Perl
#!/usr/bin/perl
use strict;
use warnings;
my $suma= 0;
print "Serie Gregory-Leibniz\n";
print "Por favor, ingrese la cantidad de terminos: ";
my $n = <stdin>;
chomp($n);
my $fin_iteracion= $n-1;
foreach my $i (0..$fin_iteracion){
my $sumando= 1/($i*2+1);
if ($i%2){ $suma-= $sumando; }
else{ $suma+= $sumando; }
}
my $aproximacion= 4 * $suma;
print "El valor aproximado de Pi es $aproximacion \n";
Objetivo II
Utilice la serie Nilakantha. Esta es otra serie infinita que sirve para calcular Pi y que además es bastante fácil de entender. Aunque es más complicada que la fórmula de Gregory-Leibniz, converge en los valores de Pi mucho más rápido.π = 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6*7*8) - 4/(8*9*10) + 4/(10*11*12) - 4/(12*13*14) ...
Para esta fórmula, toma un tres y empieza a alternar entre suma y resta de fracciones con un numerador de 4 y un denominador que sea el producto de tres enteros consecutivos que vayan aumentando con cada nueva fracción. El denominador de cada nueva fracción empieza con el mayor entero utilizado en la fracción anterior. Repite la serie aunque sea solo un par de veces y verás que el resultado se acerca bastante a Pi.
Solución en Perl
#!/usr/bin/perl
use strict;
use warnings;
my $suma= 0;
print "Serie Nilakantha\n";
print "Por favor, ingrese la cantidad de terminos: ";
my $n = <stdin>;
chomp($n);
foreach my $i (1..$n){
my $denominador= ($i*2)*($i*2+1)*($i*2+2);
my $sumando= 4/$denominador;
if ($i%2){ $suma+= $sumando; }
else{ $suma-= $sumando; }
}
my $aproximacion= 3 + $suma;
print "El valor aproximado de Pi es $aproximacion \n";