§
    fŠtjg  ã                   ó`   — d Z ddlmZmZ ddlZddlmZmZ ddl	Z
ddlmZ  G d„ d¦  «        ZdS )z5
Unit tests for optimization routines from _root.py.
é    )Úassert_Úassert_equalN)ÚraisesÚwarns©Úrootc                   óx   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zej	         
                    dg d¢¦  «        d„ ¦   «         Zd	S )
ÚTestRootc           	      ó  — d„ }d„ }dD ]ú}|dv rŒ|dv r|}nd }t          |ddg|d|¬¦  «        }t          |ddg|d	|¬¦  «        }|› d
 ||j        ¦  «        › d ||j        ¦  «        › �}t          |j        |¦  «         t          |j        |¦  «         t          t	           ||j        ¦  «        ¦  «                             ¦   «         t	           ||j        ¦  «        ¦  «                             ¦   «         k     |¦  «         Œûd S )Nc                 óP   — | \  }}t          j        |dz  dz
  |dz  dz
  g¦  «        S ©Né   é   ©ÚnpÚarray©ÚzÚxÚys      ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/optimize/tests/test__root.pyÚfuncz)TestRoot.test_tol_parameter.<locals>.func   ó0   € Ø‰DˆAˆqÝ”8˜Q ™T A™X q¨!¡t¨a¡xÐ0Ñ1Ô1Ð1ó    c                 óX   — | \  }}t          j        d|dz  z  dgdd|dz  z  gg¦  «        S )Nr   é   r   r   r   s      r   Údfuncz*TestRoot.test_tol_parameter.<locals>.dfunc   s8   € Ø‰DˆAˆqÝ”8˜a  1¡™f a˜[¨1¨a°°1±©f¨+Ð6Ñ7Ô7Ð7r   )ÚhybrÚlmÚbroyden1Úbroyden2ÚandersonÚdiagbroydenÚkrylov)ÚlinearmixingÚexcitingmixing)r   r   çš™™™™™ñ?g-Cëâ6?)ÚjacÚtolÚmethodç      à?z: z vs. )r   r   r   ÚsuccessÚabsÚmax)Úselfr   r   r*   r(   Úsol1Úsol2Úmsgs           r   Útest_tol_parameterzTestRoot.test_tol_parameter   sI  € ð	2ð 	2ð 	2ð	8ð 	8ð 	8ð0ð 	ð 	ˆFàÐ;Ð;Ð;àà˜Ð'Ð'Ø��à�å˜˜s 3˜i¨S°dÀ6ÐJÑJÔJˆDÝ˜˜s 3˜i¨S°cÀ&ÐIÑIÔIˆDØÐ@Ð@˜t˜t D¤F™|œ|Ð@Ð@°$°$°t´v±,´,Ð@Ð@ˆCÝ�D”L #Ñ&Ô&Ð&Ý�D”L #Ñ&Ô&Ð&Ý•C˜˜˜TœV™œÑ%Ô%×)Ò)Ñ+Ô+­c°$°$°t´v±,´,Ñ.?Ô.?×.CÒ.CÑ.EÔ.EÒEØñô ð ð ð!	ð 	r   c                 óx   — d„ }dD ]3}t          t          j        t          j        d¦  «        |d|i¬¦  «         Œ4d S )Nc                 ó,   — t          | d         ¦  «        S ©Nr   )r-   ©r   s    r   Únormz$TestRoot.test_tol_norm.<locals>.norm,   s   € Ý�q˜”t‘9”9Ðr   )r&   r#   r%   r"   r    r!   r$   r   Útol_norm)r*   Úoptions)r   r   Ú
zeros_likeÚzeros)r/   r8   r*   s      r   Útest_tol_normzTestRoot.test_tol_norm*   sb   € ð	ð 	ð 	ð!ð 		,ð 		,ˆFõ •”¥¤¨¡¤°FØ# TÐ*ð,ñ ,ô ,ð ,ð ,ð		,ð 		,r   c                 ó6   — dd„}t          |ddgd¬¦  «         d S )Nr   c                 óP   — | \  }}t          j        |dz  dz
  |dz  |z
  g¦  «        S r   r   )r   Úfr   r   s       r   r   z=TestRoot.test_minimize_scalar_coerce_args_param.<locals>.func<   r   r   r'   g      ø?)Úargs©r   r   )r/   r   s     r   Ú&test_minimize_scalar_coerce_args_paramz/TestRoot.test_minimize_scalar_coerce_args_param:   s7   € ð	2ð 	2ð 	2ð 	2õ 	ˆT�C˜�: CÐ(Ñ(Ô(Ð(Ð(Ð(r   c                 ó¶   —  G d„ d¦  «        } |¦   «         }t          t          ¦  «        5  t          |ddgd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó   — e Zd Zd„ Zd„ ZdS )ú!TestRoot.test_f_size.<locals>.func                 ó   — d| _         d S r6   ©Úcount)r/   s    r   Ú__init__z*TestRoot.test_f_size.<locals>.fun.__init__F   s   € Ø�”
�
�
r   c                 ó  — | xj         dz  c_         | j         dz  s$|d         d|d         |d         z
  dz  z  z   dz
  }nC|d         d|d         |d         z
  dz  z  z   dz
  d|d         |d         z
  dz  z  |d         z   g}|S )Nr   é   r   r+   r   g      ð?rH   )r/   r   Úrets      r   Ú__call__z*TestRoot.test_f_size.<locals>.fun.__call__I   s¡   € Ø�
”
˜a‘�
”
àœ
 Q™ð =Ø˜Aœ$ ¨¨!¬¨q°¬t©¸Ñ'9Ñ!9Ñ9¸CÑ?�C�Cà˜aœD 3¨!¨A¬$°°1´©+¸!Ñ);Ñ#;Ñ;¸cÑAØ ! A¤$¨¨1¬¡+°!Ñ!3Ñ3°a¸´dÑ:ð<�Cð �
r   N)Ú__name__Ú
__module__Ú__qualname__rJ   rN   © r   r   ÚfunrF   E   s2   € € € € € ðð ð ð	ð 	ð 	ð 	ð 	r   rS   çš™™™™™¹?g        r   )r*   )Úassert_raisesÚ
ValueErrorr   )r/   rS   ÚFs      r   Útest_f_sizezTestRoot.test_f_sizeA   sÂ   € ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð ˆC‰EŒEˆÝ�:Ñ&Ô&ð 	-ð 	-Ý��S˜#�J tÐ,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   ¬AÁAÁAc                 ó&  ‡‡— d„ Šd„ Šˆˆfd„}t          j        d¦  «        }t          ‰|dd¬¦  «        }d}t          t          |¬	¦  «        5  t          ‰|dd‰¬
¦  «        }d d d ¦  «         n# 1 swxY w Y   t          t          |¬	¦  «        5  t          ||ddd¬
¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |j        |j        ¦  «         t          |j        |j        ¦  «         |j        |j        cxu r|j        cxu rdu sn J ‚d S )Nc                 óv   — d| d         z  d| d         dz  z  z
  dz   d| d         dz  z  d| d         z  z   dz
  gS )	Nr   r   g      Ð?r   r   é
   rT   rL   rR   ©r   Úignoreds     r   rS   z#TestRoot.test_gh_10370.<locals>.fun\   sI   € Ø�a˜”d‘F˜T ! A¤$¨¡'™\Ñ)¨BÑ.°°A°a´D¸!±G±¸aÀÀ!Ä¹fÑ0DÀqÑ0HÐIÐIr   c                 ó6   — dd| d         z  gd| d         z  dggS )Nr   r+   r   gš™™™™™É?r   rL   rR   r\   s     r   Úgradz$TestRoot.test_gh_10370.<locals>.grad_   s%   € Ø˜˜a œd™
�O c¨A¨a¬D¡j°! _Ð5Ð5r   c                 ó4   •—  ‰| |¦  «         ‰| |¦  «        fS )NrR   )r   r]   rS   r_   s     €€r   Úfun_gradz(TestRoot.test_gh_10370.<locals>.fun_gradb   s$   ø€ Ø�3�q˜'‘?”? D D¨¨GÑ$4Ô$4Ð4Ð4r   r   rB   r$   )rA   r*   z'Method krylov does not use the jacobian)Úmatch)rA   r*   r(   T)r   r<   r   Úassert_warnsÚRuntimeWarningr   r   r,   )	r/   ra   Úx0ÚrefÚmessageÚres1Úres2rS   r_   s	          @@r   Útest_gh_10370zTestRoot.test_gh_10370X   sø  øø€ ð	Jð 	Jð 	Jð	6ð 	6ð 	6ð	5ð 	5ð 	5ð 	5ð 	5ð 	5õ ŒX�a‰[Œ[ˆå�3˜ ¨hÐ7Ñ7Ô7ˆØ;ˆÝ�.°Ð8Ñ8Ô8ð 	Gð 	GÝ˜˜R d°8ÀÐFÑFÔFˆDð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gå�.°Ð8Ñ8Ô8ð 	Lð 	LÝ˜ "¨4¸ÀdÐKÑKÔKˆDð	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lõ 	�T”V˜SœUÑ#Ô#Ð#Ý�T”V˜SœUÑ#Ô#Ð#ØŒ|˜tœ|ÐBÐBÐBÐB¨s¬{ÐBÐBÐBÐB¸dÐBÐBÐBÐBÐBÐBÐBÐBs$   ÁA/Á/A3Á6A3ÂB1Â1B5Â8B5r*   )
r   r   r    r!   r"   r%   r#   r&   r$   zdf-sanec                 óL   — d„ }t          |dg|¬¦  «        }|j        |k    sJ ‚d S )Nc                 ó   — | dz
  S )Nr   rR   r7   s    r   r   z,TestRoot.test_method_in_result.<locals>.funcw   s   € Ø�q‘5ˆLr   r   )re   r*   )r   r*   )r/   r*   r   Úress       r   Útest_method_in_resultzTestRoot.test_method_in_resultr   sB   € ð
	ð 	ð 	õ �4˜Q˜C¨Ð/Ñ/Ô/ˆØŒz˜VÒ#Ð#Ð#Ð#Ð#Ð#r   N)rO   rP   rQ   r3   r=   rC   rX   rj   ÚpytestÚmarkÚparametrizern   rR   r   r   r
   r
      s£   € € € € € ðð ð ð:,ð ,ð ,ð )ð )ð )ð-ð -ð -ð.Cð Cð Cð4 „[×Ò˜Xð (=ð (=ð (=ñ >ô >ð$ð $ñ	>ô >ð$ð $ð $r   r
   )Ú__doc__Únumpy.testingr   r   ro   r   rU   r   rc   Únumpyr   Úscipy.optimizer   r
   rR   r   r   ú<module>rv      s¤   ððð ð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø €€€Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ Ð Ð Ð à Ð Ð Ð Ð Ð ðo$ð o$ð o$ð o$ð o$ñ o$ô o$ð o$ð o$ð o$r   