У нас есть две массы одинаковой массы 0,1 кг, соединенные жесткой пружиной с k = 10 ^ 5 Н / м.Длина покоя пружины (и начальное расстояние между двумя массами) составляет d0 = 0,15 м
Масса 1 имеет начальную скорость (2,77, 1,25, 0) м / с, а масса 2 имеет начальную скорость (1,25)., 4, 0) м / с.
Я хочу написать код, который имитирует полет этой системы под действием силы тяжести, игнорируя сопротивление воздуха.Я также хочу поместить третью сферу, расположенную в центре масс системы.
Вот что я написал до сих пор:
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. Конечно, я бы не стал публиковать это, если бы получал точные результаты, но я даже не получаю результаты, которые я могу легко наблюдать.Экран очень быстро гаснет, и у меня нет шансов увидеть, что происходит.Я в основном хочу, чтобы эту систему «бросили» под действием силы тяжести, в которой вы можете себе представить, что траектория СОМ будет траекторией параболы.Любая помощь будет оценена.Если я неправильно понял силы или мне нужно добавить их в некоторых местах, пожалуйста, дайте мне знать!
Спасибо всем!