最小化n个函数

时间:2017-07-15 18:51:38

标签: python minimize

我有两个函数,其距离(y_1-y_2)我需要最小化才能获得两者之间的最佳因子(dfactor),所以我可以将它们一起绘制并最适合它们更多钞票。与文档中的示例的不同之处在于,在这种情况下,我有n个点,我可以计算差异,因此我有n个函数可以最小化。使用scipy.optimize.minimize_scalar我使用以下语法:

def chi(dfactor):
    for i in range(0, n):
        return abs(dfactor*y_1[i] - y_2[i])

res = minimize_scalar(chi)
print res.x 

现在res.x不是最适合这两个情节的因素。我希望得到一个n个元素的数组,它们之间非常相似,我可以获得我需要的单个dfactor。但我不确定minimize_scalar是这样的。

检查desired result,我计算红点与蓝色图中相应点之间的差异(此处表示为线条,因为它是一个光谱),以尽可能好地过度绘制它们。

1 个答案:

答案 0 :(得分:0)

在单个函数中不能有多个return语句,只会调用第一个语句。相反,您需要返回一些错误的集合,例如root意味着quaring错误:

# Convert to numpy arrays
y_1 = np.asarray(y_1)
y_2 = np.asarray(y_2)

def chi(dfactor):
    residual = dfactor * y_1 - y_2
    return np.mean(residual ** 2)

res = minimize_scalar(chi)
print res.x