我实现了获取输入为W的值为k,epsilon和Ω的函数。函数W定义为 如何用变化的上范围来计算总和
请不要担心方程的复杂性。用三个已知的参数k,ε和Ω很容易。现在,我想在matlab中实现它。但是,我的问题是如何设置第一个循环的范围,范围上限min(g-1,k)。让我看看我的实现更详细。难道是正确的
function W=getW(k,epsilon,Omega)
n=ceil((1+epsilon)*k);
sumIn=0;
sumOut=0;
g=2;
for h=1 :min(n-1,k)
for g=2:n
sumIn=sumIn+(g-h)*getA(k,epsilon,g,Omega)*getT(k,g,h);
end
sumOut=sumOut+sumIn;
end
sumOut
end
function A=getA(k,epsilon,g,Omega)
n=ceil((1+epsilon)*k);
A=nchoosek(n,g)*(Omega)^g*(1-Omega)^(n-g)
end
function T=getT(k,g,h)
T=nchoosek(k,h)*getS(g,h)/(k^g);
end
function S=getS(g,h)
sumSX=0;
for x=1:h-1
sumSX=sumSX+(-1)^(x-h+1)*nchoosek(h,x)*x^g;
end
S=h^g-sumSX;
end
要运行它设置W = getW(500,0.1,0.02)
该符号不明确(如果不正确)。关于红色框中的双求和公式:'g'是内部求和的运行指数(因此是一个虚拟指数),在外部求和的范围内怎么会出现这个参数呢?你确定那里没有错别字吗? – 2014-11-21 11:53:08