我有一个功能logit.aic(x,y)
,提供输出,给出两个输入x
和y
。如何选择使函数f(a,b)的输出最小化的输入(a,b)?
限制: 两个输入可以是和之间的任何正的非整数值。另外,它应该是x < y
。
例如:logit.aic(20,80)
返回值41.38729。
问题:我需要找到最小化我的函数输出的一对输入。
在此先感谢。
我有一个功能logit.aic(x,y)
,提供输出,给出两个输入x
和y
。如何选择使函数f(a,b)的输出最小化的输入(a,b)?
限制: 两个输入可以是和之间的任何正的非整数值。另外,它应该是x < y
。
例如:logit.aic(20,80)
返回值41.38729。
问题:我需要找到最小化我的函数输出的一对输入。
在此先感谢。
“网格搜索”就是为此而设计的。
提供该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
返回一个矩阵,是没有意义的。我需要使我的函数输出最小化的非整数值对。
这意味着你有多个最小值。结果的每一行都是一行。
不,它只需要单个值。问题是所需的输入不是一个整数,所以我需要一些方法来自动最小化。 – smars