Logo de pepAguilar.com
INICIO arrow RECURSOS arrow PHP arrow Triángulo Stirling
Triángulo Stirling

ImageEl triángulo de Stirling es la forma de ordenar los números multinomiales. Una de las aplicaciones de los números multinomiales es la combinatoria. ¿De cuantas maneras se pueden distribuir n objetos en k cajas?. Como la fórmula explícita es un poco enredosa, vamos a crear una función para que lo calcule automáticamente.

Lo primero que deberemos hacer es crear dos funciones para que nos calculen el valor de el factorial de un número, y el binomial de un número.
La función para calcular el factorial es la siguiente:


   function factorial($n)
    {
        switch($n)
        {
            case $n>1:
                return $n*factorial($n-1);
                break;
            case $n==1:
                return 1;
                break;
        }
    }

He empleado un algoritmo recursivo en el que va calculando el resultado de multiplicar n por el factorial de n-1.
Para la función del binomial he recurrido a la página php.net, donde hay un algoritmo ya hecho:


  function binomial_coeff($n, $k)
    {
        $j = $res = 1;
        if($k < 0 || $k > $n)
            return 0;
        if(($n - $k) < $k)
            $k = $n - $k;
        while($j <= $k)
        {
            $res *= $n--;
            $res /= $j++;
        }
        return $res;
    }


Finalmente vamos a crear nuestra función que va a calcular el valor de una posición determinada por las variables n y k en el triángulo de Stirling:


   function ts($n,$k)
    {
        $val1=1/factorial($k);
        $val2=0;
        $val3=0;
        for ($i=1;$i<=$k;$i++)
        {
            $val2=pow(-1,$k-$i);
            $val2*=binomial_coeff($k,$i);
            $val2*=pow($i,$n);
            $val3+=$val2;
        }
        return $val1*$val3;
    }


He empleado la función pow() que calcula x elevado a y. Ahora solo hace falta llamar a esta función con las posiciones n fila, k columna en el triángulo.

A continuación os adjunto la fórmula explícita de cálculo de un número multinomial:

 Image

 
< Anterior   Siguiente >


  PepAguilar.com 2010 - Powered by Joomla! - Web optimizada a 1024x768  
  Creative Commons License

Esta obra está bajo una licencia de Creative Commons
  [Valid RSS] Valid XHTML 1.0 Transitional ¡CSS Válido!