a
    ‡ù»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                     sD  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 �]v\‰‰}|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ž0    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 |ƒ‚qÖqÆd 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
   ©ÚproblemZxscaleZyscaler   úIE:\soccer\ml_env\Lib\site-packages\scipy/optimize/tests/test__spectral.pyÚfunc0   s    ztest_performance.<locals>.funcr	   r   Úignore)Z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ÚminZerrstater   Úreprr   Úsuccessr   r   )Ze_aZe_rZtable_1r(   r
   r    r*   r	   r$   r'   r&   ÚsolÚerr_msgr   r   r   Útest_performance
   sR    	ïÿ
(þü&ÿÿrE   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>.funcrF   r   r)   )Ztolr,   )r   r   rB   r<   r>   r?   r   )r    r	   r#   rC   Zf0Zfxr   r   r   Útest_complexL   s    
rH   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+   r,   )	r<   r>   Zsolver?   r   r-   r   rB   r   )rL   rM   r(   r    ZxpÚepsrC   r   rK   r   Úcheck_solvabilityb   s    ý
z/test_linear_definite.<locals>.check_solvabilityéZ   iÒ  r"   r   r   r   )r   )
r<   ÚrandomÚseedÚarangeZreshapeZdiagr   r>   Zeigvalsr@   )rO   r
   rL   rM   r   r   r   Útest_linear_definite[   s    
 rT   c                  C   sf   dd„ } t tfD ]P}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 rI   r   )r   Úargr   r   r   Úf€   s    ztest_shape.<locals>.fr   )Zdtyper)   )r*   r,   )ÚfloatÚcomplexr<   ÚzerosÚonesr   r   rB   r   r   Úshape)rV   Údtr   rU   rC   r   r   r   Ú
test_shape   s    
r]   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<   rY   rS   r   ©r   r
   ÚgÚir   r   r   r.   �   s
    ,r.   c                 C   s"   t  | g¡}| | | d  ¡ |S ©Nr"   ©r<   ÚemptyÚfill©r
   r	   r   r   r   r/   –   s    r/   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š™™™™™¹?éÿÿÿÿr^   r_   r   r   r   r0   ›   s
    0r0   c                 C   s"   t  | g¡}| d| d  ¡ |S )Nr"   r   rc   rf   r   r   r   r1   ¢   s    r1   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<   rY   )r   r
   r`   r   r   r   ÚF_4¨   s    ^Nÿÿÿ2ri   c                 C   s(   t | d dƒ t g d¢| d  ¡}|S )Nrh   r   )rg   ç      à?rg   ©r   r<   Úarrayrf   r   r   r   Úx0_4´   s    rm   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"   rj   r   )Zaxis)r<   rS   Úsum)r   r
   ÚcÚmur   r   r   r2   ¹   s    r2   c                 C   s   t  | g¡S rI   ©r<   rZ   ©r
   r   r   r   r3   ¾   s    r3   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 )	Nrh   r   c                 S   sd   d|  d }d| d  d| d   d|   d d | d	k || d	k< d|  d | dk || dk< |S )
Nrj   r   i°ýÿÿrh   ix  iÇ  i„  iÎ  rg   r   )ÚtÚvr   r   r   ÚphiÄ   s    8zF_7.<locals>.phig     ˆÃ@r"   r   gq¬‹Ûh ð?)r   r<   rY   r   )r   r
   ru   r`   r   r   r   r4   Á   s    $6r4   c                 C   s$   t | d dƒ t g d¢| d  ¡S )Nrh   r   )gü©ñÒMbP?r   r"   rk   rr   r   r   r   r5   Ï   s    r5   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   rh   r"   rg   )r<   rY   rS   r_   r   r   r   r6   Ó   s    $J*r6   c                 C   s   t  | g¡S rI   rq   rr   r   r   r   r7   Û   s    r7   c                 C   s   t  d|  ¡| |  S rb   )r<   Úlogr   r   r   r   r8   Þ   s    r8   c                 C   s   t  | g¡S rI   rq   rr   r   r   r   r9   á   s    r9   )r:   Únumpyr<   r   Znumpy.testingr   r   Zscipy.optimizer   rE   rH   rT   r]   r.   r/   r0   r1   ri   rm   r2   r3   r4   r5   r6   r7   r8   r9   r   r   r   r   Ú<module>   s,   B$