1、1大连民族学院数 学 实 验 报 告课程: 最优化方法 实验题目: 共轭梯度法 系别: 理学院 专业: 信息与计算科学 姓名: 历红影 班级: 信息 102班 指导教师: 葛仁东 完成学期: 2013 年 10 月 5 日2实验目的:1. 熟悉 Matlab上机环境,了解 Matlab的相关知识;2. 学习无约束最优化方法,加深对共轭梯度法的理解;3. 学习共轭梯度的算法并编写相应的 Matlab程序, ;4. 学会利用共轭梯度法求解最优化问题。实验内容:(问题、数学模型、要求、关键词)问题:用 FR 共轭梯度法解极小化问题: 12213)(minxxxf 数学模型:共轭梯度法是一个典型的共轭
2、方向法,它的每一个共轭方向是相互共轭的而这些搜索方向 仅仅是负梯度方向 与上一次迭代的搜索方向 的组合。kdkg1kd因此,存储量少计算方便记: 1kkdd左乘 并使得GTk10THestenes-Stiefel)11kTkdg关键字: 共轭梯度 极小化问题实验方法和步骤(包括数值公式、算法步骤、程序):数值公式:4可以改写 为:11kTkGdgevsFltchrgWolfCwdkTkkTR,11注意到对于正定二次函数:kkrbGx其中 是方程组 的残量,以及:krbGxk kTkTkkk Gdrdgr,1下面给出关于正定二次函数极小化的共轭梯度法。算法步骤:Step 1:(初始步)给出 ;计
3、算 令0,xbGxr00:,0krdStep 2:如果 停止krStep 3:计算: kkTkdxGr1kkkTkkdrdr1步 4 令 转步 2,1k程序:function x,iter=cg(G,b,x0,max_iter)x = x0;tolerance=1.0e-6;fprintf(n x0=);fprintf(%10.6f,x0);r=G*x-b;d=-r;5for k=1:max_iterif norm(r,2) G=3 -1;-1 1;b=2 0;x0 =-2 4;max_iter=1000;fprintf(n);fprintf(= n);y,iter=cg(G,b,x0,max
4、_iter);fprintf(n);fprintf(Iterative number: n %d n,iter);fprintf(Solution:n);fprintf(%10.6f,y);fprintf(nn=nn)5输出结果为:= x0= -2.000000 4.000000x1= 1.529412 2.235294x2= 1.000000 1.000000Algorithm finds a soluntion!Iterative number: 2 Solution:1.000000 1.000000=结果分析:函数从初始点 开始迭代,计算两次,得出最优解 。Tx)4,2(0 Tx)1,(2实验的启示:1.通过这次实验,更加熟悉了共轭梯度法求解最优化问题,加深了对解共轭梯度法的计算方法的理解。2.利用 Matlab 的巨大功能来帮助我们学习,进一步提高我们的学习效率。3.了解到 Matlab 的功能之大,所以我们要好好的学习这个软件。