24小时热门版块排行榜    

CyRhmU.jpeg
查看: 199  |  回复: 1
当前主题已经存档。
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 flying_23 的 20 个金币

flying_23

银虫 (小有名气)

[交流] 【求助】非线性拟合

条件t=[0.0100    0.6800    1.1000    1.6300    2.0700    2.6700    3.0900    3.6400    4.6500

    5.1000    5.5800    6.1100    6.6300    7.0600    7.6200    8.6600    9.0400    9.6300];
y=[2.3291    3.8513    4.5009    6.7492    9.1121    9.6917   11.1693   10.9145   16.4428
   18.2962   21.6399   25.7861   26.3428   26.5058   27.6395   35.0276   35.5562   36.1039];
方程Dy=-k*y*z+0.095*b*z , Dz=-b*z-0.222*z,  y(0)=0, z(0)=5300
z只知道初始值,过程值无法测定,要求通过方程拟合得出k和b的值
通过[y,z]=dsolve('Dy=-k*y*z+0.995*b*z','Dz=-b*z-0.222*z','y(0)=0,z(0)=5300','t')得出y的表达式,
y =
(199/200*b/k*exp(-2650000*k/(500*b+111)*exp(-1/500*(500*b+111)*t))-199/200*b/exp(5300*k/(500*b+111))^500/k)*exp(2650000*k/(500*b+111)*exp(-1/500*(500*b+111)*t))
  
z =5300*exp((-b-111/500)*t)
然后
myfunc=inline('(199./200.*beta(2)./beta(1).*exp(-2650000.*beta(1)./(500.*beta(2)+111).*exp(-1./500*(500.*beta(2)+111).*t))-199./200.*beta(2)./exp(5300.*beta(1)/(500.*beta(2)+111)).^500/beta(1)).*exp(2650000.*beta(1)/(500.*beta(2)+111).*exp(-1./500*(500.*beta(2)+111).*t))','beta','t')
采用nlinfit拟合
beta=nlinfit(t,y,myfunc,[0.1 0.1])
出现以下错误
??? Error using ==> nlinfit>checkFunVals at 357
MODELFUN has returned Inf or NaN values.

Error in ==> nlinfit>LMfit at 304
    if funValCheck && ~isfinite(sse), checkFunVals(r); end

Error in ==> nlinfit at 167
    [beta,J,lsiter,cause] = LMfit(X,y, model,beta,options,verbose,maxiter);
请各位帮忙解决一下这个问题,非常急切需要
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Rick


wuguocheng(金币+1,VIP+0): 谢谢讨论 10-24 08:06
did you try to change your initial guess of beta. looks like there are NAN during function evaluation
2楼2009-10-24 05:56:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 flying_23 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见