资源描述
东南大学《数学实验》报告
学号 09008226 姓名 毕 斌 成绩
实验内容:曲线插值
一 实验目的
常见插值函数的求解及应用
二 预备知识
(1) 熟悉一般的曲线插值的方法
(2) 熟悉“\”、polyfit、polyval、interp1、spline、cscvn等Matlab命令
三 实验内容与要求
(1)已知某平原地区的一条公路经过如下坐标所表示的点,请用样条插值绘出这条公路(不考虑公路的宽度)。
X(m) 0 30 50 70 80 90 120 148 170 180
Y(m) 80 64 47 42 48 66 80 120 121 138
X(m) 202 212 230 248 268 271 280 290 300 312
Y(m) 160 182 200 208 212 210 200 196 188 186
X(m) 320 340 360 372 382 390 416 430 478 440
Y(m) 200 184 188 200 202 240 246 280 296 308
X(m) 420 380 360 340 320 314 280 240 200
Y(m) 334 328 334 346 356 360 392 390 400
完整代码:
function interpolation
%路线x轴上单调递增到最大值
road_x1 = [ 0, 30, 50, 70, 80, 90, 120, 148, 170, 180, 202, 212, 230, 248, 268, 271, 280, 290, 300, 312, 320, 340, 360, 372, 382, 390, 416, 430, 478];
road_y1 = [80, 64, 47, 42, 48, 66, 80, 120, 121, 138, 160, 182, 200, 208, 212, 210, 200, 196, 188, 186, 200, 184, 188, 200, 202, 240, 246, 280, 296];
%插值0到478
x1 = 0:478;
y1 = interp1(road_x1,road_y1,x1,'spline');
length1 = 0;
%计算这段路程长度
for i = 0:477
y_i = abs(interp1(road_x1,road_y1,i+1)-interp1(road_x1,road_y1,i));
length1 = length1+sqrt(1+(y_i)^2);
end
%做图并保持到下一个,一起绘制图形
plot(road_x1,road_y1,'.',x1,y1);
hold on;
%x轴上单调递减,第二段
road_x2 = [478, 440, 420, 380, 360, 340, 320, 314, 280, 240, 200];
road_y2 = [296, 308, 334, 328, 334, 346, 356, 360, 392, 390, 400];
%插值200到478
x2 = 200:478;
y2 = interp1(road_x2,road_y2,x2,'spline');
%计算该段路程长度
length2 = 0;
for j = 200:477
y_j = abs(interp1(road_x2,road_y2,j+1)-interp1(road_x2,road_y2,j));
length2 = length2+sqrt(1+(y_j)^2);
end
%绘图
plot(road_x2,road_y2,'.',x2,y2);
%plot(road_x2,road_y2)
hold off;
%输出路线总长度
disp('路线总长度:');
length = length1+length2
结果输出:
路线总长度:
length =
967.4565
绘制图形:
3
展开阅读全文