您有四个选择
- 有限差异
- 自动衍生工具
- 象征差异
- 手动计算导数。
有限的差异不需要外部工具,但容易出现数值误差,如果您处于多变量情况,则可能需要一段时间。
如果您的问题很简单,则使用符号区分是理想的选择。如今,符号方法变得越来越强大。SymPy是一个出色的项目,可以很好地与NumPy集成。查看autowrap或lambdify函数,或查看Jensen的博客文章,探讨类似问题。
自动导数非常酷,不易出现数字错误,但确实需要一些其他库(为此,google,有一些不错的选择)。这是设置选项中最可靠但也最复杂/最困难的。如果可以限制
numpy语法,那么Theano可能是一个不错的选择。
这是使用SymPy的示例
In [1]: from sympy import *In [2]: import numpy as npIn [3]: x = Symbol('x')In [4]: y = x**2 + 1In [5]: yprime = y.diff(x)In [6]: yprimeOut[6]: 2⋅xIn [7]: f = lambdify(x, yprime, 'numpy')In [8]: f(np.ones(5))Out[8]: [ 2. 2. 2. 2. 2.]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)