数值计算课程设计-拟合方法与拟合函数的选取14页

上传人:文库****9 文档编号:174280944 上传时间:2021-03-15 格式:DOC 页数:14 大小:355KB
返回 下载 相关 举报
数值计算课程设计-拟合方法与拟合函数的选取14页_第1页
第1页 / 共14页
数值计算课程设计-拟合方法与拟合函数的选取14页_第2页
第2页 / 共14页
数值计算课程设计-拟合方法与拟合函数的选取14页_第3页
第3页 / 共14页
数值计算课程设计-拟合方法与拟合函数的选取14页_第4页
第4页 / 共14页
数值计算课程设计-拟合方法与拟合函数的选取14页_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《数值计算课程设计-拟合方法与拟合函数的选取14页》由会员分享,可在线阅读,更多相关《数值计算课程设计-拟合方法与拟合函数的选取14页(14页珍藏版)》请在金锄头文库上搜索。

1、安徽工业大学数理学院题目:拟合方法与拟合函数的选取班级:数101班数102班数101班指导教师:谭高山 提交日期:2013年5月 13日目录一、拟合问题的提出.1二、拟合准则.1三、拟合函数的选取.1四、函数拟合实.2 4.1 多项式拟合2 4.2 指数与复合函数拟合.4 4.3 分段拟合7五、总结.12六、参考文献.12一、 拟合问题的提出在很多科学实验中,我们通过测量或观察等方法获得一组看上去杂乱无章的数据,为了找出这些数据之间的某种规律和联系,即寻找一个较简单的函数曲线,使之在一定准则下最接近这些数据点,以便突显各数据点的先后变化趋势,由此便产生了曲线拟合的概念。曲线拟合在实际中有着很广

2、泛的实用价值。因为我们所获取的实验数据本身往往带有测量误差,难免会出现个别数据误差过大的现象。相比于插值法,曲线拟合时,不要求曲线严格地经过每一个数据点,这样就能有效降低个别数据对整体数据规律的干扰作用;另外,实验数据往往很多,插值法会比较繁杂,拟合方法则更实际更高效。2、 拟合准则 在曲线拟合中,有几种不同的误差准则:1.最大误差: 2. 平均误差3. 均方根误差4. 误差平方和通过求误差的最小值,可得该准则下的最佳拟合曲线。由于误差平方和容易进行最小化计算,故而我们通常采用该标准,称之为最小二乘准则。以下课程实验都是在最小二乘准则下实现的。三、拟合函数的选取曲线拟合时,首要也最关键的一步就

3、是选取恰当的拟合函数。对于一组给定的数据,我们可以先做出其散点图,判断应该采用什么样的曲线来作拟合,然后在直观判断的基础上,选取多组曲线分别作拟合,然后比较,看哪条曲线的最小二乘指标最小,也即拟合的最好。一般来说,选取多项式作为拟合曲线,是简单且常用的。MATLAB中有现成的多项式拟合程序,调用格式为f=polyfit(x,y,n),其中输入参数x,y为要拟合的数据,n为拟合多项式的系数,输出参数f为拟合多项式的系数向量。对于稍微复杂一点的拟合曲线,我们可以先通过线性变换将之转换成简单的线性函数,接着再用多项式拟合的命令f=polyfit(x,y,n)来实现函数的拟合。下面表格列举两个线性变换

4、的例子:原函数y化为线性函数Y=AX+B型变量与常量的变化4、 函数拟合实例4.1多项式拟合例1.给定一组数据点 如下表:-1.5-0.700.51.92.22.93.84.27.523.982.993.5710.1812.7319.8131.9038.24首先,我们在MATLAB中输入程序 x=-1.5 -0.7 0 0.5 1.9 2.2 2.9 3.8 4.2;y=7.52 3.98 2.99 3.57 10.18 12.73 19.81 31.90 38.24;plot(x,y,b*),xlabel(x),ylabel(y)title(表中数据点(xi,yi)的散点图)运行后得表中数据

5、的散点图如下(图中*表示数据点的坐标):因为数据散点图的变化趋势与二次多项式很接近,所以可选用二次多项式作为拟合曲线,设f(x)=ax2+bx+c。编程: x=-1.5 -0.7 0 0.5 1.9 2.2 2.9 3.8 4.2;y=7.52 3.98 2.99 3.57 10.18 12.73 19.81 31.90 38.24;f=polyfit(x,y,2);a=f(1),b=f(2),c=f(3)X=-1.5:0.01:4.2;Y=polyval(f,X);f=polyval(f,x);fy=abs(f-y);E=sum(fy.2)plot(x,y,r*,X,Y,b-),xlabel

6、(x),ylabel(y)title(拟合直线与数据点结合图)运行后得:a = 1.9974; b =0.0021; c = 3.0188;E = 0.0097生成如下图形: 即拟合多项式为:f=1.9974x2+0.0021x+3.0188; 误差很小,只有0.0097.4.2 指数与复合函数拟合例2.给出实验数据点如下表:xi2.70.12.31.60.71.40.3yi2.6411.043.214.037.104.589.37在MATLAB中输入程序: x=2.7 0.1 2.3 1.6 0.7 1.4 0.3;y=2.64 11.04 3.21 4.03 7.10 4.58 9.37;

