我試圖寫的R程序來優化功能,但我總是得到伽馬第(k + 1)產生的NaN警告。我不知道爲什麼,因爲K + 1應該非常小,但不是零。這裏是代碼:R伽瑪函數的NaN警告
x<-rlnorm(100,0,1)
y<-x/(1+x)
bernsum<-array(1:100)
cvise1<-array(1:100)
cvise2=0
cvise<-0
bernsum_temp1=0
bernsum_temp2=0
cvise1_temp1=0
cvise1_temp2=0
func_bernise<-function(bigm)
{
#Calculate the second part of CVISE
for (i in 1:100)
{
z<-y[-i]
for (j in 1:99)
{
for (k in 0:bigm-1)
{
bernsum_temp1=bernsum_temp1+bigm*((sum(z[j]<=(k+1)/bigm)-sum(z[j]
<=k/bigm))/100)*(gamma(bigm)/(gamma(k+1)*gamma(bigm-k+1)))
*(z[j]^k)*((1-z[j])^(bigm-k-1))/50
}
bernsum_temp2<-bernsum_temp2+bernsum_temp1
bernsum_temp1=0
}
bernsum[i]=bernsum_temp2
bernsum_temp2=0
}
cvise=sum(bernsum)#+sum(cvise1)
return(cvise)
}
bigmtrue=optimize(func_bernise,c(1,15))
在此先感謝!你可以看到k從0到bigm-1,bigm從1到15進行了優化,這使得k + 1也從1到15。
你的函數返回'NaN'即使對於整數輸入'bigm'。 – 2013-04-27 01:53:53
這很奇怪,因爲在我做出改變後,程序從未發出警告。無論如何,它似乎現在工作。謝謝! – 2013-04-27 12:53:43