Ë
    0Ò^jâ‡  ã                   ó€  — 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"d „ Z# G d!„ d"«      Z$y)#é    N)Ú
block_diag)Ú	csc_array)Úassert_array_almost_equalÚassert_array_lessÚassert_)ÚNonlinearConstraintÚLinearConstraintÚBoundsÚminimizeÚBFGSÚSR1Úrosenc                   ó:   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zed„ «       Z	y)	Ú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 | _	        y ©Né´   ç      ð?ç        ©
ÚnpÚpiÚcosÚsinÚx0ÚarrayÚx_optÚ
constr_jacÚconstr_hessÚbounds©ÚselfÚdegreesr   r    Úradss        úy/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_minimize_constrained.pyÚ__init__zMaratos.__init__   óZ   € Ø�s‰{œ2Ÿ5™5Ñ ˆÜ—6‘6˜$“<¤§¡¨£Ð.ˆŒÜ—X‘X˜s C˜jÓ)ˆŒ
Ø$ˆŒØ&ˆÔØˆ�ó    c                 ó<   — 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                 óN   — t        j                  d|d   z  dz
  d|d   z  g«      S ©Né   r   r-   ©r   r   r/   s     r&   ÚgradzMaratos.grad%   s*   € Ü�x‰x˜˜1˜Q™4™ ™ 1 Q q¡T¡6Ð*Ó+Ð+r)   c                 ó2   — dt        j                  d«      z  S ©Nr4   r,   ©r   Úeyer/   s     r&   ÚhesszMaratos.hess(   ó   € Ø”—‘˜“‰{Ðr)   c                 ó–   — d„ }| j                   €d„ }n| j                   }| j                  €d„ }n| j                  }t        |dd||«      S )Nc                 ó$   — | d   dz  | d   dz  z   S ©Nr   r,   r-   r.   ©r0   s    r&   r1   zMaratos.constr.<locals>.fun-   ó   € Ø�Q‘4˜‘7˜Q˜q™T 1™WÑ$Ð$r)   c                 ó$   — d| d   z  d| d   z  ggS r+   r.   r@   s    r&   ÚjaczMaratos.constr.<locals>.jac1   ó    € Ø˜1˜Q™4™  1 Q¡4¡Ð(Ð)Ð)r)   c                 ó>   — d|d   z  t        j                  d«      z  S ©Nr,   r   r9   ©r0   Úvs     r&   r;   zMaratos.constr.<locals>.hess7   ó   € Ø˜˜1™‘vœbŸf™f Q›iÑ'Ð'r)   r-   ©r   r    r   ©r#   r1   rC   r;   s       r&   ÚconstrzMaratos.constr+   óT   € ò	%ð �?‰?Ð"ó*ð —/‘/ˆCà×ÑÐ#ó(ð ×#Ñ#ˆDä" 3¨¨1¨c°4Ó8Ð8r)   ©é<   NN©
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r1   r6   r;   ÚpropertyrL   r.   r)   r&   r   r      s/   „ ñóò0ò,òð ñ9ó ñ9r)   r   c                   ó@   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ Ze	d„ «       Z
y)
ÚMaratosTestArgsr   Nc                 ó  — |dz  t         j                  z  }t        j                  |«      t        j                  |«      g| _        t        j
                  ddg«      | _        || _        || _        || _	        || _
        d | _        y 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   sh   € Ø�s‰{œ2Ÿ5™5Ñ ˆÜ—6‘6˜$“<¤§¡¨£Ð.ˆŒÜ—X‘X˜s C˜jÓ)ˆŒ
