realyw 发表于 2009-2-27 22:04

数值运算超过matlab限制的问题

最近在用matlab进行数值计算的时候,需要计算像1000的阶乘这样大的数,发现已经超过了matlab对数值运算的限制,原来matlab里面连200的阶乘都没办法运算。不知道对这个问题高手们有什么好的办法解决?

ChaChing 发表于 2009-2-27 22:53

回复 楼主 realyw 的帖子

可否告知原始问题是什麽? 为何需要算1000阶乘!
Since double pricision numbers only have about 15 digits, the answer is only accurate for n <= 21. For larger n, the answer will have the right magnitute, and is accurate for the first 15 digits.

realyw 发表于 2009-2-27 23:50

感谢ChaChing的关心,因为我要估计一个泊松分布,输入的数据比较大,涉及到1000以上的阶乘,不知道有没有什么办法化简?

friendchj 发表于 2009-2-27 23:57

如果不能化简的话,那么大的阶乘一般的计算机是达不到要求的。

rocwoods 发表于 2009-2-28 01:12


a = sym(1001);
b = vpa(gamma(a),100)

realyw 发表于 2009-2-28 14:50

我想问一下rocwoods,这样算出来的结果等于1000的阶乘吗?如果是的话,这倒是个不错的办法。

rocwoods 发表于 2009-2-28 21:09

gamma(n+1) = n!
以上用的是符号计算,保留100位有效数字
你可以
a = sym(1001);
b = vpa(gamma(a),2568)
算出精确值

friendchj 发表于 2009-2-28 21:48

回复 7楼 rocwoods 的帖子

这个方法挺好,一旦转化为数值,就变为Inf了。:@)

[ 本帖最后由 friendchj 于 2009-2-28 21:49 编辑 ]

realyw 发表于 2009-2-28 22:18

那请问rocwoods,这样还能不能进行数值运算呢?因为除了阶乘之外,还涉及到其他加减乘除的运算。

rocwoods 发表于 2009-3-1 01:50

把你所有需要的加减乘除计算都用符号计算就可以了啊。
想不明白你为什么要用这么大的数

realyw 发表于 2009-3-1 13:29

因为实际数据有这么大,呵呵。我试试看哈,如果有问题再向各位高手请教!
页: [1]
查看完整版本: 数值运算超过matlab限制的问题