原程序代码
function [min,n]=Fastest_Dirction(x0,y0,eps)
%最速下降法,给定初始点,以及误差
%结果为收敛答案,以及迭代次数
syms x_1;
syms x_2;
f=(x_1-2)^4+(x_1-2)^2*x_2^2+(x_2+1)^2; %计算的函数
v=[x_1,x_2];
J=jacobian(f,v);
Tidu=[subs(J(1),[x_1,x_2],[x0,y0]),subs(J(2),[x_1,x_2],[x0,y0])];
temp=sqrt((Tidu(1))^2+(Tidu(2))^2);
x1=x0;y1=y0;
n=0;
syms kk;
while(temp>eps) %进行迭代
d=-Tidu; %下降方向,负梯度方向
f1=x1+kk*d(1);f2=y1+kk*d(2);
fT=[subs(J(1),[x_1,x_2],[f1,f2]),subs(J(2),[x_1,x_2],[f1,f2])];
Phi=sqrt((fT(1))^2+(fT(2))^2);
lm=Gold(Phi,0,1,0.00001); %调用近似黄金分割法,初始搜索区间定为[0,1],eps=0.00001
x0=x1+lm*d(1