全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2285 1
2017-03-22
#一阶偏导
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
黑塞矩阵是奇异的应该怎么处理?

二维码

扫码加我 拉你入群

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

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

全部回复
2017-5-28 13:13:57
是一定要自己写优化算法么?可以用optim啊
二维码

扫码加我 拉你入群

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

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

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群