§
    ^²Åj.G  ã                   óh   — d dl mZmZmZ d dlmZ d dlmZ d dl	m
Z
 dgZ G d„ dee¦  «        Zd„ ZdS )	é    )ÚsympifyÚAddÚImmutableMatrix)Ú
EvalfMixin)Ú	Printable)Úprec_to_dpsÚDyadicc                   óÊ   — e Zd ZdZdZd„ Zed„ ¦   «         Zd„ ZeZ	d„ Z
e
Zd„ ZeZd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!dS )r	   ay  A Dyadic object.

    See:
    https://en.wikipedia.org/wiki/Dyadic_tensor
    Kane, T., Levinson, D. Dynamics Theory and Applications. 1985 McGraw-Hill

    A more powerful way to represent a rigid body's inertia. While it is more
    complex, by choosing Dyadic components to be in body fixed basis vectors,
    the resulting matrix is equivalent to the inertia tensor.

    Fc                 ó>  — g | _         |dk    rg }t          |¦  «        dk    �rOd}t          | j         ¦  «        D ]ã\  }}t          |d         d         ¦  «        t          | j         |         d         ¦  «        k    r¡t          |d         d         ¦  «        t          | j         |         d         ¦  «        k    rd| j         |         d         |d         d         z   |d         d         |d         d         f| j         |<   |                     |d         ¦  «         d} nŒä|dk    r;| j                              |d         ¦  «         |                     |d         ¦  «         t          |¦  «        dk    �°Od}|t          | j         ¦  «        k     r�| j         |         d         dk    | j         |         d         dk    z  | j         |         d         dk    z  r*| j                              | j         |         ¦  «         |dz  }|dz  }|t          | j         ¦  «        k     °ŽdS dS )a2  
        Just like Vector's init, you should not call this unless creating a
        zero dyadic.

        zd = Dyadic(0)

        Stores a Dyadic as a list of lists; the inner list has the measure
        number and the two unit vectors; the outerlist holds each unique
        unit vector pair.

        r   é   é   N)ÚargsÚlenÚ	enumerateÚstrÚremoveÚappend)ÚselfÚinlistÚaddedÚiÚvs        úLC:\Projects\Historical\venv\Lib\site-packages\sympy/physics/vector/dyadic.pyÚ__init__zDyadic.__init__   sû  € ð ˆŒ	Ø�QŠ;ˆ;ØˆFÝ�&‰kŒk˜QÒÑØˆEÝ! $¤)Ñ,Ô,ð ð ‘��1Ý˜ œ 1œÑ&Ô&­#¨d¬i¸¬l¸1¬oÑ*>Ô*>Ò>Ð>Ý˜V AœY qœ\Ñ*Ô*­c°$´)¸A´,¸q´/Ñ.BÔ.BÒBÐBØ$(¤I¨a¤L°¤O°f¸Q´iÀ´lÑ$BØ$*¨1¤I¨a¤L°&¸´)¸A´,ð$@�D”I˜a‘Là—M’M &¨¤)Ñ,Ô,Ð,Ø�EØ�EøØ˜ŠzˆzØ”	× Ò  ¨¤Ñ+Ô+Ð+Ø—’˜f QœiÑ(Ô(Ð(õ �&‰kŒk˜QÒÑð ˆà•#�d”i‘.”.Ò Ð Ø”˜1”˜a” AÒ%¨$¬)°A¬,°q¬/¸QÒ*>Ñ?Ø”Y˜q”\ !”_¨Ò)ñ+ð à”	× Ò  ¤¨1¤Ñ.Ô.Ð.Ø�Q‘�Ø�‰FˆAð •#�d”i‘.”.Ò Ð Ð Ð Ð Ð ó    c                 ó   — t           S )zReturns the class Dyadic. )r	   ©r   s    r   ÚfunczDyadic.func@   s	   € õ ˆr   c                 óX   — t          |¦  «        }t          | j        |j        z   ¦  «        S )zThe add operator for Dyadic. )Ú_check_dyadicr	   r   ©r   Úothers     r   Ú__add__zDyadic.__add__E   s&   € å˜eÑ$Ô$ˆÝ�d”i %¤*Ñ,Ñ-Ô-Ð-r   c                 óî   — t          | j        ¦  «        }t          |¦  «        }t          |¦  «        D ]4\  }}|||         d         z  ||         d         ||         d         f||<   Œ5t	          |¦  «        S )a…  Multiplies the Dyadic by a sympifyable expression.

        Parameters
        ==========

        other : Sympafiable
            The scalar to multiply this Dyadic with

        Examples
        ========

        >>> from sympy.physics.vector import ReferenceFrame, outer
        >>> N = ReferenceFrame('N')
        >>> d = outer(N.x, N.x)
        >>> 5 * d
        5*(N.x|N.x)

        r   r   r   )Úlistr   r   r   r	   )r   r"   Únewlistr   r   s        r   Ú__mul__zDyadic.__mul__L   su   € õ& �t”y‘/”/ˆÝ˜‘”ˆÝ˜gÑ&Ô&ð 	)ð 	)‰DˆAˆqØ '¨!¤*¨Q¤-Ñ/°¸´¸A´Ø! !œ* Qœ-ð)ˆG�A‰JˆJå�g‰ŒÐr   c                 óö  — ddl m}m} t          |t          ¦  «        r‹t          |¦  «        }t	          d¦  «        }| j        D ]d}|j        D ]Z}||d         |d         z  |d                              |d         ¦  «        z  |d                              |d         ¦  «        z  z  }Œ[ŒenP ||¦  «        } |d¦  «        }| j        D ]2}||d         |d         z  |d                              |¦  «        z  z  }Œ3|S )aò  The inner product operator for a Dyadic and a Dyadic or Vector.

        Parameters
        ==========

        other : Dyadic or Vector
            The other Dyadic or Vector to take the inner product with

        Examples
        ========

        >>> from sympy.physics.vector import ReferenceFrame, outer
        >>> N = ReferenceFrame('N')
        >>> D1 = outer(N.x, N.y)
        >>> D2 = outer(N.y, N.y)
        >>> D1.dot(D2)
        (N.x|N.y)
        >>> D1.dot(N.y)
        N.x

        r   )ÚVectorÚ_check_vectorr   r   )	Úsympy.physics.vector.vectorr)   r*   Ú
isinstancer	   r    r   ÚdotÚouter)r   r"   r)   r*   Úolr   Úv2s          r   r-   z
Dyadic.doth   s   € ð, 	FÐEÐEÐEÐEÐEÐEÐEÝ�e�VÑ$Ô$ð 
	6Ý! %Ñ(Ô(ˆEÝ˜‘”ˆBØ”Yð Qð Q�Øœ*ð Qð Q�BØ˜!˜Aœ$  A¤™,¨!¨A¬$¯(ª(°2°a´5©/¬/Ñ:¸aÀ¼d¿jºjÈÈAÌÑ>OÔ>OÑPÑP�B�BðQðQð "�M %Ñ(Ô(ˆEØ�˜‘”ˆBØ”Yð 6ð 6�Ø�a˜”d˜Q˜qœT‘k Q q¤T§X¢X¨e¡_¤_Ñ5Ñ5��Øˆ	r   c                 ó2   — |                       d|z  ¦  «        S )z0Divides the Dyadic by a sympifyable expression. r   )r'   r!   s     r   Ú__truediv__zDyadic.__truediv__�   s   € à�|Š|˜A ™IÑ&Ô&Ð&r   c                 óþ   — |dk    rt          d¦  «        }t          |¦  «        }| j        g k    r|j        g k    rdS | j        g k    s|j        g k    rdS t          | j        ¦  «        t          |j        ¦  «        k    S )z[Tests for equality.

        Is currently weak; needs stronger comparison testing

        r   TF)r	   r    r   Úsetr!   s     r   Ú__eq__zDyadic.__eq__“   sx   € ð �AŠ:ˆ:Ý˜1‘I”IˆEÝ˜eÑ$Ô$ˆØŒI˜ŠOˆO %¤*°Ò"2Ð"2Ø�4ØŒi˜2Šoˆo 5¤:°Ò#3Ð#3Ø�5Ý�4”9‰~Œ~¥ U¤Z¡¤Ò0Ð0r   c                 ó   — | |k     S ©N© r!   s     r   Ú__ne__zDyadic.__ne__£   s   € Ø˜5’=Ð Ð r   c                 ó   — | dz  S ©Néÿÿÿÿr8   r   s    r   Ú__neg__zDyadic.__neg__¦   s   € Ø�b‰yÐr   c                 ó¦  — | j         }t          |¦  «        dk    rt          d¦  «        S g }t          |¦  «        D �]À\  }}||         d         dk    r]|                     d|                     ||         d         ¦  «        z   dz   |                     ||         d         ¦  «        z   ¦  «         Œu||         d         dk    r]|                     d|                     ||         d         ¦  «        z   dz   |                     ||         d         ¦  «        z   ¦  «         Œä||         d         dk    rÊ|                     ||         d         ¦  «        }t          ||         d         t          ¦  «        rd|z  }|                     d	¦  «        r|dd …         }d}nd}|                     ||z   |                     ||         d         ¦  «        z   dz   |                     ||         d         ¦  «        z   ¦  «         �ŒÂd
 	                    |¦  «        }|                     d¦  «        r|dd …         }n|                     d¦  «        r
|dd …         }|S )Nr   r   ú + z\otimes r   r<   ú - ú(%s)ú-Ú é   ú )
r   r   r   r   r   Ú_printr,   r   Ú
startswithÚjoin©	r   ÚprinterÚarr/   r   r   Úarg_strÚ	str_startÚoutstrs	            r   Ú_latexzDyadic._latex©   sW  € ØŒYˆÝˆr‰7Œ7�aŠ<ˆ<Ý�q‘6”6ˆMØˆÝ˜b‘M”Mð 	Bñ 	B‰DˆAˆqà�!Œu�QŒx˜1Š}ˆ}Ø—	’	˜% '§.¢.°°A´°q´Ñ":Ô":Ñ:¸[ÑHØ!Ÿ.š.¨¨A¬¨q¬Ñ2Ô2ñ3ñ 4ô 4ð 4ð 4ð �A”�q”˜R’�Ø—	’	˜%Ø!Ÿ.š.¨¨A¬¨q¬Ñ2Ô2ñ3à%ñ&ð "Ÿ.š.¨¨A¬¨q¬Ñ2Ô2ñ3ñ 4ô 4ð 4ð 4ð �A”�q”˜Q’�Ø!Ÿ.š.¨¨A¬¨q¬Ñ2Ô2�Ý˜b œe Aœh­Ñ,Ô,ð /Ø$ wÑ.�GØ×%Ò% cÑ*Ô*ð &Ø% a b bœk�GØ %�I�Ià %�IØ—	’	˜) gÑ-°·²¸rÀ!¼uÀQ¼xÑ0HÔ0HÑHØ%ñ&Ø(/¯ª°r¸!´u¸Q´xÑ(@Ô(@ñAñ Bô Bð Bùà—’˜‘”ˆØ×Ò˜UÑ#Ô#ð 	 Ø˜A˜B˜B”ZˆFˆFØ×Ò˜sÑ#Ô#ð 	 Ø˜A˜B˜B”ZˆFØˆr   c                 ó>   ‡‡— | Š G ˆˆfd„d¦  «        } |¦   «         S )Nc                   ó    •— e Zd ZdZˆ ˆfd„ZdS )úDyadic._pretty.<locals>.Faker   c                 ó  •— ‰j         }‰}t          |¦  «        dk    rt          d¦  «        S ‰j        rdnd}g }t	          |¦  «        D �]å\  }}||         d         dk    rX|                     d|                     ||         d         ¦  «        ||                     ||         d         ¦  «        g¦  «         Œp||         d         dk    rX|                     d|                     ||         d         ¦  «        ||                     ||         d         ¦  «        g¦  «         ŒÚ||         d         dk    rùt          ||         d         t          ¦  «        r:| 	                    ||         d         ¦  «         
                    ¦   «         d         }	n!|                     ||         d         ¦  «        }	|	                     d	¦  «        r|	dd …         }	d}
