k = 10 ^ 5 N/mの硬いばねで接続された0.1kgの等しい質量の2つの質量があります。ばねの残りの長さ(および2つの質量間の初期距離)はd0=0.15mです。
質量1の初速度(2.77、1.25、0)m / sであり、質量2の初速度(1.25、4、0)m/sです。
空気抵抗を無視して、重力下でのこのシステムの飛行をシミュレートするコードを書きたいと思います。また、システムの重心に3番目の球を配置したいと思います。
これが私がこれまでに書いたものです:
from visual import *
mass1 = sphere(radius = 0.01)
mass2 = sphere(pos = (0.15, 0, 0), radius = 0.01)
COM = sphere(pos = (0.15/2, 0, 0), radius = 0.01)
mass1.m = 0.1
mass2.m = 0.1
k = 1*10**5
mass1.v = vector(2.77, 1.25, 0)
mass2.v = vector(1.25, 4, 0)
mass1.p = mass1.v*mass1.m
mass2.p = mass2.v*mass2.m
dt = 0.0001
t = 0
while 1:
g = 9.8
d = (mass1.pos-mass2.pos)/mag(mass1.pos-mass2.pos)
Ft12 = mass1.m*d*k*0.15
Ft21 = mass2.m*d*k*0.15
Fnet = Ft12 + Ft21
mass1.p += Fnet*dt
mass2.p += Fnet*dt
mass1.vA = 0.5*(mass1.v + (mass1.p/mass1.m))
mass2.vA = 0.5*(mass1.v + (mass2.p/mass2.m))
mass1.pos += mass1.vA*dt
mass2.pos += mass2.vA*dt
COM.pos = (mass1.pos-mass2.pos)/2 + mass1.pos
t += dt
Ft12はボール1からボール2への張力であり、Ft21は2から1です。もちろん、正確な結果が得られればこれを投稿しませんが、簡単に得られる結果すら得られません。観察する。画面がすぐに空白になり、何が起こっているのかを確認する機会がありません。基本的には、このシステムを重力の影響下で「投げる」ことを望みます。この場合、COMの軌道は放物線の軌道になると想像できます。どんな助けでも大歓迎です。部隊が間違っている場合、または場所によっては追加する必要がある場合は、お知らせください。
みんなありがとう!