例えば関数の微分を計算するにはどうすればいいでしょうか?
y = x 2 +1
使用してnumpy
?
たとえば、x = 5 での導関数の値が欲しいとします...
ベストアンサー1
4つの選択肢があります
有限差分法では外部ツールは必要ありませんが、数値エラーが発生しやすく、多変量の場合は時間がかかることがあります。
問題が十分に単純な場合は、記号微分法が理想的です。記号法は、最近ではかなり堅牢になってきています。シンピはNumPyとうまく統合された優れたプロジェクトです。autowrapやlambdify関数を参照するか、同様の質問に関するジェンセンのブログ投稿。
自動微分は非常に優れており、数値エラーが発生しにくいですが、いくつかの追加ライブラリが必要です(これについてはGoogleで検索してください。いくつかの良いオプションがあります)。これは最も堅牢ですが、最も洗練されていてセットアップが難しい選択肢でもあります。numpy
構文に制限があっても構わない場合は、テアノ良い選択かもしれません。
SymPyを使用した例です
In [1]: from sympy import *
In [2]: import numpy as np
In [3]: x = Symbol('x')
In [4]: y = x**2 + 1
In [5]: yprime = y.diff(x)
In [6]: yprime
Out[6]: 2⋅x
In [7]: f = lambdify(x, yprime, 'numpy')
In [8]: f(np.ones(5))
Out[8]: [ 2. 2. 2. 2. 2.]