numpy.diff 的输出是错误的
Output of numpy.diff is wrong
这是我的问题:
我正在尝试使用 numpy 来计算(数值)导数,但我发现函数 numpy.diff returns(以及 numpy.gradient)的值存在一些问题。我发现这些价值观是完全错误的!
这是一个代码示例:
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 正在做的一些规范化有关吗?或者也许我只是在没有注意到的情况下遗漏了一些重要的东西?
感谢帮助
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
这是我的问题: 我正在尝试使用 numpy 来计算(数值)导数,但我发现函数 numpy.diff returns(以及 numpy.gradient)的值存在一些问题。我发现这些价值观是完全错误的! 这是一个代码示例:
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 正在做的一些规范化有关吗?或者也许我只是在没有注意到的情况下遗漏了一些重要的东西? 感谢帮助
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