Lab-I/urti.py

116 lines
2.6 KiB
Python
Raw Normal View History

2016-06-19 20:37:57 +02:00
# coding: utf-8
from __future__ import division
from lab import *
import numpy as np
# helpers
length = lambda x: x/100
mass = lambda x: x/1000
# constants
m = mass(260.04) # cart mass (kg)
g = 9.80665 # acceleration due to gravity
##
## Collisions
##
# 3xmagnet, 2xrubber bumper, 2xputty
I = [0.23, 0.28, 0.36, 0.21, 0.27, 0.11, 0.15] # force impulse
# cart velocity before-after colliding
v = [ (0.46,-0.44), (0.55,-0.54), (0.70,-0.71) # elastic
, (0.52,-0.29), (0.68,-0.35) # partially anelastic
, (0.41, 0.00), (0.59, 0.00) # anelastic
]
for i,_ in enumerate(I):
K0, K1 = 1/2*m*v[i][0]**2, 1/2*m*v[i][1] # kinetic energy
p0, p1 = m*v[i][0], m*v[i][1] # momentuum
dp = round(p1-p0, 3)
dk = round(K1-K0, 3)
print '''
urto {}:
Δp={:.3f}, I={}, ΔK={:.2f} {:.2f}%
'''.format(i+1, dp, I[i], dk, abs((dp+I[i])/dp*100))
##
## Springs
##
x0 = 0.8675 # spring at rest offset
# force impulse
I = [ 0.32, 0.26, 0.35, 0.21, 0.34 # spring A
, 0.42, 0.47, 0.50, 0.45, 0.68 # spring B
]
# cart velocity before-after colliding
v = [ (0.61,-0.58), (0.51,-0.48), (0.66,-0.66), (0.41,-0.38), (0.67,-0.63) # spring A
, (0.81,-0.77), (0.89,-0.87), (0.94,-0.93), (0.85,-0.83), (1.32,-1.26) # spring B
]
# maximum position reached (spring compressed)
x = [ 0.888, 0.885, 0.890, 0.882, 0.887 # spring A
, 0.881, 0.884, 0.885, 0.885, 0.888 # spring B
]
# maximum force
F = [ 5.55, 4.58, 6.29, 3.66, 6.10 # spring A
, 18.61, 20.97, 22.25, 19.17, 31.25 # spring B
]
ka = []
kb = []
for i,_ in enumerate(I):
k = F[i]/(x[i]-x0) # spring elastic constant
Ep = 1/2*k*(x[i] -x0)**2 # theoretical value (assuming ΔEm=0)
K0, K1 = 1/2*m*v[i][0]**2, 1/2*m*v[i][1] # kinetic energy
p0, p1 = m*v[i][0], m*v[i][1] # momentuum
dp = round(p1-p0, 3)
dk = round(K1-K0, 3)
dEm = round(K0-Ep, 3)
if i<5:
ka.append(k)
else:
kb.append(k)
print '''
urto {}:
Δp={:.3f}, I={:.2f}, ΔK={:.2f} {:.2f}%
k_{}={:.3f}, ΔΕm={:.3f}
'''.format(i+1, dp, I[i], dk, abs((dp+I[i])/dp*100),('a' if i<5 else 'b'), k, dEm)
##
## Attrito
##
## cart
# a=0 => μ=tanθ=h/l
mu_s = length(11.5)/length(128.7)
# a=g(sinθ-μcosθ)
a = sample(1.54,1.54,1.50,1.48,1.54,1.53)
h, l = length(52.0), length(117.1)
mu_d = (h/l) - (a.mean/g)*np.sqrt(1+(h/l)**2)
print 'μs={:.2f} μd={:.2f}'.format(mu_s, mu_d)
## teflon block
# a=0 => μ=tanθ=h/l
mu_s = length(19.8)/length(127.0)
# a=g(sinθ-μcosθ)
a = sample(0.67,0.79,0.76,0.75,0.78,0.73)
h, l = length(34.1), length(125.5)
mu_d = (h/l) - (a.mean/g)*np.sqrt(1+(h/l)**2)
print 'μs={:.2f} μd={:.2f}'.format(mu_s, mu_d)