复杂的一步分化

复杂一步分化是一种技术,它采用复杂的算法来获得一阶导数的数值实值解析函数的一个真正的变量,避免传统固有的损失精度有限的差异。

内容

刺激

从几人敦促才导致这篇文章。

几个月前,我遇到了里卡多·帕克森(罗马帝国),我们的计算生物学小组负责人MathWorks自助餐厅。

  • 帕克斯:嘿,克里夫,你应该对复杂算法步你发明的博客。
  • 我:你在说什么?
  • 帕克斯:你知道,分化使用复杂的算法。很热的东西。在SimBiology我们使用它。
  • 我:我不记得发明任何复杂的一步微分算法。
  • 和平:嗯,老你的论文引用。今天很多人在使用它。

然后去年2月我遇到乔奎姆马丁斯,密歇根大学的航空航天工程教授,在暹罗CS&E会议。他给了我三篇论文写复杂的步骤方法,他和他的同事们使用衍生品的模拟计算两计算流体动力学与结构有限元分析飞机设计的应用程序

乔奎姆的论文引用一篇论文使用复杂的数值微分算法,詹姆斯·莱茵斯和我发表的暹罗数值分析杂志》上在1967年。这是近50年前。

莱茵斯和硅藻土

詹姆斯·莱茵斯是我的一个朋友。我们见面时在苏黎世ETH参观在1965 - 66年在我的博士后。他是一个英国人比我大几岁,参观乙在大致相同的时间。访问后,他花了他的职业生涯在阿贡实验室。LINPACK和EISPACK他没有工作,但我看到他在阿贡当我参观了这些包。的照片,我经常显示四个LINPACK作者躺的Jack Dongarra的车是在一个聚会上莱茵斯的家。

那一年在苏黎世智慧非常富有成效的研究。詹姆斯有很多有趣的想法,我们发表了数篇论文。其中一个是“解析函数的数值微分法”。介绍了,我想第一次使用复杂的算术函数的概念真正的变量。但实际的算法很奇异。他们是来自柯西积分定理和包括诸如莫比乌斯数字和欧拉麦克劳林求和公式。如果你让我描述一下他们在今天的任何细节,我不能。

我要描述的复杂步骤算法要简单得多比1967年的论文中描述。所以,尽管我们有一些要求的优先使用复杂的算法在实际功能的想法,我们当然不能声称自己发明了今天的算法。

简要描述的复杂步骤算法首先论文威廉乡绅和乔治·特拉普暹罗审查在1998年。马丁斯,连同他的同事和学生,在报纸上提供了一个广泛的指导我指的下面。

该算法

我们关心的分析函数。在数学上,这意味着函数是无限可微,可以顺利扩展到复杂的飞机。计算,它可能意味着它被定义为一个“一线”公式,而不是一个更广泛的代码如果语句和循环。

让F (z)美元是这样一个函数,让从美元实轴上的一点,让h是一个真正的美元参数。扩展F (z)美元在泰勒级数实轴。

$ $ (x_0 + ih) = F(从)+ ihF(从)- h ^ 2 F”(从)/ 2 ! ih ^ 3 F ^ {(3)} / 3 ! +……$ $

把双方的虚部除以h美元。

$ $ F '(从)= Im (F (x_0 + ih)) / h + O (h ^ 2) $ $

简单评估函数F的美元虚论点x_0 + ih美元,除以h美元,给了一个近似导数的值,F '美元美元(从),精确到O (h ^ 2)美元。我们不妨选择美元h = 10 ^ {8} $。误差近似是差不多大小的舍入误差存储的双精度浮点值F '(从)美元。

那么,这里是复杂的微分算法全部步:

$ $ h = 10 ^ {8} $ $

$ $ F”(从)\大约Im (F (x_0 + ih)) / h $ $

一个例子

这是我最喜欢的一个例子。我曾经在1967年的论文,已经成为一种标准在这个行业至今。

$ $ F (x) = \压裂{\ mbox {e} ^ {x}}{(\因为{x}) ^ 3 +(罪\ {x}) ^ 3} $ $

F = @ (x) exp (x) / ((cos (x))。^ 3 + (sin (x)) ^ 3)。
F = @ (x) exp (x) / ((cos (x)) ^ 3 + (sin (x)) ^ 3)。

这是一个阴谋在x设在美元的一部分,在一个点\π/ 4美元。

