【发布时间】:2014-11-21 19:27:00
【问题描述】:
我正在实现函数以获取 W 的值,输入为 k、epsilon 和 Omega。函数 W 定义为
请不要担心方程的复杂性。使用三个已知参数 k、epsilon 和 Omega 非常容易。现在,我想在 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是内求和的运行指标(所以是哑指标),它怎么会作为参数出现在外求和的范围内呢?你确定那里没有错字吗?