Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-10-23, 13:30   #1
flying_23
初级会员
 
注册日期: 2009-01-30
年龄: 42
帖子: 9
声望力: 0
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);
请各位帮忙解决一下这个问题,非常急切需要
flying_23 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 23:52


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.