微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有效地将 SciPy 优化方法应用于数组

如何解决有效地将 SciPy 优化方法应用于数组

下面的方程 f(x,a,b) 需要一个迭代解决方案,为此我使用了一种 scipy 优化方法 ('brentq'),它本质上是计算 f(x,b)=0。

但是,我需要使用 'a' 和 'b' 的数组输入,并且数组非常大,例如可能高达 1-1 亿。

使用 scipy/numpy 执行此操作最有效/最快的方法是什么?目前,我正在使用 for 循环,如下所示,但是对于我的实际基础方程(未显示),这变得很慢。请注意,数组中的每一行都相互独立。

import numpy as np
from scipy import optimize
    
# function to solve (simplified)
def f(x,b): return (a/x)**0.25 * (x**0.5) - b*x 

# array size
N = 10000000 

# example input arrays from which 'a' and 'b' are taken (in reality values come from other complex functions)
A = np.linspace(1,500,N) 
B = np.linspace(0.1,1,N)

# solution using brentq
results = [optimize.brentq(f,1e10,1000,args=(a,b)) for a,b in zip(A,B)]
results

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。