Wolfram mathematica 为什么我在mathematica中的非线性模型拟合不提供小数值?

Wolfram mathematica 为什么我在mathematica中的非线性模型拟合不提供小数值?,wolfram-mathematica,Wolfram Mathematica,上面的代码是我在Mathematica中用于非线性拟合的代码,输出没有提供合理的小数字,尽管我在覆盖在数据集顶部的图形计算器中绘制了这些数字,a、b的数字介于0-10之间,c并获得了合理的拟合使FindFit收敛到一个好的解决方案的一种方法是给它一个好的起始值,特别是当您的模型可能对其中的某些值给出非常糟糕的拟合时 #dataset, sigmoidal curve ratio278a267 ={{5.445, 0.0501}, {6.177, 0.035}, {7., 0.0589}, {7.

上面的代码是我在Mathematica中用于非线性拟合的代码,输出没有提供合理的小数字,尽管我在覆盖在数据集顶部的图形计算器中绘制了这些数字,a、b的数字介于0-10之间,c并获得了合理的拟合

使
FindFit
收敛到一个好的解决方案的一种方法是给它一个好的起始值,特别是当您的模型可能对其中的某些值给出非常糟糕的拟合时

#dataset, sigmoidal curve
ratio278a267 ={{5.445, 0.0501}, {6.177, 0.035}, {7., 0.0589}, {7.368, 
  0.0953}, {7.73, 0.1419}, {8.169, 1.0697}, {9.141, 1.0869}, {10.3, 
  1.0981}} 

#nonlinearmodelfitting for dataset
fit = FindFit[ratio278a267, (1/(a + (E^(-b*(x - c))))), {a, b, c}, x]
fit2 = NonlinearModelFit[
   ratio278a267, (1/(a + (E^(-b*(x - c))))), {a, b, c}, x]["RSquared"]

#fit1 & fit2 output respectively
output:
{a -> 0.639719, b -> -250.201, c -> -1008.92}
0.

在这个例子中,我通过一万次蒙特卡罗试验寻找模型和数据点之间的最小平方误差和,然后让
FindFit
收敛到它能找到的最佳值,从而找到了这些起始值。

Hey@Bill,谢谢你的评论,另外,我发现我的错误不是使用“E”。之后我的代码给出了很好的系数值,谢谢!
x=.;a=.;b=.;c=.;
ratio278a267 ={{5.445, 0.0501}, {6.177, 0.035}, {7., 0.0589}, {7.368,0.0953},
  {7.73, 0.1419}, {8.169, 1.0697}, {9.141, 1.0869}, {10.3,1.0981}};
fit = FindFit[ratio278a267, (1/(a+(E^(-b*(x-c))))), {{a,0.92}, {b,8.7}, {c,7.9}}, x]
Show[ListPlot[ratio278a267],Plot[(1/(a+(E^(-b*(x-c)))))/.fit,{x,5.445,10.3}]]