繁体   English   中英

使用R中的优化在z的最大值找到x和y

[英]Finding x and y at the maximum point of z using optim in R

我有一个函数,其中xy同时变化。 xy的指定范围内绘制此函数的结果如下图所示(请参见图片下面的Full R代码 )。

题:

我想知道在R中使用优化命令( optimnlm等),如何在此函数中获得z的最大点处的xy

在此处输入图片说明

这是我的R代码:

Data = c( 182, 201, 221, 234, 237, 251, 261, 266, 267, 273, 
          286, 291, 292, 296, 296, 296, 326, 352, 359, 365 )

x = seq(200, 340, len = 30)

y = sqrt( seq(800, 8500, len = 30) )

f = function(x, y) Reduce(`*`, Map(dnorm, x = Data, mean = list(x), sd = list(y)))

z = outer(x, y, f)

persp(x, y, z , theta = 55, phi = 15, expand = 0.5, ticktype = "detailed", col = 'gold')

这是一个非常简单的原始代码,是朝着解决优化问题的第一步迈进的第一步:

Data = c( 182, 201, 221, 234, 237, 251, 261, 266, 267, 273, 
          286, 291, 292, 296, 296, 296, 326, 352, 359, 365 )

f = function(x) Reduce(`*`, Map(dnorm, x = Data, mean = list(x[1]), sd = list(x[2])))*(-10^50)

optim(c(200,100),f, method="BFGS", control=list(maxit=100000))

$par
[1] 277.59967  48.28371

$value
[1] -9981.604

$counts
function gradient 
    1723     1693 

$convergence
[1] 0

$message
NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM