§
    ¢éUg$k  ã                   ó  — 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
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 ej!         "                    dd¬¦  «        d „ ¦   «         Z#d!„ Z$ G d"„ d#¦  «        Z%dS )$é    N)Ú
block_diag)Ú
csc_matrix)Úassert_array_almost_equalÚassert_array_lessÚassert_Úassert_allcloseÚsuppress_warnings)Ú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        úm/var/www/surfInsights/venv3-11/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   r0   ©r   r    r2   s     r)   ÚgradzMaratos.grad$   s+   € ÝŒx˜˜1˜Qœ4™ ™ 1 Q q¤T¡6Ð*Ñ+Ô+Ð+r,   c                 ó0   — dt          j        d¦  «        z  S ©Nr7   r/   ©r   Úeyer2   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/   r0   r1   ©r3   s    r)   r4   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.   r1   rC   s    r)   ÚjaczMaratos.constr.<locals>.jac0   ó    € Ø˜1˜Qœ4™  1 Q¤4¡Ð(Ð)Ð)r,   c                 óB   — d|d         z  t          j        d¦  «        z  S ©Nr/   r   r<   ©r3   Úvs     r)   r>   zMaratos.constr.<locals>.hess6   ó   € Ø˜˜1œ‘v�bœf Q™iœiÑ'Ð'r,   r0   ©r"   r#   r
   ©r&   r4   rF   r>   s       r)   ÚconstrzMaratos.constr*   óu   € ð	%ð 	%ð 	%ð Œ?Ð"ð*ð *ð *ð *ð ”/ˆCàÔÐ#ð(ð (ð (ð (ð Ô#ˆDå" 3¨¨1¨c°4Ñ8Ô8Ð8r,   ©r   NN©
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   r4   r9   r>   ÚpropertyrO   r1   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&   r[   r\   r'   r"   r#   r(   s          r)   r*   zMaratosTestArgs.__init__F   sk   € Ø�s‰{�2œ5Ñ ˆÝ”6˜$‘<”<¥¤¨¡¤Ð.ˆŒÝ”X˜s C˜jÑ)Ô)ˆŒ
Ø$ˆŒØ&ˆÔØˆŒØˆŒØˆŒˆˆr,   c                 óN   — | j         |k    s| j        |k    rt          ¦   «         ‚d S ©N)r[   r\   Ú
ValueError)r&   r[   r\   s      r)   Ú
_test_argszMaratosTestArgs._test_argsP   s(   € ØŒ6�QŠ;ˆ;˜$œ& Aš+˜+Ý‘,”,Ðð &˜+r,   c                 óz   — |                       ||¦  «         d|d         dz  |d         dz  z   dz
  z  |d         z
  S r.   )r`   ©r&   r3   r[   r\   s       r)   r4   zMaratosTestArgs.funT   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 r6   )r`   r   r    rb   s       r)   r9   zMaratosTestArgs.gradX   s?   € Ø�Š˜˜1ÑÔÐÝŒx˜˜1˜Qœ4™ ™ 1 Q q¤T¡6Ð*Ñ+Ô+Ð+r,   c                 ó\   — |                       ||¦  «         dt          j        d¦  «        z  S r;   )r`   r   r=   rb   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 rB   r1   rC   s    r)   r4   z#MaratosTestArgs.constr.<locals>.funb   rD   r,   c                 ó0   — d| d         z  d| d         z  ggS r6   r1   rC   s    r)   rF   z#MaratosTestArgs.constr.<locals>.jacf   rG   r,   c                 óB   — d|d         z  t          j        d¦  «        z  S rI   r<   rJ   s     r)   r>   z$MaratosTestArgs.constr.<locals>.hessl   rL   r,   r0   rM   rN   s       r)   rO   zMaratosTestArgs.constr`   rP   r,   rQ   )rS   rT   rU   rV   r*   r`   r4   r9   r>   rW   rO   r1   r,   r)   rY   rY   >   s‰   € € € € € ðð ðð ð ð ðð ð ð0ð 0ð 0ð,ð ,ð ,ðð ð ð ð9ð 9ñ „Xð9ð 9ð 9r,   rY   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   r0   r7   r8   r2   s     r)   r4   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 )NTr1   ©r&   s    r)   r9   zMaratosGradInFunc.gradˆ   s   € àˆtr,   c                 ó0   — dt          j        d¦  «        z  S r;   r<   r2   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 rB   r1   rC   s    r)   r4   z%MaratosGradInFunc.constr.<locals>.fun‘   rD   r,   c                 ó0   — d| d         z  d| d         z  ggS r6   r1   rC   s    r)   rF   z%MaratosGradInFunc.constr.<locals>.jac•   rG   r,   c                 óB   — d|d         z  t          j        d¦  «        z  S rI   r<   rJ   s     r)   r>   z&MaratosGradInFunc.constr.<locals>.hess›   rL   r,   r0   rM   rN   s       r)   rO   zMaratosGradInFunc.constr�   rP   r,   rQ   )
rS   rT   rU   rV   r*   r4   rW   r9   r>   rO   r1   r,   r)   rj   rj   t   s†   € € € € € ðð ðð ð ð ð.ð .ð .ð ðð ñ „Xððð ð ð ð9ð 9ñ „Xð9ð 9ð 9r,   rj   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/   r0   r1   r2   s     r)   r4   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/   r0   ry   r1   r2   s     r)   r9   zHyperbolicIneq.grad¶   s   € Ø�!”�q‘˜!˜Aœ$ ™*Ð%Ð%r,   c                 ó*   — t          j        d¦  «        S ©Nr/   r<   r2   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 )Nr0   r   r1   rC   s    r)   r4   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   r0   r/   r1   rC   s    r)   rF   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   r0   é   r8   rJ   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   rw   rN   s       r)   rO   zHyperbolicIneq.constr¼   sw   € ð	'ð 	'ð 	'ð Œ?Ð"ð0ð 0ð 0ð 0ð ”/ˆCàÔÐ#ð1ð 1ð 1ð 1ð Ô#ˆDå" 3¨­b¬f°c¸4Ñ@Ô@Ð@r,   )NNrR   r1   r,   r)   ru   ru   £   s   € € € € € ðð ð(ð (ð (ð (ð7ð 7ð 7ð&ð &ð &ðð ð ð ðAð Añ „XðAð Að Ar,   ru   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€   r0   )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@r0   r€   ç       @r   ©Úaxis)r   ÚasarrayÚsum)r&   r3   Úrs      r)   r4   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 )	Nr0   r€   éþÿÿÿr/   éÈ   é�  épþÿÿr   )r   r’   Ú
zeros_like)r&   r3   ÚxmÚxm_m1Úxm_p1Úders         r)   r9   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€   r0   r˜   )Údtypei°  r   r/   r—   éÊ   )r   Ú
atleast_1dÚdiagÚzerosÚlenr    )r&   r3   Ú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 )Nr1   r1   rn   s    r)   rO   zRosenbrock.constrú   s   € àˆrr,   N)r/   r   rR   r1   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 ©Nr0   r/   ©r   r   rw   )r&   ÚAr\   s      r)   rO   zIneqRosenbrock.constr  s(   € à�ˆVˆHˆØˆÝ ¥B¤F 7¨AÑ.Ô.Ð.r,   N©r   ©rS   rT   rU   rV   r*   rW   rO   r1   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³   )rS   rT   rU   rV   r*   r1   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__0  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)   rO   zEqIneqRosenbrock.constr6  sN   € à�a�&�ˆØˆØ�A�ˆxˆØˆÝ  ­"¬&¨°&Ñ9Ô9Ý   t¨TÑ2Ô2ð4ð 	4r,   Nr³   r´   r1   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Úthetar3   ÚyÚzs
             r)   r*   zElec.__init__N  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 r|   ©rÃ   )r&   r3   Ú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&   r3   rË   rÌ   rÍ   ÚdxÚdyÚdzs           r)   Ú_compute_coordinate_deltaszElec._compute_coordinate_deltasd  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   ry   )rÔ   r   ÚerrstateÚdiag_indices_fromr“   )r&   r3   rÑ   rÒ   rÓ   Údm1s         r)   r4   zElec.funk  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   r0   r�   )rÔ   r   rÙ   rÚ   r“   rÄ   )	r&   r3   rÑ   rÒ   rÓ   Údm3Úgrad_xÚgrad_yÚgrad_zs	            r)   r9   z	Elec.gradr  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/   ry   rÖ   r×   éýÿÿÿéûÿÿÿr   r‚   r0   r�   )rÔ   r   rÙ   ÚarangerÃ   r“   ÚvstackrÄ   )r&   r3   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/   r0   rÐ   )r3   rË   rÌ   rÍ   r&   s       €r)   r4   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 r|   )rÎ   r   r£   r   rÄ   )r3   rË   rÌ   rÍ   ÚJxÚJyÚJzr&   s          €r)   rF   zElec.constr.<locals>.jac¬  sw   ø€ Ø,0×,@Ò,@ÀÑ,CÔ,CÑ)�˜ 'Ø�œ Ñ)Ô)Ñ)�Ø�œ Ñ)Ô)Ñ)�Ø�œ Ñ)Ô)Ñ)�Ý!¥"¤)¨R°°R¨LÑ"9Ô"9Ñ:Ô:Ð:r,   c                 óR   — dt          j        |¦  «        z  }t          |||¦  «        S r|   )r   r£   r   )r3   rK   ÚDs      r)   r>   zElec.constr.<locals>.hess¶  s%   € Ø�œ ™
œ
‘N�Ý! ! Q¨Ñ*Ô*Ð*r,   r   rƒ   rN   s   `   r)   rO   zElec.constr¥  sŽ   ø€ ð	<ð 	<ð 	<ð 	<ð 	<ð Œ?Ð"ð;ð ;ð ;ð ;ð ;ð ;ð ”/ˆCàÔÐ#ð+ð +ð +ð +ð Ô#ˆDå" 3­¬¨°°C¸Ñ>Ô>Ð>r,   )r—   r   NN)rS   rT   rU   rV   r*   rÎ   rÔ   r4   r9   r>   rW   rO   r1   r,   r)   rÁ   rÁ   @  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 e¦   «          ed¬¦  «         e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#   Úprobr9   )ú	prob.gradrü   Fr>   ú	prob.hessÚdamp_update)Úexception_strategyÚskip_updatec           
      ó`  — |dk    r|j         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          ¦   «         5 }| 	                    t          d¦  «         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/ Accelerateúdelta_grad == 0.0útrust-constr©ÚmethodrF   r>   r$   Úconstraintsé   ©Údecimalr0   ç:Œ0âŽyE>r/   Útr_interior_pointzInvalid termination condition: ú.>   r   r‚   )r9   r>   ÚpytestÚskipÚ
isinstancer¶   r   Úxfailr	   ÚfilterÚUserWarningr   r4   r   r$   rO   r!   r   r3   Ústatusr   Ú
optimalityÚ	tr_radiusr  Úbarrier_parameter)r&   rý   r9   r>   Ú	sensitiveÚsupÚresultÚmessages           r)   Útest_list_of_problemsz+TestTrustRegionConstr.test_list_of_problemsÔ  s1  € ð ! KÒ/Ð/ˆtŒyˆy°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 CØ�JŠJ•{Ð$7Ñ8Ô8Ð8Ý˜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   Â0A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°   r1   rC   s    r)   r4   z<TestTrustRegionConstr.test_default_jac_and_hess.<locals>.fun  ó   € Ø˜‘E˜a‘<Ðr,   ©r–   r/   rÞ   r  )r   r$   r  r0   r
  r  ©r   r   r3   ©r&   r4   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°   r1   rC   s    r)   r4   z4TestTrustRegionConstr.test_default_hess.<locals>.fun  r!  r,   r"  rÞ   r  rû   )r   r$   r  rF   r0   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  rF   r>   zL-BFGS-Brû   )r  rF   rü   r
  r  )	r…   r   r4   r   r9   r>   r   r3   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)r3   Úpr¦   rý   s      €r)   Úhesspz/TestTrustRegionConstr.test_hessp.<locals>.hessp"  s!   ø€ Ø—	’	˜!‘”ˆAØ—5’5˜‘8”8ˆOr,   r  )r  rF   r2  r$   r	  r/   r  r0   r  r  ©r   r‚   úInvalid termination condition.)r   r   r4   r   r9   r$   rO   r!   r   r3   r  r   r  r  r  r  ÚRuntimeError)r&   r2  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 )Nr[   éê   )r[   r8  r  r  r/   r  r0   r  r  r3  r4  )rY   r   r4   r   r9   r>   r$   rO   r!   r   r3   r  r   r  r  r  r  r5  )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  rF   r>   r	  )r   r  Úraisesr_   r   r4   r   rO   )r&   rý   r  s      r)   Útest_raise_exceptionz*TestTrustRegionConstr.test_raise_exceptionT  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   )r3   Úinfos     r)   Úcallbackz7TestTrustRegionConstr.test_issue_9044.<locals>.callback`  s,   € Ý�E˜T�MÑ"Ô"Ð"Ý�G˜t�OÑ$Ô$Ð$Ð$Ð$r,   c                 ó   — | dz  S r|   r1   rC   s    r)   ú<lambda>z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>d  s
   €  A q¡D€ r,   r   c                 ó   — d| z  S r|   r1   rC   s    r)   rF  z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>d  s
   € ¸Q¸q¹S€ r,   c                 ó   — dS r|   r1   rC   s    r)   rF  z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>e  s   € ¨€ r,   r  )rF   r>   rD  r  ÚsuccessrA  r€   r0   rB  )r   r   Úget)r&   rD  r  s      r)   Útest_issue_9044z%TestTrustRegionConstr.test_issue_9044[  s£   € ð
	%ð 	%ð 	%õ ˜.˜.¨1¨#°=°=Ø*˜{°XØ!/ð1ñ 1ô 1ˆõ 	�—
’
˜9Ñ%Ô%Ñ&Ô&Ð&Ý�—
’
˜5 "Ñ%Ô%¨Ò*Ñ+Ô+Ð+õ 	�—
’
˜7 BÑ'Ô'¨1Ò,Ñ-Ô-Ð-Ð-Ð-r,   c                 óh  — t          j        ddg¦  «        }d„ }t          t          j        ddg¦  «        t          j        ddg¦  «        d¬¦  «        }t          ¦   «         5 }|                     t
          d¦  «         t          d|||¬	¦  «        }d d d ¦  «         n# 1 swxY w Y   |d
         sJ ‚d S )Nr   ry   c                 ó8   — | d         }| d         }|dz  |dz  z   S )Nr   r0   r/   r1   )r3   Úx1Úx2s      r)   Úobjz3TestTrustRegionConstr.test_issue_15093.<locals>.objv  s'   € Ø�1”ˆBØ�1”ˆBØ˜‘7˜R 1™WÑ$Ð$r,   r   T)Úkeep_feasibler  r  )r  r4   r   r$   rI  )r   r    r   r	   r  r  r   )r&   r   rP  r$   r  r  s         r)   Útest_issue_15093z&TestTrustRegionConstr.test_issue_15093n  s  € õ ŒX�r˜3�iÑ Ô ˆð	%ð 	%ð 	%õ
 �œ " b Ñ*Ô*­B¬H°b¸"°XÑ,>Ô,>Ø&*ð,ñ ,ô ,ˆõ Ñ Ô ð 	 CØ�JŠJ•{Ð$7Ñ8Ô8Ð8ÝØ%ØØØð	ñ ô ˆFð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �iÔ Ð Ð Ð Ð Ð s   Á"/BÂB!Â$B!N)rS   rT   rU   r   r   rj   ru   r   r…   rª   r¹   r¶   rÁ   Úlist_of_problemsr  ÚmarkÚparametrizer  r&  r)  r-  r6  r9  r>  rK  rR  r1   r,   r)   rú   rú   ¿  sm  € € € € € Ø˜™	œ	Ø˜¨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¸c¸c¹e¼eØ&* d¸mÐ&LÑ&LÔ&LØ&* d¸mÐ&LÑ&LÔ&Lð&Nñ Oô Oð$4ð $4ñOô Oñ FÔEñ 7Ô6ð
$4ðN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 rB   r1   rC   s    r)   Úfunctionz;TestEmptyConstraint.test_empty_constraint.<locals>.function—  rD   r,   c                 óR   — t          j        d| d         z  d| d         z  g¦  «        S )Nr�   r   r0   r8   rC   s    r)   ÚfunctionjacobianzCTestEmptyConstraint.test_empty_constraint.<locals>.functionjacobianš  s'   € Ý”8˜R  !¤™W b¨¨1¬¡gÐ.Ñ/Ô/Ð/r,   c                 ó   — d|z  S )Nr�   r1   rJ   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 rB   r8   rC   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–   r0   r8   rC   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   r8   rJ   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  rF   r2  r	  r$   r0   r   r7   r  )	r
   r   rw   r   r   r   Úabsr3   r    )
r&   rZ  r\  r^  r`  rb  rd  Ú
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)rS   rT   rU   rV   rg  r1   r,   r)   rW  rW  ˆ  s2   € € € € € ðð ð%Nð %Nð %Nð %Nð %Nr,   rW  c                  ó^  — d„ } t           j                             ¦   «         5 }|                     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 rB   r1   rC   s    r)   Úoptztest_bug_11886.<locals>.opt¾  s   € Ø�Œt�Q‰w�q˜”t˜Q‘w‰Ðr,   r0   r€   r/   )r	  )
r   Útestingr	   r  ÚPendingDeprecationWarningÚmatrixr£   r   rw   r   )rj  r  r²   Úlin_conss       r)   Útest_bug_11886ro  ½  sÝ   € ðð ð õ 
Œ×	%Ò	%Ñ	'Ô	'ð '¨3Ø�
Š
Õ,Ñ-Ô-Ð-ÝŒI•b”g˜q !˜f‘o”oÑ&Ô&ˆð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ    2¥r¤vÑ.Ô.€HåˆS�!�Q�C‘% xÐ0Ñ0Ô0Ð0Ð0Ð0s   ¢AA1Á1A5Á8A5z(Known bug in trust-constr; see gh-11649.T)ÚreasonÚstrictc                  óp  ‡‡— t          ddgddgd¬¦  «        Šˆfd„Šˆfd„} ˆfd„}ˆfd„}t          j        d	¦  «        }t          |d
t          j        ¦  «        t          |dd¦  «        g}t          | |d‰|¬¦  «        }|j        sJ ‚ ‰|j        ¦  «         |d         j        |d          	                    |j        ¦  «        cxk     r|d         j
        k     sn J ‚t           ||j        ¦  «        |d         j
        ¦  «         t          | |d‰|¬¦  «        }t          |j	        |j	        ¦  «         d S )Nr€   r0   T)ÚlbÚubrQ  c                 ó„   •— t          j        | ‰j        k    ¦  «        sJ ‚t          j        | ‰j        k    ¦  «        sJ ‚d S r^   )r   Úallrs  rt  )r3   Ú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   r7   r/   r0   )r   Úexp©r3   rx  s    €r)   rP  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 rB   r1   r{  s    €r)   Únceztest_gh11649.<locals>.nce×  s)   ø€ Øˆ˜ÑÔÐØ�Œt�Q‰w˜˜1œ‰~Ðr,   c                 ó<   •—  ‰| ¦  «         | d         | d         z  S )Nr   r0   r1   r{  s    €r)   Únciztest_gh11649.<locals>.nciÛ  s%   ø€ Øˆ˜ÑÔÐØ�Œt�A�a”D‰yÐr,   )g®Gáz®ï?g®Gáz®ï¿éöÿÿÿr  )r4   r   r  r$   r	  r   Úslsqp)r   r   r    r
   rw   r   rI  r3   rs  r4   rt  r   )	rP  r}  r  r   Únlcsr%  Úrefrx  rw  s	          @@r)   Útest_gh11649r„  Ê  s   øø€ õ �b˜"�X 1 a &¸Ð=Ñ=Ô=€Dð$ð $ð $ð $ð $ðOð Oð Oð Oð Oðð ð ð ð ðð ð ð ð õ 
Œ�-Ñ	 Ô	 €BÝ  S­"¬&Ñ1Ô1Ý  Q¨Ñ*Ô*ð,€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Ý�C�C˜œ‘J”J  Q¤¤
Ñ+Ô+Ð+å
�s˜r¨'Ø¨Dð2ñ 2ô 2€Cå�C”G˜SœWÑ%Ô%Ð%Ð%Ð%r,   c            	      óH  ‡— 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          ¦  «         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...r;  )r/   é   )r‚   r/   )r‚   c                 ó   •— ‰| z  S r^   r1   )r3   r¾   s    €r)   rF  z3test_gh20665_too_many_constraints.<locals>.<lambda>ö  s   ø€ ¨4°!©8€ r,   )rs  rt  r  )r  r	  Úfactorization_methodÚSVDFactorization)r  r	  Úoptions)r  r=  r_   r   rŠ   ræ   Úreshaper
   r   r   rk  r	   r  r  )r  r   r¿   Úgr  r¾   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¨3Ø�
Š
•;ÑÔÐÝ•˜ >À¸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                   ó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š™™™™™é¿g      @g      "@r   ç      @ç      @c                 óL  — t          ¦   «         }t          ¦   «         5 }|                     t          d¦  «         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€  úNelder-Mead©r  r$   gü©ñÒMbP?)Úatol)r…   r	   r  r  r   r4   r   Ú
less_equalrs  r3   rv  rt  Úallclose)r&   r$   r!   rý   r  r  s         r)   Útest_rosen_brock_with_boundsz2TestBoundedNelderMead.test_rosen_brock_with_bounds  sW  € õ ‰|Œ|ˆÝÑ Ô ð 		< CØ�JŠJ•{ð %;ñ <ô <ð <å˜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   �C.DÄDÄ Dc                 ó@  — t          ¦   «         }t          ddgddg¦  «        }t          ¦   «         5 }|                     t          d¦  «         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   r4   r   r˜  r3   ©r&   rý   r$   r  r  s        r)   Útest_equal_all_boundsz+TestBoundedNelderMead.test_equal_all_bounds  só   € Ý‰|Œ|ˆÝ˜˜c˜
 S¨# JÑ/Ô/ˆÝÑ Ô ð 	5 CØ�JŠJ•{ð %;ñ <ô <ð <å˜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                 ó@  — t          ¦   «         }t          ddgddg¦  «        }t          ¦   «         5 }|                     t          d¦  «         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•  g      0@rœ  r�  s        r)   Útest_equal_one_boundsz+TestBoundedNelderMead.test_equal_one_bounds  só   € Ý‰|Œ|ˆÝ˜˜c˜
 S¨$ KÑ0Ô0ˆÝÑ Ô ð 	6 CØ�JŠJ•{ð %;ñ <ô <ð <å˜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.r;  r   r�  g      Àr€  r‚   r”  r•  )	r…   r  r=  r_   r   r   rw   r   r4   ©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)rp  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 )
Nr“  r;  r   r�  r‘  r€  r›  r”  r•  )	r…   r  Úwarnsr  r   r   rw   r   r4   r£  s       r)   Útest_outside_bounds_warningz1TestBoundedNelderMead.test_outside_bounds_warning3  sÍ   € õ ‰|Œ|ˆØDˆÝŒ\�+¨WÐ5Ñ5Ô5ð 	$ð 	$Ý�bœf˜W c˜N¨S°#¨JÑ7Ô7ˆFÝ�T”X  Q˜xØ)Ø"ð$ñ $ô $ð $ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$r¥  N)rS   rT   rU   r  rT  rU  r   r   rw   r…   r!   r™  rž  r¡  r¤  r  r¨  r1   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�  )&Únumpyr   r  Úscipy.linalgr   Úscipy.sparser   Únumpy.testingr   r   r   r   r	   Úscipy.optimizer
   r   r   r   r   r   r   r   rY   rj   ru   r…   rª   r¶   r¹   rÁ   rú   rW  ro  rT  r  r„  r�  r�  r1   r,   r)   ú<module>r®     sS  ðØ Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #ð.ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð*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|?ð |?ð |?ð |?ð |?ñ |?ô |?ð |?ð~G!ð G!ð G!ð G!ð G!ñ G!ô G!ð G!ðR2Nð 2Nð 2Nð 2Nð 2Nñ 2Nô 2Nð 2Nðj	1ð 	1ð 	1ð „×ÒÐDØð ñ  ô  ð &ð  &ñ ô  ð &ðFGð Gð Gð =$ð =$ð =$ð =$ð =$ñ =$ô =$ð =$ð =$ð =$r,   