我正在尝试将多个复杂函数与多个相应的(实际)数据集拟合,以通过以下方式找到三个不同的参数var1,var2和var3。在fit函数中,我将return留为空白(该函数对于本文而言太复杂了),但本质上,这些都是包含复数的函数。以前,我将返回结果取为np.abs,但我意识到我需要保留虚部并执行复杂的拟合(但最终具有实际的fit_params),而Scipy curve_fit无法做到。
如何为复杂函数执行相同的方案(将多个函数与多个数据集拟合)?我已经看到了执行复杂拟合的几种不同方法,但是不确定使用多个函数/数据集进行语法拟合的方法。
# combine data
combine_domain = np.hstack(( x,x,x )).ravel()
combine_data = np.hstack(( np.abs(A),np.abs(B),np.abs(C) )).ravel()
# fit functions
def A_fit(var1,var3):
return
def B_fit(var2,var1):
return
def C_fit(var3,var2):
return
# combine functions
def combine_functions(x, var1, var2, var3):
result1 = A_fit(var1, var3)
result2 = B_fit(var2, var1)
result3 = C_fit(var3, var2)
return np.hstack(( result1,result2,result3 )).ravel()
# perform fitting
fitted_params, pcov = curve_fit(combine_functions, combine_domain, combine_data)
var1, var2, var3 = fitted_params