Mdn[x_, rho_, n_] := Module[{i = 0, I = 0, GuessP, Sum1, P, S, Difference, Max = 0}, GuessP[0] = ( Sum[(rho n)^i/i!,{i,0,n-1}] + (rho n)^n/n! 1/(1-(rho n)/n) )^-1; For[i=1, i10^-12), i=i+1; GuessP[i] = GuessP[i-1] (rho n)/n; ]; I = i; For[i=(I+1), i<=(I+n), i++, GuessP[i] = GuessP[i-1] (rho n)/n; ]; While[ ((Max > 10^-12) || (Max == 0)), Max=0; Sum1 = Sum[GuessP[k], {k,0,n}]; For[i=0, i<=I, i++, P[i] = Sum1 (rho n)^i/i! E^-(rho n) + Sum[GuessP[k] (rho n)^(n+i-k)/(n+i-k)! E^-(rho n), {k,n+1,n+i}]; ]; For[i=(I+1), i<=(I+n), i++, P[i] = P[i-1] (rho n)/n; ]; S = Sum[P[k], {k,0,I+n}]; For[i=0, i<=(I+n), i++, P[i] = P[i]/S; ]; For[i=0, i<=(I+n), i++, Difference = Abs[P[i] - GuessP[i]]; If [Difference > Max, Max = Difference ]; GuessP[i] = P[i]; ]; ]; P[i_]:=0; Table[P[i],{i,0,x}] ]