如何使用python实现自由落体运动建模/数值模拟(含代码)

目录

一:基础知识

二:内容简介

三:分析

四:代码思路

五:具体代码如下(关注即可复制下载)

六:总结


一:基础知识

  1. 速度公式:v_{0}=v_{0}+g*t
  2. 微分的思想。将方程的曲线和坐标轴x围成的区域切分成无数个高为值y,宽为d_{t}的长方形。

二:内容简介

        通过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)
        结果展示:

六:总结

  1. 对于以时间t为x轴的图像,就要用微分的思想,讨论每一个时刻dt的状态。
  2. 输入到计算机中的模型,要先了解其底层原理,不是单纯的看公式表面。
  3. 案例很简单,重点提供一种建模的思路:从推导出公式的底层原理出发,用代码表示出公式。不是单纯的将公式书写为代码形式,进行求解,而是分解公式,把公式。

作者是石油工程专业研究生,方向为.油气工程信息化与智能化技术。正在自学数值模拟和神经网络,欢迎一起交流学习python数值模拟和神经网络相关内容。如代码未能复制粘贴,可关注抖音:yibinfuzi,私信获取代码。

  • 33
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值