我怎样才能找到这个等式的最大值

时间:2014-06-08 08:46:10

标签: r optimization

我有一个功能,我想找到它的最大值

deposit_likelood <- function(a1,a2) { (0.5672 - 0.092 * a1 + 0.0044 * a2^2 }

如何在a1 should be between -3 and +3a2 should be between 0.5 and 0.9时最大化deposit_likelood optimize(deposit_likelood, interval=c(-3,3,0.5,0.9), maximum=TRUE)

我尝试使用optimize()函数:

Error in a2^2 : 'a2' is missing

但是我收到了这个错误:

{{1}}

1 个答案:

答案 0 :(得分:4)

我希望你能从暗示中为自己解决这个问题(因为这通常是一种更好的学习方法)但是你走了。

注意我必须更改函数,因为你的问题中没有有效的函数,还要解压缩参数:

> deposit_likelood = function(a) {a1=a[1];a2=a[2];return (0.5672 - 0.092 * a1 + 0.0044 * a2^2) }

我们给optim一个起始点(在你的框约束中的某个地方),告诉它使用带有框约束的方法,并指定约束:

> optim(c(0,.7),deposit_likelood,method="L-BFGS-B",lower=c(-3,.5), upper=c(3,.9), control=list(fnscale=-1))
$par
[1] -3.0  0.9

$value
[1] 0.846764

$counts
function gradient 
       7        7 

$convergence
[1] 0

$message
[1] "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL"

返回值的$para1分别为a2$convergence代码零告诉您它工作正常。