1 / 19

曲线拟合 简介

曲线拟合 简介. 曲线拟合利用两个或多个变量的 离散点 ,用 平滑的曲线 来拟合它们之间的关系。 根据拟合方法的不同,有 参数拟合 和 非参数拟合 之分。 参数拟合:曲线不通过所有点,采用 最小二乘法 ; 非参数拟合:曲线通过所有点,采用插值法。. 已知离散点上的数据集 求得一解析函数 y = f ( x ) ,使 f ( x ) 在原离散点 xi 上尽可能接近给定 yi 的值,这一过程叫曲线拟合 .

Télécharger la présentation

曲线拟合 简介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 曲线拟合简介 • 曲线拟合利用两个或多个变量的离散点,用平滑的曲线来拟合它们之间的关系。 • 根据拟合方法的不同,有参数拟合和非参数拟合之分。 参数拟合:曲线不通过所有点,采用最小二乘法; 非参数拟合:曲线通过所有点,采用插值法。

  2. 已知离散点上的数据集 求得一解析函数y=f(x),使f(x)在原离散点xi上尽可能接近给定yi的值,这一过程叫曲线拟合. 最常用的曲线拟合是最小二乘法曲线拟合,拟合结果可使误差的平方和最小,即找出使下式最小的f(x) : 解决此类问题的步骤: (1)首先根据已知数据作出散点图,确定函数 的类别。 如果 是多项式函数,则称为多项式拟合, 如果 为指数函数、对数函数等则称为非线性拟合.

  3. (2)根据已知数据确定待定参数的初始值,利用Matlab软件计算最佳参数(2)根据已知数据确定待定参数的初始值,利用Matlab软件计算最佳参数 (3)根据误差平方和或可决系数,可以比较拟合效果。 计算误差平方和公式为 计算可决系数的公式为 其中 是原始数据, 是拟合数据, ,显然, 越趋近于1,表明拟合效果越好

  4. 1.多项式拟合 多项式拟合就是选择适当的多项式对数据集进行拟合,格式:p=polyfit(X,Y,n). 其中输入:X为自变量, Y为因变量,n是多项式的阶数;X必须单调. 输出:p是按降幂排列的多项式的系数. 多项式的拟合效果可以通过计算误差平方和的大小进行考察(两种方法): (1)sum((拟合数据-原始数据).^2) (2)sum((polyval(p,x)-y).^2) ) polyval(p,x) %计算以p为系数的多项式在x处的函数值.

  5. 例1.对以下数据作出散点图,然后用多项式拟合: (0.5,1.75),(1,2.75),(1.5,3.81),(2,4.8),(2.5,7),(3,8.6) 解:x = [0.5,1.0,1.5,2.0,2.5,3.0]; y = [1.75,2.45,3.81,4.80,7.00,8.60]; plot(x,y,’.’) 发现:这些点大致地位于某条直线附近,故可考虑线性拟合: p=polyfit(x,y,1) p =2.7937 -0.1540 即拟合函数为:y=2.7937x-0.154

  6. 考察拟合效果: (1)sum((2.7937*x-0.154*ones(1,6)-y).^2)=0.9136 (2)sum((polyval(p,x)-y).^2))=0.9136 如果用二次函数进行拟合,则有: p=polyfit(x,y,2) p = 0.5614 0.8287 1.1560 即拟合函数为: 此时误差平方和为: sum((polyval(p,x)-y).^2) =0.1781 根据误差平方和最小原则:二次函数优于线性函数

  7. 例2.某种合金中的主要成分为A,B两种金属,经过试验发现:这两种金属成分之和x与合金的膨胀系数y有如下关系,建立描述这种关系的数学表达式.例2.某种合金中的主要成分为A,B两种金属,经过试验发现:这两种金属成分之和x与合金的膨胀系数y有如下关系,建立描述这种关系的数学表达式. 解:首先作出散点图: x=37:0.5:43; y=[3.4,3,3,2.27,2.1,1.83,1.53,1.7,1.8,1.9,2.35,2.54,2.9]; plot(x,y,’*’) 发现:有点像抛物线,故选二次函数拟合. p=polyfit(x,y,2)

  8. 即为所求拟合曲线 输出结果:p = 0.1660 -13.3866 271.6231 误差平方和:R=sum((polyval(p,x)-y).^2)= 0.2523 在同一坐标系内作出原始数据与拟合结果的散点图; y2=0.1660*x.^2-13.3866*x+271.6234 ; figure(2); plot(x,y,'*',x,y2,'ro-'), legend('原始数据','二次函数')

  9. 2.非线性拟合 在实际问题中,有时散点图作出后未必是多项式的图形,可能像其他的曲线,这时可以猜测曲线类型,然后利用如下命令: [b,r,J] = nlinfit(x,y,fun,b0) 其中,x,y为原始数据,fun是在M文件中定义的函数,b0是函数中参数的初始值;b为参数的最优值, r是各点处的拟合残差,J为雅克比矩阵的数值. 注意1:在6.1版本中输入x是列向量,y是行向量, 而在7.0以上版本要求x,y要一致. 注意2:为了实现非线性拟合,要在M文件中定义函数,命令为:fun=inline('f(x) ', '参变量','x')

  10. 幂函数: 指数函数: S形曲线: 常见曲线与函数的对应关系

  11. 例3.已知如下数据,求拟合曲线 x=[ 0,47,93,140,186,279,372,465,558,651]; y=[18.98,27.35,34.86,38.52,38.44,37.73,38.43,43.87,42.77,46.22]; 输入数据,画散点图plot(x,y,'*') 根据右图,我们猜测曲线为: 现在利用最小二乘法确定最佳参数:b1,b2,b3 确定最佳参数前,要给出初始参数值,一般通过解方程组得到。

  12. 即拟合曲线为: b0=[43,0.6,0.1]; %初始参数值 fun=inline('b(1)*(1-b(2)*exp(-b(3)*x))','b','x'); [b,r,j]=nlinfit(x,y,fun,b0); b %最佳参数 R=sum(r.^2) %误差平方和 输出结果:b = 42.6643,0.5483,0.0099 在同一坐标系内作出原始数据与拟合结果的散点图; y1=42.6643*(1-0.5483*exp(-0.0099* x)); plot(x,y,'*', x,y1,'-or')

  13. 拟合结果如右图所示,红色为拟合曲线图形,*为原始散点图.拟合结果如右图所示,红色为拟合曲线图形,*为原始散点图.

  14. 练习:1.已知北京非典患病累计人数如下,试用函数练习:1.已知北京非典患病累计人数如下,试用函数 拟合北京非典患病累计人数,并作出图形. a1=[ 339,482,588,693,774,877,988,1114,1199,1347,1440,1553,1636; 1741,1803,1897,1960,2049,2136,2177,2227,2265,2304,2347,2370,2388 ; 2405,2420,2434,2437,2444,2444,2456,2465,2490,2499,2504,2512,2514; 2517,2520,2521,2522,2522,2522,2522,2522,2522,2523,2522,2522,2522 ; 2523,2523,2522,2522,2522,2521,2521,2521,2521,2521,2521,2521,2521];

  15. 2.实践经验可知,7月份平均气温是影响第二代棉铃虫历期(完成某一虫期发育所需天数)的主要因素.根据下面的数据,利用曲线拟合方法建立预报方程.2.实践经验可知,7月份平均气温是影响第二代棉铃虫历期(完成某一虫期发育所需天数)的主要因素.根据下面的数据,利用曲线拟合方法建立预报方程.

  16. 例4.炼钢厂出钢时所用盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大,使用次数与增大容积之间的实验数据如下,分别选择函数例4.炼钢厂出钢时所用盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大,使用次数与增大容积之间的实验数据如下,分别选择函数 , 拟合钢包容积与使用次数的关系

  17. 以给出分式函数程序为例。输入程序之前,要求出初始参数以给出分式函数程序为例。输入程序之前,要求出初始参数 初始参数b0的计算: 由于确定两个参数值,因此选择已知数据中的两点(2,6.42)和(16,10.76)代入方程,得到方程组:

  18. 上述方程组有两种解法:手工,Matlab,下面介绍Matlab 解方程组的方法 [x,y]=solve('6.42*(2*a+b)=2','10.76*(16*a+b)=16') 取点:(2,6.42),(8,9.93),(10,10.49)代入上述方程 [a,b,c]=solve('log(b)+c*2=log(6.42/a-1)','log(b)+c*10=log(10.49/a-1)','log(b)+c*8=log(9.93/a-1)') 注意:如果出现复数解,则只取实部

  19. 分式函数拟合程序: x1=[2:16]; y1=[6.42,8.2,9.58,9.5,9.7,10,9.93,9.99,10.49,10.59,10.6,10.8,10.6,10.9,10.76]; b01=[0.1435,0.084]; %初始参数值 fun1=inline('x./(b(1)+b(2)*x)','b','x'); % 定义函数 [b1,r1,j1]=nlinfit(x1,y1,fun1,b01); y=x1./(0.1152+0.0845*x1); %根据b1写出具体函数 plot(x1,y1,'*',x1,y,'-or');

More Related