matlab最小二乘法拟合.ppt
数学建模与数学实验拟 合 1实验目的实验内容2. 掌握用数学软件求解拟合问题1. 直观了解拟合基本内容1. 拟合 问题引例及基本原理4. 实验 作业 .2. 用数学 软件求解拟合问题3. 应用 实例 .2拟 合2. 拟合的基本原理1. 拟合问题引例3拟 合 问 题 引 例 1温度 tC 20.5 32.7 51.0 73.0 95.7电阻 R 765 826 873 942 1032已知热敏电阻数据求 60C时的电阻 R设 Ratba,b为待定系数4拟 合 问 题 引 例 2t h 0.25 0.5 1 1.5 2 3 4 6 8c g/ml 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01已知一室模型快速静脉注射下的血药浓度数据 t0注射 300mg求血药浓度随时间的变化规律 ct.作半对数坐标系 semilogy下的图形 MATLABaa15曲 线 拟 合 问 题 的 提 法已知一组(二维)数据,即平面上 n个点 ( xi,yi i1 n, 寻求一个函数(曲线) yfx, 使 fx 在 某种准则下与所有数据点最为接近,即曲线拟合得最好 xyyfxxi,yiii 为点 ( xi,yi 与 曲线 yfx 的 距离6拟合与插值的关系函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者在数学方法上是完全不同的实例 下面数据是某次实验所得,希望得到 X和 f之间的关系MATLABcn问题 给定一批数据点,需确定满足特定要求的曲线或曲面解决方案若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是 数据拟合 ,又称曲线拟合或曲面拟合若要求所求曲线(面)通过所给所有数据点,就是 插值问题 ;7最临近插值、线性插值、样条插值与曲线拟合结果8曲线拟合问题最常用的解法 线性最小二乘法的基本思路第一步 先选定一组函数 r1x, r2x, , rmx, mn, 令fxa1r1xa2r2x amrmx ( 1)其中 a1,a2, , am 为待定系数第二步 确定 a1,a2, , am 的 准则(最小二乘准则)使 n个点 ( xi,yi 与 曲线 yfx 的 距离 i 的平方和最小 记问题归结为,求 a1,a2, , am 使 J a1,a2, , am 最小9线性最小二乘法的求解预备知识超定方程组 方程个数大于未知量个数的方程组即 Ray其中超定方程组一般不存在解的矛盾方程组如果有向量 a使得 达到最小,则称 a为上述 超定方程组的最小二乘解 10线性最小二乘法的求解定理 当 RTR可逆时,超定方程组( 3)存在最小二乘解,且即为方程组RTRaRTy的解 aRTR-1RTy所以,曲线拟合的最小二乘法要解决的问题,实际上就是求以下超定方程组的最小二乘解的问题其中Ray ( 3)11线性最小二乘拟合 fxa1r1x amrmx中函数 r1x, ,rmx的选取 1. 通过机理分析建立数学模型来确定 fx; fa1a2x fa1a2xa3x2 fa1a2xa3x2fa1a2/x faebx fae-bx2. 将数据 xi,yi i1, , n 作图,通过直观判断确定 fx12用 MATLAB解拟合问题1.线性最小二乘拟合2.非线性最小二乘拟合13用 MATLAB作线性最小二乘拟合1. 作多项式 fxa1xm amxam1拟合 ,可利用已有程序 apolyfitx,y,m2. 对超定方程组可得最小二乘意义下的解,用3.多项式在 x处的值 y可用以下命令计算ypolyval( a, x)输出拟合多项式系数aa1, ,am , am1 数组 )输入同长度的数组 x, y拟合多项式次数14即要求 出二次多项式 中 的 使得 例 对下面一组数据作二次多项式拟合151)输入以下命令 x00.11;y-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;Rx.2 x ones11,1;ARyMATLABzxec1解法 1 用解超定方程的方法2)计算结果 -9.8108 20.1293 -0.0317161)输入以下命令x00.11;y-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;Apolyfitx,y,2zpolyvalA,x;plotx,y,k,x,z,r 作出数据点和拟合曲线的图形2)计算结果 -9.8108 20.1293 -0.0317解法 2 用多项式拟合的命令MATLABzxec2171. lsqcurvefit已知 数据点 xdata( xdata1,xdata2xdatan) ,ydata( ydata1,ydata2ydatan) 用 MATLAB作非线性最小二乘拟合MATLAB提供了两个求非线性最小二乘拟合的函数lsqcurvefit和 lsqnonlin两个命令都要先建立 M文件fun.m, 在其中定义函数 fx, 但两者定义 fx的方式是不同的 ,可参考例题 .lsqcurvefit用以求含参量 x( 向量)的向量值函数Fx,xdata( F( x,xdata1) F( x, xdatan T中的参变量 x向量 ,使得 18输入格式为 1 x lsqcurvefit fun,x0,xdata,ydata;2 x lsqcurvefitfun,x0,xdata,ydata,options;3xlsqcurvefitfun,x0,xdata,ydata,options,grad; 4 x,optionslsqcurvefitfun,x0,xdata,ydata,;5 x,options,funvallsqcurvefitfun,x0,xdata,ydata,;6x,options,funval,Jacoblsqcurvefitfun,x0,xdata,ydata,;fun是一个事先建立的定义函数 Fx,xdata 的M文件 , 自变量为 x和xdata说明 xlsqcurvefitfun,x0,xdata,ydata,options;迭代初值 已知数据点选项见无约束优化19lsqnonlin用以求含参量 x( 向量)的向量值函数fxf1x,f2x fnxT 中的参量 x, 使得最小其中 fi( x) f( x, xdatai, ydatai)Fx,xdatai-ydatai2. lsqnonlin已知数据点 xdata( xdata1, xdata2, , xdatan)ydata( ydata1, ydata2, , ydatan)20输入格式为1 xlsqnonlin( fun, x0) ;2xlsqnonlin( fun, x0, options) ;3x lsqnonlin( fun, x0, optionsgrad) ;4x, optionslsqnonlin ( fun, x0, ) ;5x, options, funvallsqnonlin( funx0, ) ;说明 x lsqnonlin ( fun, x0, options) ;fun是一个事先建立的定义函数 fx的 M文件, 自变量为 x 迭代初值选项见无约束优化21例 2 用下面一组数据拟合 中的参数 a, b, k该问题即解最优化问题22MATLABfzxec11) 编写 M文件 curvefun1.mfunction fcurvefun1x,tdatafx1x2*exp-0.02*x3*tdata 其中 x1a; x2b; x3k;2) 输入命令tdata1001001000cdata1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;x00.2,0.05,0.05;xlsqcurvefit curvefun1,x0,tdata,cdataf curvefun1x,tdata Fx, tdata , xa, b, k解法 1. 用命令 lsqcurvefit233) 运算结果为 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.25424)结论 a0.0063, b-0.0034, k0.254224MATLABfzxec2解法 2 用命令 lsqnonlinfxFx,tdata,ctadax( a, b, k)1) 编写 M文件 curvefun2.mfunction fcurvefun2xtdata1001001000;cdata1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;fx1x2*exp-0.02*x3*tdata- cdata2) 输入命令 x00.2,0.05,0.05;xlsqnonlincurvefun2,x0f curvefun2x函数 curvefun2的自变量是 x,cdata和 tdata是已知参数,故应将 cdata tdata的值写在curvefun2.m中253)运算结果为f 1.0e-003 *0.2322 -0.1243 -0.2495 -0.2413 -0.1668 -0.0724 0.0241 0.1159 0.2030 0.2792x 0.0063 -0.0034 0.2542可以看出 ,两个命令的计算结果是相同的 .4)结论 即拟合得 a0.0063 b-0.0034 k0.254226MATLAB解应用问题实例1. 电阻问题2. 给药方案问题*3. 水塔流量估计问题27MATLABdianzu1电阻问题 温度 tC 20.5 32.7 51.0 73.0 95.7电阻 R 765 826 873 942 1032例 . 由数据 拟合 Ra1t a2方法 1.用命令 polyfitx,y,m得到 a13.3940, a2702.4918方法 2.直接用结果相同MATLABdianzu228一室模型 将整个机体看作一个房室,称 中心室 ,室内血药浓度是均匀的快速静脉注射后,浓度立即上升;然后迅速下降当浓度太低时,达不到预期的治疗效果;当浓度太高,又可能导致药物中毒或副作用太强临床上,每种药物有一个最小有效浓度 c1和一个最大有效浓度 c2设计给药方案时,要使血药浓度 保持在 c1c2之间本题设 c110ug/ml,c225ug/ml.拟 合 问 题 实 例 2给药方案 一种新药用于临床之前,必须设计给药方案 .药物进入机体后通过血液输送到全身,在这个过程中不断地被吸收、分布、代谢,最终排出体外,药物在血液中的浓度,即单位体积血液中的药物含量,称为 血药浓度29在实验方面 ,对某人用快速静脉注射方式一次注入该药物 300mg后 ,在一定时刻 th采集血药 ,测得血药浓度 cug/ml如下表 t h 0.25 0.5 1 1.5 2 3 4 6 8c g/ml 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01要设计给药方案 ,必须知道给药后血药浓度随时间变化的规律从实验和理论两方面着手30