o
    Ö­j  ã                   @   sÌ   d dl Z d dlZd dlmZ d dlmZmZ d dlm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dd„ 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d'd(„ ZdS ))é    N)Úexp)Úassert_Úassert_equal)Úrootc                     s<  d} d}t ttdddd�t ttdddd�t ttdd	d	d�t ttd
d	d	d�t ttdddd�t ttdddd�t ttdddd�t t	t
dddd�t t	t
dddd�t ttdddd�g
}t g d¢g d¢ddg¡D ]¸\‰‰}|D ]°‰ ˆ d }‡ ‡‡fdd„}|f}ˆ d |ƒˆ }t |¡|  ˆ |tj |||ƒ¡  }dtˆˆ ˆˆ ƒ }	ˆˆ }
tjdd�� t|||t d|ˆ d d |
|	|d �d!d"�}W d   ƒ n1 sÌw   Y  tˆˆ|ˆ tj ||j|ƒ¡||j|j|jg	ƒ}|jsðJ |ƒ‚|jˆ d d ksýJ |ƒ‚|jˆ d# k�s	J |ƒ‚tj ||j|ƒ¡|k�sJ |ƒ‚qjqcd S )$Ngñhãˆµøä>ç-Cëâ6?iè  é   )ÚFÚx0ÚnÚnitÚnfevi'  é   iô  é   iÐ  éd   é   éc   é   é   iç  é   é   )ç      ð?ç»½×Ùß|Û=g    _ BÚcruzÚchengr
   c                    s   ˆˆ d | ˆ |ƒ S )Nr   © ©Úxr
   ©ÚproblemÚxscaleÚyscaler   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/optimize/tests/test__spectral.pyÚfunc0   ó   ztest_performance.<locals>.funcr	   r   Úignore)Úoverr   r   é   )ÚftolÚfatolÚmaxfevÚsigma_0Ú	sigma_epsÚline_searchúDF-SANE)ÚargsÚoptionsÚmethodr   )ÚdictÚF_1Úx0_1ÚF_2Úx0_2ÚF_6Úx0_6ÚF_7Úx0_7ÚF_9Úx0_9ÚF_10Úx0_10Ú	itertoolsÚproductÚnpÚsqrtÚlinalgÚnormÚminÚerrstater   Úreprr   Úsuccessr   r   )Úe_aÚe_rÚtable_1r,   r
   r"   r.   r	   r(   r+   r*   ÚsolÚerr_msgr   r   r!   Útest_performance
   sX   	ïÿ(þüÿÿÿ$åýrM   c                  C   s`   dd„ } d}d}t | ||dd�}t|jƒ tj | |ƒ¡}tj | |jƒ¡}t||| kƒ d S )Nc                 S   s   | d d d S )Nr   r&   ù               @r   )Úzr   r   r!   r"   M   s   ztest_complex.<locals>.funcrN   r   r-   )Útolr0   )r   r   rG   r@   rB   rC   r   )r"   r	   r'   rK   Úf0Úfxr   r   r!   Útest_complexL   s   
rS   c                  C   s®   d
dd„} d}t j d¡ t  || ¡ ||¡}||| t  dt  |¡ ¡  }tt j |¡ 	¡ dkƒ t  |¡d }| ||dƒ | ||d	ƒ | | |dƒ | | |d	ƒ d S )Nr   c              	      st   ‡ ‡fdd„}t j ˆ ˆ¡}t j ||ƒ¡d }t|ˆt|dd|d�dd�}t|jƒ tt j ||jƒ¡|kƒ d S )	Nc                    s   ˆ   | ¡ˆ S ©N)Údot)r   ©ÚAÚbr   r!   r"   c   s   z=test_linear_definite.<locals>.check_solvability.<locals>.funcg     @�@r   isD  )r(   r'   r)   r,   r-   )r/   r0   )	r@   rB   ÚsolverC   r   r1   r   rG   r   )rW   rX   r,   r"   ÚxpÚepsrK   r   rV   r!   Úcheck_solvabilityb   s   ý
z/test_linear_definite.<locals>.check_solvabilityéZ   iÒ  r&   r   r   r   )r   )
r@   ÚrandomÚseedÚarangeÚreshapeÚdiagr   rB   ÚeigvalsrD   )r\   r
   rW   rX   r   r   r!   Útest_linear_definite[   s   
 rd   c                  C   sf   dd„ } t tfD ](}t ddg¡}tjddg|d�}t| ||fdd�}t|jƒ t|j	j
|j
ƒ qd S )Nc                 S   s   | | S rT   r   )r   Úargr   r   r!   Úf€   s   ztest_shape.<locals>.fr   )Údtyper-   )r.   r0   )ÚfloatÚcomplexr@   ÚzerosÚonesr   r   rG   r   r   Úshape)rf   Údtr   re   rK   r   r   r!   Ú
test_shape   s   
úrn   c                 C   sd   t  |g¡}t  d|d ¡}t| d d ƒd |d< |t| dd … d ƒ| dd …   |dd …< |S )Nr   r&   r   ©r@   rj   r`   r   ©r   r
   ÚgÚir   r   r!   r2   �   s
   ,r2   c                 C   s"   t  | g¡}| | | d  ¡ |S ©Nr&   ©r@   ÚemptyÚfill©r
   r	   r   r   r!   r3   –   ó   r3   c                 C   sd   t  |g¡}t  d|d ¡}t| d ƒd |d< d| t| dd … ƒ| d d…  d  |dd …< |S )Nr   r&   r   gš™™™™™¹?éÿÿÿÿro   rp   r   r   r!   r4   ›   s
   0r4   c                 C   s"   t  | g¡}| d| d  ¡ |S )Nr&   r   rt   rw   r   r   r!   r5   ¢   rx   r5   c                 C   s0  t |d dƒ t |g¡}d| d d d…  d| dd d… d   d| dd d… d   d| dd d…   d	 |d d d…< d
