Matlab数据拟合

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据拟合(curvefitting)推求一个解析函数y=f(x),使其通过或近似通过有限序列的数据点(xi,yi),即在一定意义下“最佳”地逼近或拟合已知数据探索用一类与数据的背景材料规律相适应的解析表达式,用连续曲线(曲面)近似地刻画离散点组所表示的坐标之间的函数关系的一种数据处理方法据人口统计年鉴,知我国从1949年至1994年人口数据资料如下:(人口数单位为:百万)(1)在直角坐标系上作出人口数的图像。(2)建立人口数与年份的函数关系,并估算1999年的人口数。实验问题年份19491954195919641969人口数541.67602.66672.09704.99806.71年份19741979198419891994人口数908.59975.421034.751106.761176.74如何确定a,b?baxy线性模型1曲线拟合问题的提法:已知一组(二维)数据,即平面上的n个点),(iiyx,ixni,,,2,1L互不相同,寻求一个函数(曲线))(xfy,使)(xf在某种准则下与所有数据点最为接近,即曲线拟合得最好,如图:xy0++++++++i),(iiyx)(xfy一、曲线拟合(平面)niiiniiyxf1212])([确定f(x)使得达到最小最小二乘准则2.用什么样的曲线拟合已知数据?常用的曲线函数系类型:1.画图观察;2.理论分析xaeay21指数曲线:21axay双曲线(一支):11mmmaxaxayL多项式:21axay直线:3拟合函数组中系数的确定达到最小。niiiniiyaxaaaJ12211221])[(),(为此,只需利用极值的必要条件)2,1(0kaJk得到关于21,aa的线性方程组,21,aa,)(21为例以axaxf使得,即确定21aa0])[(20])[(2121121niiiiniiiyaxaxyaxa二、人口预测线性模型对于开始提出的实验问题,代入数据,计算得27754,1521aa从而得到人口数与年份的函数关系为2775415xy把x=1999代如,估算出1999年的人口数为y=1252.1(百万)=12.52亿1999年实际人口数量为12.6亿。线性预测模型英国人口学家Malthus根据百余年的人口统计资料,于1798年提出了著名的人口自然增长的指数增长模型。btaetx三、人口预测的Malthus模型0)0(,xxrxdtdxtrextx0)(基本假设:人口(相对)增长率r是常数x(t)~时刻t的人口,t=0时人口数为x0btatxln指数增长模型实际中,常用1.由前100年的数据求出美国的人口增长Malthus模型。2.预测后100年(每隔10年)的人口状况。3.根据预测的人口状况和实际的人口数量,讨论人口模型的改进情况。美国1790年-1980年每隔10年的人口记录226.5204.0179.3150.7131.7123.2106.592.076.062.9人口(百万)1980197019601950194019301920191019001890年份50.238.631.423.217.112.99.67.25.33.9人口(百万)1880187018601850184018301820181018001790年份例1解:btaetx设btax)ln(2101)ln(),(iiixbtabaJ取得最小值.其中,iitxx表示人口数量。it表示年份,解方程组:0ln210ln10211011012101101101iiiiiiiiiiitxbtatbJxbtaaJ即得参数ba,的值.ba,使得问题转化为求参数%prog41.m%%Thisprogramistopredictthenumberofpopulation%formatlongt1=[1790;1800;1810;1820;1830;1840;1850;1860;1870;1880];t2=[1890;1900;1910;1920;1930;1940;1950;1960;1970;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);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));fori=1:10xx1(i)=exp(ab(1)+ab(2)*t1(i));endfori=1:10xx2(i)=exp(ab(1)+ab(2)*t2(i));endplot(t1,x1,'r*--',t1,xx1,'b+-',t2,x2,‘r*--',t2,xx2,‘b+-');a=-49.79535457790735b=0.02859807120038仿真结果表明:人口增加的指数模型在短期内基本上能比较准确地反映人口自然增长的规律,但长期预测误差很大,需要修正预测模型。拟合曲线原始数据曲线四、人口预测的Logistic模型人口增长到一定数量后,增长率下降的原因:资源、环境等因素对人口增长的阻滞作用且阻滞作用随人口数量增加而变大假设)0,()(srsxrxrr~固有增长率(x很小时)k~人口容量(资源、环境能容纳的最大数量))1()(kxrxrr是x的减函数krs0)(kr)1()(mxxrxxxrdtdx000)()(xexkkxtxtr例1的Logistic模型留给同学们练习多项式逼近连续函数的Weierstrass第一逼近定理:多项式拟合设f(x)是闭区间[a,b]上的连续函数,则对于任意给定的ε0,存在多项式P(x),使[a,b]成立。对一切x多项式拟合的Matlab指令a=polyfit(xdata,ydata,n)其中n表示多项式的最高阶数xdata,ydata为要拟合的数据,它是用向量的方式输入。输出参数a为拟合多项式y=a1xn+…+anx+an+1的系数a=[a1,…,an,an+1]。多项式在x处的值y可用下面程序计算。y=polyval(a,x)用多项式拟合人口模型%Thisprogramistopredictthemodelofpopulationby4-degreepolynomial%%prog42.m%formatlongt1=[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.0;226.5];P=[P1;P2];n=4;%Thedegreeofthefittingpolynomial%a=polyfit(t1,P1,n);y=polyval(a,t);%aisthecoefficientsvectorfromn-degreeto0-degree%plot(t,P,'r*--',t,y,'b+-');a=1.0e+006*-0.000000000000140.00000000107892-0.000003048785950.00381927346813-1.79012132225427仿真结果表明,人口增加的模型用多项式拟合能比较准确地反映人口自然增长的规律,对长期预测具有指导意义。例2:海底光缆线长度预测模型某一通信公司在一次施工中,需要在水面宽为20m的河沟底沿直线走向铺设一条沟底光缆.在铺设光缆之前需要对沟底的地形做初Bix2468101214161820986420ADCih0x20x探测到一组等分点位置的深度数据如下表所示.步探测,从而估计所需光缆的长度,为工程预算提供依据.基本情况如图所示.10.9310.809.818.867.957.959.1510.2211.2912.6113.32201918171615141312111013.2812.2611.1810.139.058.027.967.968.969.01深度(m)9876543210分点21个等分点处的深度(1)预测通过这条河沟所需光缆长度的近似值.(2)作出铺设沟底光缆的曲线图.024681012141618207891011121314解:用12次多项式函数拟合光缆走势的曲线图如下仿真结果表明,拟合曲线能较准确地反映光缆的走势图.ThelengthofthelabelisL=26.3809(m)假设所铺设的光缆足够柔软,在铺设过程中光缆触地走势光滑,紧贴地面,并且忽略水流对光缆的冲击.%prog45.mThisprogramistofitthedatabypolynomial%formatlongt=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=polyfit(t,P,12);yy=polyval(a,x);disp('yy=');disp(yy);plot(x,yy,'r*--',t,P,'b+-');L=0;fori=2:100L=L+sqrt((x(i)-x(i-1))^2+(yy(i)-yy(i-1))^2);enddisp('ThelengthofthelabelisL=');disp(L);请估计我国2010年人均国民生产总值(GNP);国内生产总值(GDP);消费者物价指数(CPI)。

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功