Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy.diff的输出错误_Python_Numpy_Differentiation - Fatal编程技术网

Python numpy.diff的输出错误

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

我的问题是: 我试图使用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
当第一个值正确时,第二个值正好比它应该的值小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
计算导数是相当困难的;-)事实上,一开始我很困惑,但我只是忽略了。。。无论如何,谢谢你。