当前位置:文档之家› 修正牛顿法

修正牛顿法

《数值优化》实验报告
实验[2] [修正牛顿法]
专业学号姓名日期
1 实验目的
练习matlab程序设计,深刻理解修正牛顿法,通过计算机计算迭代计算近似解
2 实验内容
利用程序求解无约束优化问题
f(x)=100(x1^2-x2^2)^2+(x1-1)^2在R^2上的最小值
3 算法设计
Function[x,val,k]=revisenm(fun,gfun,hess,x0)
功能:用牛顿修正法求解无约束问题:min f()
输入:x0是初始点,fun gfun hess分别是求目标函数值梯度hesse矩阵函数输入:x val 分别是近似最优点和最优值,k是迭代次数
4 程序代码
(fun,x0)+sigma*rho^m*g'*d)
mk=m;break;
end;
m=m+1;
end;
x0=x0+rho^mk*d;
val=feval (fun,x0);
g0=g; d0=d;
k=k+1;
end;
x=x0;
val=feval (fun,x)
function f=fun(x)
f=100*(x(1)*x(1)-x(2)*x(2))^2+(x(1)-1)^2;
end;
function g=gfun(x)
g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]'; end;
5 运行结果
有未知错误,暂时没有运行出正确结果
6 结果分析
选初始值x0=[-1.2 1]
没有运行出正确结果。

程序可以运行,但是没有正确结果,程序存在bug 修正牛顿法避免了牛顿法的缺陷,使得在每一个迭代点处都保证f下降。

相关主题