上一篇:【数学建模 matlab 实验报告9】数据的统计分析与描述
目录
实验报告
作业 1 :
在化工生产中常常需要知道丙烷在各种温度 T 和压力 P 下的导热系数 K. 下面是实验得到的一组数据 : 试求 T=99 ℃和 P=10.3x10 ' kPa 下的 K.

注意:请分别使用线性插值和三次插值计算结果。
截图:

代码:
Matlab
T = [68,68, 87,87, 106,106, 140,140];
P = [9.7981,13.324,9.0087,13.355,9.7918, 14.277,9.6563,12.463];
K = [0.0848,0.0897,0.0762,0.0807,0.0696,0.0753,0.0611,0.0651];
T_desired = 99;
P_desired = 10.3;
F_linear = scatteredInterpolant(T', P', K', 'linear', 'none');
F_cubic = scatteredInterpolant(T', P', K', 'natural', 'none');
K_linear = F_linear(T_desired, P_desired);
K_cubic = F_cubic(T_desired, P_desired);
fprintf('Linear Interpolation Result for K at T=%d°C and P=%.1fx10^5 kPa: %f\n', T_desired, P_desired, K_linear);
fprintf('Cubic Interpolation Result for K at T=%d°C and P=%.1fx10^5 kPa: %f\n', T_desired, P_desired, K_cubic);
作业 2 :

(1)画出观测点平面图(提示:利用plot函数);
(2)画出观测点空间图(提示:利用stem3函数);
(3)画出海底面图(提示:利用mesh函数);
(4)画出危险区域图(提示:利用contour函数)。
注意:为了使结果更为直观,首先将z的数据变号转化为相对于海平面的高度。另外,将上述4张图画在一个2×2的图形窗口中。
截图:

代码:
Matlab
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];
z_relative = -z;
figure;
subplot(2,2,1);
plot(x, y, 'o');
title('Observation Points Plane Plot');
xlabel('X');
ylabel('Y');
subplot(2,2,2);
stem3(x, y, z_relative, 'filled');
title('Observation Points Space Plot');
xlabel('X');
ylabel('Y');
zlabel('Height');
[X, Y] = meshgrid(linspace(min(x), max(x), 10), linspace(min(y), max(y), 10));
Z = griddata(x, y, z_relative, X, Y, 'linear');
subplot(2,2,3);
mesh(X, Y, Z);
title('Seabed Mesh Plot');
xlabel('X');
ylabel('Y');
zlabel('Height');
subplot(2,2,4);
contour(X, Y, Z, [0 5]);
title('Danger Areas Contour Map');
xlabel('X');
ylabel('Y');
hold on;
contour(X, Y, Z, [0 5], 'LineColor', 'r', 'LineWidth', 2);
作业 3 **:**已知如下数据:
|-----|------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| x | 0.00 | 0.31 | 0.63 | 0.94 | 1.26 | 1.57 | 1.89 | 2.20 | 2.51 | 2.83 |
| y | 0.00 | 0.31 | 0.59 | 0.81 | 0.95 | 1.00 | 0.95 | 0.81 | 0.59 | 0.31 |
| x | 3.14 | 3.46 | 3.77 | 4.08 | 4.40 | 4.71 | 5.03 | 5.34 | 5.65 | 5.97 |
| y | 0.00 | -0.31 | -0.59 | -0.81 | -0.95 | -1.00 | -0.95 | -0.81 | -0.59 | -0.31 |
- 利用三次样条插值计算x=0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6处的插值结果;
- 在同一张图上画出由原数据点和插值节点形成的曲线图,其中插值节点用红色"+"表示。
截图:

代码:
Matlab
x_data = [0, 1, 2, 3, 4, 5, 6];
y_data = [0, 0.8415, 0.9093, 0.1411, -0.7568, -0.9589, -0.2794];
x_interp = 0.5:0.5:6;
y_interp = spline(x_data, y_data, x_interp);
figure;
plot(x_data, y_data, 'o', 'DisplayName', 'Original Data');
hold on;
plot(x_interp, y_interp, 'r+--', 'DisplayName', 'Cubic Spline Interpolation');
legend;
title('Cubic Spline Interpolation and Data Points');
xlabel('X');
ylabel('Y');
实验心得
本次插值实验围绕线性插值、三次插值及三次样条插值展开,通过MATLAB编程实现数据插值计算与可视化呈现,不仅让我熟练掌握了各类插值方法的实操技巧,更深刻理解了插值技术的核心原理与应用价值,在理论与实践的结合中收获了诸多成长与感悟。
实验前期,我明确了插值技术的核心意义------通过已知数据点构建连续函数,进而推断未知位置的函数值,这一思想广泛应用于工程测量、化工计算、地质勘探等多个领域。本次实验的三个作业各有侧重,层层递进,从基础的插值计算到复杂的图形可视化,逐步提升了我的编程能力与问题解决能力。作业1针对化工生产中丙烷导热系数的预测,要求分别使用线性插值与三次插值计算特定温度和压力下的导热系数。通过编写代码调用scatteredInterpolant函数,我发现两种方法的计算结果存在差异:线性插值基于相邻数据点的线性关系推断,计算简单但精度较低,适用于对精度要求不高的场景;三次插值则考虑了数据点的光滑性,通过构建三次多项式实现插值,结果更贴合实际实验规律,这让我理解了不同插值方法的适用场景差异。
作业2的图形可视化任务,让我感受到了插值技术在数据呈现中的重要作用。通过plot、stem3、mesh、contour等函数,将观测点的平面分布、空间位置、海底面形态及危险区域清晰呈现,尤其是将z数据变号转化为相对海平面高度,让图形更具直观性。在调试代码的过程中,我曾遇到子图布局混乱、contour函数绘制的危险区域不清晰等问题,通过查阅资料、调整参数,最终实现了2×2图形窗口的规范布局,也深刻认识到细节对实验结果的影响------一个参数的偏差、一行代码的疏漏,都可能导致实验结果出现较大误差。同时,mesh函数绘制的海底面图,让我直观看到了插值技术在地质建模中的应用,理解了如何通过离散数据构建连续的空间曲面。
作业3的三次样条插值实验,进一步深化了我对插值方法的理解。三次样条插值通过在相邻数据点之间构建分段三次多项式,保证了曲线的连续性与光滑性,相较于普通三次插值,其拟合效果更优,更适合描述数据的变化趋势。通过计算特定x值对应的插值结果,并将原数据点与插值节点绘制在同一张图中,我清晰看到了插值曲线与原数据的贴合程度,也掌握了spline函数的使用方法。实验中,我发现原数据呈现出明显的周期性变化,而三次样条插值能够精准捕捉这一规律,插值节点的红色"+"标记清晰区分了原数据与插值结果,让我直观感受到了插值技术的精准性。
本次实验也让我认识到自身的不足:初期对各类插值函数的原理理解不够透彻,编写代码时常常出现参数设置错误;对图形可视化的细节处理不够细致,导致图形呈现效果不佳。通过查阅教材、参考资料,逐步解决了这些问题,也培养了我严谨的实验态度和自主解决问题的能力。同时,我深刻体会到理论与实践结合的重要性------课堂上学习的插值原理较为抽象,而通过实际编程操作,将抽象的理论转化为具体的代码的实验结果,不仅加深了对原理的理解,更提升了实操能力。
通过本次实验,我不仅熟练掌握了线性插值、三次插值、三次样条插值的方法及MATLAB实现技巧,更认识到插值技术在实际工程中的重要价值。它不仅是一种数据处理方法,更是连接理论与实践的桥梁,能够帮助我们从离散数据中挖掘连续规律,为工程决策提供科学依据。未来,我将继续加强编程练习,深入研究各类插值方法的原理与应用,不断提升自身的专业能力,将实验中学到的知识运用到实际问题中,做到学以致用。