数据的插值与逼近_第1页
数据的插值与逼近_第2页
数据的插值与逼近_第3页
数据的插值与逼近_第4页
数据的插值与逼近_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据的插值与逼近第1页,课件共29页,创作于2023年2月第二节数据的最小二乘逼近最小二乘逼近理论1利用Matlab实现最小二乘逼近2第2页,课件共29页,创作于2023年2月一、最小二乘逼近理论最小二乘逼近的定义插值所需的数据往往来源于观察测量,本身有一定的误差。要求插值曲线通过这些本身有误差的点,势必使结果更加不准确。另外,如果由试验提供的数据量比较大,又容易使得插值多项式的次数过高而效果不理想。所以在对离散数据建立模型时,并不需要函数曲线一定要插值所有给定的数据点。,在取定的函数类中,求定义1.对给定数据即,使误差,的平方和最小,函数称为最小二乘解,求的方法称为最小二乘逼近。

第3页,课件共29页,创作于2023年2月一、最小二乘逼近理论对离散数据点进行最小二乘逼近首先要确定的是用什么类型的函数作为模型,然后通过计算求得该类函数中的参数。按照求解参数在最小二乘逼近解中的地位,最小二乘分为线性最小二乘逼近和非线性最小二乘逼近。例如:线性最小二乘逼近非线性最小二乘逼近线性最小二乘逼近的求解比非线性最小二乘逼近容易,一定条件下,非线性最小二乘逼近可以转化为线性最小二乘逼近。第4页,课件共29页,创作于2023年2月一、最小二乘逼近理论线性最小二乘逼近第一步:先选定一组函数r1(x),r2(x),…rm(x),m<n,令f(x)=a1r1(x)+a2r2(x)+…+amrm(x)(1)其中a1,a2,…am

为待定系数。第二步:确定a1,a2,…am

的准则(最小二乘准则):使n个点(xi,yi)与曲线y=f(x)的距离i的平方和最小。记

问题归结为,求

a1,a2,…am

使J(a1,a2,…am)

最小。第5页,课件共29页,创作于2023年2月一、最小二乘逼近理论将J(a1,a2,…am)看作是a1,a2,…am的m元函数。最小二乘问题就是这个m元函数的最小值问题,由极值的必要条件:得:其中:该方程组的解就是最小二乘问题的解第6页,课件共29页,创作于2023年2月一、最小二乘逼近理论线性最小二乘拟合f(x)=a1r1(x)+…+amrm(x)中函数{r1(x),…rm(x)}的选取

1.通过机理分析建立数学模型来确定f(x);++++++++++++++++++++++++++++++f=a1+a2xf=a1+a2x+a3x2f=a1+a2x+a3x2f=a1+a2/xf=aebxf=ae-bx2.将数据(xi,yi)i=1,…n作图,通过直观判断确定f(x):可化为线性最小二乘第7页,课件共29页,创作于2023年2月一、最小二乘逼近理论非线性最小二乘逼近如果要用非线性模型对离散数据进行最小二乘逼近,一般的方法是将其线性化,然后求解线性化以后的最小二乘逼近问题。可线性化的非线性最小二乘逼近(线性化后为)第8页,课件共29页,创作于2023年2月一、最小二乘逼近理论可线性化的非线性最小二乘逼近(线性化后为)第9页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近利用MATLAB实现多项式最小二乘逼近在MATLAB中,要利用多项式f(x)=a1xm+…+amx+am+1对离散数据进行线性拟合,可利用命令:a=polyfit(x,y,m)输出拟合多项式系数a=[a1,…am,

am+1](数组))输入同长度的数组X,Y拟合多项式次数要计算多项式在x处的值y可用以下命令计算:

y=polyval(a,x)第10页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近例1:对下面一组数据作二次多项式拟合x=0:0.1:1;y=[-0.4471.9783.286.167.087.347.669.569.489.3011.2];A=polyfit(x,y,2)z=polyval(A,x);plot(x,y,'k+',x,z,'r')%作出数据点和拟合曲线的图形第11页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近2)计算结果:A=-9.810820.1293-0.0317原始数据及拟合曲线第12页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近下面在更多点比较2次和10次最小二乘逼近多项式的逼近效果»xi=linspace(0,1,100);%x-axisdataforplotting»z=polyval(p,xi);»xi=linspace(0,1,100);%x-axisdataforplotting»z=polyval(p,xi);»pp=polyfit(x,y,10);»zz=polyval(pp,xi);%evaluate10thorderpolynomial»plot(x,y,'o',xi,z,':',xi,zz)%plotdata»xlabel(‘x’);ylabel(‘y=f(x)’);»title('2ndand10thOrdercurveFitting');第13页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近2次和10次最小二乘多项式逼近效果比较第14页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近利用MATLAB实现非线性最小二乘逼近对于非线性最小二乘逼近,在Matlab中有两种途径解决:(1)如果模型可以线性化,可先线性化后,再利用polyfit求解;(2)利用Matlab中直接求解非线性最小二乘逼近的两种函数

