0. gamma 函数与阶乘

gamma(n+1) == n! == prod(1:n);
  • gammaln():gamma 函数的返回值,gammaln(A) = log(gamma(A)),

    • 之所以 matlab 会定义这样一个 gammaln 函数是为了避免 log(gamma()) 可能出现的下溢和上溢;

gamma/gammaln 函数(接受单参数)与 nchoosek (这种接受两个参数)函数的一个主要区别在于,nchoosek 的第一个参数只能为标量,不可以为矢量,gamma/gammaln 则可以;

1. (nk)

  • nchoosek:

    >> nchoosek(5, 4)
    5

    nchoosekln 的矢量化实现:

function nk = nchoosekln(n, k)
nk = gammaln(n+1) - gammaln(k+1) - gammaln(n-k+1);
% 这里的 k 可以为矢量;返回的也为矢量;

2.

05-17 06:26