用python进行碰撞动力学仿真

本文介绍了使用Python进行碰撞动力学仿真的过程,包括两球碰撞的数学模型、解题思路、程序编写以及不同碰撞类型(弹性与非弹性)的讨论。通过数值积分模拟两球在二维空间的运动轨迹,并通过动画展示碰撞效果。
摘要由CSDN通过智能技术生成

用python进行碰撞动力学仿真

问题阐述

A,B两球在同一平面里,A球有一初速度,B球无初速度,一段时间后两球发生碰撞。
两球碰撞时接触力模型假设:
在这里插入图片描述
在这里插入图片描述
数值仿真:
在这里插入图片描述
(R为两球的半径,mA为A球质量,mB为B球质量,rA0为A球的初始位置,VA0为A球的初始速度,rB0为B球的初始位置,VB0为B球的初始速度。)

解题过程

解题思路

(1)两球之间的的距离r可以根据勾股定理求得。
(2)①当r>=2R时,两者间无作用力,各自的位置等于ri+v(i+1)dt。②当r<2R时,可以根据公式计算出它们间的作用力Fi,对于A为Fi,对于B为-Fi。根 据动量定理可得v(i+1)=Fidt/m+vi,r(i+1)=ri+v(i+1)*dt。
(3)作图。

程序编写

运用改进欧拉法来进行数值积分。
首先引入库。

from numpy import*
import matplotlib.pyplot as plt #引入库

参数初始化。

R = 0.02
ma = 0.1
mb = 0.1
k = 20000
df = 1.0
time = 0.1
dt = 0.0001 #设置数值

n = int(time/dt)
t = zeros(n,float)
ra = zeros((n,2),float)
rb = zeros((n,2),float)
va = zeros((n,2),float)
vb = zeros((n,2),float)
f = zeros((n,2),float)  #设置数值

ra[0] = array([0.0,0.0])
rb[0] = array([0.08,0.018])
va[0] = array([1.0,0.0])
vb[0] = array([0.0,0.0])  #初始化

因为是二维的,所以用向量来进行计算。
进行数值积分。

for i in range(n-1):
    dr = sqrt((ra[i][0] - rb[i][0])**2+(ra[i][1]-rb[i][1])**2)
    if dr >= 2*R:
        f[i] = 0 
        va[i+1] = va[i]
        vb[i+1<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值