§
    fŠtjâm  ã                   óÄ  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZ  G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Zd„ Z d„ Z!d„ Z" G d „ d!¦  «        Z#dS )"é    N)Ú
block_diag)Ú	csc_array)Úassert_array_almost_equalÚassert_array_lessÚassert_)ÚNonlinearConstraintÚLinearConstraintÚBoundsÚminimizeÚBFGSÚSR1Úrosenc                   óB   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zed„ ¦   «         Z	dS )
ÚMaratosú²Problem 15.4 from Nocedal and Wright

    The following optimization problem:
        minimize 2*(x[0]**2 + x[1]**2 - 1) - x[0]
        Subject to: x[0]**2 + x[1]**2 - 1 = 0
    é<   Nc                 óä   — |dz  t           j        z  }t          j        |¦  «        t          j        |¦  «        g| _        t          j        ddg¦  «        | _        || _        || _        d | _	        d S ©Né´   ç      ð?ç        ©
ÚnpÚpiÚcosÚsinÚx0ÚarrayÚx_optÚ
constr_jacÚconstr_hessÚbounds©ÚselfÚdegreesr    r!   Úradss        úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_minimize_constrained.pyÚ__init__zMaratos.__init__   ó]   € Ø�s‰{�2œ5Ñ ˆÝ”6˜$‘<”<¥¤¨¡¤Ð.ˆŒÝ”X˜s C˜jÑ)Ô)ˆŒ
Ø$ˆŒØ&ˆÔØˆŒˆˆó    c                 óN   — d|d         dz  |d         dz  z   dz
  z  |d         z
  S ©Né   r   é   © ©r$   Úxs     r'   ÚfunzMaratos.fun"   s0   € Ø�!�A”$˜‘'˜A˜aœD !™GÑ# aÑ'Ñ(¨1¨Q¬4Ñ/Ð/r*   c                 óX   — t          j        d|d         z  dz
  d|d         z  g¦  «        S ©Né   r   r.   ©r   r   r0   s     r'   ÚgradzMaratos.grad%   s+   € ÝŒx˜˜1˜Qœ4™ ™ 1 Q q¤T¡6Ð*Ñ+Ô+Ð+r*   c                 ó0   — dt          j        d¦  «        z  S ©Nr5   r-   ©r   Úeyer0   s     r'   ÚhesszMaratos.hess(   ó   € Ø•”˜‘”‰{Ðr*   c                 óv   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dd||¦  «        S )Nc                 ó0   — | d         dz  | d         dz  z   S ©Nr   r-   r.   r/   ©r1   s    r'   r2   zMaratos.constr.<locals>.fun-   ó   € Ø�Q”4˜‘7˜Q˜qœT 1™WÑ$Ð$r*   c                 ó0   — d| d         z  d| d         z  ggS r,   r/   rA   s    r'   ÚjaczMaratos.constr.<locals>.jac1   ó    € Ø˜1˜Qœ4™  1 Q¤4¡Ð(Ð)Ð)r*   c                 óB   — d|d         z  t          j        d¦  «        z  S ©Nr-   r   r:   ©r1   Úvs     r'   r<   zMaratos.constr.<locals>.hess7   ó   € Ø˜˜1œ‘v�bœf Q™iœiÑ'Ð'r*   r.   ©r    r!   r   ©r$   r2   rD   r<   s       r'   ÚconstrzMaratos.constr+   óu   € ð	%ð 	%ð 	%ð Œ?Ð"ð*ð *ð *ð *ð ”/ˆCàÔÐ#ð(ð (ð (ð (ð Ô#ˆDå" 3¨¨1¨c°4Ñ8Ô8Ð8r*   ©r   NN©
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r2   r7   r<   ÚpropertyrM   r/   r*   r'   r   r      sz   € € € € € ðð ðð ð ð ð0ð 0ð 0ð,ð ,ð ,ðð ð ð ð9ð 9ñ „Xð9ð 9ð 9r*   r   c                   óH   — e Zd ZdZd
d„Zd„ Zd„ Zd„ Zd„ Ze	d	„ ¦   «         Z
dS )ÚMaratosTestArgsr   r   Nc                 ó   — |dz  t           j        z  }t          j        |¦  «        t          j        |¦  «        g| _        t          j        ddg¦  «        | _        || _        || _        || _	        || _
        d | _        d S r   )r   r   r   r   r   r   r   r    r!   ÚaÚbr"   )r$   rY   rZ   r%   r    r!   r&   s          r'   r(   zMaratosTestArgs.__init__G   sk   € Ø�s‰{�2œ5Ñ ˆÝ”6˜$‘<”<¥¤¨¡¤Ð.ˆŒÝ”X˜s C˜jÑ)Ô)ˆŒ
Ø$ˆŒØ&ˆÔØˆŒØˆŒØˆŒˆˆr*   c                 óN   — | j         |k    s| j        |k    rt          ¦   «         ‚d S ©N)rY   rZ   Ú
ValueError)r$   rY   rZ   s      r'   Ú
_test_argszMaratosTestArgs._test_argsQ   s(   € ØŒ6�QŠ;ˆ;˜$œ& Aš+˜+Ý‘,”,Ðð &˜+r*   c                 óz   — |                       ||¦  «         d|d         dz  |d         dz  z   dz
  z  |d         z
  S r,   )r^   ©r$   r1   rY   rZ   s       r'   r2   zMaratosTestArgs.funU   sD   € Ø�Š˜˜1ÑÔÐØ�!�A”$˜‘'˜A˜aœD !™GÑ# aÑ'Ñ(¨1¨Q¬4Ñ/Ð/r*   c                 ó„   — |                       ||¦  «         t          j        d|d         z  dz
  d|d         z  g¦  «        S r4   )r^   r   r   r`   s       r'   r7   zMaratosTestArgs.gradY   s?   € Ø�Š˜˜1ÑÔÐÝŒx˜˜1˜Qœ4™ ™ 1 Q q¤T¡6Ð*Ñ+Ô+Ð+r*   c                 ó\   — |                       ||¦  «         dt          j        d¦  «        z  S r9   )r^   r   r;   r`   s       r'   r<   zMaratosTestArgs.hess]   s(   € Ø�Š˜˜1ÑÔÐØ•”˜‘”‰{Ðr*   c                 óv   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dd||¦  «        S )Nc                 ó0   — | d         dz  | d         dz  z   S r@   r/   rA   s    r'   r2   z#MaratosTestArgs.constr.<locals>.func   rB   r*   c                 ó0   — d| d         z  d| d         z  ggS r4   r/   rA   s    r'   rD   z#MaratosTestArgs.constr.<locals>.jacg   rE   r*   c                 óB   — d|d         z  t          j        d¦  «        z  S rG   r:   rH   s     r'   r<   z$MaratosTestArgs.constr.<locals>.hessm   rJ   r*   r.   rK   rL   s       r'   rM   zMaratosTestArgs.constra   rN   r*   rO   )rQ   rR   rS   rT   r(   r^   r2   r7   r<   rU   rM   r/   r*   r'   rW   rW   ?   s‰   € € € € € ðð ðð ð ð ðð ð ð0ð 0ð 0ð,ð ,ð ,ðð ð ð ð9ð 9ñ „Xð9ð 9ð 9r*   rW   c                   óR   — e Zd ZdZd	d„Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Z	dS )
ÚMaratosGradInFuncr   r   Nc                 óä   — |dz  t           j        z  }t          j        |¦  «        t          j        |¦  «        g| _        t          j        ddg¦  «        | _        || _        || _        d | _	        d S r   r   r#   s        r'   r(   zMaratosGradInFunc.__init__}   r)   r*   c                 ó¤   — d|d         dz  |d         dz  z   dz
  z  |d         z
  t          j        d|d         z  dz
  d|d         z  g¦  «        fS )Nr-   r   r.   r5   r6   r0   s     r'   r2   zMaratosGradInFunc.fun…   s]   € Ø�1�Q”4˜‘7˜Q˜qœT 1™WÑ$ qÑ(Ñ)¨A¨a¬DÑ0Ý”˜!˜A˜aœD™& ™( A a¨¤d¡FÐ+Ñ,Ô,ð.ð 	.r*   c                 ó   — dS )NTr/   ©r$   s    r'   r7   zMaratosGradInFunc.grad‰   s   € àˆtr*   c                 ó0   — dt          j        d¦  «        z  S r9   r:   r0   s     r'   r<   zMaratosGradInFunc.hess�   r=   r*   c                 óv   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dd||¦  «        S )Nc                 ó0   — | d         dz  | d         dz  z   S r@   r/   rA   s    r'   r2   z%MaratosGradInFunc.constr.<locals>.fun’   rB   r*   c                 ó0   — d| d         z  d| d         z  ggS r4   r/   rA   s    r'   rD   z%MaratosGradInFunc.constr.<locals>.jac–   rE   r*   c                 óB   — d|d         z  t          j        d¦  «        z  S rG   r:   rH   s     r'   r<   z&MaratosGradInFunc.constr.<locals>.hessœ   rJ   r*   r.   rK   rL   s       r'   rM   zMaratosGradInFunc.constr�   rN   r*   rO   )
rQ   rR   rS   rT   r(   r2   rU   r7   r<   rM   r/   r*   r'   rh   rh   u   s†   € € € € € ðð ðð ð ð ð.ð .ð .ð ðð ñ „Xððð ð ð ð9ð 9ñ „Xð9ð 9ð 9r*   rh   c                   óB   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zed„ ¦   «         Z	dS )	ÚHyperbolicIneqa  Problem 15.1 from Nocedal and Wright

    The following optimization problem:
        minimize 1/2*(x[0] - 2)**2 + 1/2*(x[1] - 1/2)**2
        Subject to: 1/(x[0] + 1) - x[1] >= 1/4
                                   x[0] >= 0
                                   x[1] >= 0
    Nc                 ó„   — ddg| _         ddg| _        || _        || _        t	          dt
          j        ¦  «        | _        d S )Nr   g–~TÃ>ÿ?gþ~1[²¶?)r   r   r    r!   r
   r   Úinfr"   )r$   r    r!   s      r'   r(   zHyperbolicIneq.__init__­   s?   € Ø�a�&ˆŒØ Ð)ˆŒ
Ø$ˆŒØ&ˆÔÝ˜Q¥¤Ñ'Ô'ˆŒˆˆr*   c                 óH   — d|d         dz
  dz  z  d|d         dz
  dz  z  z   S )Nç      à?r   r-   r.   r/   r0   s     r'   r2   zHyperbolicIneq.fun´   s/   € Ø�A�a”D˜1‘H˜q‘=Ñ  3¨¨!¬¨s©
°Q¡Ñ#6Ñ6Ð6r*   c                 ó.   — |d         dz
  |d         dz
  gS )Nr   r-   r.   rw   r/   r0   s     r'   r7   zHyperbolicIneq.grad·   s   € Ø�!”�q‘˜!˜Aœ$ ™*Ð%Ð%r*   c                 ó*   — t          j        d¦  «        S ©Nr-   r:   r0   s     r'   r<   zHyperbolicIneq.hessº   s   € ÝŒv�a‰yŒyÐr*   c                 óŠ   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dt          j        ||¦  «        S )Nc                 ó0   — d| d         dz   z  | d         z
  S )Nr.   r   r/   rA   s    r'   r2   z"HyperbolicIneq.constr.<locals>.fun¿   s   € Ø�a˜”d˜Q‘h‘< ! A¤$Ñ&Ð&r*   c                 ó*   — d| d         dz   dz  z  dggS )Néÿÿÿÿr   r.   r-   r/   rA   s    r'   rD   z"HyperbolicIneq.constr.<locals>.jacÃ   s!   € Ø˜Q˜qœT A™X¨™MÑ)¨2Ð.Ð/Ð/r*   c                 ól   — d|d         z  t          j        d| d         dz   dz  z  dgddgg¦  «        z  S )Nr-   r   r.   é   r6   rH   s     r'   r<   z#HyperbolicIneq.constr.<locals>.hessÉ   sH   € Ø˜˜1œ‘v�bœh¨¨A¨a¬D°1©H°q©=©¸!Ð(<Ø)*¨A¨ð(0ñ 1ô 1ñ 1ð 1r*   g      Ð?©r    r!   r   r   ru   rL   s       r'   rM   zHyperbolicIneq.constr½   sw   € ð	'ð 	'ð 	'ð Œ?Ð"ð0ð 0ð 0ð 0ð ”/ˆCàÔÐ#ð1ð 1ð 1ð 1ð Ô#ˆDå" 3¨­b¬f°c¸4Ñ@Ô@Ð@r*   )NNrP   r/   r*   r'   rs   rs   ¤   s   € € € € € ðð ð(ð (ð (ð (ð7ð 7ð 7ð&ð &ð &ðð ð ð ðAð Añ „XðAð Að Ar*   rs   c                   óB   — e Zd ZdZd
d„Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d	S )Ú
Rosenbrockz�Rosenbrock function.

    The following optimization problem:
        minimize sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
    r-   r   c                 ó¼   — t           j                             |¦  «        }|                     dd|¦  «        | _        t          j        |¦  «        | _        d | _        d S )Nr~   r.   )r   ÚrandomÚRandomStateÚuniformr   Úonesr   r"   )r$   ÚnÚrandom_stateÚrngs       r'   r(   zRosenbrock.__init__Ù   sH   € ÝŒi×#Ò# LÑ1Ô1ˆØ—+’+˜b ! QÑ'Ô'ˆŒÝ”W˜Q‘Z”ZˆŒ
ØˆŒˆˆr*   c                 ó´   — t          j        |¦  «        }t          j        d|dd …         |d d…         dz  z
  dz  z  d|d d…         z
  dz  z   d¬¦  «        }|S )Ng      Y@r.   r~   ç       @r   ©Úaxis)r   ÚasarrayÚsum)r$   r1   Úrs      r'   r2   zRosenbrock.funß   sh   € ÝŒJ�q‰MŒMˆÝŒF�5˜A˜a˜b˜bœE A c r c¤F¨C¡KÑ/°#Ñ5Ñ5¸¸Q¸sÀ¸s¼V¹ÀcÑ8IÑIØðñ ô ˆàˆr*   c                 óz  — t          j        |¦  «        }|dd…         }|d d…         }|dd …         }t          j        |¦  «        }d||dz  z
  z  d||dz  z
  z  |z  z
  dd|z
  z  z
  |dd…<   d|d         z  |d         |d         dz  z
  z  dd|d         z
  z  z
  |d<   d|d         |d         dz  z
  z  |d<   |S )	Nr.   r~   éþÿÿÿr-   éÈ   é�  épþÿÿr   )r   r�   Ú
zeros_like)r$   r1   ÚxmÚxm_m1Úxm_p1Úders         r'   r7   zRosenbrock.gradå   sä   € ÝŒJ�q‰MŒMˆØˆq�ˆtŒWˆØ�#�2�#”ˆØ�!�"�"”ˆÝŒm˜AÑÔˆØ˜B ¨¡™MÑ*Ø˜E B¨¡E™MÑ*¨RÑ/ñ0Ø23°q¸2±v±,ñ?ˆˆAˆbˆD‰	à˜˜!œ‘  !¤ q¨¤t¨Q¡w¡Ñ/°!°q¸1¸Q¼4±x±.Ñ@ˆˆA‰Ø˜˜2œ  2¤¨¡Ñ)Ñ*ˆˆB‰Øˆ
r*   c                 óÄ  — t          j        |¦  «        }t          j        d|d d…         z  d¦  «        t          j        d|d d…         z  d¦  «        z
  }t          j        t	          |¦  «        |j        ¬¦  «        }d|d         dz  z  d|d         z  z
  dz   |d<   d	|d<   d
d|dd…         dz  z  z   d|dd …         z  z
  |dd…<   |t          j        |¦  «        z   }|S )Nr—   r~   r.   r–   )Údtypei°  r   r-   r•   éÊ   )r   Ú
atleast_1dÚdiagÚzerosÚlenrž   )r$   r1   ÚHÚdiagonals       r'   r<   zRosenbrock.hessñ   sä   € ÝŒM˜!ÑÔˆÝŒG�D˜1˜S˜b˜Sœ6‘M 1Ñ%Ô%­¬°°a¸¸¸´f±¸bÑ(AÔ(AÑAˆÝ”8�C ™FœF¨!¬'Ð2Ñ2Ô2ˆØ˜Q˜qœT 1™W‘n s¨Q¨q¬T¡zÑ1°AÑ5ˆ�‰Øˆ�‰Ø˜t a¨¨"¨¤g¨q¡jÑ0Ñ0°3¸¸1¸2¸2¼±;Ñ>ˆ��2�‰Ø•”˜Ñ!Ô!Ñ!ˆØˆr*   c                 ó   — dS )Nr/   r/   rl   s    r'   rM   zRosenbrock.constrû   s   € àˆrr*   N)r-   r   rP   r/   r*   r'   rƒ   rƒ   Ò   sz   € € € € € ðð ðð ð ð ðð ð ð
ð 
ð 
ðð ð ð ðð ñ „Xðð ð r*   rƒ   c                   ó0   — e Zd ZdZdd„Zed„ ¦   «         ZdS )ÚIneqRosenbrockzöRosenbrock subject to inequality constraints.

    The following optimization problem:
        minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
        subject to: x[0] + 2 x[1] <= 1

    Taken from matlab ``fmincon`` documentation.
    r   c                 óp   — t                                | d|¦  «         ddg| _        ddg| _        d | _        d S )Nr-   r~   ç      à¿gn£¼à?g$¹ü‡ôÛÏ?©rƒ   r(   r   r   r"   ©r$   rŠ   s     r'   r(   zIneqRosenbrock.__init__	  s<   € Ý×Ò˜D ! \Ñ2Ô2Ð2Ø�t�*ˆŒØ˜fÐ%ˆŒ
ØˆŒˆˆr*   c                 óH   — ddgg}d}t          |t          j         |¦  «        S ©Nr.   r-   ©r	   r   ru   )r$   ÚArZ   s      r'   rM   zIneqRosenbrock.constr  s(   € à�ˆVˆHˆØˆÝ ¥B¤F 7¨AÑ.Ô.Ð.r*   N©r   ©rQ   rR   rS   rT   r(   rU   rM   r/   r*   r'   r¨   r¨      sM   € € € € € ðð ðð ð ð ð ð/ð /ñ „Xð/ð /ð /r*   r¨   c                   ó   — e Zd ZdZdd„ZdS )ÚBoundedRosenbrocka  Rosenbrock subject to inequality constraints.

    The following optimization problem:
        minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
        subject to:  -2 <= x[0] <= 0
                      0 <= x[1] <= 2

    Taken from matlab ``fmincon`` documentation.
    r   c                 ó�   — t                                | d|¦  «         ddg| _        d | _        t	          ddgddg¦  «        | _        d S )Nr-   gš™™™™™É¿gš™™™™™É?r”   r   )rƒ   r(   r   r   r
   r"   r¬   s     r'   r(   zBoundedRosenbrock.__init__   sI   € Ý×Ò˜D ! \Ñ2Ô2Ð2Ø˜�+ˆŒØˆŒ
Ý˜b !˜W q¨! fÑ-Ô-ˆŒˆˆr*   Nr±   )rQ   rR   rS   rT   r(   r/   r*   r'   r´   r´     s2   € € € € € ðð ð.ð .ð .ð .ð .ð .r*   r´   c                   ó0   — e Zd ZdZdd„Zed„ ¦   «         ZdS )ÚEqIneqRosenbrocka*  Rosenbrock subject to equality and inequality constraints.

    The following optimization problem:
        minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
        subject to: x[0] + 2 x[1] <= 1
                    2 x[0] + x[1] = 1

    Taken from matlab ``fimincon`` documentation.
    r   c                 óp   — t                                | d|¦  «         ddg| _        ddg| _        d | _        d S )Nr-   r~   rª   gæWs€`ŽÚ?gÙ|\*ÆÅ?r«   r¬   s     r'   r(   zEqIneqRosenbrock.__init__1  s<   € Ý×Ò˜D ! \Ñ2Ô2Ð2Ø�t�*ˆŒØ˜wÐ'ˆŒ
ØˆŒˆˆr*   c                 óx   — ddgg}d}ddgg}d}t          |t          j         |¦  «        t          |||¦  «        fS r®   r¯   )r$   ÚA_ineqÚb_ineqÚA_eqÚb_eqs        r'   rM   zEqIneqRosenbrock.constr7  sN   € à�a�&�ˆØˆØ�A�ˆxˆØˆÝ  ­"¬&¨°&Ñ9Ô9Ý   t¨TÑ2Ô2ð4ð 	4r*   Nr±   r²   r/   r*   r'   r·   r·   '  sM   € € € € € ðð ðð ð ð ð ð4ð 4ñ „Xð4ð 4ð 4r*   r·   c                   óR   — e Zd ZdZ	 	 dd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Z	e
d„ ¦   «         ZdS )ÚElecaª  Distribution of electrons on a sphere.

    Problem no 2 from COPS collection [2]_. Find
    the equilibrium state distribution (of minimal
    potential) of the electrons positioned on a
    conducting sphere.

    References
    ----------
    .. [1] E. D. Dolan, J. J. Mor'{e}, and T. S. Munson,
           "Benchmarking optimization software with COPS 3.0.",
            Argonne National Lab., Argonne, IL (US), 2004.
    r•   r   Nc                 ó`  — || _         t          j                             |¦  «        | _        | j                             ddt          j        z  | j         ¦  «        }| j                             t          j         t          j        | j         ¦  «        }t          j        |¦  «        t          j        |¦  «        z  }t          j        |¦  «        t          j        |¦  «        z  }t          j        |¦  «        }	t          j	        |||	f¦  «        | _
        d | _        || _        || _        d | _        d S )Nr   r-   )Ún_electronsr   r…   r†   r‹   r‡   r   r   r   Úhstackr   r   r    r!   r"   )
r$   rÁ   rŠ   r    r!   ÚphiÚthetar1   ÚyÚzs
             r'   r(   zElec.__init__O  sÞ   € à&ˆÔÝ”9×(Ò(¨Ñ6Ô6ˆŒàŒh×Ò˜q !¥b¤e¡)¨TÔ-=Ñ>Ô>ˆØ”× Ò ¥"¤% ­¬°Ô0@ÑAÔAˆÝŒF�5‰MŒM�BœF 3™KœKÑ'ˆÝŒF�5‰MŒM�BœF 3™KœKÑ'ˆÝŒF�5‰MŒMˆÝ”)˜Q  1˜IÑ&Ô&ˆŒØˆŒ
Ø$ˆŒØ&ˆÔØˆŒˆˆr*   c                 ó|   — |d | j         …         }|| j         d| j         z  …         }|d| j         z  d …         }|||fS rz   ©rÁ   )r$   r1   Úx_coordÚy_coordÚz_coords        r'   Ú_get_cordinateszElec._get_cordinates_  sT   € ØÐ%�TÔ%Ð%Ô&ˆØ�DÔ$ Q¨Ô)9Ñ%9Ð9Ô:ˆØ�A˜Ô(Ñ(Ð)Ð)Ô*ˆØ˜ Ð(Ð(r*   c                 ó˜   — |                       |¦  «        \  }}}|d d …d f         |z
  }|d d …d f         |z
  }|d d …d f         |z
  }|||fS r\   ©rÌ   )r$   r1   rÉ   rÊ   rË   ÚdxÚdyÚdzs           r'   Ú_compute_coordinate_deltaszElec._compute_coordinate_deltase  sm   € Ø$(×$8Ò$8¸Ñ$;Ô$;Ñ!ˆ�˜'Ø�Q�Q�Q˜�WÔ Ñ'ˆØ�Q�Q�Q˜�WÔ Ñ'ˆØ�Q�Q�Q˜�WÔ Ñ'ˆØ�2�rˆzÐr*   c                 ó  — |                       |¦  «        \  }}}t          j        d¬¦  «        5  |dz  |dz  z   |dz  z   dz  }d d d ¦  «         n# 1 swxY w Y   d|t          j        |¦  «        <   dt          j        |¦  «        z  S )NÚignore©Údivider-   rª   r   rw   )rÒ   r   ÚerrstateÚdiag_indices_fromr‘   )r$   r1   rÏ   rÐ   rÑ   Údm1s         r'   r2   zElec.funl  sÊ   € Ø×4Ò4°QÑ7Ô7‰
