下面的示例代码使用CurvyFIT拟合一个共享参数的两个不同的方程。这不是对您问题的回答,但我无法在注释中设置代码格式,因此我将在此处发布。
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
y1 = np.array([ 16.00, 18.42, 20.84, 23.26, 25.68])
y2 = np.array([-20.00, -25.50, -31.00, -36.50, -42.00])
comboY = np.append(y1, y2)
h = np.array([5.0, 6.1, 7.2, 8.3, 9.4])
comboX = np.append(h, h)
def mod1(data, a, b, c):
return a * data + c
def mod2(data, a, b, c):
return b * data + c
def comboFunc(comboData, a, b, c):
extract1 = comboData[:len(y1)]
extract2 = comboData[len(y2):]
result1 = mod1(extract1, a, b, c)
result2 = mod2(extract2, a, b, c)
return np.append(result1, result2)
initialParameters = np.array([1.0, 1.0, 1.0])
fittedParameters, pcov = curve_fit(comboFunc, comboX, comboY, initialParameters)
a, b, c = fittedParameters
y_fit_1 = mod1(h, a, b, c)
y_fit_2 = mod2(h, a, b, c)
plt.plot(comboX, comboY, 'D')
plt.plot(h, y_fit_1)
plt.plot(h, y_fit_2)
plt.show()
print(fittedParameters)