我将向您展示如何使用 Mathematica 分析您的数据。首先,我将根据要求使用您的模型。
data = Import["Desktop/data.csv"];
y = NonlinearModelFit[data,
a Exp[b x] + c Exp[d x] + e, {a, b, c, d, e}, x];
Mathematica 返回此错误:
NonlinearModelFit::cvmit:在 1000 次迭代内未能收敛到要求的准确度或精度
这意味着您的模型可能并不理想。让我们考虑一下数据,看看我们是否可以提出更好的数据。您的系列负数的对数图(因此我们可以取对数)显示了一条相当多项式的曲线:

(使用生成ListLogPlot[# {1, -1} & /@ data])
这表明我们应该使用对数线性模型,而不是指数混合:
y^=−exp(a+bx+cx2+…)
让我们尝试一个三次多项式:
nlm = LinearModelFit[{#[[1]], Log[-#[[2]]]} & /@ data, {x, x^2, x^3},
x]
Mathematica 回归71.6838 - 391.293 x + 764.791 x^2 - 501.198 x^3
换句话说,
y^=−exp(71.6838−391.293x+764.791x2−501.198x3).
这是数据图、混合模型(红色)和对数线性模型(绿色):

(使用生成Show[{ListPlot@data,
Plot[y[x], {x, 0.38, 0.57}, PlotStyle -> {Thick, Red}],
Plot[-Exp@nlm@x, {x, .35, 0.6}, PlotStyle -> {Thick, Green}]}])
您可以更好地拟合四次多项式,但您明白了。残差显示结构,这意味着模型没有从数据中挤出所有信息:

(使用生成ListPlot@nlm["FitResiduals"])
幸运的是,当您将订单提高到六个时,订单实际上消失了:
