Numpyを使って導関数を計算するにはどうすればいいですか? 質問する

Numpyを使って導関数を計算するにはどうすればいいですか? 質問する

例えば関数の微分を計算するにはどうすればいいでしょうか?

y = x 2 +1

使用してnumpy?

たとえば、x = 5 での導関数の値が欲しいとします...

ベストアンサー1

4つの選択肢があります

  1. 有限差分
  2. 自動デリバティブ
  3. 記号による差別化
  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.]

おすすめ記事