以多个数组作为输入对函数进行积分和最小化

问题描述 投票:0回答:0

我想定义一个函数,它接受一定长度的数组输入,然后为每个值找到一个最适合的参数。 它看起来像这样: 这里 a、b、c 和测量值是相同大小的数组,我需要在 E_min = 0.1 到 E_max = 1.0 的 E 范围内对我的原始函数进行积分。我想为数组中的每个条目找到结果(T 的最佳拟合值)。我如何最好地在 python 中实现它?

我的第一个想法是与

scipy.integrate.quad
进行整合,然后找到最小值以通过
scipy.optimize.root
获得我的结果,但这实际上不起作用,因为我的输入数组(a、b、c、测量)不是必须与 T 大小相同并且执行以下操作似乎效率很低:

def integral(a,b,c,T):
    for i in range(len(T)):
        for j in range(len(a)):
            integral = scipy.integrate.quad(a*b*f(c,T,E), 0.1, 1.0, args=(a,b,c,T))
    return integral

def result(a,b,c,measurement):
    r = scipy.optimize.root(integral(a,b,c,T) - measurement, 0.2, args(a,b,c,measurement))
    return r

我也想过

@np.vectorize
,但我不确定那会如何工作,因为我用得不多。有没有什么函数可以一步完成合并和最小化?或者至少可以更有效地解决数组大小不匹配的问题?

python scipy vectorization numerical-integration
© www.soinside.com 2019 - 2024. All rights reserved.