输入参数的数目不足。 出错 @(t,y,beta,gamma)[-beta*y(1)*y(2);beta*y(1)*y(2)-gamma*y(2);gamma*y(2)] 出错 lsqcurvefit (line 222) initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:}); 原因: Failure in initial objective function evaluation. LSQCURVEFIT cannot continue.
时间: 2024-02-28 17:56:05 浏览: 217
欧拉积分在概率统计中的应用
根据错误信息,估计是在调用 `lsqcurvefit` 函数时出现了错误。可能的原因是传递给 `sir` 函数的参数数目不足。
您需要在 `sir` 函数定义中将参数 `beta` 和 `gamma` 包含进去,如下所示:
```
sir = @(t,y,beta,gamma) [-beta*y(1)*y(2); beta*y(1)*y(2)-gamma*y(2); gamma*y(2)];
```
然后在调用 `lsqcurvefit` 函数时,将 `beta` 和 `gamma` 参数传递给 `sir` 函数,如下所示:
```
params = lsqcurvefit(@(params, t) sir(t, y0, params(1), params(2)), params0, data.t, [data.s; data.i; data.r]);
```
这样应该可以解决问题。
阅读全文