o
    Ö­j%  ã                   @   sš   d dl mZmZmZ d dlm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 G dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZdd„ Zdd„ ZdS )é    )Úassert_Úassert_allcloseÚassert_equal)ÚraisesN)Ústep_size_to_boundÚfind_active_constraintsÚmake_strictly_feasibleÚCL_scaling_vectorÚintersect_trust_regionÚbuild_quadratic_1dÚminimize_quadratic_1dÚevaluate_quadraticÚreflective_transformationÚleft_multiplied_operatorÚright_multiplied_operatorc                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
TestBoundsc                 C   sJ  t  g d¢¡}t  g d¢¡}t  g d¢¡}t  g d¢¡}t||||ƒ\}}t|dƒ t|g d¢ƒ t  g d¢¡}t||||ƒ\}}t|dƒ t|g d	¢ƒ t  g d
¢¡}t||||ƒ\}}t|t  d¡ƒ t|g d¢ƒ t  g d¢¡}t||||ƒ\}}t|dƒ t|g d¢ƒ t  d¡}t||||ƒ\}}t|t jƒ t|g d¢ƒ d S )N)ç      ð¿ç      @ç      $@)ç      ð?ç      @ç      Y@)ç        r   g      (@)çš™™™™™¹?r   r   é
   )é   r   r   )g{®Gáz„?gš™™™™™©?r   é   )r   r   éÿÿÿÿ)r   g-Cëâ6¿r   r   )r   r   r   )r   ç      à?ç       Àr   )r   r   r   é   ©r   r   r   )ÚnpÚarrayr   r   ÚzerosÚinf)ÚselfÚlbÚubÚxÚsÚstepÚhits© r.   úa/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_lsq_common.pyÚtest_step_size_to_bounds   s.   



z#TestBounds.test_step_size_to_boundsc                 C   sj  t  g d¢¡}t  g d¢¡}t  g d¢¡}t|||ƒ}t|g d¢ƒ t  g d¢¡}t|||ƒ}t|g d¢ƒ t|||dd�}t|g d¢ƒ t  g d	¢¡}t|||ƒ}t|g d
¢ƒ t|||dd�}t|g d¢ƒ t  dt j t j g¡}t  t jdt jg¡}t  d¡}t|||ƒ}t|g d¢ƒ t  g d¢¡}t|||ƒ}t|g d¢ƒ t|||dd�}t|g d¢ƒ d S )N)r   ç      $Àr   )r   r   r   )r   ç      Àç       @r"   )r   r   r   )r   r   r   r   ©Úrtol)g•Ö&è.>g:Œ0âŽyE¾gíþÿÿÿX@)r   r   r   gßA:ÜÅ>)r   r   r   r   r   r!   )r   r   r   )r   g      &@r   )r#   r$   r   r   r&   Úones)r'   r(   r)   r*   Úactiver.   r.   r/   Útest_find_active_constraints+   s2   
z'TestBounds.test_find_active_constraintsc                 C   s,  t  g d¢¡}t  g d¢¡}t  g d¢¡}t|||dd�}t|d dkƒ t|dd … |dd … ƒ t|||dd�}t|g d	¢ƒ t  g d
¢¡}t|||ƒ}tt  ||k||k@ ¡ƒ t|||dd�}tt  ||k||k@ ¡ƒ t  ddg¡}t  ddg¡}t  ddg¡}t|||dd�}t|ddgƒ d S )N)ç      à¿gš™™™™™é¿r3   )çš™™™™™é?r   g      @)r9   r   gœo    @r   )Úrstepr9   r   g-Cëâ6?)g<NÑ‘\þß¿r   gq¬‹Ûh  @)r9   r   gÍÌÌÌÌÌ@r   r   g}    Y@g:Œ0âŽyE>g¾    Y@)r#   r$   r   r   r   Úall)r'   r(   r)   r*   Úx_newr.   r.   r/   Útest_make_strictly_feasibleP   s$   z&TestBounds.test_make_strictly_feasiblec                 C   s~   t  t j ddt j g¡}t  dt jdt jg¡}t  g d¢¡}t  g d¢¡}t||||ƒ\}}t|g d¢ƒ t|g d¢ƒ d S )Nr2   r   r   )r   r3   r   r   )r   r   r1   r   )r   g      @r   r   )r   r   r   r   )r#   r$   r&   r	   r   )r'   r(   r)   r*   ÚgÚvÚdvr.   r.   r/   Útest_scaling_vectorj   s   zTestBounds.test_scaling_vectorN)Ú__name__Ú
__module__Ú__qualname__r0   r8   r>   rB   r.   r.   r.   r/   r      s
    %r   c                   @   r   )
ÚTestQuadraticFunctionc                 C   sB   t  ddgddgddgg¡| _t  ddg¡| _t  ddg¡| _d S )	Nr   çš™™™™™É?r   r   r   r:   r    r3   )r#   r$   ÚJr?   Údiag)r'   r.   r.   r/   Úsetup_methodu   s   ýz"TestQuadraticFunction.setup_methodc                 C   s  t  d¡}t| j| j|ƒ\}}t|dƒ t|dƒ t| j| j|| jd�\}}t|dƒ t|dƒ t  ddg¡}t| j| j|ƒ\}}t|dƒ t|dƒ t| j| j|| jd�\}}t|dƒ t|dƒ t  d	d	g¡}t| j| j|| j|d
�\}}}t|dƒ t|dƒ t|dƒ d S )Nr   r   ©rI   r   r   gffffff @gffffff@gffffff@r   )rI   Ús0g…ëQ¸@g…ëQ¸…Ã¿)	r#   r%   r   rH   r?   r   rI   r$   r   )r'   r+   ÚaÚbrL   Úcr.   r.   r/   Útest_build_quadratic_1d}   s&   










