楼主: 飞鹰翱翔
28880 8

[问答] 用R语言求函数极值 [推广有奖]

  • 1关注
  • 0粉丝

已卖:1份资源

大专生

63%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
523 点
帖子
46
精华
0
在线时间
62 小时
注册时间
2012-10-29
最后登录
2016-11-16

楼主
飞鹰翱翔 发表于 2013-8-27 21:09:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
哪位大神帮下忙,用牛顿法或Gauss-Seidel法求非线性函数的极值。跪谢了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 GAUSS USS SEI IDE

沙发
求证1加1 发表于 2013-8-27 21:35:04
如果不是特别复杂的话,用optim就行了,参数method用来选择方法,一般用BFGS和CG多一点吧,不过简单的函数的话效果基本上都差不多的。
希望对lz有用
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
飞鹰翱翔 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

个人主页,欢迎订阅http://chenangliu.info/

藤椅
qimuxiaoyao 发表于 2013-9-8 20:09:22
求证1加1 发表于 2013-8-27 21:35
如果不是特别复杂的话,用optim就行了,参数method用来选择方法,一般用BFGS和CG多一点吧,不过简单的函数的 ...
想问下,假如函数f有2个变量,即f(x,y),现在y=1,f(x,1)怎么实现?
f=function(x){sin(sqrt((x[1] - 5)^2 + (x[2] - 5)^2))/sqrt((x[1] - 5)^2 +(x[2]- 5)^2)}
想把x[2]用一些可变的常数给替换掉,变二元为动态的一元。

进而,更宽泛的问题是:给多变量,赋一个带有参数的值,怎么实现?不过这应该可以从上面例子推广。

板凳
统计R浪人 发表于 2013-9-8 21:46:15
qimuxiaoyao 发表于 2013-9-8 20:09
想问下,假如函数f有2个变量,即f(x,y),现在y=1,f(x,1)怎么实现?
f=function(x){sin(sqrt((x[1] - 5)^ ...
R 的非线性优化程序一般式optim()、nlm()和nlminb()。

例如
min f(x)=100(x[2]-x[1]^2)^2+(1-x[1])^2
#写出目标函数
obj<-function(x){
f<-c(10*(x[2]-x[1]^2), 1-x[1])
sum(f^2)
}
# 初 始 值 设 置
x0=c(-1.2,1)
# 求 解
nlm(obj,x0)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
qimuxiaoyao + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
求证1加1 发表于 2013-9-8 22:08:19
qimuxiaoyao 发表于 2013-9-8 20:09
想问下,假如函数f有2个变量,即f(x,y),现在y=1,f(x,1)怎么实现?
f=function(x){sin(sqrt((x[1] - 5)^ ...
首先,所谓动态的一元并不需要你想的这么复杂,不妨看的简单一点。一个一个来,关于f(x,1)的实现问题,这个你只需要在function里加一句x[2]<-1就可以了,其他依次类推,至于后面说的多个取值的优化问题,提供一个最简单也最直接打的思路,如果y取值不多的话,不妨全做一下,然后加个判断语句就ok了。

事实上你所提到的这个问题相当于一个有约束的优化问题,而optim当然也包括ls说的这些基本都是用来做无约束优化,所以要想直接完全有难度。但是也并不是完全没有办法,CRAN有专门关于优化的Task View,你可以去参考下,因为我对优化并不是很专业所以也不便发表意见,希望对你有用。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
qimuxiaoyao + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

个人主页,欢迎订阅http://chenangliu.info/

地板
qimuxiaoyao 发表于 2013-9-9 00:22:11
求证1加1 发表于 2013-9-8 22:08
首先,所谓动态的一元并不需要你想的这么复杂,不妨看的简单一点。一个一个来,关于f(x,1)的实现问题,这 ...
已经很好了。

4楼里说的nlm(),nlminb()函数,第一次见,help了下,功能不错。以后应该会常用

不过我现在最需要的就是“只需要在function里加一句x[2]<-1”,之前完全没想到,然后程序就做不下去了。
因为现在要对Gauss-Seidel迭代编程,而G-S要求其他向量固定,每次只动一个向量,所以需要用到这样的想法。而且x[2]还可以赋一个(已经被赋了值的变量),这样就太有用了。while再加几个循环赋值,应该够用了。
多谢。

7
kerrydu 发表于 2014-4-25 10:50:12
求证1加1 发表于 2013-9-8 22:08
首先,所谓动态的一元并不需要你想的这么复杂,不妨看的简单一点。一个一个来,关于f(x,1)的实现问题,这 ...
版主,能给一下“CRAN有专门关于优化的Task View”的网址么?我没找到。拜托了,谢谢。

8
求证1加1 发表于 2014-4-25 15:06:11
kerrydu 发表于 2014-4-25 10:50
版主,能给一下“CRAN有专门关于优化的Task View”的网址么?我没找到。拜托了,谢谢。
http://cran.r-project.org/web/views/Optimization.html
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
kerrydu + 5 + 5 + 5 热心帮助其他会员

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

个人主页,欢迎订阅http://chenangliu.info/

9
kerrydu 发表于 2014-4-25 17:03:39
求证1加1 发表于 2014-4-25 15:06
http://cran.r-project.org/web/views/Optimization.html
非常感谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 22:54