目前我有两个 numpy 数组:相同大小的 x
和 y
。
我想写一个函数(可能调用 numpy/scipy...函数,如果它们存在的话):
def derivative(x, y, n = 1):
# something
return result
其中 result
是一个与 x
大小相同的 numpy 数组,包含 的第
关于 n
个导数的值yx
(我希望使用 y
的多个值来评估导数以避免非平滑结果)。
最佳答案
这不是一个简单的问题,但是已经设计了很多方法来处理它。一种简单的解决方案是使用 finite difference方法。命令numpy.diff()使用有限差分,您可以在其中指定导数的阶数。
维基百科也有一个页面列出了所需的 finite differencing coefficients对于不同精度的不同导数。如果 numpy 函数没有执行您想要的操作。
根据您的应用,您还可以使用 scipy.fftpack.diff它使用 completely different technique做同样的事情。尽管您的函数需要定义明确的傅里叶变换。
上述两个想法有很多变体(例如 summation by parts、有限差分运算符或旨在保留方程组中已知演化常数的运算符)。您应该做什么在很大程度上取决于您要解决的问题是什么。
好消息是在这个领域已经做了很多工作。 Numerical Differentiation 的维基百科页面有一些资源(尽管它专注于有限差分技术)。
关于python - python中数组的导数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20044096/