第七讲_matlab实现非线性拟合

第七讲_matlab实现非线性拟合

ID:44961471

大小:98.00 KB

页数:11页

时间:2019-11-06

第七讲_matlab实现非线性拟合_第1页
第七讲_matlab实现非线性拟合_第2页
第七讲_matlab实现非线性拟合_第3页
第七讲_matlab实现非线性拟合_第4页
第七讲_matlab实现非线性拟合_第5页
资源描述:

《第七讲_matlab实现非线性拟合》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设有实验数据,寻找函数使得函数在点处的函数值与观测数据偏差的平方和达到最小.即求满足如下条件的函数使得其中是待定的参数,而就是最小二乘法所确定的最佳参数.解决此类问题有以下几个步骤:(1)首先作出散点图,确定函数的类别;(2)根据已知数据确定待定参数的初始值,利用Matlab软件计算最佳参数;(3)根据可决系数,比较拟合效果,计算可决系数的公式为其中R2越趋近于1表明拟合效果越好.如果是多项式函数,则称为多项式回归,此时的参数即多项式的系数;如果为指数函数、对数函数、幂函数或三角函数等,则称为非线性拟合.下

2、面的图形给出了常见曲线与方程的对应关系:在Matlab中实现可决系数的计算的例子:x=[2:16];y=[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];y1=x./(0.1152+0.0845*x);%拟合曲线R2=1-sum((y-y1).^2)/sum((y-mean(y)).^2)幂函数指数函数双曲线函数对数函数指数函数S形曲线具有S形曲线的常见方程有:罗杰斯蒂(logistic)模型:龚帕兹(Gom

3、perty)模型:理查德(Richards)模型:威布尔(Weibull)模型:为了实现非线性拟合,首先要定义在线函数1.inline定义的函数:用于曲线拟合、数值计算步骤:(1)建立M文件;(2)fun=inline('f(x)','参变量','x')例1.建立函数:a,b,c为待定的参数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为矩阵,只

4、需将函数表达式中的某些量表示成向量有些*改成.*即可.在实际问题中,有时散点图作出后未必是多项式的图形,可能像其他的曲线,这时可以猜测曲线类型,然后利用如下命令:[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,2

5、7.35,34.86,38.52,38.44,37.73,38.43,43.87,42.77,46.22];plot(k,y,'*')根据右图,我们猜测曲线为:现在利用最小二乘法确定最佳参数: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、(图6.3)拟合结果如右图所示,红色为拟合曲线图形,*为原始散点图.y1=42.6643*(1-0.5483*exp(-0.0099*k));plot(k,y,'*',k,y1,'-or')作图程序为:(图6.4)练习:计算可决系数例3.炼钢厂出钢时所用盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大,我们希望找出使用次数与增大容积之间的函数关系.实验数据如下:表4.2钢包使用次数与增大容积使用次数23456789增大容积6.428.29.589.59.7109.939.99使用次数1011121314

7、1516增大容积10.4910.5910.610.810.610.910.76分别选择函数拟合钢包容积与使用次数的关系,在同一坐标系内作出函数图形.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

8、,fun1,b01);y=x1./(0.1152+0.0845*x1);%根据b1写出具体函数plot(x1,y1,'*',x1,y,'-or');下面给出分式函数拟合程序:初始参数b0的计算,由于确定两个参数值,因此我们选择已知数据中的两点(2,6.42)和(16,10.76)代入方程,得到方程组:可决系数计算:上述方程组有两种解法:手工,Matlab,下面介绍Matlab解方程组的方法[x,y]=solve(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。