《用MATLAB作曲线拟合doc资料.ppt》由会员分享,可在线阅读,更多相关《用MATLAB作曲线拟合doc资料.ppt(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、用MATLAB作曲线拟合(1 1)lsqcurvefit lsqcurvefit已知数据点数据点:xdata=xdata=(xdata1,xdata2,xdataxdatan n),),ydata=ydata=(ydataydata1 1,ydataydata2 2,ydataydatan n)2.2.非线性拟合非线性拟合 Matlab Matlab的提供了两个求非线性最小二乘拟合的函数:的提供了两个求非线性最小二乘拟合的函数:lsqcurvefitlsqcurvefit和lsqnonlinlsqnonlin。两个命令都要先建立。两个命令都要先建立M-M-文件文件fun.mfun.m,在其中定
2、义函数,在其中定义函数f(x)f(x),但两者定义,但两者定义f(x)f(x)的方式是不同的的方式是不同的,可可参考例题参考例题.lsqcurvefitlsqcurvefit用以求含参量用以求含参量x x(向量)的向量值函数(向量)的向量值函数F(x,xdata)=F(x,xdata)=(F F(x x,xdataxdata1 1),),F F(x x,xdataxdatan n)T T中的参变量中的参变量x(x(向量向量),),使得使得 输入格式为输入格式为:(1)x=lsqcurvefit(fun,x0,xdata,ydata);(2)x=lsqcurvefit(fun,x0,xdata,
3、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=lsqcurvefi
4、t(fun,x0,xdata,ydata,options);迭代初值迭代初值已知数据点已知数据点选项见无选项见无约束优化约束优化lsqnonlin用以求含参量用以求含参量x x(向量)的向量值函数(向量)的向量值函数 f(x)f(x)=(f=(f1 1(x),f(x),f2 2(x),f(x),fn n(x)(x)T T 中的参量中的参量x x,使得,使得 最小。最小。其中其中 fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai 2.lsqnonlin已知数据点:已知数据点:xdata=xdata=(xdata1,xdata2,xdataxdatan n)y
5、data=ydata=(ydataydata1 1,ydataydata2 2,ydataydatan n)输入格式为:输入格式为: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=lsqnonlinlsqnonlin(fun,x0,options););fun是一个事先建立的是一个事先建立的定义函数定义函数f(x)的的M-文
6、件,文件,自变量为自变量为x迭代初值迭代初值选项见无选项见无约束优化约束优化 例例2 用下面一组数据拟合用下面一组数据拟合 中的参数中的参数a,b,k该问题即解最优化问题:该问题即解最优化问题:1 1)编写)编写M-M-文件文件 curvefun1.m curvefun1.m function f=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:1000tdata=100:100:1000cdata=cdata=1e-03*4.54,4.
7、99,5.35,5.65,5.90,6.10,6.26,6.39,*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;6.50,6.59;x0=0.2,0.05,0.05;x0=0.2,0.05,0.05;x=lsqcurvefit(curvefun1,x0,tdata,cdata)x=lsqcurvefit(curvefun1,x0,tdata,cdata)f=f=curvefun1(x,tdata)F(x,tdata)=,x=(a,b,k)解法解法1 1.用命令用命令lsqcurvefitlsqcurvefit解法解法2 2:用命令用命令
8、lsqnonlinf(x)=F(x,tdata,ctada)=x=(a,b,k)1)编写编写M-M-文件文件 curvefun2.m curvefun2.m function f=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)函数函数curvef
9、un2的自变量是的自变量是x,cdata和和tdata是已是已知参数,故应将知参数,故应将cdata tdata的值写在的值写在curvefun2.m中中可以看出可以看出,两个命令的计算结果是相同的两个命令的计算结果是相同的.3 3)运算结果为)运算结果为:f=0.0043 0.0051 0.0056 0.0059 0.0061 f=0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0.0063 0.0062 0.0062 0.0063 0.0063 0.0063 x=0.0063 -0.0034 0.2542 x=0
10、.0063 -0.0034 0.25424 4)拟合得拟合得a=0.0063 b=-0.0034 k=0.2542温度温度t(0C)20.5 32.7 51.0 73.0 95.7电阻电阻R()765 826 873 942 1032例例.由数据由数据拟合拟合R=a1t+a2用命令:用命令:polyfit(x,y,m)得到得到 a1=3.3940,a2=702.4918练习练习1 用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。如果作2或4次多项式拟合,结果如何?t (秒)0.5 1 2 3 4 5 7 9 V(伏)6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63练习练习2.2.已知数据:已知数据:求拟合函数:求拟合函数:此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