最小化 n 个函数

Minimize n functions

我有两个函数,我需要最小化它们的距离 (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,我在其中计算红点与蓝色图中对应点(此处表示为线,因为它是光谱)之间的差异,以尽可能好地绘制它们。

一个函数中不能有多个 return 语句,只有第一个会被调用。相反,您需要 return 一些错误的集合,例如根均值平方错误:

# 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