用MATLAB实现共轭梯度法求解实例_第1页
用MATLAB实现共轭梯度法求解实例_第2页
用MATLAB实现共轭梯度法求解实例_第3页
用MATLAB实现共轭梯度法求解实例_第4页
用MATLAB实现共轭梯度法求解实例_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用MATLAB实现共轭梯度法求解实例康福 2011037100311 无约束优化方法1.1 无约束优化方法的必要性一般机械优化设计问题,都是在一定的限制条件下追求某一指标为最小,它们都属于约束优化问题。但是为什么要研究无约束优化问题? (1)有些实际问题,其数学模型本身就是一个无约束优化问题。 (2)通过熟悉它的解法可以为研究约束优化问题打下良好的基础。 (3)约束优化问题的求解可以通过一系列无约束优化方法来达到。所以无约束优化问题的解法是优化设计方法的基本组成部分,也是优化方法的基础。(4)对于多维无约束问题来说,古典极值理论中令一阶导数为零,但要求二阶可微,且要判断海赛矩阵为正定才能求得极

2、小点,这种方法有理论意义,但无实用价值。和一维问题一样,若多元函数F(X)不可微,亦无法求解。但古典极值理论是无约束优化方法发展的基础。 1.2共轭梯度法目前已研究出很多种无约束优化方法,它们的主要不同点在于构造搜索方向上的差别。 (1)间接法要使用导数,如梯度法、(阻尼)牛顿法、变尺度法、共轭梯度法等。(2)直接法不使用导数信息,如坐标轮换法、鲍威尔法单纯形法等。用直接法寻找极小点时,不必求函数的导数,只要计算目标函数值。这类方法较适用于解决变量个数较少的(n 20)问题,一般情况下比间接法效率低。间接法除要计算目标函数值外,还要计算目标函数的梯度,有的还要计算其海赛矩阵。 搜索方向的构成问

3、题乃是无约束优化方法的关键。共轭梯度法是沿着共轭方向进行搜索,属于共轭方向法中的一种,该方法中每一个共轭向量都是依赖于迭代点处的负梯度而构造出来。共轭梯度法作为一种实用的迭代法,它主要有下面的优点:(1)算法中,系数矩阵的作用仅仅是用来由已知向量P产生向量W=AP,这不仅可充分利用的稀疏性,而且对某些提供矩阵较为困难而由已知向量P产生向量W=AP又十分方便的应用问题是很有益的。(2)不需要预先估计任何参数就可以计算,这一点不像SOR等;(3)每次迭代所需的计算,主要是向量之间的运算,便于并行化。共轭梯度法原理的知识较多,请详见机械优化设计第四章的第四、五节。图1为共轭梯度法的程度框图图1为共轭

4、梯度法的程度框图2 设计题目及要求2.1设计题目用共轭梯度法求二次函数 的极小点及极小值。2.2设计要求(1) 使用matlab编写程序,熟练撑握matlab编程方法。(2) 学习并撑握共轭梯度法的原理、方法及应用,并了解不同无约束优化方法的区别、优缺点及特殊要求。(3) 编写程序,计算出二次函数的极小点及极小值,并适当选取不同的初始点及迭代精度精度,分析比较结果。三计算步骤3.1计算求解解:已知初始点1,1T 迭代精度 1)第一次沿负梯度方向搜寻计算初始点处的梯度:为一维搜索最佳步长,应满足得: 2)第二次迭代 代入目标函数由 得从而有:因收敛。3.2运行与程序运行:打开matlab,确定c

5、onjugate_grad_2d.m文件夹为当前目录。 在命令窗中输入:f=conjugate_grad_2d(1,1,0.001) 选择不同的初始点坐标0,0,0,1,1,0,和迭代精度0.01,0.0001,进行运行时,需要多次调用conjugate_grad_2d函数。程序及说明:function f=conjugate_grad_2d(x0,t)%用共轭梯度法求已知函数f(x1,x2)=x12+2*x22-4*x1-2*x1*x2的极值点%已知初始点坐标:x0%已知收敛精度:t%求得已知函数的极值:fx=x0;syms xi yi a; %定义自变量,步长为符号变量f=xi2+2*yi

