2016-06-29 82 views
2

我正在使用python的numdifftools庫來執行派生。但是,一些測試證明該庫是非常不準確的:爲什麼numdifftools如此不準確?它是如何工作的?

import numpy as np 
from numdifftools import Derivative 
# Result should be 1/2 or 0.5 
Derivative(np.log, 1)(2.0) 
>>> array(0.5493061443340549) 

有沒有辦法解決這個錯誤?

+0

您使用哪個版本的numdifftools?我用0.9.16。然後'Derivative(np.log,i = 1)(2.0)'拋出一個語法錯誤,但是'Derivative(np.log)(2.0)'給出正確的結果('array(0.5000000000000238)') –

+0

也許還會澄清你的問題:你想知道numdifftools是如何工作的,或者你想要修正不準確性。 –

+0

@FabianRost我在這裏的最終目標是修復不準確性,但我懷疑numdifftools如何工作可以讓我找到問題的根源。我使用的是來自Anaconda的numdifftools 0.9.14 – luongminh97

回答

2

問題點樣。

Derivative(np.log, 1)(2.0) 

給出了錯誤的答案。 n應該明確說明:

Derivative(np.log, n=1)(2.0) 
>>> array(0.5000000000000234) 
3

使用numdifftools 0.9.16和numpy的1.9.3以下代碼給出精確的結果:

import numpy as np 
from numdifftools import Derivative 
# Result should be 1/2 or 0.5 
Derivative(np.log)(2.0) 

輸出:

array(0.5000000000000238) 
+0

我發現了這個問題。當我使用Derivative(np.log,1)(2)'時,它返回錯誤的答案。但是當我指定「衍生(np.log,n = 1)(2)'時,我得到了正確的結果。 – luongminh97

相關問題