数值计算课程设计拟合方法与拟合函数的选取讲解.docx
- 文档编号:2047077
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:13
- 大小:350.30KB
数值计算课程设计拟合方法与拟合函数的选取讲解.docx
《数值计算课程设计拟合方法与拟合函数的选取讲解.docx》由会员分享,可在线阅读,更多相关《数值计算课程设计拟合方法与拟合函数的选取讲解.docx(13页珍藏版)》请在冰豆网上搜索。
数值计算课程设计拟合方法与拟合函数的选取讲解
题目:
拟合方法与拟合函数的选取
班级:
数101班
数102班
数101班
指导教师:
谭高山
提交日期:
2013年5月13日
一、拟合问题的提出……………………………………………….1
二、拟合准则……………………………………………………….1
三、拟合函数的选取..…………………………………………….1
四、函数拟合实.………………………………………………….2
4.1多项式拟合……………………………………………………2
4.2指数与复合函数拟合.....………………………………………4
4.3分段拟合………………………………………………………7
五、总结…………………………………………………………..12
六、参考文献……………………………………………….…….12
一、拟合问题的提出
在很多科学实验中,我们通过测量或观察等方法获得一组看上去杂乱无章的数据,为了找出这些数据之间的某种规律和联系,即寻找一个较简单的函数曲线,使之在一定准则下最接近这些数据点,以便突显各数据点的先后变化趋势,由此便产生了曲线拟合的概念。
曲线拟合在实际中有着很广泛的实用价值。
因为我们所获取的实验数据本身往往带有测量误差,难免会出现个别数据误差过大的现象。
相比于插值法,曲线拟合时,不要求曲线严格地经过每一个数据点,这样就能有效降低个别数据对整体数据规律的干扰作用;另外,实验数据往往很多,插值法会比较繁杂,拟合方法则更实际更高效。
2、拟合准则
在曲线拟合中,有几种不同的误差准则:
1.最大误差:
2.
平均误差
3.均方根误差
4.
误差平方和
通过求误差的最小值,可得该准则下的最佳拟合曲线。
由于误差平方和容易进行最小化计算,故而我们通常采用该标准,称之为最小二乘准则。
以下课程实验都是在最小二乘准则下实现的。
三、拟合函数的选取
曲线拟合时,首要也最关键的一步就是选取恰当的拟合函数。
对于一组给定的数据,我们可以先做出其散点图,判断应该采用什么样的曲线来作拟合,然后在直观判断的基础上,选取多组曲线分别作拟合,然后比较,看哪条曲线的最小二乘指标最小,也即拟合的最好。
一般来说,选取多项式作为拟合曲线,是简单且常用的。
MATLAB中有现成的多项式拟合程序,调用格式为f=polyfit(x,y,n),其中输入参数x,y为要拟合的数据,n为拟合多项式的系数,输出参数f为拟合多项式的系数向量。
对于稍微复杂一点的拟合曲线,我们可以先通过线性变换将之转换成简单的线性函数,接着再用多项式拟合的命令f=polyfit(x,y,n)来实现函数的拟合。
下面表格列举两个线性变换的例子:
原函数y
化为线性函数Y=AX+B型
变量与常量的变化
4、函数拟合实例
4.1多项式拟合
例1.给定一组数据点如下表:
-1.5
-0.7
0
0.5
1.9
2.2
2.9
3.8
4.2
7.52
3.98
2.99
3.57
10.18
12.73
19.81
31.90
38.24
首先,我们在MATLAB中输入程序
>>x=[-1.5-0.700.51.92.22.93.84.2];y=[7.523.982.993.5710.1812.7319.8131.9038.24];
plot(x,y,'b*'),xlabel('x'),ylabel('y')
title('表中数据点(xi,yi)的散点图')
运行后得表中数据的散点图如下(图中*表示数据点的坐标):
因为数据散点图的变化趋势与二次多项式很接近,所以可选用二次多项式作为拟合曲线,设f(x)=ax^2+bx+c。
编程:
>>x=[-1.5-0.700.51.92.22.93.84.2];y=[7.523.982.993.5710.1812.7319.8131.9038.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('x'),ylabel('y')
title('拟合直线与数据点结合图')
运行后得:
a=1.9974;b=0.0021;c=3.0188;
E=0.0097
生成如下图形:
即拟合多项式为:
f=1.9974x^2+0.0021x+3.0188;误差很小,只有0.0097.
4.2指数与复合函数拟合
例2.给出实验数据点如下表:
xi
2.7
0.1
2.3
1.6
0.7
1.4
0.3
yi
2.64
11.04
3.21
4.03
7.10
4.58
9.37
在MATLAB中输入程序:
>>x=[2.70.12.31.60.71.40.3];y=[2.6411.043.214.037.104.589.37];
>>plot(x,y,'b*'),axis([0,3,0,12])
得散点图:
据图,我们取两种拟合函数分别为
和
:
(1)设,在MATLAB中输入程序
>>x=[2.70.12.31.60.71.40.3];y=[2.6411.043.214.037.104.589.37];
Y=log(y);f=polyfit(x,Y,1);A=f
(2);B=f
(1);a=exp(A),b=-B
X=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(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.70.12.31.60.71.40.3];y=[2.6411.043.214.037.104.589.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')
Legend('数据点(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.
因为E1〉E2,显然第二种拟合曲线的误差较小,拟合效果更佳。
4.3分段拟合
实际中的很多科学实验数据,其拟合函数都比较稍显复杂,下面我们来列举一例。
例3.革螨在不同浓度的甲酚皂液的平均致死时间如下表显示:
X甲酚皂液的浓度(%)
Y革螨的平均死亡时间(min)
0.100
50.4
0.150
41.2
0.175
33.6
0.200
19.0
0.300
11.6
0.400
10.6
0.500
8.4
0.600
6.8
0.700
6.2
1.000
4.8
5.000
2.2
10.000
1.2
用MATLAB作散点图:
分析上图可知,曲线的两端都含有渐近线,故全段拟合曲线中一定含有指数项。
>>x=[0.1000.1500.1750.2000.3000.4000.5000.6000.7001.0005.00010.000];
y=[50.441.233.619.011.610.68.46.86.24.82.21.2];
Y=log(y);f=polyfit(x,Y,1);A=f
(2);B=f
(1);a=exp(A),b=-B
X=0:
0.01:
10;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(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为纵坐标,做散点图plot(x,log(y),'b*')得
可以看出后三个点明显呈直线趋势,我们先对后三个点进行直线化。
拟合的方法和前面相同,在MATLAB中输入
x=[1.0005.00010.000];
y=[4.82.21.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下不需要一个个去求,只要在命令窗口输入如下命令:
>>x=[0.1000.1500.1750.2000.3000.4000.5000.6000.700];
y=[50.441.233.619.011.610.68.46.86.2];
plot(x,log(y-(5.2635.*exp(-0.1527*x)),'b*')
得:
可以发现这9个点成一定的曲线趋势,利用x和y的值可建立起直线回归方程。
只要在MATLAB下用同样的方法再次求指数拟合
>>x=[0.1000.1500.1750.2000.3000.4000.5000.6000.700];
y=[50.441.233.619.011.610.68.46.86.2];
Y=log(y-(5.2635.*exp(-0.1527.*x)));f=polyfit(x,Y,1);A=f
(2);B=f
(1);a=exp(A),b=-B
得a=62.55659;b=5.7270;即
由于前段各点在后段直线的上方,故最终的拟合函数应为y=(4)+(5),
即
在MATLAB中做出散点和拟合曲线
>>x=[0.1000.1500.1750.2000.3000.4000.5000.6000.7001.0005.00010.000];
y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 计算 课程设计 拟合 方法 函数 选取 讲解