ezplot (F[-π/ 4,π/ 2])轴([-π/ 4,π/ 2 0 6])集(gca,“xtick”[-π/ 4 0π/ 4π/ 2))((π/ 4π/ 4],[(π/ 4),F(π/ 4)),“标记”,“。”,“markersize”,18)

让我们找点的斜率,这是F '(\π/ 4)美元。

复杂的一步近似,我还没有固定的步长h

Fpc = @ (x, h)图像放大(F (x + i * h)) / h;

集中与步长有限差分近似h

Fpd = @ (x, h) (F (x + h) - F (x h)) / (2 * h);

他们减少的序列进行比较h

格式disp ([“h有限differerence复杂的一步”])h = 10 ^ (- (1:16)) disp ([h Fpc(π/ 4,h) Fpd(π/ 4,h)))结束
h复杂的有限步differerence 0.100000000000000 3.144276040634560 3.061511866568119 0.010000000000000 3.102180075411270 3.101352937655877 0.001000000000000 3.101770529535847 3.101762258158169 0.000100000000000 3.101766435192940 3.101766352480162 0.000010000000000 3.101766394249620 3.101766393398542 0.000001000000000 3.101766393840188 3.101766393509564 0.000000100000000 3.101766393836091 3.101766394841832 0.000000010000000 3.101766393836053 3.101766443691645 0.000000001000000 3.101766393836052 3.101766399282724 0.000000000100000 3.101766393836052 3.101763290658255 0.000000000010000 3.101766393836053 3.101785495118747 0.000000000001000 3.101766393836053 3.101963130802687 0.000000000000100 3.101766393836052 3.097522238704187 0.000000000000010 3.101766393836053 3.108624468950438 0.000000000000001 3.101766393836052 3.108624468950438 0.000000000000000 3.101766393836053 8.881784197001252

正如预测的那样,复杂的步骤获得其全部双精度结果一半的序列h的。另一方面,有限差分法从来没有达到一半以上双精度的准确性和完全分解的时间h到达最后一个值。

象征性的工具箱

因为我们有访问符号工具箱,我们可以得到准确的答案。重新定义xF是象征性的。

信谊xF = exp (x) / ((cos (x)) ^ 3 + (sin (x)) ^ 3)
F = exp (x) / (cos (x) ^ 3 + sin (x) ^ 3)

区分和评价\π/ 4美元的衍生品。

Fps =简单(diff (F))确切=潜艇(Fps,π/ 4)flexact =双(精确)
Fps = (exp (x) *(因为罪(3 * x) + (3 * x) / 2 + (3 * sin (x)) / 2)) / (cos (x) ^ 3 + sin (x) ^ 3) ^ 2的= 2 ^ (1/2)* exp(π/ 4)flexact = 3.101766393836051

这种验证结果我们获得复杂的步骤。

错误的阴谋

既然我们现在确切的答案,我们可以从计算画出错误的一阶导数复杂的步骤和有限的差异。

h = 10 ^ (- (1:16)。');犯错误= 0(16日2);k = 1:16错(k, 1) = abs (Fpc(π/ 4 h (k))准确);错(k, 2) = abs (Fpd(π/ 4 h (k))准确);结束重对数(h,犯错误)轴([eps每股收益1])集(gca,“xdir”,“牧师”)传说(的复杂的步骤,有限差分的,“位置”,“西南”)包含(“步长h”)ylabel (“错误”)

这证实了复杂的一步是准确的小步大小而有限差分方法从未达到完整的准确性。

引用

莱茵斯,詹姆斯N。,和Moler, Cleve B., Numerical Differentiation of Analytic Functions,暹罗j .数值分析4,1967年,页202 - 210。epubs.siam.org/doi/abs/10.1137/0704019

乡绅,威廉和特拉普,乔治,使用复杂的变量估计衍生品的功能,暹罗回顾40,1998年,页110 - 112。epubs.siam.org/doi/abs/10.1137/S003614459631241X

马丁斯r . r .身上。,Sturdza, Peter, and Alonso, Juan J., The Complex-Step Derivative Approximation,ACM交易数学软件29,2003年,页245 - 262,Martins2003CSD.pdf

马丁斯r . r .身上。,A Guide to the Complex-Step Derivative Approximation,复杂的步骤

局长Gaetan K.W. Kenway,,Kennedy, Graeme J., and Martins, Joaquim R. R. A., A scalable parallel approach for high-fidelity steady-state aeroelastic analysis and adjoint derivative computations, AIAA Journal (In Press)




发表与MATLAB®R2013b

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。