当前位置:
文档之家› matlab人口预测与数据曲线拟合
matlab人口预测与数据曲线拟合
a1 双曲线(一支): y a2 x 指数曲线: y a1e a2 x
例如
f ( x ) a1 x m a2e x a3 sin( x )
1, x , x 2 ,L x m
多项式拟合 指数函数拟合 三角函数拟合
e
1 x
,Le
m x
sin( x ), cos( x ), sin( 2 x ), cos(2 x ),Lsin( mx ), cos(mx )
仿真结果表明: 线性模型在短 期内基本上能 比较准确地反 映人口自然增 长的规律,但 长期预测误差 较大。
三、人口预测的Malthus模型
英国统计学家Malthus于1798年提出了一种关于 生物种群繁殖的指数增长模型:假设种群数量的增 长率与该时刻种群的个体数量成正比。 基本假设 : 人口(相对)增长率 r 是常数 x(t) ~时刻t 的人口, t=0时人口数为x0 dx rx , rt x ( t ) x e dt 指数增长模型 0 x ( 0 ) x0 实际中,常用
2 2 [ f ( x ) y ] i i i i 1 i 1 n n
达到最小。
最小二乘准则
数据插值
已知一组(二维)数据,即平面上的 n 个点( xi , yi ) ,
y f ( x) i 1,2, L, n, xi 互不相同,寻求一个函数(曲线)
使f ( x )在观察点x1 ,L, xn 处满足f ( xi ) yi , i 1,L, n,
计算得
a -27.9047, b 0.0176
从而得到人口数与年份的函数关系为
ye
27.9047 0.0176* x
指数预测模型
并预测2000,2005,2010年的人口
年份 预测(百万) 真实值(百万) 2000 1363.6 1295.33 2005 1488.8 1306.28 2010 1625.4 1370.5
xt e a bt ln x t a bt
解:
设
x t e
a bt
ln( x ) a bt
问题转化为求参数 a, b 使得
J (a , b) (a bti ln xi )2
10 i 1
取得最小值.其中, t i 表示年份,xi x t i 表示人口数量。
数学实验
Experiments in Mathematics Laboratory Mathematics
阮小娥博士 赵小艳
办公地址:理科楼214
实验13 人口预测与数据拟合
实验目的
1、学会用MATLAB软件进行数 据拟合。 2、了解利用最小二乘法进行 数据拟合的基本思想,掌握 用数据拟合法寻找最佳拟合 曲线的方法。 3、了解多元函数的极值在 数据拟合法中的应用。
或者调用M函数
function f=nihe(a,x) f=a(1)+a(2)*x; 保存成nihe.m,在新窗口编写程序 x=1949:5:1994; y=[541.67,602.66,672.09,704.99,806.71, 908.59,975.42,1034.75,1106.76,1176.7 4]; a0=[10 10]; [a,resnorm]=lsqcurvefit(@nihe,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 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-')
(2) polyfit命令---多项式曲线拟合 a = polyfit(xdata,ydata,n) 其中n表示多项式的最高阶数 xdata,ydata 为要拟合的数据,它是用向 量的方式输入。 输出参数a为拟合多项式 y = anxn + … + a1x + a0的系数a = [an, …, a1, a0]。 多项式在x处的值y可用下面程序计算。 y = polyval (a, x)
注意:该命令与初值有关系。
也可以直接编写程序如下:
clc;clf; x=1949:5:1994; y=[541.67,602.66,672.09,704.99,806.71,908.59,975.42,1034.75,1106. 76,1176.74]; plot(x,y,'r*','linewidth',2) grid a11=10;a12=sum(x); a21=a12;a22=sum(x.^2); d1=sum(y);d2=sum(x.*y); A=[a11,a12;a21,a22]; D=[d1;d2]; ab=inv(A)*D plot(x,g,'b-','linewidth',2) t=1949:5:2010; g=ab(1)+ab(2)*t; hold on plot(t,g,'b-','linewidth',2) y2000=ab(1)+ab(2)*2000 y2005=ab(1)+ab(2)*2005 y2010=ab(1)+ab(2)*2010 axis([1945 2012 500 1450]) plot(2000,1295.3,'g*','linewidth',2) plot(2005,1306.28,'g*','linewidth',2) plot(2010,1370.5,'g*','linewidth',2)
4、通过对实际问题进行分 析研究,初步掌握建立数 据拟合数学模型的方法。
实验问题
据人口统计年鉴,知我国从1949 年至1994年人口数据资料如下: (人口数单位为:百万)
1954 1959 1964 1969 602.66 672.09 704.99 806.71 1979 1984 1989 1994 975.42 1034.75 1106.76 1176.74
仿真结果表明: 人口增加的指 数模型在较短 期内基本上能 比较准确地反 映人口自然增 长的规律,但 长期预测误差 很大。
四、人口预测的Logistic模型
如果人口的增长符合Malthus模型,则当 t , x( t ) 即最终导致地球上人口爆炸,这与实际是不相符的。
1838年,荷兰生物学家Verhulst对Malthus模型作 了进一步分析后指出:导致上述不符合实际情况的 主要原因是未能考虑“密度制约”因素。
年份 人口数 年份 人口数
1949 541.67 1974 908.59
(1)在直角坐标系上作出人口数的图象。 (2)建立人口数与年份的函数关系,并估算1999年 的人口数。
y ax b
线性模型
如何确定a,b?
一、曲线拟合
1 曲线拟合问题的提法:
已知一组(二维)数据,即平面上的 n 个点( xi , yi ) , 使 f ( x) 在观测点x处所取得值f(x)分别与观察值y在某种 准则下最为接近,即曲线拟合得最好,如图
数据插值
2. 用什么样的曲线拟合已知数据?
1)画图观察 2)理论分析
f ( x ) a1 r1 ( x ) a 2 r2 ( x ) L a m rm ( x )
常用的曲线函数系ri(x)类型:
直线: 多项式:
y a1 x a0
y am x m L a1 x a0
10 1 J 10 10a t i b ln xi 0 2 a i 1 i 1 解方程组: 10 10 10 1 J t i a t i2 b ln xi t i 0 i 1 2 b i 1 i 1 即得参数a, b 的值.
y
y f ( x) i 1,2, L, n, xi 互不相同,寻求一个函数(曲线) ,
+ ( xi , yi ) i + + +
+
0
y f ( x)
+
+
+
x
从几何上讲,并不要求曲线严格通过已知点,但 要求曲线在各数据点和已知数据点之间的总体误 差最小,通常称为数据拟合。
而我们经常是确定f(x)使得偏差平方和Fra bibliotek计算得
a 15, b 27754
y 15 x 27754
从而得到人口数与年份的函数关系为 线性预测模型
并预测2000,2005,2010年的人口
年份 预测(百万) 真实值(百万) 2000 1266.6 1295.33 2005 1339.1 1306.28 2010 1411.7 1370.5
例
首先编写函数文件 function y=f(a,x) f=a(1)*exp(x)+a(2)*x.^2+a(3)*x.^3
保存为f.m,其次调用该函数
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)
人口增长到一定数量后,增长率下降的原因: 资源、环境等因素对人口增长的阻滞作用 且阻滞作用随人口数量增加而变大 r是x的减函数