Ø$ˆŒØ&ˆÔØˆŒØˆŒØˆ�r)   c                 óT   — | j                   |k7  s| j                  |k7  r
t        «       ‚y ©N)rY   rZ   Ú
ValueError)r#   rY   rZ   s      r&   Ú
_test_argszMaratosTestArgs._test_argsQ   s$   € Ø�6‰6�QŠ;˜$Ÿ&™& Aš+Ü“,Ðð &r)   c                 ó`   — | j                  ||«       d|d   dz  |d   dz  z   dz
  z  |d   z
  S r+   )r^   ©r#   r0   rY   rZ   s       r&   r1   zMaratosTestArgs.funU   s>   € Ø�‰˜˜1ÔØ�!�A‘$˜‘'˜A˜a™D !™GÑ# aÑ'Ñ(¨1¨Q©4Ñ/Ð/r)   c                 ór   — | j                  ||«       t        j                  d|d   z  dz
  d|d   z  g«      S r3   )r^   r   r   r`   s       r&   r6   zMaratosTestArgs.gradY   s8   € Ø�‰˜˜1ÔÜ�x‰x˜˜1˜Q™4™ ™ 1 Q q¡T¡6Ð*Ó+Ð+r)   c                 óV   — | j                  ||«       dt        j                  d«      z  S r8   )r^   r   r:   r`   s       r&   r;   zMaratosTestArgs.hess]   s"   € Ø�‰˜˜1ÔØ”—‘˜“‰{Ðr)   c                 ó–   — d„ }| j                   €d„ }n| j                   }| j                  €d„ }n| j                  }t        |dd||«      S )Nc                 ó$   — | d   dz  | d   dz  z   S r?   r.   r@   s    r&   r1   z#MaratosTestArgs.constr.<locals>.func   rA   r)   c                 ó$   — d| d   z  d| d   z  ggS r3   r.   r@   s    r&   rC   z#MaratosTestArgs.constr.<locals>.jacg   rD   r)   c                 ó>   — d|d   z  t        j                  d«      z  S rF   r9   rG   s     r&   r;   z$MaratosTestArgs.constr.<locals>.hessm   rI   r)   r-   rJ   rK   s       r&   rL   zMaratosTestArgs.constra   rM   r)   rN   )rQ   rR   rS   rT   r'   r^   r1   r6   r;   rU   rL   r.   r)   r&   rW   rW   ?   s4   „ ñóòò0ò,òð ñ9ó ñ9r)   rW   c                   óD   — e Zd ZdZdd„Zd„ Zed„ «       Zd„ Zed„ «       Z	y)	ÚMaratosGradInFuncr   Nc                 óð   — |dz  t         j                  z  }t        j                  |«      t        j                  |«      g| _        t        j
                  ddg«      | _        || _        || _        d | _	        y 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-   r4   r5   r/   s     r&   r1   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                  ó   — y)NTr.   ©r#   s    r&   r6   zMaratosGradInFunc.grad‰   s   € àr)   c                 ó2   — dt        j                  d«      z  S r8   r9   r/   s     r&   r;   zMaratosGradInFunc.hess�   r<   r)   c                 ó–   — d„ }| j                   €d„ }n| j                   }| j                  €d„ }n| j                  }t        |dd||«      S )Nc                 ó$   — | d   dz  | d   dz  z   S r?   r.   r@   s    r&   r1   z%MaratosGradInFunc.constr.<locals>.fun’   rA   r)   c                 ó$   — d| d   z  d| d   z  ggS r3   r.   r@   s    r&   rC   z%MaratosGradInFunc.constr.<locals>.jac–   rD   r)   c                 ó>   — d|d   z  t        j                  d«      z  S rF   r9   rG   s     r&   r;   z&MaratosGradInFunc.constr.<locals>.hessœ   rI   r)   r-   rJ   rK   s       r&   rL   zMaratosGradInFunc.constr�   rM   r)   rN   )
rQ   rR   rS   rT   r'   r1   rU   r6   r;   rL   r.   r)   r&   rh   rh   u   s>   „ ñóò.ð ñó ðòð ñ9ó ñ9r)   rh   c                   ó:   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zed„ «       Z	y)	Ú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                  «      | _        y )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                 ó<   — d|d   dz
  dz  z  d|d   dz
  dz  z  z   S )Nç      à?r   r,   r-   r.   r/   s     r&   r1   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.   r/   s     r&   r6   zHyperbolicIneq.grad·   s   € Ø�!‘�q‘˜!˜A™$ ™*Ð%Ð%r)   c                 ó,   — t        j                  d«      S ©Nr,   r9   r/   s     r&   r;   zHyperbolicIneq.hessº   s   € Ü�v‰v�a‹yÐr)   c                 ó²   — d„ }| j                   €d„ }n| j                   }| j                  €d„ }n| j                  }t        |dt        j                  ||«      S )Nc                 ó$   — d| d   dz   z  | d   z
  S )Nr-   r   r.   r@   s    r&   r1   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.   r@   s    r&   rC   z"HyperbolicIneq.constr.<locals>.jacÃ   s!   € Ø˜Q˜q™T A™X¨™MÑ)¨2Ð.Ð/Ð/r)   c                 ób   — d|d   z  t        j                  d| d   dz   dz  z  dgddgg«      z  S )Nr,   r   r-   é   r5   rG   s     r&   r;   z#HyperbolicIneq.constr.<locals>.hessÉ   sE   € Ø˜˜1™‘vœbŸh™h¨¨A¨a©D°1©H°q©=©¸!Ð(<Ø)*¨A¨ð(0ó 1ñ 1ð 1r)   g      Ð?©r   r    r   r   ru   rK   s       r&   rL   zHyperbolicIneq.constr½   sX   € ò	'ð �?‰?Ð"ó0ð —/‘/ˆCà×ÑÐ#ó1ð ×#Ñ#ˆDä" 3¨¬b¯f©f°c¸4Ó@Ð@r)   )NNrP   r.   r)   r&   rs   rs   ¤   s1   „ ñó(ò7ò&òð ñAó ñAr)   rs   c                   ó:   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zed„ «       Z	y)	Ú
Rosenbrockz�Rosenbrock function.

    The following optimization problem:
        minimize sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
    c                 ó´   — t         j                  j                  |«      }|j                  dd|«      | _        t        j
                  |«      | _        d | _        y )Nr~   r-   )r   ÚrandomÚRandomStateÚuniformr   Úonesr   r!   )r#   ÚnÚrandom_stateÚrngs       r&   r'   zRosenbrock.__init__Ù   s@   € Ü�i‰i×#Ñ# LÓ1ˆØ—+‘+˜b ! QÓ'ˆŒÜ—W‘W˜Q“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#   r0   Úrs      r&   r1   zRosenbrock.funß   sZ   € Ü�J‰J�q‹MˆÜ�F‰F�5˜A˜a˜b˜E A c r F¨C¡KÑ/°#Ñ5Ñ5¸¸Q¸sÀ¸V¹ÀcÑ8IÑIØôˆàˆr)   c                 ó8  — 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#   r0   ÚxmÚxm_m1Úxm_p1Úders         r&   r6   zRosenbrock.gradå   sÛ   € Ü�J‰J�q‹MˆØˆq�ˆWˆØ�#�2�ˆØ�!�"�ˆÜ�m‰m˜AÓˆØ˜B ¨¡™MÑ*Ø˜E B¨¡E™MÑ*¨RÑ/ñ0Ø23°q¸2±v±,ñ?ˆˆAˆbˆ	à˜˜!™‘  !¡ 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#   r0   ÚHÚdiagonals       r&   r;   zRosenbrock.hessñ   sÒ   € Ü�M‰M˜!ÓˆÜ�G‰G�D˜1˜S˜b˜6‘M 1Ó%¬¯©°°a¸¸°f±¸bÓ(AÑAˆÜ—8‘8œC ›F¨!¯'©'Ô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ˆØ”—‘˜Ó!Ñ!ˆØˆr)   c                  ó   — y)Nr.   r.   rl   s    r&   rL   zRosenbrock.constrû   s   € àr)   N)r,   r   rP   r.   r)   r&   rƒ   rƒ   Ò   s/   „ ñóòò
òð ñó ñr)   rƒ   c                   ó(   — e Zd ZdZdd„Zed„ «       Zy)Ú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.
    c                 ód   — t         j                  | d|«       ddg| _        ddg| _        d | _        y )Nr,   r~   ç      à¿gn£¼à?g$¹ü‡ôÛÏ?©rƒ   r'   r   r   r!   ©r#   rŠ   s     r&   r'   zIneqRosenbrock.__init__	  s2   € Ü×Ñ˜D ! \Ô2Ø�t�*ˆŒØ˜fÐ%ˆŒ
Øˆ�r)   c                 óH   — ddgg}d}t        |t        j                   |«      S ©Nr-   r,   ©r	   r   ru   )r#   ÚArZ   s      r&   rL   zIneqRosenbrock.constr  s'   € à�ˆVˆHˆØˆÜ ¤B§F¡F 7¨AÓ.Ð.r)   N©r   ©rQ   rR   rS   rT   r'   rU   rL   r.   r)   r&   r¨   r¨      s    „ ñóð ñ/ó ñ/r)   r¨   c                   ó   — e Zd ZdZdd„Zy)Ú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.
    c                 ó|   — t         j                  | d|«       ddg| _        d | _        t	        ddgddg«      | _        y )Nr,   gš™™™™™É¿gš™™™™™É?r”   r   )rƒ   r'   r   r   r
   r!   r¬   s     r&   r'   zBoundedRosenbrock.__init__   s<   € Ü×Ñ˜D ! \Ô2Ø˜�+ˆŒØˆŒ
Ü˜b !˜W q¨! fÓ-ˆ�r)   Nr±   )rQ   rR   rS   rT   r'   r.   r)   r&   r´   r´     s   „ ñô.r)   r´   c                   ó(   — e Zd ZdZdd„Zed„ «       Zy)Ú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.
    c                 ód   — t         j                  | d|«       ddg| _        ddg| _        d | _        y )Nr,   r~   rª   gæWs€`ŽÚ?gÙ|\*ÆÅ?r«   r¬   s     r&   r'   zEqIneqRosenbrock.__init__1  s2   € Ü×Ñ˜D ! \Ô2Ø�t�*ˆŒØ˜wÐ'ˆŒ
