2017-06-12 76 views
1

我有一个功能logit.aic(x,y),提供输出,给出两个输入xy如何选择使函数f(a,b)的输出最小化的输入(a,b)?

限制: 两个输入可以是和之间的任何正的非整数值。另外,它应该是x < y

例如:logit.aic(20,80)返回值41.38729

问题:我需要找到最小化我的函数输出的一对输入。

在此先感谢。

+0

不,它只需要单个值。问题是所需的输入不是一个整数,所以我需要一些方法来自动最小化。 – smars

回答

2

“网格搜索”就是为此而设计的。

提供该logit.aic是一个量化的功能,你可以做

oo <- outer(0:100, 0:100, logit.aic) 
oo[lower.tri(oo, diag = TRUE)] <- NA 
ind <- which(oo == min(oo, na.rm = TRUE), arr.ind = TRUE) 
ind - 1 # because index starts from 0 

如果它是不容易的话,做

logit.aic <- Vectorize(logit.aic, c("x", "y")) 

作为一个侧面说明,您可以观察面通过

contour(0:100, 0:100, oo) 
points(ind, pch = 19) # minimum 

更新

ind - 1返回一个矩阵,是没有意义的。我需要使我的函数输出最小化的非整数值对。

这意味着你有多个最小值。结果的每一行都是一行。

+0

如何获得最小化输出的值对? – smars

+0

ind - 1返回一个没有意义的矩阵。我需要使我的函数输出最小化的非整数值对。 – smars

+0

我明白了。谢谢。但这些仅仅是整数。我需要检查所有可能的非整数值。 – smars

相关问题