为何MATLAB中用factorial算阶乘比用gamma算慢很多

因为gamma函数计算阶乘是有误差的, 所以, 不能用gamma函数代替, 我查看了一下factorial函数的源代码, 核心代码是:
Fa = cumprod();n(:) = Fa(N+1); 【为何MATLAB中用factorial算阶乘比用gamma算慢很多】 不知道为何使用cumprod, 我改成了prod, 明显提速了,
c = prod(2:n);
n = 100;ticfor ii = 1:1e5 a = gamma(n+1);endtoc;ticfor ii = 1:1e5 b = factorial(n);endtoc;ticfor ii = 1:1e5 c = prod(2:n);endtoc;a/b-1b/c-1
时间已过 0.095831 秒。时间已过 0.363983 秒。时间已过 0.122889 秒。ans = 3.70814490224802e-14ans = 0gamma与factorial在100时, 有3.7e-14的相对误差prod(2:100)与gamma(101)速度差不多。
■网友
format longtica = gamma(101);tocticb = factorial(100);toca==b
结果
ans = logical 0

■网友
可以用funtion写一下程序吗?


    推荐阅读