我正在使用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)
有沒有辦法解決這個錯誤?
我正在使用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)
有沒有辦法解決這個錯誤?
問題點樣。
Derivative(np.log, 1)(2.0)
給出了錯誤的答案。 n應該明確說明:
Derivative(np.log, n=1)(2.0)
>>> array(0.5000000000000234)
使用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)
我發現了這個問題。當我使用Derivative(np.log,1)(2)'時,它返回錯誤的答案。但是當我指定「衍生(np.log,n = 1)(2)'時,我得到了正確的結果。 – luongminh97
您使用哪個版本的numdifftools?我用0.9.16。然後'Derivative(np.log,i = 1)(2.0)'拋出一個語法錯誤,但是'Derivative(np.log)(2.0)'給出正確的結果('array(0.5000000000000238)') –
也許還會澄清你的問題:你想知道numdifftools是如何工作的,或者你想要修正不準確性。 –
@FabianRost我在這裏的最終目標是修復不準確性,但我懷疑numdifftools如何工作可以讓我找到問題的根源。我使用的是來自Anaconda的numdifftools 0.9.14 – luongminh97