收藏 分享(赏)

matlab非线性拟合汇总.ppt

上传人:hwpkd79526 文档编号:7322118 上传时间:2019-05-14 格式:PPT 页数:20 大小:528.50KB
下载 相关 举报
matlab非线性拟合汇总.ppt_第1页
第1页 / 共20页
matlab非线性拟合汇总.ppt_第2页
第2页 / 共20页
matlab非线性拟合汇总.ppt_第3页
第3页 / 共20页
matlab非线性拟合汇总.ppt_第4页
第4页 / 共20页
matlab非线性拟合汇总.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、,非线性曲线拟合,回归的操作步骤:,(1)根据图形(实际点),选配一条恰当的函数形式(类型)-需要数学理论与基础和经验。(并写出该函数表达式的一般形式,含待定系数)(2)选用某条回归命令求出所有的待定系数,所以可以说,回归就是求待定系数的过程(需确定函数的形式),非线性曲线拟合,配曲线的一般方法是:,(一)先对两个变量x和y 作n次试验观察得(xi,yi),i=1,2,n画出散点图。 (二)根据散点图确定须配曲线的类型。 通常选择的六类曲线如下: (1)双曲线 1/y=a+b/x (2)幂函数曲线y=axb , 其中x0,a0 (3)指数曲线y=aebx其中参数a0. (4)倒指数曲线y=ae

2、b/x 其中a0, (5)对数曲线y=a+blogx,x0 (6)S型曲线 y=1/(a+be-x) (三)然后由n对试验数据确定每一类曲线的未知参数a和b。,非线性曲线拟合,一、一元多次拟合: polyfit(x,y,n) 二、多元非线性回归,regress、 nlinfit、 lsqcurvefit、 fminsearch lsqnonlin、求解线性方程组/,格式为:p=polyfit(x,y,n)其中 x和y为原始的样本点构成的向量n为选定的多项式阶次p为多项式系数按降幂排列得出的行向量,Y=polyval(p,x) 求polyfit所得的回归多项式在x处的预测值Y,非线性曲线拟合,命

3、令,已知某函数的线性组合为:g(x)=c1f1(x)+c2f2(x)+c3f3(x)+cnfn(x)其中f1(x),f2(x),fn(x) 为已知函数,c1,c2,cn为待定系数。假设已经测出(x1,y1),(x2,y2),(xm,ym)则可以建立如下线性方程。 其中,该方程的最小二乘解为 c=Ay,非线性曲线拟合,例:假设测出一组(xi,yi),已知函数原型为y(x)=c1+c2e-3x+c3cos(-2x)e-4x+c4x2用已知数据求出待定系数ci的值。,程序运行过程:, x=0 0.2 0.4 0.7 0.9 0.92 0.99 1.2 1.4 1.48 1.5; y=2.88 2.2

4、6 1.97 1.93 2.09 2.11 2.2 2.54 2.96 3.16 3.21; A=ones(size(x),exp(-3*x),cos(-2*x).*(-4*x),x.2; c=Ay; c1=cc1 =1.2686 1.6356 -0.0289 0.9268,非线性曲线拟合,使用格式:b=或b, bint, r, rint, stats=regress(y, x)或regress(y, x, alpha),-命令中是先y后x, -须构造好矩阵x(x中的每列与目标函数的一项对应) -并且x要在最前面额外添加全1列/对应于常数项 -y必须是列向量 -结果是从常数项开始-与polyf

5、it的不同。),b为回归系数 的估计值(第一个为常数项) bint为回归系数的区间估计 r: 残差 rint: 残差的置信区间 stats: 用于检验回归模型的统计量,有四个数值:相关系数r2、F值、与F对应的概率p和残差的方差(前两个越大越好,后两个越小越好) alpha: 显著性水平(缺省时为0.05,即置信水平为95%),其中:,显著性(Significance)首次由Fisher在 假设性实验中提出.假设检验中有两种错误: 拒真和纳伪.显著性检验仅考虑发生拒真错误的概率,也就是考虑原假设的Significance的程度,把拒真的概率控制在提前所给定的阈值alpha之下,来考虑检验原假设

