为了澄清一点。有两个相关的问题:
最小化功能
拟合模型数据
要拟合模型对观测数据是要找到一个模型的这种参数,减少某种模型数据与观测数据之间的错误。 (x)可以是一个向量)。
F(x) = 0.5 * sum(rho(f_i(x)**2), i = 0, ..., m - 1)
(rho是亏损的功能,默认是rho(x) = x所以不介意它)
least_squares(func, x0)预计调用func(x)将返回一个矢量[a1, a2, a3, ...]为其平方和,将计算:S = 0.5 * (a1^2 + a2^2 + a3^2 + ...)。
least_squares将调整x0以尽量减少S。
因此,为了用它来拟合模型数据,必须构建误差的函数的模型和实际数据之间 - 残差然后最小化残差功能。
import numpy as np
from scipy.optimize import least_squares
x = np.asarray(range(20,401,20))
y = np.random.rand(20)
params = np.array([1,1])
def funcinv(x, a, b):
return b + a/x
def residuals(params, x, data):
# evaluates function given vector of params [a, b]
# and return residuals: (observed_data - model_data)
a, b = params
func_ev