ˆˆB�ÝŒ[ Ð)Ñ)Ô)ð 	2ð 	2Ø�q‘5˜2˜q™5‘= 2 q¡5Ñ(¨TÑ1ˆCð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2à)*ˆ�BÔ  Ñ%Ô%Ñ&Ø•R”V˜C‘[”[Ñ Ð ó   ¯AÁAÁAc                 ó®  — |                       |¦  «        \  }}}t          j        d¬¦  «        5  |dz  |dz  z   |dz  z   dz  }d d d ¦  «         n# 1 swxY w Y   d|t          j        |¦  «        <   t          j        ||z  d¬¦  «         }t          j        ||z  d¬¦  «         }t          j        ||z  d¬¦  «         }t          j        |||f¦  «        S )NrÔ   rÕ   r-   ç      ø¿r   r.   rŽ   )rÒ   r   r×   rØ   r‘   rÂ   )	r$   r1   rÏ   rÐ   rÑ   Údm3Úgrad_xÚgrad_yÚgrad_zs	            r'   r7   z	Elec.grads  s  € Ø×4Ò4°QÑ7Ô7‰
ˆˆB�åŒ[ Ð)Ñ)Ô)ð 	2ð 	2Ø�q‘5˜2˜q™5‘= 2 q¡5Ñ(¨TÑ1ˆCð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2à)*ˆ�BÔ  Ñ%Ô%Ñ&å”&˜˜c™¨Ð*Ñ*Ô*Ð*ˆÝ”&˜˜c™¨Ð*Ñ*Ô*Ð*ˆÝ”&˜˜c™¨Ð*Ñ*Ô*Ð*ˆåŒy˜& &¨&Ð1Ñ2Ô2Ð2rÚ   c           	      ó®  — |                       |¦  «        \  }}}|dz  |dz  z   |dz  z   dz  }t          j        d¬¦  «        5  |dz  }|dz  }d d d ¦  «         n# 1 swxY w Y   t          j        | j        ¦  «        }d|||f<   d|||f<   |d|dz  z  |z  z
  }	t          j        |	d	¬
¦  «         |	||f<   d|z  |z  |z  }
t          j        |
d	¬
¦  «         |
||f<   d|z  |z  |z  }t          j        |d	¬
¦  «         |||f<   |d|dz  z  |z  z
  }t          j        |d	¬
¦  «         |||f<   d|z  |z  |z  }t          j        |d	¬
¦  «         |||f<   |d|dz  z  |z  z
  }t          j        |d	¬
¦  «         |||f<   t          j        t          j        |	|
|f¦  «        t          j        |
||f¦  «        t          j        |||f¦  «        f¦  «        }|S )Nr-   rw   rÔ   rÕ   éýÿÿÿéûÿÿÿr   r€   r.   rŽ   )rÒ   r   r×   ÚarangerÁ   r‘   ÚvstackrÂ   )r$   r1   rÏ   rÐ   rÑ   ÚdrÝ   Údm5ÚiÚHxxÚHxyÚHxzÚHyyÚHyzÚHzzr¤   s                   r'   r<   z	Elec.hess€  sj  € Ø×4Ò4°QÑ7Ô7‰
ˆˆB�Ø�‰U�R˜‘U‰]˜R ™UÑ" sÑ*ˆåŒ[ Ð)Ñ)Ô)ð 	ð 	Ø�r‘'ˆCØ�r‘'ˆCð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ŒI�dÔ&Ñ'Ô'ˆØˆˆAˆqˆD‰	ØˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	åŒIÝŒI�s˜C �oÑ&Ô&ÝŒI�s˜C �oÑ&Ô&ÝŒI�s˜C �oÑ&Ô&ð
ñ ô ˆð ˆs   ÁAÁAÁ!Ac                 ó–   ‡ — ˆ fd„}‰ j         €ˆ fd„}n‰ j         }‰ j        €d„ }n‰ j        }t          |t          j         d||¦  «        S )Nc                 ó^   •— ‰                      | ¦  «        \  }}}|dz  |dz  z   |dz  z   dz
  S )Nr-   r.   rÎ   )r1   rÉ   rÊ   rË   r$   s       €r'   r2   zElec.constr.<locals>.fun¨  s>   ø€ Ø(,×(<Ò(<¸QÑ(?Ô(?Ñ%ˆG�W˜gØ˜A‘: ¨¡
