U
    	Ç-eOù ã                   @   sb  d dl mZmZmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ 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$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dlm8Z8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z?m@Z@mAZAmBZBmCZC ed\ZDZEZFZGZHZIZJZKZLZMZNedZOedZPedZQedZRdd ZSdd ZTdd ZUd d! ZVd"d# ZWeAd$d% ZXd&d' ZYd(d) ZZeAd*d+ Z[d,d- Z\d.d/ Z]eAd0d1 Z^d2d3 Z_d4d5 Z`eAd6d7 Zad8d9 Zbd:d; Zcd<d= ZdeAd>d? ZeeAd@dA ZfeAdBdC ZgeAdDdE ZhdFdG ZieAdHdI ZjeAdJdK ZkdLdM ZldNdO ZmeAdPdQ ZneCeAdRdS ZoeAdTdU ZpeAdVdW ZqdXdY ZrdZd[ ZseAd\d] Ztd^d_ ZueAeCd`da ZveCdbdc ZweAeCddde ZxeCdfdg Zydhdi Zzdjdk Z{eAdldm Z|dndo Z}dpdq Z~drS )sé    )Ú
DerivativeÚFunctionÚdiff)ÚMul)ÚIÚRationalÚpi)ÚEq)ÚS)ÚSymbolÚsymbols)Úsinh)Úsqrt)ÚMatrix)ÚTuple)ÚexpÚcosÚsinÚlogÚCiÚSiÚerfÚerfi)ÚdotprodsimpÚNonSquareMatrixError)Údsolve)Úconstant_renumber)Úchecksysodesol)Ú_classify_linear_systemÚlinear_ode_to_matrixÚODEOrderErrorÚODENonlinearErrorÚ_simpsolÚ_is_commutative_anti_derivativeÚlinodesolveÚcanonical_odesÚdsolve_systemÚ_component_divisionÚ	_eqs2dictÚ_dict2graph)ÚairyaiÚairybi)ÚIntegral)Úratsimp)ÚON_CIÚraisesÚslowÚskipÚXFAILzC0:11ÚxÚfÚgÚhc                     sÂ  t dtd\} }}td| ||g|  ¡}| ¡}| ¡}|  d¡}| d¡}| d¡}t||t|| g}	tddgddggtddgddgggtdgdggf}
t|	d d d|
ksütt|| d|  t||t||| |  g}tdddgdddgdddggtdddgdddgdddgggtdgdgdggf}t|d|ks¬ttd| d|  | | td	| d
|  | | td
| d	|  || g}tdddgdd
d	gd
d	dggtdddgdddgdddgggtdgdgdggf}t|d|ks|tt|| || td| | | | dtd| d	g}tdddgdddgdddggtdddgdddgdddggtdddgdddgdddgggtdgdgd	ggf}t|d|ksJtt||t|| | g tt	 fdd t|| d t|| | gtt
fdd d S )Núf, g, h©ÚclsÚté   é   r   éÿÿÿÿé   é   é   éýÿÿÿc                      s   t  d d dS ©Nr=   r<   ©r   © )Úeqs_5Úfuncsr:   rD   úe/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/solvers/ode/tests/test_systems.pyÚ<lambda>A   ó    z+test_linear_ode_to_matrix.<locals>.<lambda>c                      s   t  d d dS rB   rC   rD   )Úeqs_6rF   r:   rD   rG   rH   D   rI   )r   r   r   r   r	   r   r   ÚAssertionErrorr/   r    r!   )r4   r5   r6   Úf1Úg1Zh1Úf2Úg2Zh2Úeqs_1Zsol_1Úeqs_2Zsol_2Úeqs_3Zsol_3Úeqs_4Zsol_4rD   )rE   rJ   rF   r:   rG   Útest_linear_ode_to_matrix"   sB    8D>ÿd>ÿD<ÿÿ (rT   c            8         sÈ)  t dtd\} }}}t d\}}t| }t|}t|}t|}	t| }
t|}| |g||g }d| d|   d|  d| d |   d	|   f}t|d ksútd|d  d|   d|  d| d |   d	|   f}d
tt| td|  d d| d   tt|d |  d d  d	| d  gtt| td|  d d| d  tt|d |  d d  d	| d  ggd}t||ksDttt| td|  d d| d   tt|d |  d d  d	| d  g}t|d ksÌttt| td|  d d| d  tt|d |  d d  d	| d  g}t|d ksRtd| d|   d|  d| d|   d	|  d|	 | || f}dd|  d|  dt|   d|  d	|  dt|  |dt|  |t| f| |||g| d|d|d|did
d
d
tt	ddt	ddddgt	ddt	d	dddgddddgddt	dddgg dd
d
}t|||ksÚtd| d|   d|  d| d|   d	|  || |	| f}dd|  d|  dt|   d|  d	|  dt|  | t| | t| f| |||g| d|d|d|did
d
d
tt	ddt	ddddgt	ddt	d	dddgddddgddddgg dd
d
}t|||ksXtd| d|   d|  |
 d| d|   d	|  || |	| f}dd|  d|  dt|   t| df d|  d	|  dt|  | t| | t| f| |||g| d|d|d|did
d
d
dd
d	}t|||ks€tt|d	| d|  t|d| d	|   t|d|  d|  f}d	tt| d	| d|  tt|d|  d|  tt|d|  d|  f| ||g| d|d|did
d
d
tdddgd	ddgdddgg dd
d
}t||d d |ksîtt||t|| f}dtt| |tt|| f| |g| d|did
d
d
tddgddgg dd
d
}t||k	stt|d|  t|d|  d	|  t|d|  d|  d|  f}d	tt| d|  tt|d|  d	|  tt|d|  d|  d|  f| ||g| d|d|did
d
d
tdddgdddgddd gg dd
d
}t||d d |k
sÞtt|d|  d|  d|  t|| d!|  d|  t|d"|  d#|  d|  f}d	tt| d|  d|  d|  tt|| d!|  d|  tt|d"|  d#|  d|  f| ||g| d|d|did
d
d
td$dd%gdd&d gd'd(dgg dd
d
}t||d d |kshttd	| d)||  td| d*||   td| d| |  f} d	td	t|  d)| d)|  tdt| d+|  d*|  tdt| d|  d|  f| ||g| d|d|did
d
d
tdt	d,d	t	d)d	gt	d*ddt	d+dgt	ddt	dddgg dd
d
}!t| |d d |!ksâtt|d	| d|  t|d| d	|   t|d|  d|  f}"d	tt| d	| d|  tt|d|  d|  tt|d|  d|  f| ||g| d|d|did
d
d
tdddgd	ddgdddgg dd
d
}#t|"|d d |#ks,ttt| |tt|| f}$dtt| |tt|| f| |g| d|did
d
d
tddgddgg dd
d
}%t|$| |g|%ksòttt| d|  tt|d|  d	|  tt|d|  d|  d|  f}&d	tt| d|  tt|d|  d	|  tt|d|  d|  d|  f| ||g| d|d|did
d
d
tdddgdddgddd gg dd
d
}'t|&| ||g|'ksdttt| d|  d|  d|  tt|| d!|  d|  tt|d"|  d#|  d|  f}(d	tt| d|  d|  d|  tt|| d!|  d|  tt|d"|  d#|  d|  f| ||g| d|d|did
d
d
td$dd%gdd&d gd'd(dgg dd
d
})t|(| ||g|)ksttd	t|  d)| d)|  tdt| d+|  d*|  tdt| d|  d|  f}*d	td	t|  d)| d)|  tdt| d+|  d*|  tdt| d|  d|  f| ||g| d|d|did
d
d
tdt	d,d	t	d)d	gt	d*ddt	d+dgt	ddt	dddgg dd
d
}+t|*| ||g|+ksÄttt| | | d tt|d|  d|  d- f dtt| | | d tt|d|  d|  d- f| |g| d|did
d
d.d
tddgd%dgg tdgd-ggd/d0},t |,ksÌttt| d |  d|  tt|d|  d |  f dtt| d |  d|  tt|d | d|   f| |g| d|did
d.d
td d%gd%d gg tdd  d d gd dd  d ggd1d
d2},t |,kstt|| |   t||  | g dtt| |  |  tt||  | g| |g| d|did
d.d.d
td g dgg td d gd d ggtgdggd3d4},t |,ks"tt||  |   t||  |  t
 g}-dtt| |  |   tt||  |  t
 g| |g| d|did
d.d
tgt
ggtgggd.d3td d d d gd d d d ggd5}t|-|ksbtt|| | | d  t|| | |  t|| | |  g}.d	tt| | | | d  tt|| | |  tt|| | |  g| ||g| d|d|did
d.d.d
t   g   g   gg td d d d d d gd d d d d d gd d d d d d ggtgdgdggd3d4}/t|.|d d |/ksVtt|| | |  d t|| |  | d6 t||  | |  g}0d	tt| | |  | d tt|| |  | d6 tt||   | | g| ||g| d|d|did
d.d.d
tdd gd dg ddgg td d gd d gd d ggtdgd6gggd3d4}1t|0|d d |1kst| | | |  }2t||2t||2t||2d t|	|2g}3dtt| ||  | |  tt|||  | |  tt|||  | |  d tt|||  | |  g| |||g| d|d|d|did
d.d.d
t    g    g    g    gg td d d d d d d d gd d d d d d d d gd d d d d d d d gd d d d d d d d ggtdgdgdgdggd3d4}4t|3||4ks°tt d7}5td|  d|  dt|   t| df d	t|  dtt  td	|  d|  dt|   d8t|  t|df dtt  f dtd|  d|  dt|   t| df d	t|  dtt  td	|  d|  dt|   d8t|  t|df dtt  f| |g| d|did
d.d
tdtt  gdtt  ggdd
d
d9},t |,k!sŠttdd  d  d d t| df d|  d:|  tdd  d  d d t|df | d|  f}-dtdd  d  d d t| df d|  d:|  tdd  d  d d t|df | d|  f| |g| d|did
d
d
d/tt	d;dd:gdt	d<dggtdd  d  d td=ttd=d8  t	dd8  d= td=ttd=d8  t	dd8  d=  d
|5d
d
d>}t|-|k#stt|  |  t t| | t  t| df d t|  |   t| |   t|df f}.dt|  |  t t| | t  t| df d t|  |   t| |   t|df f| |g| d|did
d
d
dt t  t gd	  d  ggd
d
d?}/t|.|/k%s^tt|
||  ||  t||| ||  f}0dtt| df||  |t|  tt|df|| |t|   f| |g| d|did
d
d
dd
d
d@
}1t|0|1k&s>tt dAtd\}6}7t dB\}}5|6|7gtt|6d dt|6  d dt| |6 t|7 dg d
tt|6dtt|7||6 gtt|6d	tt|7||6 ggd},t |,k's6ttt fdCdD tt|6d|6 |7 d  tt|7|6d|7   g}-dtt|6d|6 |7 d  tt|7|6d|7   g|6|7g|6d|7did
d.d
tdgdggtddgddggd.dE|5ttdt tgtdt ggdF}t|-|k(sttt|6d|6 |7  tt|7|6d|7   g}.dtt|6d|6 |7  tt|7|6d|7   g|6|7g|6d|7did
d
d
tddgddggd.dG|5tdgdggttdt tgtdt ggdH}/t|.|/k)sÄtd S )INz
x, y, z, wr8   zt k lr@   é   é   r;   é   r>   Tiôÿÿÿ)Zis_implicitZ	canon_eqsr?   iõÿÿÿr<   éúÿÿÿr   Ztype1)
Úno_of_equationÚeqÚfuncÚorderÚ	is_linearÚis_constantÚis_homogeneousÚ
func_coeffÚtype_of_equationÚ
is_generalr=   Ztype0)	rY   rZ   r[   r\   r]   r_   rb   ra   Úis_higher_orderé   rA   éùÿÿÿé   é   é	   éëÿÿÿiïÿÿÿéûÿÿÿé÷ÿÿÿé   é    é)   éüÿÿÿéþÿÿÿióÿÿÿiàÿÿÿi×ÿÿÿé   é   éñÿÿÿiìÿÿÿé   FÚtype2)rY   rZ   r[   r\   r]   r^   r_   rb   r`   Úrhsra   Útype3)rY   rZ   r[   r\   r]   r^   r_   r`   Úcommutative_antiderivativera   rb   Útype4)rY   rZ   r[   r\   r]   r^   r_   rb   r`   rx   rv   ra   )rY   rZ   r[   r\   r]   r_   rb   rv   r`   r^   ra   rx   é
   Út_é   )rY   rZ   r[   r\   r]   r_   rb   rv   ra   Úis_second_orderrc   é#   é5   éE   é!   )rY   rZ   r[   r\   r]   r_   rb   ra   ÚA0zg(t)ÚtauZis_transformedr{   r}   rc   )rY   rZ   r[   r\   r]   r_   rb   ra   ÚA1r}   rc   )
