数值计算方法教案-曲线拟合与函数逼近_第1页
数值计算方法教案-曲线拟合与函数逼近_第2页
数值计算方法教案-曲线拟合与函数逼近_第3页
数值计算方法教案-曲线拟合与函数逼近_第4页
数值计算方法教案-曲线拟合与函数逼近_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

第三章曲线拟合与函数逼近一.曲线拟合1.问题提出:多组数据,由此预测函数的表达式。数据特点:〔1〕点数较多。〔2〕所给数据存在误差。解决方法:构造一条曲线反映所给数据点的变化总趋势,即所谓的“曲线拟合”。2.直线拟合的概念设直线方程为y=a+bx。那么残差为:,其中。残差是衡量拟合好坏的重要标志。可以用MATLAB软件绘制残差的概念。x=1:6;y=[3,4.5,8,10,16,20]; p=polyfit(x,y,1);xi=0:0.01:7;yi=polyval(p,xi);plot(xi,yi,x,y,'o');y1=polyval(p,x);holdonfori=1:6 plot([i,i],[y(i),y1(i)],'r');end可以绘制出如以下图形:三个准那么:〔1〕最小〔2〕最小〔3〕最小3.最小二乘法的直线拟合问题:对于给定的数据点,求一次多项式y=a+bx,使得总误差Q最小。其中。根据故有以下方程组〔正那么方程〕:例1.给定数据表,求最小二乘拟合一次多项式xi165123150123141yi187126172125148解:N=5,=702,=758,=99864,=108396。那么有方程组解得a=-60.9392,b=1.5138,那么一次多项式为y=-60.9392+1.5138b用MATLAB计算并画图如下:x=[165,123,150,123,141];y=[187,126,172,125,148];A(1,1)=5;A(1,2)=sum(x);A(1,3)=sum(y);A(2,1)=sum(x);A(2,2)=sum(x.^2);A(2,3)=x*y';B=rref(A);a=B(1,3);b=B(2,3);p=[b,a];%以上四行,可以用一行命令p=polyfit(x,y,1);替代。xi=min(x)-1:0.01:max(x)+1;yi=polyval(p,xi);plot(xi,yi,x,y,'o');绘制如以下图形4.最小二乘法的多项式拟合问题:对于给定的数据点,求m次多项式〔m<<N〕,使得总误差Q最小。其中。根据故有正那么方程:当m=2时,有例2.求数据表的最小二乘法拟合的二次多项式函数xi-1-0.75-0.5-0.2500.250.50.751yi504025201821355666在MATLAB命令窗口输入:x=-1:0.25:1;y=[50,40,25,20,18,21,35,56,66];A(1,1)=length(x);A(1,2)=sum(x);A(1,3)=sum(x.^2);A(1,4)=sum(y);A(2,1)=sum(x);A(2,2)=sum(x.^2);A(2,3)=sum(x.^3);A(2,4)=y*x';A(3,1)=sum(x.^2);A(3,2)=sum(x.^3);A(3,3)=sum(x.^4);A(3,4)=y*(x.^2)';B=rref(A);p=[B(3,4),B(2,4),B(1,4)];%以上五行可以用p=polyfit(x,y,2);替代xi=min(x)-0.1:0.01:max(x)+0.1;yi=polyval(p,xi);plot(xi,yi,x,y,'o');可以绘制出如以下图形:例3.从三次多项式上找出21个点,然后对这21个点进行“过失处理”,得到新的21个点,根据新的21个点拟合一个新的3次多项式函数,然后和原函数进行比拟。解:在MATLAB命令窗口输入:p3=inline('2.*x.^3-3.*x.^2+4.*x-5');x=-10:10;y=p3(x);e=randn(1,length(x))*80;y=y+e;p=polyfit(x,y,3);xi=-10:0.01:10;yi=polyval(p,xi);plot(xi,yi,x,y,'o');holdonfplot(p3,[-10,10],'r');5.利用MATLAB的多项式拟合命令polyfit来实现多项式的插值例1.过随机6个数据点,构造5次多项式函数。解:在MATLAB命令窗口输入:x=1:6;y=round(10*randn(1,6));p=polyfit(x,y,length(x)-1);xi=1:0.01:6;yi=polyval(p,xi);plot(xi,yi,x,y,'o');可以得到以以下图形:6.利用最小二乘法解超定方程组例1.解以下超定方程组解:设超定方程的解为。方法一:点到4条直线的距离平方分别为:,,,设,根据,有:=0=0化简有:解得方法二:最小二乘法:点关于4条直线的残差平方和为:+根据,有:=0=0化简有:解得用MATLAB命令有:symsx0y0f1=4*(2*x0+4*y0-11)+2*3*(3*x0-5*y0-3)+2*(x0+2*y0-6)+2*2*(2*x0+y0-7)f2=8*(2*x0+4*y0-11)-2*5*(3*x0-5*y0-3)+4*(x0+2*y0-6)+2*(2*x0+y0-7)解得:f1=36*x0-6*y0-102f2f2=-6*x0+92*y0-96继续在MATLAB命令窗口输入:A=[36,-6,102;-6,92,96];B=rref(A)x0=B(1,3)y0=B(2,3)解得:x0=3.04029304029304y0=方法三:最小二乘法〔矩阵运算〕针对方程组的最小二乘近似解即为方程组的解于是,在MATLAB命令窗口输入:A=[2,4;3,-5;1,2;2,1];b=[11;3;6;7];x=inv(A'*A)*A'*b计算结果为:x=3.04029304029304方法四:用MATLAB左除命令“\”在MATLAB命令窗口输入:A=[2,4;3,-5;1,2;2,1];b=[11;3;6;7];x=A\b即可以得到答案x=3.04029304029304可以看出用MATLAB的左除“\”命令计算得到的答案与最小二乘法得到的答案是一致的。其实,MATLAB的左除“\”命令就是按照最小二乘法的原来来编写的。另外,可以用MATLAB的ezplot命令绘制四条直线的图形ezplot('2*x+4*y=11');holdonezplot('3*x-5*y=3');ezplot('x+2*y=6');ezplot('2*x+y=7');plot(2.99,1.30,'o');A=[2,4;3,-5;1,2;2,1];b=[11;3;6;7];x=A\bplot(x(1),x(2),'*');绘制图形如下:二.函数逼近问题,函数f(x),求一个多项式函数在区间[a,b]上逼近f(x)。解决方法:函数的最正确平方逼近。令,使Q最小,那么有例1.求一次多项式在上逼近函数。解:构造直线为:,,那么有,解得:a=0.6644389,b=0.1147707在MATLAB命令窗口输入:xi=0:0.01:pi/2;yi=sin(xi);p=polyfit(xi,yi,1);pi=polyval(p,xi);plot(xi,yi,xi,pi);可以绘制以以下图形:作业:〔1〕用最小二乘法求一个形如的经验公式,使它与以下数据表拟合。xi1925313841yi19.032.349.073.397.8解:方法一,最小二乘法;方法二,用解超定方程组的思路来解题。,根据,有:在MATLAB命令窗口输入:x=[19,25,31,38,44];y=[19,32.3,49,73.3,97.8];A=[5,sum(x.^2),sum(y);sum(x.^2),sum(x.^4),x.^2*y'];B=rref(A);p=[B(2,3),0,B(1,3)];xi=min(x):0.01:max(x);yi=polyval(p,xi);plot(xi,yi,x,y,'o');绘制图形如下:〔2〕数据表如下,试用二次多项式拟合。xi0123456yi15141414141516〔3〕求一个形如〔a,b为常数,a>0〕的经验公式,使它能和下表数据拟合。

温馨提示

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

评论

0/150

提交评论