《第六讲多项式拟合与插值.ppt》由会员分享,可在线阅读,更多相关《第六讲多项式拟合与插值.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 在生产和科学实验中,自变量在生产和科学实验中,自变量x与因变量与因变量y之间的函之间的函数关系式有时不能直接写出表达式,而只能得到函数在数关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值若干个点的函数值或导数值.当要求知道观测点之外的当要求知道观测点之外的函数值时,需要估计函数在该点的数值函数值时,需要估计函数在该点的数值.这就要根据观这就要根据观测点的值,构造一个比较简单的函数测点的值,构造一个比较简单的函数y=(x),使函数在,使函数在观测点的值等于已知的数值或导数值,寻找这样的函数观测点的值等于已知的数值或导数值,寻找这样的函数(x),办法是很多的,办法是很多的.
2、根据测量数据的类型有如下两种处理观测数据的方法:根据测量数据的类型有如下两种处理观测数据的方法:测量值是准确的,没有误差,一般用插值测量值是准确的,没有误差,一般用插值.测量值与真实值有误差,一般用曲线拟合测量值与真实值有误差,一般用曲线拟合.第六讲第六讲 曲线拟合与插值曲线拟合与插值一一.曲线拟合曲线拟合 已知离散点上的数据集已知离散点上的数据集 求得一解析函数求得一解析函数y=f(x),使,使f(x)在原离散点在原离散点xi上尽可能接上尽可能接近给定近给定yi的值,这一过程叫曲线拟合的值,这一过程叫曲线拟合.最常用的曲线拟合最常用的曲线拟合是最小二乘法曲线拟合,拟合结果可使误差的平方和最是
3、最小二乘法曲线拟合,拟合结果可使误差的平方和最小,即找出使下式最小的小,即找出使下式最小的f(x):通常,在解决实际问题时先将已知数据的散点图通常,在解决实际问题时先将已知数据的散点图画出,然后设计拟合的曲线类型,最后根据某种准则画出,然后设计拟合的曲线类型,最后根据某种准则选定最佳的曲线选定最佳的曲线.1.多项式拟合多项式拟合 多项式拟合就是选择适当的多项式对数据集进行拟合,多项式拟合就是选择适当的多项式对数据集进行拟合,其命令为:格式:其命令为:格式:p=polyfit(X,Y,n).说明:求出已知数据说明:求出已知数据(X,Y)的的n阶拟合多项式阶拟合多项式f(x)按按降幂排列的系数降幂
4、排列的系数p,X必须是单调的必须是单调的.例例1.对以下数据对以下数据作出散点图,然后用多项式拟合:作出散点图,然后用多项式拟合:(0.5,1.75),(1,2.75),(1.5,3.81),(2,4.8),(2.5,7),(3,8.6)解:解:x=0.5,1.0,1.5,2.0,2.5,3.0;y=1.75,2.45,3.81,4.80,7.00,8.60;plot(x,y)发现:这些点大致地位于某条直发现:这些点大致地位于某条直线附近,故可考虑线性拟合:线附近,故可考虑线性拟合:p=polyfit(x,y,1)ans:p=2.7937 -0.1540即拟合函数为:即拟合函数为:y=2.79
5、37x-0.154(图图6.1)上述函数的拟合效果如何?我们可以通过计算误差上述函数的拟合效果如何?我们可以通过计算误差平方和的大小进行考察(两种方法):平方和的大小进行考察(两种方法):(1)sum(2.7937*x-0.154-y).2)=0.9136如果用二次函数进行拟合,则有:如果用二次函数进行拟合,则有:p=polyfit(x,y,2)p=0.5614 0.8287 1.1560即拟合函数为:即拟合函数为:此时误差平方和为:此时误差平方和为:sum(polyval(p,x)-y).2)=0.1781根据误差平方和最小原则:二次函数优于线性函数根据误差平方和最小原则:二次函数优于线性函
6、数(2)sum(polyval(p,x)-y).2)=0.9136是否有误差等于零的多项式?有,那就是该数据点是否有误差等于零的多项式?有,那就是该数据点的插值多项式(五次多项式)的插值多项式(五次多项式)通常,给出两点的坐标,我们可以得到一条直线;通常,给出两点的坐标,我们可以得到一条直线;若给出三点的坐标,我们可以得到一条抛物线;若给出三点的坐标,我们可以得到一条抛物线;,给,给出出n个点的坐标,我们可以得到一个个点的坐标,我们可以得到一个n-1阶的多项式阶的多项式.是否多项式的阶数越高越好呢?非也!在解决实际问是否多项式的阶数越高越好呢?非也!在解决实际问题时,只要达到所需的精度,应尽量
7、选择简单的函数题时,只要达到所需的精度,应尽量选择简单的函数.p=-1.6000 13.7400 -44.0733 65.6650 -42.6317 11.3500此时多项式在此时多项式在x处的函数值为:处的函数值为:polyval(p,x)ans=1.7500 2.4500 3.8100 4.8000 7.0000 8.6000例例2.某种合金中的主要成分为某种合金中的主要成分为A,B两种金属,经过试两种金属,经过试验发现:这两种金属成分之和验发现:这两种金属成分之和x与合金的膨胀系数与合金的膨胀系数y有有如下关系,建立描述这种关系的数学表达式如下关系,建立描述这种关系的数学表达式.x373
8、7.53838.53939.54040.54141.54242.543y3.4332.272.11.831.531.71.81.92.352.542.9解:首先作出散点图解:首先作出散点图:x=37:0.5:43;y=3.4,3,3,2.27,2.1,1.83,1.53,1.7,1.8,1.9,2.35,2.54,2.9;plot(x,y,*)发现:有点像抛物线,故选二发现:有点像抛物线,故选二次函数拟合次函数拟合.p=polyfit(x,y,2)p=0.1660 -13.3866 271.6231即为所求拟合曲线即为所求拟合曲线误差平方和:误差平方和:R=sum(polyval(p,x)-y
9、).2)=0.2523(图图6.2)二二.函数插值函数插值1.一维插值一维插值格式一:格式一:YI=INTERP1(X,Y,XI,method)X,Y为原始数据,为原始数据,XI,YI为插值出的数值,为插值出的数值,method是插值所用的方法是插值所用的方法.Available methods are:nearest -nearest neighbor interpolation linear -linear interpolation spline -piecewise cubic spline interpolation(SPLINE)pchip -piecewise cubic Her
10、mite interpolation(PCHIP)cubic -same as pchip例例4.对对 y=cosx的数据进行插值,比较各种插值方法的数据进行插值,比较各种插值方法x=-2*pi:0.5*pi:2*pi;y=cos(x);xi=-2*pi:0.1*pi:2*pi;y_nearest=interp1(x,y,xi);y_linear=interp1(x,y,xi);y_spline=interp1(x,y,xi,spline);y_cubic=interp1(x,y,xi,cubic);plot(x,y,o,xi,y_nearest,-,xi,y_linear,r*,xi,y_s
11、pline,k:,xi,y_cubic,k-);legend(original data,nearest,linear,spline,cubic)(图图6.5)2.二维插值二维插值格式:格式:ZI =interp2(X,Y,Z,XI,YI,method)说明:用指定的算法说明:用指定的算法method计算二维插值计算二维插值.返回矩阵返回矩阵ZI 其元素对应于参量其元素对应于参量XI与与YI的元素的元素.用户可以输入行向量和用户可以输入行向量和列向量列向量Xi与与Yi,此时,输出向量,此时,输出向量Zi与矩阵与矩阵meshgrid(xi,yi)是同型的是同型的.参量参量X与与Y必须是单调的,且
12、相同的划分格式,必须是单调的,且相同的划分格式,就像由命令就像由命令meshgrid生成的一样生成的一样.method有:有:linear:双线性插值算法(缺省算法):双线性插值算法(缺省算法).nearest:最近邻插值:最近邻插值.spline:三次样条插值:三次样条插值.cubic:双三次插值:双三次插值.例例5.下表给出了美国从下表给出了美国从1950-1990年工作年限年工作年限10,20,30年的工资情况,使用插值计算年的工资情况,使用插值计算1975年工作年工作15年的工资年的工资Y S10年年20年年30年年1950150.697199.592187.6251960179.32
13、3195.072250.2871970203.212179.092322.7671980 226.505 153.706426.7301990249.633 120.281598.243years=1950:10:1990;service=10:10:30;wage=150.697,199.592,187.625;179.323,195.072,250.287;203.212,179.092,322.767;226.505,153.706,426.730;249.633,120.281,598.243;w=interp2(service,years,wage,15,1975)结果为:结果为:w
14、=190.6288例例6.在某处测得海洋不同深处水温在某处测得海洋不同深处水温 如下:如下:深度深度(m)44671495014221634水温水温()7.044.283.402.542.13试求在深度试求在深度500米、米、1000米、米、1500米处的水温米处的水温解:解:h=446,714,950,1422,1634;w=7.04,4.28,3.40,2.54,2.13;hi=500,1000,1500;p=spline(h,w);ci=ppval(p,hi)plot(h,w,or),hold on,plot(hi,ci,*)legend(original data,spline)我们将原始数据与插值结果在同一个坐标系中展示,其我们将原始数据与插值结果在同一个坐标系中展示,其中中o为原始数据,为原始数据,*为插值结果为插值结果.