Ñ*¨W°a©ZÑ7¸!Ñ;Ð;r*   c                 ó  •— ‰                      | ¦  «        \  }}}dt          j        |¦  «        z  }dt          j        |¦  «        z  }dt          j        |¦  «        z  }t          t          j        |||f¦  «        ¦  «        S rz   )rÌ   r   r¡   r   rÂ   )r1   rÉ   rÊ   rË   ÚJxÚJyÚJzr$   s          €r'   rD   zElec.constr.<locals>.jac­  sw   ø€ Ø,0×,@Ò,@ÀÑ,CÔ,CÑ)�˜ 'Ø�œ Ñ)Ô)Ñ)�Ø�œ Ñ)Ô)Ñ)�Ø�œ Ñ)Ô)Ñ)�Ý ¥¤¨B°°B¨<Ñ!8Ô!8Ñ9Ô9Ð9r*   c                 óR   — dt          j        |¦  «        z  }t          |||¦  «        S rz   )r   r¡   r   )r1   rI   ÚDs      r'   r<   zElec.constr.<locals>.hess·  s%   € Ø�œ ™
œ
‘N�Ý! ! Q¨Ñ*Ô*Ð*r*   r   r�   rL   s   `   r'   rM   zElec.constr¦  sŽ   ø€ ð	<ð 	<ð 	<ð 	<ð 	<ð Œ?Ð"ð:ð :ð :ð :ð :ð :ð ”/ˆCàÔÐ#ð+ð +ð +ð +ð Ô#ˆDå" 3­¬¨°°C¸Ñ>Ô>Ð>r*   )r•   r   NN)rQ   rR   rS   rT   r(   rÌ   rÒ   r2   r7   r<   rU   rM   r/   r*   r'   r¿   r¿   A  s¡   € € € € € ðð ð 67Ø.2ðð ð ð ð )ð )ð )ðð ð ð!ð !ð !ð3ð 3ð 3ð$ð $ð $ðL ð?ð ?ñ „Xð?ð ?ð ?r*   r¿   c                   óä  — e Zd Z e¦   «          ed¬¦  «         e e¦   «         ¬¦  «         ed e¦   «         ¬¦  «         e¦   «          e¦   «          ed¬¦  «         e e¦   «         ¬¦  «         ed e¦   «         ¬¦  «         e¦   «          e	¦   «          e
¦   «          e¦   «          ed¬¦  «         edd¬¦  «         ed e¦   «         ¬¦  «         edd e¦   «         ¬¦  «        gZej                             d	e¦  «        ej                             d
d¦  «        ej                             dddd„ d„ d„ f¦  «        d„ ¦   «         ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestTrustRegionConstrú2-point)r!   )r    r!   ú3-pointr-   rÈ   )rÁ   r!   )rÁ   r    r!   Úprobr7   )ú	prob.gradrú   Fr<   ú	prob.hessc                  ó   — t          ¦   «         S r\   )r   r/   r*   r'   ú<lambda>zTestTrustRegionConstr.<lambda>×  s
   € ÅcÁeÄe€ r*   c                  ó"   — t          d¬¦  «        S )NÚdamp_update©Úexception_strategy©r   r/   r*   r'   rÿ   zTestTrustRegionConstr.<lambda>Ø  ó   € ­dÀmÐ.TÑ.TÔ.T€ r*   c                  ó"   — t          d¬¦  «        S )NÚskip_updater  r  r/   r*   r'   rÿ   zTestTrustRegionConstr.<lambda>Ù  r  r*   c           
      ó   — |dk    r|j         n|}t          |¦  «        r
 |¦   «         n|}|dk    r|j        n|}|dv r|dv rt          j        d¦  «         |j         du r|dv rt          j        d¦  «         t          |t          ¦  «        o|d	k    ot          |t          ¦  «        }|rt          j        d
¦  «         t          j
        ¦   «         5  t          j        ddt          ¦  «         t          |j        |j        d|||j        |j        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |j        �<t'          |j        |j        d¬¦  «         |j        dk    rt-          |j        d¦  «         |j        dk    r5t-          |j        d¦  «         |j        dk    rt-          |j        d¦  «         d|j        › d�}|j        dvs
J |¦   «         ‚d S )Nrü   rý   >   FÚcsrù   rú   >   r	  rù   rú   z+Numerical Hessian needs analytical gradientT>   Frú   z6prob.grad incompatible with grad in {'3-point', False}rú   z3Seems sensitive to initial conditions w/ AcceleraterÔ   údelta_grad == 0.0útrust-constr©ÚmethodrD   r<   r"   Úconstraintsé   ©Údecimalr.   ç:Œ0âŽyE>r-   Útr_interior_pointzInvalid termination condition: ú.>   r   r€   )r7   Úcallabler<   ÚpytestÚskipÚ
isinstancer´   r   ÚxfailÚwarningsÚcatch_warningsÚfilterwarningsÚUserWarningr   r2   r   r"   rM   r   r   r1   Ústatusr   Ú
optimalityÚ	tr_radiusr  Úbarrier_parameter)r$   rû   r7   r<   Ú	sensitiveÚresultÚmessages          r'   Útest_list_of_problemsz+TestTrustRegionConstr.test_list_of_problemsÕ  sR  € ð ! KÒ/Ð/ˆtŒyˆy°TˆÝ! $™œÐ1ˆtˆt‰vŒvˆv¨TˆØ  KÒ/Ð/ˆtŒyˆy°TˆàÐ7Ð7Ð7ØÐ4Ð4Ð4ÝŒKÐEÑFÔFÐFØŒ9˜ÐÐ Ð);Ð!;Ð!;ÝŒKÐPÑQÔQÐQÝ Õ&7Ñ8Ô8ð 0¸TÀYÒ=Nð 0Ý# D­$Ñ/Ô/ð 	àð 	PÝŒLÐNÑOÔOÐOÝÔ$Ñ&Ô&ð 	7ð 	7ÝÔ# HÐ.AÅ;ÑOÔOÐOÝ˜dœh¨¬Ø%3Ø"&¨TØ%)¤[Ø*.¬+ð	7ñ 7ô 7ˆFð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð Œ:Ð!Ý% f¤h°´
Ø./ð1ñ 1ô 1ð 1ð Œ} Ò!Ð!Ý! &Ô"3°TÑ:Ô:Ð:àŒ=˜AÒÐÝ˜fÔ.°Ñ5Ô5Ð5àŒ}Ð 3Ò3Ð3Ý! &Ô":¸DÑAÔAÐAð E°F´MÐDÐDÐDˆØŒ} FÐ*Ð*Ð*¨GÑ*Ô*Ð*Ð*Ð*s   ÃAD"Ä"D&Ä)D&c                 óh   — d„ }dg}t          |dg|d¬¦  «        }t          |j        dd¬¦  «         d S )	Nc                 ó   — | dz
  dz  S r®   r/   rA   s    r'   r2   z<TestTrustRegionConstr.test_default_jac_and_hess.<locals>.fun  ó   € Ø˜‘E˜a‘<Ðr*   ©r”   r-   rÜ   r  )r   r"   r  r.   r  r  ©r   r   r1   ©r$   r2   r"   Úress       r'   Útest_default_jac_and_hessz/TestTrustRegionConstr.test_default_jac_and_hess  sM   € ð	 ð 	 ð 	 à�ˆÝ�s ˜v¨f¸^ÐLÑLÔLˆÝ! #¤%¨°AÐ6Ñ6Ô6Ð6Ð6Ð6r*   c                 ój   — d„ }dg}t          |dg|dd¬¦  «        }t          |j        dd¬	¦  «         d S )
Nc                 ó   — | dz
  dz  S r®   r/   rA   s    r'   r2   z4TestTrustRegionConstr.test_default_hess.<locals>.fun
  r(  r*   r)  rÜ   r  rù   )r   r"   r  rD   r.   r  r  r*  r+  s       r'   Útest_default_hessz'TestTrustRegionConstr.test_default_hess	  sV   € ð	 ð 	 ð 	 à�ˆÝ�s ˜v¨f¸^Ø$ð&ñ &ô &ˆå! #¤%¨°AÐ6Ñ6Ô6Ð6Ð6Ð6r*   c                 óŽ  — t          ¦   «         }t          |j        |j        d|j        |j        ¬¦  «        }t          |j        |j        dd¬¦  «        }t          |j        |j        dd¬¦  «        }t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         d S )	Nr  )r  rD   r<   zL-BFGS-Brù   )r  rD   rú   r  r  )	rƒ   r   r2   r   r7   r<   r   r1   r   )r$   rû   r#  Úresult1Úresult2s        r'   Útest_no_constraintsz)TestTrustRegionConstr.test_no_constraints  sÎ   € Ý‰|Œ|ˆÝ˜$œ( D¤GØ!/Ø"œi¨d¬ið9ñ 9ô 9ˆõ ˜4œ8 T¤WØ",Ø(ð*ñ *ô *ˆõ ˜4œ8 T¤WØ",Ø(ð*ñ *ô *ˆõ 	" &¤(¨D¬JÀÐBÑBÔBÐBÝ! '¤)¨T¬ZÀÐCÑCÔCÐCÝ! '¤)¨T¬ZÀÐCÑCÔCÐCÐCÐCr*   c           	      óÂ  ‡— t          ¦   «         Šˆfd„}t          ‰j        ‰j        d‰j        |‰j        ‰j        ¬¦  «        }‰j        �t          |j	        ‰j        d¬¦  «         |j
        dk    rt          |j        d¦  «         |j
        dk    r5t          |j        d¦  «         |j        dk    rt          |j        d¦  «         |j
        d	v rt!          d
¦  «        ‚d S )Nc                 óX   •— ‰                      | ¦  «        }|                     |¦  «        S r\   )r<   Údot)r1   Úpr¤   rû   s      €r'   Úhesspz/TestTrustRegionConstr.test_hessp.<locals>.hessp$  s!   ø€ Ø—	’	˜!‘”ˆAØ—5’5˜‘8”8ˆOr*   r  )r  rD   r9  r"   r  r-   r  r.   r  r  ©r   r€   úInvalid termination condition.)r   r   r2   r   r7   r"   rM   r   r   r1   r  r   r  r   r  r!  ÚRuntimeError)r$   r9  r#  rû   s      @r'   Ú
test_hesspz TestTrustRegionConstr.test_hessp!  s  ø€ Ý‰yŒyˆð	ð 	ð 	ð 	ð 	õ ˜$œ( D¤GØ!/Ø"œi¨uØ!%¤Ø&*¤kð	3ñ 3ô 3ˆð Œ:Ð!Ý% f¤h°´
ÀAÐFÑFÔFÐFð Œ=˜AÒÐÝ˜fÔ/°Ñ6Ô6Ð6àŒ=˜AÒÐÝ˜fÔ.°Ñ5Ô5Ð5àŒ}Ð 3Ò3Ð3Ý! &Ô":¸DÑAÔAÐAàŒ=˜FÐ"Ð"ÝÐ?Ñ@Ô@Ð@ð #Ð"r*   c           
      óÆ  — t          dd¦  «        }t          |j        |j        dd|j        |j        |j        |j        ¬¦  «        }|j        �t          |j
        |j        d¬¦  «         |j        dk    rt          |j        d	¦  «         |j        dk    r5t          |j        d	¦  «         |j        d
k    rt          |j        d	¦  «         |j        dv rt#          d¦  «        ‚d S )NrY   éê   )rY   r?  r  r  r-   r  r.   r  r  r:  r;  )rW   r   r2   r   r7   r<   r"   rM   r   r   r1   r  r   r  r   r  r!  r<  )r$   rû   r#  s      r'   Ú	test_argszTestTrustRegionConstr.test_args>  sï   € Ý˜s CÑ(Ô(ˆå˜$œ( D¤G¨ZØ!/Ø"œi¨d¬iØ!%¤Ø&*¤kð	3ñ 3ô 3ˆð Œ:Ð!Ý% f¤h°´
ÀAÐFÑFÔFÐFð Œ=˜AÒÐÝ˜fÔ/°Ñ6Ô6Ð6àŒ=˜AÒÐÝ˜fÔ.°Ñ5Ô5Ð5ØŒ}Ð 3Ò3Ð3Ý! &Ô":¸DÑAÔAÐAàŒ=˜FÐ"Ð"ÝÐ?Ñ@Ô@Ð@ð #Ð"r*   c           	      óÖ   — t          ¦   «         }d}t          j        t          |¬¦  «        5  t	          |j        |j        ddd|j        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz9Whenever the gradient is estimated via finite-differences©Úmatchr  rù   )r  rD   r<   r  )r   r  Úraisesr]   r   r2   r   rM   )r$   rû   r$  s      r'   Útest_raise_exceptionz*TestTrustRegionConstr.test_raise_exceptionV  s³   € Ý‰yŒyˆØMˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	>ð 	>Ý�T”X˜tœw¨~À9Ø#°´ð>ñ >ô >ð >ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s   ¬%AÁA"Á%A"c                 ó  — d„ }t          d„ dgd„ d„ |d¬¦  «        }t          |                     d¦  «        ¦  «         t          |                     d	d
¦  «        dk    ¦  «         t          |                     dd
¦  «        dk    ¦  «         d S )Nc                 óJ   — t          d|v ¦  «         t          d|v ¦  «         d S )NÚnitÚniter)r   )r1   Úinfos     r'   Úcallbackz7TestTrustRegionConstr.test_issue_9044.<locals>.callbackb  s,   € Ý�E˜T�MÑ"Ô"Ð"Ý�G˜t�OÑ$Ô$Ð$Ð$Ð$r*   c                 ó   — | dz  S rz   r/   rA   s    r'   rÿ   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>f  s
   €  A q¡D€ r*   r   c                 ó   — d| z  S rz   r/   rA   s    r'   rÿ   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>f  s
   € ¸Q¸q¹S€ r*   c                 ó   — dS rz   r/   rA   s    r'   rÿ   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>g  s   € ¨€ r*   r  )rD   r<   rK  r  ÚsuccessrH  r~   r.   rI  )r   r   Úget)r$   rK  r#  s      r'   Útest_issue_9044z%TestTrustRegionConstr.test_issue_9044]  s£   € ð
	%ð 	%ð 	%õ ˜.˜.¨1¨#°=°=Ø*˜{°XØ!/ð1ñ 1ô 1ˆõ 	�—
’
˜9Ñ%Ô%Ñ&Ô&Ð&Ý�—
’
˜5 "Ñ%Ô%¨Ò*Ñ+Ô+Ð+õ 	�—
’
˜7 BÑ'Ô'¨1Ò,Ñ-Ô-Ð-Ð-Ð-r*   c                 ór  — t          j        ddg¦  «        }d„ }t          t          j        ddg¦  «        t          j        ddg¦  «        d¬¦  «        }t          j        ¦   «         5  t          j        ddt          ¦  «         t          d	|||¬
¦  «        }d d d ¦  «         n# 1 swxY w Y   |d         sJ ‚d S )Nr   rw   c                 ó8   — | d         }| d         }|dz  |dz  z   S )Nr   r.   r-   r/   )r1   Úx1Úx2s      r'   Úobjz3TestTrustRegionConstr.test_issue_15093.<locals>.objx  s'   € Ø�1”ˆBØ�1”ˆBØ˜‘7˜R 1™WÑ$Ð$r*   r   T)Úkeep_feasiblerÔ   r
  r  )r  r2   r   r"   rO  )r   r   r
   r  r  r  r  r   )r$   r   rV  r"   r#  s        r'   Útest_issue_15093z&TestTrustRegionConstr.test_issue_15093p  s  € õ ŒX�r˜3�iÑ Ô ˆð	%ð 	%ð 	%õ
 �œ " b Ñ*Ô*­B¬H°b¸"°XÑ,>Ô,>Ø&*ð,ñ ,ô ,ˆõ Ô$Ñ&Ô&ð 	ð 	ÝÔ# HÐ.AÅ;ÑOÔOÐOÝØ%ØØØð	ñ ô ˆFð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �iÔ Ð Ð Ð Ð Ð s   Á'/B"Â"B&Â)B&N)rQ   rR   rS   r   r   rh   rs   r   rƒ   r¨   r·   r´   r¿   Úlist_of_problemsr  ÚmarkÚparametrizer%  r-  r0  r4  r=  r@  rE  rQ  rX  r/   r*   r'   rø   rø   À  sU  € € € € € Ø˜™	œ	Ø˜¨IÐ6Ñ6Ô6Ø˜¨C¨C©E¬EÐ2Ñ2Ô2Ø˜¨9À#À#Á%Ä%ÐHÑHÔHØ)Ð)Ñ+Ô+Ø&˜Ñ(Ô(Ø&˜°9Ð=Ñ=Ô=Ø&˜°4°4±6´6Ð:Ñ:Ô:Ø&˜°)Ø37°4±6´6ð;ñ ;ô ;à"˜
™œØ&˜Ñ(Ô(Ø(Ð(Ñ*Ô*Ø)Ð)Ñ+Ô+Ø˜¨Ð+Ñ+Ô+Ø˜¨¸	ÐBÑBÔBØ˜¨¸¸¹¼Ð>Ñ>Ô>Ø˜¨°yØ),¨©¬ð0ñ 0ô 0ð#1Ðð( „[×Ò˜VÐ%5Ñ6Ô6Ø„[×Ò˜VÐ%DÑEÔEØ„[×Ò˜V k°9¸m¸mØ&TÐ&TØ&TÐ&Tð&Vñ Wô Wð%4ð %4ñWô Wñ FÔEñ 7Ô6ð
%4ðP7ð 7ð 7ð7ð 7ð 7ðDð Dð Dð Að Að Að:Að Að Að0>ð >ð >ð.ð .ð .ð&!ð !ð !ð !ð !r*   rø   c                   ó   — e Zd ZdZd„ ZdS )ÚTestEmptyConstraintaÇ  
    Here we minimize x^2+y^2 subject to x^2-y^2>1.
    The actual minimum is at (0, 0) which fails the constraint.
    Therefore we will find a minimum on the boundary at (+/-1, 0).

    When minimizing on the boundary, optimize uses a set of
    constraints that removes the constraint that sets that
    boundary.  In our case, there's only one constraint, so
    the result is an empty constraint.

    This tests that the empty constraint works.
    c           	      ó†  — d„ }d„ }d„ }d„ }d„ }d„ }t          |dt          j        ||¦  «        }ddg}t          t          j         t          j         gt          j        t          j        g¦  «        }t	          ||d	|||g|¬
¦  «        }	t          t          |	j        ¦  «        t          j        ddg¦  «        d¬¦  «         d S )Nc                 ó0   — | d         dz  | d         dz  z   S r@   r/   rA   s    r'   Úfunctionz;TestEmptyConstraint.test_empty_constraint.<locals>.function™  rB   r*   c                 óR   — t          j        d| d         z  d| d         z  g¦  «        S )Nr�   r   r.   r6   rA   s    r'   ÚfunctionjacobianzCTestEmptyConstraint.test_empty_constraint.<locals>.functionjacobianœ  s'   € Ý”8˜R  !¤™W b¨¨1¬¡gÐ.Ñ/Ô/Ð/r*   c                 ó   — d|z  S )Nr�   r/   rH   s     r'   Úfunctionhvpz>TestEmptyConstraint.test_empty_constraint.<locals>.functionhvpŸ  s   € Ø�a‘4ˆKr*   c                 óV   — t          j        | d         dz  | d         dz  z
  g¦  «        S r@   r6   rA   s    r'   Ú
constraintz=TestEmptyConstraint.test_empty_constraint.<locals>.constraint¢  s*   € Ý”8˜Q˜qœT 1™W q¨¤t¨Q¡wÑ.Ð/Ñ0Ô0Ð0r*   c                 óT   — t          j        d| d         z  d| d         z  gg¦  «        S )Nr-   r   r”   r.   r6   rA   s    r'   ÚconstraintjacobianzETestEmptyConstraint.test_empty_constraint.<locals>.constraintjacobian¥  s*   € Ý”8˜a  !¤™f b¨¨1¬¡gÐ.Ð/Ñ0Ô0Ð0r*   c                 óH   — t          j        ddgddgg¦  «        |d         z  S )Nr�   r   g       Àr   r6   rH   s     r'   ÚconstraintlcohzATestEmptyConstraint.test_empty_constraint.<locals>.constraintlcoh¨  s(   € Ý”8˜b "˜X¨¨C yÐ1Ñ2Ô2°Q°q´TÑ9Ð9r*   r   r�   r  )r  rD   r9  r  r"   r.   r   r5   r  )	r   r   ru   r
   r   r   Úabsr1   r   )
r$   r`  rb  rd  rf  rh  rj  Ú
startpointr"   r#  s
             r'   Útest_empty_constraintz)TestEmptyConstraint.test_empty_constraint—  s
  € ð	%ð 	%ð 	%ð	0ð 	0ð 	0ð	ð 	ð 	ð	1ð 	1ð 	1ð	1ð 	1ð 	1ð	:ð 	:ð 	:õ )¨°R½¼Ø);¸^ñMô Mˆ
