Python numpy.diff的输出错误
我的问题是: 我试图使用numpy计算(数值)导数,但我发现函数numpy.diff返回的值(以及numpy.gradient)存在一些问题。我发现这些值是完全错误的! 下面是一个代码示例:Python numpy.diff的输出错误,python,numpy,differentiation,Python,Numpy,Differentiation,我的问题是: 我试图使用numpy计算(数值)导数,但我发现函数numpy.diff返回的值(以及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 当第一个值正确时,第二个值正好比它应该的值小10
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所做的一些规范化有关?或者我只是错过了一些重要的事情而没有注意到?
谢谢你的帮助。diff不计算导数,它只计算有限差分;你必须自己解释间距。试一试
np.diff(y) / (x[1] - x[0])
顺便说一句,np.linspace
有一个retstep
关键字,在这种情况下很方便:
x, dx = np.linspace(-5, 5, 100, retstep=True)
...
np.diff(y) / dx
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
或者你需要再看一看
np.linspace
?对不起,你能说得更清楚一点吗?对不起,我的错,没有把派生部分看作是预期的输出。或者你需要再看一看np.linspace
?对不起,你能说得更清楚一点吗?对不起,我的错,没有将衍生部分视为预期输出。哦,是的,你说得对!我只是假设有限差分只是指数值导数。显然,我没有仔细阅读示例,现在一切都变得更有意义了。@mmonti由于没有人告诉它x间距,np.diff
计算导数是相当困难的;-)事实上,一开始我很困惑,但我只是忽略了。。。无论如何,谢谢你。哦,你说得对!我只是假设有限差分只是指数值导数。显然,我没有仔细阅读示例,现在一切都变得更有意义了。@mmonti由于没有人告诉它x间距,np.diff
计算导数是相当困难的;-)事实上,一开始我很困惑,但我只是忽略了。。。无论如何,谢谢你。