Øˆ�r)   c                 óp   — 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&   rL   zEqIneqRosenbrock.constr7  sJ   € à�a�&�ˆØˆØ�A�ˆxˆØˆÜ  ¬"¯&©&¨°&Ó9Ü   t¨TÓ2ð4ð 	4r)   Nr±   r²   r.   r)   r&   r·   r·   '  s    „ ñóð ñ4ó ñ4r)   r·   c                   óJ   — e Zd ZdZ	 	 d
d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d	„ «       Zy)Ú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.
    Nc                 óš  — || _         t        j                  j                  |«      | _        | j                  j                  ddt        j                  z  | j                   «      }| j                  j                  t        j                   t        j                  | j                   «      }t        j                  |«      t        j                  |«      z  }t        j                  |«      t        j                  |«      z  }t        j                  |«      }	t        j                  |||	f«      | _
        d | _        || _        || _        d | _        y )Nr   r,   )Ún_electronsr   r…   r†   r‹   r‡   r   r   r   Úhstackr   r   r   r    r!   )
r#   rÁ   rŠ   r   r    ÚphiÚthetar0   ÚyÚzs
             r&   r'   zElec.__init__O  sâ   € à&ˆÔÜ—9‘9×(Ñ(¨Ó6ˆŒà�h‰h×Ñ˜q !¤b§e¡e¡)¨T×-=Ñ-=Ó>ˆØ—‘× Ñ ¤"§%¡% ¬¯©°×0@Ñ0@ÓAˆÜ�F‰F�5‹MœBŸF™F 3›KÑ'ˆÜ�F‰F�5‹MœBŸF™F 3›KÑ'ˆÜ�F‰F�5‹MˆÜ—)‘)˜Q  1˜IÓ&ˆŒØˆŒ
Ø$ˆŒØ&ˆÔØˆ�r)   c                 ó†   — |d | j                    }|| j                   d| j                   z   }|d| j                   z  d  }|||fS rz   ©rÁ   )r#   r0   Úx_coordÚy_coordÚz_coords        r&   Ú_get_cordinateszElec._get_cordinates_  sW   € ØÐ%�T×%Ñ%Ð&ˆØ�D×$Ñ$ Q¨×)9Ñ)9Ñ%9Ð:ˆØ�A˜×(Ñ(Ñ(Ð)Ð*ˆØ˜ Ð(Ð(r)   c                 ó~   — | j                  |«      \  }}}|d d …d f   |z
  }|d d …d f   |z
  }|d d …d f   |z
  }|||fS r\   ©rÌ   )r#   r0   rÉ   rÊ   rË   ÚdxÚdyÚdzs           r&   Ú_compute_coordinate_deltaszElec._compute_coordinate_deltase  s^   € Ø$(×$8Ñ$8¸Ó$;Ñ!ˆ�˜'Ø’Q˜�WÑ Ñ'ˆØ’Q˜�WÑ Ñ'ˆØ’Q˜�WÑ Ñ'ˆØ�2�rˆzÐr)   c                 ó
  — | j                  |«      \  }}}t        j                  d¬«      5  |dz  |dz  z   |dz  z   dz  }d d d «       dt        j                  |«      <   dt        j                  |«      z  S # 1 sw Y   Œ9xY w)NÚignore©Údivider,   rª   r   rw   )rÒ   r   ÚerrstateÚdiag_indices_fromr‘   )r#   r0   rÏ   rÐ   rÑ   Údm1s         r&   r1   zElec.funl  s€   € Ø×4Ñ4°QÓ7‰
ˆˆB�Ü�[‰[ Ô)ñ 	2Ø�q‘5˜2˜q™5‘= 2 q¡5Ñ(¨TÑ1ˆC÷	2à)*ˆŒB× Ñ  Ó%Ñ&Ø”R—V‘V˜C“[Ñ Ð ÷	2ð 	2ús   ¬A9Á9Bc                 ó¬  — | j                  |«      \  }}}t        j                  d¬«      5  |dz  |dz  z   |dz  z   dz  }d d d «       dt        j                  |«      <   t        j                  ||z  d¬«       }t        j                  ||z  d¬«       }t        j                  ||z  d¬«       }t        j
                  |||f«      S # 1 sw Y   ŒŠxY w)NrÔ   rÕ   r,   ç      ø¿r   r-   rŽ   )rÒ   r   r×   rØ   r‘   rÂ   )	r#   r0   rÏ   rÐ   rÑ   Údm3Úgrad_xÚgrad_yÚgrad_zs	            r&   r6   z	Elec.grads  sÈ   € Ø×4Ñ4°QÓ7‰
ˆˆB�ä�[‰[ Ô)ñ 	2Ø�q‘5˜2˜q™5‘= 2 q¡5Ñ(¨TÑ1ˆC÷	2à)*ˆŒB× Ñ  Ó%Ñ&ä—&‘&˜˜c™¨Ô*Ð*ˆÜ—&‘&˜˜c™¨Ô*Ð*ˆÜ—&‘&˜˜c™¨Ô*Ð*ˆä�y‰y˜& &¨&Ð1Ó2Ð2÷	2ð 	2ús   ¬C
Ã
Cc           	      óÄ  — | j                  |«      \  }}}|dz  |dz  z   |dz  z   dz  }t        j                  d¬«      5  |dz  }|dz  }d d d «       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 # 1 sw Y   �ŒŒxY w)Nr,   rw   rÔ   rÕ   éýÿÿÿéûÿÿÿr   r€   r-   rŽ   )rÒ   r   r×   ÚarangerÁ   r‘   ÚvstackrÂ   )r#   r0   rÏ   rÐ   rÑ   ÚdrÜ   Údm5ÚiÚHxxÚHxyÚHxzÚHyyÚHyzÚHzzr¤   s                   r&   r;   z	Elec.hess€  s  € Ø×4Ñ4°QÓ7‰
ˆˆB�Ø�‰U�R˜‘U‰]˜R ™UÑ" sÑ*ˆä�[‰[ Ô)ñ 	Ø�r‘'ˆCØ�r‘'ˆC÷	ô �I‰I�d×&Ñ&Ó'ˆØˆˆAˆqˆD‰	ØˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÜ—V‘V˜C aÔ(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÜ—V‘V˜C aÔ(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÜ—V‘V˜C aÔ(Ð(ˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÜ—V‘V˜C aÔ(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÜ—V‘V˜C aÔ(Ð(ˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÜ—V‘V˜C aÔ(Ð(ˆˆAˆqˆD‰	ä�I‰IÜ�I‰I�s˜C �oÓ&Ü�I‰I�s˜C �oÓ&Ü�I‰I�s˜C �oÓ&ð
ó ˆð ˆ÷A	ñ 	ús   Á GÇGc                 ó¾   ‡ — ˆ fd„}‰ j                   €ˆ fd„}n‰ j                   }‰ j                  €d„ }n‰ j                  }t        |t        j                   d||«      S )Nc                 óV   •— ‰j                  | «      \  }}}|dz  |dz  z   |dz  z   dz
  S )Nr,   r-   rÎ   )r0   rÉ   rÊ   rË   r#   s       €r&   r1   zElec.constr.<locals>.fun¨  s;   ø€ Ø(,×(<Ñ(<¸QÓ(?Ñ%ˆG�W˜gØ˜A‘: ¨¡
