0

大家好,

我对一个数学脚本有一点问题,我需要用 3 个正弦函数的总和来拟合数据点:

fit = NonlinearModelFit[Data,a1*Sin[b1*x + c1] + a2*Sin[b2*x + c2] + a3*Sin[b3*x + c3], {a1, b1,c1, a2, b2, c2, a3, b3, c3}, x]

我收到此错误:

NonlinearModelFit::cvmit: Failed to converge to the requested accuracy or precision within 100 iterations

我尝试过使用不同的起始值并将 MaxIteration 设置为 10.000……也许这不是进行这种拟合的正确方法。有人对此有任何想法吗?

谢谢!

4

1 回答 1

0

也许您的数据太糟糕了,但它与一个好的样本一起工作得很好:

data = Table[{x, Sin[ x + .3] + 2 Sin[1.2 x] + 3 Sin[1.5 x + .5]}, 
             {x, .01,  8 Pi, .001}];
fit = NonlinearModelFit[data, 
          a1*Sin[b1*x + c1] + a2*Sin[b2*x + c2] + a3*Sin[b3*x + c3], 
          {a1, b1, c1, a2, b2, c2, a3, b3, c3}, x]

Show[ListPlot[data], Plot[fit[x], {x, 0, 8 Pi}, PlotStyle -> Red], Frame -> True]

在此处输入图像描述

于 2013-04-11T17:22:19.633 回答