7、 plot(x,y,b*),axis(0,3,0,12)得散点图:据图,我们取两种拟合函数分别为 和 :(1) 设 ,在MATLAB中输入程序 x=2.7 0.1 2.3 1.6 0.7 1.4 0.3;y=2.64 11.04 3.21 4.03 7.10 4.58 9.37;Y=log(y);f=polyfit(x,Y,1);A=f(2);B=f(1);a=exp(A),b=-BX=0:0.01:3;Y=a*exp(-b.*X);f=a*exp(-b.*x);plot(x,y,r*,X,Y,b-),xlabel(x),ylabel(y)legend(数据点 (xi,yi),拟合曲线Y=f(

8、x)title(数据点(xi,yi)和拟合曲线Y=f(x)的图形)fy=abs(f-y);E1=sum(fy.2)得:a =10.7441; b =0.5460; E1 = 1.3072.(2) 设 ,在MATLAB中输入程序x=2.7 0.1 2.3 1.6 0.7 1.4 0.3;y=2.64 11.04 3.21 4.03 7.10 4.58 9.37;Y=1./y;f=polyfit(x,Y,1);a=f(1),b=f(2)X=0:0.01:3;Y=1./(a.*X+b);f=1./(a.*x+b);plot(x,y,r*,X,Y,b-),xlabel(x),ylabel(y)Lege

9、nd(数据点(xi,yi),拟合曲线Y=f(x)Title(数据点(xi,yi)和拟合曲线Y=f(x)的图形)Fy=abs(f-y);E2=sum(fy.2)得:a =0.1089; b =0.0720; E2 =0.0097. 因为E1E2,显然第二种拟合曲线的误差较小,拟合效果更佳。4.3 分段拟合实际中的很多科学实验数据,其拟合函数都比较稍显复杂,下面我们来列举一例。例3. 革螨在不同浓度的甲酚皂液的平均致死时间如下表显示:X甲酚皂液的浓度(%)Y革螨的平均死亡时间(min)0.10050.40.15041.20.17533.60.20019.00.30011.60.40010.60.5

10、008.40.6006.80.7006.21.0004.85.0002.210.0001.2用MATLAB作散点图:分析上图可知,曲线的两端都含有渐近线,故全段拟合曲线中一定含有指数项。 x=0.100 0.150 0.175 0.200 0.300 0.400 0.500 0.600 0.700 1.000 5.000 10.000;y=50.4 41.2 33.6 19.0 11.6 10.6 8.4 6.8 6.2 4.8 2.2 1.2;Y=log(y);f=polyfit(x,Y,1);A=f(2);B=f(1);a=exp(A),b=-BX=0:0.01:10;Y=a*exp(-b

11、.*X);f=a*exp(-b.*x);plot(x,y,r*,X,Y,b-),xlabel(x),ylabel(y)legend(数据点 (xi,yi),拟合曲线Y=f(x)title(数据点(xi,yi)和拟合曲线Y=f(x)的图形)fy=abs(f-y);E1=sum(fy.2)得:a =15.6609; b =0.2978; E1 =2.4705e+003 即拟合函数为: 显然,拟合效果不佳。进一步分析可以看出,前9个点有一条渐近线,而后3个点有一条渐近线。可将要拟合的曲线分为二段,前9个点为前段,后3个点为后段。我们可以分别对前9个点和后3个点进行直线化。以x为横坐标,lny 为纵坐

12、标,做散点图plot(x,log(y),b*)得可以看出后三个点明显呈直线趋势,我们先对后三个点进行直线化。拟合的方法和前面相同,在MATLAB中输入x=1.000 5.000 10.000;y= 4.8 2.2 1.2;Y=log(y);f=polyfit(x,Y,1);A=f(2);B=f(1);a=exp(A),b=-B得:a =5.2635;b =0.1527;即 从图3发现前9个点仍呈曲线趋势,需要进一步线性化。具体步骤如下:利用(4)求得前9个点处的函数值y,再把实际数据中的前9个值减去y。即得y”=y-y,然后取其对数值ln(y”),用MATLAB作出这些点图象,在MATLAB下

13、不需要一个个去求,只要在命令窗口输入如下命令: x=0.100 0.150 0.175 0.200 0.300 0.400 0.500 0.600 0.700;y=50.4 41.2 33.6 19.0 11.6 10.6 8.4 6.8 6.2;plot(x,log(y-(5.2635.*exp(-0.1527*x),b*)得:可以发现这9个点成一定的曲线趋势,利用x和 y的值可建立起直线回归方程。只要在MATLAB下用同样的方法再次求指数拟合 x=0.100 0.150 0.175 0.200 0.300 0.400 0.500 0.600 0.700;y=50.4 41.2 33.6 19.0 11.6 10.6 8.4 6.8 6.2;Y=log(y-(5.2635.*exp(-0.1527.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号