我想要拟合数据:
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中获得更好的解决方案有什么建议吗? 感谢。
答案 0 :(得分: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]]