a
    aae                  
   @   s   d dl Zd dlmZ d dlmZ d dlmZ dd Z	dd Z
dd	 Zd
d Zdd Zd\ZZZZZdZdZdZdZeeeeeeeeee	\ZZZZed dS )    N)r2_score)	curve_fitc                 C   sZ   t | }|dkr,|t ||  |  | S |dkrN|t ||  |  | S tdd S )Nsincosz func_type must be 'sin' or 'cos')nparrayr   r   
ValueError)x	amplitude	frequencyphase_shiftvertical_shift	func_typex_array r   $/var/www/html/trig_data_generator.pytrigonometric_function   s    
r   c                 C   s>   t dt j dt j dt j | }t|| ||||}||fS )Ni
      )r   arangepir   )r
   r   r   r   nr   r	   	y_perfectr   r   r   generate_target_trigonometric   s    $r   c                 C   s8   t | |||||\}}tjd||j}	||	 }
||
fS )Nr   )r   r   randomnormalshape)r
   r   r   r   r   std_devr   r	   r   noisey_noisyr   r   r   generate_noisy_trigonometric   s    r    c	              	      s  t | |||| \}	}
t| ||||| d }g }t|D ]}t fdd|	|| |||gd\}}t|	g| R  }t||}||
 }||| 8 }|d |d |d |d |d |d}|| q:| }|d |d |d |d |f}|	|
|d	}|	 |
 | d	}||||fS )
N   c                    s   t | |||| S )N)r   )r	   abcdr   r   r   <lambda>$       z5trigonometric_fit_and_store_results.<locals>.<lambda>)p0r         )	iterationamplitude_fittedfrequency_fittedphase_shift_fittedvertical_shift_fitted	r_squared)r	   r   r   )	r   r    ranger   r   r   appendcopytolist)r
   r   r   r   r   r   
iterationslearning_rater   r	   r   r   resultsipopt_y_predr1   Zy_errorZiteration_resultsfinal_noisy_datafinal_regression_coeffsdatar   r&   r   #trigonometric_fit_and_store_results   s,    $
r@   c           	      C   s   t jdd t|}| D ]\}|d | dks:|d dkrt||d |d |d |d	 |}t j||d
|d  d qt j||dddd t j||dd|  ddd t |  d t 	d t 
d t   t d t   d S )N)r      )figsizer,   r   r!   r-   r.   r/   r0   z
Iteration )labelredz
Noisy Data      ?)colorrC   alphabluezPerfect z Curver*   )rF   rC   	linewidthz Curve Fitting Processr	   yT)pltfigurer   r   r   plotscatteruppertitlexlabelylabellegendgridshow)	r8   r	   r   r   Z
plot_everyr   r   resultr<   r   r   r   plot_iteration_process?   s    
" 


rW   )r   r*   r      d   rE   i  g{Gz?r   ztrig-models loaded)numpyr   matplotlib.pyplotpyplotrK   sklearn.metricsr   scipy.optimizer   r   r   r    r@   rW   r
   r   r   r   r   r   r6   r7   r   r8   r=   final_coeffsr?   printr   r   r   r   <module>   s   
! 