我希望在R中找到一个优化工具,它允许我确定输入参数的值(例如,介于0.001和0.1之间的特定值),这会导致我的函数产生所需的输出值。
我的函数接受一个输入参数并计算一个值。我希望此输出值与预定数字完全匹配,因此函数输出这两个值之间的差值的绝对值;当它们相同时,函数的输出为零。
我尝试了optimize()
,但似乎设置为最小化输入参数,而不是输出值。我也尝试了uniroot()
,但它产生了错误f() values at end points not of opposite sign
,这表明它不喜欢增加/减少输入参数会将输出值降低到某一点的事实,但超出了这一点然后再次增加它。
如果我遗漏了一些明显的东西,我会道歉 - 我对优化功能完全不熟悉。
答案 0 :(得分:2)
确实你错过了一些明显的东西:-)你应该/可以如何制定你的问题非常明显。
假设必须等于所需输出值的函数为f
。
定义满足
g
g <- function(x) f(x) - output_value
现在,您可以使用uniroot
查找g
的零。但您必须提供满足uniroot
要求的端点。即一个端点的g
值必须为正值,另一端点的值g
必须为负值(或者相反)。
示例:
f <- function(x) x - 10
g <- function(x) f(x) - 8
然后
uniroot(g,c(0,20))
会做你想要的但是
uniroot(g,c(0,2))
将发出错误消息values at end points not of opposite sign
。
您也可以使用优化功能,但是您希望最小化函数g
。为了让你直截了当:optimize
不最小化输入参数。彻底阅读帮助。