scipy 的用法
Useage of scipy
from scipy.misc import derivative
def fun(x):
return x**3 + x**2
derivative(fun,1)
答案是6,但应该是5,我做错了吗?
在官方 documentation 中它说使用 dx=1e-6 。我为什么要在这里使用它?还有dx有什么用?
通过查看代码(文档页面上的[source]
)和一些实验,我发现:
In [472]: derivative(fun,1)
Out[472]: 6.0
In [473]: derivative(fun,1,1)
Out[473]: 6.0
In [474]: dx=1;(fun(1+dx)-fun(1-dx))/(2*dx)
Out[474]: 6.0
In [475]: derivative(fun,1,.5)
Out[475]: 5.25
In [476]: dx=.5;(fun(1+dx)-fun(1-dx))/(2*dx)
Out[476]: 5.25
In [477]: derivative(fun,1,.1)
Out[477]: 5.010000000000001
In [478]: dx=.1;(fun(1+dx)-fun(1-dx))/(2*dx)
Out[478]: 5.010000000000001
使用默认值 n
和 order
,它估计来自 2 个点的导数,x0
的每一侧各一个。 dx
越小,您在 x0
处捕获的斜率就越好,如果它太小,请注意舍入误差。
from scipy.misc import derivative
def fun(x):
return x**3 + x**2
derivative(fun,1)
答案是6,但应该是5,我做错了吗?
在官方 documentation 中它说使用 dx=1e-6 。我为什么要在这里使用它?还有dx有什么用?
通过查看代码(文档页面上的[source]
)和一些实验,我发现:
In [472]: derivative(fun,1)
Out[472]: 6.0
In [473]: derivative(fun,1,1)
Out[473]: 6.0
In [474]: dx=1;(fun(1+dx)-fun(1-dx))/(2*dx)
Out[474]: 6.0
In [475]: derivative(fun,1,.5)
Out[475]: 5.25
In [476]: dx=.5;(fun(1+dx)-fun(1-dx))/(2*dx)
Out[476]: 5.25
In [477]: derivative(fun,1,.1)
Out[477]: 5.010000000000001
In [478]: dx=.1;(fun(1+dx)-fun(1-dx))/(2*dx)
Out[478]: 5.010000000000001
使用默认值 n
和 order
,它估计来自 2 个点的导数,x0
的每一侧各一个。 dx
越小,您在 x0
处捕获的斜率就越好,如果它太小,请注意舍入误差。