首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >misc.derivative的结果是不正确的

misc.derivative的结果是不正确的
EN

Stack Overflow用户
提问于 2013-08-13 22:22:18
回答 2查看 1.9K关注 0票数 3

我在想我在这里做错了什么..。

我正在试验一个简单的、人为的函数,取x的某些值的导数:

f(x) = x^3,然后求x在1,2,3处的导数f'(x) = 3x^2

代码语言:javascript
复制
>>> from scipy import misc
>>> def x2(x): return x*x*x
...
>>> misc.derivative(x2,1)
4.0
>>> misc.derivative(x2,2)
13.0
>>> misc.derivative(x2,3)
28.0    

问题:结果是不正确的,他们都是+1比他们应该是(他们应该分别是3,12和27 )。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-13 22:29:12

scipy.misc.derivative不是精确的。它使用一个中心差分公式来计算导数。默认的间距是1.0,这对于很多应用程序来说都是相当高的。减少它会带来更准确的结果:

代码语言:javascript
复制
>>> from scipy import misc
>>> def x3(x): return x*x*x
... 
>>> misc.derivative(x3, 1)
4.0
>>> misc.derivative(x3, 1, dx=0.5)
3.25
>>> misc.derivative(x3, 1, dx=0.25)
3.0625
>>> misc.derivative(x3, 1, dx=1.0/2**16)
3.0000000002328306
票数 6
EN

Stack Overflow用户

发布于 2013-08-13 22:37:03

如果您指定dx或间距到足够小的数目,您将得到一个不错的近似。

代码语言:javascript
复制
>>> from scipy import misc
>>> def f(x): return x*x*x
... 
>>> misc.derivative(f,2,dx=0.1)
12.010000000000009

>>> round(misc.derivative(f,2,dx=0.1),0)
12.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18220216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档