我在做毕业论文时,调试程序时,也遇到了与楼主相类似的问题,我把代码贴出来:各位高手大侠看看点评一下:
function [xmin,funval]=TR(fun,x0,delta0,x)
delta=delta0;
eps=1.0e-4;
n=length(x0);
H=eye(n);
mu=0.25;
yita=0.75;
normg=1;
while normg>eps
fx=subs(fun,x,x0);
gradfun=jacobian(fun,x);
g=subs(gradfun,x,x0);%g为行向量
normg=norm(g);
[s,fs]=trustP(fun,g,H,delta,x,s0);%s应该为行向量
x1=x0+s;%x1为列向量
fx1=subs(fun,x,x1);
rho=(fx-fx1)/(-fs);
if rho>yita
x0=x0+s;%x0为列向量
else
x0=x0;
end
if rho<=mu
delta=0.5*delta;
else
if rho>=yita
delta=2*delta;
else
delta=delta;
end
end
g1=subs(gradfun,x,x1