Mathematics Laboratory
阮小娥博士
数学实验
办公地址:理科楼214
实验13 人口预测与数据拟合
2、了解利用最小二乘法进行数据拟合的基本思想,掌握用数据拟合法寻找最佳拟合曲线的方法。
3、了解多元函数的极值在数据拟合法中的应用。
实验目的
1、学会用MATLAB软件进行数
据拟合。
4、通过对实际问题进行
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
研究,初步掌握建立数据拟合数学模型的方法。
据人口统计年鉴,知我国从1949年至1994年人口数据资料如下: (人口数单位为:百万)
(1)在直角坐标系上作出人口数的图象。
(2)建立人口数与年份的函数关系,并估算1999年的人口数。
实验问题
如何确定a,b?
线性模型
1 曲线拟合问题的提法:
已知一组(二维)数据,即平面上的
n
个点
)
,
(
i
i
y
x
,
i
x
n
i
,
,
,
2
,
1
L
=
互不相同,寻求一个函数(曲线)
)
(
x
f
y
=
,
使
)
(
x
f
在观测点x处所取得值f(x)分别与观察值y在某种
x
y
0
+
+
+
+
+
+
+
+
一、曲线拟合
准则下最为接近,即曲线拟合得最好,如图
从几何上讲,并不要求曲线严格通过已知点,但要求曲线在各数据点和已知数据点之间的总体误差最小,通常称为数据拟合。
达到最小。
最小二乘准则
而我们经常是确定f(x)使得偏差平方和
数据插值
已知一组(二维)数据,即平面上的
n
个点
)
,
(
i
i
y
x
,
i
x
n
i
,
,
,
2
,
1
L
=
互不相同,寻求一个函数(曲线)
)
(
x
f
y
=
数据插值
2. 用什么样的曲线拟合已知数据?
常用的曲线函数系ri(x)类型:
1)画图观察
2)理论分析
指数曲线:
双曲线(一支):
多项式:
直线:
例如
指数函数拟合
三角函数拟合
多项式拟合
为此,只需利用极值的必要条件
得到关于
的线性方程组,
_1272610919.unknown
_1272610942.unknown
3 拟合函数组中系数的确定
4 用matlab软件进行数据拟合
(1)lsqcurvefit命令----最小二乘拟合
a= lsqcurvefit(fun,x0,xdata,ydata)
[a,resnorm]=lsqcurvefit(fun,x0,xdata,ydata)
是根据给定的数据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,其次调用该函数
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.17];
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-')
a = polyfit(xdata,ydata,n)
其中n
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示多项式的最高阶数
xdata,ydata 为要拟合的数据,它是用向量的方式输入。
输出参数a为拟合多项式 y = anxn + … + a1x + a0的系数a = [an, …, a1, a0]。
多项式在x处的值y可用下面程序计算。
y = polyval (a, x)
由于高次多项式曲线变化不稳定,所以多项式次数的选取不
宜过高。
(2) polyfit命令---多项式曲线拟合
例如
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
编写程序调用matlab命令
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
f=inline('a(1)+a(2)*x','a','x');
a0=[0 5];
[a,resnorm]=lsqcurvefit(f,a0,x,y)
hold on
g=a(1)+a(2)*x;
plot(x,g,'b-','linewidth',2)
二、人口预测线性模型
或者调用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.74];
a0=[10 10];
[a,resnorm]=lsqcurvefit(@nihe,a0,x,y)
注意:该命令与初值有关系。
也可以直接编写程序如下:
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)
计算得
从而得到人口数与年份的函数关系为
线性预测模型
并预测2000,2005,2010年的人口
年份 2000 2005 2010
预测(百万) 1266.6 1339.1 1411.7
真实值(百万) 1295.33 1306.28 1370.5
仿真结果表明: 线性模型在短期内基本上能比较准确地反映人口自然增长的规律,但长期预测误差较大。
三、人口预测的Malthus模型
英国统计学家Malthus于1798年提出了一种关于生物种群繁殖的指数增长模型:假设种群数量的增长率与该时刻种群的个体数量成正比。
基本假设 : 人口(相对)增长率 r 是常数
x(t) ~时刻t 的人口, t=0时人口数为x0
指数增长模型
实际中,常用
解:
解方程组:
计算得
从而得到人口数与年份的函数关系为
指数预测模型
并预测2000,2005,2010年的人口
年份 2000 2005 2010
预测(百万) 1363.6 1488.8 1625.4
真实值(百万) 1295.33 1306.28 1370.5
仿真结果表明: 人口增加的指数模型在较短期内基本上能比较准确地反映人口自然增长的规律,但长期预测误差很大。
四、人口预测的Logistic模型
如果人口的增长符合Malthus模型,则当
人口增长到一定数量后,增长率下降的原因:
资源、环境等因素对人口增长的阻滞作用
1838年,荷兰生物学家Verhulst对Malthus模型作了进一步分析后指出:导致上述不符合实际情况的主要原因是未能考虑“密度制约”因素。
即最终导致地球上人口爆炸,这与实际是不相符的。
且阻滞作用随人口数量增加而变大
假设
r~固有增长率(x很小时)
k~人口容量(资源、环境能容纳的最大数量)
结果显示:
Logistic模型在长期预测时基本上能比较准确地反映人口自然增长的规律,在2005,2010年较为吻合。
五、人口预测的多项式模型
仿真结果表明, 人口模型用低阶多项式拟合能比较准确地反映人口自然增长的规律,而高阶多项式拟合预测效果很差。
青色---二次多项式
蓝色—三次多项式
紫红色---四次多项式
例2: 海底光缆线长度预测模型
某一通信公司在一次施工中,需要在水面宽为20m的河沟底沿直线走向铺设一条沟底光缆.在铺设光缆之前需要对沟底的地形做初
探测到一组等分点位置的深度数据如下表所示.
25
步探测,从而估计所需光缆的长度,为工程预算提供依据.基本情况如图所示.
(1) 预测通过这条河沟所需光缆长度的近似值.
(2) 作出铺设沟底光缆的曲线图.
解: 用12次多项式函数拟合光缆走势的曲线图如下
仿真结果表明,拟合曲线能较准确地反映光缆的走势图.
The length of the label is L= 26.3809 (m)
假设所铺设的光缆足够柔软,在铺设过程中光缆触地走势光滑,紧贴地面,并且忽略水流对光缆的冲击.
% prog45.m This program is to fit the data by polynomial %
format long
t=linspace(0,20,21);
x=linspace(0,20,100);
P=[9.01,8.96,7.96,7.97,8.02,9.05,10.13,11.18,12.26,13.28,13.32,12.61,11.29,10.22,9.15,7.90,7.95,8.86,9.81,10.80,10.93];
[a,s]=polyfit(t,P,12);
yy=polyval(a,x);
disp('yy=');disp(yy);
plot(x,yy,'r*--',t,P,'b+-');
L=0;
for i=2:100
L=L+sqrt((x(i)-x(i-1))^2+(yy(i)-yy(i-1))^2);
end
disp('The length of the label is L=');disp(L);
上机任务
李继成(书)
Page 194 练习1 第1、2题
Page 198 练习2 第2、3题
学号末尾是单号者做第1个题,双号者做第2个题