阻尼牛顿法代码
function res_x=fxnewton(f,x,n,x0,e)%阻尼牛顿法
syms t;
h=hessian(f);
h_1=inv(h);%海塞矩阵的逆
h_1=double(h_1);
grad=gradient(f,x);%一维求导矩阵
g1=subs(grad,x,x0);
d=-g1
index=0;
while(norm(g1)>e)%开始迭代
d=double(d);
s0=h_1*d;%计算搜索方向
x0=x0+t*s0';
f_t=subs(f,x,x0);
df_t=diff(f_t,t);
res_t=solve(df_t);
tk=res_t(1)
x0=double(subs(x0,t,tk))
%沿s0一维搜索得到新的点
% s0=transpose(s0)
% [a,b]=Newton_jintui(f,x,x0,0.1,s0);
% x0=Newton_Golden(f,x,a,b)
g1=subs(grad,x,x0);
d=-g1;
index=index+1
end
res_x=x0;
index
end