我使用 scipy 编写了一些代码来找到以下等式的根:
def equation(x, y):
return (x / y) * np.log((a * x / b) + 1.0) - 2.0 * c * c
带有 a、b 和 c 标量。
我在矩形网格上有 y 的值(比如 Y,形状 300x200),并且需要找到对应的 x 来求解每个点的方程。我还对每个点的 x 值进行了初始估计(X0,形状 300x 200)
目前我已经设法通过遍历数组 Y 中的每个项目来解决这个问题,并调用:
for index, value in np.ndenumerate(Y):
result[index] = scipy.optimize.newton(equation, X0[index], args=(value))
# or other scalar solvers like brentq
这可行,但太慢了,无法让我发布我的脚本。鉴于这些值是在网格上组织的,并且 Y 和结果数组包含“连续”值,例如从数组的边缘向中心逐渐变化,我确信必须有一个很好的面向数组/多维的方法来解决这个问题,也可以提供更好的性能。
我尝试了多种选择,但到目前为止还没有成功。任何想法?
任何帮助,将不胜感激。
谢谢