您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 基于中心差分公式的进化策略算法优化步长h求解数值微分
-1-基于中心差分公式的进化策略算法优化步长h求解数值微分夏慧明(南京师范大学泰州学院,泰州,225300)1引言微积分学已经给出求函数导数的许多方法,但这些方法对一些实际问题往往难以实行。如实际问题常常将函数)(xf在一些离散点上的值用表格的形式给出,则求)('xf就不那么容易了。这种对列表函数求导的方法通常称为数值微分。[12]本文主要是基于中心差分公式来求解数值微分的近似解。进化策略(EvolutionStrategies,ES)]86[是由德国柏林技术大学的I.Rechenbery和H.P.Schweful为研究风洞中的流体力子问题而提出的。进化策略的基本算法构成类似于遗传算法的构成形式,区别主要在于进化算子的不同选择。在遗传算法中主要采用交叉算子来产生新个体,而变异算子只是作为生成新个体的辅助手段。但在进化策略中则是主要采用变异来生成新个体,而交叉算子则较少使用。文中利用进化策略算法来优化步长h,通过对由进化策略产生的模型参数采用突变的方式产生新的参数,这样通过不断进化,直至得到最优的步长h,将其代入中心差分公式得到近似微分值。实践证明该算法所求得的微分值精度较高、收敛速度较快。2中心差分公式据数学分析中导数的定义hxfhxfxfh)()(lim)(0',容易想到,当h充分小时,可用差商近似导数,这是最简单的数值微分公式。如果函数)(xf在点x的左边和右边的值可计算,则最佳二点公式包含x两边的两个对称的横坐标。]5[定理2.1[精度为)(2hO的中心差分公式]设],[3baCf,且],[,,bahxxhx,则hhxfhxfxf2)()()('(1)而且存在数],[)(baxcc,满足),(2)()()('hfEhhxfhxfxftrunc(2)其中)(6)(),(2)3(2hOcfhhfEtrunc(3)项),(hfE称为截断误差。定理2.2[精度为)(4hO的中心差分公式]设],[5baCf,且hxxhxhx,,,2,-2-],[2bahx,则hhxfhxfhxfhxfxf12)2()(8)(8)2()('(4)而且存在数],[)(baxcc,满足),(12)2()(8)(8)2()('hfEhhxfhxfhxfhxfxftrunc(5)其中)(30)(),(4)5(4hOcfhhfEtrunc(6)用中心差分公式计算导数的近似值,必须选取合适的步长h。因为,从中心差分公式的截断误差看,步长h越小,计算结果就越精确,但从舍入误差的角度看,当h很小时,)(hxf与)(hxf很接近,两相近数直接相减会造成有效数字的严重损失,精度降低,因此,步长h又不易取的太小。因为,步长的优越性直接影响微分值的精度,所以,寻求出最优步长h是非常有必要的。3求解数值微分的进化策略算法(ESA)(1)确定个体的表达方式:表达式中个体由目标变量X和标准差两部分组成,因为步长h是用随机生成的某一区间的两个端点的差的绝对值表示的,所以每部分个体有2个分量,分别代表区间的左端点与右端点,即)),(),,((),(2121xxX。(2)随机生成初始群体:进化策略中初始群体由个个体组成,每一个个体),(X包含2个分量。初始个体是随机生成的,初始个体的标准差0.3)0(。(3)计算适应度:将步长h代入中心差分公式求出在点x处的近似微分值,将所得的微分值与精确值进行作差,所得结果记为e,若e越接近于零,则微分值的近似程度越好,取适应度函数为))(1/(1eabsf,适应度值越接近1,微分值就越优,10f,终止条件选择一个很接近1的值,当适应度值大于时终止。(4)如果满足条件,则终止,此时选出最优步长h及最优微分值。否则,继续向下进行训练学习。(5)根据进化策略,采用下述操作产生新群体:5.1)重组:从父代个体中随机取出两个个体,交换目标变量和随机因子,产生新个体。目标变量采用离散重组,随机因子采用黄金分割重组。5.2)突变:对重组后的个体添加随机量,采用柯西突变原则产生新个体。5.3)计算个体适应度。5.4)选择:采用),(选择策略,挑选优良的个体作为进化的结果。(6)反复执行第(5)步,直到满足终止条件,选择最佳的个体作为进化策略的结果,即所求的最优步长h及最优微分值。-3-4数值实例为验证本文算法在求解数值微分时的正确性,取适应度函数))(1/(1eabsf,其中e|近似值-精确值|。由上节算法思想可知,当f的值越接近1时,则表示所得到的步长h最优、微分值与精确值间的误差越小。以下各例均采用),(选择策略,其中取15,7105,对于公式(1)以下各例中的终止条件均取为999999999.0,对于公式(4)以下各例中的终止条件均取为0.999999999999。例1:利用中心差分公式求xxf)(在3x处的导数值。计算结果如表1所示。表1最优步长及微分值中心差分公式公式(1)公式(4)最佳步长h5.176103238782592e-0040.00368144253123ESA法0.288675135669010.28867513459467精确值0.288675134594810.28867513459481误差1.074200006723203e-009-1.399991234052322e-013例2:利用中心差分公式求振荡函数)sin()(nxnxf在2.1x处的导数值。计算结果如表2所示。表25n时最优步长及微分值中心差分公式公式(1)公式(4)最佳步长h1.645899522229044e-0063.497237051936220e-004ESA法24.0042571667019924.00425716626365精确值24.0042571662591524.00425716625915误差4.428386546351248e-0104.497735517361434e-012例3:利用中心差分公式求xexf)(在15.1x处的导数值。计算结果如表3所示。表3最优步长及微分值中心差分公式公式(1)公式(4)最佳步长h8.937329613045719e-0060.00109310353167ESA法3.158192909725743.15819290969038精确值3.158192909689773.15819290968977误差3.597033781943537e-0116.101785743339860e-013例4:利用中心差分公式求2)1(1)(xxf在点1.1x处的导数值。计算结果如表4所示。表4最优步长及微分值中心差分公式公式(1)公式(4)最佳步长h1.242311641655447e-0050.00234953232225ESA法-0.21595939964725-0.21595939962880-4-精确值-0.21595939963287-0.21595939963287误差-1.437999719300365e-0114.069994341548977e-012由以上的各例可以看出本文提出的ESA算法在处理数值微分问题时,所求得的解的精度较高、与精确值间的误差较小。同时还可知,所求微分值与精确值间的误差及最优步长h均与所选取的求微公式有较大的关联。5总结本文所给出的进化策略算法在求解数值微分时,表现出了求解精度高、收敛速度快等特点,该方法为进一步求解常微分方程和偏微分方程边值问题提供了一定的基础。下一步的工作是根据求解数值微分的思想,并由此算法拓展出去设计求解常微分方程和偏微分方程边值问题的新算法。实践证明该算法的通用性较强,便于在工程中使用。
本文标题:基于中心差分公式的进化策略算法优化步长h求解数值微分
链接地址:https://www.777doc.com/doc-2573174 .html