有matlab拟合的阶次可以得出一个怎样的关于连续函数在一定区间的重要结论
展开全部
进行数据拟合,首先要选择适当的拟合函数形式,其次是选择适当的初值,最后是选用适当的函数,并且要对拟合的结果进行分析,必要时对拟合函数以及初值作出调整。
你现在的拟合函数形式根本不可行,因为从数据看,应该是指数形式的,但你选择的拟合函数却是负指数形式的(随x增大而减小),不可能得到满意结果的。
我给你换了一个拟合函数(正指数形式,且增加了直流项),使用两种不同的拟合方法进行拟合:
y=[0.5 0.86 0.67 0.81 1.60 2.02 2.17 1.69 1.42 1.73 0.56 1.08 2.40 5.48 10.38 16.71 23.90 38.21 59.23 74.46 91.15];
x=[0 10 15 31 40 43 45 47 50 56 64 74 86 99 114 128 141 153 167 181 196];
fx=inline('beta(1)*exp((x-beta(2))/beta(3))+beta(4)','beta','x');
beta1=nlinfit(x,y,fx,[50 120 100 -30])
beta2=lsqcurvefit(fx,[50 120 100 -30],x,y)
plot(x,y,'o',x,fx(beta1,x),'r',x,fx(beta2,x),'g--');
legend('原始数据','nlinfit拟合','lsqcurvefit拟合',0)
结果如下:
beta1 =
35.7455 148.3429 46.2089 -3.1328
beta2 =
27.1560 135.6650 46.1911 -3.1266
两种拟合方法得到的数据虽然有些差异,但从曲线看差别并不大。
你现在的拟合函数形式根本不可行,因为从数据看,应该是指数形式的,但你选择的拟合函数却是负指数形式的(随x增大而减小),不可能得到满意结果的。
我给你换了一个拟合函数(正指数形式,且增加了直流项),使用两种不同的拟合方法进行拟合:
y=[0.5 0.86 0.67 0.81 1.60 2.02 2.17 1.69 1.42 1.73 0.56 1.08 2.40 5.48 10.38 16.71 23.90 38.21 59.23 74.46 91.15];
x=[0 10 15 31 40 43 45 47 50 56 64 74 86 99 114 128 141 153 167 181 196];
fx=inline('beta(1)*exp((x-beta(2))/beta(3))+beta(4)','beta','x');
beta1=nlinfit(x,y,fx,[50 120 100 -30])
beta2=lsqcurvefit(fx,[50 120 100 -30],x,y)
plot(x,y,'o',x,fx(beta1,x),'r',x,fx(beta2,x),'g--');
legend('原始数据','nlinfit拟合','lsqcurvefit拟合',0)
结果如下:
beta1 =
35.7455 148.3429 46.2089 -3.1328
beta2 =
27.1560 135.6650 46.1911 -3.1266
两种拟合方法得到的数据虽然有些差异,但从曲线看差别并不大。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询