z-TestQuadraticFunction.test_build_quadratic_1dc                 C   s`  d}d}t ||ddƒ\}}t|dƒ t|||d  ||  dd� t ||ddƒ\}}t|dƒ t|||d  ||  dd� t ||ddƒ\}}t|dƒ t|||d  ||  dd� d	}t ||dd|d
�\}}t|dƒ t|||d  ||  | dd� t ||tj tj|d
�\}}t|dƒ t|||d  ||  | dd� t ||dtj|d
�\}}t|dƒ t|||d  ||  | dd� t ||tj d|d
�\}}t|dƒ t|||d  ||  | dd� d}d}t ||tj tjƒ\}}t|tj ƒ t ||dtjƒ\}}t|tjƒ t|tj ƒ t ||tj dƒ\}}t|tj ƒ t|tj ƒ d S )Né   r   r   r   gVçž¯Ò<r4   éþÿÿÿr   r   )rO   r   rG   )r   r   r   r#   r&   )r'   rM   rN   ÚtÚyrO   r.   r.   r/   Útest_minimize_quadratic_1d–   sD   



"
"
"
"z0TestQuadraticFunction.test_minimize_quadratic_1dc                 C   sª   t  ddg¡}t| j| j|ƒ}t|dƒ t| j| j|| jd�}t|dƒ t  ddgddgddgg¡}t| j| j|ƒ}t|g d¢ƒ t| j| j|| jd�}t|g d¢ƒ d S )	Nr   r   çffffff@rK   çffffff@r   )rV   g…ëQ¸í¿r   )rW   gáz®Gáâ?r   )r#   r$   r   rH   r?   r   rI   r   )r'   r+   ÚvalueÚvaluesr.   r.   r/   Útest_evaluate_quadraticÄ   s   


þz-TestQuadraticFunction.test_evaluate_quadraticN)rC   rD   rE   rJ   rP   rU   rZ   r.   r.   r.   r/   rF   t   s
    .rF   c                   @   s   e Zd Zdd„ ZdS )ÚTestTrustRegionc                 C   sô   d}t  d¡}t  g d¢¡}t|||ƒ\}}t|dƒ t|dƒ t  g d¢¡}t|||ƒ\}}t|dƒ t|dƒ t  g d	¢¡}t  g d
¢¡}t|||ƒ\}}t|dƒ t|dƒ t  d¡}ttt|||ƒ t  d¡}t  d¡}ttt|||ƒ d S )Nr   r!   )r   r   r   r   r   )r   r   r   g3�E§yâ¿g3�E§yâ?)r   r9   r   )r   r   r   gÍ;fž æ¿gÍ;fž æ?)	r#   r%   r$   r
   r   r   r6   Úassert_raisesÚ
ValueError)r'   ÚDeltar*   r+   Út_negÚt_posr.   r.   r/   Útest_intersectÙ   s(   









zTestTrustRegion.test_intersectN)rC   rD   rE   ra   r.   r.   r.   r/   r[   Ø   s    r[   c                  C   sv  t jddgtd�} t jddgtd�}t  ddg¡}t|| |ƒ\}}t||ƒ t|t  d¡ƒ t jdd	gtd�}t|| t  t jt jg¡ƒ\}}t|dd	gƒ t|dd
gƒ t|t  t j t j g¡|ƒ\}}t|ddgƒ t|d
dgƒ t|| |ƒ\}}t|ddgƒ t|ddgƒ t  t j dg¡} t  dt jg¡}t jddgtd�}t|| |ƒ\}}t|ddgƒ t|dd
gƒ d S )Nr   rR   )ÚdtyperQ   r!   r   r   éüÿÿÿé   r   r   )r#   r$   Úfloatr   r   r6   r&   )r(   r)   rT   r*   r?   r.   r.   r/   Útest_reflective_transformationõ   s,   
"rf   c            
      C   s  t  d¡ d¡} t  g d¢¡}t  |¡ | ¡}t| |ƒ}t  ddg¡}|  t  |¡¡}t| |ƒ}t  ddg¡}dt  dd	¡ d
¡ }t  g d¢¡}	t| |¡| 	|¡ƒ t| |¡| 
|¡ƒ t|j |	¡| |	¡ƒ t| |¡| 	|¡ƒ t| |¡| 
|¡ƒ t|j |	¡| |	¡ƒ d S )Né   )r!   r   )r   r   rQ   rQ   r   rR   r!   r   é   )r   r!   )r   rR   é   )r#   ÚarangeÚreshaper$   rI   Údotr   r   r   ÚmatvecÚmatmatÚTÚrmatvec)
ÚAÚd_leftÚDAÚJ_leftÚd_rightÚADÚJ_rightr*   ÚXÚxtr.   r.   r/   Útest_linear_operators  s    

rz   )Únumpy.testingr   r   r   Úpytestr   r\   Únumpyr#   Úscipy.optimize._lsq.commonr   r   r   r	   r
   r   r   r   r   r   r   r   rF   r[   rf   rz   r.   r.   r.   r/   Ú<module>   s    4hd