人口预测与数据曲线拟合
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
format long
t1=[1790;1800;1810;1820;1830;1840;1850;1860;187 0;1880];
t2=[1890;1900;1910;1920;1930;1940;1950;1960;197 0;1980];
x1=[3.9;5.3;7.2;9.6;12.9;17.1;23.2;31.4;38.6;50 .2];
a= -49.79535457790735 b=0.02859807120038
拟合曲线 原始数据曲线
仿真结果表明: 人口增加的指 数模型在短期 内基本上能比 较准确地反映 人口自然增长 的规律,但长 期预测误差很 大,需要修正 预测模型。
四、人口预测的Logistic模型
如果人口的增长符合Malthus模型,则当 t , x(t) 即最终导致地球上人口爆炸,这与实际是不相符的。
10a 10 ti i1
10 ti i1
a
b 10 ln xi i1
10 ti2 b 10
i1
i 1源自文库
0
ln xi ti
0
即得参数a,b 的值.
% This program is to predict the number of population %
数学实验
Experiments in MathMemaatthicesmLaabtoicrastory
阮小赵娥小博艳士
办公地址:理科楼218
实验13 人口预测与数据拟合
实验目的
1、学会用MATLAB软件进行数
据拟合。
2、了解利用最小二乘法进行 数据拟合的基本思想,掌握 用数据拟合法寻找最佳拟合 曲线的方法。
指数函数拟合 三角函数拟合
3 拟合函数组中系数的确定
以f ( x) a1 x a2为例, 即确定a1,a2使得
n
n
J (a1,a2 )
2 i
[a1 xi a2 ) yi ]2达到最小。
i 1
i 1
为此,只需利用极值的必要条件 J 0(k 1,2)得到关 ak
k~人口容量(资源、环境能容纳的最大数量)
r(k) 0
s r k
r( x) r(1 x ) k
dx r( x)x rx(1 x )
dt
xm
例1的Logistic模型留给同学们练习
五、人口预测的多项式模型
a =1.0e+006 * -0.00000000000014 0.00000000107892 -0.00000304878595 0.00381927346813 -1.79012132225427
y a1 x a0
多项式: y am xm a1 x a0
双曲线(一支):
y
a1 x
a2
指数曲线:
y a1ea2x
例如 f ( x) a1 xm a2ex a3 sin( x)
多项式拟合
e1x , em x
sin( x ), cos( x ), sin(2 x ), cos(2x), sin(mx),cos(mx)
使f ( x)在观察点x1, , xn处满足f ( xi ) yi , i 1, , n,
数据插值
2. 用什么样的曲线拟合已知数据?
1).画图观察; 2).理论分析
f ( x) a1r1( x) a2r2( x) amrm ( x)
常用的曲线函数系ri(x)类型:
直线:
(2) polyfit命令---多项式曲线拟合
a = polyfit(xdata,ydata,n)
其中n表示多项式的最高阶数
xdata,ydata 为要拟合的数据,它是用向 量的方式输入。
输出参数a为拟合多项式 y + a0的系数a = [an, …, a1,
=a0a]n。xn
+
…
+
a1x
多项式在x处的值y可用下面程序计算。
1979 1984 975.42 1034.75
1964 1969 704.99 806.71
1989 1994 1106.76 1176.74
(1)在直角坐标系上作出人口数的图象。
(2)建立人口数与年份的函数关系,并估算1999 年的人口数。
y ax b 线性模型
如何确定a,b?
一、曲线拟合
于 a1 , a2的线性方程组,
n
i
1 n
2[a1
xi
a2 )
yi ]xi
0
i 1
2[a1 xi
a2 )
yi
]
0
a1 , a2
4 用matlab软件进行数据拟合
(1)lsqcurvefit命令----最小二乘拟合 a= lsqcurvefit(fun,x0,xdata,ydata) [a,resnorm]=lsqcurvefit(fun,x0,xdata,ydata)
++
+ y f (x)
+
0
+
+
+
x
从几何上讲,并不要求曲线严格通过已知点,但 要求曲线在各数据点和已知数据点之间的总体误 差最小,通常称为数据拟合。
而我们经常是确定f(x)使得偏差平方和
n
n
2 i
[ f ( xi ) yi ]2
i 1
i 1
达到最小。
最小二乘准则
数据插值
已知一组(二维)数据,即平面上的 n 个点(xi , yi ), i 1,2, L ,n, xi 互不相同,寻求一个函数(曲线)y f (x)
是根据给定的数据xdata,ydata,按照函数 文件fun给定的函数,以x0为初值做最小二 乘拟合,返回函数中的系数向量a和残差平 方和resnorm。
例
首先编写函数文件 function y=f(a,x) f=a(1)*exp(x)+a(2)*x.^2+a(3)*x.^3
保存为f.m,其次调用该函数
y = polyval (a, x)
由于高次多项式曲线变化不稳定,所以多项式次数的选取不
宜过高。
例如
clear;clc; x=0:0.1:1; y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66,9.56,9.48,9.3,11.2]; plot(x,y,'k.','markersize',25); axis([0 1.3 -2 16]); p3=polyfit(x,y,3) p6=polyfit(x,y,6) t=0:0.01:1.2; s=polyval(p3,t); s1=polyval(p6,t); hold on plot(t,s,'r-','linewidth',2); plot(t,s1,'b--','linewidth',2); grid
二、人口预测线性模型
对于开始提出的实验问题, 代如数据,计算得
a1 15,a2 27754 从而得到人口数与年份的函数关系为
y 15x 27754 线性预测模型
把x=1999代如,估算出1999年的人口数为 y=1252.1(百万)=12.52亿
1999年实际人口数量为12.6亿。
xx1(i)=exp(ab(1)+ab(2)*t1(i)); end for i=1:10
xx2(i)=exp(ab(1)+ab(2)*t2(i)); end plot(t1,x1,‘r*--’, t2,x2,‘r*--’, t1,xx1,‘b+-’,t2,xx2,‘b+-’, 'linewidth',3,'markersize',10);
3、了解多元函数的极值在 数据拟合法中的应用。
4、通过对实际问题进行分 析研究,初步掌握建立数 据拟合数学模型的方法。
实验问题
据人口统计年鉴,知我国从1949 年至1994年人口数据资料如下: (人口数单位为:百万)
年份 人口数 年份 人口数
1949 541.67 1974 908.59
1954 1959 602.66 672.09
x(t ) x0ert
指数增长模型
实际中,常用 xt eabt ln xt a bt
例1
美国1790年-1980年每隔10年的人口记录
年份 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880
人口(百 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2
1838年,荷兰生物学家Verhulst对Malthus模型 作了进一步分析后指出:导致上述不符合实际情况 的主要原因是未能考虑“密度制约”因素。
人口增长到一定数量后,增长率下降的原因: 资源、环境等因素对人口增长的阻滞作用
且阻滞作用随人口数量增加而变大 r是x的减函数
假设 r(x) r sx (r, s 0) r~固有增长率(x很小时)
1 曲线拟合问题的提法:
已知一组(二维)数据,即平面上的 n 个点(xi , yi ), i 1,2, L ,n, xi 互不相同,寻求一个函数(曲线)y f (x),
使 f (x) 在观测点x处所取得值f(x)分别与观察值y在某种
准则下最为接近,即曲线拟合得最好,如图
y
i + ( xi , yi )
万)
年份 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
人口(百 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5
万)
1. 由前100年的数据求出美国的人口增长Malthus模型。 2. 预测后100年(每隔10年)的人口状况。 3. 根据预测的人口状况和实际的人口数量,讨论人 口模型的改进情况。
x2=[62.9;76.0;92.0;106.5;123.2;131.7;150.7;179. 3;204.0;226.5];
lnx1=log(x1); lnx2=log(x2);
a12=sum(t1);a11=10;a21=a12;a22=sum(t1.^2); d1=sum(lnx1);d2=sum(lnx1.*t1); A=[a11,a12;a21,a22];D=[d1;d2]; ab=inv(A)*D; disp(‘a=’);disp(ab(1)); disp(‘b=’);disp(ab(2)); for i=1:10
解:
设 xt eabt
ln(x) a bt
问题转化为求参数 a,b 使得
10
J (a,b) (a bti ln xi )2
i 1
取得最小值. 其中, ti 表示年份, xi xti 表示人口数量。
解方程组:
1 J 2 a 1 J 2 b
三、人口预测的Malthus模型
英国统计学家Malthus于1798年提出了一种关于 生物种群繁殖的指数增长模型:假设种群数量的增 长率与该时刻种群的个体数量成正比。
基本假设 : 人口(相对)增长率 r 是常数
x(t) ~时刻t 的人口, t=0时人口数为x0
dx rx, dt x(0) x0
7]; f=inline('a(1)*exp(x)+a(2)*x.^2+a(3)*x.^3','a','x'); a0=[0 0 0]; [a,resnorm]=lsqcurvefit(f,a0,x,y) plot(x,y,'*') hold on g=a(1)*exp(x)+a(2)*x.^2+a(3)*x.^3; plot(x,g,'r-')
x=0:0.1:1; y=[3.1,3.27,3.81,4.5,5.18,6,7.05,8.56,9.69,11.25,13.17]; a0=[0 0 0]; [x,resnorm]=lsqcurvefit(@f,a0,x,y)
也可以用inline命令定义函数
x=0:0.1:1; y=[3.1,3.27,3.81,4.5,5.18,6,7.05,8.56,9.69,11.25,13.1
-----zhao105
红色的是原始数据曲线 蓝色的是4次多项式拟合曲线
仿真结果表明, 人口增加的模型用多项式拟合能 比较准确地反映人口自然增长的规律,对长期预 测具有指导意义。
例2: 海底光缆线长度预测模型
某一通信公司在一次施 工中,需要在水面宽为
A
x0 0
2
6 4
8
10
12
xi 14
16
x20 18 B 20
t1=[1790;1800;1810;1820;1830;1840;1850;1860;187 0;1880];
t2=[1890;1900;1910;1920;1930;1940;1950;1960;197 0;1980];
x1=[3.9;5.3;7.2;9.6;12.9;17.1;23.2;31.4;38.6;50 .2];
a= -49.79535457790735 b=0.02859807120038
拟合曲线 原始数据曲线
仿真结果表明: 人口增加的指 数模型在短期 内基本上能比 较准确地反映 人口自然增长 的规律,但长 期预测误差很 大,需要修正 预测模型。
四、人口预测的Logistic模型
如果人口的增长符合Malthus模型,则当 t , x(t) 即最终导致地球上人口爆炸,这与实际是不相符的。
10a 10 ti i1
10 ti i1
a
b 10 ln xi i1
10 ti2 b 10
i1
i 1源自文库
0
ln xi ti
0
即得参数a,b 的值.
% This program is to predict the number of population %
数学实验
Experiments in MathMemaatthicesmLaabtoicrastory
阮小赵娥小博艳士
办公地址:理科楼218
实验13 人口预测与数据拟合
实验目的
1、学会用MATLAB软件进行数
据拟合。
2、了解利用最小二乘法进行 数据拟合的基本思想,掌握 用数据拟合法寻找最佳拟合 曲线的方法。
指数函数拟合 三角函数拟合
3 拟合函数组中系数的确定
以f ( x) a1 x a2为例, 即确定a1,a2使得
n
n
J (a1,a2 )
2 i
[a1 xi a2 ) yi ]2达到最小。
i 1
i 1
为此,只需利用极值的必要条件 J 0(k 1,2)得到关 ak
k~人口容量(资源、环境能容纳的最大数量)
r(k) 0
s r k
r( x) r(1 x ) k
dx r( x)x rx(1 x )
dt
xm
例1的Logistic模型留给同学们练习
五、人口预测的多项式模型
a =1.0e+006 * -0.00000000000014 0.00000000107892 -0.00000304878595 0.00381927346813 -1.79012132225427
y a1 x a0
多项式: y am xm a1 x a0
双曲线(一支):
y
a1 x
a2
指数曲线:
y a1ea2x
例如 f ( x) a1 xm a2ex a3 sin( x)
多项式拟合
e1x , em x
sin( x ), cos( x ), sin(2 x ), cos(2x), sin(mx),cos(mx)
使f ( x)在观察点x1, , xn处满足f ( xi ) yi , i 1, , n,
数据插值
2. 用什么样的曲线拟合已知数据?
1).画图观察; 2).理论分析
f ( x) a1r1( x) a2r2( x) amrm ( x)
常用的曲线函数系ri(x)类型:
直线:
(2) polyfit命令---多项式曲线拟合
a = polyfit(xdata,ydata,n)
其中n表示多项式的最高阶数
xdata,ydata 为要拟合的数据,它是用向 量的方式输入。
输出参数a为拟合多项式 y + a0的系数a = [an, …, a1,
=a0a]n。xn
+
…
+
a1x
多项式在x处的值y可用下面程序计算。
1979 1984 975.42 1034.75
1964 1969 704.99 806.71
1989 1994 1106.76 1176.74
(1)在直角坐标系上作出人口数的图象。
(2)建立人口数与年份的函数关系,并估算1999 年的人口数。
y ax b 线性模型
如何确定a,b?
一、曲线拟合
于 a1 , a2的线性方程组,
n
i
1 n
2[a1
xi
a2 )
yi ]xi
0
i 1
2[a1 xi
a2 )
yi
]
0
a1 , a2
4 用matlab软件进行数据拟合
(1)lsqcurvefit命令----最小二乘拟合 a= lsqcurvefit(fun,x0,xdata,ydata) [a,resnorm]=lsqcurvefit(fun,x0,xdata,ydata)
++
+ y f (x)
+
0
+
+
+
x
从几何上讲,并不要求曲线严格通过已知点,但 要求曲线在各数据点和已知数据点之间的总体误 差最小,通常称为数据拟合。
而我们经常是确定f(x)使得偏差平方和
n
n
2 i
[ f ( xi ) yi ]2
i 1
i 1
达到最小。
最小二乘准则
数据插值
已知一组(二维)数据,即平面上的 n 个点(xi , yi ), i 1,2, L ,n, xi 互不相同,寻求一个函数(曲线)y f (x)
是根据给定的数据xdata,ydata,按照函数 文件fun给定的函数,以x0为初值做最小二 乘拟合,返回函数中的系数向量a和残差平 方和resnorm。
例
首先编写函数文件 function y=f(a,x) f=a(1)*exp(x)+a(2)*x.^2+a(3)*x.^3
保存为f.m,其次调用该函数
y = polyval (a, x)
由于高次多项式曲线变化不稳定,所以多项式次数的选取不
宜过高。
例如
clear;clc; x=0:0.1:1; y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66,9.56,9.48,9.3,11.2]; plot(x,y,'k.','markersize',25); axis([0 1.3 -2 16]); p3=polyfit(x,y,3) p6=polyfit(x,y,6) t=0:0.01:1.2; s=polyval(p3,t); s1=polyval(p6,t); hold on plot(t,s,'r-','linewidth',2); plot(t,s1,'b--','linewidth',2); grid
二、人口预测线性模型
对于开始提出的实验问题, 代如数据,计算得
a1 15,a2 27754 从而得到人口数与年份的函数关系为
y 15x 27754 线性预测模型
把x=1999代如,估算出1999年的人口数为 y=1252.1(百万)=12.52亿
1999年实际人口数量为12.6亿。
xx1(i)=exp(ab(1)+ab(2)*t1(i)); end for i=1:10
xx2(i)=exp(ab(1)+ab(2)*t2(i)); end plot(t1,x1,‘r*--’, t2,x2,‘r*--’, t1,xx1,‘b+-’,t2,xx2,‘b+-’, 'linewidth',3,'markersize',10);
3、了解多元函数的极值在 数据拟合法中的应用。
4、通过对实际问题进行分 析研究,初步掌握建立数 据拟合数学模型的方法。
实验问题
据人口统计年鉴,知我国从1949 年至1994年人口数据资料如下: (人口数单位为:百万)
年份 人口数 年份 人口数
1949 541.67 1974 908.59
1954 1959 602.66 672.09
x(t ) x0ert
指数增长模型
实际中,常用 xt eabt ln xt a bt
例1
美国1790年-1980年每隔10年的人口记录
年份 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880
人口(百 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2
1838年,荷兰生物学家Verhulst对Malthus模型 作了进一步分析后指出:导致上述不符合实际情况 的主要原因是未能考虑“密度制约”因素。
人口增长到一定数量后,增长率下降的原因: 资源、环境等因素对人口增长的阻滞作用
且阻滞作用随人口数量增加而变大 r是x的减函数
假设 r(x) r sx (r, s 0) r~固有增长率(x很小时)
1 曲线拟合问题的提法:
已知一组(二维)数据,即平面上的 n 个点(xi , yi ), i 1,2, L ,n, xi 互不相同,寻求一个函数(曲线)y f (x),
使 f (x) 在观测点x处所取得值f(x)分别与观察值y在某种
准则下最为接近,即曲线拟合得最好,如图
y
i + ( xi , yi )
万)
年份 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
人口(百 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5
万)
1. 由前100年的数据求出美国的人口增长Malthus模型。 2. 预测后100年(每隔10年)的人口状况。 3. 根据预测的人口状况和实际的人口数量,讨论人 口模型的改进情况。
x2=[62.9;76.0;92.0;106.5;123.2;131.7;150.7;179. 3;204.0;226.5];
lnx1=log(x1); lnx2=log(x2);
a12=sum(t1);a11=10;a21=a12;a22=sum(t1.^2); d1=sum(lnx1);d2=sum(lnx1.*t1); A=[a11,a12;a21,a22];D=[d1;d2]; ab=inv(A)*D; disp(‘a=’);disp(ab(1)); disp(‘b=’);disp(ab(2)); for i=1:10
解:
设 xt eabt
ln(x) a bt
问题转化为求参数 a,b 使得
10
J (a,b) (a bti ln xi )2
i 1
取得最小值. 其中, ti 表示年份, xi xti 表示人口数量。
解方程组:
1 J 2 a 1 J 2 b
三、人口预测的Malthus模型
英国统计学家Malthus于1798年提出了一种关于 生物种群繁殖的指数增长模型:假设种群数量的增 长率与该时刻种群的个体数量成正比。
基本假设 : 人口(相对)增长率 r 是常数
x(t) ~时刻t 的人口, t=0时人口数为x0
dx rx, dt x(0) x0
7]; f=inline('a(1)*exp(x)+a(2)*x.^2+a(3)*x.^3','a','x'); a0=[0 0 0]; [a,resnorm]=lsqcurvefit(f,a0,x,y) plot(x,y,'*') hold on g=a(1)*exp(x)+a(2)*x.^2+a(3)*x.^3; plot(x,g,'r-')
x=0:0.1:1; y=[3.1,3.27,3.81,4.5,5.18,6,7.05,8.56,9.69,11.25,13.17]; a0=[0 0 0]; [x,resnorm]=lsqcurvefit(@f,a0,x,y)
也可以用inline命令定义函数
x=0:0.1:1; y=[3.1,3.27,3.81,4.5,5.18,6,7.05,8.56,9.69,11.25,13.1
-----zhao105
红色的是原始数据曲线 蓝色的是4次多项式拟合曲线
仿真结果表明, 人口增加的模型用多项式拟合能 比较准确地反映人口自然增长的规律,对长期预 测具有指导意义。
例2: 海底光缆线长度预测模型
某一通信公司在一次施 工中,需要在水面宽为
A
x0 0
2
6 4
8
10
12
xi 14
16
x20 18 B 20