B
    b^
                 @   s~   d dl Zd dlZd dlmZmZmZ d dlm	Z
 d dlmZ G dd dZddddeedfd	d
ZddddeejfddZdS )    N)Z_newtonK_funcrk4_step_func)odec               @   s&   e Zd ZdedfddZd	ddZdS )

dH_dt_func   
   c             C   s   dt j t j  }|dtt jt j d t j t j  | _	|t j
t j t j dt j   | _| j | | _|| _d| _|| _d| _t \| _| _d S )Nd      r   )cZM_HMnppowerZf_HZK_HZG_mZp_inC1Zk_tsZA_srhoC2C3solvercall_counter	plot_freqmax_zpltsubplotsfigax)selfHvr   r   C0 r   H/Users/vegardjervell/Documents/6_semester/matmod/matmod9/differensial.py__init__	   s    *"zdH_dt_func.__init__Tc             C   s   |  |}|dkr|  jd7  _| j| jkrd| _t|}td| d d| d d}| jj||td|  | dt	t
|d	 d
}| jj||td|  | d|d  d |d | jkr|d | _tjt|| d tj|  | j S )NTr   r   gGz?gMb0?g)\(?   zH =    )labelo)markercolorr
   )r   r   r   r   r   linspacer   plotlogstrround	get_colorr   r   r   r   r   r   )r   HZplot_zZKZz_linelinesr   r   r   __call__   s    
2.
zdH_dt_func.__call__N)T)__name__
__module____qualname__r   r    r2   r   r   r   r   r      s   r      r   r	   c             C   s   t jd||d}t t|}| |d< |d krFt||t|d d}	nt|||d}	x4tt|d D ] }
|||
 ||	|d||
d < qfW |	j  t	|	j
 |||	j|	jfS )Nr   )stepr"   )r   r   r   r   )r   )r   arangezeroslenr   ranger   remover   closer   r   )H0r   dtt_endZ_solver	step_funcr   t_listH_valuesdH_dtir   r   r   H_func(   s     
rG   c                s   t |  fdd}t||}||  tjd||d}tt|}	x&tt|	D ]}
|	||
 |	|
< qXW  j
  t j |	| j j
fS )Nc                s    | S )Nr   )r.   )rE   r   r   <lambda>;   s    zbb_H_func.<locals>.<lambda>r   )r7   )r   r   Zset_integratorZset_initial_valuer   r8   r9   r:   r;   	integrater   r<   r   r=   r   r   )r>   r   r?   r@   rA   Z
integratorZbb_dH_dtZ
ode_solverrC   rD   rF   r   )rE   r   	bb_H_func9   s    

rJ   )	constantsr   numpyr   numerikkr   r   r   matplotlib.pyplotpyplotr   Zscipy.integrater   r   rG   Zscipy_integrator_methodrJ   r   r   r   r   <module>   s    