我试图曲线拟合一些周期性的实验数据,并发现用于曲线拟合到其他函数的方法不适用于三角函数 - 至少 - 就像我这样做。
这是我的代码:
falseData = Table[{x, N[3*Sin[4*x]]}, {x, 10}];
model = a*Sin[b*x];
fit = NonlinearModelFit[falseData, model, {a, b}, x]
Show[ListPlot[falseData, PlotStyle -> Red], Plot[fit[x], {x, 1, 10}]]
以下是代码生成的内容:
FittedModel[-0.184706 Sin[1.00073 x]]
如果我将此示例中的Sin函数切换为Log或其他类型的函数,它可以正常工作,但是当我尝试使用Sin或Cos时它会失败。
有什么建议吗?
答案 0 :(得分:3)
尝试使用NMinimize方法:
falseData = Table[{x, N[3*Sin[4*x]]}, {x, 10}];
model = a*Sin[b*x];
fit = NonlinearModelFit[falseData, model, {a, b}, x, Method -> NMinimize]
Show[ListPlot[falseData, PlotStyle -> Red], Plot[fit[x], {x, 1, 10}]]
这是输出:
FittedModel[-3. Sin[2.28319 x]]
以下是结果曲线: