Tharis Escreveu:- Código: Seleccionar Todos
def Fr(d):
M=5.97*10**24
G=6.67*10**-11
R=6.35*10**6
c=200
num=4*R*d-2*c*R+2*c*d-c**2
den=(R+c-d)**2 * (R+d)**2
return G*M*num / den
d=110
v=0
s=0
while d<200:
v+=Fr(d)
d+=v
s+=1
print s,v,d
Em primeiro lugar julgo que devias ter uma variável com o intervalo de tempo com que estas a calcular as sucessivas iterações. Assim tens de trabalhar sempre com um segundo de cada vez o que nem dá uma aproximação muito boa na maior parte dos casos. Por outro lado, sem esse dt, fica mais difícil de se ler em termos de "física".
Analizando o while, estás a procura do momento em que uma massa toca o chão através da outra estar a 200 metros de altura... Um pouco confuso...
Depois, assumindo que a função Fr(x) devolve a força resultante, isto está errado
v+=Fr(d) dado que devia ser v+=aceleração*dt.
E agora vem a parte mais confusa:
- Código: Seleccionar Todos
num=4*R*d-2*c*R+2*c*d-c**2
den=(R+c-d)**2 * (R+d)**2
return G*M*num / den
Sendo

a força sobre a massa que toca no solo,

a força sobre a outra massa, tens que a

em módulo seria


Então a aceleração será

Tentaste igualar ao mesmo denominador ou assim? Isso está algo confuso... Tenta corrigir
