数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx

上传人:b****3 文档编号:14965875 上传时间:2022-10-26 格式:DOCX 页数:13 大小:350.30KB
下载 相关 举报
数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx_第1页
第1页 / 共13页
数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx_第2页
第2页 / 共13页
数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx_第3页
第3页 / 共13页
数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx_第4页
第4页 / 共13页
数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx

《数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

数值计算课程设计拟合方法与拟合函数的选取讲解Word文档格式.docx

曲线拟合在实际中有着很广泛的实用价值。

因为我们所获取的实验数据本身往往带有测量误差,难免会出现个别数据误差过大的现象。

相比于插值法,曲线拟合时,不要求曲线严格地经过每一个数据点,这样就能有效降低个别数据对整体数据规律的干扰作用;

另外,实验数据往往很多,插值法会比较繁杂,拟合方法则更实际更高效。

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.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。

编程:

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))

r*'

X,Y,'

b-'

拟合直线与数据点结合图'

运行后得:

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,'

),axis([0,3,0,12])

得散点图:

据图,我们取两种拟合函数分别为

(1)设,在MATLAB中输入程序

Y=log(y);

f=polyfit(x,Y,1);

A=f

(2);

B=f

(1);

a=exp(A),b=-B

X=0:

3;

Y=a*exp(-b.*X);

f=a*exp(-b.*x);

legend('

数据点(xi,yi)'

'

拟合曲线Y=f(x)'

数据点(xi,yi)和拟合曲线Y=f(x)的图形'

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=1./y;

a=f

(1),b=f

(2)

Y=1./(a.*X+b);

f=1./(a.*x+b);

Legend('

数据点(xi,yi)'

Title('

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

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];

10;

得:

a=15.6609;

b=0.2978;

E1=2.4705e+003

即拟合函数为:

显然,拟合效果不佳。

进一步分析可以看出,前9个点有一条渐近线,而后3个点有一条渐近线。

可将要拟合的曲线分为二段,前9个点为前段,后3个点为后段。

我们可以分别对前9个点和后3个点进行直线化。

以x为横坐标,lny为纵坐标,做散点图plot(x,log(y),'

)得

可以看出后三个点明显呈直线趋势,我们先对后三个点进行直线化。

拟合的方法和前面相同,在MATLAB中输入

x=[1.0005.00010.000];

y=[4.82.21.2];

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)),'

可以发现这9个点成一定的曲线趋势,利用x和y的值可建立起直线回归方程。

只要在MATLAB下用同样的方法再次求指数拟合

Y=log(y-(5.2635.*exp(-0.1527.*x)));

得a=62.55659;

b=5.7270;

由于前段各点在后段直线的上方,故最终的拟合函数应为y=(4)+(5),

在MATLAB中做出散点和拟合曲线

y

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1