ð ˜"�Xˆ
å�"œ&˜¥2¤6 'Ð*­R¬VµR´VÐ,<Ñ=Ô=ˆåØ
Ø
ØØØØ!�lØð
ñ 
ô 
ˆõ 	"¥# f¤h¡-¤-µ´¸1¸a¸&Ñ1AÔ1AÈ1ÐMÑMÔMÐMÐMÐMr*   N)rQ   rR   rS   rT   rm  r/   r*   r'   r]  r]  Š  s2   € € € € € ðð ð%Nð %Nð %Nð %Nð %Nr*   r]  c                  óH  — d„ } t          j        ¦   «         5  t          j        dt          ¦  «         t	          j        t	          j        ddg¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |dt          j        ¦  «        }t          | ddgz  |¬¦  «         d S )Nc                 ó0   — | d         dz  | d         dz  z   S r@   r/   rA   s    r'   Úoptztest_bug_11886.<locals>.optÀ  s   € Ø�Œt�Q‰w�q˜”t˜Q‘w‰Ðr*   rÔ   r.   r~   r-   )r  )
r  r  ÚsimplefilterÚPendingDeprecationWarningr   Úmatrixr¡   r	   ru   r   )rp  r°   Úlin_conss      r'   Útest_bug_11886ru  ¿  sÜ   € ðð ð õ 
Ô	 Ñ	"Ô	"ð 'ð 'ÝÔ˜hÕ(AÑBÔBÐBÝŒI•b”g˜q !˜f‘o”oÑ&Ô&ˆð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ    2¥r¤vÑ.Ô.€HåˆS�!�Q�C‘% xÐ0Ñ0Ô0Ð0Ð0Ð0s   —AA&Á&A*Á-A*c                  óº  ‡‡— t          ddgddgd¬¦  «        Šˆfd„Šˆfd„} ˆfd„}d„ }ˆfd	„}t          j        d
¦  «        }t          |dt          j        ¦  «        t          |dd|¬¦  «        g}t          | |d‰|¬¦  «        } ‰|j        ¦  «         |d         j        |d                              |j        ¦  «        cxk     r|d         j	        k     sn J ‚d S )Nr~   r.   T)ÚlbÚubrW  c                 ó„   •— t          j        | ‰j        k    ¦  «        sJ ‚t          j        | ‰j        k    ¦  «        sJ ‚d S r\   )r   Úallrw  rx  )r1   Úbndss    €r'   Úassert_inboundsz%test_gh11649.<locals>.assert_inboundsÑ  sA   ø€ ÝŒv�a˜4œ7’lÑ#Ô#Ð#Ð#Ð#ÝŒv�a˜4œ7’lÑ#Ô#Ð#Ð#Ð#Ð#Ð#r*   c                 óÒ   •—  ‰| ¦  «         t          j        | d         ¦  «        d| d         dz  z  d| d         dz  z  z   d| d         z  | d         z  z   d| d         z  z   dz   z  S )Nr   r5   r-   r.   )r   Úexp©r1   r|  s    €r'   rV  ztest_gh11649.<locals>.objÕ  sn   ø€ Øˆ˜ÑÔÐÝŒv�a˜”d‰|Œ|˜Q˜q œt Q™w™Y¨¨1¨Q¬4°©7©Ñ2°Q°q¸´t±V¸A¸a¼D±[Ñ@À1ÀQÀqÄTÁ6ÑIÈAÑMÑNÐNr*   c                 óB   •—  ‰| ¦  «         | d         dz  | d         z   S r@   r/   r  s    €r'   Únceztest_gh11649.<locals>.nceÙ  s)   ø€ Øˆ˜ÑÔÐØ�Œt�Q‰w˜˜1œ‰~Ðr*   c                 ó@   — t          j        d| d         z  dg¦  «        S r,   r6   rA   s    r'   Únce_jacztest_gh11649.<locals>.nce_jacÝ  s   € ÝŒx˜˜1˜Qœ4™ ˜Ñ$Ô$Ð$r*   c                 ó<   •—  ‰| ¦  «         | d         | d         z  S )Nr   r.   r/   r  s    €r'   Únciztest_gh11649.<locals>.ncià  s%   ø€ Øˆ˜ÑÔÐØ�Œt�A�a”D‰yÐr*   )g®Gáz®ï?g®Gáz®ï¿éöÿÿÿ)rD   r  )r2   r   r  r"   r  r   )
r
   r   r   r   ru   r   r1   rw  r2   rx  )	rV  r�  rƒ  r…  r   Únlcsr,  r|  r{  s	          @@r'   Útest_gh11649rˆ  Ë  sS  øø€ õ �b˜"�X 1 a &¸Ð=Ñ=Ô=€Dð$ð $ð $ð $ð $ðOð Oð Oð Oð Oðð ð ð ð ð%ð %ð %ðð ð ð ð õ 
Œ�-Ñ	 Ô	 €BÝ  S­"¬&Ñ1Ô1Ý  Q¨¨wÐ7Ñ7Ô7ð9€Dõ �s˜r¨.Ø¨Dð2ñ 2ô 2€Cà€O�C”EÑÔÐØ�Œ7Œ:˜˜QœŸš C¤EÑ*Ô*Ð7Ð7Ò7Ð7¨T°!¬W¬ZÒ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r*   c            	      ó2  ‡— d} t          j        t          | ¬¦  «        5  t          j        d¦  «        }t          j        d¦  «                             d¦  «        t          j        d¦  «        cŠ}t          ˆfd„||¬¦  «        }t          t          |d	|g¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         5  t          j        dt          ¦  «         t          t          |d	|gddi¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz:...more equality constraints than independent variables...rB  )r-   é   )r€   r-   )r€   c                 ó   •— ‰| z  S r\   r/   )r1   r¼   s    €r'   rÿ   z3test_gh20665_too_many_constraints.<locals>.<lambda>õ  s   ø€ ¨4°!©8€ r*   )rw  rx  r  ©r  r  rÔ   Úfactorization_methodÚSVDFactorization)r  r  Úoptions)r  rD  r]   r   rˆ   rä   Úreshaper   r   r   r  r  rq  r  )r$  r   r½   Úgr¼   s       @r'   Ú!test_gh20665_too_many_constraintsr’  î  s½  ø€ ð K€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð Dð DÝŒW�T‰]Œ]ˆÝ”Y˜q‘\”\×)Ò)¨&Ñ1Ô1µ2´7¸4±=´=ˆ
ˆˆdÝÐ 3Ð 3Ð 3Ð 3¸ÀÐFÑFÔFˆÝ•˜ >À¸sÐCÑCÔCÐCð	Dð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dõ 
Ô	 Ñ	"Ô	"ð Gð GÝÔ˜h­Ñ4Ô4Ð4Ý•˜ >À¸sØ0Ð2DÐEð	Gñ 	Gô 	Gð 	GðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs$   ŸA?B*Â*B.Â1B.Ã7DÄDÄDc                  óD  — d„ } d„ }t          j        ¦   «         5  t          j        ddt          ¦  «         t          j        ddt          ¦  «         t	          |ddgdt          | dd¦  «        ¬	¦  «        }d d d ¦  «         n# 1 swxY w Y   |j        s|j        d
k    sJ ‚d S )Nc                 óN   — | \  }}ddg\  }}d|dz  |dz  z  z   |dz  |dz  z  z
  S )Nç      @ç      @r   r-   r/   )ÚuÚu1Úu2rY   rZ   s        r'   Úlsfztest_issue_18882.<locals>.lsfþ  s@   € Ø‰ˆˆBØ�Sˆz‰ˆˆ1Ø�R˜‘U˜Q ™T‘\Ñ! B¨¡E¨A¨q©D¡LÑ0Ð0r*   c                 ó0   — t          j        | dz  ¦  «        S rz   )r   r‘   )r—  s    r'   Úofztest_issue_18882.<locals>.of  s   € ÝŒv�a˜‘d‰|Œ|Ðr*   rÔ   r
  zSingular Jacobian matrix.r   r  r   rŒ  r  )r  r  r  r  r   r   rO  Úconstr_violation)rš  rœ  r,  s      r'   Útest_issue_18882rž  ý  s  € ð1ð 1ð 1ð
