2016-03-23 41 views
0

我有一個函數範圍,其中一個功能是正

function(y,mu=mu0,lsig=lsig0) { 
    res = exp(2*y)/(1+exp(y))^2 * 1/sqrt(2*pi)/exp(lsig) * exp(-(y-mu)^2/2/exp(lsig)^2) 
    return(res) 
} 

其中mu和L-SIG是針對每次迭代 不同的兩個參數,我想找到一個範圍,其中其值是正的。

實際上,這個函數總是正的,但是如果它非常接近於零,則顯示爲零。

mu0 = -6 
lsig0 = -2 

> fun1(-12:10) 
[1] 0.000000e+00 3.304189e-306 1.230744e-198 8.903329e-115 1.250678e-54 
[6] 3.409942e-18 1.802249e-05 1.840279e-16 3.597724e-51 1.315197e-109 
[11] 8.485366e-192 8.567881e-298 0.000000e+00 0.000000e+00 0.000000e+00 
[16] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
[21] 0.000000e+00 0.000000e+00 0.000000e+00 

這裏,使fun1爲正的最小和最大整數分別爲-11和-1。

首先,我可以嘗試像

> fun1(-12:10) > 0 
[1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE 
[14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 

但我不知道如何檢索-11和-1從這個TRUE/FALSE載體。其次,即使我知道如何做,我也不知道每種情況下矢量的寬度應該是多大(例如-12:10)。

回答

1

這可能是圓的,但有關工作時,我試了一下:

range.test=-12:10 
test.output = fun1(range.test) > 0 
output.values = which(test.output == TRUE) 
final = range.test[output.values] 

然後,您可以做MAX(最終)和分(最後一次),讓您的範圍。