Ñ*¨W°a©ZÑ7¸!Ñ;Ð;r)   c                 ó   •— ‰j                  | «      \  }}}dt        j                  |«      z  }dt        j                  |«      z  }dt        j                  |«      z  }t        t        j                  |||f«      «      S rz   )rÌ   r   r¡   r   rÂ   )r0   rÉ   rÊ   rË   ÚJxÚJyÚJzr#   s          €r&   rC   zElec.constr.<locals>.jac­  sm   ø€ Ø,0×,@Ñ,@ÀÓ,CÑ)�˜ 'ØœŸ™ Ó)Ñ)�ØœŸ™ Ó)Ñ)�ØœŸ™ Ó)Ñ)�Ü ¤§¡¨B°°B¨<Ó!8Ó9Ð9r)   c                 óL   — dt        j                  |«      z  }t        |||«      S rz   )r   r¡   r   )r0   rH   ÚDs      r&   r;   zElec.constr.<locals>.hess·  s"   € ØœŸ™ ›
‘N�Ü! ! Q¨Ó*Ð*r)   r   r�   rK   s   `   r&   rL   zElec.constr¦  s[   ø€ ô	<ð �?‰?Ð"õ:ð —/‘/ˆCà×ÑÐ#ó+ð ×#Ñ#ˆDä" 3¬¯©¨°°C¸Ó>Ð>r)   )r•   r   NN)rQ   rR   rS   rT   r'   rÌ   rÒ   r1   r6   r;   rU   rL   r.   r)   r&   r¿   r¿   A  sB   „ ñð 67Ø.2óò )òò!ò3ò$ðL ñ?ó ñ?r)   r¿   c                   óL  — 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                  j!                  d	e«      ej                  j!                  d
d«      ej                  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y)ÚTestTrustRegionConstrú2-point)r    )r   r    ú3-pointr,   rÈ   )rÁ   r    )rÁ   r   r    Úprobr6   )ú	prob.gradrù   Fr;   ú	prob.hessc                  ó   — t        «       S r\   )r   r.   r)   r&   ú<lambda>zTestTrustRegionConstr.<lambda>×  s   € ÄcÃe€ r)   c                  ó   — t        d¬«      S )NÚdamp_update©Úexception_strategy©r   r.   r)   r&   rþ   zTestTrustRegionConstr.<lambda>Ø  ó   € ¬dÀmÔ.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        «      xr |d	k(  xr t        |t        «      }|rt        j                  d
«       t        j                  «       5  t        j                  ddt        «       t        |j                  |j                  d|||j                   |j"                  ¬«      }d d d «       |j$                  �Gt'        j(                  |j$                  d¬«       |j*                  dk(  rt-        |j.                  d«       j*                  dk(  r;t-        |j0                  d«       |j2                  dk(  rt-        |j4                  d«       d|j*                  › d�}|j*                  dvsJ |«       ‚y # 1 sw Y   ŒÌxY w)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©ÚmethodrC   r;   r!   Úconstraintsé   ©Údecimalr-   ç:Œ0âŽyE>r,   Útr_interior_pointzInvalid termination condition: ú.>   r   r€   )r6   Úcallabler;   ÚpytestÚskipÚ
isinstancer´   r   ÚxfailÚwarningsÚcatch_warningsÚfilterwarningsÚUserWarningr   r1   r   r!   rL   r   r   r0   Ústatusr   Ú
optimalityÚ	tr_radiusr  Úbarrier_parameter)r#   rú   r6   r;   Ú	sensitiveÚresultÚmessages          r&   Útest_list_of_problemsz+TestTrustRegionConstr.test_list_of_problemsÕ  s·  € ð ! KÒ/ˆt�yŠy°TˆÜ! $œ‰tŒv¨TˆØ  KÒ/ˆt�yŠy°TˆàÐ7Ñ7ØÐ4Ñ4Ü�K‰KÐEÔFØ�9‰9˜Ñ Ð);Ñ!;Ü�K‰KÐPÔQÜ Ô&7Ó8ò 0¸TÀYÑ=Nò 0Ü# D¬$Ó/ð 	áÜ�L‰LÐNÔOÜ×$Ñ$Ó&ñ 	7Ü×#Ñ# HÐ.AÄ;ÔOÜ˜dŸh™h¨¯©Ø%3Ø"&¨TØ%)§[¡[Ø*.¯+©+ô	7ˆF÷	7ð �:‰:Ð!Ü% f§h¡h°·
±
Ø./õ1ð �}‰} Ò!Ü! &×"3Ñ"3°TÔ:à�=‰=˜AÒÜ˜f×.Ñ.°Ô5à�}‰}Ð 3Ò3Ü! &×":Ñ":¸DÔAð 4°F·M±M°?À!ÐDˆØ�}‰} FÑ*Ð3¨GÓ3Ñ*÷/	7ð 	7ús   ÃAG4Ç4G=c                 ó`   — d„ }dg}t        |dg|d¬«      }t        |j                  dd¬«       y )	Nc                 ó   — | dz
  dz  S r®   r.   r@   s    r&   r1   z<TestTrustRegionConstr.test_default_jac_and_hess.<locals>.fun  ó   € Ø˜‘E˜a‘<Ðr)   ©r”   r,   rÛ   r
  )r   r!   r  r-   r  r  ©r   r   r0   ©r#   r1   r!   Úress       r&   Útest_default_jac_and_hessz/TestTrustRegionConstr.test_default_jac_and_hess  s0   € ò	 à�ˆÜ�s ˜v¨f¸^ÔLˆÜ! #§%¡%¨°AÖ6r)   c                 ób   — d„ }dg}t        |dg|dd¬«      }t        |j                  dd¬	«       y )
Nc                 ó   — | dz
  dz  S r®   r.   r@   s    r&   r1   z4TestTrustRegionConstr.test_default_hess.<locals>.fun
  r'  r)   r(  rÛ   r
  rø   )r   r!   r  rC   r-   r  r  r)  r*  s       r&   Útest_default_hessz'TestTrustRegionConstr.test_default_hess	  s5   € ò	 à�ˆÜ�s ˜v¨f¸^Ø$ô&ˆä! #§%¡%¨°AÖ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¬«       y )	Nr
  )r  rC   r;   zL-BFGS-Brø   )r  rC   rù   r  r  )	rƒ   r   r1   r   r6   r;   r   r0   r   )r#   rú   r"  Úresult1Úresult2s        r&   Útest_no_constraintsz)TestTrustRegionConstr.test_no_constraints  s©   € Ü‹|ˆÜ˜$Ÿ(™( D§G¡GØ!/Ø"Ÿi™i¨d¯i©iô9ˆô ˜4Ÿ8™8 T§W¡WØ",Ø(ô*ˆô ˜4Ÿ8™8 T§W¡WØ",Ø(ô*ˆô 	" &§(¡(¨D¯J©JÀÕBÜ! '§)¡)¨T¯Z©ZÀÕCÜ! '§)¡)¨T¯Z©ZÀÖ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(  r;t        |j                  d«       |j                  dk(  rt        |j                  d«       |j                  d	v rt!        d
