离散数据拟合模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

工程技术大学上机实验报告

>> legend('拟合数据')

程序调用:

>> r r = 0.0212

>> sse sse = 1.7418e+004

(2)取定t0=1790,拟合待定参数x0和r;

程序代码:

>> p=(r,t)r(2).*exp(r(1).*(t-1790));

>> t=1790:10:2000;

>> c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,

50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,2 81.4];

>> r0=[0.0359,3.9];

>> r=nlinfit(t,c,p,r0);

>> sse=sum((c-p(r,t)).^2);

>> plot(t,c,'b*',1790:1:2000,p(r,1790:1:2000),'b')

>> axis([1790,2000,0,290])

>> xlabel('年份'),ylabel('人口(单位:百万)')

>> title('拟合美国人口数据-指数增长型')

>> legend('拟合数据')

程序调用:

>> r r =0.0142 14.9940

>> sse sse = 2.2639e+003

(3)拟合待定参数t0, x0和r.要求写出程序,给出拟合参数和误差平方和

的计算结果,并展示误差平方和最小的拟合效果图.

程序代码:

>> p=(r,t)r(2).*exp(r(1).*(t-1790+1.*r(3)));

>> t=1790:10:2000;

>> c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,

50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,2 81.4];

>> r0=[0.0359,3.9,1];

>> [r,x]=nlinfit(t,c,p,r0);

>> sse=sum((c-p(r,t)).^2);

>> a=1790+1.*r(3);

>> subplot(2,1,1)

>> plot(t,c,'b*',1790:1:2000,p(r,1790:1:2000),'b')

>> axis([1790,2000,0,290])

>> xlabel('年份'),ylabel('人口(单位:百万)')

>> title('拟合美国人口数据-指数增长型')

>> legend('拟合数据')

>> subplot(2,1,2)

>> plot(t,x,'k+',[1790:2000],[0,0],'k')

>> axis([1790,2000,-20,20])

>> xlabel('年份'),ylabel('人口(单位:百万)')

>> title('拟合误差')

程序调用:

>> r r = 0.0142 7.3264 50.3522

>> x x =

Columns 1 through 5 -11.0940 -11.9857 -12.7277 -13.3735 -13.5848

Columns 6 through 10 -13.4328 -11.9995 -9.1795 -8.1818 -3.7321

Columns 11 through 15 0.7248 4.3218 9.3664 11.2364 13.3761

Columns 16 through 20 5.0903 4.7390 11.0299 10.0111 2.8613

Columns 21 through 22 -6.4202 -15.8260

>> sse sse = 2.2639e+003

>> a a = 1.8404e+003

2、通过变量替换,可以将属于非线性模型的指数增长模型转化成线性模型,并用Matlab函数polyfit进行计算,请说明转化成线性模型的详细过程,然后

写出程序,给出拟合参数和误差平方和的计算结果,并展示拟合效果图.

非线性模型的指数增长模型转化成线性模型

程序代码:

>> t=1790:10:2000;

>>c=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106

.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];

>> [p,s]=polyfit(t-1790,log(c),1)

>>b1=p(1)

>>b2=exp(p(2))

>>subplot(2,1,1)

>>plot(t,c,'r*',t,exp(polyval(p,t-1790)),'r')

>>axis([1790,2000,0,290])

>>xlabel('年份'),ylabel('人口(单位:百万)')

>>title('拟合美国人口数据—指数增长型')

>>legend('拟合数据')

>>c1=(c-exp(polyval(p,t-1790))).^2

>>c2=sum(c1)

>>subplot(2,1,2)

>>plot(t,c1,'k+',[1790,2000],[0,0],'k')

>>axis([1790,2000,-20,20])

>>xlabel('年份'),ylabel('误差')

>>title('拟合误差')

程序调用:

p = 0.0202 1.7992

s = R: [2x2 double]

相关文档
最新文档