例如,如何计算函数的导数
y = x 2 + 1
使用 numpy
?
比方说,我想要导数在 x = 5 处的值…
原文由 DrStrangeLove 发布,翻译遵循 CC BY-SA 4.0 许可协议
例如,如何计算函数的导数
y = x 2 + 1
使用 numpy
?
比方说,我想要导数在 x = 5 处的值…
原文由 DrStrangeLove 发布,翻译遵循 CC BY-SA 4.0 许可协议
我能想到的最直接的方法是使用 numpy 的梯度函数:
x = numpy.linspace(0,10,1000)
dx = x[1]-x[0]
y = x**2 + 1
dydx = numpy.gradient(y, dx)
这样,dydx 将使用中心差异进行计算,并将具有与 y 相同的长度,这与 numpy.diff 不同,后者使用前向差异并将返回 (n-1) 大小的向量。
原文由 Sparkler 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答936 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
你有四个选择
有限差分不需要外部工具,但容易出现数值错误,如果您处于多变量情况下,可能需要一段时间。
如果您的问题足够简单,则符号微分是理想的选择。如今,符号方法变得非常强大。 SymPy 是一个与 NumPy 很好集成的优秀项目。查看 autowrap 或 lambdify 函数或查看 Jensen 关于类似问题的 博文。
自动导数非常酷,不容易出现数字错误,但确实需要一些额外的库(为此谷歌搜索,有一些不错的选择)。这是最强大但也是最复杂/最难设置的选择。如果您可以将自己限制在
numpy
语法,那么 Theano 可能是一个不错的选择。这是一个使用 SymPy 的例子