«      ‚y )Nc                 óH   •— ‰j                  | «      }|j                  |«      S r\   )r;   Údot)r0   Úpr¤   rú   s      €r&   Úhesspz/TestTrustRegionConstr.test_hessp.<locals>.hessp$  s   ø€ Ø—	‘	˜!“ˆAØ—5‘5˜“8ˆOr)   r
  )r  rC   r8  r!   r  r,   r  r-   r  r  ©r   r€   úInvalid termination condition.)r   r   r1   r   r6   r!   rL   r   r   r0   r  r   r  r  r  r   ÚRuntimeError)r#   r8  r"  rú   s      @r&   Ú
test_hesspz TestTrustRegionConstr.test_hessp!  sÕ   ø€ Ü‹yˆô	ô ˜$Ÿ(™( D§G¡GØ!/Ø"Ÿi™i¨uØ!%§¡Ø&*§k¡kô	3ˆð �:‰:Ð!Ü% f§h¡h°·
±
ÀAÕFð �=‰=˜AÒÜ˜f×/Ñ/°Ô6à�=‰=˜AÒÜ˜f×.Ñ.°Ô5à�}‰}Ð 3Ò3Ü! &×":Ñ":¸DÔ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(  r;t        |j                  d	«       |j                  d
k(  rt        |j                   d	«       |j                  dv rt#        d«      ‚y )NrY   éê   )rY   r>  r
  r  r,   r  r-   r  r  r9  r:  )rW   r   r1   r   r6   r;   r!   rL   r   r   r0   r  r   r  r  r  r   r;  )r#   rú   r"  s      r&   Ú	test_argszTestTrustRegionConstr.test_args>  sØ   € Ü˜s CÓ(ˆä˜$Ÿ(™( D§G¡G¨ZØ!/Ø"Ÿi™i¨d¯i©iØ!%§¡Ø&*§k¡kô	3ˆð �:‰:Ð!Ü% f§h¡h°·
±
ÀAÕFð �=‰=˜AÒÜ˜f×/Ñ/°Ô6à�=‰=˜AÒÜ˜f×.Ñ.°Ô5Ø�}‰}Ð 3Ò3Ü! &×":Ñ":¸DÔAà�=‰=˜FÑ"ÜÐ?Ó@Ð@ð #r)   c           	      óÚ   — t        «       }d}t        j                  t        |¬«      5  t	        |j
                  |j                  ddd|j                  ¬«       d d d «       y # 1 sw Y   y xY w)Nz9Whenever the gradient is estimated via finite-differences©Úmatchr
  rø   )r  rC   r;   r  )r   r  Úraisesr]   r   r1   r   rL   )r#   rú   r#  s      r&   Útest_raise_exceptionz*TestTrustRegionConstr.test_raise_exceptionV  sR   € Ü‹yˆØMˆÜ�]‰]œ:¨WÔ5ñ 	>Ü�T—X‘X˜tŸw™w¨~À9Ø#°·±õ>÷	>÷ 	>ñ 	>ús   ¨0A!Á!A*c                 óà   — d„ }t        d„ dgd„ d„ |d¬«      }t        |j                  d«      «       t        |j                  d	d
«      dk(  «       t        |j                  dd
«      dk(  «       y )Nc                 ó8   — t        d|v «       t        d|v «       y )NÚnitÚniter)r   )r0   Úinfos     r&   Úcallbackz7TestTrustRegionConstr.test_issue_9044.<locals>.callbackb  s   € Ü�E˜T�MÔ"Ü�G˜t�OÕ$r)   c                 ó   — | dz  S rz   r.   r@   s    r&   rþ   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>f  s
   €  A q¡D€ r)   r   c                 ó   — d| z  S rz   r.   r@   s    r&   rþ   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>f  s
   € ¸Q¸q¹S€ r)   c                  ó   — yrz   r.   r@   s    r&   rþ   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>g  s   � r)   r
  )rC   r;   rJ  r  ÚsuccessrG  r~   r-   rH  )r   r   Úget)r#   rJ  r"  s      r&   Útest_issue_9044z%TestTrustRegionConstr.test_issue_9044]  sh   € ò
	%ô ™.¨1¨#±=Ù*°XØ!/ô1ˆô 	�—
‘
˜9Ó%Ô&Ü�—
‘
˜5 "Ó%¨Ñ*Ô+ô 	�—
‘
˜7 BÓ'¨1Ñ,Õ-r)   c                 ó\  — 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 «       d   sJ ‚y # 1 sw Y   ŒxY w)Nr   rw   c                 ó,   — | d   }| d   }|dz  |dz  z   S )Nr   r-   r,   r.   )r0   Ú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  r1   r   r!   rN  )r   r   r
   r  r  r  r  r   )r#   r   rU  r!   r"  s        r&   Útest_issue_15093z&TestTrustRegionConstr.test_issue_15093p  s¤   € ô �X‰X�r˜3�iÓ ˆò	%ô
 œŸ™ " b Ó*¬B¯H©H°b¸"°XÓ,>Ø&*ô,ˆô ×$Ñ$Ó&ñ 	Ü×#Ñ# HÐ.AÄ;ÔOÜØ%ØØØô	ˆF÷	ð �iÒ Ð Ñ ÷	ð 	ús   Á'+B"Â"B+N)rQ   rR   rS   r   r   rh   rs   r   rƒ   r¨   r·   r´   r¿   Úlist_of_problemsr  ÚmarkÚparametrizer$  r,  r/  r3  r<  r?  rD  rP  rW  r.   r)   r&   r÷   r÷   À  s:  „ Ù›	Ù¨IÔ6Ù©C«EÔ2Ù¨9Á#Ã%ÔHÙ)Ó+Ù&Ó(Ù&°9Ô=Ù&±4³6Ô:Ù&°)Ù37³6ô;á"›Ù&Ó(Ù(Ó*Ù)Ó+Ù¨Ô+Ù¨¸	ÔBÙ¨¹»Ô>Ù¨°yÙ),«ô0ð#1Ðð( ‡[�[×Ñ˜VÐ%5Ó6Ø‡[�[×Ñ˜VÐ%DÓEØ‡[�[×Ñ˜V k°9¹mÙ&TÙ&Tð&Vó Wñ%4óWó Fó 7ð
%4òP7ò7òDò Aò:Aò0>ò.ó&!r)   r÷   c                   ó   — e Zd ZdZd„ Zy)Ú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¬«       y )Nc                 ó$   — | d   dz  | d   dz  z   S r?   r.   r@   s    r&   Úfunctionz;TestEmptyConstraint.test_empty_constraint.<locals>.function™  rA   r)   c                 óH   — t        j                  d| d   z  d| d   z  g«      S )Nr�   r   r-   r5   r@   s    r&   ÚfunctionjacobianzCTestEmptyConstraint.test_empty_constraint.<locals>.functionjacobianœ  s&   € Ü—8‘8˜R  !¡™W b¨¨1©¡gÐ.Ó/Ð/r)   c                 ó   — d|z  S )Nr�   r.   rG   s     r&   Úfunctionhvpz>TestEmptyConstraint.test_empty_constraint.<locals>.functionhvpŸ  s   € Ø�a‘4ˆKr)   c                 óL   — t        j                  | d   dz  | d   dz  z
  g«      S r?   r5   r@   s    r&   Ú
