-1

我想拟合数据:

data={{30.,3837.71},{93.75,3900.6},{300.,3962.19},{937.5,4040.79},{3000.,4113.21},{7500.,4174.15}};

到以下模型:

model = H0*(1 - (1/Kstab*Log10[10^10*H0/(2*Kstab*x)])^0.5);

我在用:

FindFit[data,
   model, {{H0, 6000}, {Kstab, 100}}, x];

Mathematica 给了我以下解决方案:

{{HZero->6548.42},{Kstab->59.7248}}

但是,如果我尝试在 Microcal Origin 中进行拟合,我会得到:HZero=6441 和 Kstab=139,这实际上是一个很好的解决方案。

请问,您对如何在 Mathematica 中获得更好的解决方案有什么建议吗?谢谢。

4

1 回答 1

2

为什么第二个更合适?

model[x_] = H0*(1 - (1/Kstab*Log10[10^10*H0/(2*Kstab*x)])^0.5);
sol = FindFit[data, model[x], {{H0, 6000}, {Kstab, 100}}, x];

model1[x_] = model[x] /. sol;
model2[x_] = model[x] /. {H0 -> 6441., Kstab -> 139.};

残差是:

Total[(#[[2]] - model1[#[[1]]])^2 & /@ data]
(* 75.0659 *)

Total[(#[[2]] - model2[#[[1]]])^2 & /@ data]
(* 4.15003*10^6 *)

图形化:

Show[Plot[{model1[x], model2[x]}, {x, 30, 7500}], ListPlot[data]]

阴谋

于 2013-05-05T18:22:01.873 回答