《第七讲_非线性拟合.ppt》由会员分享,可在线阅读,更多相关《第七讲_非线性拟合.ppt(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第七讲_非线性拟合现在学习的是第1页,共17页 已知离散点上的数据集已知离散点上的数据集 求得一解求得一解析函数析函数y=f(x),使,使f(x)在原离散点在原离散点xi上尽可能接近给定上尽可能接近给定yi的值,的值,这一过程叫曲线拟合这一过程叫曲线拟合.最常用的曲线拟合是最小二乘法曲线拟最常用的曲线拟合是最小二乘法曲线拟合,拟合结果可使误差的平方和最小,即找出使下式最小的合,拟合结果可使误差的平方和最小,即找出使下式最小的f(x):通常,在解决实际问题时先将已知数据的散点图画通常,在解决实际问题时先将已知数据的散点图画出,然后设计拟合的曲线类型,最后根据某种准则选定出,然后设计拟合的曲线类型
2、,最后根据某种准则选定最佳的曲线最佳的曲线.1.多项式拟合多项式拟合 多项式拟合就是选择适当的多项式对数据集进行拟合,其命令为:多项式拟合就是选择适当的多项式对数据集进行拟合,其命令为:格式:格式:p=polyfit(X,Y,n).现在学习的是第2页,共17页说明:求出已知数据说明:求出已知数据(X,Y)的的n阶拟合多项式阶拟合多项式f(x)按降幂排按降幂排列的系数列的系数p,X必须是单调的必须是单调的.例例1.对以下数据对以下数据作出散点图,然后用多项式拟合:作出散点图,然后用多项式拟合:(0.5,1.75),(1,2.75),(1.5,3.81),(2,4.8),(2.5,7),(3,8.
3、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)ans:p=2.7937 -0.1540即拟合函数为:即拟合函数为:y=2.7937x-0.154(图图6.1)现在学习的是第3页,共17页上述函数的拟合效果如何?我们可以通过计算误差上述函数的拟合效果如何?我们可以通过计算误差平方和的大小进行考察(两种方法):平方和的大小进行考察(两种方法):(1)sum(2.
4、7937*x-0.154-y).2)=0.9136如果用二次函数进行拟合,则有:如果用二次函数进行拟合,则有:p=polyfit(x,y,2)p=0.5614 0.8287 1.1560即拟合函数为:即拟合函数为:此时误差平方和为:此时误差平方和为:sum(polyval(p,x)-y).2)=0.1781根据误差平方和最小原则:二次函数优于线性函数根据误差平方和最小原则:二次函数优于线性函数(2)sum(polyval(p,x)-y).2)=0.9136是否有误差等于零的多项式?有,那就是该数据点的是否有误差等于零的多项式?有,那就是该数据点的插值多项式(五次多项式)插值多项式(五次多项式)
5、现在学习的是第4页,共17页 通常,给出两点的坐标,我们可以得到一条直线;若给通常,给出两点的坐标,我们可以得到一条直线;若给出三点的坐标,我们可以得到一条抛物线;出三点的坐标,我们可以得到一条抛物线;,给出,给出n个点的个点的坐标,我们可以得到一个坐标,我们可以得到一个n-1阶的多项式阶的多项式.是否多项式的阶数越高越好呢?非也!在解决实际问题时,是否多项式的阶数越高越好呢?非也!在解决实际问题时,只要达到所需的精度,应尽量选择简单的函数只要达到所需的精度,应尽量选择简单的函数.p=-1.6000 13.7400 -44.0733 65.6650 -42.6317 11.3500此时多项式在
6、此时多项式在x处的函数值为:处的函数值为:polyval(p,x)ans=1.7500 2.4500 3.8100 4.8000 7.0000 8.6000例例2.某种合金中的主要成分为某种合金中的主要成分为A,B两种金属,经过试验发现:两种金属,经过试验发现:这两种金属成分之和这两种金属成分之和x与合金的膨胀系数与合金的膨胀系数y有如下关系,建立有如下关系,建立描述这种关系的数学表达式描述这种关系的数学表达式.现在学习的是第5页,共17页x3737.53838.53939.54040.54141.54242.543y3.4332.272.11.831.531.71.81.92.352.542
7、.9解:首先作出散点图解:首先作出散点图: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)p=0.1660 -13.3866 271.6231即为所求拟合曲线即为所求拟合曲线误差平方和:误差平方和:R=sum(polyval(p,x)-y).2)=0.2523(图图6.2)现在学习的是第6页,共17页设有实验数据设有实验数据 ,寻找函数寻找函数使得函数在点使得函数在点 处的函数值与观
8、测数据偏差的平方和处的函数值与观测数据偏差的平方和达到最小达到最小.即求满足如下条件的函数即求满足如下条件的函数 使得使得 最小最小解决此类问题有以下几个步骤:(解决此类问题有以下几个步骤:(1)首先作出散点图,确)首先作出散点图,确定函数的类别;(定函数的类别;(2)根据已知数据确定待定参数的初始)根据已知数据确定待定参数的初始值,利用值,利用Matlab软件计算最佳参数;(软件计算最佳参数;(3)根据可决系数,)根据可决系数,比较拟合效果。比较拟合效果。2.非线性拟合非线性拟合现在学习的是第7页,共17页其中R2越趋近于越趋近于1表明拟合效果越好表明拟合效果越好.如果是多项式函数,则称为多
9、项式回归,此时的参数如果是多项式函数,则称为多项式回归,此时的参数即多项式的系数;如果为指数函数、对数函数、幂函数或即多项式的系数;如果为指数函数、对数函数、幂函数或三角函数等,则称为非线性拟合三角函数等,则称为非线性拟合.下面的图形给出了常见下面的图形给出了常见曲线与方程的对应关系:曲线与方程的对应关系:在在Matlab中实现可决系数的命令:中实现可决系数的命令:R2=1-sum(y-y1).2)/sum(y-mean(y).2)可决系数的计算公式为可决系数的计算公式为现在学习的是第8页,共17页幂函数幂函数 指数函数指数函数 双曲线函数双曲线函数 对数函数对数函数 现在学习的是第9页,共1
10、7页指数函数指数函数 S形曲线形曲线 具有具有S形曲线的常见方程有:形曲线的常见方程有:罗杰斯蒂(罗杰斯蒂(logistic)模型)模型:龚帕兹(龚帕兹(Gomperty)模型:)模型:理查德(理查德(Richards)模型:)模型:威布威布尔尔(Weibull)模型:模型:现在学习的是第10页,共17页为了实现非线性拟合,首先要定义函数为了实现非线性拟合,首先要定义函数1.inline 定义的函数:用于曲线拟合、数值计算定义的函数:用于曲线拟合、数值计算步骤:步骤:(1)建立建立M文件;文件;(2)fun=inline(f(x),参变量参变量,x)例例1.建立函数:建立函数:a,b,c为待定
11、的参数为待定的参数fun=inline(b(1)*(1-b(2)*exp(-b(3)*x),b,x);此处,将此处,将b看成参变量,看成参变量,b(1),b(2),b(3)为其分量为其分量.若计算函数在若计算函数在x=0:0.1:1上的函数值,由于此时上的函数值,由于此时x为矩阵,只为矩阵,只需将函数表达式中的某些量表示成向量有些需将函数表达式中的某些量表示成向量有些*改成改成.*即可即可.现在学习的是第11页,共17页在实际问题中,有时散点图作出后未必是多项式的图在实际问题中,有时散点图作出后未必是多项式的图形,可能像其他的曲线,这时可以猜测曲线类型,然形,可能像其他的曲线,这时可以猜测曲线
12、类型,然后利用如下命令:后利用如下命令:beta,r,J=nlinfit(x,y,fun,beta0)其中,其中,x,y为原始数据,为原始数据,fun是在是在M文件中定义的函数,文件中定义的函数,beta0是是函数中参数的初始值;函数中参数的初始值;beta为参数的最优值,为参数的最优值,r是各点处的拟是各点处的拟合残差,合残差,J为雅克比矩阵的数值为雅克比矩阵的数值.例例2.已知如下数据,求拟合曲线已知如下数据,求拟合曲线k=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.8
13、7,42.77,46.22;plot(k,y,*)现在学习的是第12页,共17页根据右图,我们猜测曲线为:根据右图,我们猜测曲线为:现在利用最小二乘法确定最佳现在利用最小二乘法确定最佳参数:参数:b1,b2,b3b0=43,0.6,0.1;%初始参数值初始参数值fun=inline(b(1)*(1-b(2)*exp(-b(3)*k),b,k);b,r,j=nlinfit(k,y,fun,b0);b%最佳参数最佳参数R=sum(r.2)%误差平方和误差平方和b=42.6643,0.5483,0.0099即拟合曲线为:即拟合曲线为:(图图6.3)现在学习的是第13页,共17页拟合结果如右图所示,拟
14、合结果如右图所示,红色为拟合曲线图形,红色为拟合曲线图形,*为原始散点图为原始散点图.y1=42.6643*(1-0.5483*exp(-0.0099*k);plot(k,y,*,k,y1,-or)作图程序为:作图程序为:(图图6.4)练习:计算可决系数练习:计算可决系数现在学习的是第14页,共17页 例例3.炼钢厂出钢时所用盛钢水的钢包,由于钢水对耐火材料炼钢厂出钢时所用盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大,我们希望找出使用次数与增大容积的侵蚀,容积不断增大,我们希望找出使用次数与增大容积之间的函数关系之间的函数关系.实验数据如下:实验数据如下:表表4.2 钢包使用次数与增大
15、容积钢包使用次数与增大容积使用次数23456789增大容积6.428.29.589.59.7109.939.99使用次数10111213141516增大容积10.4910.5910.610.810.610.910.76分别选择函数分别选择函数 拟合钢包容积与使用次数的关系拟合钢包容积与使用次数的关系,在同一坐标系内作在同一坐标系内作出函数图形出函数图形.现在学习的是第15页,共17页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;%初始参数值
16、初始参数值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);下面给出分式函数拟合程序:下面给出分式函数拟合程序:初始参数初始参数b0的计算,的计算,由于确定两个参数值,因此我们选由于确定两个参数值,因此我们选择已知数据中的两点(择已知数据中的两点(2,6.42)和()和(16,10.76)代入方程,)代入方程,得到方程组:得到方程组:可决系数计算:可决系数计算
17、:现在学习的是第16页,共17页上述方程组有两种解法:手工,上述方程组有两种解法:手工,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)注意:如果出现复数解,则只取实部注意:如果出现复数解,则只取实部现在学习的是第17页,共17页