内容发布更新时间 : 2025/1/9 10:59:31星期一 下面是文章的全部内容请认真阅读。
clearall;closeall;clc; symsx1x2t;
f=2*x1^2+x2^2-x1*x2;
f_grad=[diff(f,x1);diff(f,x2)]; X0=[1;1]; n=10;
epsonal=0.01; fx=inline(f);
fx_grad=inline(f_grad); X=X0;
fx0=fx(X(1),X(2));
fx0_grad=fx_grad(X(1),X(2)); while 1
if fx0_grad.'*fx0_grad<=epsonal break; end
P0=-fx0_grad; k=0; while 1 Xk=X+t*P0;
fx1=fx(Xk(1),Xk(2));
[tk,y]=equation_extremum(fx1,t,-1,5,epsonal); Xk=X+tk*P0;
fx0_k=fx(Xk(1),Xk(2));
fx0_grad_k=fx_grad(Xk(1),Xk(2)); if fx0_grad_k.'*fx0_grad_k<=epsonal fx0_grad=fx0_grad_k; break; end
if k+1==n
X=X; else
lamdak=fx0_grad_k.'*fx0_grad_k/(fx_grad(X(1),X(2)).'*fx_grad(X(1),X(2))); P0=-fx0_grad_k+lamdak*P0; X=Xk; k=k+1; end end end Xk fx0_k
运行结果: Xk =
1.0e-03 *
0.0486 0.5350 fx0_k =
2.6495e-07