在求和lsqcurvefit并不遵循收敛标准。
51视图(30天)
显示旧的评论
我有一个函数,使用求和来适应一个bi-exponential函数。因为我要从适合检索其他信息,不幸的是我不能使用exp2-fit函数。至于过程在8部分(n = 8)。数据是在t (xdata)和S (ydata)。每个条款1 - 8个人的贡献(yfit_n)计算然后相加在一起,得到的最终结果符合(yfit)。拟合的因数有7个变量向量x或x0各自startin点(x(2)在这个阶段不使用)。
FS_1 = 0.05;
FS_2 = 2.0264;
d = 1的军医;
dy = 1 e-5;
n = 1:8;
t = t_S_mathworks (: 1);
S = t_S_mathworks (:, 2);
x0 =兰德(7,1);
有趣= @ (x, t) x (1) + (3) . * (FS_1 + FS_2 *总和(((1 . ^ n) / n。^ 2)。* (1-cos (n *π* dy / d))…
. * (x (4)。* exp (- x (6) * (t) * n ^ 2。*π/ d ^ ^ 2. 2)…
(5)+ x。* exp (- x (7) * (t) * n。^ 2。*π/ d ^ ^ 2. 2)), 2));
选项。OptimalityTolerance = 1 e15汽油;
[x, resnorm] = lsqcurvefit(有趣,x0, t, S);
因为我得到了国旗,表明收敛性判据太低我想改变,但它fit-options成立,我想。
适合后聚合(但不是给一个有用的结果)我检查收敛性判据,它不是1的新e15汽油所取代。
优化完成:一阶最优性措施,1.132517 e-08,
小于选项。OptimalityTolerance = 1.000000 e-06。
当我检查配合使用
S_fitted = x (1) + (3) . * (FS_1 + FS_2 *总和(((1 . ^ n) / n。^ 2)。* (1-cos (n *π* dy / d))…
. * (x (4)。* exp (- x (6) * (t) * n ^ 2。*π/ d ^ ^ 2. 2)…
(5)+ x。* exp (- x (7) * (t) * n。^ 2。*π/ d ^ ^ 2. 2)), 2));
情节(t, S_fitted)
我明白了,只有前两个数据点给除了最小的数据点。看来配件本身并没有发生。我inlcued reproducable让你看到的错误数据。我希望这只是一个贝宁错误我现在似乎不能定位。
也感谢所有的帮助。
愿一切都好!
克里斯
接受的答案
马特·J
2023年5月27日19:23
适合后聚合(但不是给一个有用的结果)我检查收敛性判据,它不是1的新e15汽油所取代。
因为你没有选择变量传递给
lsqcurvefit
选项。OptimalityTolerance = 1 e15汽油;
[x, resnorm] = lsqcurvefit(有趣,x0, t, S,[],[],选项);