插值与拟合文档格式.docx

上传人:b****6 文档编号:21742457 上传时间:2023-02-01 格式:DOCX 页数:16 大小:358.60KB
下载 相关 举报
插值与拟合文档格式.docx_第1页
第1页 / 共16页
插值与拟合文档格式.docx_第2页
第2页 / 共16页
插值与拟合文档格式.docx_第3页
第3页 / 共16页
插值与拟合文档格式.docx_第4页
第4页 / 共16页
插值与拟合文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

插值与拟合文档格式.docx

《插值与拟合文档格式.docx》由会员分享,可在线阅读,更多相关《插值与拟合文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

插值与拟合文档格式.docx

为说明一维插值,考虑下列问题,12小时内每一小时测一次室外温度。

数据存储在两个变量中。

hours=1:

12;

%indexforhourdatawasrecorded

temps=[5,8,9,15,25,29,31,30,22,25,7,24];

%recordedtemperatures

plot(hours,temps,hours,temps,'

+'

)%viewtemperatures

title('

Temperature'

xlabel('

Hour'

),ylabel('

DegreesCelsius'

为计算任给时间的温度,可用函数interp1作插值运算。

t=interp1(hours,temps,9.3)%estimatetemperatureathour=9.3

t=22.9000

t=interp1(hours,temps,4.7)

t=22

t=interp1(hours,temps,[3.26.57.111.7])

t=10.2000

30.0000

30.9000

24.9000

若不采用直线连接数据点,我们可采用某些更光滑的曲线来拟合数据点。

最常用的方法是用3次样条插值。

t=interp1(hours,temps,9.3,'

spline'

)%estimatetemperatureathour=9.3

t=21.8577

t=interp1(hours,temps,4.7,'

)%estimatetemperatureathour=4.7

t=22.3143

t=interp1(hours,temps,[3.26.57.111.7],'

t=9.6734

30.0427

31.1755

25.3820

注意,样条插值得到的结果,与上面所示的线性插值的结果不同。

因为插值是一个估计或猜测的过程,其意义在于应用不同的估计规则导致不同的结果。

.2、二维插值

二维插值是基于与一维插值同样的基本思想,是对两个变量的函数z=f(x,y)进行插值。

MATLAB中用函数interp2来拟合二维网格(X,Y)上的数据Z,语法是:

z1=interp2(x,y,z,x1,y1,’method’)

其中(x,y,z)是已给的数据点的横、纵、竖坐标,(x1,y1)是插值点的横、纵坐标,z1为插值点的竖坐标。

‘method’为插值方法,主要有

'

linear'

线性插值,默认

pchip'

逐段三次Hermite插值

逐段三次样条函数插值

其中最后一种插值的曲面比较平滑

例:

设有一平板,在均匀分布的格栅上采集温度值。

数据如下:

width=1:

5;

%indexforwidthofplate(i.e.thex-dimension)

depth=1:

3;

%indexfordepthofplate(i.e.they-dimension)

temps=[8281808284;

7963616581;

8484828586]%temperaturedata

temps=

8281808284

7963616581

8484828586

如同在标引点上测量一样,矩阵temps表示整个平板的温度分布。

temps的列与下标depth或y-维相联系,行与下标width或x-维相联系。

为了估计在中间点的温度,我们必须对它们进行辨识。

wi=1:

0.2:

%estimateacrosswidthofplate

d=2;

%atadepthof2

zlinear=interp2(width,depth,temps,wi,d);

%linearinterpolation

zcubic=interp2(width,depth,temps,wi,d,'

cubic'

);

%cubicinterpolation

plot(wi,zlinear,'

-'

wi,zcubic)%plotresults

WidthofPlate'

),ylabel('

title(['

TemperatureatDepth='

num2str(d)])

3、曲线拟合

是直角平面坐标系下给出的一组数据,设

,且已知它们满足某一函数y=f(a,x),其中a是待定的参数,曲线拟合就是要确定这些参数,使得拟合值与真实值之间的误差达到最小。

最常用的判断曲线拟合效果好坏的方法就是最小二乘法,即使得目标函数sum(yi-f(a,xi))^2)达到最小。

当最佳拟合被解释为在数据点的最小误差平方和,且所用的曲线限定为多项式时,那么曲线拟合是相当简捷的。

(1)多项式拟合

MATLAB中进行多项式拟合的函数为polyfit()。

调用格式:

p=polyfit(x,y,n)

[p,s]=polyfit(x,y,n)

说明:

x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。

矩阵s用于生成预测值的误差估计。

x=[0.1.2.3.4.5.6.7.8.91];

y=[-.4471.9783.286.167.087.347.669.569.489.3011.2];

p=polyfit(x,y,2)

p=-9.810820.1293-0.0317

可得其解为y=-9.8108x2+20.1293x-0.0317。

为了将曲线拟合解与数据点比较,可将二者都绘成图。

xi=linspace(0,1,100);

%x-axisdataforplotting

z=polyval(p,xi);

%为计算在xi数据点的多项式值,调用MATLAB的函数polyval

plot(x,y,'

o'

x,y,xi,z,'

:

多项式阶次的选择是任意的。

两点决定一直线或一阶多项式。

三点决定一曲线或2阶多项式。

按此进行,n+1数据点唯一地确定n阶多项式。

于是对于有11个数据点的上例情况,可选一个高达10阶的多项式。

然而,高阶多项式给出很差的数值特性,故不应选择比所需阶次高的多项式。

拟合曲线阶次"

越多就越好"

的观念是不适用的。

(2)最小二乘拟合

在Matlab的最优化工具箱中提供了lsqcurvefit()函数,可以解决最小二乘曲线拟合的问题。

该函数的调用格式为:

[a,fval]=lsqcurvefit(fun,a0,x,y)

其中:

fun为原型函数的Matlab表示,可以是M文件定义的函数或inline()函数,a0为最优化的初值,x,y为原始输入输出数据向量,a为返回的待定系数向量,fval为在此待定系数下的目标函数的值。

由函数

生成一组数据x和y

x=0:

.1:

10;

y=0.5*exp(-0.1*x)+0.8*exp(-0.3*x).*sin(2.5*x);

假设以上数据满足原型为

,其中,

为待定系数。

采用最小二乘曲线拟合的目的就是获得这些待定系数的值,使得目标函数的值最小。

根据已知的函数原型,可以编写出如下函数:

f=inline('

a

(1)*exp(-a

(2)*x)+a(3)*exp(-a(4)*x).*sin(a(5)*x)'

'

a'

x'

);

建立起函数原型后,就可以由下面的语句得出待定的系数向量了。

[xx,res]=lsqcurvefit(f,[1,1,1,1,1],x,y);

xx'

res

绘制出拟合曲线与样本点的图形:

x1=0:

0.01:

y1=f(xx,x1);

plot(x1,y1,x,y,'

o'

三、实验内容

1、一维插值方法的实现。

2、二维插值方法的实现。

3、多项式拟合命令的使用方法。

4、最小二乘拟合命令的使用方法。

四、实验报告

 

曲线的插值与拟合

实验名称:

实验日期:

年月日

姓名:

班级学号:

成绩:

二、实验内容及步骤

1、已知数据:

x

.1

.2

.3

.4

.5

.6

.7

.8

.9

1

y

1.4

1.6

1.9

1.5

2

画出用线性、三次样条和三次多项式插值所得[0,1]区间内的曲线图,并求当xi=0.25、0.35、0.45时的yi的值。

(1)画曲线图:

程序:

0.1:

1;

y=[0.30.511.41.61.90.60.40.81.52];

subplot(2,2,1)

plot(x,y,'

b+'

散点图'

subplot(2,2,2)

x2=0:

0.05:

y2=interp1(x,y,x2);

plot(x2,y2)

线性插值'

subplot(2,2,3)

x3=0:

y3=interp1(x,y,x3,'

plot(x3,y3)

三次样条插值'

subplot(2,2,4)

x4=0:

p=polyfit(x,y,3);

y4=polyval(p,x4);

plot(x4,y4)

三次多项式插值'

运行结果:

(2)求xi=0.25、0.35、0.45时的yi的值

z=interp1(x,y,[0.250.350.45])

z=

1.20001.50001.7500

2、已知某处山区地形选点测量坐标数据为:

x=00.511.522.533.544.55

y=00.511.522.533.544.555.56

海拔高度数据为:

z=8990878592919693908782

9296989995918986848284

9698959290888584838185

8081828995969392898686

8285879899969788858283

8285899495939291868488

8892939495898786838192

9296979896939584828184

8585818280808185909395

8486819899989796958487

8081858283848790958688

8082818485868382818082

8788899899979698949287

(1)画出其地貌图:

x=[00.511.522.533.544.55];

y=[00.511.522.533.544.555.56];

z=[8990878592919693908782;

9296989995918986848284;

9698959290888584838185;

8081828995969392898686;

8285879899969788858283;

8285899495939291868488;

8892939495898786838192;

9296979896939584828184;

8585818280808185909395;

8486819899989796958487;

8081858283848790958688;

8082818485868382818082;

8788899899979698949287];

[xi,yi]=meshgrid(0:

0.5:

5,0:

6);

mesh(xi,yi,z)

X'

Y'

),zlabel('

Z'

地貌图'

(2)对数据插值加密形成地貌图,原始数据用小圆圈标出。

(将程序补充完整)

y=0:

6;

z=[8990878592919693908782

[x,y]=meshgrid(x,y);

plot3(x,y,z,'

bo'

holdon

xi=linspace(0,5,50);

yi=linspace(0,6,80);

[x1,y1]=meshgrid(xi,yi);

z1=interp2(x,y,z,x1,y1,'

cubic'

mesh(x1,y1,z1)

3、由离散数据

用3阶多项式拟合数据,并将原始曲线与拟合曲线进行比较。

(1)程序:

y1=polyval(p,x1);

b'

x1,y1,'

r'

legend('

原始数据'

拟合数据'

(2)从图像上观察拟合的效果。

从上面两幅图来看,用三次多项式拟合的效果并不是很好。

4、已知数据可能满足

,求满足数据的最小二乘解a,b,c,d的值,并将原始曲线与拟合曲线进行比较。

0.1

0.2

0.3

0.4

0.5

2.3201

2.6470

2.9707

3.2885

3.6008

0.6

0.7

0.8

0.9

1.0

3.9090

4.2147

4.5191

4.8232

5.1275

(1)建立函数文件e11f1.m,用来存储函数

ellfl=inline('

a

(1)*x+a

(2)*x.^2.*exp(-a(3)*x)+a(4)'

(2)用最小二乘拟合函数拟合数据。

xi=0.1:

yi=[2.32012.64702.97073.28853.60083.90904.21474.51914.82325.1275];

[xx,res]=lsqcurvefit(ellfl,[1,1,1,1],xi,yi);

ans=

2.9957

1.0151

2.2540

2.0197

res=

1.9194e-004

所以用最小二乘拟合的函数为

在此拟合函数下的目标函数的值为

5、在农业生产试验研究中,对某地区土豆的产量与化肥的关系做了一实验,得到了氮肥、磷肥的施肥量与土豆产量的对应关系如下表:

氮施肥量(公斤/公顷)

34

67

101

135

202

259

336

404

471

土豆产量(公斤)

15.18

21.36

25.72

32.29

34.03

39.45

43.15

43.46

40.83

30.75

磷施肥量(公斤/公顷)

24

49

73

98

147

196

245

294

342

33.46

32.47

36.06

37.96

41.04

40.09

41.26

42.17

40.36

42.73

根据上表数据分别给出土豆产量与氮、磷肥的关系式。

(1)画出土豆产量与氮施肥量的散点图,观察它们的大致图形确定多项式的阶数。

x1=[03467101135202259336404471];

y1=[15.1821.3625.7232.2934.0339.4543.1543.4640.8330.75];

x2=[024497398147196245294342];

y2=[33.4632.4736.0637.9641.0440.0941.2642.1740.3642.73];

subplot(1,2,1);

plot(x1,y1,'

氮施肥量'

ylabel('

土豆产量'

holdon;

subplot(1,2,2);

plot(x2,y2,'

磷施肥量'

结论:

从散点图判断土豆产量与氮、磷肥的关系式应该采用的模型。

从上面的散点图来看,土豆产量与氮、磷肥的关系式都应该采用二次多项式模型。

(2)利用MATLAB对数据进行拟合。

p=polyfit(x1,y1,2)

p2=polyfit(x2,y2,2)

p=

-0.00030.197114.7416

p2=

-0.00010.071932.9161

用二次多项式去拟合土豆产量与氮肥的关系式为

用二次多项式去拟合土豆产量与磷肥的关系式为

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

当前位置:首页 > 高中教育 > 高考

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

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