6、是否正确,非线性曲线拟合,1)相关系数r2越接近1,说明回归方程越显著;(r2越大越接近1越好) 2)F越大,说明回归方程越显著;(F越大越好) 与F对应的概率p越小越好,一定要Pa时拒绝H0而接受H1,即回归模型成立。 3)(残差)标准差(RMSE)越小越好,注:,例题同前例, x=0 0.2 0.4 0.7 0.9 0.92 0.99 1.2 1.4 1.48 1.5; y=2.88 2.26 1.97 1.93 2.09 2.11 2.2 2.54 2.96 3.16 3.21; A=ones(size(x),exp(-3*x),cos(-2*x).*(-4*x),x.2; b,brin

7、t,r,rint,stats=regress(y,A);,程序,非线性曲线拟合,运行结果,b =1.26861.6356-0.02890.9268,brint =1.0534 1.48381.4082 1.8631-0.1182 0.06050.5877 1.2659,r =-0.02420.03540.0283-0.0068-0.0156-0.0183-0.0154-0.00570.00270.01020.0094,rint =-0.0329 -0.01560.0001 0.0707-0.0150 0.0716-0.0513 0.0378-0.0670 0.0357-0.0692 0.032

8、6-0.0670 0.0362-0.0461 0.0347-0.0460 0.0513-0.0359 0.0562-0.0315 0.0503,stats =1.0e+03 *0.0010 1.4774 0.0000 0.0000,非线性曲线拟合,使用格式: beta = nlinfit(x,y, 程序名,beta0) beta,r,J = nlinfit(X,y,fun,beta0),X给定的自变量数据, Y给定的因变量数据, fun要拟合的函数模型(句柄函数或者内联函数形式), beta0函数模型中待定系数估计初值(即程序的初始实参) beta返回拟合后的待定系数 其中beta为估计出的回

9、归系数; r为残差; J为Jacobian矩阵,可以拟合成任意函数,最通用的,万能的命令.,非线性曲线拟合,结果要看残差的大小和是否有警告信息,如有警告则换一个b0初始向量再重新计算,例题同前例,假设测出一组(xi,yi),已知函数原型为y(x)=c1+c2e-3x+c3cos(-2x)e-4x+c4x2用已知数据求出待定系数ci的值。, x=0 0.2 0.4 0.7 0.9 0.92 0.99 1.2 1.4 1.48 1.5; y=2.88 2.26 1.97 1.93 2.09 2.11 2.2 2.54 2.96 3.16 3.21; myfunc=inline(beta(1)+be

10、ta(2)*exp(-3*x)+beta(3)*cos(-2*x).*exp(-4*x)+beta(4)*x.2,beta,x); beta0=0.2,0.2,0.2,0.2; beta = nlinfit(x,y,myfunc,beta0) beta =1.21862.3652-0.70400.8716,非线性曲线拟合,function yy= myfun( beta,x) yy=beta(1)+beta(2)*exp(-3*x)+beta(3)*cos(-2*x).*exp(-4*x)+beta(4)*x.2end,法二、, x=0 0.2 0.4 0.7 0.9 0.92 0.99 1.

11、2 1.4 1.48 1.5; y=2.88 2.26 1.97 1.93 2.09 2.11 2.2 2.54 2.96 3.16 3.21; beta0=1,1,1,1; beta= nlinfit(x,y,myfun,beta0) beta =1.21862.3652-0.70400.8716,非线性曲线拟合,lsqcurvefit和lsqnonlin为两个求非线性最小二乘拟合的函数两个命令都要先建立M-文件fun.m,在其中定义函数f(x),但两者定义f(x)的方式是不同的,1. lsqcurvefit 已知数据点: xdata=(xdata1,xdata2,xdatan),ydata

12、=(ydata1,ydata2,ydatan) lsqcurvefit用以求含参量x(向量)的向量值函数 F(x,xdata)=(F(x,xdata1),F(x,xdatan)T 中的参变量x(向量),使得,非线性曲线拟合,输入格式为:,x = lsqcurvefit (fun,x0,xdata,ydata,options),fun是一个事先建立的定义函数F(x,xdata) 的M-文件, 自变量为x和xdata,迭代初值,已知数据点,选项见无 约束优化,2. lsqnonlin,lsqnonlin用以求含参量x(向量)的向量值函数 f(x)=(f1(x),f2(x),fn(x)T 中的参量x

13、,使得最小。其中 fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai,下面是拟合的option设置 (1)Display:结果显示方式。off不显示,iter显示每次迭代的信息,final为最终结果,notify只有当求解不收敛的时候才显示结果 (2)MaxFunEvals:允许函数计算的最大次数,取值为正整数 (3)MaxIter:允许迭代的最大次数,正整数 (4)TolFun:函数值(计算结果)精度,正整数 (5)TolX:自变量的精度,正整数。 使用方法如下 option=optimset(MaxFunEvals,212,MaxIter,214,Tol

14、X,1e-8,TolFun,1e-8);,非线性曲线拟合,x= lsqnonlin (fun,x0,options),fun是一个事先建立的定义函数f(x)的M-文件,自变量为x,迭代初值,选项见无 约束优化,例2 用下面一组数据拟合 中的参数a,b,k,该问题即解最优化问题:,非线性曲线拟合,1)编写M-文件 curvefun1.mfunction f=curvefun1(x,tdata)f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %其中 x(1)=a; x(2)=b;x(3)=k;end,2)输入命令 tdata=100:100:1000; cdata=1e-03*

15、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),3)运算结果为: f =0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0.0063x = 0.0063 -0.0034 0.2542,非线性曲线拟合,解法 2 用命令lsqnonlinf(x)=F(x,tdata,ctada)=x=(a,b,k),1)编写M-

