我需要最小化如下所示的目标函数,绿色框中的变量将被引入公式,红色框中的变量需要优化,每个变量都会有一个起始值。到目前为止,优化还没有受到限制。我把公式放在这里不是为了等待代码,而是为了让响应了解函数。到目前为止我所做的:我搜索了线程,我尝试了 nlm
命令玩具功能:
fn =function(x,a) {sum(100*a+(2*x^2+5*x-7))}
nlm(fn , a<-c(10),x<- c(100), hessian=TRUE)
但我无法获得最优值 (a) 并且我怀疑我在公式中存在一些错误,我使用这个公式作为解决下面公式的起点。我正在寻找的是,任何人都可以指出我将从中开始的 R 中合适的函数。
最佳答案
通常在参数列表中调用带有赋值运算符的 R 函数会产生失败。这是<-
的一个区域与 =
不同.我没想到这会起作用:
nlm(fn , a =c(10), x = c(100), hessian=TRUE) # and it didn't
错误消息是信息性的,告诉您缺少参数 p:
> fn =function(x,p) {sum(100*p[1]+(2*x^2+5*x-7))}
> nlm(fn , p=c(10),x = c(100), hessian=TRUE)
$minimum
[1] -4988507
$estimate
[1] -50090
$gradient
[1] 100
$hessian
[,1]
[1,] 0
$code
[1] 5
$iterations
[1] 6
关于r - R中的多元非线性最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845648/