gina-yanke 发表于 2005-11-8 10:22

求组合的问题

<P>L=0:10:500;n=512;d=2;h=5;</P>
<P>求:C(n-n/d^l:L)/C(n:L)</P>
<P>其中C(a:b)表示a为下标,b为上标的组合</P>

gina-yanke 发表于 2005-11-8 10:27

写错了,是求:C(n-n/d^h:L)/C(n:L)

linda 发表于 2005-11-8 10:32

用nchoosek

linda 发表于 2005-11-8 10:38

不过你这个好像有问题,n-n/d^L&lt;500

gina-yanke 发表于 2005-11-8 10:58

能具体一点吗,拜托

gina-yanke 发表于 2005-11-8 11:06

<P>L=0:5:50;n=512;d=2;h=5;
<p>求:C(n-n/d^(h-1):L)/C(n:L)
<p>其中C(a:b)表示a为下标,b为上标的组合

hyacinth 发表于 2005-11-8 11:15

<P>L=0:5:50;n=512;d=2;h=5;<BR>for i=1:11<BR>    x(i)=nchoosek(n-n/d^(h-1),L(i))/nchoosek(n,L(i))<BR>end</P>
<P>不过你的数太大了,结果不一定准确,最好先把公式处理一下</P>

suffer 发表于 2005-11-14 19:22

回复:(gina-yanke)求组合的问题

<P>你这个式子转变一下大概是<BR>(N-L)!/(M-L)!<BR>----------------<BR>   N!/M!<BR>其中M=n-n/d^(h-1)<BR><BR>由于取阶乘必须是整数,所以用round处理一下,当然可以根据你的需要用fix等<BR><BR>大致写了一下程序,不一定完全正确,你看看<BR><BR>L=0:5:50;n=512;d=2;h=5;M=round(n-n/d^(h-1));<BR>for i=1:11<BR>    S(i)=1;<BR>    if (M+1)&lt;n<BR>      for j=M+1:n<BR>            S(i)=S(i)*(j-L(i))/j;<BR>      end<BR>    end<BR>end<BR></P>

wenyue 发表于 2005-11-15 12:49

循环处理不是最优的做法,应用meshgrid函数最好

suffer 发表于 2005-11-15 15:00

回复:(gina-yanke)求组合的问题

同意,晚上我抽空再写一下
页: [1]
查看完整版本: 求组合的问题