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

上传人:飞****2 文档编号:15112061 上传时间:2022-05-11 格式:DOC 页数:5 大小:39.50KB
返回 下载 相关 举报
用MATLAB实现最速下降法-牛顿法和共轭梯度法求解实例.doc_第1页
第1页 / 共5页
用MATLAB实现最速下降法-牛顿法和共轭梯度法求解实例.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《用MATLAB实现最速下降法-牛顿法和共轭梯度法求解实例.doc》由会员分享,可在线阅读,更多相关《用MATLAB实现最速下降法-牛顿法和共轭梯度法求解实例.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 实验的题目和要求 一、 所属课程名称: 最优化方法二、 实验日期: 三、 实验目的掌握最速下降法,牛顿法和共轭梯度法的算法思想,并能上机编程实现相应的算法。二、实验要求用MATLAB实现最速下降法,牛顿法和共轭梯度法求解实例。四、实验原理最速下降法是以负梯度方向最为下降方向的极小化算法,相邻两次的搜索方向是互相直交的。牛顿法是利用目标函数在迭代点处的Taylor展开式作为模型函数,并利用这个二次模型函数的极小点序列去逼近目标函数的极小点。共轭梯度法它的每一个搜索方向是互相共轭的,而这些搜索方向仅仅是负梯度方向与上一次接待的搜索方向的组合。五运行及结果如下: 最速下降

2、法:题目:f=(x-2)2+(y-4)2M文件: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);

3、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;endR=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)=

4、b;while(b-a)/(b0-a0)=eps) Fu=subs(f,kk,u); Fv=subs(f,kk,v); if(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;endMini=(a+b)/2;输入:R,n=steel(0,1,0.0001)R = 1.642 3.463R = 1.642 3.463n = 1牛顿法:题目:f=(x-2)2+(y-4)2M文件:syms x1 x2; f=(x1-2)2+(x2-4)2; v=x1,x2; df=jacobian(f,v); df=d

5、f.; 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=-G1g1; 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_co

6、unt=mul_count+16;sum_count=sum_count+11; end; k x0 mul_count sum_count结果:k = 1x0 = 2 4mul_count = 28sum_count = 17共轭梯度法:题目:f=(x-2)2+(y-4)2M文件:function f=conjugate_grad_2d(x0,t)x=x0;syms xi yi af=(xi-2)2+(yi-4)2;fx=diff(f,xi);fy=diff(f,yi);fx=subs(fx,xi,yi,x0);fy=subs(fy,xi,yi,x0);fi=fx,fy;count=0;wh

7、ile double(sqrt(fx2+fy2)t s=-fi; if count=0 s=-fi; else s=s1; end x=x+a*s; f=subs(f,xi,yi,x); f1=diff(f); f1=solve(f1); if f1=0 ai=double(f1); else break x,f=subs(f,xi,yi,x),count end x=subs(x,a,ai); f=xi-xi2+2*xi*yi+yi2; fxi=diff(f,xi); fyi=diff(f,yi); fxi=subs(fxi,xi,yi,x); fyi=subs(fyi,xi,yi,x); fii=fxi,fyi; d=(fxi2+fyi2)/(fx2+fy2); s1=-fii+d*s; count=count+1; fx=fxi; fy=fyi;endx,f=subs(f,xi,yi,x),count输入:conjugate_grad_2d(0,0,0.0001)结果:x = 0.785 -0.273f = 0.176count = 10ans = 0.176六、 结论如下:最速下降法越接近极小值,步长越小,前进越慢。牛顿法要求二阶导数,计算量很大。共轭梯度法是介于最速下降和牛顿法之间的算法,克服了最速下降法的收敛速度慢的缺点,又避免了牛顿法的大计算量。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