ó
¡¼™\c           @   s…   d  d l  j j j Z d  d l m Z m Z m Z m Z m	 Z	 d  d l
 m Z d  d l m Z d „  Z d „  Z d „  Z d „  Z d S(	   iÿÿÿÿN(   t   cost   sint   Matrixt   symbolst   zeros(   t   simplify(   t   dynamicsymbolsc          C   s¡  t  d ƒ \ }  } } t  d ƒ } t d ƒ \ } } } t j d ƒ } t | g g ƒ } t |  | | | g g ƒ }	 t | | j ƒ t d g ƒ k sž t ‚ t |	 | j ƒ t d g ƒ k sÆ t ‚ t j d t	 ƒ }
 t | g g ƒ } t |  | | | | | g g ƒ } t | |
 j ƒ t d g ƒ k s9t ‚ t | |
 j ƒ t d g ƒ k sat ‚ t j d t	 t	 ƒ } t | g g ƒ } t |  | | | | | | g g ƒ } t | | j ƒ t d g ƒ k sÛt ‚ t | | j ƒ t d g ƒ k st ‚ t j d t
 t	 ƒ } t | g g ƒ } t |  | | | | g g ƒ } t | | j ƒ t d g ƒ k sut ‚ t | | j ƒ t d g ƒ k st ‚ d  S(   Ns   c0 k0 m0t   gs   v0 x0 f0i   i    (   R   R   t   modelst   multi_mass_spring_damperR   R   t   mass_matrixt   AssertionErrort   forcingt   Truet   False(   t   c0t   k0t   m0R   t   v0t   x0t   f0t   kane1t   massmatrix1t   forcing1t   kane2t   massmatrix2t   forcing2t   kane3t   massmatrix3t   forcing3t   kane4t   massmatrix4t   forcing4(    (    sH   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_models.pyt$   test_multi_mass_spring_damper_inputs   s.    (('((+((#(c          C   sd  t  d ƒ \ }  } } t  d ƒ \ } } } t  d ƒ \ } } } t d ƒ \ }	 }
 t d ƒ \ } } t d ƒ \ } } t j d ƒ } t | | | | | | g | | | | | g | | | g g ƒ } t |  |	 | |
 g | | | | g | | | | g g ƒ } t | | j ƒ t d ƒ k s2t ‚ t | | j	 ƒ t d d d g ƒ k s`t ‚ d  S(	   Ns   c0 k0 m0s   c1 k1 m1s   c2 k2 m2s   v0 x0s   v1 x1s   v2 x2i   i    (
   R   R   R   R	   R   R   R
   R   R   R   (   R   R   R   t   c1t   k1t   m1t   c2t   k2t   m2R   R   t   v1t   x1t   v2t   x2R   R   R   (    (    sH   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_models.pyt*   test_multi_mass_spring_damper_higher_order&   s    %c          C   s  t  d ƒ \ }  } t  d ƒ } t  d ƒ } t d ƒ \ } } } } t d ƒ \ } }	 t j d ƒ }
 t | | |  | t | ƒ g |  | t | ƒ |  d | g g ƒ } t |  | |	 d t | ƒ | g | |  | t | ƒ g g ƒ } t | |
 j ƒ t	 d ƒ k st
 ‚ t | |
 j ƒ t d d g ƒ k s@t
 ‚ t j d t ƒ } t | | |  | t | ƒ g |  | t | ƒ |  d | g g ƒ } t |  | |	 d t | ƒ g | |  | t | ƒ g g ƒ } t | | j ƒ t	 d ƒ k s t
 ‚ t | | j ƒ t d d g ƒ k s+t
 ‚ t j d t t ƒ } t | | |  | t | ƒ g |  | t | ƒ |  d | g g ƒ } t |  | |	 d t | ƒ g | |  | t | ƒ | g g ƒ } t | | j ƒ t	 d ƒ k sòt
 ‚ t | | j ƒ t d d g ƒ k st
 ‚ t j d t t ƒ } t | | |  | t | ƒ g |  | t | ƒ |  d | g g ƒ } t |  | |	 d t | ƒ | g | |  | t | ƒ g g ƒ } t | | j ƒ t	 d ƒ k sät
 ‚ t | | j ƒ t d d g ƒ k st
 ‚ d  S(	   Ns   l0 m0R$   R   s
   q0 q1 F T1s   u0 u1i   i   i    (   R   R   R   t   n_link_pendulum_on_cartR   R    R   R   R
   R   R   R   R   R   (   t   l0R   R$   R   t   q0t   q1t   Ft   T1t   u0t   u1R   R   R   R   R   R   R   R   R   R   R   R    (    (    sH   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_models.pyt#   test_n_link_pendulum_on_cart_inputs9   s:    )E%+)A%+)E%+)E%c       	   C   s  t  d ƒ \ }  } t  d ƒ \ } } t  d ƒ } t  d ƒ } t d ƒ \ } } } t d ƒ \ }	 }
 } t d ƒ \ } } t j d ƒ } t | | | |  | t | ƒ |  | t | ƒ | | t | ƒ g |  | t | ƒ |  | t | ƒ |  d | |  d | |  | | t | ƒ t | ƒ t | ƒ t | ƒ g | | t | ƒ |  | | t | ƒ t | ƒ t | ƒ t | ƒ | d | g g ƒ } t |  | |
 d t | ƒ |  | |
 d t | ƒ | | | d t | ƒ | g | |  | t | ƒ | |  | t | ƒ |  | | t | ƒ t | ƒ t | ƒ t | ƒ | d g | | | t | ƒ |  | | t | ƒ t | ƒ t | ƒ t | ƒ |
 d g g ƒ } t | | j ƒ t	 d	 ƒ k sàt
 ‚ t | | j ƒ t d
 d
 d
 g ƒ k st
 ‚ d  S(   Ns   l0 m0s   l1 m1R'   R   s   q0 q1 q2s   u0 u1 u2s   F T1i   i   i    (   R   R   R   R-   R   R    R   R   R
   R   R   R   (   R.   R   t   l1R$   R'   R   R/   R0   t   q2R3   R4   t   u2R1   R2   R   R   R   (    (    sH   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_models.pyt)   test_n_link_pendulum_on_cart_higher_order]   s.    2;63U+?I%(   t   sympy.physics.mechanics.modelst   physicst	   mechanicsR   t   sympy.core.backendR    R   R   R   R   t   sympyR   t   sympy.physics.mechanicsR   R!   R,   R5   R9   (    (    (    sH   lib/python2.7/site-packages/sympy/physics/mechanics/tests/test_models.pyt   <module>   s   (			$