|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
:L最优化牛顿法求极值的问题!
g为f的梯度,h为hessian阵,原理即为x(k+1)=x(k)-h^(-1)*g 用其迭代!我迭代一次的结果是对的,但再往下就不对了,迭代不出结果!还有迭代的终止条件应选什么?麻烦帮我看一看!
clear
f='100*(x2-x1^2)^2+(1-x1)^2';
x0=[-1.2 ;1];
n=2;
k=0;
ee=1e-6;
xx=sym(x0);
for i=1:1:n
xx(i)=sprintf('x%d',i);
df(i)=diff(f,xx(i));
end
h=[diff(df(1),xx(1)) diff(df(1),xx(2));diff(df(2),xx(1)) diff(df(2),xx(2))];
g=[df(1) ;df(2)];
%while(1)
for j=1:10
k=k+1;
for i=1:1:n
h=subs(h,xx(i),x0(i));
end
for i=1:1:n
g=subs(g,xx(i),x0(i));
end
x1=x0-inv(h)*g;
for i=1:2
f=subs(f,xx(i),x1(i));
end
if norm(f)<ee
break
end
x0(1)=x1(1);
x0(2)=x1(2);
disp([k,vpa(x1(1),6),vpa(x1(2),6),vpa(f,6)]);
end |
|