用MATLAB实现最速下降法,牛顿法和共轭梯度法求解实例.doc

用MATLAB实现最速下降法,牛顿法和共轭梯度法求解实例.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 精彩文档 实验的题目和要求 所属课程名称: 最优化方法 实验日期: 2010年5月10日~2010年5月15日 实验目的 掌握最速下降法,牛顿法和共轭梯度法的算法思想,并能上机编程实现相应的算法。 二、实验要求 用MATLAB实现最速下降法,牛顿法和共轭梯度法求解实例。 四、实验原理 最速下降法是以负梯度方向最为下降方向的极小化算法,相邻两次的搜索方向是互相直交的。牛顿法是利用目标函数在迭代点处的Taylor展开式作为模型函数,并利用这个二次模型函数的极小点序列去逼近目标函数的极小点。共轭梯度法它的每一个搜索方向是互相共轭的,而这些搜索方向仅仅是负梯度方向与上一次接待的搜索方向的组合。 五.运行及结果如下: 最速下降法: 题目:f=(x-2)^2+(y-4)^2 M文件: function [R,n]=steel(x0,y0,eps) syms x; syms y; f=(x-2)^2+(y-4)^2; v=[x,y]; j=jacobian(f,v); T=[subs(j(1),x,x0),subs(j(2),y,y0)]; temp=sqrt((T(1))^2+(T(2))^2); x1=x0;y1=y0; n=0; syms kk; while (tempeps) d=-T; f1=x1+kk*d(1);f2=y1+kk*d(2); fT=[subs(j(1),x,f1),subs(j(2),y,f2)]; fun=sqrt((fT(1))^2+(fT(2))^2); Mini=Gold(fun,0,1,0.00001); x0=x1+Mini*d(1);y0=y1+Mini*d(2); T=[subs(j(1),x,x0),subs(j(2),y,y0)]; temp=sqrt((T(1))^2+(T(2))^2); x1=x0;y1=y0; n=n+1; end R=[x0,y0] 调用黄金分割法: M文件: function Mini=Gold(f,a0,b0,eps) syms x;format long; syms kk; u=a0+0.382*(b0-a0); v=a0+0.618*(b0-a0); k=0; a=a0;b=b0; array(k+1,1)=a;array(k+1,2)=b; while((b-a)/(b0-a0)=eps) Fu=subs(f,kk,u); Fv=subs(f,kk,v); if(Fu=Fv) b=v; v=u; u=a+0.382*(b-a); k=k+1; elseif(FuFv) a=u; u=v; v=a+0.618*(b-a); k=k+1; end array(k+1,1)=a;array(k+1,2)=b; end Mini=(a+b)/2; 输入: [R,n]=steel(0,1,0.0001) R = 1.99999413667642 3.99999120501463 R = 1.99999413667642 3.99999120501463 n = 1 牛顿法: 题目:f=(x-2)^2+(y-4)^2 M文件: syms x1 x2; f=(x1-2)^2+(x2-4)^2; v=[x1,x2]; df=jacobian(f,v); df=df.; G=jacobian(df,v); epson=1e-12;x0=[0,0];g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;mul_count=0;sum_count=0; mul_count=mul_count+12;sum_count=sum_count+6; while(norm(g1)epson) p=-G1\g1; x0=x0+p; g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)}); G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)}); k=k+1; mul_count=mul_count+16;sum_count=sum_count+11; end; k x0 mul_count sum_count 结果::k

文档评论(0)

dmz158 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档