ð ð õ 
Ô	 Ñ	"Ô	"ð 
ð 
ÝÔ Ð*=½{ÑKÔKÐKÝÔ Ð*EÅ{ÑSÔSÐSÝØØ�#ˆJØ!Ý+¨C°°AÑ6Ô6ð	
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ”Ð> #Ô"6¸Ò"=Ð"=Ð"=Ð>Ð"=Ð"=s   šABÂBÂBc                   ór  — e Zd Zej                             d eej         ej        ¦  «         e	¦   «         j
        f eej         d¦  «        ddgf edej        ¦  «        ddgf eddgddg¦  «        ddgfg¦  «        d„ ¦   «         Zd	„ Zd
„ Zd„ Zej                             d¬¦  «        d„ ¦   «         ZdS )ÚTestBoundedNelderMeadzbounds, x_optgš™™™™™é¿r•  g      "@r   r–  ç      @c                 óZ  — t          ¦   «         }t          j        ¦   «         5  d}t          j        d|t          ¦  «         t          |j        ddgd|¬¦  «        }t          j        |j	        |j
        ¦  «                             ¦   «         sJ ‚t          j        |j
        |j        ¦  «                             ¦   «         sJ ‚t          j        |                     |j
        ¦  «        |j        ¦  «        sJ ‚t          j        |j
        |d¬¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nú0Initial guess is not within the specified boundsrÔ   r†  úNelder-Mead©r  r"   gü©ñÒMbP?)Úatol)rƒ   r  r  r  r  r   r2   r   Ú
less_equalrw  r1   rz  rx  Úallclose)r$   r"   r   rû   Úmsgr#  s         r'   Útest_rosen_brock_with_boundsz2TestBoundedNelderMead.test_rosen_brock_with_bounds  sZ  € õ ‰|Œ|ˆÝÔ$Ñ&Ô&ð 		<ð 		<ØDˆCÝÔ# H¨cµ;Ñ?Ô?Ð?Ý˜dœh¨¨c¨
Ø%2Ø%+ð-ñ -ô -ˆFõ ”= ¤¨F¬HÑ5Ô5×9Ò9Ñ;Ô;Ð;Ð;Ð;Ý”= ¤¨6¬9Ñ5Ô5×9Ò9Ñ;Ô;Ð;Ð;Ð;Ý”;˜tŸxšx¨¬Ñ1Ô1°6´:Ñ>Ô>Ð>Ð>Ð>Ý”;˜vœx¨°UÐ;Ñ;Ô;Ð;Ð;Ð;Ð;ð		<ð 		<ð 		<ñ 		<ô 		<ð 		<ð 		<ð 		<ð 		<ð 		<ð 		<ð 		<øøøð 		<ð 		<ð 		<ð 		<ð 		<ð 		<s   ¢C0D Ä D$Ä'D$c                 óJ  — t          ¦   «         }t          ddgddg¦  «        }t          j        ¦   «         5  t          j        ddt
          ¦  «         t          |j        ddgd|¬¦  «        }t          j	        |j
        ddg¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )	Nr–  r¡  rÔ   r£  r†  é   r¤  r¥  ©rƒ   r
   r  r  r  r  r   r2   r   r¨  r1   ©r$   rû   r"   r#  s       r'   Útest_equal_all_boundsz+TestBoundedNelderMead.test_equal_all_bounds&  sü   € Ý‰|Œ|ˆÝ˜˜c˜
 S¨# JÑ/Ô/ˆÝÔ$Ñ&Ô&ð 	5ð 	5ÝÔ#ØØBÝñô ð õ ˜dœh¨¨a¨Ø%2Ø%+ð-ñ -ô -ˆFõ ”;˜vœx¨#¨s¨Ñ4Ô4Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ó   ¶ABÂBÂBc                 óJ  — t          ¦   «         }t          ddgddg¦  «        }t          j        ¦   «         5  t          j        ddt
          ¦  «         t          |j        ddgd|¬	¦  «        }t          j	        |j
        dd
g¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr–  r¡  g      4@rÔ   r£  r†  r¬  r¤  r¥  g      0@r­  r®  s       r'   Útest_equal_one_boundsz+TestBoundedNelderMead.test_equal_one_bounds3  sü   € Ý‰|Œ|ˆÝ˜˜c˜
 S¨$ KÑ0Ô0ˆÝÔ$Ñ&Ô&ð 	6ð 	6ÝÔ#ØØBÝñô ð õ ˜dœh¨¨a¨Ø%2Ø%+ð-ñ -ô -ˆFõ ”;˜vœx¨#¨t¨Ñ5Ô5Ð5Ð5Ð5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6r°  c                 ó   — t          ¦   «         }d}t          j        t          |¬¦  «        5  t	          t
          j         dgddg¦  «        }t          |j        ddgd|¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nz:An upper bound is less than the corresponding lower bound.rB  r   r–  g      Àr†  r€   r¤  r¥  )	rƒ   r  rD  r]   r
   r   ru   r   r2   ©r$   rû   r$  r"   s       r'   Útest_invalid_boundsz)TestBoundedNelderMead.test_invalid_bounds@  sË   € Ý‰|Œ|ˆØNˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	$ð 	$Ý�bœf˜W c˜N¨S°$¨KÑ8Ô8ˆFÝ�T”X  Q˜xØ)Ø"ð$ñ $ô $ð $ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ó   ¬:A3Á3A7Á:A7z5Failing on Azure Linux and macOS builds, see gh-13846)Úreasonc                 ó   — t          ¦   «         }d}t          j        t          |¬¦  «        5  t	          t
          j         dgddg¦  «        }t          |j        ddgd|¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr£  rB  r   r–  r¡  r†  r¬  r¤  r¥  )	rƒ   r  Úwarnsr  r
   r   ru   r   r2   r´  s       r'   Útest_outside_bounds_warningz1TestBoundedNelderMead.test_outside_bounds_warningI  sÍ   € õ ‰|Œ|ˆØDˆÝŒ\�+¨WÐ5Ñ5Ô5ð 	$ð 	$Ý�bœf˜W c˜N¨S°#¨JÑ7Ô7ˆFÝ�T”X  Q˜xØ)Ø"ð$ñ $ô $ð $ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$r¶  N)rQ   rR   rS   r  rZ  r[  r
   r   ru   rƒ   r   rª  r¯  r²  rµ  r  rº  r/   r*   r'   r   r     s'  € € € € € à„[×Ò˜_Ø%˜v r¤v g¨r¬vÑ6Ô6¸
¸
¹¼Ô8JÐKØ%˜v r¤v g¨tÑ4Ô4°t¸T°lÐCØ%˜v c¨2¬6Ñ2Ô2°S¸#°JÐ?Ø%˜v s¨C j°3¸°*Ñ=Ô=ÀÀB¸xÐHð ñ!ô !ð<ð <ñ!ô !ð<ð5ð 5ð 5ð6ð 6ð 6ð$ð $ð $ð „[×Òð -Ðñ .ô .ð$ð $ñ.ô .ð$ð $ð $r*   r   )$r  Únumpyr   r  Úscipy.linalgr   Úscipy.sparser   Únumpy.testingr   r   r   Úscipy.optimizer   r	   r
   r   r   r   r   r   rW   rh   rs   rƒ   r¨   r´   r·   r¿   rø   r]  ru  rˆ  r’  rž  r   r/   r*   r'   ú<module>rÀ     s5  ðØ €€€à Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø "Ð "Ð "Ð "Ð "Ð "ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð*9ð *9ð *9ð *9ð *9ñ *9ô *9ð *9ðZ39ð 39ð 39ð 39ð 39ñ 39ô 39ð 39ðl,9ð ,9ð ,9ð ,9ð ,9ñ ,9ô ,9ð ,9ð^+Að +Að +Að +Að +Añ +Aô +Að +Að\+ð +ð +ð +ð +ñ +ô +ð +ð\/ð /ð /ð /ð /�Zñ /ô /ð /ð,.ð .ð .ð .ð .˜
ñ .ô .ð .ð"4ð 4ð 4ð 4ð 4�zñ 4ô 4ð 4ð4|?ð |?ð |?ð |?ð |?ñ |?ô |?ð |?ð~H!ð H!ð H!ð H!ð H!ñ H!ô H!ð H!ðT2Nð 2Nð 2Nð 2Nð 2Nñ 2Nô 2Nð 2Nðj	1ð 	1ð 	1ð 8ð  8ð  8ðFGð Gð Gð?ð ?ð ?ð(A$ð A$ð A$ð A$ð A$ñ A$ô A$ð A$ð A$ð A$r*   