rY   rZ   r[   r\   r]   r_   rb   ra   r}   rc   úf gzy t_c                      s   t  d d S ©Nr<   )r   rD   ©Úeq1rF   r:   rD   rG   rH   x  rI   z.test__classify_linear_system.<locals>.<lambda>Ztype6)rY   rZ   r[   r\   r]   r_   rb   rv   r`   r^   ra   r{   r   rx   Ztype5)rY   rZ   r[   r\   r]   r_   rb   r`   r^   ra   r{   rv   r   rx   )r   r   r   r   rK   r	   r   r   r   r   r   r   r   r   r/   Ú
ValueError)8r3   ÚyÚzÚwÚkÚlÚx1Úy1Zz1Zw1Úx2Úy2Zfuncs_2rP   rQ   Úsol2Zeqs_2_1Zeqs_2_2rR   Zanswer_3rS   Zanswer_4rE   Zanswer_5rJ   Zanswer_6Zeqs_7Zanswer_7Zeqs_8Zanswer_8Zeqs_9Zanswer_9Zeqs_10Z	answer_10Zeq11Úsol11Zeq12Úsol12Úeq13Úsol13Úeq14Úsol14Úeq15Úsol15Úsol1Úeq2Úeq3Úsol3Úeq4Úsol4Z	sum_termsÚeq5Úsol5r{   r4   r5   rD   r   rG   Útest__classify_linear_systemG   s°   HL4:ÿ2:ÿþÿ4:ÿ2:ÿX((ý"
üðT((ý"

üðX<(  ÿÿ "    ýXN&ÿ   ý ù	0    þ ûXB2ÿ   ý ù	x4. 2ÿ   ý ø	X,* *ÿ   ý ø	XN&ÿ      ÿ ý00    þ ü"@2ÿ &2þ   ý ù(2 .2þ2 .2þ   ý ù(T*ÿ* **þ   ý ù(P$*ÿ      ýXX      ÿ ý86ÿ     
ÿ" üH:ÿ      2üh0* *ÿ     ÿÿ,
 
ÿ ÿúp:ÿÿ.ÿ ÿ     ÿÿÿ û$(42 ÿÿÿ2þ ÿ"     ÿ ÿ
 
ÿ* * 

 
 
ÿÿ ù^^ÿ>ÿÿ*ÿÿÿÿ     ÿ ûFBÿHBÿ     ÿR   ûTPÿ2ÿÿÿ,ÿÿÿÿ    2 û420ÿ   ÿ    ý, ÿ..ÿÿT:ÿ     ÿÿ   *üP6ÿ        *ür€   c                     sä  ddl m} m}m} ddlm tdtddD ]}||||ks2tq2tddD ].}||}t	|| }||ks\tq\tddD ]:}| ||dd }| ||fd	d}||kstq| ddgd
dgg}| t
tgt t
gg}||ks t| ddgddgg}| dt	  t t	 t
  dt	  t gdt	  t dt	  t t	 t
  gg}||ksÈt| dddgdd
dgdddgg}| d t	d  dt	d  d  t	d d  d t	d  dt	d  d  dt	d  d  t	d d t	d d  gd t	d  t	d d  t	d d  d t	d  t	d d  dt	d  d  t	d  d t	d d  gd t	d  d t	d  t	d gg}||ksNt| ddddgddddgdddtd d gddtdd tdd gg}| t	t	 d t	d d  d t	  dt	d d   dt	  d t	d d  d t	  dt	d d   dt	  gdt	 t	d d  dt	d d   dt	  t	d d  d dt	d d   dt	  gddt	d d  d t	d d   t	d d  d gddt	d d  d  t	d d  d t	d d  gg}||ksNt| ddddgd
dddgddddgddd
dgg}| t
tddgt t
ddgddt
tgddt t
gg}||ksæt| ddddgd
dddgddddgddd
dgg}| t
tt
 t gt t
 t t
 gddt
tgddt t
gg}||ks t| dtgtdgg}| t	t d t	t  d  t	t d t	t  d  gt	t d t	t  d  t	t d t	t  d  gg}||ksTt| dddgdddgdddgg | dgddggtt fdd tt fdd ttfdd ttfdd d S )Nr   )r   ÚeyeÚzeros)Ú
matrix_expr:   r<   rd   c                 S   s   | |kr| d S dS ©Nr<   r   rD   ©ÚiÚjrD   rD   rG   rH     rI   z!test_matrix_exp.<locals>.<lambda>c                    s   | |krt | d   S dS rš   )r   r©   ©r:   rD   rG   rH     rI   r=   r;   rj   ro   r>   rA   rf   rg   rV   rX   r?   é   r@   rp   r|   é0   c                      s    d d d df S ©Nr;   rD   rD   ©ÚMr§   r:   rD   rG   rH   ò  rI   c                      s    d dd d f S r¯   rD   rD   r°   rD   rG   rH   ó  rI   c                      s
    S ©NrD   rD   ©ÚM1r§   r:   rD   rG   rH   ô  rI   c                      s    d dd df S r   rD   rD   r³   rD   rG   rH   õ  rI   )Úsympy.matrices.denser   r¥   rŠ   Úsympy.solvers.ode.systemsr§   r   ÚrangerK   r   r   r   r
   r   r/   r   )r   r¥   rŠ   ÚnÚAZexpAtrD   )r±   rŽ   r§   r:   rG   Útest_matrix_exp  s¢    &<<þ 
0ý
ýVFÿtDDû



üü



ü"&ü
BBþ rº   c            	      C   s  t dtd\} }}t d}| |||||g}t| | ||¡| |d||  t||d || |¡| | g}tt| ||df| |d||  tt|||| | || d gg}t||d d ||ksætt| | |¡|| |¡| | t|| |¡d | ||| t|| |¡| |g}tt| ||d| | tt|||t| |||  tt|||| |gtt| ||d| | tt|||t| ||| tt|||| |gg}t||||ks
td S )Núf g hr8   r3   r;   r<   )r   r   r	   r   r   r%   rK   r   )	r4   r5   r6   r3   rF   Úeqs1r   Úeqs2r   rD   rD   rG   Útest_canonical_odesø  s    JP`VTÿrŸ   c            5      C   s  t dtd\} }}}}t d\}}}}tt|||||tt|||||g}	t||tt| t||tt| g}
t|	|
kstt	|	|
dddgfks¬ttt|||d|| tt|||d|| g}t||ttd|  t||ttd|  g}t||ks*tt	||dddgfksFttt|||||| tt|||||| g}t||tt||  t||tt||  g}t||ksÄtt	||dddgfksàttt|||||| tt|||||| g}t||tt||  t||tt||  g}t||ks^tt	||dddgfkszttt||||| tt|||||g}t||t t
| tt|  t||tt| tt
|  g}t||kstt	||dddgfks ttt|||d|| tt|||d|| g}t||t t
d|  ttd|   t||ttd|  tt
d|   g}t||ksÀtt	||dddgfksÜttt|||t|| tt|||t|| g}t||t tt |  ttt|   t||ttt |  ttt|   g}t||kstt	||dddgfksttt|||| || tt|||||| g}t||t t tt | |  tt tt| |   t||ttt | |  ttt| |   g}t||ksZtt	||dddgfksvttt||||||| tt||||||| g}t||td	td  ttd |  td	td  ttd|   t||tttd |  tttd|   g}t||ksHtt	||dddgfksdttt||||||| tt||||||| g}t||t ttd|   t||tttd|   g}t||ksôtt	||dddgfksttt|||d|| || tt||||| d||  g}t||ttd|  t
| ttd|  t|  t||ttd|  t| ttd|  t
|  g}t||ksàtt	||dddgfksüttt|||||d||  tt|||d|| || g}t||t t|  ttd|   t||tt|  ttd|   g} t|| ksštt	|| dddgfksÄttt|||d
|| || tt||||| d||  g}!t||t| td|  tt td|   t||t td|  t| td|   g}"t|!|"k	stt	|!|"dddgfk	sttt|||||| tt|||||| g}#t||t t| |  tt||   t||tt| |  tt||   g}$t|#|$k
sBtt	|#|$dddgfk
s^ttt|||||| tt|||||| g}%t||t | t| t||   t||  t| t|t||   t||   t||tt| t||   tt|t||    g}&t|%|&ksBtt	|%|&dddgfks^ttt|||||| |||  tt|||||| g}'t||dt | t||t|d d
| |    d  |t|d d
| |    dt | t||t|d d
| |    d  |t|d d
| |     t||tt||t|d d
| |    d  tt||t|d d
| |    d   g}(t|'|(ksÀtt	|'|(dddgfksÜttt|||||| || tt|||||| || g})t||t| t|t|d d	   t|d d	 d	  t| t| t|d d	   t|d d	 d	   t||tt|t|d d	   tt| t|d d	    g}*t|)|*ksîtt	|)|*dddgfks
ttt|||dtt|||dg}+t||tt||tg},t|+|,ks`tt	|+|,dddgfks|ttt|||d|| || tt|||||g}-t||t| t| tt t|  t||tt| t| t|  g}.t|-|.kstt	|-|.dddgfks6ttt|||||tt||||||| g}/t||tt| t||t| t| tt|  g}0t|/|0ksŒtt	|/|0dddgfksØttt|||d|| tt||||||| g}1t||dt td|  t||ttd|  tt|  g}2t|1|2ksjtt	|1|2dddgfksttt|||d|| tt|||||g}3t||ttd|  t||tt| g}4t|3|4ksütt	|3|4dddgfkstd S )Nz	f g x y hr8   za b c tTr   r;   r>   rp   r<   r?   )r   r   r	   r   ÚC1r   ÚC2r   rK   r   r   r   r   r   )5r4   r5   r3   r   r6   ÚaÚbÚcr:   rŒ   r   rœ   r   Úeqs3r   Úeqs4r¡   Úeqs5r£   Úeqs6Úsol6Úeqs7Úsol7Úeqs8Úsol8Úeqs9Úsol9Úeqs10Úsol10Úeqs11r   Úeqs12r   Úeqs13r   Úeqs14r   Úeqs15r   Zeqs16Úsol16Úeqs17Úsol17Úeqs18Úsol18Úeqs19Úsol19Úeqs20Úsol20Zeqs21Úsol21Úeqs22Úsol22rD   rD   rG   Ú#test_sysode_linear_neq_order1_type1  sx   ÿÿÿÿÿÿÿÿÿ" ÿÿ*(ÿÿ,*ÿÿ<2ÿÿJ2ÿÿÿ"$ÿ88ÿ""ÿ(&ÿ"$ÿ0.ÿÿ,*ÿÿ\:ÿ&ÿfÿÿÿ`þ""ÿbÿÿBþÿÿ"ÿ($ÿÿ$ÿÿ$ÿÿÿrâ   c            g      C   s ,  t d} td}td}td}td}td\}}}}}	}
tt|| | | ||  |||   |||   |
||   tt|| | |||  |||   |||   tt|| | | | |	 ||  tt|| | |	||  |
||   g}t|| t| | t||
  t|
 |   || |
   t||| |
  |d  |||	 |
   |	|
   t|  || |	   |	| | | | |	    t	t|  ||    t|| tt| t|
 |   || |
   t| || |
  ||  |d  ||	|
    t|  || |	   |	| | | | |	    t	t|  ||    t|| t || |	 |
  t|  || |	   |	 t|| tt|
 |   tt|  || |	    g}t
||ksØtt||dd	d	d	d	gfksøttd
td\}}}}}}td\}}tddd\}}tt|| | |||  tt|| | |||  tt|| | | | ||  g}t|| tt| t|  ||   ||   t|| t | t|  ||   ||  t t|| tt|  ||   g}t
||kstt||dd	d	d	gfks4td||  ||  d||   t|| |  d||  ||  d||   t|| |  d||  ||  d||   t|| |  g}t|| ttd|   td tdt d  ttd|    ttd|  tdt d ttdd    t|| td tdt d  ttd|   ttd|  tdt d ttdd    t|| tttd|   tttd|    ttd|    g}t
||ksÞtt||dd	d	d	gfksüttt|| | || tdd d||   ||  || tdd  tt|| | || tdd d||   || tdd  tt|| | || tdd || tdd  tt|| | || tdd || tdd  g}t|| ttd|   t|  td|    t|| ttd|   dt td|    t|| dt td|   t	td|   tdd  t|| ttd|   t	td|    g}t
||ksŽtt||dd	d	d	d	gfksÔtt||  | ¡|| t||  | ¡|| t||  | ¡|| t||  | ¡|| g}t|| tt|  t|| tt|  t|| tt|  t|| t	t|  g}t
||kstt||dd	d	d	d	gfks¶ttt|| | || ||  tt|| | || ||  tt|| | || tdd ||  tt|| | || d || d  g}t|| tt|  t|  t|   dt	 |  t| tdd   dt dt	  t| tdd   t|| tt|  t	|  t| tdd   tdt	  t| tdd   t|| t	|  t| tdd  d td t	 t| tdd   t|| tt| tdd  d t	|  t| tdd  d  g} t
|| k
stt|| dd	d	d	d	gfk
s®ttt|| | || tt|| | || tt|| | || tt|| | || tt|| | || g}!t|| tt|  t|| tt|  t|| tt|  t|| t	t|  t|| tt|  g}"t
|!|"kstt|!|"dd	d	d	d	d	gfksŒttt|| | d||  ||  tt|| | d||  tt|| | d||  tt|| | || d||   tt|| | d||  g}#t|| ttd|   t|  td|    t|| ttd|   t|| ttd|   t|| t	td|   t|  td|    t|| ttd|   g}$t
|#|$kstt|#|$dd	d	d	d	d	gfks*ttt|| | || tt|| | || tt|| | || g}%t|| tt|  t|| tt|  t|| tt|  g}&t
|%|&ksÂtt|%|&dd	d	d	gfksàttt|| | | | ||  tt|| | |||  tt|| | |||  g}'t|| t ||  t|  ||   | t|| tt||   t|| tt|  ||   t g}(t
|'|(ksŽtt|'|(dd	d	d	gfksÒttt|| | |||  tt|| | | | ||  tt|| | |||  g})t|| tt| t|  ||   |  t|| t ||  t|  ||   | t|| tt|  ||   t g}*t
|)|*ksžtt|)|*dd	d	d	gfksÖttt|| | |||  tt|| | |||  tt|| | | | ||  g}+t|| tt| t|  ||   ||   t|| t | t|  ||   ||  t t|| tt|  ||   g},t
|+|,ksÀtt|+|,dd	d	d	gfksÞttdtd\}-}.}/td\}0}1}2tt|-| | d|-|  |.|  tt|.| | |0|-|  g}3t|-| tt| t|0d d   t|0d d  tt|  t|0d d   t|0d d   t|.| tt| t|0d d   tt|  t|0d d    g}4t
|3|4ksøtt|3|4dd	d	gfksttt|-| | d|.|  d|/|   tt|.| | d|-|  d|/|   tt|/| | d|-|  d|.|   g}5t|-| dt ttd |  td t tdd! ttdd!    ttd |  ttdd! td t tdd!    t|.| ttdd ttd |  td t tdd! ttdd!    ttd |  ttdd! td t tdd!    t|/| ttttd |    tttd |    g}6t
|5|6ksÊtt|5|6dd	d	d	gfksèttdt|-| |  d"|.|  d"|/|   tdt|.| |  d|-|  d|/|   tdt|/| |  d|-|  d|.|   g}7t|-| tttd |  td t tdd# ttd$d#    ttd |  ttdd# td t tdd#    t|.| tttd |  td t tdd% ttdd#    ttd |  ttdd# td t tdd%    t|/| ttttd |    tttd |    g}8t
|7|8kstt|7|8dd	d	d	gfksºttt|| | d&||  tt|| | d'||  d||   tt|| | d||  d(||   d||   f}9t|| d)t td&|   d* t|| d+t td&|   d* dt td|   d(  t|| ttd&|   ttd|    ttd|    g}:t
|9|:ksÖtt|9|:dd	d	d	gfksôttt|| | d||  d,||   tt|| | d-||  d(||   tt|| | d,||  d(||   g};t|| ttd(d ttd.|  td.t td,d/ ttd0d/    ttd.|  ttd&d/ td.t td,d/    t|| ttd,d ttd.|  td.t td(d/ ttd1d/    ttd.|  ttd1d/ td.t td2d/    t|| ttttd.|    tttd.|    g}<t
|;|<ks°tt|;|<dd	d	d	gfksÎttdt|| |  d3||  d3||   tdt|| |  d4||  d5||   tdt|| |  d"||  d"||   g}=t|| ttdtd |  tdt tdd t   tdtd |  ttdt tdd    t|| ttdtd |  tdt tdd t   tdtd |  ttdt td-d    t|| tttdtd |    ttdtd |    g}>t
|=|>ksrtt|=|>dd	d	d	gfksttt|| | d||  ||  tt|| | d||  d||   ||  tt|| | d||  ||  g}?t|| t| d  td|   d | dt t  td|    tt dt  td|    t|| t| d  td|   d | dt t  td|    tdt  td|    t|| t| d  td|   | dt dt   td|    dt dt  td|    g}@t
|?|@ks,tt|?|@dd	d	d	gfksJttt|| | d||  ||  d||   tt|| | d||  ||  d||   tt|| | d||  d||   g}At|| ttd|   t| ttdd td    t| td ttd-d    t|| t|  ttdd td   t| td ttd-d    t|| ttd|   tt|   tt|   g}Bt
|A|Bks°tt|A|Bdd	d	d	gfksÎttt|| | d||  tt|| | d"||  f}Ct|| td t td6td |   d tdt tdtd |   d  t|| ttd6td |   ttdtd |    g}Dt
|C|DksŠtt|C|Ddd	d	gfksÂttt|| | d||  d||   tt|| | d"||  d7||   g}Et|| td%td8  t| td8d9  d  tdd: td%td8  t| d9td8  d  tdd:  t|| tt| td8d9  d  tt| d9td8  d   g}Ft
|E|FksÔtt|E|Fdd	d	gfksðttt|| | || ||  tt|| | d||  d||   g}Gt|| td td(t d  ttd(|  d  t| tdd  ttd(|  d td(t d ttdd   t| tdd   t|| tttd(|  d  t| tdd  tttd(|  d  t| tdd   g}Ht
|G|Hk!s4tt|G|Hdd	d	gfk!sPtt d;dd}0||  | ¡|0||   ||  | ¡|0||   g}It|| tt|0|   tt|0|    t|| tt|0|   tt|0|    g}Jt
|I|Jk!sött|I|Jdd	d	gfk"sttt|-| | d	tt|.| | |-| d|.|   ||  |1|2  tt|| | |.| d||   ||  |1|2  tt|| | |/| ||  d||   |1|2  tt|/| | d	g}Kt|-| d-t dt  t|.| dt dt  ttd|  |1|2    t	t|  tdd  |1|2    tt|  dtd  |1|2    t|| t dt  tdt	 t|  tdd  |1|2    tdt t|  dtd  |1|2    t|| tttd|  |1|2    t	t|  tdd  |1|2    tt|  dtd  |1|2    t|/| tg}Lt
|K|Lk$sPtt|K|Ldd	d	d	d	d	gfk$srttt|-| | d|-|  tt|.| | d|-|  d(|.|   g}Mt|-| d<t td|   d t|.| ttd|   ttd(|    g}Nt
|M|Nk%stt|M|Ndd	d	gfk%s0ttt|-| | d=t |-|  d|.|   tt|.| | dt |.|  g}Ot|-| dt t tdt |   d ttd=t |    t|.| ttdt |   g}Pt
|O|Pk%sêtt|O|Pdd	d	gfk&sttt|-| | d=t |-|  tt|.| | dt |.|  g}Qt|-| ttd=t |   t|.| ttdt |   g}Rt
|Q|Rk&stt|Q|Rdd	d	gfk&s°ttt|-| | d	tt|.| | d	g}St|-| tt|.| tg}Tt
|S|Tk'stt|S|Tdd	d	gfk's"ttt|-| | |-| tt|.| | d	g}Ut|-| tt|  t|.| tg}Vt
|U|Vk'stt|U|Vdd	d	gfk's ttt|-| | |.| tt|.| | d	g}Wt|-| tt|   t|.| tg}Xt
|W|Xk(stt|W|Xdd	d	gfk(sttt|-| | d	tt|.| | |-| g}Yt|-| tt|.| t|  t g}Zt
|Y|Zk(stt|Y|Zdd	d	gfk(sttt|-| | d	tt|.| | |.| g}[t|-| tt|.| tt|  g}\t
|[|\k(sþtt|[|\dd	d	gfk)sttt|-| | |-| tt|.| | t|.|  g}]t|-| tt|  t|.| ttt|   g}^t
|]|^k)stt|]|^dd	d	gfk)s¬ttt|-| | t|-|  tt|.| | t |.|  g}_t|-| ttt|   t|.| ttt |   g}`t
|_|`k*s.tt|_|`dd	d	gfk*sJttt|-| | t|.|  tt|.| | d	g}at|-| tt tt |   t|.| tg}bt
|a|bk*sžtt|a|bdd	d	gfk*sÔttt|-| | t|.|  tt|.| | t|-|  g}ct|-| t tt |   ttt|    t|.| ttt |   ttt|    g}dt
|c|dk+sxtt|c|ddd	d	gfk+sttt|-| | d |.| d t|-|  t|.| |  d	g}et|-| t t|  tt|   t|.| tt|  tt|   gt|-| t t|   tt|   t|.| tt|   tt|   gg}t
|e|k,stt|D ]"}ft|e|fdd	d	gfk,sxt,qxd S )>Nr:   ÚZ0ÚZ1ÚZ2ÚZ3zk01 k10 k20 k21 k23 k30r;   Tr   zx y z u v wr8   zk2 k3za_b a_c©Úrealr?   r@   r>   rp   rV   r=   rh   iøÿÿÿr­   é%   é,   ro   r|   r®   r7   za, b, cr<   é   é   rU   rl   iðÿÿÿé'   rf   rg   rd   éØ   éÑ   éÌ   rW   rA   é³   éª   ri   r   re   rq   rs   rr   rX   rn   i±  é+   é   rÁ   rj   rk   )r   r   r   r	   r   r¿   rÀ   r   ÚC3ÚC4r   rK   r   r   r   r   r   r   ÚC5r   )gr:   rã   rä   rå   ræ   Zk01Zk10Zk20Zk21Zk23Zk30rŒ   r   r3   r   r   ÚuÚvr   Úk2Zk3Za_bZa_crœ   r   rÄ   r   rÅ   r¡   r¢   r£   rÇ   rÈ   Zeq7rÊ   rË   rÌ   Zeq9rÎ   rÏ   rÐ   rÑ   r   rÒ   r   r4   r5   r6   rÁ   rÂ   rÃ   rÓ   r   rÔ   r   rÕ   r   Úeq16rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   Úeq21rß   rà   rá   Zeqs23Úsol23Úeq24Úsol24Zeqs25Úsol25Úeq26Úsol26Úeq27Úsol27Zeq28Zsol28Zeq29Zsol29Zeq30Zsol30Zeq31Zsol31Zeq32Zsol32Zeq33Zsol33Zeq34Zsol34Zeq35Zsol35Zeq36Zsol36Zeq37Zsol37r   ÚsolrD   rD   rG   Ú(test_sysode_linear_neq_order1_type1_slow­  sæ   @2$&ýHÿÿÿÿÿÿþN
ÿÿÿ
ÿÿ84ù  þ.0þ,,,þZÿ^@ýF>22ý,,6(ý \T (&ýVÿLD@ü B ÿPÿ"""ü,,ü"F@ þ,"þ þ*,"þ þ.0þ"ÿXÿBþ&&&þB2ÿH2ÿ4ü***þ>2ÿ>2ÿ4ü@2ÿ 88þ&&&þ<ÿ
2ÿ<ÿ
2ÿ4ü***þLÿLÿ<ü"."þ\X\þ..&þTF0þ8R8ÿ&&ÿ<ÿÿÿ@þ&ÿDBÿ\þ4T222üZÿÿ
Pÿÿ
hú"DLL\@<(,$,$,$,$40:60,8Z>" ÿ$"ÿþr  c            K      C   sž  t dtd\} }}}t d\}}}}}}	}
t d\}}tt| ||| ||| d tt|||| | || d g}t| |tt d|d   |td   t||t d|d   |td   g}t||ksâtt||d	d
d
gfksüttt| ||| ||| d tt|||| ||| d g}t| |t tt	d|   | d t||ttt	d|   | d g}t||ks€tt||d	d
d
gfksÀttt| ||| |d tt|||| |d g}t| |tt	| d t||tt	| t d|  d g}t||ksJtt||d	d
d
gfksfttt| ||| |t	| tt||||t	| | | || g}t| |tt	| |t	|  t||t| t	| tt	|  |d t	|  g}t||kstt||d	d
d
gfks8ttt| ||d| | | || tt|||| ||| g}t| |tdt
d  t	t
d|  tdt
d  t	t
d |   |tdd  tdd t||tt	t
d|  tt	t
d |   |tdd  g}t||ks8tt||d	d
d
gfksTttt| ||d| | d||  tt|||d|| tt|||||t	| g}t| |tt	d|  tdd tt	d|   t||tt	d|  t||tt	| |t	|  g}t||ks6tt||d	d
d
d
gfksTttt| ||d| | | tt|||||g}t| |tt	| d|  d t||tt	| g}t||ksÖtt||d	d
d
gfksòttt| ||| |d||  tt|||d| | || dt	|  g}t| |tt	| td|  tt	| td|   t	|td| d   t	|td| d   t||tt	| td|  tt	| td|   g}t||ksütt||d	d
d
gfksttt| |||d| |  || ||  tt|||| |d||  || ||  tt||||	|| d||  ||  g}t| |t t	d| ||   tt	| t
dd  ||    tt	| dt
d  ||    ttddd| |	 dd t||t
d t t	| t
dd  ||   t
dt t	| dt
d  ||    ttdd||	 dd t||tt	d| ||   tt	| t
dd  ||    tt	| dt
d  ||    ttdd|d|	  dd g}t||k	s8tt||d	d
d
d
gfk	sVttt| ||d| | | || d tt|||d| | | || d g}t| |tt d|d   d|d   |td   t||td|d   d|d   |td   g} t|| k
s(tt|| d	d
d
gfk
sDttt| ||d dt| ||  d dt|
 | | t||| d
g}!t| |t| t||t| |
 t|
  |d |
 tdd  gt| |td|  t||t| |
 t|
  |d |
 tdd  gg}"t|!|"ks6t|"D ]"}#t|!|#d	d
d
gfks:tq:t dd	d}$t d}%t d}&t d}'t d}(t d}td}td}
t d})tt|
||||tt||||$|
|d  g}*t|
|tt	t
|$|  |$tdd  tt	t
|$ |  |$tdd   d t||tt	t
|$|  tt	t
|$ |   g}+t|*|+ks|tt|*|+d	d
d
gfkstt|
||)t	t
|$ |(  d t	t
|$ |( d  |'t	t
|$ |(  dt
|$   t	t
|$|  |)t	t
|$|(  d t	t
|$|( d  |'t	t
|$|(  dt
|$   t	t
|$ |   d t|||)t
|$ t	t
|$ |(  d t
|$t	t
|$ |(  d  |'t	t
|$ |(  d  t	t
|$|  |)t
|$ t	t
|$|(  d t
|$t	t
|$|(  d  |'t	t
|$|(  d  t	t
|$ |   g},t|*|
|&|)||&|%id |,ksftt|*|,d	d
d
gfksttt| ||| ||| d! tt|||d| | d||  d" g}-t| |t dt
d  t	|dt
d   d tdt
d  t	|t
dd   d  td#d t||tt	|dt
d   tt	|t
dd    tdd g}.t|-|.kstt|-|.d	d
d
gfksªttt| ||| ||| d$ tt|||d| | || d" g}/t| |t
dt t	| tt
d|  d t
dt t	| tt
d|  d  d%tt
d| d  d  d%tt
d| d  d  t||tt	| tt
d|  tt	| tt
d|   d&tt
d| d  d  d&tt
d| d  d  g}0t|/|0kstt|/|0d	d
d
gfks0ttt| ||| |d||  | tt|||d| | d||  | g}1t| |t dt
d'  t	|dt
d'  d  d tdt
d'  t	|dt
d'  d  d  d|  | t||tt	|dt
d'  d  tt	|dt
d'  d   ttddd| | dd g}2t|1|2ksdtt|1|2d	d
d
gfksttt| |||tt||||g}3t| |t||  t||t||  g}4t|3|4ksætt|3|4d	d
d
gfksttt| ||d
tt||||| | | g}5t| |tt||t| |t| |   g}6t|5|6ksxtt|5|6d	d
d
gfksttt| |||tt|||| || g}7t| |t||  t||t||d  d  |t|   g}8t|7|8kstt|7|8d	d
d
gfks2ttt| |||tt|||| |d||  | g}9t| |dt ||  t||ttt	d|   || d  ttdd|d|  dd g}:t|9|:ksàtt|9|:d	d
d
gfksüttt| ||| || tt||||g};t| |tt	| | t||t||  g}<t|;|<ksntt|;|<d	d
d
gfksttt| ||||| tt|||d
g}=t| |t|t|   t||tg}>t|=|>ksôtt|=|>d	d
d
gfksttt| ||| |d||  | tt||||g}?t| |dt tt	|  | d| |  d|  t||t||  g}@t|?|@ksªtt|?|@d	d
d
gfksÆttt| ||||| tt|||d|| | g}At| |ttt	d|  d  |d  |d| |  d  t||tt	d|  |d  g}Bt|A|Bksttt|A|Bd	d
d
gfksttt| ||| || tt|||d| | | g}Ct| |tt	| d | t||tt	| t d|  |d| |   g}Dt|C|Dks.tt|C|Dd	d
d
gfksJttt| ||| |d||  | tt|||d| | d||  | g}Et| |dt tt	d|  d  d| d| |  d  ttdd(|d|  dd t||ttt	d|   |d| |  d  ttdd(|d|  dd g}Ft|E|FksXtt|E|Fd	d
d
gfkstttt| ||d| | || | tt|||d| | d||  d|  g}Gt| |tdt  |dt |   t||dt |dt d|    g}Ht|G|Hks*tt|G|Hd	d
d
gfksFttt|||d|
| d tt|
||d|| d|
|  d g}It||td dt d  t	|  td|  dt d td  t	|  td|   d)td| d  d  d)td| d  d  t|
|tt	|  td|  tt	|  td|   dtd| d   dtd| d   g}Jt|I|Jkstt|I|Jd	d
d
gfksŽtd S )*Núf g h kr8   zx t a b c d yzk1 k2r@   rd   rV   r;   Tr   r>   r<   rj   rk   r?   ro   rp   F©Úevaluaterr   rz   rs   r=   rž   ©ZpositiveÚx_0Út_0r:   r3   r   ÚT©Úicsrh   rt   é   éQ   é:   é¹   r   é1   rg   )r   r   r	   r   r¿   rÀ   r   rK   r   r   r   r   rõ   r   r   r   r   )Kr4   r5   r6   r   r3   r:   rÁ   rÂ   rÃ   Údr   Zk1rú   rŒ   r   rœ   r   rÄ   r   rÅ   r¡   rÆ   r£   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   r   Zs11rž   Úx0Út0r  r  r  rÒ   r   Zsol12br   r   r   r   r   r   rû   rÖ   Zeq17rØ   Zeq18rÚ   Zeq19rÜ   Zeq20rÞ   rü   rß   Zeq22rá   Zeq23rý   rþ   rÿ   Zeq25r   r  r  r  r  rD   rD   rG   Ú#test_sysode_linear_neq_order1_type2  s`   "$ÿ(&ÿ""ÿ&$ÿÿ$ÿ*ÿ 4ÿ&ÿVÿ@þ&þ2 þÿ ÿ".ÿ6ÿÿ8þ.2.þdÿ\ÿbÿü**ÿ40ÿ, ÿDHÿ ÿR2ÿ6 ÿÿ*ÿÿþýFÿÿ:ÿÿþû
&"*ÿXÿBþ"&ÿ.&ÿþþ>ÿÿý&*ÿ4*ÿÿÿ>ÿþÿÿÿ ÿÿ(ÿ&ÿDÿÿÿÿÿ&ÿ4ÿÿ< ÿÿ0ÿ&*ÿ:ÿ.ÿþ&.ÿ$$ÿL0(ÿþþ:ÿÿýr  c            !      C   sŽ  t dtd\} }}}}}t d\}}}t ddd}	tt| |	|	|	||	 | |	 tt||	|	|	 | |	 ||	 g}
t| |	tt|	 t|	d d  tt|	 t|	d d   t||	tt|	 t|	d d  tt|	 t|	d d   g}t	|
|kst
t|
|dddgfks.t
tt| |||d || || |  tt|||d|d  | | d	|d  | ||  g}t| |td
t d
 td
d	td
   d  t|d	 d	td
  d |d d   t|d	 d	td
  d |d d  td
t d
 td	td
 d
  tdd    t||t|d	 d	td
  d |d d  td
d	td
   d td
t tdd
   t|d	 d	td
  d |d d  td	td
 d
  d td
t tdd
    g}t	||kst
t||dddgfks*t
t| | |¡|| | || t|| |¡| | |||  g}t| |td tt d  t|d d t|   t|d d t|  td tt tdd    t||tt d td  t|d d t|   t|d d t|  tt d ttdd    g}t	||ksVt
t||dddgfksrt
t| | |¡|| ||| ||  t|| |¡|| ||| ||  t|| |¡|| ||| ||  g}t| |t d	 td	  dt d	  td	 td	  td	  td	|d  d   t||dt d	 td	  td	  td	 td	  td	  td	|d  d   t||t d	 dt d	  td	  td	 td	  td	  td	|d  d   g}t	||ksþt
t||ddddgfkst
t| | |¡|d | ||| ||  t|| |¡|d | ||| ||  t|| |¡|d | ||| ||  g}t| |t d	 td	  d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|d	   t||t d	 dt d	  td	  td	 td	  td	  t|d	   g}t	||kst
t||ddddgfksºt
tt| |||| ||| || ||  tt||||| ||| || ||  tt||||| ||| || ||  tt||||| ||| || ||  g}t| |t d td  td  d	t d  td td  td  td  td|d    t||d	t d td  td  td  td td  td  td  td|d    t||t d d	t d  td  td  td td  td  td  td|d    t||t d td  d	t d  td  td td  td  td  td|d    g}t	||k
st
t||dddddgfk
s2t
t ddd}tt| |||| | || tt|||||| | | g}t| |tt|d d  t| tt|d d  t|  t||tt|d d  t| tt|d d  t|  g}t	||kst
t||dddgfks8t
tt| ||d| | | d||  tt|||d| | d| ||  g}t| |tdtd td  ddtd|d  d d|   td td  td|d  d d|    t||td td  td|d  d d|   td td  td|d  d d|    g}t	||kspt
t||dddgfkst
tt| ||d| | | |d ||  tt||||d  | | d| ||  g}t| |td tt d  tt|d	  d	 d|d  d   td tt d  tt |d	  d	 d|d  d    t||tdtt d td  ddtt |d	  d	 d|d  d   tt d td  tt|d	  d	 d|d  d    g}t	||kst
t||dddgfkst
tt| |||d || d| | |  tt||||d  | | d|d  d|  ||  g}t| |tddtd   d tdt d  t|d	 tdd  d d|d  d   tddtd   d tdt d  t|d	 dtd  d d|d  d    t||tdt d tddtd   d  t|d	 dtd  d d|d  d   tdt d tddtd   d  t|d	 tdd  d d|d  d    g}t	||kst
t||dddgfkst
tt| ||d| | | |d ||  tt|||d|d  | | d| d|d   ||  g}t| |t|| t|| t|d ttd| | ttd|d  d|  | ||d  |  t||t|| t||t|d ttd| | ttd|d  d|  | ||d  | ttd| |ttd|d  d|  | ||    g} t	|| ks°t
d S )Nzf g h k x0 y0r8   úx t aÚrTrç   r;   r   r>   rg   é"   rV   r=   rp   r?   r   r@   Fr  rh   éM   é   r<   )r   r   r	   r   r¿   r   r   rÀ   r   r   rK   r   r   r   r   r   rõ   rö   r   r,   )!r4   r5   r6   r   r  Úy0r3   r:   rÁ   r  rŒ   r   rœ   r   rÄ   r   rÅ   r¡   rÆ   r£   rÇ   rÈ   r   rÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   r   rD   rD   rG   Ú#test_sysode_linear_neq_order1_type3  sÎ    "$ÿ@@ÿ*:ÿVTÿRÿTÿþ"$ÿffÿT*ÿRPRþ\.ÿJHJþ2222ý^\^^ý ""ÿ@@ÿ**ÿj`ÿ.0ÿzÿ.<ÿ°°ÿ.>ÿj¢ÿr  c                  C   sº  t dtd\} }}}t d\}}}t ddd}tt| ||| ||||  |d  tt|||| | | || | g}t| |tt| t|d d  tt| t|d d   t|t|d d  t	|d t|  t|d d  |t|  t|d d   |  t|t|d d  t	|d t|  t|d d  |t|  t|d d   |  t||tt| t|d d  tt| t|d d   t|t|d d  t	|d t|  t|d d  |t|  t|d d   |  t|t|d d  t	|d t|  t|d d  |t|  t|d d   |  g}	t
||	kstt||	dddgfks®ttt| ||| ||||  | tt|||| | | || t| g}
t| |tt| t|d d  tt| t|d d   t|t|d d  t	|t|  t|d d  t| t| t|d d   |  t|t|d d  t	|t|  t|d d  t| t| t|d d   |  t||tt| t|d d  tt| t|d d   t|t|d d  t	|t|  t|d d  t| t| t|d d   |  t|t|d d  t	|t|  t|d d  t| t| t|d d   |  g}t|
d	d	d
|gkstt|
|dddgfks6ttt| |||| ||| ||  | tt||||| ||| ||  | tt||||| ||| ||  d g}t| |ttdd ttdd  ttdd  |d d  |tdd  td td  td  t|d tdd   tdtt ttd| d  t|d tdd  d  tdd t||ttdd ttdd  ttdd  |d d  |tdd  td td  td  t|d tdd   tdtt ttd| d  t|d tdd  d  tdd t||ttdd ttdd  ttdd  |d tdd  |tdd  td td  td  t|d tdd   tdtt ttd| d  t|d tdd  d  tdd g}t
||ks&tt||ddddgfksDttt| |||| ||| ||  t| tt||||| ||| ||  t| tt||||| ||| ||  t| g}t| |ttdd ttdd  ttdd  td td  td  t|d tdd   t	t|t|d tdd  |t|d tdd   t||ttdd ttdd  ttdd  td td  td  t|d tdd   t	t|t|d tdd  |t|d tdd   t||ttdd ttdd  ttdd  td td  td  t|d tdd   t	t|t|d tdd  |t|d tdd   g}t
||k
sÂtt||ddddgfk
sàttt| |||| ||| || || d  tt||||| ||| || || d  tt||||| ||| || || d  tt||||| ||| || || d  g}t| |ttdd ttdd  ttdd  ttdd  td td  td  td  td|d    tdd t||ttdd ttdd  ttdd  ttdd  td td  td  td  td|d    tdd t||ttdd ttdd  ttdd  ttdd  td td  td  td  td|d    tdd t||ttdd ttdd  ttdd  ttdd  td td  td  td  td|d    tdd g}t
||ksºtt||dddddgfksÚttt| |||d | ||| || || d  tt||||d | ||| || || d  tt||||d | ||| || || d  tt||||d | ||| || || d  g}t| |ttdd ttdd  ttdd  ttdd  td td  td  td  t|d tdd   tdd t||ttdd ttdd  ttdd  ttdd  td td  td  td  t|d tdd   tdd t||ttdd ttdd  ttdd  ttdd  td td  td  td  t|d tdd   tdd t||ttdd ttdd  ttdd  ttdd  td td  td  td  t|d tdd   tdd g}t
||ksÜtt||dddddgfksüttt| ||| ||| || t| t| tt|||| ||| || t| t| tt|||| ||| || t| t| g}t| |t d td  dt d  td td  td  t|dt| d    t|dt| d  t	td| td| t|  t| |  t||dt d td  td  td td  td  t|dt| d    t|dt| d  t	td| td| t|  t| |  t||t d dt d  td  td td  td  t|dt| d    t|dt| d  t	td| td| t|  t| |  g}td t
|d	d	d
|kstW 5 Q R X t||ddddgfksÂttt| ||| ||| || || t| t| tt|||| ||| || || t| t| tt|||| ||| || || t| t| tt|||| ||| || || t| t| g}t| |t d td  td  dt d  td td  td  td  t|dt| d    t|dt| d  t	td| td| t|  t| |  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| d  t	td| td| t|  t| |  t||t d dt d  td  td  td td  td  td  t|dt| d    t|dt| d  t	td| td| t|  t| |  t||t d td  dt d  td  td td  td  td  t|dt| d    t|dt| d  t	td| td| t|  t| |  g}td t
||kstW 5 Q R X t||dddddgfks¶td S )Nr  r8   r  r  Trç   r;   r   F©ÚsimplifyÚdoitr<   r=   r>   rV   é   rp   rh   rA   r?   ro   )r   r   r	   r   r¿   r   r   rÀ   r   r,   r   rK   r   r   r&   r   r   rõ   r   r   r   rö   r   )r4   r5   r6   r   r3   r:   rÁ   r  rŒ   r   rœ   r   rÄ   r   rÅ   r¡   rÆ   r£   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rD   rD   rG   Ú#test_sysode_linear_neq_order1_type4d  s   Vvÿÿ\ÿvÿÿ\ÿþVr ÿÿF
ÿÿÿr ÿÿF
ÿÿÿý...þJ,ÿ<þþJ,ÿ<þþBÿ,ÿ<þþú	222þ>ÿÿ.ÿÿ>ÿÿ.ÿÿ>ÿÿ.ÿÿú	6666ýDÿÿÿÿÿDÿÿÿÿÿDÿÿÿÿÿDÿÿÿÿÿú ::::ýDÿÿÿÿÿDÿÿÿÿÿDÿÿÿÿÿDÿÿÿÿÿú Rÿÿÿ6ÿ2ÿÿÿ,ÿÿ0ÿÿÿ,ÿÿ2ÿÿÿ,ÿÿú	
"Rÿÿÿÿÿ4ÿ>þBÿÿÿ,ÿÿ@ÿÿÿ,ÿÿBÿÿÿ,ÿÿBÿÿÿ,ÿÿ÷
r$  c               	   C   sè  t dtd\} }t d\}}tt| ||d| | || | tt|||| |d||  | g}t| |t | t|d   t||t| t|d   g}t||ksºtt||dddgfksÔttt| ||d| | || d | tt||||| | d||  | g}t| |t|d  |tt	dd	   |t
| t	d
d  t	dd t||t|d  |t
| d  |tt	d
d	   t	dd g}t||ksÈtt||dddgfksätd S )Nr   r8   zx x_r;   r>   Tr   r<   r?   r=   rp   )r   r   r	   r   r¿   rÀ   r   rK   r   r   r   )r4   r5   r3   Úx_rŒ   r   rœ   r   rD   rD   rG   Ú)test_sysode_linear_neq_order1_type5_type6Ý  s    P>**ÿF@ÿr&  c                   C   s~  t dtd\} }t d}tt| ||dfd| | || tt|||df| | g}t| |t | t|  t| t|  tt t|   tt t|  t||t| t|  t| t|  tt t|   tt t|  g}t	||kst
t||dddgfks*t
t| | |d¡dt|| |d¡| |g}t| |tt|  t||t|d  d t|d  d  t t|  g}t	||ksžt
t||dddgfksÔt
tt| ||dfd| | tt|||df| | d||  g}t| |d	t ttd |  d	t ttd|   t||tdt | ttd |  tdt | ttd|   ttdt  ttd |   ttdt  ttd|   g}t	||ksút
t||dddgfkst
tt| ||dfd| | || tt|||dfd|| g}	t| |t| ttd|  d	 t| ttd |  d	  td	 tdt d
  ttd |   ttd| tdt d
 ttdd	    t||tdt ttd|  d tdt ttd |  tdd  g}
t	|	|
ks^t
t|	|
dddgfkszt
t| | |d¡| |t|| |d¡| |g}t| |t t|  tt|  t||t t|  tt|  t t|  g}t	||kst
t||dddgfks4t
tt| ||df| ||| tt|||df| | || g}t| |tt|d  d  t t|d  d  |tt   t||t t|d  tdd  t|  t|d  tdd  g}t	||kst
t||dddgfks.t
tt| ||df| ||| d tt|||df| ||| d g}t| |t t|  tdt ttd|  d  tdt ttd |  tdd  tdd t||tt|  tdt ttd|  d  tdt ttd |  tdd  tdd g}t	||ksbt
t||dddgfks~t
tt| ||df| ||| d tt|||df| | || d g}t| |tt t|d  d  |d	 d  |d td tdd   |tt   t||t t|  t|d  tdd  |d	 tdd  |d td tdd   g}t	||kst
t||dddgfks¬t
t dtd\}}t d\}}tt|||dfd|| d||  tt|||df||d||  g}t||tddtd   ttdd  t| ttdd   d ttdtd  ddtd   t| tdtd   d  tddtd   ttdd  t|ttdd   tdd  ttdtd  ddtd   t|tdtd   tdd  t||tdtd  ttdd  t| ttdd   tdd ttdtd  tdd  t| tdtd   tdd  tdtd  ttdd  t|ttdd   d  ttdtd  tdd  t|tdtd   d  g}t	||ksRt
t||dddgfksnt
td|| t|||df dt|||  dtd|| dt|||  t|||df dg}t||tdtd  ttd| tdtd d  d  d tdtd  ttd| tdtd d  d  tdd  tdtd  ttd| tddtd   d  d  tdtd  ttd| tddtd   d  tdd  t||tdtd  ttd| tdtd d  d  tdd tdtd  ttd| tdtd d  d  tdd  tdtd  ttd| tddtd   d  d  tdtd  ttd| tddtd   d  d  g}t	||ksøt
t||dddgfkst
tt| ||dft| ||| | ||d   |||d   tt|||df|||d  g}t| |ttdd  tdd |tddtdtdd    t|tddtdd    dtd  tdd  t|dtd   dtd   t|dtd   dtd   t||tdtd  tdd |tddtdtdd    t|tddtdd    dtd  tdd  g}t	||ksÀt
t||dddgfksÜt
tt| ||df|| | tt|||df||| g}t| |tt| tt|  t||tt| tt|  g}t	||ksrt
t||dddgfkst
tt|||df|d	t||| d
t|||   tt|||df|dt||| dt|||   g}t||tttd| tdtt t d tdtt t tdd    ttd| tdtt t tdd tdtt t td	d    t||tttd| tdtt t tdd tdtt t tdd    ttd| tdtt t tdd tdtt t tdd    g}t	||ks^t
t||dddgfkszt
d S )Nr   r8   r3   r;   Tr   r>   rV   r?   r|   r=   r<   rU   úx, yút, lr@   ró   rh   é=   é/   rd   ém   é_   é   r   rê   é7   r  én   )r   r   r	   r   rÀ   r   rõ   r¿   rö   r   rK   r   r   r   r   r   r   r*   r+   r   r   r   ) r4   r5   r3   rŒ   r   rœ   r   rÄ   r   rÅ   r¡   rÆ   r£   rÇ   rÈ   rÉ   rÊ   rË   rÌ   r   r:   r   rÏ   rÐ   rÑ   r   rÓ   r   rÔ   r   rÕ   r   rD   rD   rG   Ú test_higher_order_to_first_orderð  sà   &ÿNLÿ0L(ÿ:J
ÿÿÿÿ&ÿj,ÿPþ4X"$ÿ<Bÿ&&ÿ\ÿZÿþ&(ÿRLÿ
ÿ*&ÿNÿÿÿÿÿÿÿÿ*ÿ
ÿþPÿ
ÿÿÿÿÿÿÿÿÿÿÿþü44ÿFÿ&ÿÿÿ&ÿÿÿ
ÿÿÿþLÿ&ÿÿÿ&ÿÿÿ
ÿÿÿþüD"ÿ*ÿ
ÿ
ÿÿÿÿ
ÿþý*ÿ
ÿ
ÿÿÿüÿ  ÿ::ÿPJÿJÿ
Jÿþr0  c               	   C   sP  t dtd\} }t d}| ||| dtt|   dt| ||  t| ||df | ||| dtt|   dt|||  t|||df g}t| |t ttd|  d  td t	d  t|  t
|  td t	d  t|  t|  dddt  tt|  t|d  d   dddt  tt|  t
|d  d   t||tttd|  d  td t	d  t|  t
|  td t	d  t|  t|  dddt  tt|  t|d  d   dddt  tt|  t
|d  d   g}t||ks0tt||dd	d	gfksLtd S )
Nr   r8   r3   r;   rp   r<   r@   Tr   )r   r   r   r   r   r	   r¿   rö   rÀ   rõ   r   r   r   rK   r   )r4   r5   r3   rÍ   rÎ   rD   rD   rG   Ú"test_higher_order_to_first_order_9k  s,    BBÿB ÿ*ÿ*þ@ ÿ*ÿ*þýr1  c                  C   s  t dtd\} }t d}t dtd\}}t d\}}td|| t|||df dt|||  d	td|| dt|||  t|||df d	g}t||tdtd
  td| tdtd
 d   tdd tdtd
  t	d| tdtd
 d   d  t
dtd
  td| tddtd
    tdd  tdtd
  t	d| tddtd
    d  t||tdtd
  t	d| tdtd
 d   tdd tdtd
  td| tdtd
 d   tdd  t
dtd
  t	d| tddtd
    d  tdtd
  td| tddtd
    d  g}t||ks~tt||dd	d	gfkstd S )Nr   r8   r3   r'  r(  r?   r;   r|   r   r@   rh   r=   T)r   r   r	   r   r¿   r   r   r   rÀ   r   rõ   rö   r   rK   r   )r4   r5   r3   r   r:   r   rÒ   r   rD   rD   rG   Ú#test_higher_order_to_first_order_12|  sL    44ÿDÿÿÿ2ÿÿ2þDÿÿÿ
ÿ
ÿÿ2þýr2  c                  C   sŽ  t dtd\} }t d\}}}}}}}t| | |d¡d||| |¡ ||  t|| |d¡d|| | |¡ | |  g}	t| |t| |ttt|  tttd|   d tt|  tt td|   d  tt	 t|  tttd|   d  tt	 t|  tt td|   d  |t
|f  t||t| |ttt t|  tttd|   d tt t|  tt td|   d  t	t|  tttd|   d  t	t|  tt td|   d  |t
|f  g}
t|	ddd|
gks0tt|	|
dd	d	gfksLttt| |||d
| t||| d
||  tt||||d| t| || d| |  f}t| |t| |ttt|  tdtd td|  d  d tt|  tdtd td|  d  d  dtd t	 t|  tdtd td|  d  d  dtd t	 t|  tdtd td|  d  d  |t
|f  t||t| |ttdt t|  tdtd td|  d  d tdt t|  tdtd td|  d  d  t	t|  tdtd td|  d  d  t	t|  tdtd td|  d  d  |t
|f  g}t|ddd|gksÎtt||dd	d	gfksêttt|||df|| tt| ||dfd	g}t||tt|  || |d  d  t| |t	t|  g}t||ksptt||dd	d	gfksttt| ||df| ||d  tt|||df||| |d  g}t| |tt|d  td|  tt|d  td|   t||t	t|d  tt| |  |tdd  tt|d  tt||  |tdd   g}t||kstt||dd	d	gfks°td S )Nr   r8   úx t x_ t_ d a mr;   rp   Fr   Tr   rh   rd   r>   rA   r-  rV   r?   r=   r<   )r   r   r	   r   r¿   r,   rÀ   r   r   rõ   r   rö   r&   rK   r   r   r   r   r   )r4   r5   r3   r:   r%  r{   r  rÁ   Úmrœ   r   rÄ   r   rÆ   r£   rÇ   rÈ   rD   rD   rG   Ú"test_second_order_to_first_order_2  s    ..ÿ^(ÿ*ÿ
ÿf$ÿ&ÿ
ÿþhNÿÿ<ÿ<þ
þ^ÿÿ0ÿ
ÿÿÿÿ
þýÿ(ÿ"&ÿ@6,ÿÿr5  c                  C   s  t dtd\} }t d\}}}}}}}t| | |d¡d| ||| |¡ ||  t|| |d¡d| || | |¡ | |  g}	t| |t| dt | td|   ttd|   dt | t	d|   tt
d|   t||dt | t	d|  tt
d|   dt | td|   ttd|   t|  g}
t|	|
ksdtt|	|
dddgfkstd S )Nr   r8   r3  r;   rp   Tr   )r   r   r	   r   r¿   rÀ   r   r   rõ   r   r   rö   r   rK   r   )r4   r5   r3   r:   r%  r{   r  rÁ   r4  rŒ   r   rD   rD   rG   Ú&test_second_order_to_first_order_slow1œ  s    22ÿ``ÿr6  c                  C   s  t dtd\} }t d\}}}}}}}tt| ||df|t| t||| ||t|  tt|||df|t| t| || | |t|  g}	t| |t| |ttt|  tt|t	t|  ttt|  d tt|  tt| t	t|  ttt| d  t
t|  tt|t	t|  ttt|  d  t
t|  tt| t	t|  ttt| d  |t|f  t||t| |tt t|  tt|t	t|  ttt|  d tt|  tt| t	t|  ttt| d  t
t|  tt|t	t|  ttt|  d  t
t|  tt| t	t|  ttt| d  |t|f  g}
t|	ddd|
gksætt|	|
dddgfkstd S )	Nr   r8   r3  r;   Fr   Tr   )r   r   r	   r   r   r¿   r,   rÀ   r   r   rõ   r   rö   r&   rK   r   )r4   r5   r3   r:   r%  r{   r  rÁ   r4  rÅ   r¡   rD   rD   rG   Ú&test_second_order_to_first_order_slow4Ì  sD    <<ÿL:ÿ$ÿÿÿ:ý
ýN:ÿ$ÿÿÿ:þ
þür7  c                  C   s.  t dtd\} }}}t d}| |||||||g}tt| ||d| | tt|||| |tt|||||tt|||||d || g}t| |dt td|  t||ttd|  t t||tt| t||td td|  d tt|  g}t	||ks2t
t||dddddgfksRt
tt| ||d| | ftt|||| |fftt|||||ftt|||||d || ffh}| |t ||| |h||t ||||hi| |tt| ||d| | ||tt|||| |||tt|||||||tt|||||d || if}	| |||||||h||| |f||||fhg}
d	d
 t|||D |ksÞt
t|||	ksòt
dd t|	d D |
kst
tt| ||d| | tt|||| |tt|||||tt|||| |d || g}t| |ttd|  t||ttd|  d t t||tt| t||td td|  d tt|  g}t	||kst
t||dddddgfks,t
ttt| ||d| | ftt|||| |ftt|||| |d || fgttt|||||fgh}| |t ||| |h||t ||| |hi| |tt| ||d| | ||tt|||| |||tt|||||||tt|||| |d || if}| |||||||h||| |f||| |fhg}dd
 t|||D |ksÀt
t|||ksÔt
dd t|d D |ksôt
tt| ||d| | tt||||| | tt|||||tt|||| |d || g}t| |ttd|  t||ttd|  d t |d d  t||tt| t||td td|  d tt|  g}t	||ksþt
t||dddddgfkst
ttt| ||d| | ftt||||| | ftt|||| |d || fgttt|||||fgh}| |t ||| |h||t ||| |hi| |tt| ||d| | ||tt||||| | ||tt|||||||tt|||| |d || if}| |||||||h||| |f||| |fhg}dd
 t|||D |ksºt
t|||ksÎt
dd t|d D |ksît
tt| |||| | d||  tt|||| ||||  | tt|||||tt|||| |d || g}t| |td tdt d  tdt|t|d  d td|   d |t|d  d td|   d  | d  ttd| t|d  d td|   d td| t|d  d td|   d  |d  t|d d td|   td tdt d  tdt|t|d  d td|   d |t|d  d td|   d  | d  ttd| t|d  d td|   d td| t|d  d td|   d  |d  t|d d td|    t||td t d td  t|t|d  d td|   d |t|d  d td|   d  |d  tdttd| t|d  d td|   d td| t|d  d td|   d  | d  t|d d td|   tdt d td  t|t|d  d td|   d |t|d  d td|   d  |d  tdttd| t|d  d td|   d td| t|d  d td|   d  | d  t|d d td|    t||tt| t||tt| t|ttt|d d td|   d tt|d d td|   d  tdt t|d d td|   d  tdt t|d d td|   d  tdt|d d td|   t|t|d  d td|   d |t|d  d td|   d  | d  t|d d td|  ttd| t|d  d td|   d td| t|d  d td|   d  | d  tdt|d d td|   t|t|d  d td|   d |t|d  d td|   d  | d  t|d d td|  ttd| t|d  d td|   d td| t|d  d td|   d  | d  d t|  |  g}ttt| |||| | d||  tt|||||| | | | gttt|||| |d || gfttt|||||gfh}| |||h||| |h||t ||| |hi| |tt| |||| | d||  ||tt|||||| | | | ||tt|||||||tt|||| |d || if}| |||||||h| |||f||| |f||| |fhg}dd
 t|||D |ks(t
t|||ks<t
dd t|d D |ks\t
t|ddd|gksvt
t||dddddgfkst
tt| |||| | d||  tt|||||| | | tt|||||tt|||| |d || g}t| |td tdt d  t|d d td|   td tdt d  t|d d td|    t||td t d td  t|d d td|   tdt d td  t|d d td|    t||tt| t||tt| t|ttt|d d td|   d tt|d d td|   d  tdt t|d d td|   d  tdt t|d d td|   d  d t|  |  g}ttt| |||| | d||  tt|||||| | | gttt|||| |d || gfttt|||||gfh}| |||h||| |h||t ||| |hi| |tt| |||| | d||  ||tt|||||| | | ||tt|||||||tt|||| |d || if}| |||||||h| |||f||| |f||| |fhg}dd
 t|||D |ksŒt
t|||ksÐt
dd t|d D |ksðt
t|ddd|gks
t
t||dddddgfks*t
d S )Nr  r8   r3   r;   r?   r>   Tr   c                 S   s   h | ]}t d d |D qS )c                 s   s   | ]}t |V  qd S r²   ©Útuple©Ú.0ZsccrD   rD   rG   Ú	<genexpr>ö  s     ú4test_component_division.<locals>.<setcomp>.<genexpr>r8  ©r;  ZwccrD   rD   rG   Ú	<setcomp>ö  s     z*test_component_division.<locals>.<setcomp>c                 S   s   g | ]}t |qS rD   ©Úset©r;  ÚelementrD   rD   rG   Ú
<listcomp>ø  s     z+test_component_division.<locals>.<listcomp>r|   rd   c                 S   s   h | ]}t d d |D qS )c                 s   s   | ]}t |V  qd S r²   r8  r:  rD   rD   rG   r<    s     r=  ©Ú	frozensetr>  rD   rD   rG   r?    s     c                 S   s   g | ]}t |qS rD   r@  rB  rD   rD   rG   rD    s     c                 S   s   h | ]}t d d |D qS )c                 s   s   | ]}t |V  qd S r²   r8  r:  rD   rD   rG   r<  (  s     r=  rE  r>  rD   rD   rG   r?  (  s     c                 S   s   g | ]}t |qS rD   r@  )r;  r   rD   rD   rG   rD  *  s     c                 S   s   h | ]}t d d |D qS )c                 s   s   | ]}t |V  qd S r²   rE  r:  rD   rD   rG   r<  P  s     r=  r8  r>  rD   rD   rG   r?  P  s     c                 S   s   g | ]}t |qS rD   r@  rB  rD   rD   rG   rD  R  s     Fr   c                 S   s   h | ]}t d d |D qS )c                 s   s   | ]}t |V  qd S r²   rE  r:  rD   rD   rG   r<  j  s     r=  r8  r>  rD   rD   rG   r?  j  s     c                 S   s   g | ]}t |qS rD   r@  rB  rD   rD   rG   rD  l  s     )r   r   r	   r   r¿   r   rÀ   rõ   rö   r   rK   r   rA  r'   r(   r)   rF  r   r,   r&   )r4   r5   r6   r   r3   rF   rŒ   r   Zcomponents1Zeqsdict1Zgraph1rœ   r   Zcomponents2Zeqsdict2Zgraph2rÄ   r   Zcomponents3Zeqsdict3Zgraph3rÅ   r¡   Zcomponents4Zeqsdict4Zgraph4rÆ   r£   Zcomponents5Zeqsdict5Zgraph5rD   rD   rG   Útest_component_divisionÞ  s<   "ý,ý 6>ÿ2    "ýÿ<  "ý ,ý $þý2    "ýÿ<  "ý,,ý $þý2    "ýÿ<  &&"ýZ
ÿÿÿÿF
ÿÿÿÿÿþ.
ÿÿ$ÿÿÿ.,ÿÿÿÿþþvbÿÿÿþ<$ÿÿÿ4,ÿÿÿÿþþ`*ÿ*ÿ
ÿPÿÿÿ
ÿ\ÿÿþþX
ÿÿÿÿüH,ÿÿÿûúúúõ(&ÿ(þý6, &  "ýÿJ   &""ýpr`*ÿ*ÿÿÿÿý("ÿ(þý6, "  "ýÿJ  rG  c               
      sx  t d\} t dtd\}}}ttfdd ttfdd tddgdd	gd	d
gg tt fdd tdddgdddggttfdd ||g}t| ¡| ¡ |t| ¡|g}t||}t	|d |d\\ }}|}	t
tdd tdd   ttdd tdd    ttd d tdd  ttd d tdd    t
ttdd tdd    tttd d tdd    g}
tt|	t| jd|
ksútttfdd ttfdd ttfdd ttfdd ttfdd ttfdd tddgdd	gd	d
gg tdd gtt fdd tdddgdddggtd gttfdd tt fdd tt fdd tddgddgg td d d d gt
t  t dd   dd   dd  d    d  t
t  dd   dd   dd  d    d  g}tt dd d!gd|ksút||g}t| ¡| ¡ | t| ¡|g}t||}t	|d |d\\ }}|}	t
 t d td d   d tdt
 t d td d   d  tdt ttd  d d   d  tttd  d d   d  t d td d  tttd  d d   d"td  td ttd  d d   d"td    d  tdt d td d   tttd  d d   d"td  td ttd  d d   d"td    d  tdttd  d d   ttd  td td d   d  d  ttd  d d  ttd  td td d   d  d  t
t d td d   tttd  d d    t d td d  tttd  d d   d"td  td ttd  d d   d"td     ttd  d d  ttd  td td d   d   g}
tt|	|d#gd|
ks4tt
 t d td d   d tdt
 t d td d   d  tdt ttd  d d   d  tttd  d d   d  t
t d td d   tttd  d d    g}tt|	dd$gd|k	sDtttfd%d ttfd&d tdg dgg t \}tt fd'd tt fd(d tggggt\}ttfd)d ttfd*d ttfd+d tt fd,d ttfd-d ||g}t| ¡||  t| ¡ | | g}t||}t	|d |d\\ }}|}	t
d tt d  ttd  d   t
d tt d  tt d  d    t t
 d td  tt d  d   tt
 d td  ttd  d    g}
tt|	t| jd|
ks®ttt|	d.d$t| jd|
ksÔttdgdgg tt fd/d ttfd0d ttfd1d ttfd2d ttfd3d ttfd4d ttfd5d tdg dgg td gt \}tt fd6d tggggtdd gt\}ttfd7d tt fd8d ttfd9d tt fd:d ttfd;d || || || g}t||  | ¡| || ||  ||   |  t||  | ¡| || ||  ||   |  t||  | ¡| || ||  ||   d g}t||| }t	|d || d\\ }}|}	td<| d  d }td| d  d }td| |  d |d  | d  tdd | }d| | d }td| |  d |d  d|  d  tdd | }t
| d t
d  t| d  td  t| d  dt d  || d  |d  | |d  t
| d dt
 d  t| d  td  t| d  td  || d  |d  | |d  t
| d t
d  t| d  dt d  t| d  td  || d  d| d  | d| d  g}
tt|	| |d#t| jd|
ks ttt|	| |d=d>t| jd|
ksHttdgdgg tt fd?d t
 d td  dt d  t
d td  td  td| d  d   dt
 d td  td  t
d td  td  td| d  d   t
 d dt d  td  t
d td  td  td| d  d   g}tt|	| d=d d@t| jd|ksttd S )ANzt x ar»   r8   c                      s
   t d S r   ©r$   rD   r¬   rD   rG   rH   w  rI   z"test_linodesolve.<locals>.<lambda>c                      s
   t  S r²   rH  rD   ©rÁ   r:   rD   rG   rH   x  rI   r<   r;   r?   rV   c                      s
   t  S r²   rH  rD   ©r   r:   rD   rG   rH   {  rI   r>   c                      s
   t  S r²   rH  rD   ©ÚA2r:   rD   rG   rH   ~  rI   r   r@   )Ú	variablesc                      s   t d t d gdS ©Nr<   ©rÂ   ©r$   r   rD   r¬   rD   rG   rH     rI   c                      s    t  ttt gdS ©NrO  ©r$   r   r   r   rD   rI  rD   rG   rH     rI   c                      s   t tdg  d dS ©Nrd   r;   rO  rP  rD   r¬   rD   rG   rH     rI   c                      s$   t t d gtt dS ©Nrz   rO  ©r$   r   r   r   rD   rI  rD   rG   rH     rI   c                      s   t d  d dS rS  rH  rD   r¬   rD   rG   rH     rI   c                      s   t  tt dS rQ  ©r$   r   r   rD   rI  rD   rG   rH     rI   c                      s   t  dS rQ  rH  rD   ©r   Úb1r:   rD   rG   rH     rI   c                      s   t  dS rQ  rH  rD   ©rL  Úb2r:   rD   rG   rH     rI   c                      s   t  d dd d f dS ©Nr;   rO  rH  rD   rW  rD   rG   rH     rI   c                      s&   t  d dd d f d d dS )Nr;   r<   rO  rH  rD   rW  rD   rG   rH     rI   r=   rr   rz   rs   ru   T)rÂ   Útyper"  rj   rO  )r\  c                      s   t  d  S )Nrz   rH  rD   r¬   rD   rG   rH   Á  rI   c                      s   t   S r²   rH  rD   rI  rD   rG   rH   Â  rI   c                      s   t  d d d df dS ©Nr<   ©ÚBrH  rD   )r   ÚB1r:   rD   rG   rH   Æ  rI   c                      s   t  ddS r]  rH  rD   rJ  rD   rG   rH   Ç  rI   c                      s   t  d dd d f dS ©Nr;   r^  rH  rD   ©rL  ÚB2r:   rD   rG   rH   Ë  rI   c                      s   t  ddS ra  rH  rD   rK  rD   rG   rH   Ì  rI   c                      s   t  ddS )NZtype31)r_  r\  rH  rD   rb  rD   rG   rH   Í  rI   c                      s   t  dS ©Nr^  rH  rD   )r   rc  r:   rD   rG   rH   Ï  rI   c                      s   t  dS rd  rH  rD   )rL  r`  r:   rD   rG   rH   Ð  rI   rw   c                      s
   t  S r²   rH  rD   rJ  rD   rG   rH   Þ  rI   c                      s   t  d  t d gdS )Nrz   r<   rO  rP  rD   r¬   rD   rG   rH   á  rI   c                      s$   t   ttt gdS rQ  rR  rD   rI  rD   rG   rH   â  rI   c                      s   t td  g  d dS rS  rP  rD   r¬   rD   rG   rH   ä  rI   c                      s,   t t dt  gtt dS rT  rU  rD   rI  rD   rG   rH   å  rI   c                      s   t d    d dS rS  rH  rD   r¬   rD   rG   rH   ç  rI   c                      s"   t  d  tt dS r[  rV  rD   rI  rD   rG   rH   è  rI   c                      s   t  d d d df dS rN  rH  rD   rW  rD   rG   rH   í  rI   c                      s   t  d dd d f dS r[  rH  rD   rY  rD   rG   rH   ò  rI   c                      s   t  dS rQ  rH  rD   )r   rZ  r:   rD   rG   rH   ô  rI   c                      s   t  dS rQ  rH  rD   )rL  rX  r:   rD   rG   rH   õ  rI   c                      s   t  dS ©N)rÂ   r_  rH  rD   )r   rc  rX  r:   rD   rG   rH   ÷  rI   c                      s   t  dS re  rH  rD   )rL  r`  rZ  r:   rD   rG   rH   ø  rI   rA   ry   )rÂ   r\  c                      s   t  dS rQ  rH  rD   rW  rD   rG   rH     rI   )r\  r"  )r   r   r/   r   r   r   r	   r   r%   r   r¿   r   r   r   rÀ   r   r$   r   Zfree_symbolsrK   r,   r#   r   ÚNotImplementedErrorrõ   )r3   r4   r5   r6   r[   rZ   Zceqr   rÂ   r¹   r  r   Ú_Z_x1Z_x2Z_x3Z_x4Z_x5rD   )r   rL  r`  rc  rÁ   rX  rZ  r:   rG   Útest_linodesolver  s   >TÿFþ"FBÿÿÿ
Bpÿÿ$ÿ2ÿ
ÿ4ÿÿÿÿÿJÿ
ÿÿÿþþ:ÿÿÿÿüTûLÿJÿ
ÿÿÿÿ2ÿþú
"pÿÿ$ÿBþ" JXZÿ"& ...þ04^^fý&ÿÿ
Hÿrh  c               	   C   s  t dtd\} }}td}|d t| }|d t| }tt| ||d| | | | |||  d| ||  tt|||d| | | || ||  d| ||  tt|||d| | | |||  d| | ||  f}td	 t| W 5 Q R X d S )
Núx, y, zr8   r:   r>   r;   r?   r@   rA   T)	r   r   r   r   r   r	   r   r   r   )r3   r   r   r:   r4   r5   r   rD   rD   rG   Ú!test_linear_3eq_order1_type4_slow  s    >>  ÿÿÿ
rj  c                  C   sÄ   t d\} }}}}}td}td}|| t||| || || ||   }|| t||| || t|||  || ||   }	||	g}
t|
ddd\}t|
|dddgfksÀtd S )Nzi, r1, c1, r2, c2, tr   r   Fr   Tr   )r   r   r   r&   r   rK   )rª   Úr1Úc1Úr2Úc2r:   r   r   r   r   rZ   r  rD   rD   rG   Ú"test_linear_neq_order1_type2_slow1'  s    .<ro  c                  C   s<  t rtd tddd} tddd}tddd}tddd\}}}tddd\}}}td	tdd
\}	}
}| | | t|	||  || || ||
|    | | | t|
||  |||| ||	|    | | | t|||  || |
| ||	|    g}t|}t||ddddgfks8td S )NúToo slow for CI.r4  Trç   Úqr:   ze1:4zb1:4zv1:4)r9   rè   r   )	r.   r1   r   r   r   r   r   r   rK   )r4  rq  r:   Úe1Úe2Ze3rX  rZ  Zb3Zv1Zv2Zv3Úeqsr  rD   rD   rG   Ú2test_linear_new_order1_type2_de_lorentz_slow_check8  s    868ýru  c                  C   sŒ   t d\} }}}}}}}td}td}	t|| |¡d|  || |	||  t|	| |¡| | |	| d| ||  ||  g}
t|
ddd\}t|
|dd	d	gfksžtd S )
NzRC t C Vs L R1 V0 I0ÚVr   r=   r<   Fr   Tr   )r   r   r	   r   r&   r   rK   )ÚRCr:   ÚCZVsÚLZR1ZV0ZI0rv  r   Úsystemr  rD   rD   rG   Ú'test_linear_neq_order1_type2_slow_checkP  s    fr{  c               	   C   sä  t dtd\} }}td}|d t| }|d t| }tt| ||d| | | | |||  d| ||  tt|||d| | | || ||  d| ||  tt|||d| | | |||  d| | ||  f}t|}d	d
 |D }t|d  d|d  t|  d|d   dt|d   dt|  d }	td}
dt	 |	 |
 dt
 |	 |
  dt |	 |
  }dd|d  d|	 |
  dt|  d  }t|d d ||	 |
 d  t| }t|d d ||	 |
 d  t| }t|d d |d d  d| t|  d|  t| }dt	 |	 |
 dt
 |	 |
  dt |	 |
  }dd|d  d|	 |
  dt|  d  }dt	 d dt
 d  dt d  ||  }dt	 d dt
 d  dt d  ||  }t| ||| ||  |t	t
   t|||| ||  t|||dt	 d dt
 d  d t d  ||   |dt	 d d t
 d  dt d  ||    |t	t
   g}||ksÂtt||d!d"d"d"gfksàtd S )#Nri  r8   r:   r>   r;   r?   r@   rA   c                 S   s   g | ]}t |qS rD   ©r"   ©r;  r  rD   rD   rG   rD  g  s     z1_linear_3eq_order1_type4_long.<locals>.<listcomp>rV   r|   r­   rm   l   €XW` l   Rl+p r<   istql   +RH l   ,N£ ifd i iÅÅ  i ieb  i  i;:ÿÿi°1  iXþÿÿi  é§   iš  Tr   )r   r   r   r   r   r	   r   r   r   r¿   rÀ   rõ   r   r   rK   r   )r3   r   r   r:   r4   r5   r   Ú
dsolve_solÚdsolve_sol1Zx_1Zx_2Zx_3Zx_4Zx_5Zx_6Zx_7Zx_8Zx_9Zx_10Zx_11r  rD   rD   rG   Ú_linear_3eq_order1_type4_long[  sL    >>  ÿÿÿN0,((<0,,,F*ÿ
ÿÿÿ
þr  c                  C   s®   t dtd\} }t d}tt| |||| | |d ||  | tt|||d|d  | | |d|d   ||  d g}t|}t||dddgfksªtd S )	Nr   r8   r3   r;   r>   r<   Tr   )r   r   r	   r   r   r   rK   ©r4   r5   r3   rt  r  rD   rD   rG   Ú!test_neq_order1_type4_slow_check1|  s    .>ÿr  c               	   C   sä   t dtd\} }}td}tt| ||||| | | || d tt|||||| | | || d tt||||| | | || || g}td t|}W 5 Q R X t||ddddgfksàtd S )Nr7   r8   r3   r<   rz   Tr   )	r   r   r   r	   r   r   r   r   rK   )r4   r5   r6   r3   rt  r  rD   rD   rG   Ú!test_neq_order1_type4_slow_check2  s    ...ý
r  c                  C   sŠ  t dtd\} }t d}tt| |||| | || t| tt||||d |||  | | g}t| |td tt d  tt|d t	|d  d t|   d |d t	|d  d t|   d  tt	|d  d t|   t| d  tt	|d  d t|   t| d  | d  tt |d  t	|d  d t|   d t|d  t	|d  d t|   d  t	|d  d t|  t| d  t	|d  d t|  t| d  |d  t	|d d t|   td tt d  tt|d t	|d  d t|   d |d t	|d  d t|   d  tt	|d  d t|   t| d  tt	|d  d t|   t| d  | d  tt |d  t	|d  d t|   d t|d  t	|d  d t|   d  t	|d  d t|  t| d  t	|d  d t|  t| d  |d  t	|d d t|    t||t t d td  t|d t	|d  d t|   d |d t	|d  d t|   d  tt	|d  d t|   t| d  tt	|d  d t|   t| d  |d  ttt |d  t	|d  d t|   d t|d  t	|d  d t|   d  t	|d  d t|  t| d  t	|d  d t|  t| d  | d  t	|d d t|   tt d td  t|d t	|d  d t|   d |d t	|d  d t|   d  tt	|d  d t|   t| d  tt	|d  d t|   t| d  |d  ttt |d  t	|d  d t|   d t|d  t	|d  d t|   d  t	|d  d t|  t| d  t	|d  d t|  t| d  | d  t	|d d t|    g}||fS )Nr   r8   r3   r;   )
r   r   r	   r   r   r¿   r   rÀ   r,   r   r  rD   rD   rG   Ú_neq_order1_type4_slow3  s   **þB$ÿ(ÿ(þþþÿÿ(ÿÿÿÿÿ$þþþþÿü:$ÿ(ÿ(þþþÿÿ(ÿÿÿÿÿ$þþþþÿüûB$ÿ(ÿ(þþþFÿÿ$ÿÿÿÿÿþþýûL(ÿ(ÿþþÿ.(ÿ$ÿ$þþþýûûôr  c                  C   s&   t  \} }t| ddd|gks"td S )NFr   )r  r&   rK   ©rt  r  rD   rD   rG   Útest_neq_order1_type4_slow3º  s    
r  c                  C   s(   t  \} }t| |dddgfks$td S )NTr   )r  r   rK   r  rD   rD   rG   Ú!test_neq_order1_type4_slow_check3Â  s    
r  c                  C   s<   t rtd t \} }t| }dd |D }||ks8td S )Nrp  c                 S   s   g | ]}t |qS rD   r|  r}  rD   rD   rG   rD  Ñ  s     zGtest_linear_3eq_order1_type4_long_dsolve_slow_xfail.<locals>.<listcomp>)r.   r1   r  r   rK   ©rZ   r  r  r  rD   rD   rG   Ú3test_linear_3eq_order1_type4_long_dsolve_slow_xfailÈ  s    
r  c               	   C   sP   t rtd t \} }td t| }W 5 Q R X dd |D }||ksLtd S )Nrp  Tc                 S   s   g | ]}t |qS rD   r|  r}  rD   rD   rG   rD  â  s     zHtest_linear_3eq_order1_type4_long_dsolve_dotprodsimp.<locals>.<listcomp>)r.   r1   r  r   r   rK   r  rD   rD   rG   Ú4test_linear_3eq_order1_type4_long_dsolve_dotprodsimpÖ  s    

r  c                  C   s6   t rtd t \} }t| |ddddgfks2td S )Nrp  Tr   )r.   r1   r  r   rK   )rZ   r  rD   rD   rG   Ú'test_linear_3eq_order1_type4_long_checkæ  s    
r  c                     s  t dtd\t dt ¡ t ¡ ggtt ttd   ttttd   gg} tdd| ksÀtt	t
dd  t	t
fd	d t	t
fd
d t	t
fdd t ¡d d  t ¡d d d  f t	t fdd t	t fdd t	t fdd t	t fdd t	t fdd t	t fdd t	t fdd d S )Nr   r8   r3   r;   T)rF   r:   r"  c                   S   s   t dS r   ©r&   rD   rD   rD   rG   rH   ø  rI   z$test_dsolve_system.<locals>.<lambda>c                      s
   t  dS r   r  rD   ©rt  rD   rG   rH   ù  rI   c                      s   t  dS r   r  rD   )rt  rF   rD   rG   rH   ú  rI   c                      s   t  d d S r   r  rD   )rt  rF   r3   rD   rG   rH   û  rI   rU   rV   rW   r>   c                      s   t  g g fkS r²   r  rD   )rZ   rD   rG   rH   þ  rI   c                      s    t  gdg g fkS )N)rF   r  rD   ©rZ   r4   r5   r3   rD   rG   rH    	  rI   c                      s"   t  gdg g fkS )N)rF   r:   r  rD   r  rD   rG   rH   	  rI   c                      s4   t  gddddidg g fkS )Nr   r<   )rF   r:   r  r  rD   r  rD   rG   rH   	  rI   c                      s&   t  ddddidg g fkS )Nr   r<   )r:   r  r  rD   r  rD   rG   rH   	  rI   c                      s$   t  ddddidg g fkS )Nr   r<   r  r  rD   )rZ   r4   r5   rD   rG   rH   	  rI   c                      s2   t  gddddidg g fkS )Nr   r<   )rF   r  r  rD   r  rD   rG   rH   	  rI   )r   r   r	   r   r¿   rÀ   r   r&   rK   r/   r   rf  )r  rD   )rZ   rt  r4   rF   r5   r3   rG   Útest_dsolve_systemï  s$    @@Tr  c               	   C   sÖ   t dtd\} }t d\}}| | |¡| | | |¡| g}tt t| W 5 Q R X | || |¡g}tt t| W 5 Q R X | || |¡|| |¡ || |¡g}tt t| W 5 Q R X d S )Nr   r8   úx y)r   r   r   r/   r   r   )r4   r5   r3   r   rt  rD   rD   rG   Útest_dsolve	  s    $

,
r  c                  C   sB  t dtd\} }t d}tt| |||t||d  t| || t||d  d t|||  tt||||t||d  d t| || t||d  d t|||  g}t|ddd\}|D ]h}|j|j  |d	 j|d	 j|d
 j|d
 ji¡}| dd | 	t
¡D ¡}t| |d
¡d	ksÔtqÔd S )Nr  r8   r:   r;   r>   rh   Fr   r   r<   c                 S   s   i | ]}||j d dqS )F)Údeep)r"  )r;  r  rD   rD   rG   Ú
<dictcomp>'	  s      z,test_higher_order1_slow1.<locals>.<dictcomp>)r   r   r	   r   r   r&   Úlhsrv   ÚsubsZatomsr   r-   rK   )r3   r   r:   rZ   r  ÚeÚresrD   rD   rG   Útest_higher_order1_slow1	  s    PTþ2r  c               
   C   sÎ  t dtd\} }}t d\}}tt| ||df|d| | ||  tt|||df|| | d||   g}t| |tt t|dt tdd    tt t	|dt tdd     tt
 t|dt tdd     tt t	|dt tdd     t||tt|dt tdd    tt	|dt tdd     t
t|dt tdd     tt	|dt tdd     g}t||ks®tt||dddgfksÊtd S )	Nri  r8   r(  r;   r<   r>   Tr   )r   r   r	   r   r   r¿   r*   r
   rÀ   r+   rõ   rö   r   rK   r   )r3   r   r   r:   r   rŒ   r   rD   rD   rG   Útest_second_order_type2_slow1+	  s$    *,ÿZÿ
ÿ
"ÿfÿþr  c                  C   sŠ   t rtd td\} }}| tt t¡ || tt tt  |tt t¡ ||  tt tt  |tt t¡ | | tt tt  g}t|s¢t	d S )Nrp  za b c)
r.   r1   r   r4   r3   r   r5   r6   r   rK   )rÁ   rÂ   rÃ   rt  rD   rD   rG   Útest_nonlinear_3eq_order1_type19	  s    (((ýr  c                  C   s²   t tt t¡dtt tt dtt tt  t tt t¡dtt tt dtt tt  t tt t¡dtt tt dtt tt  g} t|  d S ©Nr;   r>   r?   )r	   r4   r3   r   r6   r5   r   r  rD   rD   rG   Útest_nonlinear_3eq_order1_type4I	  s
    666ýr  c                  C   s   t rtd ttt t¡dttd  d ttt t¡ddtt  ttt t¡dtt dttd   g} t|  d S )Nrp  r;   r>   r?   )	r.   r1   r	   r4   r3   r   r5   r6   r   r  rD   rD   rG   Útest_nonlinear_3eq_order1_type3V	  s    "*ýr  c               	   C   s   t tt t¡ttdtt dtt   t tt t¡ttdtt dtt   t tt t¡ttdtt dtt   g} t|  d S r  )r	   r4   r3   r   r5   r6   r   r  rD   rD   rG   Útest_nonlinear_3eq_order1_type5f	  s
    ...ýr  c                  C   s  t dtd\} }}t ddd\}}}}td}t dtd\}}	tt| ||| ||| d tt|||d	| | d
||  d f}
t| |tt|tdd   tt|td d    t	dd t||td	td  t|tdd   ttd d	  t|td d    t	d
d g}t
|
|dddgfksPttt| ||| ||| d tt|||d| | || d f}t| |tttd	|  tttd	|   t| t	dd t||td	 t ttd	|  td	t ttd	|   t| t	dd g}t
||dddgfksRttt| ||d
| | | d	||  tt|||d	| | d
| ||  f}t| |ttd	|  ttd|   tt	d
d	|d	   t||ttd	|  ttd|   tt	d
d	|d	   g}t
||dddgfksFttt| ||d
| | | |d	 ||  tt||||d	  | | d
| ||  f}t| |tt|d d  tt|d d   tt	d
d	|d	   t||t t|d d  tt|d d   tt	d
d	|d	   g}t
||dddgfksVttt| ||d
| | | |d	 ||  tt||||d	  | | d
| d|d	   ||  f}t| |tttdd	 t	dd	 |d  d  tttd d	 t	dd	 |d  d   tt	d
d	|d	   t||ttdd	 t	dd	  ttdd	 t	dd	 |d  d  ttd d	 t	dd	  ttd d	 t	dd	 |d  d   tt	d
d	|d	   g}t
||dddgfksúttt| ||d
| | | |d	 ||  tt|||d|d	  | | d
| d|d	   ||  f}t| |t|| t|| t|d	 ttd
| | ttd|d	  d
|  | ||d	  |  t||t|	| t|	|t|d	 ttd
| | ttd|d	  d
|  | ||d	  | ttd
| |ttd|d	  d
|  | ||    g}t|}||kstd S )Nri  r8   z
k, l, m, nT)ÚIntegerr:   zx0, y0rh   r;   r@   rt   rV   r>   r  r   r  rp   r  r  r  r<   )r   r   r   r	   r   r¿   r   r   rÀ   r   r   rK   r   r   r,   r   )r3   r   r   r   r   r4  rž   r:   r  r  r   r   r   r   r   r   r    r¡   r¢   r£   Úeq6rÈ   ÚsrD   rD   rG   Útest_linear_2eq_order1s	  sZ    PD^ÿLBTÿX>>ÿbFHÿn0*ÿÿFBÿÿþpjd6ÿÿr£  c                  C   s2  t dtd\} }}td}tt| ||| |||d  tt|||||d f}t| |ttddt d|   tdd  t||ddt d|   tdd  t| |ttdddt d|   tdd   t||ddt d|   tdd t| |ttt	 ddt d|   tdd   t||t	 ddt d|   tdd  t| |ttt	ddt d|   tdd   t||t	ddt d|   tdd  g}t
||ksÚtt||d	d
d
gfksöttt| ||td| | ||d  tt|||||d f}t| |ttdddt d|   tdd    d t||ddt d|   tdd  t| |ttdddt d|   tdd    d t||ddt d|   tdd t| |ttdt	 ddt d|   tdd    d t||t	 ddt d|   tdd  t| |ttdt	 ddt d|   tdd    d t||t	ddt d|   tdd  g}t
||ksàtt||d	d
d
gfksüttt| ||||| | tt|||| |d f}tdd}	t| |d|	 dtttt|  d  tt |	   t||ttttttt|  d d   d g}
t
||
ksÆttt| ||| ||| t|d  tt|||||d t|d  f}t| |dtt ttt | td| d   t||dt| td| d   h}t
||kstt| ||t| || t| ||t|||  t|||t||| t|||d  f}t| |tt t|  t||td t|  h}t
||ks4tt||d	d
d
gfksPttt| ||| |d ||d  tt|||||d f}t| |dtdddt d|   tdd    t||ddt d|   tdd  t| |dtddt d|   tdd   t||ddt d|   tdd t| |dtt	ddt d|   tdd    t||t	 ddt d|   tdd  t| |dtt	ddt d|   tdd    t||t	ddt d|   tdd  g}t
||kstt||d	d
d
gfks.td S )Nri  r8   r:   r>   r@   r=   r?   r<   Tr   r;   rV   rp   )r   r   r   r	   r   r¿   r   rÀ   r   r   r   rK   r   r   r   r   r   )r3   r   r   r:   r   r   r   r   r   Úttr   r    r¡   r¢   r£   r¡  rÈ   rD   rD   rG   Útest_nonlinear_2eq_order1	  sf    @.(2&4,2*ø	H8(8&<,<*ø	<
:4þT\f4D2(.&2,2*ø	r¥  c            	      C   sŠ  t dtd\} }}t d\}}dt| || d|| ||  dt||| ||| |  dt||| | |||  f}tdtdtd	|d  dt  t td	|d  dt  t   || |f ttd
| d
  tdtdtd|d  t dt  td|d  t dt    |||f ttd| d  tdtdtd|d  dt  t td|d  dt  t   |||f ttd| d  g}dd t	t
||D sÎtdt| || d|| || t|  dt||| ||| | t|  dt||| | ||| t|  f}tdtdtd|d  t dt  td|d  t dt    || |f ttdt| d  tdtdtd	|d  dt  t td	|d  dt  t   |||f ttd
t| d
  tdtdtd|d  dt  t td|d  dt  t   |||f ttdt| d  g}dd t	t
||D s¢td S )Nri  r8   zt ur?   r;   r>   r@   r<   ro   rr   rX   rz   iöÿÿÿrV   c                 S   s   g | ]\}}|  |¡qS rD   ©Zdummy_eq©r;  rª   r«   rD   rD   rG   rD  ã	  s     z-test_nonlinear_3eq_order1.<locals>.<listcomp>c                 S   s   g | ]\}}|  |¡qS rD   rŠ  r§  rD   rD   rG   rD  ë	  s     )r   r   r   r	   r,   r   r¿   rÀ   rõ   Úzipr   rK   r   r   )	r3   r   r   r:   rø   r   r   r   r   rD   rD   rG   Útest_nonlinear_3eq_order1Ú	  sL    hNÿ@
ÿÿ"ÿ
ÿÿþPÿ@
ÿÿ"ÿ
ÿÿþr©  c               	   C   s  t d} td}td}t d}t d}tt|| | d||  tt|| | d||  f}t|| d| tdtd	 |   d| td
td	 |    t|| dtd	 | tdtd	 |   dtd	 | td
td	 |    g}t||dddgfkstd S )Nr:   r¿   rÀ   rõ   rö   rh   rU   rV   r>   rX   Tr   )r   r   r	   r   r   r   r   rK   )r:   r¿   rÀ   rõ   rö   rZ   r  rD   rD   rG   Útest_C1_function_9239ï	  s    8@Pÿrª  c                  C   sÌ   t ddd} ttttt|  tt ttttt| tt f}tttt |  t| t  t|  t	| t   tttt |  t	| t  t|  t| t   g}t
||dddgfksÈtd S )NÚepsilonTr
  r   )r   r	   r   r4   r3   r5   r¿   r   rÀ   r   r   rK   )Zepsr   r   rD   rD   rG   Útest_dsolve_linsystem_symbolû	  s    :22ÿr¬  N)Zsympy.core.functionr   r   r   Zsympy.core.mulr   Zsympy.core.numbersr   r   r   Zsympy.core.relationalr	   Zsympy.core.singletonr
   Zsympy.core.symbolr   r   Z%sympy.functions.elementary.hyperbolicr   Z(sympy.functions.elementary.miscellaneousr   rµ   r   Zsympy.core.containersr   Zsympy.functionsr   r   r   r   r   r   r   r   Zsympy.matricesr   r   Zsympy.solvers.oder   Zsympy.solvers.ode.oder   Zsympy.solvers.ode.subscheckr   r¶   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Zsympy.integrals.integralsr,   Zsympy.simplify.ratsimpr-   Zsympy.testing.pytestr.   r/   r0   r1   r2   ZC0r¿   rÀ   rõ   rö   r÷   ZC6ZC7ZC8ZC9ZC10r3   r4   r5   r6   rT   r€   rº   rŸ   râ   r  r  r  r$  r&  r0  r1  r2  r5  r6  r7  rG  rh  rj  ro  ru  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r£  r¥  r©  rª  r¬  rD   rD   rD   rG   Ú<module>   sÈ   (8%  Fm '
  X  _
x{
.
  (




!


$





*=