constraintz=TestEmptyConstraint.test_empty_constraint.<locals>.constraint¢  s)   € Ü—8‘8˜Q˜q™T 1™W q¨¡t¨Q¡wÑ.Ð/Ó0Ð0r)   c                 óJ   — t        j                  d| d   z  d| d   z  gg«      S )Nr,   r   r”   r-   r5   r@   s    r&   ÚconstraintjacobianzETestEmptyConstraint.test_empty_constraint.<locals>.constraintjacobian¥  s)   € Ü—8‘8˜a  !¡™f b¨¨1©¡gÐ.Ð/Ó0Ð0r)   c                 óD   — t        j                  ddgddgg«      |d   z  S )Nr�   r   g       Àr   r5   rG   s     r&   ÚconstraintlcohzATestEmptyConstraint.test_empty_constraint.<locals>.constraintlcoh¨  s'   € Ü—8‘8˜b "˜X¨¨C yÐ1Ó2°Q°q±TÑ9Ð9r)   r   r�   r
  )r  rC   r8  r  r!   r-   r   r4   r  )	r   r   ru   r
   r   r   Úabsr0   r   )
r#   r_  ra  rc  re  rg  ri  Ú
startpointr!   r"  s
             r&   Útest_empty_constraintz)TestEmptyConstraint.test_empty_constraint—  sµ   € ò	%ò	0ò	ò	1ò	1ò	:ô )¨°R¼¿¹Ø);¸^óMˆ
ð ˜"�Xˆ
äœ"Ÿ&™&˜¤2§6¡6 'Ð*¬R¯V©V´R·V±VÐ,<Ó=ˆäØ
Ø
ØØØØ!�lØô
ˆô 	"¤# f§h¡h£-´·±¸1¸a¸&Ó1AÈ1ÖMr)   N)rQ   rR   rS   rT   rl  r.   r)   r&   r\  r\  Š  s   „ ñó%Nr)   r\  c                  ó>  — d„ } t        j                  «       5  t        j                  dt        «       t	        j
                  t	        j                  ddg«      «      }d d d «       t        dt        j                  «      }t        | ddgz  |¬«       y # 1 sw Y   Œ7xY w)Nc                 ó$   — | d   dz  | d   dz  z   S r?   r.   r@   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   )ro  r°   Úlin_conss      r&   Útest_bug_11886rt  ¿  s{   € òô 
×	 Ñ	 Ó	"ñ 'Ü×Ñ˜hÔ(AÔBÜ�I‰I”b—g‘g˜q !˜f“oÓ&ˆ÷'ô    2¤r§v¡vÓ.€HäˆS�!�Q�C‘% xÖ0÷'ð 'ús   ˜ABÂB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                  |j                  «      cxk  r|d   j                  k  sJ ‚ J ‚y )Nr~   r-   T©ÚlbÚubrV  c                 ó–   •— t        j                  | ‰j                  k\  «      sJ ‚t        j                  | ‰j                  k  «      sJ ‚y r\   )r   Úallrw  rx  )r0   Úbndss    €r&   Úassert_inboundsz%test_gh11649.<locals>.assert_inboundsÑ  s7   ø€ Ü�v‰v�a˜4Ÿ7™7‘lÔ#Ð#Ð#Ü�v‰v�a˜4Ÿ7™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   r4   r,   r-   )r   Úexp©r0   r|  s    €r&   rU  ztest_gh11649.<locals>.objÕ  sf   ø€ Ù˜ÔÜ�v‰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                 ó0   •—  ‰| «       | 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+   r5   r@   s    r&   Únce_jacztest_gh11649.<locals>.nce_jacÝ  s   € Ü�x‰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®ï¿éöÿÿÿ)rC   r
  )r1   r   r  r!   r  r   )
r
   r   r   r   ru   r   r0   rw  r1   rx  )	rU  r�  rƒ  r…  r   Únlcsr+  r|  r{  s	          @@r&   Útest_gh11649rˆ  Ë  sÇ   ù€ ô �b˜"�X 1 a &¸Ô=€Dô$ôOôò%ôô 
�‰�-Ó	 €BÜ  S¬"¯&©&Ó1Ü  Q¨¨wÔ7ð9€Dô �s˜r¨.Ø¨Dô2€Cá�C—E‘EÔØ�‰7�:‰:˜˜Q™Ÿ™ C§E¡EÓ*Ô7¨T°!©W¯Z©ZÒ7Ð7Ñ7Ð7Ñ7r)   c                  ó>  ‡‡— d„ Šd„ Šˆˆfd„} t        j                  g d¢«      }t        | t        j                  t        j                  |«      «      ddg|ddt        t         j                   d	d	gt         j                  d
d
gd¬«      t        g d¢dd¬«      ¬«       y )Nc                 óÆ   — t        j                  t        |«      t        ¬«      }| d|z
  |z
  z  |d<   t	        |d d d«      D ]  \  }}| |||dz
     z  z   ||z  z   ||<   Œ |S )N©Úshaperž   r-   r   r~   )r   Úemptyr£   ÚfloatÚ	enumerate)rY   rZ   ÚcÚdatar"  rç   rå   s          r&   Úcalculate_intermediatesz-test_gh24424.<locals>.calculate_intermediatesï  sz   € Ü—‘Ü�d“)Üô
ˆð ˜˜Q™ ™‘Oˆˆq‰	Ü˜d 3 B˜i¨Ó+ò 	6‰DˆAˆqØ˜A  q¨1¡u¡Ñ-Ñ-°°A±Ñ5ˆF�1ŠIð	6àˆr)   c                 óŒ  — t        j                  | «      }t        j                  t        |«      dft        ¬«      }|d|z
  |z
  z  |d<   |d|z
  |z
  dz  z  |d<   |d|z
  |z
  dz  z  |d<   t        dt        |«      «      D ]@  }|||dz
     z  }||d   z   ||df<   ||dz
     |d   z   ||df<   ||dz
     |d   z   ||df<   ŒB |S )	Nr€   r‹  r-   )r   r   r,   )r   r-   )r   r,   r   )r   r~  r�  r£   rŽ  Úrange)	Úlog_arZ   r�  r‘  ÚintermediatesrY   r"  rç   Úprevious_jacobian_terms	            r&   Ú calculate_jacobian_intermediatesz6test_gh24424.<locals>.calculate_jacobian_intermediatesù  s  € Ü�F‰F�5‹Mˆä—‘Ü�t“9˜a�.Üô
