a
    BCCfP_                     @   s  d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZmZmZ G dd dZG d	d
 d
ZG dd deZG dd deZG dd dZ G dd dZ!G dd dZ"G dd de"Z#G dd de"Z$G dd de"Z%G dd de"Z&e#e$e%e&gZ'dd Z(dd  Z)d!d" Z*d#d$ Z+d%d& Z,d'd( Z-d)d* Z.d+d, Z/G d-d. d.Z0G d/d0 d0e0Z1G d1d2 d2e0Z2G d3d4 d4e0Z3G d5d6 d6e0Z4G d7d8 d8e0Z5d9d: Z6d;d< Z7d=d> Z8d?d@ Z9dAdB Z:dS )Cz"
Tests for numerical integration.
    N)arangezerosarraydotsqrtcossineyepiexpallclose)assert_assert_array_almost_equalassert_allcloseassert_array_equalassert_equalassert_warns)raises)odeintodecomplex_odec                   @   s   e Zd Zdd Zdd ZdS )
TestOdeintc                    s   t d jd}t j j|dd\}}t || t fdd j|ddd\}}t || t drt j j| jdd	\}}t || t fd
d j| fddddd\}}t || d S )N        g?Tfull_outputc                    s     || S Nftyproblem `/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/integrate/tests/test_integrate.py<lambda>       z(TestOdeint._do_problem.<locals>.<lambda>)r   tfirstjac)Dfunr   c                    s     || S r   r   r   r!   r#   r$   r%   *   r&   c                    s     || S r   r(   r   r!   r#   r$   r%   +   r&   )r)   r   r'   )	r   stop_tr   r   z0r   verifyhasattrr(   )selfr"   r   zZinfodictr#   r!   r$   _do_problem   s"    




zTestOdeint._do_problemc                 C   s&   t D ]}| }|jrq| | qd S r   PROBLEMScmplxr1   r/   Zproblem_clsr"   r#   r#   r$   test_odeint/   s
    zTestOdeint.test_odeintN)__name__
__module____qualname__r1   r6   r#   r#   r#   r$   r      s   r   c                   @   s   e Zd ZdZdddZdS )TestODEClassNadamsc           	         s    fdd}d }t  dr& fdd}i } jd us> jd urR j|d<  j|d< | ||}|j|f jd  jd |d	| |j jd
d |	 j
}t||j t|  |f t| dk |f t t|g j
 |f d S )Nc                    s     || S r   r   r   r0   r!   r#   r$   r   >   s    z#TestODEClass._do_problem.<locals>.fr(   c                    s     || S r   r*   r<   r!   r#   r$   r(   B   s    z%TestODEClass._do_problem.<locals>.jacubandlband
   )atolrtolmethodr   )r   r   )r.   r>   r=   	ode_classset_integratorr@   rA   set_initial_valuer,   	integrater+   r   r    r   Z
successfulZget_return_coder-   r   )	r/   r"   
integratorrB   r   r(   Zintegrator_paramsigr0   r#   r!   r$   r1   ;   s,    


zTestODEClass._do_problem)r;   )r7   r8   r9   rC   r1   r#   r#   r#   r$   r:   7   s   r:   c                   @   sH   e Zd ZeZdd Zdd Zdd Zdd Zd	d
 Z	dd Z
dd ZdS )TestOdec                 C   s>   t D ]4}| }|jrq|js*| |dd | |dd qd S Nvoder;   bdf)r3   r4   stiffr1   r5   r#   r#   r$   	test_vode^   s    zTestOde.test_vodec                 C   s6   t D ],}| }|js"| |dd | |dd qd S )Nzvoder;   rL   r3   rM   r1   r5   r#   r#   r$   
test_zvodeh   s
    zTestOde.test_zvodec                 C   s(   t D ]}| }|jrq| |d qd S Nlsodar2   r5   r#   r#   r$   
test_lsodap   s
    zTestOde.test_lsodac                 C   s<   t D ]2}| }|jrq|jrqt|dr*q| |d qd S Nr(   dopri5r3   r4   rM   r.   r1   r5   r#   r#   r$   test_dopri5x   s    
zTestOde.test_dopri5c                 C   s<   t D ]2}| }|jrq|jrqt|dr*q| |d qd S Nr(   dop853rW   r5   r#   r#   r$   test_dop853   s    
zTestOde.test_dop853c                 C   s~   dD ]t}dd }t ||}|dd t ||}|dd ||jd  ||jd  tt|j|jd  qd S )N)rK   rO   rS   c                 S   s   dS N      ?r#   r   r#   r#   r$   r      s    z'TestOde.test_concurrent_fail.<locals>.fr   皙?)r   rD   rE   rF   r   assert_raisesRuntimeError)r/   solr   rr2r#   r#   r$   test_concurrent_fail   s    zTestOde.test_concurrent_failc                 C   sH  dd }t dD ]0}dD ]}t||}|dd t||}|dd ||jd  ||jd  ||jd  t|jd t|jd qdD ]}t||}|dd t||}|dd ||jd  ||jd  ||jd  ||jd  ||jd  t|jd	 t|jd qqd S )
Nc                 S   s   dS r\   r#   r   r#   r#   r$   r      s    z%TestOde.test_concurrent_ok.<locals>.f   )rK   rO   rS   rV   rZ   r   r^   g?rV   rZ   g333333?)ranger   rD   rE   rF   r   r   r    )r/   r   kra   rb   rc   r#   r#   r$   test_concurrent_ok   s0    zTestOde.test_concurrent_okN)r7   r8   r9   r   rC   rN   rQ   rT   rX   r[   rd   ri   r#   r#   r#   r$   rI   Z   s   
rI   c                   @   s0   e Zd ZeZdd Zdd Zdd Zdd Zd	S )
TestComplexOdec                 C   s8   t D ].}| }|js$| |dd q| |dd qd S rJ   rP   r5   r#   r#   r$   rN      s
    zTestComplexOde.test_vodec                 C   s    t D ]}| }| |d qd S rR   )r3   r1   r5   r#   r#   r$   rT      s    zTestComplexOde.test_lsodac                 C   s4   t D ]*}| }|jrqt|dr"q| |d qd S rU   r3   rM   r.   r1   r5   r#   r#   r$   rX      s    
zTestComplexOde.test_dopri5c                 C   s4   t D ]*}| }|jrqt|dr"q| |d qd S rY   rk   r5   r#   r#   r$   r[      s    
zTestComplexOde.test_dop853N)	r7   r8   r9   r   rC   rN   rT   rX   r[   r#   r#   r#   r$   rj      s
   	
rj   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )
TestSoloutc           	         s   g  g d}d}ddg} fdd}dd }t ||}|| ||| ||}td	 | td
 | t d	 | t d
 | d S )Nr         $@r]          @c                    s     |   |  d S r   appendcopyr   tsysr#   r$   solout   s    
z+TestSolout._run_solout_test.<locals>.soloutc                 S   s   |d |d  |d d  gS Nr         r#   r   r#   r#   r$   rhs   s    z(TestSolout._run_solout_test.<locals>.rhsr   )r   rD   
set_soloutrE   rF   r   r   	r/   rG   t0tendy0ru   ry   rH   retr#   rr   r$   _run_solout_test   s    

zTestSolout._run_solout_testc                 C   s   dD ]}|  | qd S Nrf   r   r/   rG   r#   r#   r$   test_solout  s    zTestSolout.test_soloutc           	         s   g  g d}d}ddg} fdd}dd }t ||}||| || ||}td	 | td
 | t d	 | t d
 | d S )Nr   rm   r]   rn   c                    s     |   |  d S r   ro   r   rr   r#   r$   ru     s    
z9TestSolout._run_solout_after_initial_test.<locals>.soloutc                 S   s   |d |d  |d d  gS rv   r#   r   r#   r#   r$   ry     s    z6TestSolout._run_solout_after_initial_test.<locals>.rhsr   rz   )r   rD   rE   r{   rF   r   r   r|   r#   rr   r$   _run_solout_after_initial_test
  s    

z)TestSolout._run_solout_after_initial_testc                 C   s   dD ]}|  | qd S r   )r   r   r#   r#   r$   test_solout_after_initial"  s    z$TestSolout.test_solout_after_initialc                    s   g g d}d ddg} fdd}dd }t ||}|| ||| | }td	 | td
 | td	 | td
  d k td
  k  d S )Nr   rm   r]   rn   c                    s,    |   |  |  d kr(dS d S Nrn   rz   ro   r   r~   rs   rt   r#   r$   ru   .  s    
z1TestSolout._run_solout_break_test.<locals>.soloutc                 S   s   |d |d  |d d  gS rv   r#   r   r#   r#   r$   ry   4  s    z.TestSolout._run_solout_break_test.<locals>.rhsr   rz   )r   rD   r{   rE   rF   r   r   r   r/   rG   r}   r   ru   ry   rH   r   r#   r   r$   _run_solout_break_test&  s     

z!TestSolout._run_solout_break_testc                 C   s   dD ]}|  | qd S r   r   r   r#   r#   r$   test_solout_breakA  s    zTestSolout.test_solout_breakN)	r7   r8   r9   r   r   r   r   r   r   r#   r#   r#   r$   rl      s   rl   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestComplexSoloutc           	         s   g  g d}d}dg} fdd}dd }t ||}|| ||| ||}td | td | t d | t d | d S )	Nr         4@c                    s     |   |  d S r   ro   r   rr   r#   r$   ru   P  s    
z2TestComplexSolout._run_solout_test.<locals>.soloutc                 S   s   d| d d  gS Nr]   rm                 ?r#   r   r#   r#   r$   ry   T  s    z/TestComplexSolout._run_solout_test.<locals>.rhsr   rz   )r   rD   r{   rE   rF   r   r   r|   r#   rr   r$   r   H  s    

z"TestComplexSolout._run_solout_testc                 C   s   dD ]}|  | qd S r   r   r   r#   r#   r$   r   `  s    zTestComplexSolout.test_soloutc                    s   g g d}d dg} fdd}dd }t ||}|| ||| | }td | td | td | td  d	 k td  k  d S )
Nr   r   c                    s,    |   |  |  d kr(dS d S r   ro   r   r   r#   r$   ru   l  s    
z8TestComplexSolout._run_solout_break_test.<locals>.soloutc                 S   s   d| d d  gS r   r#   r   r#   r#   r$   ry   r  s    z5TestComplexSolout._run_solout_break_test.<locals>.rhsr   rz   rn   )r   rD   r{   rE   rF   r   r   r   r   r#   r   r$   r   d  s     

z(TestComplexSolout._run_solout_break_testc                 C   s   dD ]}|  | qd S r   r   r   r#   r#   r$   r     s    z#TestComplexSolout.test_solout_breakN)r7   r8   r9   r   r   r   r   r#   r#   r#   r$   r   F  s   r   c                   @   s0   e Zd ZdZdZdZdZg ZdZdZ	dZ
dZdS )ODEz
    ODE problem
    Frw   Ngư>gh㈵>)r7   r8   r9   __doc__rM   r4   r+   r,   r>   r=   r@   rA   r#   r#   r#   r$   r     s   r   c                   @   s:   e Zd ZdZdZeddgeZdZdZ	dd Z
dd	 Zd
S )SimpleOscillatorz
    Free vibration of a simple oscillator::
        m \ddot{u} + k u = 0, u(0) = u_0 \dot{u}(0) \dot{u}_0
    Solution::
        u(t) = u_0*cos(sqrt(k/m)*t)+\dot{u}_0*sin(sqrt(k/m)*t)/sqrt(k/m)
    gq=
ףp?r]   r^   g      @c                 C   s.   t dt}d|d< | j | j |d< t||S )N)rx   rx   r]   r   rw   )rw   r   )r   floatrh   mr   )r/   r0   r   tmpr#   r#   r$   r     s    
zSimpleOscillator.fc                 C   s`   t | j| j }| jd t||  | jd t||  |  }t||d d df | j| jdS )Nr   rw   r@   rA   )	r   rh   r   r,   r   r   r   r@   rA   )r/   zsr   omegaur#   r#   r$   r-     s    0zSimpleOscillator.verifyN)r7   r8   r9   r   r+   r   r   r,   rh   r   r   r-   r#   r#   r#   r$   r     s   r   c                   @   s@   e Zd ZdZde Zeg dZdZdd Z	dd Z
d	d
 ZdS )
ComplexExpzThe equation :lm:`\dot u = i u`gGz?)r   y               @y              @y              @y              @Tc                 C   s   d| S )Nr   r#   r/   r0   r   r#   r#   r$   r     s    zComplexExp.fc                 C   s   dt d S )Nr      )r	   r   r#   r#   r$   r(     s    zComplexExp.jacc                 C   s&   | j td|  }t||| j| jdS )Nr   r   )r,   r   r   r@   rA   r/   r   r   r   r#   r#   r$   r-     s    zComplexExp.verifyN)r7   r8   r9   r   r
   r+   r   r,   r4   r   r(   r-   r#   r#   r#   r$   r     s   r   c                   @   s.   e Zd ZdZdZdgZdZdd Zdd Zd	S )
Piz'Integrate 1/(t + 1j) from t=-10 to t=10   r   Tc                 C   s   t d|d d  gS )Nr]   r?   r   r   r   r#   r#   r$   r     s    zPi.fc                 C   s.   dt d }t||dd d f | j| jdS )Ny              r?   rz   r   )npZarctanr   r@   rA   r   r#   r#   r$   r-     s    z	Pi.verifyN)	r7   r8   r9   r   r+   r,   r4   r   r-   r#   r#   r#   r$   r     s   r   c                   @   sH   e Zd ZdZdZdZg dZdZdZg dZ	dd	 Z
d
d Zdd ZdS )CoupledDecayze
    3 coupled decays suited for banded treatment
    (banded mode makes it necessary when N>>3)
    T      ?)g      @g      @g      *@rw   r   )g(\?gq=
ףp?g(\?c                 C   s`   | j }t|d  |d  |d  |d  |d |d   |d  |d  |d |d   gS rv   )lmbdr   r   )r/   r0   r   r   r#   r#   r$   r     s
      zCoupledDecay.fc                    s   j }tjjj d dfdd  fdd}|dd|d   |dd|d  |dd|d   |dd|d  |dd|d    S )	Nrw   re   Forderc                    s   | j |  | |f< d S r   )r=   )ricivaljr/   r#   r$   set_j  s    zCoupledDecay.jac.<locals>.set_jr   rx   )r   r   r   r>   r=   )r/   r0   r   r   r   r#   r   r$   r(     s    zCoupledDecay.jacc              
   C   s8  t | j}|d |d  }|d |d  }|d |d  }t |d  | }t |d  | }t |d  | }	t | jd | | jd | | jd |d  | ||   | jd |	 | jd |d  | ||	   |d |d  | jd  | d| ||	  d| ||	     f }
t|
|| j| j	dS )Nrw   r   rx   r   )
r   r   r   r   vstackr,   Z	transposer   r@   rA   )r/   r   r   r   Zd10Zd21Zd20Ze0e1e2r   r#   r#   r$   r-     s"    **
zCoupledDecay.verifyN)r7   r8   r9   r   rM   r+   r,   r>   r=   r   r   r(   r-   r#   r#   r#   r$   r     s   r   c                 C   s   |d |d  g}|S Nrw   r   r#   )r   xdxdtr#   r#   r$   r     s    r   c                 C   s   t ddgddgg}|S )Nr   r]         r   )r   r   r   r#   r#   r$   r(     s    r(   c                 C   s   ||d  | |d  g}|S r   r#   r   r   r   r   r#   r#   r$   f1   s    r   c                 C   s   t d|g| dgg}|S Nr   r   r   r   r   r   r#   r#   r$   jac1%  s    r   c                 C   s   ||d  | |d  g}|S r   r#   )r   r   omega1omega2r   r#   r#   r$   f2+  s    r   c                 C   s   t d|g| dgg}|S r   r   )r   r   r   r   r   r#   r#   r$   jac20  s    r   c                 C   s&   |d |d  |d  |d  g}|S )Nr   rw   r#   r   r#   r#   r$   fv6  s    "r   c                 C   s"   t d|d g|d  dgg}|S )Nr   r   rw   r   r   r#   r#   r$   jacv;  s    r   c                   @   sP   e Zd ZdZdZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd ZdS )ODECheckParameterUsez=Call an ode-class solver with several cases of parameter use. Fc                 C   s>   t ||}| jr(|j| jdd| jd n|j| jddd |S )Ng&.>gHz>)r@   rA   Zwith_jacobianr   )r   solver_uses_jacrD   solver_name)r/   r   r(   solverr#   r#   r$   _get_solverJ  s    
z ODECheckParameterUse._get_solverc                 C   s2   ddg}| |d |t t|jddg d S )Nr]   r   r   )rE   rF   r
   r   r    r/   r   Zicr#   r#   r$   _check_solverV  s    
z"ODECheckParameterUse._check_solverc                 C   s   |  tt}| | d S r   )r   r   r(   r   )r/   r   r#   r#   r$   test_no_params\  s    z#ODECheckParameterUse.test_no_paramsc                 C   s8   |  tt}d}|| | jr*|| | | d S r\   )r   r   r   set_f_paramsr   set_jac_paramsr   r/   r   r   r#   r#   r$   test_one_scalar_param`  s    

z*ODECheckParameterUse.test_one_scalar_paramc                 C   s@   |  tt}d}d}||| | jr2||| | | d S r\   )r   r   r   r   r   r   r   )r/   r   r   r   r#   r#   r$   test_two_scalar_paramsh  s    z+ODECheckParameterUse.test_two_scalar_paramsc                 C   s<   |  tt}ddg}|| | jr.|| | | d S r\   )r   r   r   r   r   r   r   r   r#   r#   r$   test_vector_paramq  s    

z&ODECheckParameterUse.test_vector_paramc                 C   sB   |  tt}|j| jdd ddg}||d tt|jt	 d S )Nrw   )Znstepsr]   r   )
r   r   r(   rD   r   rE   r   UserWarningrF   r
   r   r#   r#   r$   test_warns_on_failurey  s
    z*ODECheckParameterUse.test_warns_on_failureN)r7   r8   r9   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   r   A  s   	r   c                   @   s   e Zd ZdZdZdS )TestDOPRI5CheckParameterUserV   FNr7   r8   r9   r   r   r#   r#   r#   r$   r     s   r   c                   @   s   e Zd ZdZdZdS )TestDOP853CheckParameterUserZ   FNr   r#   r#   r#   r$   r     s   r   c                   @   s   e Zd ZdZdZdS )TestVODECheckParameterUserK   TNr   r#   r#   r#   r$   r     s   r   c                   @   s   e Zd ZdZdZdS )TestZVODECheckParameterUserO   TNr   r#   r#   r#   r$   r     s   r   c                   @   s   e Zd ZdZdZdS )TestLSODACheckParameterUserS   TNr   r#   r#   r#   r$   r     s   r   c                  C   s:   d} dg}t dd | |dd\}}t|t| gg d S )Nrw   r   c                 S   s   |  S r   r#   )r    r   r#   r#   r$   r%     r&   z*test_odeint_trivial_time.<locals>.<lambda>Tr   )r   r   r   r   )r   r   r    infor#   r#   r$   test_odeint_trivial_time  s    r   c                     s  dd dd dd } dd   fd	d
}t g dg dg dg dg}td}t g d}t|||fddddd	\}}t|||fdddd| dd
\}}t|||fdddd ddd\}	}
t|||fdddd|dddd\}}t||dd t||	ddd t|	|d d t|d! |d!  t|
d! |d!  tfd"d#|||fddddfd$d#dd%
\}}t||dd&d' d S )(Nc                 S   s
   | | S r   )r   r    r   cr#   r#   r$   func  s    z)test_odeint_banded_jacobian.<locals>.funcc                 S   s   |S r   r#   r   r#   r#   r$   r(     s    z(test_odeint_banded_jacobian.<locals>.jacc                 S   s   |j jddS NCr   Trq   r   r#   r#   r$   jac_transpose  s    z2test_odeint_banded_jacobian.<locals>.jac_transposec              
   S   sT   t t jdt |df t |t jt |ddf t jt |dddf f}|S )Nr   rw   rz   )r   r   Zr_Zdiag)r    r   r   r(   r#   r#   r$   	bjac_rows  s    z.test_odeint_banded_jacobian.<locals>.bjac_rowsc                    s    | ||j jddS r   r   r   )r   r#   r$   	bjac_cols  s    z.test_odeint_banded_jacobian.<locals>.bjac_cols)i3{Gz?r   r   )r^   g      g{Gz?r   )gMbP?r   g       r   )r   r   r^   r      )r   r   r?   d   TgvIh%<=gdy=i'  )argsr   r@   rA   mxstepr)   )r   r   r@   rA   r   r)   	col_derivrx   rw   )r   r   r@   rA   r   r)   mlmu)	r   r   r@   rA   r   r)   r   r   r   zsol1 != sol2)err_msg-q=zsol1 != sol3)r@   r   zsol3 != sol4Znjec                    s    || |S r   r#   r   r    r   )r   r#   r$   r%     r&   z-test_odeint_banded_jacobian.<locals>.<lambda>c                    s    || |S r   r#   r   r*   r#   r$   r%     r&   )r   r   r@   rA   r   r)   r'   zsol1 != sol1ty)rA   r   )r   r   onesr   r   r   )r   r   r   r   r   Zsol1Zinfo1Zsol2Zinfo2Zsol3Zinfo3Zsol4Zinfo4Zsol1tyZinfo1tyr#   )r   r   r(   r$   test_odeint_banded_jacobian  sN    





r   c                  C   s   dd } dd }dd }dd }d	d
 }dd }dd }t tt|dddg t tt|dddg t tt| dddg|d t tt| dddg|d t tt|ddgddg|d d S )Nc                 S   s   d|  S Nr#   r   r   r#   r#   r$   sys1d  s    z!test_odeint_errors.<locals>.sys1dc                 S   s   dd S Nr]   r   r#   r   r#   r#   r$   bad1  s    z test_odeint_errors.<locals>.bad1c                 S   s   dS NZfoor#   r   r#   r#   r$   bad2  s    z test_odeint_errors.<locals>.bad2c                 S   s   dd S r   r#   r   r#   r#   r$   bad_jac1  s    z$test_odeint_errors.<locals>.bad_jac1c                 S   s   dggS r   r#   r   r#   r#   r$   bad_jac2  s    z$test_odeint_errors.<locals>.bad_jac2c                 S   s   d| d  d| d  gS )Nr   r   皙rw   r#   r   r#   r#   r$   sys2d  s    z!test_odeint_errors.<locals>.sys2dc                 S   s   dd dgddggS )Nr]   r   r   r#   r   r#   r#   r$   sys2d_bad_jac   s    z)test_odeint_errors.<locals>.sys2d_bad_jacr]   r   rw   r)   )r_   ZeroDivisionErrorr   
ValueError)r   r   r   r   r   r   r   r#   r#   r$   test_odeint_errors  s    r  c                  C   s   dd } dd }dd }ddgddgg}t tt||ddg ddgd	d
gg}t tt|dg| t tt| dddg t tt|ddgddg|d d S )Nc                 S   s   ddgS )Nrw   rz   r#   r   r#   r#   r$   badrhs  s    z&test_odeint_bad_shapes.<locals>.badrhsc                 S   s   d|  S r   r#   r   r#   r#   r$   sys1  s    z$test_odeint_bad_shapes.<locals>.sys1c                 S   s
   g dgS )N)r   r   r   r#   r   r#   r#   r$   badjac  s    z&test_odeint_bad_shapes.<locals>.badjacr   rw   rx   re   rm   r?   r  )r_   r  r   r`   )r  r  r  Zbad_y0Zbad_tr#   r#   r$   test_odeint_bad_shapes  s    r  c                  C   s  dd } t d}t| dg|}t|t t|df dt d }dgd	 |d| d| d
| g }t| ddg|ddd}t ddggd	 ddgddgddgddgg }t|| t| dgg }t|t jg t j	d
d ttt| dgg d ttt| g dg d dS )zRegression test for gh-8217.c                 S   s   d|  S )Ng      пr#   r   r#   r#   r$   r   +  s    z$test_repeated_t_values.<locals>.funcr?   r]   rw   r   rx   r   	   re   r   )rA   r@   rn   r   g      ?g      ?)Zdtyper   )r   rw   r   r   )rw   rx   re   )r   rz   r   re   N)r   r   r   r   r   lenlogr   r   Zfloat64Zreshaper_   r  )r   r   ra   tauZexpected_solr#   r#   r$   test_repeated_t_values(  s&    
"
r  );r   numpyr   r   r   r   r   r   r   r   r	   r
   r   r   Znumpy.testingr   r   r   r   r   r   Zpytestr   r_   Zscipy.integrater   r   r   r   r:   rI   rj   rl   r   r   r   r   r   r   r3   r   r(   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r#   r#   r#   r$   <module>   sH   4 ##j(ZC?A	I 