| d d d…  d| dd d… d   d| dd d… d   d| dd d…   | dd d…  d| dd d… d   d |dd d…< d| dd d…  d| dd d… d   |dd d…< |S )Né   r   g333333ã?gš™™™™™ù?r&   gÍÌÌÌÌÌ@r   g333333#@g333333@g¸…ëQ¸Þ?g
×£p=
ç?gìQ¸…ë	@gHáz®G@gš™™™™™É?gHáz®G@g      ô?g      Ð?)r   r@   rj   )r   r
   rq   r   r   r!   ÚF_4¨   s   ^Nÿÿÿ2r{   c                 C   s(   t | d dƒ t g d¢| d  ¡}|S )Nrz   r   )ry   ç      à?ry   ©r   r@   Úarrayrw   r   r   r!   Úx0_4´   s   r   c                 C   sd   d}t  d|d ¡d | }| dd|d|  |d d …d f |  |d d …d f |  jdd�    S )NgÍÌÌÌÌÌì?r&   r|   r   )Úaxis)r@   r`   Úsum)r   r
   ÚcÚmur   r   r!   r6   ¹   s   Hr6   c                 C   ó   t  | g¡S rT   ©r@   rk   ©r
   r   r   r!   r7   ¾   ó   r7   c                 C   sœ   t |d dƒ dd„ }t |g¡}d| dd d… d  d |d d d…< t| d d d…  ƒt| dd d…  ƒ d |dd d…< || dd d… ƒ|dd d…< |S )	Nrz   r   c                 S   sd   d|  d }d| d  d| d   d|   d d | d	k || d	k< d|  d | dk || dk< |S )
Nr|   r   i°ýÿÿrz   ix  iÇ  i„  iÎ  ry   r   )ÚtÚvr   r   r!   ÚphiÄ   s   8zF_7.<locals>.phig     ˆÃ@r&   r   gq¬‹Ûh ð?)r   r@   rj   r   )r   r
   rŠ   rq   r   r   r!   r8   Á   s   $6r8   c                 C   s$   t | d dƒ t g d¢| d  ¡S )Nrz   r   )gü©ñÒMbP?r   r&   r}   r†   r   r   r!   r9   Ï   s   r9   c                 C   s´   t  |g¡}t  d|¡}| d d d | d d d  |d< | dd… d  d || dd… d  d  | dd … d d  |dd…< | d d  d || d d  d  |d< |S )Nr   r   rz   r&   ry   )r@   rj   r`   rp   r   r   r!   r:   Ó   s   $J*r:   c                 C   r„   rT   r…   r†   r   r   r!   r;   Û   r‡   r;   c                 C   s   t  d|  ¡| |  S rs   )r@   Úlogr   r   r   r!   r<   Þ   r#   r<   c                 C   r„   rT   r…   r†   r   r   r!   r=   á   r‡   r=   )r>   Únumpyr@   r   Únumpy.testingr   r   Úscipy.optimizer   rM   rS   rd   rn   r2   r3   r4   r5   r{   r   r6   r7   r8   r9   r:   r;   r<   r=   r   r   r   r!   Ú<module>   s.    B$