如何评估一系列衍生品?

计算科学 算法 有限差分 Python 表现 迭代法
2021-12-09 11:20:05

考虑函数

f(x)=n=0Nan((bx))n1r
在哪里r=|x|=(xx0)2+(yy0)2anb是众所周知的。

有没有什么好的方法来数值评估这个函数(对于相当大的 N)?

我的问题是我没有一个通用的表达方式

((bx))n1r.
有没有比递归地做数值导数更聪明的方法1/r? 我很害怕这种方法,因为多重导数可能导致数值误差累积。

提前致谢。

1个回答

你可以转换bx成极坐标,并在这个系统中做点积。这改变了((bx))n1r

((bx)rr+(bx)θ1rθ)n1r
在这里,我使用下标rθ表明rθ成分,分别,的差异。您可以完全忽略第二项,因为它涉及到关于θ而你只依赖于r,这进一步将术语简化为
(bx)rnnrn1r
现在使用这个事实
nrn1r=(1)nn!rn+1
您现在有一个很好的分析导数,可以在求和中使用。你的最终方程看起来像

f(x)=n=0N(1)nan(bx)rnn!rn+1