这就是我的问题:我试图使用numpy.gradient来计算(数值)导数,但我发现函数numpy.diff (以及numpy )返回的值存在一些问题。我发现这些值是完全错误的!下面是一个代码示例:
import numpy as np
x = np.linspace(-5, 5, 1000)
y = x**2
yDiff = np.diff(y)
print y[0], yDiff[0]
此脚本的输出为:
25.0 -0.0999998997997
在第一个值正确的地方,第二个值恰好比它应该的值小100倍(考虑到近似值)!我做了不同的尝试,这不是一个与函数边界有关的问题,这100个因素似乎是系统化的……这可能与np.diff正在做的一些标准化有关吗?或者,也许我只是错过了一些重要的东西而没有注意到?谢谢你的帮助
发布于 2017-03-12 00:34:12
np.diff
不计算导数,它只计算有限差分;你必须自己计算间距。试一试
np.diff(y) / (x[1] - x[0])
顺便说一句,np.linspace
有一个retstep
关键字,这个关键字在这个上下文中很方便:
x, dx = np.linspace(-5, 5, 100, retstep=True)
...
np.diff(y) / dx
https://stackoverflow.com/questions/42737619
复制相似问题