Calcular decimales de Pi en PHP

Iniciado por CICOLO_111234, 9 Agosto 2010, 19:18 PM

0 Miembros y 1 Visitante están viendo este tema.

CICOLO_111234

Hola:

He creado un programa para calcular decimales de Pi en PHP.
Utiliza el método de Ramanujan.
Éste es el código:




Código (php) [Seleccionar]

<?
ini_set("max_execution_time", "0");
$decimales = '10000';
$n = "0";
$sumatoria = "0";

function factorial ($num) {

// inicializamos la variable
$factorial = 1;
// calculamos el  factorial
// multiplicando el numero por todos
// los numeros entre el y 1
// Salida: "El factorial de 5 es 120"
for ($x=$num; $x>=1; $x--) {
  $factorial = bcmul($factorial, $x);
}

return $factorial;

}




While ($n < $_GET['n']) {

$raiz =  bcsqrt('2', $decimales);
$mult1 = bcmul('2', $raiz, $decimales);
$primera = bcdiv($mult1, '9801', $decimales);
$mult2 = bcmul(factorial(4*$n), bcadd('1103', bcmul('26390', $n, $decimales), $decimales), $decimales);
$mult22 = bcmul(factorial($n), factorial($n), $decimales);
$mult22 = bcmul($mult22, $mult22, $decimales);

$exponente = 4*$n;
$numero = 396;
    $numeroo = 1;
    for ($i=0; $i<$exponente; $i++)
    {
        $numeroo = bcmul($numeroo, $numero, $decimales);
    }


$mult3 = bcmul($mult22, $numeroo, $decimales);
$div = bcdiv($mult2, $mult3, $decimales);
$sumatoria = bcadd($sumatoria, $div, $decimales);

#$sumatoria = $sumatoria + ((factorial(4*$n))*(1103+26390*$n))/(potencia (factorial($n), 4)*potencia (396, 4*$n));
$sum2 = bcmul($sumatoria, $primera, $decimales);
$sum3 = bcdiv('1', $sum2, $decimales);
$fp = fopen('pi.txt', "w");
$write = fputs($fp, $sum3);
fclose($fp);


$n=$n+1;

if ($n % 20 == 0)
{

sleep (1);
}
}
echo $sum3;


?>





Hay que crear un archivo llamado "pi.txt". Luego hay que subirlo a tu página y entrar en www.tupagina.com/pagina.php?n=XXXX. Cuanto mayor sea XXXX más decimales correctos de Pi habrá. En la tercera línea del código podeis cambiar el número de decimales de Pi que querais que se enseñe. Eso sí, cuanto mayor sea ese número más tardará en hacer el cálculo.

Con este programa he logrado calcular 8.000 decimales de Pi, y ahora mismo está trabajando para conseguir más. Ya sé que está lejos del recién batido récord (5 billones de decimales), pero algo es algo  :D