⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计10425字,阅读大概需要20分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
⏰个人网站:https://jerry-jy.co/❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我
人工智能数学与代码实现--数值分析4(插值计算实例)
人工智能数学与代码实现–数值分析4(插值计算实例)
实验背景
随着现代数据科学技术的发展,大量问题被抽象为具体的符号化数学模型。模型的求解往往是一个复杂的数值计算问题,在实际解决这些计算问题的过程中,数值分析作为一门学科孕育而生。数值分析、计算方法、科学计算本质上是一个意思,就是研究各种数学问题,进行数值计算的一门学科,是数学的一个分支。许多计算领域的问题,如计算物理、计算力学、计算化学、计算经济学等,都可归结为数值计算问题。插值是数值分析领域的一个主要部分,利用插值法可以通过函数在有限个点处的取值状况估计出该函数在其他点处的值。本实验主要运用插值理论对一些实例的应用。
实验描述:
本次实验数据:
(1)test.xlsx
包含1-15周中奇数周实验数据
数据路径为:/root/experiment/data/test.xlsx
对该数据进行三次样条插值
(2)sand.xlsx
包含在指定的的陌生区域内一些地点的高程
数据路径为:/root/experiment/data/sand.xlsx
对该数据进行二维三次样条插值
实验环境
-
Oracle Linux 7.4
-
Python 3
实验目的
-
基于Python实现Lagrange插值、Newton插值
-
基于Python实现分段式线性插值、临近插值和样条插值
-
基于Python实现二维网格节点插值
知识点
-
Lagrange插值、Newton插值
-
分段式线性插值、临近插值和样条插值
-
二维网格节点插值
实验分析
任务实施过程
一、打开Jupyter,并新建python工程
1.桌面空白处右键,点击Konsole打开一个终端
2.切换至/experiment/jupyter
目录
cd experiment/jupyter
3.启动Jupyter,root用户下运行需加–allow-root
jupyter notebook --ip=127.0.0.1 --allow-root
4.依次点击右上角的 New,Python 3新建python工程
5.点击Untitled,在弹出框中修改标题名,点击Rename确认
二、机动车刹车距离问题
在车辆行驶中,从驾驶员看到障碍物开始,到作出判断而采取制动措施停车所需的最短距离叫停车视距。停车视距(d)由三部分组成:
一是驾驶员反应时间内行驶的距离(即反应距离d1) ;
二是开始制动到车辆完全停止所行驶的距离(即制动距离d2) ;
三是车辆停止时与障碍物应该保持的安全距离。
其中,制动距离主要与行驶速度和路面类型有关。
根据测试,某型车辆在潮湿天气于沥青路面行驶时,其行车速度(单位: km/h )与制动距离(单位: m)的关系如下表所示
from numpy import arange,array,argsort,around
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
# 第一步:建立速度和停车视距向量
v = arange(20,160,10)
# 速度单位转换,这里的vs单位是 m/s
vs = v*(1000/3600)
# 求得不同速度下的反应距离
d1 = 10*vs
# 不同速度下的制动距离
d2 = array([3.15,7.08,12.59,19.68,28.34,38.57,50.4,
63.75,78.71,95.22,113.29,132.93,154.12,176.87])
# 视距=反应距离+制动距离+安全距离
d = d1 + d2 + 10
# 第二步:以1为单位,对采样区间内所有速度进行插值,计算出相应的停车视距。
vnew = arange(20,151,1)
f = interp1d(v, d, kind='cubic')
dnew = f(vnew)
# 第三步:求出停车视距120所对应的速度。
x=abs(dnew-120)
# 通过索引,找到对应的速度
# argsort()是将X中的元素从小到大排序后提取对应的索引,索引为0的元素即为x的最小值
v1 = vnew[argsort(x)[0]]
print('驾驶时的有效视距为120m时,时速最高不能超过{}km/h'.format(v1))
# 第四步:绘图展示
plt.plot(vnew,dnew,'-',v1,f(v1),'o')
plt.xlabel('v')
plt.ylabel('d')
plt.show()
由上图可知:
停车视距的增长随着车速的增加呈非线性增长。速度越快,要求视线越远
print('可视距在{}m以上时,可以保证125km/h的高速公路是安全的'.format(around(f(125),2)))
plt.plot(vnew,dnew,'-',125,f(125),'o')
plt.xlabel('v')
plt.ylabel('d')
plt.show()
三、甘油的粘度问题
甘油是一种液体,它的粘度是温度的函数,如下表所示:
对表格中数据执行如下操作
(1)使用Lagrange插值法,预计室温为23 ℃时的甘油粘度
(2)使用Newton插值法,预计室温为23 ℃时的甘油粘度
(3)使用分段式线性插值、临近插值和三次样条插值,预计室温为23 ℃时的甘油粘度,并画出温度区间在[0,50]的三种插值图像
(1): Lagrange插值
from scipy