数值运算超过matlab限制的问题
最近在用matlab进行数值计算的时候,需要计算像1000的阶乘这样大的数,发现已经超过了matlab对数值运算的限制,原来matlab里面连200的阶乘都没办法运算。不知道对这个问题高手们有什么好的办法解决?回复 楼主 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. 感谢ChaChing的关心,因为我要估计一个泊松分布,输入的数据比较大,涉及到1000以上的阶乘,不知道有没有什么办法化简? 如果不能化简的话,那么大的阶乘一般的计算机是达不到要求的。
a = sym(1001);
b = vpa(gamma(a),100)
我想问一下rocwoods,这样算出来的结果等于1000的阶乘吗?如果是的话,这倒是个不错的办法。 gamma(n+1) = n!
以上用的是符号计算,保留100位有效数字
你可以
a = sym(1001);
b = vpa(gamma(a),2568)
算出精确值
回复 7楼 rocwoods 的帖子
这个方法挺好,一旦转化为数值,就变为Inf了。:@)[ 本帖最后由 friendchj 于 2009-2-28 21:49 编辑 ] 那请问rocwoods,这样还能不能进行数值运算呢?因为除了阶乘之外,还涉及到其他加减乘除的运算。 把你所有需要的加减乘除计算都用符号计算就可以了啊。
想不明白你为什么要用这么大的数 因为实际数据有这么大,呵呵。我试试看哈,如果有问题再向各位高手请教!
页:
[1]