我想知道我在这里做错了什么......
我正在试验一个简单而人为的函数,取它对 x 的某些值的导数:
f(x) = x^3,然后f'(x) = 3x^2计算 x 在 1、2、3 处的导数
>>> 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
Run Code Online (Sandbox Code Playgroud)
问题:结果不正确,它们都比它们应有的值大 +1(它们应该分别是 3、12 和 27)。
scipy.misc.derivative不准确。它使用中心差分公式来计算导数。默认间距为1.0,这对于许多应用程序来说相当高。减少它会得到更准确的结果:
>>> 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |