基于中心差分公式的进化策略算法优化步长h求解数值微分

更新时间:2024-01-13 19:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于中心差分公式的进化策略算法优化步长h求解数值微分

夏慧明

(南京师范大学泰州学院, 泰州, 225300)

1 引 言

微积分学已经给出求函数导数的许多方法,但这些方法对一些实际问题往往难以实行。如实际问题常常将函数f(x)在一些离散点上的值用表格的形式给出,则求f'(x)就不那么容易了。这种对列表函数求导的方法通常称为数值微分。式来求解数值微分的近似解。

进化策略(Evolution Strategies, ES)

[6?8][1?2]本文主要是基于中心差分公

是由德国柏林技术大学的I.Rechenbery 和H.P.

Schweful为研究风洞中的流体力子问题而提出的。进化策略的基本算法构成类似于遗传算法的构成形式,区别主要在于进化算子的不同选择。在遗传算法中主要采用交叉算子来产生新个体,而变异算子只是作为生成新个体的辅助手段。但在进化策略中则是主要采用变异来生成新个体,而交叉算子则较少使用。

文中利用进化策略算法来优化步长h,通过对由进化策略产生的模型参数采用突变的方式产生新的参数,这样通过不断进化,直至得到最优的步长h,将其代入中心差分公式得到近似微分值。实践证明该算法所求得的微分值精度较高、收敛速度较快。

2 中心差分公式

据数学分析中导数的定义f(x)?limh?0'f(x?h)?f(x),容易想到,当h充分小时,

h可用差商近似导数,这是最简单的数值微分公式。

如果函数f(x)在点x的左边和右边的值可计算,则最佳二点公式包含x两边的两个对称的横坐标。

[5]

23定理 2.1 [精度为O(h)的中心差分公式] 设f?C[a,b],且x?h,x,x?h?[a,b], 则

f'(x)?f(x?h)?f(x?h) (1)

2h而且存在数c?c(x)?[a,b],满足

f(x)?其中

'f(x?h)?f(x?h)?Etrunc(f,h) (2)

2hh2f(3)(c)?O(h2) (3) Etrunc(f,h)??6项E(f,h)称为截断误差。

定理 2.2 [精度为O(h)的中心差分公式] 设f?C[a,b],且x?2h,x?h,x,x?h,

- 1 -

45x?2h?[a,b],则

f'(x)??f(x?2h)?8f(x?h)?8f(x?h)?f(x?2h) (4)

12h而且存在数c?c(x)?[a,b],满足

f'(x)??f(x?2h)?8f(x?h)?8f(x?h)?f(x?2h)?Etrunc(f,h) (5)

12h其中

h4f(5)(c)?O(h4) (6) Etrunc(f,h)?30用中心差分公式计算导数的近似值,必须选取合适的步长h。因为,从中心差分公式的截断误差看,步长h越小,计算结果就越精确,但从舍入误差的角度看,当h很小时,

f(x?h)与f(x?h)很接近,两相近数直接相减会造成有效数字的严重损失,精度降低,

因此,步长h又不易取的太小。因为,步长的优越性直接影响微分值的精度,所以,寻求出最优步长h是非常有必要的。

3求解数值微分的进化策略算法(ESA)

(1) 确定个体的表达方式:表达式中个体由目标变量X和标准差?两部分组成,因为步长h是用随机生成的某一区间的两个端点的差的绝对值表示的,所以每部分个体有2个分量,分别代表区间的左端点与右端点,即(X,?)?((x1,x2),(?1,?2))。

(2) 随机生成初始群体:进化策略中初始群体由?个个体组成,每一个个体(X,?)包含2个分量。初始个体是随机生成的,初始个体的标准差?(0)?3.0。

