目录
一:基础知识
- 速度公式:
- 微分的思想。将方程的曲线和坐标轴x围成的区域切分成无数个高为值y,宽为
的长方形。
二:内容简介
通过python代码创建自由落体模型。 分析一个简单的数学建模模型,可以为复杂的建模提供思路
三:分析
模型最终要可视化呈现,所以要思考图像最终的展示方法是什么。比如时间-速度图,时间-高度图。无论想要得到什么图像,都要知道任意t时刻,对应的速度或者高度。所以,模型应该以微分的方式,分析任意t以及t+dt时刻的速度或者高度。
我们以高度为例子。以时间为x轴,垂直向上方向为Y轴,地面为坐标原点。分析任意t时刻速度为vt,t0+dt时刻,vt0+dt=vt0+g*dt,可以看到,st0+dt = s t0+ vt0+dt* dt,假设在初始时刻,v0=0和s0=100m,所以任意时刻的s只和dt以及经过dt的次数有关
四:代码思路
1、输入初始条件:
初始高度,初始速度,时间步长,加速度
initial_height = 100,initial_velocity = 0,time_step = 0.01,acceration=9.8
2、在任意时刻:
time += time_step
velocity += acceration * time_step
height -= velocity*time_step
3、将任意时刻高度和时间添加到x轴和y轴,用matplotlib绘图
五:具体代码如下(关注即可复制下载)
如果代码不能复制粘贴,可关注抖音:yibinfuzi,私信免费获取。
def freeDrop(initial_height,initial_velocity,time_step,acceration):
#定义高度和速度和时间
height = initial_height
velocity = initial_velocity
time = 0
#定义时间和高度的list
tlist = [time]
hlist = [height]
#一直下坠,直到高度为0
while height >0:
velocity += acceration * time_step
height -= velocity*time_step
time += time_step
#x轴
tlist.append(time)
#y轴
hlist.append(height)
#如果高度小于0,则把0点打印出来
if height <0:
print("时间梯度time_step精度越高,最后一个点越接近于0:")
print({"height":height,"time":time})
#画图
plt.plot(tlist,hlist)
plt.show()
#time_step越高,则曲线约光滑,精度也越高
freeDrop(100,0,0.0001,9.8)
结果展示:
六:总结
- 对于以时间t为x轴的图像,就要用微分的思想,讨论每一个时刻dt的状态。
- 输入到计算机中的模型,要先了解其底层原理,不是单纯的看公式表面。
- 案例很简单,重点提供一种建模的思路:从推导出公式的底层原理出发,用代码表示出公式。不是单纯的将公式书写为代码形式,进行求解,而是分解公式,把公式。
作者是石油工程专业研究生,方向为.油气工程信息化与智能化技术。正在自学数值模拟和神经网络,欢迎一起交流学习python数值模拟和神经网络相关内容。如代码未能复制粘贴,可关注抖音:yibinfuzi,私信获取代码。