24小时热门版块排行榜    

查看: 1155  |  回复: 3

li_qun

铜虫 (著名写手)

[求助] 为什么拟合结果总为所设初始值?

用这样一个函数:yy=1./(1+5.*b./(2.*k)+2.*b.^2./k.^2+b.^3./(2.*k.^3)).*b.*exp(b.*xx).*(xx<0)+(b./k+2.*b.^2./k.^2+b.^3./k.^3)./(4+10.*b./k+8.*b.^2./k.^2+2.*b.^3./k.^3).*k.*(k.*xx+2./(b./k+1)).^2.*exp(-k.*xx).*(xx>=0)去拟合(xx,yy)
myfittype=fittype('1./(1+5.*b./(2.*k)+2.*b.^2./k.^2+b.^3./(2.*k.^3)).*b.*exp(b.*xx).*(xx<0)+(b./k+2.*b.^2./k.^2+b.^3./k.^3)./(4+10.*b./k+8.*b.^2./k.^2+2.*b.^3./k.^3).*k.*(k.*xx+2./(b./k+1)).^2.*exp(-k.*xx).*(xx>=0)','dependent',{'yy'},'independent',{'xx'},'coefficients',{'b','k'});
myfit=fit(xx',yy',myfittype,'start',[4.2e9,1.4e9])
plot(myfit,xx,yy)

myfit =

     General model:
     myfit(xx) = 1./(1+5.*b./(2.*k)+2.*b.^2./k.^2+b.^3./(2.*k.^3)).*b.*exp(b.*xx)
                    .*(xx<0)+(b./k+2.*b.^2./k.^2+b.^3./k.^3)./(4+10.*b./k+
                    8.*b.^2./k.^2+2.*b.^3./k.^3).*k.*(k.*xx+2./(b./k+1)
                    ).^2.*exp(-k.*xx).*(xx>=0)
     Coefficients (with 95% confidence bounds):
       b =     4.2e+09  (3.72e+09, 4.68e+09)
       k =     1.4e+09  (1.369e+09, 1.431e+09)

拟合时设定了初始值,但无论初始值设为多少,拟合结果就是多少,请问问题出在那里了呢?
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li_qun

铜虫 (著名写手)

没有设置精度,设置了精度就可以了,myfit=fit(xx',yy',myfittype,'start',[1e9,1e9],'Tolfun',1e-10)
2楼2016-10-28 21:44:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dlli2014

新虫 (文坛精英)

3楼2016-10-28 23:38:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li_qun

铜虫 (著名写手)

引用回帖:
3楼: Originally posted by dlli2014 at 2016-10-28 23:38:53
初始值选择不当?

精度设置问题

发自小木虫Android客户端
4楼2016-11-18 10:11:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 li_qun 的主题更新
信息提示
请填处理意见