为何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写一下程序吗?
推荐阅读
- #补贴#江阴为何迟迟没执行?|解忧帮 无锡:机动车报废有补贴
- 『黄金时间』请认准这个蓝色的标志! 黄金时间丨同行业中用水最少的企业
- OC为何跌出语言榜前十
- 何能|布局素质教育 教育巨头为何能迅速推进?
- 汽车|把车越卖越贵,全新领克01为何可以这样?
- 阿里程序员网上招人的情况为何如此多见
- 心流西春|为何你的后半箱油总是不耐用?油是正经油,问题可能出在这里
- 一粒尘埃的尘|为何很多新车不再设计“雾灯”,雾灯不重要吗?
- 环球车讯网|宝马MINI 为何在“迷你”的路上越跑越远?
- 汽车一起看|为何说国产高端SUV三强之首是名爵HS,领克和WEY竟无法反驳?
