#一阶偏导
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
黑塞矩阵是奇异的应该怎么处理?


雷达卡




京公网安备 11010802022788号







