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

使用默认值 norder,它估计来自 2 个点的导数,x0 的每一侧各一个。 dx 越小,您在 x0 处捕获的斜率就越好,如果它太小,请注意舍入误差。