
    sg(                        d dl mZmZmZmZmZmZmZmZ d dl	m
Z
mZmZmZ d dl	mZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZmZ  ed      \  ZZZ Z!Z" ed      Z#e#jI                  dd	ee#jJ                  g      Z&e&jI                  d
d	ee&jN                  g      Z(e(jI                  dd	e e(jR                  g      Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5y)    )sincostanpisymbolsMatrixSFunction)ParticlePointReferenceFrame	RigidBody)	angular_momentumdynamicsymbolskinetic_energylinear_momentumouterpotential_energymsubsfind_dynamicsymbols
Lagrangian)center_of_mass_validate_coordinates_parse_linear_solver)raiseswarns_deprecated_sympyzq1 q2 q3 q4 q5NAAxisBCc                     t        d      t        d      } | j                  dj                  z         t	        j
                  j
                        }t        d| d|| f      t        d      }t        d|d      j                  j                  d	j
                  z         t        t        fd
       t        t        fd       t              d	j
                  z  dj                  z  z   k(  sJ y )Nr   Ac   r      PPa   
   c                      t                S Nr   r   r'   s   _/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/mechanics/tests/test_functions.py<lambda>z&test_linear_momentum.<locals>.<lambda>       oaB7     c                      t                S r+   r,   r   r'   s   r.   r/   z&test_linear_momentum.<locals>.<lambda>   r0   r1   i  )r   r   set_velyr   xr   r   pointr   	TypeErrorr   )r#   Ir&   r   r   r'   s      @@@r.   test_linear_momentumr:      s    sA	tBJJq"qss(acc133A#r1b1b'*Ac
A	$1	BHHQQSS!
978
9781a$QSS39(<<<<r1   c                    	
 t        d      \  } }}}t        d      }t        d      
t        d      }t        d      j	                  d|
j
                  z        }|j	                  d|
j
                  z        }j                  
d
j
                  z         |j                  
|
j                  z         |j                  
|       |j                  
|       t        d	||       t        d
||||t        
j                  
j                        z  |f      	d| z  |z  |z  
j                  z  ||z  |z  
j                  z  z   }t        
	      |k(  sJ t        t         	
fd       t        t         	fd       t        t         
fd       |||dz  z  z   d| z  |dz  z  z   |z  
j                  z  }t#        
	      |k(  sJ y)a   A rod with length 2l, centroidal inertia I, and mass M along with a
    particle of mass m fixed to the end of the rod rotate with an angular rate
    of omega about point O which is fixed to the non-particle end of the rod.
    The rod's reference frame is A and the inertial frame is N.z
m, M, l, Iomegar   aOr#   r&   r   r'   r      c                       t               S r+   r   )r   r   r'   s   r.   r/   z;test_angular_momentum_and_linear_momentum.<locals>.<lambda>7       .q!Q; r1   c                       t               S r+   rA   )r   r>   r'   s   r.   r/   z;test_angular_momentum_and_linear_momentum.<locals>.<lambda>8   rB   r1   c                       t               S r+   rA   )r   r>   r'   s   r.   r/   z;test_angular_momentum_and_linear_momentum.<locals>.<lambda>9   rB   r1      N)r   r   r   r   	locatenewr6   r4   set_ang_velzv2pt_theoryr   r   r   r5   r   r   r8   r   )mMlr9   r<   r=   r#   r&   expectedr   r   r>   r'   s            @@@@r.   )test_angular_momentum_and_linear_momentumrN   #   s   
 &JAq!Q7#EsAsAc
A	
T1qss7	#B
S!acc'"AIIaQSSMM!UQSS[!NN1aMM!Q	$1	B#r1a!eACCo"5r!:;A1uu}q 133&Q)<<H1a$000
9;<
9;<
9;<A1Hq1uq!t|+u4qss:HAq!R(H444r1   c                  *  	
 t        d      \  } }}t        d      }t        d      
t        d      }|j	                  
d
j
                  z         |j                  d|
j
                  z        }|j                  d|
j
                  z        }t        d      }|j                  
|
j                  z         |j                  |
|       |j                  |
|       t        d	||       t        
j                  
j                        }t        d
|||||f      	t        t        	fd       t        t        	
fd       dt        
	      ||dz  z  |dz  z  dz  d|dz  z  | z  |dz  z  z   |dz  dz  z   z
  j!                         k(  sJ y )Nzm M l1r<   r   r>   r   r#   r&   r=   r'   r   c                      t               S r+   r   r-   s   r.   r/   z%test_kinetic_energy.<locals>.<lambda>M   s    nRQ7 r1   c                      t               S r+   rQ   )r   r   s   r.   r/   z%test_kinetic_energy.<locals>.<lambda>N   s    nQ15 r1   r?   )r   r   r   r   r4   r6   rF   rG   rH   rI   r   r   r   r   r8   r   expand)rJ   rK   l1r<   r>   r#   r&   r=   r9   r   r   r'   s            @@@r.   test_kinetic_energyrU   >   sq   x HAq"7#EsAc
AIIaQSS	
T28	$B
S"qss(#AsAMM!UQSS[!NN1aMM!Q	$1	Bacc133A#r1a!R)A
978
9562q)Qr1uWUAX-=a-?Agaiq .!#(!8A:.. /069 9 9r1   c                     t        d      \  } }}}}}t        d      }t        d      }t        d      }|j	                  |d|j
                  z         |j                  d||j
                  z        }	|	j                  d||j
                  z        }
t        d      }|j                  |||j                  z         |	j                  |||       |
j                  |||       t        d	|
|       }t        |j                  |j                        }t        d
|	||||	f      }| |z  |z  |_        ||z  |z  |_        t        ||      | |z  |z  ||z  |z  z   k(  sJ y )Nzm M l1 g h Hr<   r   r>   r   r#   r&   r=   r'   r   )r   r   r   r   r4   r6   rF   rG   rH   rI   r   r   r   r   )rJ   rK   rT   ghHr<   r   r>   r#   r&   r=   r'   r9   r   s                  r.   test_potential_energyrZ   S   s=   /Aq"aA7#EsAc
AIIaQSS	
T28	$B
S"qss(#AsAMM!UQSS[!NN1aMM!Q	$1	Bacc133A#r1a!R)Aa%!)BQAAr"a!eai!a%!)&;;;;r1   c                    	
 t        d      \  } }}}t        d      
t        d      }|j                  
d
j                  z         |j                  dd
j                  z        }|j                  
d
j                  z         t        d|d      |j                  d	d

j                  z        }|j                  
d
j                  z         t        d      }|j                  
d
j                  z         t        
j                  
j                        }t        d||d||f      	||z  |z  _        | |z  |z  	_        t        t        	fd       t        t        
fd       y )NzM m g hr   r>   r   r&   r(   r)   r'   r#   r?      r=   r   r%   c                      t                S r+   r   r-   s   r.   r/   z!test_Lagrangian.<locals>.<lambda>w       jAr2 r1   c                      t                S r+   r^   r3   s   r.   r/   z!test_Lagrangian.<locals>.<lambda>x   r_   r1   )r   r   r   r4   r6   rF   r   r5   rG   rH   r   r   r   r   r8   )rK   rJ   rW   rX   r>   r&   r#   r=   r9   r   r   r'   s            @@@r.   test_Lagrangianra   g   s'   #JAq!QsAc
AIIaQSS	CQSS!AIIaacc	$1	B	
T1qss7	#BJJq!acc'sAMM!R!##Xacc133A#r1b1b'*Aa%!)BQA
923
923r1   c            	         t        d      \  } }t        d      \  }}}t        | |z  |z   ||j                         z  |z   g|j                         j                         |t	        |j                               z   gg      }t        | |z   |g|j                         j                         dgg      }|d|d|j                         d|j                         di}t        ||      |k(  sJ t        ||z         t        ||z         z  ||j                         z  z   }|d|t        dz  |j                         di}t        ||d      |dz   k(  sJ t        d      }||j                  z  ||j                  z  z   }	||j                  |j                  z  z  ||j                  |j                  z  z  z   }
d|j                  z  }d|j                  |j                  z  z  }|d|di}t        |	|      |k(  sJ t        |
|      |k(  sJ y )	Na, bx, y, zr(   r   r?   T)smartr   )r   r   r   diffr   r   r   r   r   r   r6   r5   )r=   br6   r5   rH   exprsolsdr   vdv_sold_sols                r.   
test_msubsro   {   s   6?DAqY'GAq!AaC!GQqvvxZ!^,FFHMMOQQVVX%679 :D
1q5!*668==?A&( )C
Q1affh1668Q	/Br?c!!!q1u:c!a%j 1QVVX:-D
Q2a41	%Br&!a%///sA	!##!##A	133qss7aQSSk!AaccEEqss133wKE
Q1BB<5   B<5   r1   c            	      0   t        d      \  } }t        d      \  }}}t        | |z  |z   ||j                         z  |z   g|j                         j                         |t	        |j                               z   gg      }||j                         ||j                         j                         ||j                         h}t        |      |k(  sJ |||g}|j                         |j                         j                         |j                         h}t        ||      |k(  sJ t        d      \  }}	}
t        d      }||j                  z  |	|j                  z  z   |
|j                  z  z   ||	|
h}t        |      |k(  sJ t        t        fd       y )Nrc   rd   )excludezd, e, fr   )reference_framec                      t               S r+   )r   )rk   s   r.   r/   z*test_find_dynamicsymbols.<locals>.<lambda>   s    215 r1   )r   r   r   rf   r   r   r   r6   r5   rH   r   
ValueError)r=   rg   r6   r5   rH   rh   ri   exclude_listrl   efr   rk   s               @r.   test_find_dynamicsymbolsrx      s^   6?DAqY'GAq!AaC!GQqvvxZ!^,FFHMMOQQVVX%679 :D affh1668==?Aqvvx
8Ct$+++q!9L668QVVX]]_affh
/Ct\:cAAAY'GAq!sA	ACC!acc'AG#Aa)Cq!4;;;
:56r1   c                     t        d      } t        dd      }t        dt        d      t        j
                        }t        dt        d      t	        d	            }t        d
t        d      t	        d            }t        dt        d      |      }t        d      }t        d      }t        d      }t        d|||t        |j                  |j                        |f      }	|j                  j                  |j                  | j                         |j                  j                  |j                  | j                  | j                  z          |j                  j                  |j                  | j                         |	j                  j                  |j                  | j                  | j                  z          t        d      }
|
j                  |j                  t        |j                  |||||	             d||z   dz   z  | j                  z  ||z   dz   ||z   dz   z  | j                  z  z   |||z   dz   z  | j                  z  z   }|
j                  |j                        |z
  dk(  sJ y )Nr=   rJ   T)realp1p1_ptp2p2_ptr?   p3p3_pt   p4p4_ptb_fb_cmmbrg   or\      r   )r   r   r   r   r	   Oner   r   r6   r7   set_posr5   
masscenterrH   r   pos_from)r=   rJ   r{   r}   r   r   r   r   r   rg   point_orh   s               r.   test_center_of_massr      s   sA$A	$g	.B	$g!	-B	$g!	-B	$g	*B

C=D	B#tS"uSUUCEE':D&ABAHHRXXqss#HHRXXqssQSSy)HHRXXqss#LL1339-#JGOOBHHnRXXr2r2qIJa"fqj>!##R!a"fqj 9!## ==AFQJPQPSPS@SSDBHH%d*a///r1   c                  L   	
 t        d      \	  
t        d      \  t        g
gg       t        g       t        g
g       t        
g       t        g
gd       t        t        
fd       t        g
gd       t        t        
fd       t        t        fd	       t        g
gd
g
       t        t        
