U
    Ç-e{
  ã                   @   sˆ   d dl mZmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    )Ú
DerivativeÚFunction)ÚEq)ÚSymbolÚsymbols)ÚcosÚsin)Úraises)Úeuler_equationsc                      s  t dƒ‰tdƒ‰tdƒ‰ ttdd„ ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡‡fd	d„ƒ ttˆˆ ƒˆ ƒd
 d
 ˆˆ ƒhƒttˆˆ ƒˆ ˆ ƒ dƒgks¼t‚ttˆˆ ƒˆ ƒd
 d
 ˆˆ ƒˆ hƒttˆˆ ƒˆ ˆ ƒ dƒgksþt‚d S )NÚxÚyÚtc                   S   s   t ƒ S ©N)Úeuler© r   r   ú`/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/calculus/tests/test_euler.pyÚ<lambda>   ó    z&test_euler_interface.<locals>.<lambda>c                      s$   t tˆˆ ƒˆ ƒˆˆ ƒ ˆˆ ƒˆgƒS r   ©r   ÚDr   ©r   r   r   r   r   r      r   c                      s(   t tˆˆ ƒˆ ƒˆˆƒ ˆˆ ƒˆˆƒgƒS r   r   r   r   r   r   r      r   c                      s   t tˆˆ ƒˆ ƒd ˆdƒƒS )Né   r   r   r   )r   r   r   r   r      r   c                      s   t tˆˆ ƒˆ ƒˆˆ ƒ ˆ gƒS r   r   r   r   r   r   r      r   r   r   )	r   r   r	   Ú	TypeErrorÚ
ValueErrorr   r   r   ÚAssertionErrorr   r   r   r   Útest_euler_interface	   s    @r   c                  C   sp   t dƒ} tdƒ}t| |ƒ|ƒd d t| |ƒƒ }t|| |ƒ|ƒtt| |ƒƒ t| |ƒ||ƒ dƒgkslt‚d S )Nr   r   r   r   ©r   r   r   r   r   r   r   r   )r   r   ÚLr   r   r   Útest_euler_pendulum   s    "r   c                     sæ   t dƒ} t dƒ}tdƒ‰ t‡ fdd„| |fD ƒƒ}|| ˆ ƒd  |ˆ ƒ |ˆ ƒd d  7 }t|| ˆ ƒ|ˆ ƒgˆ ƒtd| ˆ ƒ |ˆ ƒ | ˆ ƒ t| ˆ ƒˆ ˆ ƒ d	ƒt| ˆ ƒd  |ˆ ƒd  |ˆ ƒ t|ˆ ƒˆ ˆ ƒ d	ƒgksât‚d S )
Nr   r   r   c                 3   s4   | ],}t |ˆ ƒˆ ƒd  d  |ˆ ƒd  d   V  qdS )r   N)r   )Ú.0Úz©r   r   r   Ú	<genexpr>!   s     z)test_euler_henonheiles.<locals>.<genexpr>r   é   éþÿÿÿr   )r   r   Úsumr   r   r   r   )r   r   r   r   r!   r   Útest_euler_henonheiles   s$    *2ÿÿÿÿÿþr&   c                  C   s°   t dƒ} tdƒ}tdƒ}t| ||ƒ|ƒd d t| ||ƒ|ƒd d  t| ||ƒƒ }t|| ||ƒ||gƒtt| ||ƒƒ t| ||ƒ||ƒ t| ||ƒ||ƒ dƒgks¬t‚d S )NÚpsir   r   r   r   r   )r'   r   r   r   r   r   r   Útest_euler_sineg)   s    >$ÿþþr(   c               	   C   sv  t dƒ} t dƒ}tdƒ}tdƒ}t dƒ}| t||ƒ|ƒd  d | t||ƒ|ƒd  d  |t||ƒ|ƒ t||ƒ||ƒ  |t||ƒ|ƒ t||ƒ||ƒ  }t|||ƒ||ƒgƒtd| t||ƒ|||ƒ | t||ƒ||ƒ  dƒtd| t||ƒ|||ƒ | t||ƒ||ƒ  dƒgks$t‚t d	ƒ}t|||ƒ||ƒd d }t|ƒtt|||ƒ||||ƒdƒgksrt‚d S )
NÚmÚkr   r   r   r   r   r$   Úw)r   r   r   r   r   r   )r)   r*   r   r   r   r   r+   r   r   r   Útest_euler_high_order3   s0    2 ÿ ÿ.ÿÿÿÿþr,   c                  C   sn   t dƒ\} }}t dt| |fd\}}}|ƒ |ƒ |ƒ   }}}| | ¡| |¡ }t||f| |fƒg ksjt‚d S )Nzx y zzf g h)ÚclsÚargs)r   r   Údiffr   r   )r   r   r    ÚfÚgÚhZexpr2r   r   r   Útest_issue_18653E   s
    r3   N)Zsympy.core.functionr   r   r   Zsympy.core.relationalr   Zsympy.core.symbolr   r   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.testing.pytestr	   Zsympy.calculus.eulerr
   r   r   r   r&   r(   r,   r3   r   r   r   r   Ú<module>   s   
