Ejemplo 2. Estática


In [9]:
from IPython.display import Image,Latex

Por medio de un par de cables se quiere sostener un bloque de peso $W = 200\; kgf$. Determine la tensión en cada cuerda si las coordenadas de posición de los puntos A, B, C son A(0, -20 cm, 40 cm), B(-40 cm, 50 cm, 0cm) y C(45 cm, 40 cm, 0cm), respectivamente. Suponga que no hay fricción entre la rampa y el contrapeso.


In [10]:
Image(filename='FIGURES/Rampa.png',width=250)


---------------------------------------------------------------------------
IOError                                   Traceback (most recent call last)
<ipython-input-10-d21f543cb252> in <module>()
----> 1 Image(filename='FIGURES/Rampa.png',width=250)

/Users/adrianamejia/anaconda/lib/python2.7/site-packages/IPython/core/display.pyc in __init__(self, data, url, filename, format, embed, width, height, retina, unconfined, metadata)
    749         self.unconfined = unconfined
    750         self.metadata = metadata
--> 751         super(Image, self).__init__(data=data, url=url, filename=filename)
    752 
    753         if retina:

/Users/adrianamejia/anaconda/lib/python2.7/site-packages/IPython/core/display.pyc in __init__(self, data, url, filename)
    386         self.filename = None if filename is None else unicode_type(filename)
    387 
--> 388         self.reload()
    389         self._check_data()
    390 

/Users/adrianamejia/anaconda/lib/python2.7/site-packages/IPython/core/display.pyc in reload(self)
    771         """Reload the raw data from file or URL."""
    772         if self.embed:
--> 773             super(Image,self).reload()
    774             if self.retina:
    775                 self._retina_shape()

/Users/adrianamejia/anaconda/lib/python2.7/site-packages/IPython/core/display.pyc in reload(self)
    404         """Reload the raw data from file or URL."""
    405         if self.filename is not None:
--> 406             with open(self.filename, self._read_flags) as f:
    407                 self.data = f.read()
    408         elif self.url is not None:

IOError: [Errno 2] No such file or directory: u'FIGURES/Rampa.png'

Si llamamos $\vec{T_{B}}$ y $\vec{T_{C}}$ la tensión en el cable AB y AC (incógnitas) respectivamente, $\vec{W}$ el peso del elemento y $\vec{N}$ el vector normal al plano de la rampa, y hacemos equilibro sobre el bloque, se tiene:

$$ \begin{align} &\sum \; F_{X} = T_{BX} + T_{CX} = 0\\ &\sum \; F_{Y} = - W + T_{BY} + T_{CY} + N_{Y} = 0\\ &\sum \; F_{Z} = T_{BZ} + T_{CZ} + N_{Z} = 0 \end{align}$$

Por otro lado, los vectores de tensión pueden ser escritos como:

$\vec{T} = T \; \hat{n} $ , donde $\hat{n}$ es un vector director unitario.

De esta forma para la tensión en el cable AB:

$\vec{T_B} = T_B \; \hat{n_B} = T_B \;\frac{\vec{R_{AB}}}{MR_{AB}} $


In [ ]:
from numpy import array, sqrt, cross, dot, arctan, cos, sin
from scipy.linalg import inv

In [ ]:
R_AB = [-40., 70., -40.]
MR_AB = sqrt(dot (R_AB,R_AB))
nB = R_AB / MR_AB
print 'Magnitud =', MR_AB, ',', 'nB =', nB.round(2)

y para el cable AC:

$\vec{T_C} = T_C \; \hat{n_C} = T_C \;\frac{\vec{R_{AC}}}{MR_{AC}} $


In [ ]:
R_AC = [45., 60., -40.]
MR_AC = sqrt(dot (R_AC,R_AC))
nC = R_AC / MR_AC
print 'Magnitud =', MR_AC, ',', 'nC =', nC.round(2)

In [ ]:

Por analogía, la fuerza normal prodría N podría ser escrita como:

$\vec{N} = N \; \hat{n_p} $,

donde las componentes de $\hat{n_p} $ son determinadas por la inclinación de la rampa. De esta forma.


In [ ]:
Np = [0.0, cos(arctan(40./80.)),sin(arctan(40./80.))]

Lo que queda ahora es resolver el sistema de ecuaciones de equilibrio. Para ello lo escribimos de la forma:

$$AX = B$$

In [ ]:
A = array([[nB[0], nC[0], Np[0]], 
           [nB[1],nC[1], Np[1]],
           [nB[2], nC[2], Np[2]]])

B = [0.0, 200., 0]
print 'A=', A.round(2)
print 
print 'B=', B

In [ ]:

Resolviendo el sistema


In [ ]:
X = dot(inv(A),B)
print '[TB, TC, N]=', X.round(2)

Nota. Problema tomado de Mecánica Vectorial para Ingenieros. Estatica. Sexta Edición. Beer Ferninand; Johnston, Russell.


In [ ]:
from IPython.core.display import HTML
def css_styling():
    styles = open('./custom_barba.css', 'r').read()
    return HTML(styles)
css_styling()