fd       t        t        
fd       t        t        
fd       t        z   gd       t        t        fd       t        gd
gd       t        t        
fd       t        z   z   gd
gd       t        t        
fd       t        gd       t        t        fd       t         j
                  	t        d       t        dt              \  t                        gd       t        t         fd       t        t         fd        t         _        t                        g       t        t        	fd       	t         _        y )Nzq1:4 u1:4 ua1:4zs1:4u_auxiliaryspeedsFcheck_duplicatesc                  (    t         gg      S r+   r   )q1q2u1u2u3s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   s    4	Rr2rl $ r1   c                  ,    t         ggd      S NTr   r   )r   r   q3r   r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>        4	Rr2rlT ; r1   c                  ,    t         g gd      S r   r   )r   r   r   r   r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   r   r1   )r   r   c                  2    t         ggg      S Nr   r   r   r   r   r   r   r   ua2ua3s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   '    4	Rr2rlS# @ r1   c                  2    t         gg g      S r   r   r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   r   r1   c                  2    t         ggg      S r   r   )r   r   r   r   r   r   ua1r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   s'    4	Rr2rlc3 A r1   is_dynamicsymbolsc                  $    t         z   g      S r+   r   )r   r   r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   s    4b2gr]C r1   r   c                  ,    t         gdgd      S Nr   Tr   r   )r   r   s1r   r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   s     4	Rq"bkT ; r1   c                  4    t        z   z    gdgd      S r   r   )r   r   s2s3r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   s%    4	b2rQGt = r1   )r   r   c                       t         g      S r   r   )r   r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   s    4"cK r1   r=   zf1:3)clsc                  6    t                        g      S r+   r   r=   f1f2s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>       4beRU^D r1   c                  8    t                        g      S )Nr   r   r   s   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   s    4RUBqENK r1   c                  6    t                       g      S r+   r   )r   r   ts   r.   r/   z+test_validate_coordinates.<locals>.<lambda>   r   r1   )r   r   r   r   rt   _tr
   )r=   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @@@@@@@@@@@@@@@@r.   test_validate_coordinatesr      sK   ,:;L,M)BBBCcJBB2r2,R'*Co7 2r(#2r(RD)"b*2r2,RuM
: $ %2r2,RuM
: ; <
: ; <2r2,Ru')3n6
: @ @ A
: @ @ A
: A A B 27B-5A
:CD2r2,BuM
: ; <27R<,q"gO
: = >r3i5I
:KLAAV*FB2a5"Q%.EB
:DE
:KLN2a5"Q%.)
:DENr1   c                  
   t        ddt        d            t        ddt        d            }} t        t         j                        t         j                  k(  sJ  t        d      | |      t        j                  | |      k(  sJ y )Nr   za:9r?   zb:6LU)r   r   r   LUsolve)r   rg   s     r.   test_parse_linear_solverr      sh    !Q'1gen)EqA/6>>AAA%%a+v~~a/CCCCr1   c                     ddl m} m}m} t	        d      }t               5   | |dddd      |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z   k(  sJ 	 d d d        t               5   |d|j                  |j                  z   |      |j                  |j                  z  |j                  |j                  z  z   d|j                  |j                  z  z  z   |j                  |j                  z  z
  |j                  |j                  z  z
  k(  sJ 	 d d d        t        d      }t               5   |d|j                  z  |      |j                  d|j                  z  |j                  z  fgk(  sJ 	 d d d        y # 1 sw Y   (xY w# 1 sw Y   xxY w# 1 sw Y   y xY w)Nr   )inertiainertia_of_point_massgravityr   r(   r?   r&   )!sympy.physics.mechanics.functionsr   r   r   r   r   r6   r5   rH   r   r   mass)r   r   r   r   ps        r.   test_deprecated_moved_functionsr      s   1 1sA		! Qq!Q1%!##)acc	)BaccACCi)PPPPQ		! '$Qacc	15SS133Y1339%QSS133Y7SS133Y339&' 	' '' 	A		! KrACCx#rAFF{QSS7H(I'JJJJK KQ Q' '
K Ks&   AF$B)F1AF=$F.1F:=GN)6sympyr   r   r   r   r   r   r	   r
   sympy.physics.mechanicsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r   r   r   r   q4q5r   	orientnewrH   r   r6   r    r5   r!   r:   rN   rU   rZ   ra   ro   rx   r   r   r   r    r1   r.   <module>r      s    A A A0 0F F F
A A ? -. BB3KKVb!##Y'KKVb!##Y'KKVb!##Y'=569*<(4(!0720*0fDKr1   