ˆð ˜A ™E A™I‘ˆˆt‰Ø˜A ™E A™I¨!Ñ+Ñ+ˆˆt‰Ø˜A ™E A™I¨!Ñ+Ñ+ˆˆt‰ä�qœ#˜d›)Ó$ò 	LˆAØ%&¨°°A±©Ñ%6Ð"àÐ5°aÑ8Ñ8ˆF�1�a�4‰LØ  A¡™;Ð)?ÀÑ)BÑBˆF�1�a�4‰LØ(¨¨Q©Ñ/Ð2HÈÑ2KÑKˆF�1�a�4ŠLð	Lð ˆr)   c                 óx  •— | \  }}}d|cxk  rdk  sJ d«       ‚ J d«       ‚d|cxk  rdk  sJ d«       ‚ J d«       ‚||z   dk  sJ d«       ‚t        j                  |«      } ‰
||||¬«      }t        j                  t        j                  |«      ||z  z   «      } ‰|||||¬«      }d|z  ||dz  z  z
  |z  }	||	fS )	Nr   r-   z%Bounds was violated for variable `a`.z%Bounds was violated for variable `b`.zConstraint was violated.)rY   rZ   r�  r‘  )r•  rZ   r�  r‘  r–  r,   )r   r~  r‘   Úlog)rÄ   r‘  r•  rZ   r�  rY   r–  r"  Újacobian_intermediatesÚjacobianr’  r˜  s             €€r&   Úobjective_and_jacobianz,test_gh24424.<locals>.objective_and_jacobian  sý   ø€ Ø‰ˆˆq�!à�AŒ{˜Š{ÐCÐCÓC‰{ÐCÐCÓCˆ{Ø�AŒ{˜Š{ÐCÐCÓC‰{ÐCÐCÓCˆ{Ø�1‰u�qŠyÐ4Ð4Ó4ˆyä�F‰F�5‹Mˆá/ØØØØô	
ˆô —‘Ü�F‰F�=Ó! D¨=Ñ$8Ñ8ó
ˆñ "BØØØØØ'ô"
Ðð �Ñ ¨¸Ñ(:Ñ!:Ñ:Ð>TÑTð 	ð �xÐÐr)   )¨gŒ�Ä~cÿ>gm]8Ù;;ó>geé–R?gj¦]òßÖ>g7§›o­äó>gÓ6ãé˜XÖ>gœ7þÚÄ¹à>gè-õìÞç>gåËŠÏ¿?gêÊbmNñ>gÊmxÚqú>gõÑ¥Éq—é>g‘C1Ì›Ù>g×~AfT,?gÀµ˜}ß>g¬Ñ\Ô&?gžÝi'ŽT?g…ùÖßŽ»>gêøLù\ø>gçé	#?g½å�îcå>gq{çîæâ>g?Â
0Ãã>g•kg¬¬NÕ>gðj™AÝRù>gyûs¾êZú>gXMº¥õ>gÂÈà­Åsá>g	tvÁ _å>gó©†n‘>gŸÞ=v~?gRÓ…Qª˜ ?gë7¬´^Ð>ga€®¨Õ˜ô>g1f¨.ÌÈí>gãžPÝ•ñ>g¿½Ë5Ú>g·UYg“  ?gRÓá‡XÕä>g<ÛW4IÕÿ>g€,:‰iâ¤>gfY°žJ×±>gz:òÜñ>góÐà>gW>S;–í>g%—ûÎÖ¡ó>gñ*aÛ­ë>g;½¬§þ¢Â>gÓÝüôºf?gŽb"s¤û>g>-MÊç7ò>g�e%m½Õ>gm«Þå>g“?ËðuÃ>gÛÝæ4ß>g‰îjxÊé>gVò^Õ“*õ>gþ…×˜Îà>g•+rïƒã>g6}/"¬á?g]]¥µWø>g$\/ÇòŽó>g€Ñ‡=6?g/ªDAUaå>goÃ“(÷>g¤`™ù¬è>gçØj~Œêñ>gÀÙf8˜ó?g‡9úÑî]ã>gæ4Æøò^ô>gñùàâ�ý>g4—¾d2?g0¹¸rNû>g/ßå 3fô>g5PUz?gáOxu{ð>gÉ)X».ê>gíd”V ò>r   gaâNœz<õ>g½=ªrüî>r   g~Ö%y†ÿ>gÊm¥ª€é>gD!íX	ü>g* \ˆ•÷>gCµ.8Hîî>gÅâÙ�‡³?gÎá�M¹?gÈ8¦(^}ø>gaW#dp?g«‚oZý>g²_Óm+?gµ.âÌÎ?gš!NUŠs?g:Ä?PƒÎ?gÐÑpÄž?gIÆð�?gx‰ªÊß ?gU�x–E1
?r   g¯—áJž?g¶¾Ð1ð>gÁGÃõ\Õ?gïaµWô>gQÙMšbì?grÀHƒrÌ ?gZr–o<‰÷>gfæž!V?gÙ¨‡‹ûÊù>gà� ³‡?gy¶¯
ªª?gdÅÉIç?g¬�‚C©Ú>g&›Ý/—Ö>gwô~ÛŸû>gÌJÐkùú>gå6Ð¹ÛJ?g¥*Išbš?gÿ�7èz�Þ>gÃçDø>gÚÒÐ	_?g8
ù[äö>g]Ï“	±?gÙ Ó™˜3ð>r   gC �7—ð>g±;ïµ+Uü>g•mþë+Êø>g#Lzt×nò>gg4#ŽÌ»?g¶èzÚu1ô>gq•Loñû>gáÆ�8JÙé>gÓÓˆl†ð>gý9FÛg?gl7�ó‰ð>glS†Ìzƒò>gã_áÏ5Å>g&©žã%I ?g	.W¯ü?g&Á¥�â�?g%Æi#Ÿ–ú>gŒo,±¼G ?gø±!—ü>gmœ—Å1í>gnzµ©ô»Ý>gN@\Mx	?gHq;�}ò>gøÛrUÅÐ>gp›öœ`{é>g-p†ÒPï>g¸Ï¬;Cï>gec÷‹"£î>gsýŸßôòê>gP¯»¯‚Éà>gF JD^Î>gzÄzh«»ï>gQRýÉ>g�<`c©üä>g¬
£Ó7ù>g‘å§YQDñ>g°$¬âò>g¥¯HÁLö>gµv02ï>g-	Y‹iä>g©Qbòâ>gÆ®À#.:ì>gÍÌÌÌÌÌÜ?g333333Ó?r
  Tr   r   rv  )r   r-   r-   gé!çýÿï?)r°   rx  rV  )r1   r   Úargsr  rC   r!   r  )r   r   r   rš  Úmeanr
   ru   r	   )r�  r‘  r’  r˜  s     @@r&   Útest_gh24424r   î  s›   ù€ òòõ( ô> �8‰8ò 9ó 9€Dôv Ø"ä�F‰F”2—7‘7˜4“=Ó!ØØð
ð àØÜÜ—‘�˜˜cÐ"Ü—‘˜˜SÐ!Øô
ô
 %ÚØØô
ö#r)   c            	      ó  ‡— d} t        j                  t        | ¬«      5  t        j                  d«      }t        j
                  d«      j                  d«      t        j                  d«      cŠ}t        ˆfd„||¬«      }t        t        |d	|g¬
