使用lsqcurvefit的Matlab本地最小可能问题

时间:2019-04-05 01:21:54

标签: matlab optimization model-fitting

我正在尝试拟合模型P(t)= P0 * exp(k * t)并估计k的参数值。我有P和t的数据。在我编写的Matlab代码中,我得到了警告, 本地最小值。 lsqcurvefit停止,因为相对于平方和的最终变化 其初始值小于功能公差的默认值。

因此,如果我使用高于-30(例如-1)的初始猜测,则会收到上述警告。但是,对于-30以上的值(例如-40或-50),我得到“初始点是局部最小值”。

但是,我认为参数估计值约为-0.8到-1。

我尝试了here上的建议。我尝试使用各种初始猜测并更改最佳容差,但是并不能解决问题。

这是代码:

initialGuess=-1;
time=[0;1;2;3;4;5;6];
data=[350000,210000,80000,20000,100,100,100];

data=(log10(data))';

lb=-150;
ub=0;

P_0=data(1);

model = @(x,time) P_0*exp(x(1).*time);
options = optimoptions('lsqcurvefit','OptimalityTolerance',1e-13,'FiniteDifferenceType','central'); 
[x,error]=lsqcurvefit(model,initialGuess,time,data,lb,ub,options)

有人可以告诉我如何找到这些数据的参数估计值。

0 个答案:

没有答案