2016-06-29 5 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) 

この不正確さを修正する方法はありますか? numpyの1.9.3は、次のコードは正確な結果を与える0.9.16および

+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:

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)'を使うと、間違った答えが返されます。しかし、私が 'Derivative(np.log、n = 1)(2)'を指定したとき、私は正しい結果を得ました。 – luongminh97

関連する問題