nd}
|                     |
|	d
|                     ||         d         ¦  «        ||                     ||         d         ¦  «        g¦  «         �Œçd                     |¦  «        }|                     d¦  «        r|dd …         }n|                     d
¦  «        r
|dd …         }|S )Nr   u   âŠ—ú|r   r?   r   r<   r@   rB   rE   rC   rD   )r   r   r   Ú_use_unicoder   ÚextendÚdoprintr,   r   rF   ÚparensrG   rH   )r   r   ÚkwargsrK   ÚmppÚbarr/   r   r   rL   rM   rN   ÚerJ   s               €€r   Úrenderz#Dyadic._pretty.<locals>.Fake.renderÓ   s|  ø€ Ø”V�Ø�Ý�r‘7”7˜a’<�<Ý˜q™6œ6�MØ-4Ô-AÐJÐ)Ð)Às�Ø�Ý% b™MœMð :ñ :‘D�A�qà˜!”u˜Q”x 1’}�}ØŸ	š	 5Ø"%§+¢+¨b°¬e°A¬hÑ"7Ô"7Ø"%Ø"%§+¢+¨b°¬e°A¬hÑ"7Ô"7ð#9ñ :ô :ð :ð :ð ˜Aœ˜qœ Rš˜ØŸ	š	 5Ø"%§+¢+¨b°¬e°A¬hÑ"7Ô"7Ø"%Ø"%§+¢+¨b°¬e°A¬hÑ"7Ô"7ð#9ñ :ô :ð :ð :ð ˜Aœ˜qœ Qš˜Ý% b¨¤e¨A¤hµÑ4Ô4ð <Ø&)§j¢jØ " 1¤ a¤ñ'*ô '*ß*0ª&©(¬(°1ô'6˜G˜Gð '*§k¢k°"°Q´%¸´(Ñ&;Ô&;˜GØ"×-Ò-¨cÑ2Ô2ð .Ø&-¨a¨b¨b¤k˜GØ(-˜I˜Ià(-˜IØŸ	š	 9¨g°sØ"%§+¢+¨b°¬e°A¬hÑ"7Ô"7Ø"%Ø"%§+¢+¨b°¬e°A¬hÑ"7Ô"7ð#9ñ :ô :ð :ùð
 Ÿš ™œ�Ø×$Ò$ UÑ+Ô+ð (Ø# A B BœZ�F�FØ×&Ò& sÑ+Ô+ð (Ø# A B BœZ�FØ�r   N)Ú__name__Ú
__module__Ú__qualname__Úbaseliner]   )r\   rJ   s   €€r   ÚFakerR   Ð   s8   ø€ € € € € ØˆHð-ð -ð -ð -ð -ð -ð -ð -r   rb   r8   )r   rJ   rb   r\   s    ` @r   Ú_prettyzDyadic._prettyÍ   sN   øø€ Øˆð0	ð 0	ð 0	ð 0	ð 0	ð 0	ð 0	ð 0	ñ 0	ô 0	ð 0	ðb ˆt‰vŒvˆr   c                 ó   — d| z  |z   S r;   r8   r!   s     r   Ú__rsub__zDyadic.__rsub__  s   € Ø�T‘	˜UÑ"Ð"r   c                 ó¸  — | j         }t          |¦  «        dk    r|                     d¦  «        S g }t          |¦  «        D �]Ã\  }}||         d         dk    r`|                     d|                     ||         d         ¦  «        z   dz   |                     ||         d         ¦  «        z   dz   ¦  «         Œx||         d         dk    r`|                     d|                     ||         d         ¦  «        z   dz   |                     ||         d         ¦  «        z   dz   ¦  «         Œê||         d         dk    rÇ|                     ||         d         ¦  «        }t          ||         d         t          ¦  «        rd	|z  }|d         d
k    r|dd…         }d}nd}|                     ||z   dz   |                     ||         d         ¦  «        z   dz   |                     ||         d         ¦  «        z   dz   ¦  «         �ŒÅd                     |¦  «        }|                     d¦  «        r|dd…         }n|                     d¦  «        r
|dd…         }|S )zPrinting method. r   r   z + (rT   r   ú)r<   z - (rA   rB   Nr@   r?   z*(rC   rD   rE   )	r   r   rF   r   r   r,   r   rH   rG   rI   s	            r   Ú	_sympystrzDyadic._sympystr  sp  € àŒYˆÝˆr‰7Œ7�aŠ<ˆ<Ø—>’> !Ñ$Ô$Ð$ØˆÝ˜b‘M”Mð 	@ñ 	@‰DˆAˆqà�!Œu�QŒx˜1Š}ˆ}Ø—	’	˜& 7§>¢>°"°Q´%¸´(Ñ#;Ô#;Ñ;¸cÑAØ!Ÿ.š.¨¨A¬¨q¬Ñ2Ô2ñ3Ø58ñ9ñ :ô :ð :ð :ð �A”�q”˜R’�Ø—	’	˜& 7§>¢>°"°Q´%¸´(Ñ#;Ô#;Ñ;¸cÑAØ!Ÿ.š.¨¨A¬¨q¬Ñ2Ô2ñ3Ø58ñ9ñ :ô :ð :ð :ð �A”�q”˜Q’�Ø!Ÿ.š.¨¨A¬¨q¬Ñ2Ô2�Ý˜b œe Aœh­Ñ,Ô,ð /Ø$ wÑ.�GØ˜1”: Ò$Ð$Ø% a b bœk�GØ %�I�Ià %�IØ—	’	˜) gÑ-°Ñ4Ø!Ÿ.š.¨¨A¬¨q¬Ñ2Ô2ñ3àñà '§¢¨r°!¬u°Q¬xÑ 8Ô 8ñ9à;>ñ?ñ @ô @ð @ùð —’˜‘”ˆØ×Ò˜UÑ#Ô#ð 	 Ø˜A˜B˜B”ZˆFˆFØ×Ò˜sÑ#Ô#ð 	 Ø˜A˜B˜B”ZˆFØˆr   c                 ó2   — |                       |dz  ¦  «        S )zThe subtraction operator. r<   )r#   r!   s     r   Ú__sub__zDyadic.__sub__*  s   € à�|Š|˜E B™JÑ'Ô'Ð'r   c                 óÚ   — ddl m}  ||¦  «        }t          d¦  «        }| j        D ]B}||d         |d                              |d                              |¦  «        ¦  «        z  z  }ŒC|S )a¢  Returns the dyadic resulting from the dyadic vector cross product:
        Dyadic x Vector.

        Parameters
        ==========
        other : Vector
            Vector to cross with.

        Examples
        ========
        >>> from sympy.physics.vector import ReferenceFrame, outer, cross
        >>> N = ReferenceFrame('N')
        >>> d = outer(N.x, N.x)
        >>> cross(d, N.y)
        (N.x|N.z)

        r   )r*   r   r   )r+   r*   r	   r   r.   Úcross)r   r"   r*   r/   r   s        r   rl   zDyadic.cross.  s{   € ð$ 	>Ð=Ð=Ð=Ð=Ð=Ø�˜eÑ$Ô$ˆÝ�A‰YŒYˆØ”ð 	;ð 	;ˆAØ�!�A”$˜!˜Aœ$Ÿ*š* a¨¤d§j¢j°Ñ&7Ô&7Ñ9Ô9Ñ:Ñ:ˆBˆBØˆ	r   Nc                 ó(   — ddl m}  || ||¦  «        S )a  Expresses this Dyadic in alternate frame(s)

        The first frame is the list side expression, the second frame is the
        right side; if Dyadic is in form A.x|B.y, you can express it in two
        different frames. If no second frame is given, the Dyadic is
        expressed in only one frame.

        Calls the global express function

        Parameters
        ==========

        frame1 : ReferenceFrame
            The frame to express the left side of the Dyadic in
        frame2 : ReferenceFrame
            If provided, the frame to express the right side of the Dyadic in

        Examples
        ========

        >>> from sympy.physics.vector import ReferenceFrame, outer, dynamicsymbols
        >>> from sympy.physics.vector import init_vprinting
        >>> init_vprinting(pretty_print=False)
        >>> N = ReferenceFrame('N')
        >>> q = dynamicsymbols('q')
        >>> B = N.orientnew('B', 'Axis', [q, N.z])
        >>> d = outer(N.x, N.x)
        >>> d.express(B, N)
        cos(q)*(B.x|N.x) - sin(q)*(B.y|N.x)

        r   )Úexpress)Úsympy.physics.vector.functionsrn   )r   Úframe1Úframe2rn   s       r   rn   zDyadic.expressJ  s+   € ð@ 	;Ð:Ð:Ð:Ð:Ð:Øˆw�t˜V VÑ,Ô,Ð,r   c                 ón   ‡ ‡— ‰€|Št          ˆˆ fd„|D ¦   «         ¦  «                             dd¦  «        S )a�  Returns the matrix form of the dyadic with respect to one or two
        reference frames.

        Parameters
        ----------
        reference_frame : ReferenceFrame
            The reference frame that the rows and columns of the matrix
            correspond to. If a second reference frame is provided, this
            only corresponds to the rows of the matrix.
        second_reference_frame : ReferenceFrame, optional, default=None
            The reference frame that the columns of the matrix correspond
            to.

        Returns
        -------
        matrix : ImmutableMatrix, shape(3,3)
            The matrix that gives the 2D tensor form.

        Examples
        ========

        >>> from sympy import symbols, trigsimp
        >>> from sympy.physics.vector import ReferenceFrame
        >>> from sympy.physics.mechanics import inertia
        >>> Ixx, Iyy, Izz, Ixy, Iyz, Ixz = symbols('Ixx, Iyy, Izz, Ixy, Iyz, Ixz')
        >>> N = ReferenceFrame('N')
        >>> inertia_dyadic = inertia(N, Ixx, Iyy, Izz, Ixy, Iyz, Ixz)
        >>> inertia_dyadic.to_matrix(N)
        Matrix([
        [Ixx, Ixy, Ixz],
        [Ixy, Iyy, Iyz],
        [Ixz, Iyz, Izz]])
        >>> beta = symbols('beta')
        >>> A = N.orientnew('A', 'Axis', (beta, N.x))
        >>> trigsimp(inertia_dyadic.to_matrix(A))
        Matrix([
        [                           Ixx,                                           Ixy*cos(beta) + Ixz*sin(beta),                                           -Ixy*sin(beta) + Ixz*cos(beta)],
        [ Ixy*cos(beta) + Ixz*sin(beta), Iyy*cos(2*beta)/2 + Iyy/2 + Iyz*sin(2*beta) - Izz*cos(2*beta)/2 + Izz/2,                 -Iyy*sin(2*beta)/2 + Iyz*cos(2*beta) + Izz*sin(2*beta)/2],
        [-Ixy*sin(beta) + Ixz*cos(beta),                -Iyy*sin(2*beta)/2 + Iyz*cos(2*beta) + Izz*sin(2*beta)/2, -Iyy*cos(2*beta)/2 + Iyy/2 - Iyz*sin(2*beta) + Izz*cos(2*beta)/2 + Izz/2]])

        Nc                 ój   •— g | ]/}‰D ]*}|                      ‰¦  «                              |¦  «        ‘Œ+Œ0S r8   )r-   )Ú.0r   ÚjÚsecond_reference_framer   s      €€r   ú
<listcomp>z$Dyadic.to_matrix.<locals>.<listcomp>›  sO   ø€ ð .ð .ð .¨aØ,ð.ð .Àq�q—u’u˜T‘{”{—’ qÑ)Ô)ð .ð .ð .ð .r   rD   )ÚMatrixÚreshape)r   Úreference_framerv   s   ` `r   Ú	to_matrixzDyadic.to_matrixm  s\   øø€ ðV "Ð)Ø%4Ð"åð .ð .ð .ð .ð .°?ð .ñ .ô .ñ /ô /ß/6ªw°q¸!©}¬}ð	=r   c                 ó`   ‡— t          ˆfd„| j        D ¦   «         t          d¦  «        ¦  «        S )z(Calls .doit() on each term in the Dyadicc           	      óp   •— g | ]2}t           |d          j        di ‰¤Ž|d         |d         fg¦  «        ‘Œ3S )r   r   r   r8   )r	   Údoit)rt   r   Úhintss     €r   rw   zDyadic.doit.<locals>.<listcomp>   sY   ø€ ð (ð (ð (Øõ ˜Y˜Q˜qœTœYÐ/Ð/¨Ð/Ð/°°1´°q¸´tÐ<Ð=Ñ>Ô>ð (ð (ð (r   r   ©Úsumr   r	   )r   r   s    `r   r~   zDyadic.doitž  sF   ø€ åð (ð (ð (ð (Ø!œYð(ñ (ô (Ý)/°©¬ñ4ô 4ð 	4r   c                 ó&   — ddl m}  || |¦  «        S )a¯  Take the time derivative of this Dyadic in a frame.

        This function calls the global time_derivative method

        Parameters
        ==========

        frame : ReferenceFrame
            The frame to take the time derivative in

        Examples
        ========

        >>> from sympy.physics.vector import ReferenceFrame, outer, dynamicsymbols
        >>> from sympy.physics.vector import init_vprinting
        >>> init_vprinting(pretty_print=False)
        >>> N = ReferenceFrame('N')
        >>> q = dynamicsymbols('q')
        >>> B = N.orientnew('B', 'Axis', [q, N.z])
        >>> d = outer(N.x, N.x)
        >>> d.dt(B)
        - q'*(N.y|N.x) - q'*(N.x|N.y)

        r   )Útime_derivative)ro   rƒ   )r   Úframerƒ   s      r   Údtz	Dyadic.dt£  s)   € ð2 	CÐBÐBÐBÐBÐBØˆ˜t UÑ+Ô+Ð+r   c                 ó¬   — t          d¦  «        }| j        D ]<}|t          |d                              ¦   «         |d         |d         fg¦  «        z  }Œ=|S )zReturns a simplified Dyadic.r   r   r   )r	   r   Úsimplify)r   Úoutr   s      r   r‡   zDyadic.simplify¿  sU   € å�Q‰iŒiˆØ”ð 	;ð 	;ˆAØ•6˜A˜aœDŸMšM™OœO¨Q¨q¬T°1°Q´4Ð8Ð9Ñ:Ô:Ñ:ˆCˆCØˆ
r   c                 ód   ‡‡— t          ˆˆfd„| j        D ¦   «         t          d¦  «        ¦  «        S )a5  Substitution on the Dyadic.

        Examples
        ========

        >>> from sympy.physics.vector import ReferenceFrame
        >>> from sympy import Symbol
        >>> N = ReferenceFrame('N')
        >>> s = Symbol('s')
        >>> a = s*(N.x|N.x)
        >>> a.subs({s: 2})
        2*(N.x|N.x)

        c           	      óp   •— g | ]2}t           |d          j        ‰i ‰¤Ž|d         |d         fg¦  «        ‘Œ3S )r   r   r   )r	   Úsubs)rt   r   r   rY   s     €€r   rw   zDyadic.subs.<locals>.<listcomp>Ö  sX   ø€ ð (ð (ð (Øõ ˜Y˜Q˜qœTœY¨Ð7°Ð7Ð7¸¸1¼¸qÀ¼tÐDÐEÑFÔFð (ð (ð (r   r   r€   )r   r   rY   s    ``r   r‹   zDyadic.subsÆ  sN   øø€ õ  ð (ð (ð (ð (ð (Ø!œYð(ñ (ô (Ý)/°©¬ñ4ô 4ð 	4r   c                 óÄ   — t          |¦  «        st          d¦  «        ‚t          d¦  «        }| j        D ]*\  }}}| ||¦  «        |                     |¦  «        z  z  }Œ+|S )z/Apply a function to each component of a Dyadic.z`f` must be callable.r   )ÚcallableÚ	TypeErrorr	   r   r.   )r   Úfrˆ   ÚaÚbÚcs         r   Ú	applyfunczDyadic.applyfuncÙ  si   € å˜‰{Œ{ð 	5ÝÐ3Ñ4Ô4Ð4å�Q‰iŒiˆØ”yð 	'ð 	'‰GˆAˆq�!Ø�1�1�Q‘4”4˜1Ÿ7š7 1™:œ:Ñ&Ñ&ˆCˆCØˆ
r   c                 ó  — | j         s| S g }t          |¦  «        }| j         D ]R}t          |¦  «        }|d                              |¬¦  «        |d<   |                     t          |¦  «        ¦  «         ŒSt          |¦  «        S )Nr   )Ún)r   r   r%   Úevalfr   Útupler	   )r   ÚprecÚnew_argsÚdpsr   Ú
new_inlists         r   Ú_eval_evalfzDyadic._eval_evalfã  s…   € ØŒyð 	ØˆKØˆÝ˜$ÑÔˆØ”ið 	/ð 	/ˆFÝ˜f™œˆJØ" 1œIŸOšO¨c˜OÑ2Ô2ˆJ�q‰MØ�OŠO�E *Ñ-Ô-Ñ.Ô.Ð.Ð.Ý�hÑÔÐr   c                 óÖ   — g }| j         D ]Q}t          |¦  «        }|d                              |¦  «        |d<   |                     t	          |¦  «        ¦  «         ŒRt          |¦  «        S )a®  
        Replace occurrences of objects within the measure numbers of the
        Dyadic.

        Parameters
        ==========

        rule : dict-like
            Expresses a replacement rule.

        Returns
        =======

        Dyadic
            Result of the replacement.

        Examples
        ========

        >>> from sympy import symbols, pi
        >>> from sympy.physics.vector import ReferenceFrame, outer
        >>> N = ReferenceFrame('N')
        >>> D = outer(N.x, N.x)
        >>> x, y, z = symbols('x y z')
        >>> ((1 + x*y) * D).xreplace({x: pi})
        (pi*y + 1)*(N.x|N.x)
        >>> ((1 + x*y) * D).xreplace({x: pi, y: 2})
        (1 + 2*pi)*(N.x|N.x)

        Replacements occur only if an entire node in the expression tree is
        matched:

        >>> ((x*y + z) * D).xreplace({x*y: pi})
        (z + pi)*(N.x|N.x)
        >>> ((x*y*z) * D).xreplace({x*y: pi})
        x*y*z*(N.x|N.x)

        r   )r   r%   Úxreplacer   r—   r	   )r   Úruler™   r   r›   s        r   rž   zDyadic.xreplaceî  sl   € ðP ˆØ”ið 	/ð 	/ˆFÝ˜f™œˆJØ& qœM×2Ò2°4Ñ8Ô8ˆJ�q‰MØ�OŠO�E *Ñ-Ô-Ñ.Ô.Ð.Ð.Ý�hÑÔÐr   r7   )"r^   r_   r`   Ú__doc__Ú	is_numberr   Úpropertyr   r#   Ú__radd__r'   Ú__rmul__r-   Ú__and__r2   r5   r9   r=   rO   rc   re   rh   rj   rl   Ú__xor__rn   r{   r~   r…   r‡   r‹   r“   rœ   rž   r8   r   r   r	   r	      sÆ  € € € € € ð
ð 
ð €Ið$ð $ð $ðL ðð ñ „Xðð.ð .ð .ð
 €Hðð ð ð4 €Hð"ð "ð "ðJ €Gð'ð 'ð 'ð1ð 1ð 1ð !ð !ð !ðð ð ð"ð "ð "ðH4ð 4ð 4ðl#ð #ð #ð"ð "ð "ðH(ð (ð (ðð ð ð4 €Gð!-ð !-ð !-ð !-ðF/=ð /=ð /=ð /=ðb4ð 4ð 4ð
,ð ,ð ,ð8ð ð ð4ð 4ð 4ð&ð ð ð	 ð 	 ð 	 ð- ð - ð - ð - ð - r   c                 óN   — t          | t          ¦  «        st          d¦  «        ‚| S )NzA Dyadic must be supplied)r,   r	   rŽ   )r"   s    r   r    r      s(   € Ý�e�VÑ$Ô$ð 5ÝÐ3Ñ4Ô4Ð4Ø€Lr   N)Úsympyr   r   r   rx   Úsympy.core.evalfr   Úsympy.printing.defaultsr   Úmpmath.libmp.libmpfr   Ú__all__r	   r    r8   r   r   ú<module>r­      s°   ðØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø -Ð -Ð -Ð -Ð -Ð -à +Ð +Ð +Ð +Ð +Ð +ð ˆ*€ðP ð P ð P ð P ð P ˆY˜
ñ P ô P ð P ðfð ð ð ð r   