6、2-4*xi-2*xi*yi; %创建符号表达式ffx=diff(f,xi); %求表达式f对xi的一阶求导fy=diff(f,yi); %求表达式f对yi的一阶求导fx=subs(fx,xi,yi,x0); %代入初始点坐标计算对xi的一阶求导实值fy=subs(fy,xi,yi,x0); %代入初始点坐标计算对yi的一阶求导实值fi=fx,fy; %初始点梯度向量count=0; %搜索次数初始为0while double(sqrt(fx2+fy2)>t %搜索精度不满足已知条件 s=-fi; %第一次搜索的方向为负梯度方向 if count<=0 s=-fi; else s=

7、s1; end x=x+a*s; %进行一次搜索后的点坐标 f=subs(f,xi,yi,x); %构造一元搜索的一元函数(a) f1=diff(f); %对函数(a)进行求导 f1=solve(f1); %得到最佳步长a if f1=0 ai=double(f1); %强制转换数据类型为双精度数值 else break %若a=0,则直接跳出循环,此点即为极值点 end x=subs(x,a,ai); %得到一次搜索后的点坐标值 f=xi2+2*yi2-4*xi-2*xi*yi; fxi=diff(f,xi); fyi=diff(f,yi); fxi=subs(fxi,xi,yi,x); f

8、yi=subs(fyi,xi,yi,x); fii=fxi,fyi; %下一点梯度向量 d=(fxi2+fyi2)/(fx2+fy2); s1=-fii+d*s; %下一点搜索的方向向量 count=count+1; %搜索次数加1 fx=fxi; fy=fyi; %搜索后终点坐标变为下一次搜索的始点坐标endx,f=subs(f,xi,yi,x),count %输出极值点,极小值以及搜索次数四运行结果及分析此程序运行2秒后终止,结果如下:x = 4 2 极小点坐标f = -8 极小值数值count = 2 迭代次数ans = -8分析可得:(1) 由结果看出,程序经过2次迭代,得到二次函数的

9、极小值坐标4,2,极小值-8;表明共轭梯度法收敛速度较快,计算量较小,稳定性高。(2) 选择不同的初始点坐标0,0,0,1,1,0,1,1,都是经过2次迭代得到一致的结果;表明共轭梯度法初始点的选择不影响收敛结果。(3) 选择迭代精度0.0001,程序将近运行15秒才结束;可知迭代精度越高时,程序运行的时候越长,所以在实际应用中选择适当的迭代精度,有利于提高计算的效率。(4) 从共轭梯度法的计算过程可以看出,第一个搜索方向取作负梯度方向,这就是最速下降法。其余各步的搜索方向是将负梯度偏转一个角度,也就是对负梯度进行修正。所以共轭梯度法实质上是对最速下降法进行的一种改进,故它又被称作旋转梯度法。

10、五结束语优化设计是是机械行业发展起来的一门新学科,将最优化原理和计算机应用于设计领域,为工程设计提供一种重要的科学设计方法。利用它,人们可以从众多的设计方案中寻找最佳设计方案,从而大大提高设计效率和质量,广泛应用于各个工业部门。在自然科学和工程技术中很多问题的解决常常归结为约束优化或无约束优化的问题。首先根据实际的机械问题建立相应的数学模型,即应用数学形式描述实际设计问题。同时需要用专业的知识确定设计的限制条件和所追求的目标,确立各设计变量之间的相互关系等。一旦建立数学模型,应用数学规划理论的方法,根据数学模型的特点可以选择适当的优化方法,进而可以选择适当的计算机程序,以计算作为工具求得最佳优

11、化设计参数。通过学习发现,共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。如何把实际的工程技术问题转化为理论的数学模型,进行分析运算求解,是检验我们是否学好这一课的关键。这可以让我们在以后的研究生生涯中有更加透彻的理解能力,扎实地撑握机械知识,培养创造性思维,专业技能有新的提高。通过这次作业的完成,越来越觉得数学方法在机械

12、优化设计中的重要性。无论是优化设计,CAD,CAE,其理论支撑都是来自高等数学、数值分析、矩阵分析这几门课程,这让我对原本枯燥无味的数学课程,又有了新的态度,新的激情。认真学习好数学,理论联系实践,同时借助于强大的计算机工具,解决实际问题。Matlab是一种强大的科学计算工具,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种有力的工具。在使用Matlab编写程序时,对于编程的基本规则及函数的调用缺乏清晰的认识,程序运行中经常出现错误,一点一滴地调试再纠正。比如:程序运行过程中经常出现错误:Error using =>Too many input arguments。查阅了些书籍

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论