(3) 计算适应度:将步长h代入中心差分公式求出在点x处的近似微分值,将所得的微分值与精确值进行作差,所得结果记为e,若e越接近于零,则微分值的近似程度越好,取适应度函数为f?1/(1?abs(e)),适应度值越接近1,微分值就越优,0?f?1,终止条件选择一个很接近1的值?,当适应度值大于?时终止。

(4) 如果满足条件,则终止,此时选出最优步长h及最优微分值。否则,继续向下进行训练学习。

(5) 根据进化策略,采用下述操作产生新群体:

5.1) 重组:从父代个体中随机取出两个个体,交换目标变量和随机因子,产生新个

体。目标变量采用离散重组,随机因子采用黄金分割重组。

5.2) 突变:对重组后的个体添加随机量,采用柯西突变原则产生新个体。

5.3) 计算个体适应度。

5.4) 选择:采用(?,?)选择策略,挑选优良的个体作为进化的结果。

(6) 反复执行第(5)步,直到满足终止条件,选择最佳的个体作为进化策略的结果,即所求的最优步长h及最优微分值。

- 2 -

4 数值实例

为验证本文算法在求解数值微分时的正确性,取适应度函数f?1/(1?abs(e)),其中

e?|近似值-精确值|。由上节算法思想可知,当f的值越接近1时,则表示所得到的步长h最优、微分值与精确值间的误差越小。以下各例均采用(?,?)选择策略,其中取??15,

??7???105,对于公式(1)以下各例中的终止条件均取为??0.999999999,对于公式

(4)以下各例中的终止条件均取为??0.999999999999。

例1:利用中心差分公式求f(x)?x在x?3处的导数值。计算结果如表1所示。

公式(4) 0.00368144253123 0.28867513459467 0.28867513459481 -1.399991234052322e-013 表1最优步长及微分值

中心差分公式 最佳步长h ESA法 精确值 误差 公式(1) 5.176103238782592e-004 0.28867513566901 0.28867513459481 1.074200006723203e-009 例2:利用中心差分公式求振荡函数f(x)?nsin(nx)在x?1.2处的导数值。计算结果如表2所示。

表2

中心差分公式 最佳步长h ESA法 精确值 误差 n?5时最优步长及微分值

公式(1) 公式(4) 3.497237051936220e-004 24.00425716626365 24.00425716625915 4.497735517361434e-012 1.645899522229044e-006 24.00425716670199 24.00425716625915 4.428386546351248e-010 x例3:利用中心差分公式求f(x)?e在x?1.15处的导数值。计算结果如表3所示。

表3最优步长及微分值

中心差分公式 最佳步长h ESA法 精确值 误差 公式(1) 8.937329613045719e-006 3.15819290972574 3.15819290968977 3.597033781943537e-011 公式(4) 0.00109310353167 3.15819290969038 3.15819290968977 6.101785743339860e-013 例4:利用中心差分公式求f(x)?所示。

1在点x?1.1处的导数值。计算结果如表42(1?x)表4最优步长及微分值

中心差分公式 最佳步长h ESA法 公式(1) 1.242311641655447e-005 -0.21595939964725 公式(4) 0.00234953232225 -0.21595939962880 - 3 -

精确值 误差 -0.21595939963287 -1.437999719300365e-011 -0.21595939963287 4.069994341548977e-012

由以上的各例可以看出本文提出的ESA算法在处理数值微分问题时,所求得的解的精度较高、与精确值间的误差较小。同时还可知,所求微分值与精确值间的误差及最优步长h均与所选取的求微公式有较大的关联。

5 总结

本文所给出的进化策略算法在求解数值微分时,表现出了求解精度高、收敛速度快等特点,该方法为进一步求解常微分方程和偏微分方程边值问题提供了一定的基础。下一步的工作是根据求解数值微分的思想,并由此算法拓展出去设计求解常微分方程和偏微分方程边值问题的新算法。实践证明该算法的通用性较强,便于在工程中使用。

- 4 -

本文来源:https://www.bwwdw.com/article/bx4o.html

Top