FR共轭梯度法实验及其程序代码_第1页
FR共轭梯度法实验及其程序代码_第2页
FR共轭梯度法实验及其程序代码_第3页
FR共轭梯度法实验及其程序代码_第4页
FR共轭梯度法实验及其程序代码_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、实验报告2FR共轨梯度法1实验目的掌握外法函数法2实验内容外罚函数法3算法设计 编写主函数:function Lmintansw =0uterPena 11yFunction(xO. eps)实现外罚函数法 定义function y=PFun(x)用以实现求目标函数的一阶导数; 定义测试函数:function y=Fun(x)。4程序代码(一) 外罚函数法程序代码function min,snsw二OuterPenaltyFunction(xO,eps)%-一-该程序用以实现外罚函数法% Input:% xO初始点% eps-搜索精度% output:% min-一-目标函数最优值% answ

2、 最优搜索点syms xl x2xk=xO;c=10: %罚因子放大系数33deta=; %罚因子while (1)fun=Fun(xl x2)+deta*PFun(xl tx2);玄惩罚函数f=inline(fun);min,answ =FR Conjugate gradient (f, xkteps);%调用FR迭代法函数求确定罚函数最优解 if double(deta*PFun(answ)eps)if (k=l)pk二-DFun(Fun,xk);elsebeta=DFun(Fun.xk)*DFun(Fun,xk)/temp; pk二-DFun(Fun,xk)+beta*pk;endte叩

3、二DFun (Fun. xk) * *DFun (Fun, xk); temp2=xk+alph*pk;fun=Fun(te叩2(1),temp2(2);fun=inline(fun);min, answ =OneDimentionSearch (fun,0, F eps);%调用精确一维搜索求步长 xk=xk+answ*pk ; %answ即为所求的步长k=k+l ;endansw二xk;m i n=doub1e(Fun(xk(1),xk);function y=DFun(Fun.x)% 一一改函数用以实现求目标函数的一阶导数% Input:% x 求导点% output:% y 一一目标函

4、数的一阶导数在x点的值syms xl x2f=Fun(xl,x2);fl二diff(f.xl);f2=diff(ftx2);fl=subs(flt (xl,x2,x);f2=subs(f2,(xl,x2,x);y=double(fl),double(f2)r;(三) 精确一维搜索程序代码:function min.answ=0neDimentionSearch(Fun,xO.step,eps)% -一改程序用以实现一维搜索算法% Input:% Fun 维精确搜索函数% xO 初始点% step搜索步长% eps-一-搜索精度% output:% min-一-目标函数最优值% answ 最优搜

5、索点%求初始区间a,b-AdvanceAndRetreat(Fun.xO.step);玄黄金分割法实现一维搜索min,answ =GoldSection(Fun,a,b,eps);function min,answ =GoldSection(Fun,a,bteps) %-一改函数用以实现黄金搜索法% Input:% Fun一维精确搜索函数% a-搜索区间的左端点% b搜索间隔的右端点% eps -一-搜索精度% output:% min-一-目标函数最优值% wnsw最优搜索点%format longxl=a+. 382*(b-a);x2=a+. 618*(b-a);while (abs (b

6、-a)eps)fl=Fun(xl):f2=Fun(x2);%比较判断两个分割点处的函数值,进而缩短区间长度 if(flf2)a=xl; xl=x2;x2=a+. 618*(b-a);elseif(fl=f2)a=xl; b=x2;xl=a+. 382*(b-a);x2=a+. 618*(b-a);elseb=x2;x2=xl;xl=a+. 382*(b-a);endend%返回搜索点和搜索值answ- (a+b)/2;min=Fun(answ);function a,b=AdvanceAndRetreat(Fun,xO,step)% 一一改函数用以实现进退法求初始区间 % Input:% Fu

7、n维精确搜索函数% xO初始点% step搜索间隔% output:% a-一-搜索区间的左端点% b 搜索间隔的右端点xl=xO十step; if Fun(xl)=Fun(xO)while(l)step=2*step; x2=xl+step; if Fun(xl)=Fun(x2) break;else xO=xl;xl=x2;a=xO;b=x2;elsewhile 仃)step=2*step;x2=x0-step;if Fun(xO) clear inin, ansvluterPenaltyFunctionCEO 0 0. 005)Jim =0.980325015849283an sw =-0.9901136378463240血6结果分析该程序实现了外罚函数法解决最优化问題,但是具有局限性,只能求解含有两个自变量的优化问题,原因是 在编写FR共扼梯度法程序时的求导函数时人为地将在

温馨提示

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

最新文档

评论

0/150

提交评论