«       d d d «       t        j                  «       5  t        j                  dt        «       t        t        d	gddi¬«       d d d «       y # 1 sw Y   ŒXxY w# 1 sw Y   y xY w)Nz:...more equality constraints than independent variables...rA  )r,   é   )r€   r,   )r€   c                 ó   •— ‰| z  S r\   r.   )r0   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  rC  r]   r   rˆ   rã   Úreshaper   r   r   r  r  rp  r  )r#  r   r½   Úgr¼   s       @r&   Ú!test_gh20665_too_many_constraintsrª  €  sÝ   ø€ ð K€GÜ	�‰”z¨Ô	1ñ DÜ�W‰W�T‹]ˆÜ—Y‘Y˜q“\×)Ñ)¨&Ó1´2·7±7¸4³=ˆ
ˆˆdÜÓ 3¸ÀÔFˆÜ”˜ >À¸sÕC÷	Dô 
×	 Ñ	 Ó	"ñ GÜ×Ñ˜h¬Ô4Ü”˜ >À¸sØ0Ð2DÐEõ	G÷Gð G÷Dð Dú÷Gð Gús   ŸA5C+Â02C7Ã+C4Ã7D c                  ó@  — 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 «       j                  s|j                  d
kD  sJ ‚y # 1 sw Y   Œ'xY w)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                 ó2   — t        j                  | dz  «      S rz   )r   r‘   )r¯  s    r&   Úofztest_issue_18882.<locals>.of•  s   € Ü�v‰v�a˜‘d‹|Ðr)   rÔ   r	  zSingular Jacobian matrix.r   r
  r   r¤  r  )r  r  r  r  r   r   rN  Úconstr_violation)r²  r´  r+  s      r&   Útest_issue_18882r¶  �  s—   € ò1ò
ô 
×	 Ñ	 Ó	"ñ 
Ü×Ñ Ð*=¼{ÔKÜ×Ñ Ð*EÄ{ÔSÜØØ�#ˆJØ!Ü+¨C°°AÓ6ô	
ˆ÷
ð —’ #×"6Ñ"6¸Ò"=Ð>Ð>Ð"=÷
ð 
ús   ›ABÂBc                   ó|  — e Zd Zej                  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                  j                  d¬«      d„ «       Zy)ÚTestBoundedNelderMeadzbounds, x_optgš™™™™™é¿r­  g      "@r   r®  ç      @c                 ó‚  — t        «       }t        j                  «       5  d}t        j                  d|t        «       t        |j                  ddgd|¬«      }t        j                  |j                  |j                  «      j                  «       sJ ‚t        j                  |j                  |j                  «      j                  «       sJ ‚t        j                  |j                  |j                  «      |j                  «      sJ ‚t        j                  |j                  |d¬«      sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nú0Initial guess is not within the specified boundsrÔ   r†  úNelder-Mead©r  r!   gü©ñÒMbP?)Úatol)rƒ   r  r  r  r  r   r1   r   Ú
less_equalrw  r0   rz  rx  Úallclose)r#   r!   r   rú   Úmsgr"  s         r&   Útest_rosen_brock_with_boundsz2TestBoundedNelderMead.test_rosen_brock_with_bounds¥  sê   € ô ‹|ˆÜ×$Ñ$Ó&ñ 		<ØDˆCÜ×#Ñ# H¨c´;Ô?Ü˜dŸh™h¨¨c¨
Ø%2Ø%+ô-ˆFô —=‘= §¡¨F¯H©HÓ5×9Ñ9Ô;Ð;Ð;Ü—=‘= §¡¨6¯9©9Ó5×9Ñ9Ô;Ð;Ð;Ü—;‘;˜tŸx™x¨¯©Ó1°6·:±:Ô>Ð>Ð>Ü—;‘;˜vŸx™x¨°UÕ;Ð;Ñ;÷		<÷ 		<ñ 		<ús   ŸDD5Ä5D>c                 ó@  — 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 «       y # 1 sw Y   y xY w)	Nr®  r¹  rÔ   r»  r†  é   r¼  r½  ©rƒ   r
   r  r  r  r  r   r1   r   rÀ  r0   ©r#   rú   r!   r"  s       r&   Útest_equal_all_boundsz+TestBoundedNelderMead.test_equal_all_bounds¸  s‘   € Ü‹|ˆÜ˜˜c˜
 S¨# JÓ/ˆÜ×$Ñ$Ó&ñ 	5Ü×#Ñ#ØØBÜôô ˜dŸh™h¨¨a¨Ø%2Ø%+ô-ˆFô —;‘;˜vŸx™x¨#¨s¨Ô4Ð4Ñ4÷	5÷ 	5ñ 	5úó   ¯ABÂBc                 ó@  — 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 «       y # 1 sw Y   y xY w)Nr®  r¹  g      4@rÔ   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ˆÜ×$Ñ$Ó&ñ 	6Ü×#Ñ#ØØBÜôô ˜dŸh™h¨¨a¨Ø%2Ø%+ô-ˆFô —;‘;˜vŸx™x¨#¨t¨Ô5Ð5Ñ5÷	6÷ 	6ñ 	6úrÈ  c                 óð   — t        «       }d}t        j                  t        |¬«      5  t	        t
        j                   dgddg«      }t        |j                  ddgd|¬	«       d d d «       y # 1 sw Y   y xY w)
Nz:An upper bound is less than the corresponding lower bound.rA  r   r®  g      Àr†  r€   r¼  r½  )	rƒ   r  rC  r]   r
   r   ru   r   r1   ©r#   rú   r#  r!   s       r&   Útest_invalid_boundsz)TestBoundedNelderMead.test_invalid_boundsÒ  se   € Ü‹|ˆØNˆÜ�]‰]œ:¨WÔ5ñ 	$ÜœbŸf™f˜W c˜N¨S°$¨KÓ8ˆFÜ�T—X‘X  Q˜xØ)Ø"õ$÷	$÷ 	$ñ 	$úó   ¨;A,Á,A5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 «       y # 1 sw Y   y xY w)
Nr»  rA  r   r®  r¹  r†  rÄ  r¼  r½  )	rƒ   r  Úwarnsr  r
   r   ru   r   r1   rÌ  s       r&   Útest_outside_bounds_warningz1TestBoundedNelderMead.test_outside_bounds_warningÛ  sg   € ô ‹|ˆØDˆÜ�\‰\œ+¨WÔ5ñ 	$ÜœbŸf™f˜W c˜N¨S°#¨JÓ7ˆFÜ�T—X‘X  Q˜xØ)Ø"õ$÷	$÷ 	$ñ 	$úrÎ  N)rQ   rR   rS   r  rY  rZ  r
   r   ru   rƒ   r   rÂ  rÇ  rÊ  rÍ  r  rÒ  r.   r)   r&   r¸  r¸  £  sÐ   „ à‡[�[×Ñ˜_Ù% r§v¡v g¨r¯v©vÓ6¹
»×8JÑ8JÐKÙ% r§v¡v g¨tÓ4°t¸T°lÐCÙ% c¨2¯6©6Ó2°S¸#°JÐ?Ù% s¨C j°3¸°*Ó=ÀÀB¸xÐHð ó!ñ<ó!ð<ò5ò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\  rt  rˆ  r   rª  r¶  r¸  r.   r)   r&   ú<module>rØ     sÚ   ðÛ ã Û Ý #Ý "÷7ñ 7÷#÷ #ñ #÷*9ñ *9÷Z39ñ 39÷l,9ñ ,9÷^+Añ +A÷\+ñ +ô\/�Zô /ô,.˜
ô .ô"4�zô 4÷4|?ñ |?÷~H!ñ H!÷T2Nñ 2Nòj	1ò 8òFOòdGò?÷(A$ò A$r)   