
    (ph&m                     v   S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJrJrJrJrJrJrJr   " S S5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S5      r " S S5      r " S S5      rS rS r S r!S r" " S  S!5      r#g)"    N)
block_diag)
csc_matrix)assert_array_almost_equalassert_array_lessassert_suppress_warnings)NonlinearConstraintLinearConstraintBoundsminimizeBFGSSR1rosenc                   D    \ rS rSrSrS
S jrS rS rS r\	S 5       r
S	rg)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                     US-  [         R                  -  n[         R                  " U5      [         R                  " U5      /U l        [         R
                  " SS/5      U l        X l        X0l        S U l	        g N         ?        
nppicossinx0arrayx_opt
constr_jacconstr_hessboundsselfdegreesr!   r"   radss        a/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_minimize_constrained.py__init__Maratos.__init__   V    s{255 66$<.XXsCj)
$&    c                 <    SUS   S-  US   S-  -   S-
  -  US   -
  $ N   r       r%   xs     r(   funMaratos.fun!   s0    !A$'AaD!G#a'(1Q4//r,   c                 P    [         R                  " SUS   -  S-
  SUS   -  /5      $ N   r   r0   r   r   r2   s     r(   gradMaratos.grad$   s*    xx1Q41QqT6*++r,   c                 4    S[         R                  " S5      -  $ Nr8   r/   r   eyer2   s     r(   hessMaratos.hess'       {r,   c                     S nU R                   c  S nOU R                   nU R                  c  S nOU R                  n[        USSX#5      $ )Nc                 $    U S   S-  U S   S-  -   $ Nr   r/   r0   r1   r3   s    r(   r4   Maratos.constr.<locals>.fun,       Q47QqT1W$$r,   c                 $    SU S   -  SU S   -  //$ r.   r1   rF   s    r(   jacMaratos.constr.<locals>.jac0        1Q41Q4())r,   c                 @    SUS   -  [         R                  " S5      -  $ Nr/   r   r>   r3   vs     r(   r@   Maratos.constr.<locals>.hess6       1vbffQi''r,   r0   r!   r"   r	   r%   r4   rJ   r@   s       r(   constrMaratos.constr*   R    	% ??"* //C#( ##D"31c88r,   r#   r"   r!   r   r    <   NN__name__
__module____qualname____firstlineno____doc__r)   r4   r:   r@   propertyrU   __static_attributes__r1   r,   r(   r   r      s/    0, 9 9r,   r   c                   J    \ rS rSrSrSS jrS rS rS rS r	\
S	 5       rS
rg)MaratosTestArgs>   r   Nc                 
   US-  [         R                  -  n[         R                  " U5      [         R                  " U5      /U l        [         R
                  " SS/5      U l        X@l        XPl        Xl	        X l
        S U l        g r   )r   r   r   r   r   r   r    r!   r"   abr#   )r%   rg   rh   r&   r!   r"   r'   s          r(   r)   MaratosTestArgs.__init__F   s`    s{255 66$<.XXsCj)
$&r,   c                 X    U R                   U:w  d  U R                  U:w  a
  [        5       eg N)rg   rh   
ValueError)r%   rg   rh   s      r(   
_test_argsMaratosTestArgs._test_argsP   s$    66Q;$&&A+, &r,   c                 ^    U R                  X#5        SUS   S-  US   S-  -   S-
  -  US   -
  $ r.   )rm   r%   r3   rg   rh   s       r(   r4   MaratosTestArgs.funT   s<    !A$'AaD!G#a'(1Q4//r,   c                 r    U R                  X#5        [        R                  " SUS   -  S-
  SUS   -  /5      $ r7   )rm   r   r   rp   s       r(   r:   MaratosTestArgs.gradX   s6    xx1Q41QqT6*++r,   c                 V    U R                  X#5        S[        R                  " S5      -  $ r=   )rm   r   r?   rp   s       r(   r@   MaratosTestArgs.hess\   s     {r,   c                     S nU R                   c  S nOU R                   nU R                  c  S nOU R                  n[        USSX#5      $ )Nc                 $    U S   S-  U S   S-  -   $ rE   r1   rF   s    r(   r4   #MaratosTestArgs.constr.<locals>.funb   rH   r,   c                 $    SU S   -  SU S   -  //$ r7   r1   rF   s    r(   rJ   #MaratosTestArgs.constr.<locals>.jacf   rL   r,   c                 @    SUS   -  [         R                  " S5      -  $ rN   r>   rO   s     r(   r@   $MaratosTestArgs.constr.<locals>.hessl   rR   r,   r0   rS   rT   s       r(   rU   MaratosTestArgs.constr`   rW   r,   )rg   rh   r#   r"   r!   r   r    rY   )r\   r]   r^   r_   r`   r)   rm   r4   r:   r@   ra   rU   rb   r1   r,   r(   rd   rd   >   s4    0, 9 9r,   rd   c                   N    \ rS rSrSrS
S jrS r\S 5       rS r	\S 5       r
S	rg)MaratosGradInFunct   r   Nc                     US-  [         R                  -  n[         R                  " U5      [         R                  " U5      /U l        [         R
                  " SS/5      U l        X l        X0l        S U l	        g r   r   r$   s        r(   r)   MaratosGradInFunc.__init__|   r+   r,   c                     SUS   S-  US   S-  -   S-
  -  US   -
  [         R                  " SUS   -  S-
  SUS   -  /5      4$ )Nr/   r   r0   r8   r9   r2   s     r(   r4   MaratosGradInFunc.fun   s\    1Q47QqT1W$q()AaD0!AaD&(AadF+,. 	.r,   c                     g)NTr1   r%   s    r(   r:   MaratosGradInFunc.grad   s    r,   c                 4    S[         R                  " S5      -  $ r=   r>   r2   s     r(   r@   MaratosGradInFunc.hess   rB   r,   c                     S nU R                   c  S nOU R                   nU R                  c  S nOU R                  n[        USSX#5      $ )Nc                 $    U S   S-  U S   S-  -   $ rE   r1   rF   s    r(   r4   %MaratosGradInFunc.constr.<locals>.fun   rH   r,   c                 $    SU S   -  SU S   -  //$ r7   r1   rF   s    r(   rJ   %MaratosGradInFunc.constr.<locals>.jac   rL   r,   c                 @    SUS   -  [         R                  " S5      -  $ rN   r>   rO   s     r(   r@   &MaratosGradInFunc.constr.<locals>.hess   rR   r,   r0   rS   rT   s       r(   rU   MaratosGradInFunc.constr   rW   r,   rX   rY   )r\   r]   r^   r_   r`   r)   r4   ra   r:   r@   rU   rb   r1   r,   r(   r   r   t   s>    .   9 9r,   r   c                   D    \ rS rSrSrS
S jrS rS rS r\	S 5       r
S	rg)HyperbolicIneq   zProblem 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                 ~    SS/U l         SS/U l        Xl        X l        [	        S[
        R                  5      U l        g )Nr   g~T>?g~1[?)r   r    r!   r"   r   r   infr#   )r%   r!   r"   s      r(   r)   HyperbolicIneq.__init__   s6    a&)
$&Q'r,   c                 <    SUS   S-
  S-  -  SUS   S-
  S-  -  -   $ )N      ?r   r/   r0   r1   r2   s     r(   r4   HyperbolicIneq.fun   s/    AaD1Hq= 3!s
Q#666r,   c                 "    US   S-
  US   S-
  /$ )Nr   r/   r0   r   r1   r2   s     r(   r:   HyperbolicIneq.grad   s    !q!A$*%%r,   c                 .    [         R                  " S5      $ Nr/   r>   r2   s     r(   r@   HyperbolicIneq.hess   s    vvayr,   c                     S nU R                   c  S nOU R                   nU R                  c  S nOU R                  n[        US[        R                  X#5      $ )Nc                 $    SU S   S-   -  U S   -
  $ )Nr0   r   r1   rF   s    r(   r4   "HyperbolicIneq.constr.<locals>.fun   s    adQh<!A$&&r,   c                 $    SU S   S-   S-  -  S//$ )Nr   r0   r/   r1   rF   s    r(   rJ   "HyperbolicIneq.constr.<locals>.jac   s!    QqTAXM)2.//r,   c                 d    SUS   -  [         R                  " SU S   S-   S-  -  S/SS//5      -  $ )Nr/   r   r0      r9   rO   s     r(   r@   #HyperbolicIneq.constr.<locals>.hess   sE    1vbhhAaD1Hq=!(<)*A(0 1 1 1r,   g      ?r!   r"   r	   r   r   rT   s       r(   rU   HyperbolicIneq.constr   sV    	' ??"0 //C#1 ##D"3bffc@@r,   rX   )NNr[   r1   r,   r(   r   r      s1    (7& A Ar,   r   c                   D    \ rS rSrSrS
S jrS rS rS r\	S 5       r
Srg	)
Rosenbrock   zRosenbrock function.

The following optimization problem:
    minimize sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
c                     [         R                  R                  U5      nUR                  SSU5      U l        [         R
                  " U5      U l        S U l        g )Nr   r0   )r   randomRandomStateuniformr   onesr    r#   )r%   nrandom_staterngs       r(   r)   Rosenbrock.__init__   s@    ii##L1++b!Q'WWQZ
r,   c                     [         R                  " U5      n[         R                  " SUSS  US S S-  -
  S-  -  SUS S -
  S-  -   SS9nU$ )Ng      Y@r0   r          @r   axis)r   asarraysum)r%   r3   rs      r(   r4   Rosenbrock.fun   sZ    JJqMFF5AabEAcrFCK/#55QsVc8IIr,   c                 8   [         R                  " U5      nUSS nUS S nUSS  n[         R                  " U5      nSX#S-  -
  -  SXBS-  -
  -  U-  -
  SSU-
  -  -
  USS& SUS   -  US   US   S-  -
  -  SSUS   -
  -  -
  US'   SUS   US   S-  -
  -  US'   U$ )	Nr0   r   r/        pr   )r   r   
zeros_like)r%   r3   xmxm_m1xm_p1ders         r(   r:   Rosenbrock.grad   s    JJqMqW#2!"mmABM*EEM*R/023q2v,?Ab	!!qtQw/!q1Q4x.@A22)*B
r,   c                    [         R                  " U5      n[         R                  " SUS S -  S5      [         R                  " SUS S -  S5      -
  n[         R                  " [	        U5      UR
                  S9nSUS   S-  -  SUS   -  -
  S-   US'   S	US'   S
SUSS S-  -  -   SUSS  -  -
  USS& U[         R                  " U5      -   nU$ )Nr   r   r0   r   )dtypei  r   r/   r      )r   
atleast_1ddiagzeroslenr   )r%   r3   Hdiagonals       r(   r@   Rosenbrock.hess   s    MM!GGD1Sb6M1%afb(AA88CF!''2QqT1WnsQqTz1A5ta"gqj00312;>2!!r,   c                     g)Nr1   r1   r   s    r(   rU   Rosenbrock.constr   s    r,   r#   r   r    N)r/   r   r[   r1   r,   r(   r   r      s/    
  r,   r   c                   2    \ rS rSrSrSS jr\S 5       rSrg)IneqRosenbrock   zRosenbrock 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    [         R                  U SU5        SS/U l        SS/U l        S U l        g )Nr/   r         gn?g$?r   r)   r   r    r#   r%   r   s     r(   r)   IneqRosenbrock.__init__  s2    D!\2t*f%
r,   c                 H    SS//nSn[        U[        R                  * U5      $ Nr0   r/   r
   r   r   )r%   Arh   s      r(   rU   IneqRosenbrock.constr  s'    VHBFF7A..r,   r   Nr   	r\   r]   r^   r_   r`   r)   ra   rU   rb   r1   r,   r(   r   r      s      / /r,   r   c                   "    \ rS rSrSrSS jrSrg)BoundedRosenbrocki  a  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                 |    [         R                  U SU5        SS/U l        S U l        [	        SS/SS/5      U l        g )Nr/   gɿg?r   r   )r   r)   r   r    r   r#   r   s     r(   r)   BoundedRosenbrock.__init__  s<    D!\2+
b!Wq!f-r,   r   Nr   )r\   r]   r^   r_   r`   r)   rb   r1   r,   r(   r   r     s    .r,   r   c                   2    \ rS rSrSrSS jr\S 5       rSrg)EqIneqRosenbrocki&  a  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    [         R                  U SU5        SS/U l        SS/U l        S U l        g )Nr/   r   r   gWs`?g|\*?r   r   s     r(   r)   EqIneqRosenbrock.__init__0  s2    D!\2t*w'
r,   c                 n    SS//nSnSS//nSn[        U[        R                  * U5      [        X4U5      4$ r   r   )r%   A_ineqb_ineqA_eqb_eqs        r(   rU   EqIneqRosenbrock.constr6  sH    a&Ax "&&&9 T24 	4r,   r   Nr   r   r1   r,   r(   r   r   &  s      4 4r,   r   c                   T    \ rS rSrSr  SS jrS rS rS rS r	S	 r
\S
 5       rSrg)Eleci@  a  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                    Xl         [        R                  R                  U5      U l        U R                  R                  SS[        R                  -  U R                   5      nU R                  R                  [        R                  * [        R                  U R                   5      n[        R                  " U5      [        R                  " U5      -  n[        R                  " U5      [        R                  " U5      -  n[        R                  " U5      n	[        R                  " XxU	45      U l
        S U l        X0l        X@l        S U l        g )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)   Elec.__init__N  s    &99((6hhq!bee)T-=-=>  "%%0@0@AFF5MBFF3K'FF5MBFF3K'FF5M))Q1I&
$&r,   c                     US U R                    nXR                   SU R                   -   nUSU R                   -  S  nX#U4$ r   r   )r%   r3   x_coordy_coordz_coords        r(   _get_cordinatesElec._get_cordinates^  sS    %T%%&$$Q)9)9%9:A((()*((r,   c                 z    U R                  U5      u  p#nUS S 2S 4   U-
  nUS S 2S 4   U-
  nUS S 2S 4   U-
  nXVU4$ rk   r  )r%   r3   r   r  r  dxdydzs           r(   _compute_coordinate_deltasElec._compute_coordinate_deltasd  sZ    $($8$8$;!'QW'QW'QW'rzr,   c                    U R                  U5      u  p#n[        R                  " SS9   US-  US-  -   US-  -   S-  nS S S 5        SW[        R                  " U5      '   S[        R                  " U5      -  $ ! , (       d  f       N@= f)Nignoredivider/   r   r   r   )r
  r   errstatediag_indices_fromr   )r%   r3   r  r  r	  dm1s         r(   r4   Elec.funk  sw    44Q7
[[)q52q5=2q5(T1C *)*B  %&RVVC[   *)s   A88
Bc                    U R                  U5      u  p#n[        R                  " SS9   US-  US-  -   US-  -   S-  nS S S 5        SW[        R                  " U5      '   [        R                  " X%-  SS9* n[        R                  " X5-  SS9* n[        R                  " XE-  SS9* n[        R
                  " XgU45      $ ! , (       d  f       N= f)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(   r:   	Elec.gradr  s    44Q7
[[)q52q5=2q5(T1C *)*B  %&&&**&&**&&**yy&&122 *)s   B??
Cc           	         U R                  U5      u  p#nUS-  US-  -   US-  -   S-  n[        R                  " SS9   US-  nUS-  nS S S 5        [        R                  " U R                  5      nSWX4'   SWX4'   USUS-  -  U-  -
  n	[        R
                  " U	S	S
9* XU4'   SU-  U-  U-  n
[        R
                  " U
S	S
9* XU4'   SU-  U-  U-  n[        R
                  " US	S
9* XU4'   USUS-  -  U-  -
  n[        R
                  " US	S
9* XU4'   SU-  U-  U-  n[        R
                  " US	S
9* XU4'   USUS-  -  U-  -
  n[        R
                  " US	S
9* XU4'   [        R                  " [        R                  " XU45      [        R                  " XU45      [        R                  " XU45      45      nU$ ! , (       d  f       GN= f)Nr/   r   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@   	Elec.hess  s   44Q7
URU]RU"s*[[)r'Cr'C * IId&&'AD	AD	AAIO#VVCa((qD	2glS VVCa((qD	2glS VVCa((qD	AAIO#VVCa((qD	2glS VVCa((qD	AAIO#VVCa((qD	IIIIso&IIso&IIso&
  A *)s   G  
Gc                    ^  U 4S jnT R                   c  U 4S jnOT R                   nT R                  c  S nOT R                  n[        U[        R                  * SX#5      $ )Nc                 T   > TR                  U 5      u  pnUS-  US-  -   US-  -   S-
  $ )Nr/   r0   r  )r3   r   r  r  r%   s       r(   r4   Elec.constr.<locals>.fun  s9    (,(<(<Q(?%GgA:
*WaZ7!;;r,   c                   > TR                  U 5      u  pnS[        R                  " U5      -  nS[        R                  " U5      -  nS[        R                  " U5      -  n[        [        R                  " XEU45      5      $ r   )r  r   r   r   r   )r3   r   r  r  JxJyJzr%   s          r(   rJ   Elec.constr.<locals>.jac  si    ,0,@,@,C)'))))))!"))RRL"9::r,   c                 L    S[         R                  " U5      -  n[        X"U5      $ r   )r   r   r   )r3   rP   Ds      r(   r@   Elec.constr.<locals>.hess  s     
N!!**r,   r   r   rT   s   `   r(   rU   Elec.constr  sY    	< ??"; //C#+ ##D"3C>>r,   )r#   r"   r!   r   r   r   r    )r   r   NN)r\   r]   r^   r_   r`   r)   r  r
  r4   r:   r@   ra   rU   rb   r1   r,   r(   r   r   @  sB     67.2 )!3$L ? ?r,   r   c                   ^   \ rS rSr\" 5       \" SS9\" \" 5       S9\" S\" 5       S9\" 5       \" 5       \" SS9\" \" 5       S9\" S\" 5       S9\	" 5       \
" 5       \" 5       \" 5       \" SS9\" SSS9\" S\" 5       S9\" SS\" 5       S	9/r\R                   R"                  \R                   R%                  S
\5      \R                   R%                  SS5      \R                   R%                  SSS\" 5       \" SS9\" SS945      S 5       5       5       5       rS rS rS rS rS rS rS rS rSrg)TestTrustRegionConstri  2-point)r"   )r!   r"   3-pointr/   r   )r   r"   )r   r!   r"   probr:   )	prob.gradr9  Fr@   	prob.hessdamp_update)exception_strategyskip_updatec                    US:X  a  UR                   OUnUS:X  a  UR                  OUnUS;   a  US;   a  [        R                  " S5        UR                   SL a  US;   a  [        R                  " S5        [	        U[
        5      =(       a    US	:H  =(       a    [	        U[        5      nU(       a  [        R                  " S
5        [        5        nUR                  [        S5        [        UR                  UR                  SX#UR                  UR                  S9nS S S 5        UR                   bE  [#        WR$                  UR                   SS9  UR&                  S:X  a  [)        UR*                  S5        WR&                  S:X  a<  [)        UR,                  S5        UR.                  S:X  a  [)        UR0                  S5        SUR&                   S3nUR&                  S;  d   U5       eg ! , (       d  f       N= f)Nr;  r<  >   Fcsr8  r9  >   rA  r8  r9  z+Numerical Hessian needs analytical gradientT>   Fr9  z6prob.grad incompatible with grad in {'3-point', False}r9  z3Seems sensitive to initial conditions w/ Acceleratedelta_grad == 0.0trust-constrmethodrJ   r@   r#   constraints   decimalr0   :0yE>r/   tr_interior_pointzInvalid termination condition: .>   r   r   )r:   r@   pytestskip
isinstancer   r   xfailr   filterUserWarningr   r4   r   r#   rU   r    r   r3   statusr   
optimality	tr_radiusrE  barrier_parameter)r%   r:  r:   r@   	sensitivesupresultmessages           r(   test_list_of_problems+TestTrustRegionConstr.test_list_of_problems  s    !K/tyyT K/tyyT7744KKEF99);!;KKPQ&78 0TY=N 0#D$/ 	LLNO CJJ{$78dhh%3"&%)[[*.++	7F ! ::!%fhh

./1 }}!!&"3"3T:==Af..5}} 33!&":":DA 4FMM?!D}}F*3G3*/ ! s   AG++
G9c                 T    S nS/n[        US/USS9n[        UR                  SSS9  g )	Nc                     U S-
  S-  $ r   r1   rF   s    r(   r4   <TestTrustRegionConstr.test_default_jac_and_hess.<locals>.fun      Ea<r,   r   r/   r  rC  )r   r#   rE  r0   rG  rH  r   r   r3   r%   r4   r#   ress       r(   test_default_jac_and_hess/TestTrustRegionConstr.test_default_jac_and_hess  s0    	 svf^L!#%%A6r,   c                 V    S nS/n[        US/USSS9n[        UR                  SSS	9  g )
Nc                     U S-
  S-  $ r   r1   rF   s    r(   r4   4TestTrustRegionConstr.test_default_hess.<locals>.fun	  r`  r,   ra  r  rC  r8  )r   r#   rE  rJ   r0   rG  rH  rb  rc  s       r(   test_default_hess'TestTrustRegionConstr.test_default_hess  s5    	 svf^$&!#%%A6r,   c                    [        5       n[        UR                  UR                  SUR                  UR
                  S9n[        UR                  UR                  SSS9n[        UR                  UR                  SSS9n[        UR                  UR                  SS9  [        UR                  UR                  SS9  [        UR                  UR                  SS9  g )	NrC  )rE  rJ   r@   zL-BFGS-Br8  )rE  rJ   r9  rG  rH  )	r   r   r4   r   r:   r@   r   r3   r    )r%   r:  rY  result1result2s        r(   test_no_constraints)TestTrustRegionConstr.test_no_constraints  s    |$((DGG!/"iidii9 488TWW",(* 488TWW",(* 	"&((DJJB!'))TZZC!'))TZZCr,   c           
        ^ [        5       mU4S jn[        TR                  TR                  STR                  UTR
                  TR                  S9nTR                  b  [        UR                  TR                  SS9  UR                  S:X  a  [        UR                  S5        UR                  S:X  a<  [        UR                  S5        UR                  S:X  a  [        UR                  S5        UR                  S	;   a  [!        S
5      eg )Nc                 H   > TR                  U 5      nUR                  U5      $ rk   )r@   dot)r3   pr   r:  s      r(   hessp/TestTrustRegionConstr.test_hessp.<locals>.hessp#  s    		!A558Or,   rC  )rE  rJ   ru  r#   rF  r/   rH  r0   rJ  rK  r   r   Invalid termination condition.)r   r   r4   r   r:   r#   rU   r    r   r3   rS  r   rT  rU  rE  rV  RuntimeError)r%   ru  rY  r:  s      @r(   
test_hessp TestTrustRegionConstr.test_hessp   s    y	 $((DGG!/"iiu!%&*kk	3 ::!%fhh

AF ==Af//6==Af..5}} 33!&":":DA==F"?@@ #r,   c                 &   [        SS5      n[        UR                  UR                  SSUR                  UR
                  UR                  UR                  S9nUR                  b  [        UR                  UR                  SS9  UR                  S:X  a  [        UR                  S	5        UR                  S:X  a<  [        UR                  S	5        UR                  S
:X  a  [        UR                   S	5        UR                  S;   a  [#        S5      eg )Nrg      )rg   r}  rC  rD  r/   rH  r0   rJ  rK  rw  rx  )rd   r   r4   r   r:   r@   r#   rU   r    r   r3   rS  r   rT  rU  rE  rV  ry  )r%   r:  rY  s      r(   	test_argsTestTrustRegionConstr.test_args=  s    sC($((DGGZ!/"iidii!%&*kk	3 ::!%fhh

AF ==Af//6==Af..5}} 33!&":":DA==F"?@@ #r,   c           
          [        5       nSn[        R                  " [        US9   [	        UR
                  UR                  SSSUR                  S9  S S S 5        g ! , (       d  f       g = f)Nz9Whenever the gradient is estimated via finite-differencesmatchrC  r8  )rE  rJ   r@   rF  )r   rM  raisesrl   r   r4   r   rU   )r%   r:  rZ  s      r(   test_raise_exception*TestTrustRegionConstr.test_raise_exceptionU  sI    yM]]:W5TXXtww~9#> 655s   -A
A*c           	          S n[        S S/S S USS9n[        UR                  S5      5        [        UR                  S	S
5      S:H  5        [        UR                  SS
5      S:H  5        g )Nc                 <    [        SU;   5        [        SU;   5        g )Nnitniter)r   )r3   infos     r(   callback7TestTrustRegionConstr.test_issue_9044.<locals>.callbacka  s    ETM"GtO$r,   c                     U S-  $ r   r1   rF   s    r(   <lambda>7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>e  s    AqDr,   r   c                     SU -  $ r   r1   rF   s    r(   r  r  e  s    QqSr,   c                     gr   r1   rF   s    r(   r  r  f  s    r,   rC  )rJ   r@   r  rE  successr  r   r0   r  )r   r   get)r%   r  rY  s      r(   test_issue_9044%TestTrustRegionConstr.test_issue_9044\  sh    
	% .1#=*X!/1 	

9%&

5"%*+ 	

7B'1,-r,   c                 L   [         R                  " SS/5      nS n[        [         R                  " SS/5      [         R                  " SS/5      SS9n[        5        nUR	                  [
        S5        [        SUUUS	9nS S S 5        WS
   (       d   eg ! , (       d  f       N= f)Nr   r   c                 ,    U S   nU S   nUS-  US-  -   $ )Nr   r0   r/   r1   )r3   x1x2s      r(   obj3TestTrustRegionConstr.test_issue_15093.<locals>.objw  s'    1B1B7R1W$$r,   r   T)keep_feasiblerB  rC  )rE  r4   r   r#   r  )r   r   r   r   rQ  rR  r   )r%   r   r  r#   rX  rY  s         r(   test_issue_15093&TestTrustRegionConstr.test_issue_15093o  s     XXr3i 	%
 "b*BHHb"X,>&*,  CJJ{$78%	F ! i    ! s   #B
B#r1   N)r\   r]   r^   r_   r   r   r   r   r   r   r   r   r   r   list_of_problemsrM  markthread_unsafeparametrizer[  re  rj  ro  rz  r~  r  r  r  rb   r1   r,   r(   r7  r7    sX   	I6CE29#%H)+&(&9=&46:&)376;"&((*)++	B>y),0#1( [[[[V%56[[V%DE[[Vk9ce&*m&L&*m&L&N O$4O F 7 $4N77D A:A0>.&!r,   r7  c                       \ rS rSrSrS rSrg)TestEmptyConstrainti  a  
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           
         S nS nS nS nS nS n[        US[        R                  XV5      nSS/n[        [        R                  * [        R                  * /[        R                  [        R                  /5      n[	        UUS	UUU/US
9n	[        [        U	R                  5      [        R                  " SS/5      SS9  g )Nc                 $    U S   S-  U S   S-  -   $ rE   r1   rF   s    r(   function;TestEmptyConstraint.test_empty_constraint.<locals>.function  rH   r,   c                 J    [         R                  " SU S   -  SU S   -  /5      $ )Nr   r   r0   r9   rF   s    r(   functionjacobianCTestEmptyConstraint.test_empty_constraint.<locals>.functionjacobian  s&    88R!Wb1g.//r,   c                     SU-  $ )Nr   r1   rO   s     r(   functionhvp>TestEmptyConstraint.test_empty_constraint.<locals>.functionhvp  s    a4Kr,   c                 N    [         R                  " U S   S-  U S   S-  -
  /5      $ rE   r9   rF   s    r(   
constraint=TestEmptyConstraint.test_empty_constraint.<locals>.constraint  s)    88QqT1WqtQw./00r,   c                 L    [         R                  " SU S   -  SU S   -  //5      $ )Nr/   r   r   r0   r9   rF   s    r(   constraintjacobianETestEmptyConstraint.test_empty_constraint.<locals>.constraintjacobian  s)    88a!fb1g./00r,   c                 F    [         R                  " SS/SS//5      US   -  $ )Nr   r   g       r   r9   rO   s     r(   constraintlcohATestEmptyConstraint.test_empty_constraint.<locals>.constraintlcoh  s'    88b"XCy12QqT99r,   r   r   rC  )rE  rJ   ru  rF  r#   r0   r   r8   rH  )	r	   r   r   r   r   r   absr3   r   )
r%   r  r  r  r  r  r  
startpointr#   rY  s
             r(   test_empty_constraint)TestEmptyConstraint.test_empty_constraint  s    	%	0		1	1	: )R);M
 "X
"&&266'*RVVRVV,<=

!l
 	"#fhh-1a&1A1Mr,   r1   N)r\   r]   r^   r_   r`   r  rb   r1   r,   r(   r  r    s    %Nr,   r  c                  P   S n [         R                  R                  5        nUR                  [        5        [         R
                  " [         R                  " SS/5      5      nS S S 5        [        WS[         R                  5      n[        U SS/-  US9  g ! , (       d  f       N9= f)Nc                 $    U S   S-  U S   S-  -   $ rE   r1   rF   s    r(   opttest_bug_11886.<locals>.opt  s    tQwqtQwr,   r0   r   r/   )rF  )
r   testingr   rQ  PendingDeprecationWarningmatrixr   r
   r   r   )r  rX  r   lin_conss       r(   test_bug_11886r    sv     
	%	%	'3

,-IIbggq!fo& 
(  2rvv.HS!QC%x0 
(	's   AB
B%c                    ^^ [        SS/SS/SS9mU4S jmU4S jn U4S jnS nU4S	 jn[        R                  " S
5      n[        US[        R                  5      [        USSUS9/n[        XSTUS9nT" UR                  5        US   R                  US   R                  UR                  5      s=:  a  US   R                  :  d   e   eg )Nr   r0   T)lbubr  c                    > [         R                  " U TR                  :  5      (       d   e[         R                  " U TR                  :*  5      (       d   eg rk   )r   allr  r  )r3   bndss    r(   assert_inbounds%test_gh11649.<locals>.assert_inbounds  s=    vva477l####vva477l####r,   c                    > T" U 5        [         R                  " U S   5      SU S   S-  -  SU S   S-  -  -   SU S   -  U S   -  -   SU S   -  -   S-   -  $ )Nr   r8   r/   r0   )r   expr3   r  s    r(   r  test_gh11649.<locals>.obj  sf    vvad|QqtQwY1Q472QqtVAaD[@1QqT6IAMNNr,   c                 0   > T" U 5        U S   S-  U S   -   $ rE   r1   r  s    r(   ncetest_gh11649.<locals>.nce  s!    tQw1~r,   c                 >    [         R                  " SU S   -  S/5      $ r.   r9   rF   s    r(   nce_jactest_gh11649.<locals>.nce_jac  s    xx1Q4$$r,   c                 *   > T" U 5        U S   U S   -  $ )Nr   r0   r1   r  s    r(   ncitest_gh11649.<locals>.nci  s    tAaDyr,   )gGz?gGz)rJ   rC  )r4   r   rE  r#   rF  r   )
r   r   r   r	   r   r   r3   r  r4   r  )	r  r  r  r  r   nlcsrd  r  r  s	          @@r(   test_gh11649r    s     b"X1a&=D$O% 
-	 BS"&&1Qw79D s.D2CCEE7::QCEE*7T!WZZ77777r,   c            	        ^ Sn [         R                  " [        U S9   [        R                  " S5      n[        R
                  " S5      R                  S5      [        R                  " S5      smn[        U4S jX"S9n[        [        US	U/S
9  S S S 5        [        R                  R                  5        nUR                  [        5        [        [        WS	W/SS0S9  S S S 5        g ! , (       d  f       N_= f! , (       d  f       g = f)Nz:...more equality constraints than independent variables...r  )r/      )r   r/   )r   c                    > TU -  $ rk   r1   )r3   r   s    r(   r  3test_gh20665_too_many_constraints.<locals>.<lambda>  s	    4!8r,   )r  r  rC  rE  rF  factorization_methodSVDFactorization)rE  rF  options)rM  r  rl   r   r   r  reshaper	   r   r   r  r   rQ  rR  )rZ  r   r   grX  r   s        @r(   !test_gh20665_too_many_constraintsr    s     KG	z	1WWT]YYq\))&12774=
d 3F>sC	 
2 
	%	%	'3

;>s02DE	G 
(	' 
2	1 
(	's   A2C(5*C9(
C69
Dc                  (   S n S n[        5        nUR                  [        S5        UR                  [        S5        [        USS/S[	        U SS5      S9nS S S 5        WR
                  (       d  UR                  S	:  d   eg ! , (       d  f       N2= f)
Nc                 J    U u  pSS/u  p4SUS-  US-  -  -   US-  US-  -  -
  $ )N      @      @r   r/   r1   )uu1u2rg   rh   s        r(   lsftest_issue_18882.<locals>.lsf  s<    SzRUQT\!BEAqDL00r,   c                 4    [         R                  " U S-  5      $ r   )r   r   )r  s    r(   oftest_issue_18882.<locals>.of  s    vvad|r,   rB  zSingular Jacobian matrix.r   rC  r   r  rJ  )r   rQ  rR  r   r	   r  constr_violation)r  r  rX  rd  s       r(   test_issue_18882r    s    1
 
	

; 34

; ;<#J!+CA6	
 
 #"6"6"=>>"= 
	s   AB
Bc                   ~   \ rS rSr\R
                  R                  S\" \R                  * \R                  5      \
" 5       R                  4\" \R                  * S5      SS/4\" S\R                  5      SS/4\" SS/SS/5      SS/4/5      S	 5       rS
 rS rS r\R
                  R!                  SS9S 5       rSrg)TestBoundedNelderMeadi  zbounds, x_optgr  g      "@r   r        @c                    [        5       n[        5        nUR                  [        S5        [	        UR
                  SS/SUS9n[        R                  " UR                  UR                  5      R                  5       (       d   e[        R                  " UR                  UR                  5      R                  5       (       d   e[        R                  " UR                  UR                  5      UR
                  5      (       d   e[        R                  " UR                  USS9(       d   e S S S 5        g ! , (       d  f       g = f)N0Initial guess is not within the specified boundsr  Nelder-MeadrE  r#   gMbP?)atol)r   r   rQ  rR  r   r4   r   
less_equalr  r3   r  r  allclose)r%   r#   r    r:  rX  rY  s         r(   test_rosen_brock_with_bounds2TestBoundedNelderMead.test_rosen_brock_with_bounds  s     | CJJ{ %; <dhhc
%2%+-F ==FHH599;;;;==699599;;;;;;txx16::>>>>;;vxxU;;; !  s   DD66
Ec                 2   [        5       n[        SS/SS/5      n[        5        nUR                  [        S5        [        UR                  SS/SUS9n[        R                  " UR                  SS/5      (       d   e S S S 5        g ! , (       d  f       g = f)Nr  r  r  r     r  r  
r   r   r   rQ  rR  r   r4   r   r  r3   r%   r:  r#   rX  rY  s        r(   test_equal_all_bounds+TestBoundedNelderMead.test_equal_all_bounds%  s    |c
S#J/ CJJ{ %; <dhha%2%+-F ;;vxx#s4444 !     AB
Bc                 2   [        5       n[        SS/SS/5      n[        5        nUR                  [        S5        [        UR                  SS/SUS9n[        R                  " UR                  SS	/5      (       d   e S S S 5        g ! , (       d  f       g = f)
Nr  r  g      4@r  r  r  r  r  g      0@r  r  s        r(   test_equal_one_bounds+TestBoundedNelderMead.test_equal_one_bounds0  s    |c
S$K0 CJJ{ %; <dhha%2%+-F ;;vxx#t5555 !  r  c                     [        5       nSn[        R                  " [        US9   [	        [
        R                  * S/SS/5      n[        UR                  SS/SUS	9  S S S 5        g ! , (       d  f       g = f)
Nz:An upper bound is less than the corresponding lower bound.r  r   r  g      r  r   r  r  )	r   rM  r  rl   r   r   r   r   r4   r%   r:  rZ  r#   s       r(   test_invalid_bounds)TestBoundedNelderMead.test_invalid_bounds;  s\    |N]]:W5bffWcNS$K8FTXXQx)"$ 655   8A''
A5z5Failing on Azure Linux and macOS builds, see gh-13846)reasonc                     [        5       nSn[        R                  " [        US9   [	        [
        R                  * S/SS/5      n[        UR                  SS/SUS	9  S S S 5        g ! , (       d  f       g = f)
Nr  r  r   r  r  r  r  r  r  )	r   rM  warnsrR  r   r   r   r   r4   r  s       r(   test_outside_bounds_warning1TestBoundedNelderMead.test_outside_bounds_warningD  s^     |D\\+W5bffWcNS#J7FTXXQx)"$ 655r  r1   N)r\   r]   r^   r_   rM  r  r  r   r   r   r   r    r   r  r
  r  rP  r  rb   r1   r,   r(   r  r    s    [[_%rvvgrvv6
8J8JK%rvvgt4tTlC%c2662S#J?%sCj3*=BxH !<!<	5	6$ [[ - .$.$r,   r  )$numpyr   rM  scipy.linalgr   scipy.sparser   numpy.testingr   r   r   r   scipy.optimizer	   r
   r   r   r   r   r   r   rd   r   r   r   r   r   r   r   r7  r  r  r  r  r  r  r1   r,   r(   <module>r     s      # #. .# # #*9 *9Z39 39l,9 ,9^+A +A\+ +\/Z /,.
 ."4z 44|? |?~H! H!T2N 2Nj	1 8FG?(=$ =$r,   