首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的多元非线性极小化

R中的多元非线性极小化
EN

Stack Overflow用户
提问于 2013-07-24 22:08:39
回答 2查看 3.8K关注 0票数 2

我需要最小化下面显示的目标函数,绿框中的变量将被引入公式中,而红色方框中的变量需要优化,每个变量都有一个起始值。到目前为止,优化是不受约束的。我把公式放在这里不是为了等待代码,而是为了让响应对函数有一个概念。到目前为止,我已经完成了以下工作:我搜索了线程,在一个玩具函数上尝试了nlm命令:

代码语言:javascript
复制
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,我将开始。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 22:18:18

通常,使用参数列表中的赋值运算符调用R函数会导致失败。这是一个<-=不同的领域。我不认为这会奏效:

代码语言:javascript
复制
 nlm(fn , a =c(10), x = c(100), hessian=TRUE)  # and it didn't

错误消息是信息丰富的,告诉您缺少参数p:

代码语言:javascript
复制
> 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
票数 2
EN

Stack Overflow用户

发布于 2016-01-27 23:07:11

实际上,我建议不要在函数中添加不需要优化的额外参数。如果您有复杂的参数名称,就更容易搞砸。

我会像这样扭曲你的职能:

代码语言:javascript
复制
fn = function(x,a) {sum(100*a+(2*x^2+5*x-7))}
f = function(x) {fn(x, 100)}
nlm(f, 10, hessian=TRUE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17845648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档