用MATLAB作曲线拟合_第1页
用MATLAB作曲线拟合_第2页
用MATLAB作曲线拟合_第3页
用MATLAB作曲线拟合_第4页
用MATLAB作曲线拟合_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1.线性拟合作多项式f(x)=a1xm+…+amx+am+1拟合,可用以下命令:a=polyfit(x,y,m)多项式在x处值y可用以下命令计算:y=polyval(a,x)输出拟合多项式系数a=[a1,…am,

am+1](数组))输入同长度数组X,Y拟合多项式次数用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')

2)计算结果:A=-9.810820.1293-0.0317例对下面一组数据作二次多项式拟合第2页(1)lsqcurvefit已知数据点:xdata=(xdata1,xdata2,…,xdatan),ydata=(ydata1,ydata2,…,ydatan)

2.非线性拟合Matlab提供了两个求非线性最小二乘拟合函数:lsqcurvefit和lsqnonlin。两个命令都要先建立M-文件fun.m,在其中定义函数f(x),但二者定义f(x)方式是不一样,可参考例题.

lsqcurvefit用以求含参量x(向量)向量值函数F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T中参变量x(向量),使得

第3页

输入格式为:(1)x=lsqcurvefit(‘fun’,x0,xdata,ydata);(2)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);(3)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options,’grad’);(4)[x,options]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(5)[x,options,funval]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(6)[x,options,funval,Jacob]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);fun是一个事先建立定义函数F(x,xdata)M-文件,自变量为x和xdata说明:x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);迭代初值已知数据点选项见无约束优化第4页lsqnonlin用以求含参量x(向量)向量值函数

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

中参量x,使得

最小。其中fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai

2.lsqnonlin已知数据点:xdata=(xdata1,xdata2,…,xdatan)ydata=(ydata1,ydata2,…,ydatan)第5页输入格式为:1)x=lsqnonlin(‘fun’,x0);2)x=lsqnonlin(‘fun’,x0,options);3)x=lsqnonlin(‘fun’,x0,options,‘grad’);4)[x,options]=lsqnonlin(‘fun’,x0,…);5)[x,options,funval]=lsqnonlin(‘fun’,x0,…);说明:x=lsqnonlin(‘fun’,x0,options);fun是一个事先建立定义函数f(x)M-文件,自变量为x迭代初值选项见无约束优化第6页

例2用下面一组数据拟合中参数a,b,k该问题即解最优化问题:第7页

1)编写M-文件curvefun1.m

functionf=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)

F(x,tdata)=,x=(a,b,k)解法1.用命令lsqcurvefit第8页解法2:用命令lsqnonlinf(x)=F(x,tdata,ctada)=x=(a,b,k)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)函数curvefun2自变量是x,cdata和tdata是已知参数,故应将cdatatdata值写在curvefun2.m中第9页能够看出,两个命令计算结果是相同.3)运算结果为:f=0.00430.00510.00560.00590.00610.00620.00620.00630.00630.0063x=0.0063-0.00340.25424)拟合得a=0.0063b=-0.0034k=0.2542第10页温度t(0C)20.532.7

温馨提示

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

评论

0/150

提交评论