16、文件 curvefun2.mfunction 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)- cdataend,2)输入命令:x0=0.2,0.05,0.05; x=lsqnonlin(curvefun2,x0) f= curvefun2(x),非线性曲线拟合,3)运算结果为f =1.0e-003 *(0.2322 -0.1243 -0.2495 -0.2413 -0.1668 -0.

17、0724 0.0241 0.1159 0.2030 0.2792x =0.0063 -0.0034 0.2542,4)结论:即拟合得a=0.0063 b=-0.0034 k=0.2542,可以看出,两个命令的计算结果是相同的.,非线性曲线拟合,比较以上几种非线性拟合函数适用的条件和注意事项:,1)Regress函数和 命令:,1) 首先要确定要拟合的函数形式,然后确定待定的系数 从常数项开始排列,须构造矩阵(每列对应于函数中的一项,剔除待定系数)2) 适用于多元(可通过变形而适用于任意函数)。y为列向量;x为矩阵,第一列为全1列(即对应于常数项),其余每一列对应于一个变量(或一个含变量的项),

18、即x要配成目标函数的形式(常数项在最前)3) regress只能用于函数中的每一项只能有一个待定系数的情况,不能用于aebx等的情况, 且必须有常数项的情况(且每项只有一个待定系数,即项数与待定系数数目相同),非线性曲线拟合,2)nlinfit、 lsqcurvefit、 lsqnonlin函数,1)x,y顺序,x不需要任何加工,直接用原始数据。(也不需要全1列)-所编的程序一定是两个形参(待定系数/向量,自变量/矩阵:每一列为一个自变量)2)结果要看残差的大小和是否有警告信息,如有警告则换一个b0初始向量再重新计算3)多元任意函数,(自己任意设计函数,再求待定系数)4)存在的问题:不同的beta0,则会产生不同的结果,如何给待定系数的初值以及如何分析结果的好坏,因为拟合本来就是近似的,可能有多个结果。,在利用MATLAB进行非线性拟合时的初值,最好根据参数的物理意义进行确定,可能的话可根据已有的经验值对参数进行赋值 1)尽可能将模型线性化,如进行取变量的倒数、对数等数学变换,关系式的微分-积分线性化变换,分段线性化。根据专业理论简化模型(如忽略小量)等,将非线性拟合问题转化为线性拟合问题.,请赵老师、大家批评指教!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报