数学建模 [作业问题 - 解释性摘要(数据处理方法、规划模型、图形和网络模型、微分方程模型、统计模型、系统评价决策模型)] 第 3 章 数据处理方法- 第 3 章 数据处理方法
3.1、数据插值练习题
1、估计每隔1/10小时的温度值。
在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。试估计每隔1/10小时的温度值。
hours = 1:12;
temps = [5 8 9 15 25 29 31 30 22 25 27 24];
h = 1:0.1:12;
t = interp1(hours,temps,h,'spline') % (直接输出数据将是很多的)
plot(hours, temps, '+')
hold on
plot(h, t, hours, temps, 'r:') %作图
xlabel('Hour'),ylabel('Degrees Celsius')
2、作出山区的地貌图和等高线图,并对几种插值方法进行比较。
某山区地貌:
在某山区测得一些地点的高程如下表。平面区域为
(1200<=x<=4000,1200<=y<=3600)
试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。
X
Y
1200
1600
2000
2400
2800
3200
3600
4000
1200
1130
1250
1280
1230
1040
900
500
700
1600
1320
1450
1420
1400
1300
700
900
850
2000
1390
1500
1500
1400
900
1100
1060
950
2400
1500
1200
1100
1350
1450
1200
1150
1010
2800
1500
1200
1100
1550
1600
1550
1380
1070
3200
1500
1550
1600
1550
1600
1600
1600
1550
3600
1480
1500
1550
1510
1430
1300
1200
980
通过此题对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较。
相似题目
3.2、数据拟合练习题
3、多项式拟合方法
分别用多项式拟合的方法,在不同阶次下 拟合 函数y=(x2-3x+5)e-5xsinx中给出的数据。
该数据的三次多项式拟合:
>> x0=0:0.1:1; y0=(x0.^2-3*x0+5).*exp(-5*x0).*sin(x0);
>> p3=polyfit(x0,y0,3); vpa(poly2sym(p3),10)
ans =
2.839962923*x^3-4.789842696*x^2+1.943211631*x+.5975248921e-1
绘制拟合曲线:
>> x=0:0.01:1; ya=(x.^2-3*x+5).*exp(-5*x).*sin(x);
>> y1=polyval(p3,x); plot(x,y1,x,ya,x0,y0,'o')
>>p6=polyfit(x0,y0,6); y2=polyval(p6,x);
>>vpa(poly2sym(p6),10)
就不同的次数进行拟合:
>> p4=polyfit(x0,y0,4); y2=polyval(p4,x);
>> p5=polyfit(x0,y0,5); y3=polyval(p5,x);
>> p8=polyfit(x0,y0,8); y4=polyval(p8,x);
拟合最高次数为8的多项式:
>> vpa(poly2sym(p8),5)
ans =
-8.2586*x^8+43.566*x^7-101.98*x^6+140.22*x^5-125.29*x^4+74.450*x^3-27.672*x^2+4.9869*x+.42037e-6
Taylor幂级数展开:
>> syms x; y=(x^2-3*x+5)*exp(-5*x)*sin(x);
>> vpa(taylor(y,9),5)
ans =
5.*x-28.*x^2+77.667*x^3-142.*x^4+192.17*x^5-204.96*x^6+179.13*x^7-131.67*x^8
4、非线性最小二乘拟合获得待定系数
由下面语句生成一组数据,其中ai为待定系数。
>> x=0:.1:10;
>> y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);
并且该数据满足y(x)=a1*exp(-a2*x)+a3exp(-a4*x)*sin(a5*x)采用非线性最小二乘拟合获得待定系数,使得目标函数的值最小。
2、编写函数:
>> 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
输出结果:
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
ans =
0.1197
0.2125
0.5404
0.1702
1.2300
res =
7.1637e-007
修改最优化选项:
>> ff=optimset; ff.TolFun=1e-20; ff.TolX=1e-15; % 修改精度限制
>> [xx,res]=lsqcurvefit(f,[1,1,1,1,1],x,y,[],[],ff); xx',res
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
ans =
0.1200
0.2130
0.5400
0.1700
1.2300
res =
9.5035e-021
绘制曲线:
>> x1=0:0.01:10; y1=f(xx,x1); plot(x1,y1,x,y,'o')
下一篇: 3-2 年级数学寒假作业总结