楼主: dcxm1508
2284 1

[问答] 牛顿迭代法求最小值,局部优化 [推广有奖]

  • 0关注
  • 0粉丝

大专生

48%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1212 点
帖子
30
精华
0
在线时间
6 小时
注册时间
2017-3-1
最后登录
2017-12-17

楼主
dcxm1508 发表于 2017-3-22 17:59:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
#一阶偏导
f1=function(para){
  matrix(c(2*para[1]+20*para[2]+4*(para[1]-para[4])^3,
   20*para[1]+200*para[2]+4*(para[2]-2*para[3])^3,
   10*para[3]-10*para[4]-8*(para[2]-para[3])^3,
   -10*para[3]+10*para[2]-4*(para[1]-para[4])^3),4,1)
}
#二阶偏导黑塞矩阵
f2=function(para){
  matrix(c(2+12*(para[1]-para[4])^2,20,0,-12*(para[1]-para[4])^2,
    20,200+12*(para[2]-2*para[3])^2,-24*(para[2]-2*para[3])^2,0,
    0,-24*(para[2]-2*para[3])^2,10+48*(para[2]-2*para[3])^2,-10,
    -12*(para[1]-para[4])^2,0,-10,10+12*(para[1]-para[4])^2),4,4)
}

eps=10^(-6)
para1=c(3,-1,0,1)
for(i in 1:30){
    step=as.vector(solve(f2(para1))%*%f1(para1))
    para2=para1-step
    dist=sqrt(sum((para2-para1)^2))
    para1=para2
    if(dist<eps) break
}
para2
Error in solve.default(f2(para1)) :
  系统计算上是奇异的: 倒条件数=9.84167e-20
> para2
[1] -3.482181e+15  2.785745e+15  1.392872e+15 -3.482181e+15
黑塞矩阵是奇异的应该怎么处理?

二维码

扫码加我 拉你入群

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

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


沙发
foozhencheng 学生认证  发表于 2017-5-28 13:13:57 来自手机
是一定要自己写优化算法么?可以用optim啊

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-21 09:57