24小时热门版块排行榜    

CyRhmU.jpeg
查看: 993  |  回复: 1

黑色裂变

铜虫 (小有名气)

[求助] matlab计算组合数出错已有1人参与

最近写的一个程序要计算组合数,但用MATLAB自带的nchoosek当数值较大时计算非常慢,于是改用阶乘除阶乘的形式,但是当计算结果较大的时候MATLAB直接把结果当成发散的了,显示NAN,请问有什么好的处理方法吗?把nchoosek提速或者使结果不发散的都可以。贴上我的代码:
m=500;
w=10;
S1=1;
pk1=0.5;
pdw1=0.5;
Adp1=zeros(w+1,m+1);
for r=1:w+1
    for c=1:r+m-w
        for i=0:c-1
            Adp1(r,c)=Adp1(r,c)+(prod(1:r+m-w-1)/(prod(1:i)*prod(1:r+m-w-1-i)))*(1-pdw1)^(i)*(pdw1)^(r-i-1+m-w)*(prod(1:r-i+m-w-1)/(prod(1:c-i-1)*prod(1:r-c+m-w)))*((1-pk1)^S1)^(c-i-1)*(1-(1-pk1)^S1)^(r-c+m-w);
        end
    end
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangyq01

新虫 (小有名气)

【答案】应助回帖

好像函数nchoosek可以计算。
c=nchoosek(500,10)
Warning: Result may not be exact. Coefficient is greater than 1.000000e+015 and is
only accurate to 15 digits
> In nchoosek at 66

c =

  2.4581e+020
2楼2020-03-14 16:46:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 黑色裂变 的主题更新
信息提示
请填处理意见