我正在尝试使用curve_fit
来拟合一些数据。它工作得很好,我只想通过附加参数来改进拟合以匹配假设(例如机械效率不能大于 100% 等)
y_data = [0.90 0.90 0.90 0.90 0.90 0.90 0.90 1.30 1.30 1.30 1.30 1.20 1.65 1.65 1.65 1.65 1.65 1.65 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80 3.50 6.60 6.60 6.70 6.70 6.70 6.70 6.70 8.50 12.70] # I am aware this does not have commas
x_data = [0.38 0.38 0.38 0.38 0.38 0.38 0.38 0.38 0.38 0.38 0.38 0.46 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 1.02 1.02 1.02 1.02 1.02 1.02 1.02 1.02 1.02] # ditto
def poly2(x, a, b, c): return a*x**2+ b*x+c
def poly3(x,a,b,c,d): return a*x**3+b*x**2+c*b*x+d
pars = fit(poly2, x_data, y_data, bounds=bounds)
但我想另外指定参数之间关系的界限,例如。
B**2 -4*a*c > 0 #for poly2
b**2-3*a*c=0 #for poly3
编辑:我发现了这个,一旦我调查它可能会有所帮助:如何对 SciPy 曲线拟合施加约束?
如何按照建议使用 lmfit 来完成?