³ò
âÁGHc        	   @   sª   d  d k  Td  d k Td  d k Td  d k Td  d k Z d  d k Z d „  Z d e f d „  ƒ  YZ	 d d d „  ƒ  YZ
 d e i f d	 „  ƒ  YZ e d
 j o e i ƒ  n d S(   iÿÿÿÿ(   t   *Nc         C   sN   g  } x; t  d t |  ƒ ƒ D]$ } | i t |  | | | ƒ ƒ q Wt | ƒ S(   Ni    (   t   ranget   lent   appendt   gausst   array(   t   xvt   sigmavt   resultt   i(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   gaussA	   s
     "t   RandomVectorGenec           B   s   e  Z d  „  Z RS(   c         C   sa   d |  _  d |  _ t i d ƒ |  _ t i ƒ  |  i d <t i ƒ  |  i d <t i ƒ  |  i d <d  S(   Ni    g      ð?i   i   i   i   (   t
   generationt   sigmat   randomt   standard_normalt   vt   R(   t   self(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   __init__   s    		(   t   __name__t
   __module__R   (    (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyR      s   t   Particlec           B   sª   e  Z d  Z d Z d Z e Z d Z d d „ Z	 d „  Z
 d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z e d d ƒ d „ Z d „  Z d „  Z d „  Z d „  Z RS(   i
   gš™™™™™É?gš™™™™™¹?gš™™™™™©?c         C   s½   | |  _  d |  _ t i d ƒ |  _ t i d ƒ |  _ t i |  _ d |  _	 d |  _
 d |  _ d |  _ d |  _ d |  _ g  |  _ t |  _ d  |  _ d  |  _ | d  j o t ƒ  |  _  n d  S(   Ni   i   gš™™™™™É?gš™™™™™¹?i    g        (   t   genet   nTermsR   R   t   rvt   vvR   t   defaultRadiust   radiust   sigma_rvt   sigma_vvt   stepst   tt	   reproTimet   babiest   tailt   Falset   selectedt   Nonet   arrowst	   geneArrowR   (   R   R   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyR   $   s"    												c         C   s=   |  i  i d } |  i  i d } |  i  i d } | | | g S(   Ni   i   i   (   R   R   (   R   t   rt   gt   b(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   color8   s    c         C   s   t  |  i ƒ S(   N(   t   magR   (   R   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   speed>   s    c         C   s{   t  |  i i | ƒ ƒ } t |  i t d |  i d |  i ƒ ƒ | _ t |  i t |  i |  i ƒ ƒ | _ |  i	 d 7_	 | S(   Ni   i   (
   R   R   t   mutateR
   R   t   aR   R   R   R"   (   R   t   ratet   p(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyR/   A   s
    ,$c         C   s    t  |  i i i ƒ  d |  i !ƒ S(   Ni    (   R   R   R   t   tolistR   (   R   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt	   xdotcoefsI   s    c         C   s'   t  |  i i i ƒ  |  i |  i d !ƒ S(   Ni   (   R   R   R   R3   R   (   R   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt	   ydotcoefsL   s    c         C   s=   d } d } x* | D]" } | | | | 7} | d 7} q W| S(   Ni    i   (    (   R   t   coefficientst   xt   sumt   powert   c(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   powerSeriesO   s     c         C   sS   | d |  i  d !} | |  i  d |  i  !} |  i | | d ƒ |  i | | d ƒ S(   Ni    i   i   (   R   R;   (   R   t   coefsR   t   xcoefst   ycoefs(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   ddotW   s    i    c         C   s€   |  i  i } t |  i |  i ƒ  | ƒ | d | d | d | d |  i |  i ƒ  | ƒ | d | d | d | d g ƒ S(   Ni   i    i   i   i   i   (   R   R   R   R?   R4   R5   (   R   R   R   R*   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   behavior]   s    8c      	   C   sd   | d |  i  d !} | |  i  d |  i  !} d | d | d | d | d | d | d f } | S(   Ni    i   s#   %f + %f x + %f x^2 + %f y + %f y^2
i   (   R   (   R   R<   R=   R>   t   eq(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   _displayEquationb   s    5c         C   s,   d |  i  |  i ƒ  ƒ |  i  |  i ƒ  ƒ f S(   Ns   d^2/dt^2 x = %s
d^2/dt^2 y = %s(   RB   R4   R5   (   R   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   displayEquationh   s    c         C   s¹   |  i  p¨ g  |  _  xœ t d d d ƒ D]„ } x{ t d d d ƒ D]g } t | | ƒ } |  i t | | ƒ ƒ } | | } t | ƒ } | d 9} |  i  i | | | g ƒ q? Wq& Wn |  i  S(   Niþÿÿÿi   gš™™™™™É?(   R'   t   frangeR0   R@   t	   normalizeR   (   R   R7   t   yt   startt   endt   arrow(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   gridBehaviorm   s    
	  

&c         C   sð   t  i o1 |  i t t |  i |  i ƒ |  i | ƒ 7_ n" |  i t |  i |  i | ƒ 7_ |  i |  i | 7_ |  i d 7_ |  i | 7_ |  i	 | 7_	 |  i
 i |  i i ƒ  ƒ t |  i
 ƒ t  i } | d j o |  i
 d | 5n d  S(   Ni   i    (   R   t   haveDragR   t   RK3DIntegratort   rcurryR@   R   R   R    R!   R#   R   t   copyR   t	   tailCount(   R   t   dtt   tooBig(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   timeStepƒ   s    
1!N(   R   R   RO   R   R   R$   RK   R   R&   R   R,   R.   R/   R4   R5   R;   R?   R0   R@   RB   RC   RJ   RR   (    (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyR      s$   										t   TestParticlec           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sŠ   |  i  t | ƒ t | ƒ d t | ƒ t | ƒ f ƒ xN t d t | ƒ ƒ D]7 } |  i  | | | | d t | ƒ t | ƒ f ƒ qK Wd  S(   Ns   %s != %si    (   t   assertEqualR   t   strR   (   R   R0   R+   R	   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   assertEqualA“   s    5 c         C   s6  t  t d d d d d d d d d d d d g ƒ d ƒ } t | ƒ } |  i t d d ƒ | i ƒ |  i t d d ƒ | i ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ | i d ƒ |  i t d d ƒ | i ƒ |  i t d d ƒ | i ƒ | i d ƒ |  i t d d ƒ | i ƒ |  i t d d ƒ | i ƒ d  S(   Ni   i    g      ð?gš™™™™™É?i   (	   t
   VectorGeneR   R   RV   R0   R   R   R@   RR   (   R   R*   R2   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt   testTimeStep™   s    9+c         C   só   t  t t d d ƒ ƒ d ƒ } t | ƒ } |  i t d d d d d d ƒ | i ƒ  ƒ |  i t d	 d
 d d d d ƒ | i ƒ  ƒ | i ƒ  } | d | i d !} | | i d | i !} |  i t d d d ƒ | ƒ |  i t d d d ƒ | ƒ d  S(   Ni    i   g      ð?i   i   i   i   i   i   i   i   i	   i
   i   (	   RW   R   R   R   RV   R0   R4   R5   R   (   R   R*   R2   R<   R=   R>   (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt	   testCoefs¦   s    ++c         C   s©  t  t d d d d d d d d d d d d g ƒ d ƒ } t | ƒ } t d d ƒ } t d d ƒ } |  i | | i | ƒ ƒ |  i t d d ƒ | i | ƒ ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ t  t d d d d d d d d d d d d ƒ d ƒ } t | ƒ } |  i t d d ƒ | i t d d ƒ ƒ ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ t  t d d d d d d d d d d d d ƒ d ƒ } t | ƒ } |  i t d d ƒ | i t d d ƒ ƒ ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ |  i t d d ƒ | i t d d ƒ ƒ ƒ d  S(   Ni   i    g      ð?i   i   i   (   RW   R   R   R0   RV   R@   (   R   R*   R2   t   zt   o(    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyt	   testStuff±   s&    9"+6++++6+++(   R   R   RV   RX   RY   R\   (    (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pyRS   ‘   s   			t   __main__(    (   t   GAt   Shanet   Integratorst   numpyR   R   t   unittestR
   RW   R   R   t   TestCaseRS   R   t   main(    (    (    sF   /Users/shane/school/Davis/PHY 150 - Special Topics/project/Particle.pys   <module>   s   



	s: