数学建模实验报告4

来源:工作范文网 时间:2020-09-21 12:45:34

PAGE / NUMPAGES

桂林电子科技大学2017-2018学年 第1学期

数学建模

实验名称

实验四、插值与拟合

检查情况:

成绩 教师签名:

院 系

计算机与信息安全学院

专业

计算机科学与技术

学 号

姓名

同 作 者

实验日期

2017

12

24

实验目的

应用matlab处理数据并分析,主要学会并熟练掌握数据拟合和插值。

实验内容

题目1

在化工生产中常常需要知道丙烷在各种温度T和压力P下的导热系数K。下面是实验得到的

一组数据:

T/°C

68

68

87

87

106

106

140

140

K

P/103kPa

9.7981

13.324

9.0078

13.355

9.7918

14.277

9.6563

12.463

0696

K

0.0848

0.0897

0.0762

0.0807

0.0696

0.0753

0.0611

0.0651

0753

试求 T=99/°C和 P=10.3×103 kPa下的K。

p2=[9.0078,13.355]; k2=[0.0762,0.0807]; %T=87℃

p3=[9.7918,14.277]; k3=[0.0696,0.0753]; %T=106℃

a2=polyfit(p2,k2,1); a3=polyfit(p3,k3,1);

x1=polyval(a2,10.3); x2=polyval(a3,10.3); %x1,x2 分别是 P=10.3(103 kPa) 下87℃和 106℃时的 k 值

x=[87,106];y=[x1,x2];

a=polyfit(x,y,1);%求解多项式的系数

z=polyval(a,99)%求解多项式z在x=99下对应的值。

实验结果:

z =

0.0729

题目2

下表给出了某一海域以码为单位的直角坐标Oxy上一点(x,y)(水面一点)以英尺为单位的水深z,水深数据是在低潮时测得的,船的吃水深为5英尺,问在矩形区域 (75,200)x(-50,150) 里那些地方船要避免进入。

x

129

140

103.5

88

185.5

195

105.5

157.5

107.5

77

81

162

162

117.5

y

7.5

141.5

23

147

22.5

137.5

85.5

-6.5

-81

3

56.5

-66.5

84

-33.5

z

4

8

6

8

6

8

8

9

9

8

8

9

4

9

插值法求解:

代码:

x=[129 140 103.5 88 185.5 195 105.5 157.5 107.5 77 81 162 162 117.5];

y=[7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5];

z=[-4 -8 -6 -8 -6 -8 -8 -9 -9 -8 -8 -9 -4 -9];

cx = 75:0.5:200;

cy = -50:0.5:150;

[cx,cy]=meshgrid(cx,cy);

cz=griddata(x,y,z,cx,cy,'cubic');

%等高线图 红色区域为危险区域,所以船只要避免进入

figure(2)

contour(cx,cy,cz,[-5,-5],'r')

hold on

plot(x,y,'*')

xlabel('X'),ylabel('Y')

实验结果:

船的吃水深度为5英尺时,红色区域为危险区域,船要避免进入。

题目3

用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。如果作2或4次多项式拟合,结果如何?

线性最小二乘拟合

程序如下:

x=1:0.5:10;

y=x.^3-6*x.^2+5*x-3;

y0=y+rand;

f1=polyfit(x,y0,1)% 输出多项式系数

y1=polyval(f1,x);% 计算各 x点的拟合值

plot(x,y,'+',x,y1)

grid on

title(' 一次拟合曲线 ');

figure(2);

f2=polyfit(x,y0,2)%2 次多项式拟合

y2=polyval(f2,x);

plot(x,y,'+',x,y2);

grid on

title(' 二次拟合曲线 ');

figure(3);

f4=polyfit(x,y0,4)%4 次多项式拟合

y3=polyval(f4,x);

plot(x,y,'+',x,y3)

grid on

title(' 四次拟合曲线 ');

figure(4);

f6=polyfit(x,y0,6)%6 次多项式拟合

y4=polyval(f6,x);

plot(x,y,'+',x,y4)

grid on

title(' 六次拟合曲线 ');

运行结果如下:依次为各个拟合曲线的系数(按降幂排列)

f1 =43.2000 -149.0663

f2 = 10.5000 -72.3000 89.8087

f4 =0.0000 1.0000 -6.0000 5.0000 -2.5913

f6 = 0.0000 -0.0000 0.0000 1.0000 -6.0000 5.0000

-2.4199

运行后, 比较拟合后多项式和原式的系数, 发现四次多项式系数与原系数比较接近, 四次多项式的四次项系数很小。

 作图后, 发现一次和二次多项式的图形与原函数的差别比较大, 属于欠拟合的情况, 而四次多项式和六次多项式符合得比较好。作图如下:

实验总结

本次实验,主要学习和实践了插值和拟合这两个在实际应用中十分广泛的建模方法,同时,它们也是我们学习数学建模的基础。插值和拟合,基础但不简单,需要大量的训练才能很好的进行掌握。