【数学建模 matlab 实验报告10】插值

张开发
2026/4/8 21:17:09 15 分钟阅读

分享文章

【数学建模 matlab 实验报告10】插值
上一篇【数学建模 matlab 实验报告9】数据的统计分析与描述目录实验报告实验心得实验报告作业1在化工生产中常常需要知道丙烷在各种温度T和压力P下的导热系数K.下面是实验得到的一组数据:试求T99℃和P10.3x10’kPa下的K.注意请分别使用线性插值和三次插值计算结果。截图代码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);作业21画出观测点平面图提示利用plot函数2画出观测点空间图提示利用stem3函数3画出海底面图提示利用mesh函数4画出危险区域图提示利用contour函数。注意为了使结果更为直观首先将z的数据变号转化为相对于海平面的高度。另外将上述4张图画在一个2×2的图形窗口中。截图代码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已知如下数据x0.000.310.630.941.261.571.892.202.512.83y0.000.310.590.810.951.000.950.810.590.31x3.143.463.774.084.404.715.035.345.655.97y0.00-0.31-0.59-0.81-0.95-1.00-0.95-0.81-0.59-0.31利用三次样条插值计算x0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6处的插值结果在同一张图上画出由原数据点和插值节点形成的曲线图其中插值节点用红色“”表示。截图代码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实现技巧更认识到插值技术在实际工程中的重要价值。它不仅是一种数据处理方法更是连接理论与实践的桥梁能够帮助我们从离散数据中挖掘连续规律为工程决策提供科学依据。未来我将继续加强编程练习深入研究各类插值方法的原理与应用不断提升自身的专业能力将实验中学到的知识运用到实际问题中做到学以致用。

更多文章