【发布时间】:2015-11-23 06:01:55
【问题描述】:
我正在研究海水状态方程的 Python 版本 (http://www.teos-10.org/)。该库依赖于像p = f(t,d) 这样的反演方程,如果您知道t 和d,您可以直接计算f(t,d),但您通常有t 和p。这只是一个寻根问题,该库提供了使用牛顿法、二分法或布伦特法的选项。 (特别是对于布伦特方法,请参阅 wiki https://en.wikipedia.org/wiki/Brent%27s_method。)
但是,库会找到 t 和 p 的单个值的根。我希望我的版本可以用于绘制和探索状态方程,所以我想允许t 和p 的向量(numpy 数组)值。将牛顿法和二等分法向量化相当简单,但布伦特法有很多我无法理解的条件。
关于如何矢量化此方法的任何提示?更重要的是,这种向量化实际上会比循环 t 和 p 数组中的值更快吗?
【问题讨论】:
-
我认为您不只是使用
scipy.optimize.brent是有原因的? -
问题的设置是根据
t和p为d找到g(d; t,p)=0的根。我希望能够将数组用于t和p,而不是标量,据我所知,标准 scipy.optimize 没有这样做。
标签: python numpy vectorization mathematical-optimization