已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目标函数极值求解的几种方法 题目:,取初始点,分别用最速下降法,你牛顿法,共轭梯度法编程实现。一维搜索法:迭代下降算法大都具有一个共同点,这就是得到点后需要按某种规则确定一个方向,再从出发,沿方向在直线(或射线)上求目标函数的极小点,从而得到的后继点,重复以上做法,直至求得问题的解,这里所谓求目标函数在直线上的极小点,称为一维搜索。一维搜索的方法很多,归纳起来大体可以分为两类,一类是试探法:采用这类方法,需要按某种方式找试探点,通过一系列的试探点来确定极小点。另一类是函数逼近法或插值法:这类方法是用某种较简单的曲线逼近本来的函数曲线,通过求逼近函数的极小点来估计目标函数的极小点。本文采用的是第一类试探法中的黄金分割法。原理书上有详细叙述,在这里介绍一下实现过程: 置初始区间及精度要求L0,计算试探点和,计算函数值和,计算公式是:,。令k=1。 若则停止计算。否则,当时,转步骤;当时,转步骤 。 置,计算函数值,转。 置,计算函数值,转。 置k=k+1返回步骤 。1. 最速下降法 实现原理描述:在求目标函数极小值问题时,总希望从一点出发,选择一个目标函数值下降最快的方向,以利于尽快达到极小点,正是基于这样一种愿望提出的最速下降法,并且经过一系列理论推导研究可知,负梯度方向为最速下降方向。最速下降法的迭代公式是,其中是从出发的搜索方向,这里取在点处最速下降方向,即。是从出发沿方向进行的一维搜索步长,满足。实现步骤如下: 给定初点 ,允许误差,置k=1。 计算搜索方向。 若,则停止计算;否则,从出发,沿方向进行的一维搜索,求,使。 ,置k=k+1返回步骤 。2. 拟牛顿法 基本思想是用不包括二阶导数的矩阵近似牛顿法中的Hesse矩阵的逆矩阵,因构造近似矩阵的方法不同,因而出现了不同的拟牛顿法。 牛顿法迭代公式:,是在点处的牛顿方向,是从出发沿牛顿方向进行搜索的最优步长。用不包括二阶导数的矩阵近似取代牛顿法中的Hesse矩阵的逆矩阵,需满足拟牛顿条件。实现步骤: 给定初点 ,允许误差。 置(单位矩阵),计算出在处的梯度,置k=1。 令。 从出发沿方向搜索,求步长,使它满足,令。 检验是否满足收敛标准,若,则停止迭代,得到点,否则进行步骤。 若k=n,令,返回;否则进行步骤。令,置k=k+1 。返回。3. 共轭梯度法若是中k个方向,它们两两关于A共轭,即满足 ,称这组方向为A的k个共轭方向。共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点,根据共轭方向的基本性质这种方法具有二次终止性。实现步骤如下: 给定初点 ,允许误差,置 ,k=j=1。 若,则停止计算;否则,作一维搜索,求,满足 ,令。 若,则进行步骤,否则进行步骤 令,其中,置j=j+1,转。 令,置j=1,k=k+1,转 。4. 实验结果 用以上三种方法通过Matlab编程得到实验数据。初始值 。迭代精度sum(abs(x1-x).2)n if abs(lanmda-b)1e-4 alfa=mu; return else a=lanmda; lanmda=mu; m=n; mu=a+tao*(b-a); alfa=mu; n=(x(1)+alfa*d(1)-2)2+2*(x(2)+alfa*d(2)-1)2; end else if abs(mu-a)1e-4 alfa=lanmda; return else b=mu; mu=lanmda; n=m; lanmda=a+(1-tao)*(b-a); alfa=lanmda; m=(x(1)+alfa*d(1)-2)2+2*(x(2)+alfa*d(2)-1)2; end endend%梯度子函数,tidu.m,输入的变量为二维的向量,返回梯度在x处的数值向量function g=tidu(x) %待求解的函数 f=(x(1)-2)2+2*(x(2)-1)2; %求函数的梯度表达式 g=2*(x(1)-2) 4*(x(2)-1); x1=x(1); x2=x(2);%最速下降法极小化函数的通用子函数zuisu.m%输入变量为初始的迭代点,输出变量为极小值点function x0=zuisu(x)%判断梯度范数是否满足计算精度1e-4的要求.是,标志变量设为1,输出结果; %否,标志变量设为0if sum(abs(tidu(x).2)1e-4 flag=1; x0=x;else flag=0;end%循环求解函数的极小点while flag=0 d=-tidu(x); a=gold(x,d); x=x+a*d %判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果; %否,标志变量设为0,继续迭代 if sum(abs(tidu(x).2)1e-4 flag=1; x0=x; else flag=0; endEnd%拟牛顿法极小化函数的通用子函数,gonge.m%输入变量为初始的迭代点,输出变量为极小值点function x0=ninewton(x)%判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果;%否,标志变量设为0,继续迭代if sum(abs(tidu(x).2)1e-4 flag=1; x0=x;else flag=0;end%初始的H矩阵为单位矩阵h0=eye(2);%循环求解函数的极小点while flag=0 %计算新的迭代方向 d=-h0*tidu(x); a=gold(x,d); x1=(x+a*h0*d); s=x1-x; y=tidu(x1)-tidu(x); v=s*y; %校正H矩阵 h0=(eye(2)-s*y./v)*h0*(eye(2)-y*s./v)+s*s./v; %判断下一次和上一次迭代点之差是否满足计算精度的要求.是,标志变量设为1,输出结果;否,标志变量设为0,继续迭代 if sum(abs(x-x1).2)1e-4 flag=1; x0=x; else flag=0; end x=x1end %共轭剃度法极小化函数的通用子函数,gonge.m%输入变量为初始的迭代点,输出变量为极小值点function x0=gonge(x)%判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果;%否,标志变量设为0,继续迭代if sum(abs(tidu(x).2)1e-4 flag=1; x0=x;else flag=0;end%第一次的迭代方法为负梯度方向d1=-tidu(x);a=gold(x,d1);x1=x+a*d1;%循环求解函数的极小点while flag=0 g1=tidu(x); g2=tidu(x1); %利用FR公式求解系数bata bata=(g2*g2)/(g1*g1); d2=-g2+bata*d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026桌面办公外设产业链延伸产品设计路径研究及性能评测方法探讨
- 2026免税零售行业政策红利与渠道布局战略研究报告
- 2026中国智慧物流系统集成商市场竞争格局剖析
- 2026区块链技术在金融领域的应用现状及发展趋势研究
- 2026工业元宇宙平台功能演进与场景落地进度
- 2026船舶制造数字建模软件市场竞争态势分析报告
- 2026过程可视化软件市场周期性波动与投资策略分析报告
- 成都沃尔玛山姆会员店库存管理研究
- 2026重庆汽车传统动力供需转型风险投资分析评估报告
- 2026AR-VR内容生态市场发展动态及未来潜力
- 中铝宁夏能源集团笔试题库
- 2026统考专升本英语:作文模版20篇
- 日本工业标准JIS-2
- 2026年交通运输局财务审计岗遴选专业知识测试
- 耳部全息铜砭刮痧法
- 麻醉科教研室工作制度
- 医院采购领导小组制度
- 儿童淋巴结肿大诊治共识
- 甘肃省医保政策培训课件
- 舞台灯光调试与安装施工方案
- 23G409先张法预应力混凝土管桩
评论
0/150
提交评论