数据拟合
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a11=10;a12=sum(t1); 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 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*--',t1,xx1,'b+--',t1,xx1,'b+ plot(t1,x1,'r*--',t1,xx1,'b+-', t2,x2,‘r*--',t2,xx2,‘b+--',t2,xx2,‘b+ t2,x2,‘r*--',t2,xx2,‘b+-');
在某种准则下与所有数据点最为接近, 使 f (x) 在某种准则下与所有数据点最为接近,即曲线拟合 得最好,如图: 得最好,
y
确定f(x)使得 使得 确定
δ i2 = ∑ [ f ( xi ) − yi ]2 ∑
i =1 i =1
n
n
+ (xi , yi ) δi + + + +
0
y = f ( x)
% prog41.m % % This program is to predict the number of population % 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]; 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);
多项式拟合
多项式逼近连续函数的Weierstrass第一逼近定理:
设f(x)是闭区间[a,b]上的连续函数,则对 于任意给定的ε>0, 存在多项式P(x), 使 对一切x ∈[a,b]成立。
多项式拟合的Matlab指令 指令 多项式拟合的
a = polyfit(xdata,ydata,n) ( , , ) 其中n 其中n表示多项式的最高阶数 xdata,ydata 为要拟合的数据,它是 为要拟合的数据, , 用向量的方式输入。 用向量的方式输入。 输出参数a为拟合多项式 输出参数 为拟合多项式 y = a1xn + … + anx + an+1的系数 = [a1, …, an, an+1]。 系数a 。 多项式在x处的值y可用下面程序计算。 多项式在x处的值y可用下面程序计算。 y = polyval (a, x)
a =1.0e+006 * -0.00000000000014 0.00000000107892 -0.00000304878595 0.00381927346813 -1.79012132225427
仿真结果表明, 仿真结果表明, 人口增加的模型用多项式拟合能 比较准确地反映人口自然增长的规律, 比较准确地反映人口自然增长的规律,对长期预 测具有指导意义。 测具有指导意义。
实验问题
据人口统计年鉴,知我国从1949 据人口统计年鉴,知我国从1949 年至1994年人口数据资料如下: 1994年人口数据资料如下 年至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
人口 3.9 (百万) 百万)
年份
1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5
人口 62.9 百万) (百万)
由前100 100年的数据求出美国的人口增长 模型。 1. 由前100年的数据求出美国的人口增长Malthus模型。 预测后100 100年 每隔10 10年 的人口状况。 2. 预测后100年(每隔10年)的人口状况。 根据预测的人口状况和实际的人口数量, 3. 根据预测的人口状况和实际的人口数量,讨论人 口模型的改进情况。 口模型的改进情况。
数据拟合
(curve fitting )
推求一个解析函数y=f(x), 使其通过或近似通 过有限序列的数据点(xi,yi),即在一定意义下 “最佳”地逼近或拟合已知数据 探索用一类与数据的背景材料规律相适应的解 析表达式,用连续曲线(曲面)近似地刻画离 散点组所表示的坐标之间的函数关系的一种数 据处理方法
⇒a ,a2 1
二、人口预测线性模型
对于开始提出的实验问题, 代入数据, 对于开始提出的实验问题 代入数据,计算得
a1 = 15, a2 = −27754
从而得到人口数与年份的函数关系为
y = 15 x − 27754
线性预测模型
代如, 把x=1999代如,估算出 代如 估算出1999年的人口数为 年的人口数为 y=1252.1(百万)= )=12.52亿 (百万)= 亿 1999年实际人口数量为12 6亿。 年实际人口数量为12 年实际人口数量为12.6
+
达到最小 最小二乘准则
+
+
x
用什么样的曲线拟合已知数据? 2. 用什么样的曲线拟合已知数据
1.画图观察; 画图观察; 2.理论分析 常用的曲线函数系类型: 常用的曲线函数系类型:
直线: 直线: 多项式: 多项式:
y = a1 x + a2
y = a1 x + L + a m x + a m +1
年份 人口数 年份 人口数
1949 541.67 1974 908.59
(1)在直角坐标系上作出人口数的图像。 在直角坐标系上作出人口数的图像。 建立人口数与年份的函数关系,并估算1999 1999年 (2)建立人口数与年份的函数关系,并估算1999年 的人口数。 的人口数。
y = ax + b
线性模型
用多项式拟合人口模型
% This program is to predict the model of population by %prog42.m% 4-degree polynomial% format long t1=[1790;1800;1810;1820;1830;1840;1850;1860;1870;1880]; t2=[1890;1900;1910;1920;1930;1940;1950;1960;1970;1980]; t=[t1;t2]; P1=[3.9;5.3;7.2;9.6;12.9;17.1;23.2;31.4;38.6;50.2]; P2=[62.9;76.0;92.0;106.5;123.2;131.7;150.7;179.3;204.Fra Baidu bibliotek;22 6.5]; P=[P1;P2]; n=4; % The degree of the fitting polynomial% a=polyfit(t1,P1,n); y=polyval(a,t); n0% a is the coefficients vector from n-degree to 0-degree% plot(t,P,'r*--',t,y,'b+plot(t,P,'r*--',t,y,'b+-'); --',t,y,'b+
人口增长到一定数量后,增长率下降的原因: 人口增长到一定数量后,增长率下降的原因: 资源、 资源、环境等因素对人口增长的阻滞作用 且阻滞作用随人口数量增加而变大 假设 r是x的减函数 是 的减函数
r(x) = r − sx (r, s > 0)
r~固有增长率 很小时 固有增长率(x很小时 固有增长率 很小时)
三、人口预测的Malthus模型 人口预测的 模型
英国人口学家Malthus根据百余年的人口统计资 英国人口学家Malthus根据百余年的人口统计资 Malthus 1798年提出了著名的人口自然增长的 年提出了著名的人口自然增长的指数增 料,于1798年提出了著名的人口自然增长的指数增 长模型。 长模型。 人口(相对) 基本假设 : 人口(相对)增长率 r 是常数 x(t) ~时刻 的人口 t=0时人口数为 0 时刻t 人口, 时人口数为x 时刻 时人口数为 dx = rx , rt ⇒ x ( t ) = x0 e dt 指数增长模型 x ( 0 ) = x0 实际中, 实际中,常用
k~人口容量(资源、环境能容纳的最大数量) 人口容量(资源、环境能容纳的最大数量) 人口容量 x r r(k ) = 0 r ( x ) = r (1 − ) s = k k dx x kx0 = r ( x ) x = rx (1 − ) ⇒ x ( t ) = −r t dt xm ( k − x0 )e + x0 Logistic模型留给同学们练习 例1的Logistic模型留给同学们练习
解:
设
x (t ) = e
a + bt
ln( x ) = a + bt
10
问题转化为求参数 a, b 使得
J (a , b ) = ∑ (a + bt i − ln xi )2
i =1
取得最小值.其中, 表示年份, 取得最小值.其中, t i 表示年份,xi = x (t i ) 表示人口数量。
10 1 ∂J 10 2 ∂a = 10a + ∑ t i b − ∑ ln xi = 0 i =1 i =1 解方程组: 解方程组 10 1 ∂J 10 10 2 = ∑ t i a + ∑ t i b − ∑ (ln xi )t i = 0 2 ∂ b i = 1 i =1 i =1 即得参数a, b 的值 的值.
n n i= 1 i= 1
∂J 为此, 为此, 只需利用极值的必要条件 = 0( k = 1,2) 得到关 ∂a k
的线性方程组, 于 a1 ,a2 的线性方程组,
n 2 1 ∑ [(a xi +a2) − yi ]xi = 0 i=1 n 2 a x +a ) − y ] = 0 ∑ [( 1 i 2 i i=1
如何确定a,b? 如何确定
曲线拟合(平面) 一、曲线拟合(平面)
1 曲线拟合问题的提法 曲线拟合问题的提法:
已知一组(二维)数据, 已知一组(二维)数据,即平面上的 n 个点( xi , yi ) ,
y i =1,2, L, n, xi 互不相同,寻求一个函数(曲线) = f (x) 互不相同,寻求一个函数(曲线) ,
m
a1 双曲线(一支): 双曲线(一支): y = + a2 x
指数曲线: 指数曲线: y = a1e a2 x
3 拟合函数组中系数的确定
以f ( x ) = a1 x + a2为例, 即确定 a1,a2使得
J(a , a2) = ∑ i2 = ∑ a xi +a2) − yi ]2达 最 。 δ [( 1 到 小 1
a= -49.79535457790735 b=0.02859807120038
拟合曲线 原始数据曲线
仿真结果表明: 仿真结果表明: 人口增加的指数 模型在短期内基 本上能比较准确 地反映人口自然 增长的规律, 增长的规律,但 长期预测误差很 大,需要修正预 测模型。 测模型。
四、人口预测的Logistic模型 人口预测的 模型
⇔ x (t ) = e a + bt ⇔ ln x (t ) = a + bt
例1
美国1790年 1980年每隔10年的人口记录 年每隔10 美国1790年-1980年每隔10年的人口记录 1790
年份 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2