文档介绍:数学与计算科学学院
实验报告
实验项目名称使用精确搜索算法确定步长的牛顿法
所属课程名称最优化方法
实验类型算法编程
实验日期 2015年11月13号
班级信
学号 201
姓名
成绩
一、实验概述:
【实验目的】
掌握精确搜索算法确定步长的最速下降法;
使用计算机语言表达最优化方法。
【实验原理】
设f(x)是二次可微函数, ,又设f(x)的极小点的一个估计,我们把f(x)在展开成Taylor级数,并取二阶近似
其中是f(x)在处的Hesse矩阵。为求的平稳点,令
=0
即
设可逆,则有为牛顿法的迭代公式。这样知道后,算出在这一点处目标函数的梯度和Hesse矩阵的逆,代入,便得到,用k+1代替k,再计算,又得到,以此类推,产生序列{}。
【实验环境】
计算机 VC++
二、实验内容:
【实验方案】
列举例题
手工计算
将计算步骤等实现程序化
实验结果分析
【实验过程】
例题
min
计算步骤:
语言设计流程图:开始
k:=0
收敛于
计算
计算,
设定初点,
输出
结束
是
否
【实验结论】
0
1
2
3
…
…
【实验小结】(收获体会)
通过本次实验,初步解了最优化方法在机器语言上的实现,更深刻的了解了使用精确搜索算法确定步长的牛顿法,理解和掌握了他们的优缺点。同时也认识了自己的缺点,编程能力弱,需要极大的提高。在以后的实验中会努力学习,争取把这门课学好。
三、指导教师评语及成绩:
评语
评语等级
优
良
中
及格
不及格
,字迹清楚,文字叙述流畅,逻辑性强
P
P
(实验步骤详细,记录完整,数据合理,分析透彻)
P
4实验结论正确.
P
成绩:
指导教师签名:
批阅日期:
附录1:源程序
function [x1 k]=newton(x1,j) %x1为初始点
x1=[8,8]';
j=1e-10;
hs=inline('(x-1)^4+y^2');
ezcontour(hs,[-10 10 -10 10]);
hold on;
syms x y f=(x-1)^4+y^2;
grad1=jacobian(f,[x,y]);%求梯度
grad2=jacobian(grad1,[x,y]);%求Hesse矩阵
k=0;
while 1
grad1z=subs(subs(grad1,x,x1(1)),y,x1(2));%求梯度值 grad2z=subs(subs(grad2,x,x1(1)),y,x1(2));%求Hesse矩阵 x2=x1-inv(grad2z)*(grad1z');%牛顿迭代公式
if norm(x1-