用MATLAB实现共轭梯度法求解实例.doc

上传人:李医生 文档编号:5657242 上传时间:2020-07-20 格式:DOC 页数:7 大小:183KB
返回 下载 相关 举报
用MATLAB实现共轭梯度法求解实例.doc_第1页
第1页 / 共7页
用MATLAB实现共轭梯度法求解实例.doc_第2页
第2页 / 共7页
用MATLAB实现共轭梯度法求解实例.doc_第3页
第3页 / 共7页
用MATLAB实现共轭梯度法求解实例.doc_第4页
第4页 / 共7页
用MATLAB实现共轭梯度法求解实例.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《用MATLAB实现共轭梯度法求解实例.doc》由会员分享,可在线阅读,更多相关《用MATLAB实现共轭梯度法求解实例.doc(7页珍藏版)》请在三一文库上搜索。

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 countToo many input arguments。查阅了些书籍,上网求助,最后查明原因是自定义的M文件名称与Matlab内部函数名相似,导致无法运行。浪费了大量的时间与精力,庆幸的是,经过自己的努力,纠正错误,按时完成了作业。研究生培养过程中,必须系统地学习编程软件,达到精通熟练的程度,并能够自主开发一些小程序,我相信在以后学习工作中它会提供更大的帮助。参考文献:1 孙靖民,哈尔滨工业大学.机械优化设计.北京:机械工业出版社,2006.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1