【问题标题】:Fitting an exponential curve in Mathematica在 Mathematica 中拟合指数曲线
【发布时间】:2020-02-22 23:52:14
【问题描述】:

我正在尝试为这组数据拟合曲线,但我尝试过的任何方法都不起作用。

data = {{290, 3.3}, {300, 1.1*10}, {310, 2.9*10}, {320, 7.5*10}, {330, 1.8*10^2}, {340, 4.3*10^2}, {350, 8.3*10^2}, {360, 1.5*10^3}, {370, 3.7*10^3}, {380, 6.3*10^3}, {390, 1.2*10^4}, {400, 2.4*10^4}};

https://i.stack.imgur.com/W3Qd4.jpg

我试过了 FindFit[data, Exp[a*x + b], {a, b}, x], NonlinearModelFit[data, {A*Exp[B*x + D]}, {A, B, D}, x], 以及许多其他尝试。

我不断收到错误消息

"未能收敛到要求的精度或精度在100以内 迭代”

。我很茫然。有什么想法吗?

【问题讨论】:

    标签: wolfram-mathematica curve-fitting exponential


    【解决方案1】:

    问题是被拟合的函数不能很好地对数据建模。

    ClearAll[a, b, c];
    nlm = NonlinearModelFit[data, a Exp[b Sqrt[x]] + c, {a, b, c}, x, MaxIterations -> 1000]
    Show[ListPlot@data, Plot[nlm[x], {x, 290, 400}]]
    

    【讨论】:

      【解决方案2】:

      在这种情况下,取 y 轴值的对数以获得更好的拟合总是有用的。否则,具有较小 x 值的数据点将在拟合中被忽略。

      ClearAll["`*"];
      Clear["Global`*"];
      data = {{290, 3.3}, {300, 1.1*10}, {310, 2.9*10}, {320, 7.5*10}, {330, 1.8*10^2}, {340, 4.3*10^2}, {350, 8.3*10^2}, {360, 1.5*10^3}, {370, 3.7*10^3}, {380, 6.3*10^3}, {390, 1.2*10^4}, {400, 2.4*10^4}};
      data[[All, 2]] = Log@data[[All, 2]];
      nlm = NonlinearModelFit[data, a*x + b, {a, b}, x, MaxIterations -> Infinity]
      Show[ListPlot@data, Plot[nlm[x], {x, 290, 400}]]
      

      数据和拟合图,y 轴在取对数后缩放:

      【讨论】:

        猜你喜欢
        • 2016-02-13
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 2015-10-29
        • 2018-11-13
        • 1970-01-01
        相关资源
        最近更新 更多