 El 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:  |