
Sim, está correcto.
Como usei uma notação diferente, ao converter da minha para a tua notação troquei duas letras!

Como usei uma notação diferente, ao converter da minha para a tua notação troquei duas letras!

jap Escreveu:Não é giro como uma situação tão simples pode originar comportamentos físicos tão diversos?
a) Partindo do repouso
Enter mu1 and mu2: 0.5,0.2
x1= 1.86602540378 x2= 0.373205080757
vm= 1.85863017904 vp= -4.66441545705
g= 9.8 u= 5.0
Press 'Return' to proceed.
t a v vm vp
0.00 1.58982 0.00000 1.85863 -4.66442
2.00 0.28414 1.48159 1.85863 -4.66442
4.00 0.06242 1.77300 1.85863 -4.66442
6.00 0.01444 1.83867 1.85863 -4.66442
8.00 0.00338 1.85395 1.85863 -4.66442
10.00 0.00079 1.85753 1.85863 -4.66442
12.00 0.00019 1.85837 1.85863 -4.66442
14.00 0.00004 1.85857 1.85863 -4.66442
16.00 0.00001 1.85862 1.85863 -4.66442
18.00 0.00000 1.85863 1.85863 -4.66442
20.00 0.00000 1.85863 1.85863 -4.66442
22.00 0.00000 1.85863 1.85863 -4.66442
24.00 0.00000 1.85863 1.85863 -4.66442
26.00 0.00000 1.85863 1.85863 -4.66442
28.00 0.00000 1.85863 1.85863 -4.66442
30.00 0.00000 1.85863 1.85863 -4.66442
32.00 0.00000 1.85863 1.85863 -4.66442
34.00 0.00000 1.85863 1.85863 -4.66442
36.00 0.00000 1.85863 1.85863 -4.66442
38.00 0.00000 1.85863 1.85863 -4.66442
40.00 0.00000 1.85863 1.85863 -4.66442
42.00 0.00000 1.85863 1.85863 -4.66442
44.00 0.00000 1.85863 1.85863 -4.66442
46.00 0.00000 1.85863 1.85863 -4.66442
48.00 0.00000 1.85863 1.85863 -4.66442
50.00 0.00000 1.85863 1.85863 -4.66442
52.00 0.00000 1.85863 1.85863 -4.66442
54.00 0.00000 1.85863 1.85863 -4.66442
56.00 0.00000 1.85863 1.85863 -4.66442
58.00 0.00000 1.85863 1.85863 -4.66442
60.00 0.00000 1.85863 1.85863 -4.66442
Enter mu1 and mu2: 0.5,0.2
x1= 1.86602540378 x2= 0.373205080757
vm= 1.85863017904 vp= -4.66441545705
g= 9.8 u= 5.0
Press 'Return' to proceed.
t a v vm vp
0.00 -2.12027 10.00000 1.85863 -4.66442
2.00 -1.72161 6.08610 1.85863 -4.66442
4.00 -0.91227 3.40973 1.85863 -4.66442
6.00 -0.29134 2.28424 1.85863 -4.66442
8.00 -0.07418 1.96273 1.85863 -4.66442
10.00 -0.01777 1.88332 1.85863 -4.66442
12.00 -0.00419 1.86444 1.85863 -4.66442
14.00 -0.00099 1.86000 1.85863 -4.66442
16.00 -0.00023 1.85895 1.85863 -4.66442
18.00 -0.00005 1.85871 1.85863 -4.66442
20.00 -0.00001 1.85865 1.85863 -4.66442
22.00 -0.00000 1.85863 1.85863 -4.66442
24.00 -0.00000 1.85863 1.85863 -4.66442
26.00 -0.00000 1.85863 1.85863 -4.66442
28.00 -0.00000 1.85863 1.85863 -4.66442
30.00 -0.00000 1.85863 1.85863 -4.66442
32.00 -0.00000 1.85863 1.85863 -4.66442
34.00 -0.00000 1.85863 1.85863 -4.66442
36.00 -0.00000 1.85863 1.85863 -4.66442
38.00 -0.00000 1.85863 1.85863 -4.66442
40.00 -0.00000 1.85863 1.85863 -4.66442
42.00 -0.00000 1.85863 1.85863 -4.66442
44.00 -0.00000 1.85863 1.85863 -4.66442
46.00 -0.00000 1.85863 1.85863 -4.66442
48.00 -0.00000 1.85863 1.85863 -4.66442
50.00 -0.00000 1.85863 1.85863 -4.66442
52.00 -0.00000 1.85863 1.85863 -4.66442
54.00 -0.00000 1.85863 1.85863 -4.66442
56.00 -0.00000 1.85863 1.85863 -4.66442
58.00 -0.00000 1.85863 1.85863 -4.66442
60.00 -0.00000 1.85863 1.85863 -4.66442
from math import *
alpha = pi/12.
u = 5.
g = 9.8
def vpm(u,x1,x2):
delta = x1**2 + x2**2 -1
if delta < 0:
return None,None
else:
vp = u*(x1*x2+sqrt(delta))/(1-x1**2)
vm = u*(x1*x2-sqrt(delta))/(1-x1**2)
return vp,vm
if __name__ == "__main__":
t = 0
dt = 0.01
tend = 60.
v = 0.
mu1, mu2 = input("Enter mu1 and mu2: ")
x1 = mu1/tan(alpha)
x2 = mu1*mu2/tan(alpha)
print "x1=",x1,"x2=",x2
vp,vm = vpm(u,x1,x2)
print "vm=", vm,"vp=",vp
print "g=",g,"u=",u
x = raw_input("Press 'Return' to proceed.")
n = 0
print " t a v vm vp"
while t < tend:
a = g*sin(alpha)*(1-(x1*v+x2*u)/sqrt(v**2 + u**2))
if not(n %200):print "%10.2f %10.5f %10.5f %10.5f %10.5f" % (t,a,v,vm,vp)
v += a*dt
n += 1
t += dt
jap Escreveu:(...) (aposto que o Henrique pode partilhar também um código semelhante... em C!)
#include <stdio>
#include <math>
int main(void)
{
float alpha, sin_a, cos_a, mu1, mu2, u, u2, g, dt, t_f, t, v, dv;
int n;
printf("mu1,mu2: "); scanf("%f,%f", &mu1, &mu2);
alpha = 0.261799; sin_a = sin(alpha); cos_a = cos(alpha);
u = 5; u2 = 25;
g = 9.81;
dt = 0.01; t_f = 60;
v = 0;
printf("\n t a v\n");
for(t = 0, n = 0; t <= t_f; t += dt, n++)
{
dv = g*sin_a - g*cos_a*mu1*(v + mu2*u) / sqrt(pow(v, 2) + u2);
v += dv * dt;
if(!(n % 200)) printf("%f %f %f\n", t, dv, v);
}
return 0;
}