Newton迭代法求无约束目标函数极小值matlab实现
1、算法思想

2、matlab代码实现
function [min_x,min_f,k]=newton_min(f,x0,var)
%%%输入目标函数f,初始点x0,以及自变量var;
%%%利用Newton迭代法计算无约束目标函数极小值;
%%%输出最小值点min_x,最小值min_f以及迭代次数k。
j=jacobian(f,var); %计算函数的雅可比矩阵,!!!知识点:梯度恰好是雅可比矩阵的转置;
J=jacobian(j,var); %计算函数的Hesse矩阵,恰好是雅可比矩阵的雅可比矩阵;
temp1=subs(j,var,x0); %subs函数;不明白的可以去问问度娘!
g=(double(temp1))'; %sym类型转换为double型再转置即为f再x0点的梯度;
G=double(subs(J,var,x0)); %计算Hesse矩阵在x0点的值;
k=0;
x=x0';
eps=10^(-5); %默认精度为10^(-5);
while norm(g,2)>eps
x=x-G\g; %Newton迭代法格式,G\g与inv(G)*g等价,但计算效率更高;
k=k+1;
temp2=subs(j,var,x');
g=(double(temp2))';
G=double(subs(J,var,x'));
end
min_x=x; %极小值点
min_f=subs(f,var,min_x'); %极小值
3、实例检验

4、函数调用及运行结果
