error('插值点必须互异');
return;
end
w=(xi-x(j))/(x(k)-x(j)).*w;
end
yi=yi+w*y(k);
end
(1)
>>x=-5:
5;y=1./(1+x.^2);xi=-5:
0.1:
5;
>>y1=interp1(x,y,xi,'linear');plot(x,y,'*',xi,y1),holdon
>>y2=spline(x,y,xi);plot(xi,y2,'r'),holdon
>>y3=Lagrange(x,y,xi);plot(xi,y3,':
'),holdon
(2)
>>x=0:
2*pi;y=sin(x);xi=0:
0.1:
2*pi;
>>y1=interp1(x,y,xi,'linear');plot(x,y,'o',xi,y1),holdon
>>y2=spline(x,y,xi);plot(xi,y2,'r'),holdon
>>y3=Lagrange(x,y,xi);plot(xi,y3,':
'),holdon
(3)
>>x=0:
2*pi;y=(cos(x)).^10;xi=0:
0.1:
2*pi;
>>y1=interp1(x,y,xi,'linear');plot(x,y,'o',xi,y1),holdon
>>y2=spline(x,y,xi);plot(xi,y2,'r'),holdon
>>y3=Lagrange(x,y,xi);plot(xi,y3,':
')
2.对于二维插值的几种方法:
最邻近插值、分片线性插值、双线性插值、三次插值等,利用如下函数进行插值计算,观察其插值效果变化,得出什么结论?
1)
,参数p=1/2000~1/200;采样步长为:
t=4ms~4s;x=5~25m.
>>t=linspace(0.004,4,10);x=linspace(5,25,10);[t,x]=meshgrid(t,x);p=1/400;w=1;f=sin(w*(t-p.*x);
>>ti=linspace(0.004,4,100);xi=linspace(5,25,100);[t1,x1]=meshgrid(ti,xi);
>>f1=interp2(t,x,f,t1,x1,'nearest');mesh(t1,x1,f1)
>>f2=interp2(t,x,f,t1,x1,'linear');mesh(t1,x1,f2)
>>f3=interp2(t,x,f,t1,x1,'cubic');mesh(t1,x1,f3)
2)
参数=1~2;x,y[1,1]。
取
=3/2
>>x=linspace(-1,1,10);y=linspace(-1,1,10);[x,y]=meshgrid(x,y);
>>z=3/10+sin((16/15)*x-3/2)+(sin((16/15)*x-3/2))^2+sin((16/15)*y-3/2)+(sin((16/15)*y-3/2))^2;
>>xi=linspace(-1,1,40);yi=linspace(-1,1,40);[x1,y1]=meshgrid(xi,yi);
>>z1=interp2(x,y,z,x1,y1,'nearest');mesh(x1,y1,z1)
>>z2=interp2(x,y,z,x1,y1,'linear');mesh(x1,y1,z2)
>>z3=interp2(x,y,z,x1,y1,'cubic');mesh(x1,y1,z3)
3)将2)中的函数推广到三维情形,进行同样的处理,体会高维插值的运用。
3.轮船的甲板成近似半椭圆面形,为了得到甲板的面积。
首先测量得到横向最大相间8.534米;然后等间距地测得纵向高度,自左向右分别为:
0.914,5.060,7.772,8.717,9.083,9.144,9.083,8.992,8.687,7.376,2.073,
计算甲板的面积。
>>x=linspace(0,8.534,11);
>>y=[0.914,5.060,7.772,8.717,9.083,9.144,9.083,8.992,8.687,7.376,2.073];
>>xi=linspace(0,8.534,100);yi=spline(x,y,xi);area=sum((xi
(2)-xi
(1))*yi)
area=
65.4017
4.物体受水平方向外力作用,在水平直线上运动。
测得位移与受力如表7.1
表7.1
X
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
F
20
21
21
20
19
18.5
18.0
13.5
9
4.5
0
求(a)物体从位移为0到0.4所做的功;
(b)位移为0.4时的速度是多少?
>>x=0:
0.1:
0.4;y=[20,21,21,20,19];xi=0:
0.001:
0.4;yi=spline(x,y,xi);W=sum(xi.*yi)
W=
1.6167e+003
5.火车行驶的路程、速度数据如表7.2,计算从静止开始20分钟内走过的路程。
表7.2
t(分)
2
4
6
8
10
12
14
16
18
20
v(km/h)
10
18
25
29
32
20
11
5
2
0
>>t=0:
2:
20;v=(1000/60).*[0,10,18,25,29,32,20,11,5,2,0];
>>ti=0:
0.1:
20;vi=spline(t,v,ti);s=sum(0.1*vi)
s=
5.1065e+003
6.确定地球与金星之间的距离
天文学家在1914年8月份的7次观测中,测得地球与金星之间距离(单位:
米),并取其常用对数值,与日期的一组历史数据如表7.3。
表7.3
日期(号)
18
20
22
24
26
28
30
距离对数
9.9617724
9.9543645
9.9468069
9.9390950
9.9312245
9.9231915
9.9149925
由此推断何时金星与地球的距离(米)的对数值为9.9351799?
>>t=18:
2:
30;s=[9.9617724,9.9543645,9.9468069,9.9390950,9.9312245,9.9231915,9.9149925];
>>t1=spline(s,t,9.9351799)
t1=
25.0000
7.日照时间分布表7.4的气象资料是某一地区1985-1998年间不同月份的平均日照时间的观测数据(单位:
小时/月),试分析日照时间的变化规律。
表7.4
月份
1
2
3
4
5
6
7
8
9
10
11
12
日照
80.9
67.2
67.1
50.5
32.0
33.6
36.6
46.8
52.3
62.0
64.1
71.2
>>x=1:
12;y=[80.9,67.2,67.1,50.5,32.0,33.6,36.6,46.8,52.3,62.0,64.1,71.2];
>>xi=1:
1/30:
12;yi=spline(x,y,xi);plot(x,y,'*',xi,yi),gridon
8.山区地貌图在某山区(平面区域(0,2800)(0,2400)内,单位:
米)测得一些地点的高程(单位:
米)如表7.5,试作出该山区的地貌图和等高线图。
表7.5
2400
2000
1600
1200
800
400
0
1430145014701320128012001080940
14501480150015501510143013001200
14601500155016001550160016001600
13701500120011001550160015501380
12701500120011001350145012001150
1230139015001500140090011001060
118013201450142014001300700900
Y/X
040080012001600200024002800
>>x=0:
400:
2800;y=0:
400:
2400;xi=0:
40:
2800;yi=0:
40:
2400;
z=[1180,1320,1450,1420,1400,1300,700,900;1230,1390,1500,1500,1400,900,1100,1060;
1270,1500,1200,1100,1350,1450,1200,1150;1370,1500,1200,1100,1550,1600,1550,1380;
1460,1500,1550,1600,1550,1600,1600,1600;1450,1480,1500,1550,1510,1430,1300,1200;
1430,1450,1470,1320,1280,1200,1080,940];
>>[xi,yi]=meshgrid(xi,yi);zi=interp2(x,y,z,xi,yi,'spline');
>>mesh(xi,yi,zi)
>>[c,h]=contour(xi,yi,zi,[0:
100:
1600]);clabel(c,h)