实验2 离散数据拟合模型.docx
- 文档编号:9606608
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:13
- 大小:382.31KB
实验2 离散数据拟合模型.docx
《实验2 离散数据拟合模型.docx》由会员分享,可在线阅读,更多相关《实验2 离散数据拟合模型.docx(13页珍藏版)》请在冰豆网上搜索。
实验2离散数据拟合模型
实验2离散数据拟合模型
一、实验名称:
离散数据拟合模型.
二、实验目的:
掌握离散数据拟合模型的建模方法,并会利用Matlab作数据拟合、数值计算与误差分析.
三、实验题目:
已知美国人口统计数据如表,完成下列数据的拟合问题:
(单位:
百万)
年份
1790
1800
1810
1820
1830
1840
1850
1860
1870
1880
1890
人口/
3.9
5.3
7.2
9.6
12.9
17.1
23.2
31.4
38.6
50.2
62.9
年份
1900
1910
1920
1930
1940
1950
1960
1970
1980
1990
2000
人口/
76.0
92.0
106.5
123.2
131.7
150.7
179.3
204.0
226.5
251.4
281.4
四、实验要求:
1、如果用指数增长模型
模拟美国人口1790年至2000年的变化过程,请用Matlab统计工具箱的函数nlinfit计算指数增长模型的以下三个数据拟合问题:
(1)取定x0=3.9,t0=1790,拟合待定参数r;
源程序:
clear
p=@(r,t)3.9.*exp(r.*(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,281.4];
r=nlinfit(t,c,p,0.0359)
sse=sum((c-p(r,t)).^2)
plot(t,c,'r*',1790:
1:
2000,p(r,1790:
1:
2000),'r')
axis([1790,2000,0,290])
xlabel('年份'),ylabel('人口(单位:
百万)')
title('拟合美国人口数据—指数增长型')
legend('拟合数据')
调试结果:
r=0.0212sse=1.7418e+004
(2)取定t0=1790,拟合待定参数x0和r;
源程序:
clear
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,281.4];
r0=[0.0359,3.9];
r=nlinfit(t,c,p,r0)
sse=sum((c-p(r,t)).^2)
plot(t,c,'r*',1790:
1:
2000,p(r,1790:
1:
2000),'r')
axis([1790,2000,0,290])
xlabel('年份'),ylabel('人口(单位:
百万)')
title('拟合美国人口数据—指数增长型')
legend('拟合数据')
调试结果:
(3)拟合待定参数t0,x0和r.要求写出程序,给出拟合参数和误差平方和的计算结果,并展示误差平方和最小的拟合效果图.
源程序:
clear
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,281.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,'r*',1790:
1:
2000,p(r,1790:
1:
2000),'r')
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('拟合误差')
调试结果:
2、通过变量替换,可以将属于非线性模型的指数增长模型转化成线性模型,并用Matlab函数polyfit进行计算,请说明转化成线性模型的详细过程,然后写出程序,给出拟合参数和误差平方和的计算结果,并展示拟合效果图.
解题思路:
将属于非线性模型的指数增长模型转化成线性模型,即对函数式两边求导:
ln[x(t)]=ln[x(0)]+r*[t-t(0)],最后变成一次函数形式:
Y=rX+b,即令ln[x(t)]=Y,ln[x(0)]=b,[t-t(0)]=X.
源程序:
clear
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('拟合误差')
调试结果:
3、请分析指数增长模型非线性拟合和线性化拟合的结果有何区别?
原因是什么?
答:
如下图:
可以看出非线性拟合线性比较均匀、平滑,误差平方和的个数较多,误差相比较而言较小;而线性拟合线性不均匀,有很大的断点,误差平方和的个数也相比较而言较少,并且,误差随着人口数的增长而增长。
非线性拟合
线性拟合
4、如果用阻滞增长模型
模拟美国人口1790年至2000年的变化过程,请用Matlab统计工具箱的函数nlinfit计算阻滞增长的以下三个数据拟合问题:
(1)取定x0=3.9,t0=1790,拟合待定参数r和N;
源程序:
clear
p=@(a,t)(a
(2).*3.9)./(3.9+(a
(2)-3.9).*exp(-a
(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,281.4];
a=nlinfit(t,c,p,[0.03,350])
sse=sum((c-p(a,t)).^2)
plot(t,c,'r*',t,p(a,t),'r')
axis([1790,2000,0,300])
xlabel('年份'),ylabel('人口(单位:
百万)')
title('拟合美国人口数据—阻滞增长型')
legend('拟合数据')
调试结果:
(2)取定t0=1790,拟合待定参数x0,r和N;
源程序:
clear
p=@(a,t)(a
(2).*a(3))./(a(3)+(a
(2)-a(3)).*exp(-a
(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,281.4];
a=nlinfit(t,c,p,[0.03,350,4.0])
sse=sum((c-p(a,t)).^2)
plot(t,c,'r*',t,p(a,t),'r')
axis([1790,2000,0,300])
xlabel('年份'),ylabel('人口(单位:
百万)')
title('拟合美国人口数据—阻滞增长型')
legend('拟合数据')
调试结果:
(3)拟合待定参数t0,x0,r和N.要求写出程序,给出拟合参数和误差平方和的计算结果,并展示误差平方和最小的拟合效果图.
源程序:
clear
p=@(a,t)(a
(2).*a(3))./(a(3)+(a
(2)-a(3)).*exp(-a
(1).*(t-1790+1*a(4))));
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];
[a,x]=nlinfit(t,c,p,[0.03,350,4.0,10])
sse=sum((c-p(a,t)).^2)
t0=1790+1*a(4)
subplot(2,1,1)
plot(t,c,'r*',t,p(a,t),'r')
axis([1790,2000,0,300])
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('拟合误差图—阻滞增长型')
legend('拟合数据')
调试结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验2 离散数据拟合模型 实验 离散 数据 拟合 模型
![提示](https://static.bdocx.com/images/bang_tan.gif)