lsqcurvefit和lsqnonlin。例2.在人口的logistic模型中,人口总数y与时间t之间的关系满足,下表是某地区1971年-2000年之间的人口统计数据,试确定logistic模型中的a,b。第15页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近年人口总数年人口总数197133815198634520197233981198734507197334004198834509197434165198934521197534212199034513197634327199134515197734344199234517197834458199334519197934498199434519198034476199534521198134483199634521198234488199734520198334513199834507198434497199934509198534511200034521第16页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近解:先线性化,设y为人口总数,t=年份-1970,即。令,则logistic模型可线性化为。下面在Matlab下编程进行最小二乘逼近:clear;clc;t=1:30;y=[33815,33981,34004,34165,34212,34327,34344,34458,34498,34476,34483,34488,34513,34497,34511,34520,34507,34509,34521,34513,34515,34517,34519,34519,34521,34521,34520,34507,34509,34521]fori=1:30,x(i)=exp(-t(i));yy(i)=1/y(i);%线性化end第17页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近程序运行结果%对线性化后的模型用polyfit进行一次多项式最小二乘逼近pp=polyfit(x,yy,1);%对逼近结果绘图forj=1:30Y(j)=1/(pp(2)+pp(1)*exp(-j));endplot(t,Y);a=pp(2)=0.182×10-5,b=pp(1)=0.2902×10-4,第18页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近

Matlab提供了两个求非线性最小二乘拟合的函数:lsqcurvefit和lsqnonlin。两个命令都要先建立M-文件,在其中定义函数f(x),但两者定义f(x)的方式是不同的。1.lsqcurvefit已知数据点:xdata=(xdata1,xdata2,…,xdatan),ydata=(ydata1,ydata2,…,ydatan)

fun是一个事先建立的定义函数F(x,xdata)的M-文件,自变量为x和xdata说明:x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);迭代初值已知数据点选项见无约束优化第19页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近输入格式为:(1)x=lsqcurvefit(‘fun’,x0,xdata,ydata);(2)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);(3)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options,’grad’);

例:用下面一组数据拟合中的参数a,b,k.第20页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近该问题即解最优化问题:1)编写M-文件curvefun1.mfunctionf=curvefun1(x,tdata)f=x(1)+x(2)*exp(-0.02*x(3)*tdata)%其中x(1)=a;x(2)=b;x(3)=k;2)输入程序tdata=100:100:1000cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];x0=[0.2,0.05,0.05];x=lsqcurvefit('curvefun1',x0,tdata,cdata)f=curvefun1(x,tdata)第21页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近3)运算结果为:f=0.00430.00510.00560.00590.00610.00620.00620.00630.00630.0063x=0.0063-0.00340.25424)结论:a=0.0063,b=-0.0034,k=0.2542第22页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近2.lsqnonlin

lsqnonlin用以求含参量x(向量)的向量值函数

f(x)=(f1(x),f2(x),…,fn(x))T

中的参量x,使得:

最小。其中fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai第23页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近说明:x=lsqnonlin(‘fun’,x0,options);fun是一个事先建立的定义函数f(x)的M-文件,自变量为x迭代初值选项见无约束优化输入格式为:1)x=lsqnonlin(‘fun’,x0);2)x=lsqnonlin(‘fun’,x0,options);3)x=lsqnonlin(‘fun’,x0,options,‘grad’);第24页,课件共29页,创作于2023年2月二、利用MATLAB实现最小二乘逼近利用lsqnonlin计算上例:1)编写M-文件curvefun2.m

functionf=curvefun2(x)tdata=100:100:1000;cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];

f=x(1)+x(2)*exp(-0.02*x(3)*tdata)-cdata2)输入命令:

x0=[0.2,0.05,0.05];x=lsqnonlin('curvefun2',x0)f=curvefun2(x)第25页,课件共29页,创作于2023年2月二、利用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论