分享
分销 收藏 举报 申诉 / 6
播放页_导航下方通栏广告

类型用MATLAB实现共轭梯度法求解实例doc资料.doc

  • 上传人:精****
  • 文档编号:4134072
  • 上传时间:2024-07-31
  • 格式:DOC
  • 页数:6
  • 大小:182KB
  • 下载积分:6 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    MATLAB 实现 共轭 梯度 求解 实例 doc 资料
    资源描述:
    用MATLAB实现共轭梯度法求解实例 康福 201103710031 一. 无约束优化方法 1.1 无约束优化方法的必要性 一般机械优化设计问题,都是在一定的限制条件下追求某一指标为最小,它们都属于约束优化问题。但是为什么要研究无约束优化问题? (1)有些实际问题,其数学模型本身就是一个无约束优化问题。 (2)通过熟悉它的解法可以为研究约束优化问题打下良好的基础。 (3)约束优化问题的求解可以通过一系列无约束优化方法来达到。所以无约束优化问题的解法是优化设计方法的基本组成部分,也是优化方法的基础。 (4)对于多维无约束问题来说,古典极值理论中令一阶导数为零,但要求二阶可微,且要判断海赛矩阵为正定才能求得极小点,这种方法有理论意义,但无实用价值。和一维问题一样,若多元函数F(X)不可微,亦无法求解。但古典极值理论是无约束优化方法发展的基础。 1.2共轭梯度法 目前已研究出很多种无约束优化方法,它们的主要不同点在于构造搜索方向上的差别。 (1)间接法——要使用导数,如梯度法、(阻尼)牛顿法、变尺度法、共轭梯度法等。 (2)直接法——不使用导数信息,如坐标轮换法、鲍威尔法单纯形法等。 用直接法寻找极小点时,不必求函数的导数,只要计算目标函数值。这类方法较适用于解决变量个数较少的(n ≤20)问题,一般情况下比间接法效率低。间接法除要计算目标函数值外,还要计算目标函数的梯度,有的还要计算其海赛矩阵。 搜索方向的构成问题乃是无约束优化方法的关键。 共轭梯度法是沿着共轭方向进行搜索,属于共轭方向法中的一种,该方法中每一个共轭向量都是依赖于迭代点处的负梯度而构造出来。共轭梯度法作为一种实用的迭代法,它主要有下面的优点: (1)算法中,系数矩阵A的作用仅仅是用来由已知向量P产生向量W=AP,这不仅可充分利用A的稀疏性,而且对某些提供矩阵A较为困难而由已知向量P产生向量W=AP又十分方便的应用问题是很有益的。 (2)不需要预先估计任何参数就可以计算,这一点不像SOR等; (3)每次迭代所需的计算,主要是向量之间的运算,便于并行化。 共轭梯度法原理的知识较多,请详见《机械优化设计》第四章的第四、五节。 图1为共轭梯度法的程度框图 图1为共轭梯度法的程度框图 二. 设计题目及要求 2.1设计题目 用共轭梯度法求二次函数 的极小点及极小值。 2.2设计要求 (1) 使用matlab编写程序,熟练撑握matlab编程方法。 (2) 学习并撑握共轭梯度法的原理、方法及应用,并了解不同无约束优化方法的区别、优缺点及特殊要求。 (3) 编写程序,计算出二次函数的极小点及极小值,并适当选取不同的初始点及迭代精度精度,分析比较结果。 三.计算步骤 3.1计算求解 解:已知初始点[1,1]T 迭代精度 1)第一次沿负梯度方向搜寻 计算初始点处的梯度: 为一维搜索最佳步长,应满足 得: 2)第二次迭代 代入目标函数 由 得 从而有: 因 收敛。 3.2运行与程序 运行:打开matlab,确定conjugate_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)=x1^2+2*x2^2-4*x1-2*x1*x2的极值点 %已知初始点坐标:x0 %已知收敛精度:t %求得已知函数的极值:f x=x0; syms xi yi a; %定义自变量,步长为符号变量 f=xi^2+2*yi^2-4*xi-2*xi*yi; %创建符号表达式f fx=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; %搜索次数初始为0 while double(sqrt(fx^2+fy^2))>t %搜索精度不满足已知条件 s=-fi; %第一次搜索的方向为负梯度方向 if count<=0 s=-fi; else s=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=xi^2+2*yi^2-4*xi-2*xi*yi; fxi=diff(f,xi); fyi=diff(f,yi); fxi=subs(fxi,{xi,yi},x); fyi=subs(fyi,{xi,yi},x); fii=[fxi,fyi]; %下一点梯度向量 d=(fxi^2+fyi^2)/(fx^2+fy^2); s1=-fii+d*s; %下一点搜索的方向向量 count=count+1; %搜索次数加1 fx=fxi; fy=fyi; %搜索后终点坐标变为下一次搜索的始点坐标 end x,f=subs(f,{xi,yi},x),count %输出极值点,极小值以及搜索次数 四.运行结果及分析 此程序运行2秒后终止,结果如下: x = 4 2 极小点坐标 f = -8 极小值数值 count = 2 迭代次数 ans = -8 分析可得: (1) 由结果看出,程序经过2次迭代,得到二次函数的极小值坐标[4,2],极小值-8;表明共轭梯度法收敛速度较快,计算量较小,稳定性高。 (2) 选择不同的初始点坐标[0,0],[0,1],[1,0],[1,1],都是经过2次迭代得到一致的结果;表明共轭梯度法初始点的选择不影响收敛结果。 (3) 选择迭代精度0.0001,程序将近运行15秒才结束;可知迭代精度越高时,程序运行的时候越长,所以在实际应用中选择适当的迭代精度,有利于提高计算的效率。 (4) 从共轭梯度法的计算过程可以看出,第一个搜索方向取作负梯度方向,这就是最速下降法。其余各步的搜索方向是将负梯度偏转一个角度,也就是对负梯度进行修正。所以共轭梯度法实质上是对最速下降法进行的一种改进,故它又被称作旋转梯度法。 五.结束语 优化设计是是机械行业发展起来的一门新学科,将最优化原理和计算机应用于设计领域,为工程设计提供一种重要的科学设计方法。利用它,人们可以从众多的设计方案中寻找最佳设计方案,从而大大提高设计效率和质量,广泛应用于各个工业部门。 在自然科学和工程技术中很多问题的解决常常归结为约束优化或无约束优化的问题。首先根据实际的机械问题建立相应的数学模型,即应用数学形式描述实际设计问题。同时需要用专业的知识确定设计的限制条件和所追求的目标,确立各设计变量之间的相互关系等。一旦建立数学模型,应用数学规划理论的方法,根据数学模型的特点可以选择适当的优化方法,进而可以选择适当的计算机程序,以计算作为工具求得最佳优化设计参数。通过学习发现,共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。如何把实际的工程技术问题转化为理论的数学模型,进行分析运算求解,是检验我们是否学好这一课的关键。这可以让我们在以后的研究生生涯中有更加透彻的理解能力,扎实地撑握机械知识,培养创造性思维,专业技能有新的提高。 通过这次作业的完成,越来越觉得数学方法在机械优化设计中的重要性。无论是优化设计,CAD,CAE,其理论支撑都是来自高等数学、数值分析、矩阵分析这几门课程,这让我对原本枯燥无味的数学课程,又有了新的态度,新的激情。认真学习好数学,理论联系实践,同时借助于强大的计算机工具,解决实际问题。 Matlab是一种强大的科学计算工具,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种有力的工具。在使用Matlab编写程序时,对于编程的基本规则及函数的调用缺乏清晰的认识,程序运行中经常出现错误,一点一滴地调试再纠正。比如:程序运行过程中经常出现错误:Error using ==>Too many input arguments。查阅了些书籍,上网求助,最后查明原因是自定义的M文件名称与Matlab内部函数名相似,导致无法运行。浪费了大量的时间与精力,庆幸的是,经过自己的努力,纠正错误,按时完成了作业。研究生培养过程中,必须系统地学习编程软件,达到精通熟练的程度,并能够自主开发一些小程序,我相信在以后学习工作中它会提供更大的帮助。 参考文献: [1] 孙靖民,哈尔滨工业大学.机械优化设计.北京:机械工业出版社,2006.
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:用MATLAB实现共轭梯度法求解实例doc资料.doc
    链接地址:https://www.zixin.com.cn/doc/4134072.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork