o
    Ni                     @   s   d dl mZ d dlmZmZmZ d dlm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G dd deZdS )   )FixedGridODESolver)rk4_alt_step_funcrk3_step_funcrk2_step_func)Perturbc                   @      e Zd ZdZdd ZdS )Eulerr   c                 C   s(   |||| j r	tjntjd}|| |fS )Nperturbr
   r   NEXTNONEselffunct0dtt1y0f0 r   P/home/ubuntu/.local/lib/python3.10/site-packages/torchdiffeq/_impl/fixed_grid.py
_step_func	   s   zEuler._step_funcN__name__
__module____qualname__orderr   r   r   r   r   r          r   c                   @   r   )Midpoint   c           	      C   sF   d| }|||| j rtjntjd}|||  }|||| | |fS )N      ?r	   r   )	r   r   r   r   r   r   half_dtr   y_midr   r   r   r      s   zMidpoint._step_funcNr   r   r   r   r   r      r   r   c                   @   r   )RK4   c              	   C   s8   |||| j r	tjntjd}t||||||| j d|fS )Nr	   )r   r
   )r
   r   r   r   r   r   r   r   r   r      s   zRK4._step_funcNr   r   r   r   r   r$      r   r$   c                   @   r   )Heun3   c              
   C   sV   |||| j r	tjntjd}g dg dg dg dg}t|||||||| j d|fS )Nr	   )        r(   r(   r(   )UUUUUU?r)   r(   r(   )UUUUUU?r(   r*   r(   )r(   g      ?r(   g      ?butcher_tableur   r
   )r
   r   r   r   r   r   r   r   r   r   r   r   r,   r   r   r   r   #   s   zHeun3._step_funcNr   r   r   r   r   r&       r   r&   c                   @   r   )Heun2r    c              
   C   sP   |||| j r	tjntjd}g dg dg dg}t|||||||| j d|fS )Nr	   )r(   r(   r(   )      ?r/   r(   )r(   r!   r!   r+   )r
   r   r   r   r   r-   r   r   r   r   3   s   zHeun2._step_funcNr   r   r   r   r   r.   0   r   r.   N)solversr   	rk_commonr   r   r   miscr   r   r   r$   r&   r.   r   r   r   r   <module>   s    
