【数学建模之Mathematica】4.插值

【数学建模之Mathematica】4.插值插值 Interpolatio 本篇主要讲述插值的基本范例与生活中的具体运用 hermite 插值 mathematica

大家好,欢迎来到IT知识分享网。

你们的每个赞都能让我开心好几天✿✿ヽ(°▽°)ノ✿

Wolfram语言与系统参考资料中心

详细资料见官方文档

插值与拟合在Mathematica中的操作也是相当方便(相对于Python而言),但是有个致命的缺点就是,当数据很大很多的时候,数据的导入、导出、使用令初学者并不是很舒服,一个很大的原因是因为对语言的不熟悉。我后面还会写的。

2、3是我在解决实际问题中的例子,同时还会对比插值阶数

目录

一、Interpolation        插值

1.基本范例:

(1)构建一个插值数据的近似函数

(2)应用函数,求插值

(3)绘制插值函数

(4)和原数据的比较

(5)即刻找出插值数值

 2.根据较少海底水深数据画出海底区域的地形和等高线图(二维散乱点插值)

(1)导入数据,插值,并选择内插阶数1,InterpolationOrder -> 1

(2)绘制三维图形,并选择黑色为轴

(3)绘制等高线图并显示标签与对标注

(4)导入数据,插值,并选择内插阶数All,InterpolationOrder -> All

(5)绘制三维图形,并选择黑色为轴

 (6)绘制等高线图并显示标签与对标注

 3.根据平面的高程数据表绘制三维表面图与等高线图(二维网格点插值)

(1)数据的导入

(2)插值,并选择内插阶数3

(3)绘制三维图

 (4)绘制等高线图


一、Interpolation        插值

基本用法:

【数学建模之Mathematica】4.插值

 

二维、三维都可以插值,但是要注意格式

1.基本范例:

(1)构建一个插值数据的近似函数

f = Interpolation[{1, 2, 3, 5, 8, 5}]

(2)应用函数,求插值

f[2.5]

结果:2.4375

(3)绘制插值函数

Plot[f[x], {x, 1, 6}]

结果:

【数学建模之Mathematica】4.插值

(4)和原数据的比较

Plot[f[x], {x, 1, 6}]; Show[%, ListPlot[{1, 2, 3, 5, 8, 5}]]

结果:

【数学建模之Mathematica】4.插值

(5)即刻找出插值数值

Plot[f[x], {x, 1, 6}]; Show[%, ListPlot[{1, 2, 3, 5, 8, 5}]]

结果:2.4375

 2.根据较少海底水深数据画出海底区域的地形和等高线图(二维散乱点插值)

                                                                   海底水深数据

x 129 140 103.5 88 185.5 195 105 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

(1)导入数据,插值,并选择内插阶数1,InterpolationOrder -> 1

(注:我这里把z都改为了负号,是因为海底的话理解为往下的高度)

(2)绘制三维图形,并选择黑色为轴

Plot3D[fa[x, y], {x, 80, 200}, {y, -70, 150}];

Show[%32, AxesStyle -> Black]

 结果:

【数学建模之Mathematica】4.插值

【数学建模之Mathematica】4.插值

(3)绘制等高线图并显示标签与对标注

结果:

【数学建模之Mathematica】4.插值

(4)导入数据,插值,并选择内插阶数All,InterpolationOrder -> All

 注意内插阶数不一定越高越好,只是在这里看上去效果比较平滑

(5)绘制三维图形,并选择黑色为轴

Plot3D[fb[x, y], {x, 80, 200}, {y, -70, 150}];

Show[%37, AxesStyle -> Black]

结果:

【数学建模之Mathematica】4.插值

【数学建模之Mathematica】4.插值

 (6)绘制等高线图并显示标签与对标注

 结果:

【数学建模之Mathematica】4.插值

 可以根据图像与数据分析:由于数据点过少,因此一阶插值看起来效果并不好;但是对于All插值,虽然看起来平滑,但是当插值阶数达到很高时误差会更大,z全是负的,但是插值出来的结果却有正的,因此只能选择一阶插值

 3.根据平面的高程数据表绘制三维表面图与等高线图(二维网格点插值)

                                                                高程数据表

y\x 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400
1200 1350 1370 1390 1400 1410 960 940 880 800 690 570 430 290 210 150
1100 1370 1390 1410 1430 1440 1140 1110 1050 950 820 690 540 380 300 210
1000 1380 1410 1430 1450 1470 1320 1280 1200 1080 940 780 620 460 370 350
900 1420 1430 1450 1480 1500 1550 1510 1430 1300 1200 980 850 750 550 500
800 1430 1450 1460 1500 1550 1600 1550 1600 1600 1600 1550 1500 1500 1550 1550
700 950 1190 1370 1500 1200 1100 1550 1600 1550 1380 1070 900 1050 1150 1200
600 910 1090 1270 1500 1200 1100 1350 1450 1200 1150 1010 880 1000 1050 1100
500 880 1060 1230 1390 1500 1500 1400 900 1100 1060 950 870 900 936 950
400 830 980 1180 1320 1450 1420 400 1300 700 900 850 810 380 780 750
300 740 880 1080 1130 1250 1280 1230 1040 900 500 700 780 750 650 550
200 650 760 880 970 1020 1050 1020 830 800 700 300 500 550 480 350
100 510 620 730 800 850 870 850 780 720 650 500 200 300 350 320
0 370 470 550 600 670 690 670 620 580 450 400 300 100 150 250

(1)数据的导入

对于如此庞大数据,是不可能一个一个输入的,非常麻烦。关于数据的导入,我将在后几篇文章述说,这里就直接复制粘贴

(2)插值,并选择内插阶数3

f = Interpolation[dataInterp, InterpolationOrder -> 3]

(3)绘制三维图

Plot3D[f[x, y], {x, 0, 1400}, {y, 0, 1200}, AxesStyle -> Bold]

结果:

【数学建模之Mathematica】4.插值

 【数学建模之Mathematica】4.插值

 (4)绘制等高线图

结果:

【数学建模之Mathematica】4.插值

你们的每个赞都能让我开心好几天✿✿ヽ(°▽°)ノ✿

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128875.html

(0)
上一篇 2025-08-28 16:26
下一篇 2025-08-28 16:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信