复d曲线拟合

2024-10-01 13:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用共享相同参数的两个函数来拟合复杂的数据集。为了这个我用了

def funcReal(x,a,b,c,d):
    return np.real((a + 1j*b)*(np.exp(1j*k*x - kappa1*x) - np.exp(kappa2*x)) + (c + 1j*d)*(np.exp(-1j*k*x - kappa1*x) - np.exp(-kappa2*x)))

def funcImag(x,a,b,c,d):
    return np.imag((a + 1j*b)*(np.exp(1j*k*x - kappa1*x) - np.exp(kappa2*x)) + (c + 1j*d)*(np.exp(-1j*k*x - kappa1*x) - np.exp(-kappa2*x)))`

poptReal, pcovReal = curve_fit(funcReal, x, yReal)
poptImag, pcovImag = curve_fit(funcImag, x, yImag)

这里funcReal是模型的实部,funcImag是虚部,yReal是数据的实部,yImag是数据的虚部。在

然而,这两种拟合并不能给我相同的参数,为实部和虚部。在

我的问题是,有没有一个包或方法可以实现多个数据集和多个函数的多个共享参数拟合?在


Tags: 数据函数参数returndefnpfitcurve
1条回答
网友
1楼 · 发布于 2024-10-01 13:33:59

像这样?在

def long_function(x, a, b, c, d):
    return (a + 1j*b)*(np.exp(1j*k*x - kappa1*x) - np.exp(kappa2*x)) + (c + 1j*d)*(np.exp(-1j*k*x - kappa1*x) - np.exp(-kappa2*x))

def funcBoth(x, a, b, c, d):
    N = len(x)
    x_real = x[:N//2]
    x_imag = x[N//2:]
    y_real = np.real(long_function(x_real, a, b, c, d))
    y_imag = np.imag(long_function(x_imag, a, b, c, d))
    return np.hstack([y_real, y_imag])

yBoth = np.hstack([yReal, yImag])
poptBoth, pcovBoth = curve_fit(funcBoth, x, yBoth)

相关问题 更多 >