帮你整理了一下,整个代码逻辑比较混乱
syms x1 x2 n;
x=[x1 x2]';
f=3*x1^2-4*x1*x2+x2^2+x1-3*x2+8;
g=[6*x1-4*x2+1,-4*x1+2*x2-3]';
h=[6,-4;-4,2];
h0=inv(h);
eps1=0.01;
k=0;
tol=1;
x0=[0,0]';
while tol>eps1
g0=subs(g,[x1,x2],[0,0]);
m=eval(norm(g0));
if m<eps1
minf=subs(f,{x1,x2},{x0(1,1),x0(2,1)});
x=x0
break
else
d0=-h0*g0;
fn=subs(f,[x1,x2],[0,0]);
dfn=diff(fn);
n0=solve(dfn);
[r,s]=size(n0);
d2fn=diff(fn,2);
for i=1:s
I(i)=limit(d2fn,n,n0(i));
temp=double(I(i));
if temp>0
n=n0;
end;
end;
end;
x0=x0+n*d0;
tol=m;
k=k+1;
end
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!