
    (ph=                     p    S r SSKrSSKrSSKJrJrJr  SSKJ	r	J
r
JrJrJr   " S S5      r " S S5      rg)	z5
Unit tests for trust-region optimization routines.

    N)assert_assert_equalassert_allclose)minimizerosen	rosen_der
rosen_hessrosen_hess_prodc                   $    \ rS rSrSrS rS rSrg)Accumulator   zThis is for testing callbacks.c                      SU l         S U l        g )Nr   )countaccumselfs    X/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_trustregion.py__init__Accumulator.__init__   s    

    c                     U =R                   S-  sl         U R                  c  [        R                  " U5      U l        g U =R                  U-  sl        g )N   )r   r   nparray)r   xs     r   __call__Accumulator.__call__   s5    

a
::!DJJJ!OJr   )r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__ r   r   r   r      s    )r   r   c                   |    \ rS rSrS rS rS r\R                  R                  S 5       r
S rS rS rS	 rS
 rSrg)TestTrustRegionSolvers   c                 :    SS/U l         SS/U l        SS/U l        g )Ng      ?g       @g333333)x_opt
easy_guess
hard_guessr   s    r   setup_method#TestTrustRegionSolvers.setup_method   s#    3Z
*+r   c           
          U R                   n[        [        U[        [        SSSS0S9n[        XS   S   5        [        US   US   S	   5        [        US   U R                  5        g )
N:0yE>dogleg
return_allTjachesstolmethodoptionsallvecsr   r   )r+   r   r   r   r	   r   r)   r   x0rs      r   test_dogleg_accuracy+TestTrustRegionSolvers.test_dogleg_accuracy!   sc    __UBIJD$|T.BEiLO,#)R 01#

+r   c                 B   [        5       nSn[        [        U R                  [        [
        USSUS.S9n[        UR                  U5        [        [        US   5      US-   5        [        US   US   S	   5        [        [        US   SS  5      UR                  5        g )
N   r0   T)r1   maxiter)r3   r4   callbackr6   r7   r8   r   r   r9   )r   r   r   r+   r   r	   r   r   lenr   sumr   )r   accumulatorrA   r<   s       r   test_dogleg_callback+TestTrustRegionSolvers.test_dogleg_callback*   s    !mUDOO)(,0WEH 	[&&0S9&	2#)R 01AiL,-{/@/@Ar   c                     [         R                  " [        SS9   [        [        U R
                  [        [        SSSS.S9  S S S 5        g ! , (       d  f       g = f)NzMaximum number of iterations)matchr0   Tr   )disprA   )r3   r4   r6   r7   )pytestwarnsRuntimeWarningr   r   r+   r   r	   r   s    r   test_dogleg_user_warning/TestTrustRegionSolvers.test_dogleg_user_warning6   sF    \\. ?AUDOO$X&*q9=A A As   (A
Ac                 B   [         n[        n[        nU R                  U R                  4 H  n[        XX#SSSS0S9n[        XX#SSSS0S9n[        XX#SSSS0S9n[        XX#SSSS0S9n[        XX#SS	SS0S9n	[        U R                  US
   5        [        U R                  US
   5        [        U R                  US
   5        [        U R                  US
   5        [        U R                  U	S
   5        [        [        US   5      [        US   5      :  5        M     g )Nr/   r0   r1   Tr2   	trust-ncgtrust-krylovz	newton-cgtrust-exactr   r8   )
r   r   r	   r*   r+   r   r   r)   r   rC   )
r   fghr;   r_doglegr_trust_ncgr_trust_krylovr_ncgr_iteratives
             r   test_solver_concordance.TestTrustRegionSolvers.test_solver_concordance>   s8   
 ??DOO4B1$'/,9MOH"1aT*5,8$+?AK &a*8,8$+?AN Qt$/,9MOE"1aT*7,8$+?AK DJJ6DJJC(89DJJs(;<DJJc
3DJJC(89C+,s53C/DDE' 5r   c           
          U R                   U R                  U R                  4 H6  n[        [        U[
        [        SSS9n[        U R                  US   5        M8     g )Nr/   rQ   )r3   hesspr5   r6   r   )r*   r+   r)   r   r   r   r
   r   r:   s      r   test_trust_ncg_hessp+TestTrustRegionSolvers.test_trust_ncg_hessp[   sI    ??DOOTZZ@B	!+7ADJJ#/ Ar   c           	      ~    [        [        U R                  [        [        SSS9n[        U R                  US   5        g )Nr/   rQ   r;   r3   r4   r5   r6   r   r   r   r)   r   r	   r   r   r<   s     r   test_trust_ncg_start_in_optimum6TestTrustRegionSolvers.test_trust_ncg_start_in_optimuma   s/    Utzzyzk3

AcF+r   c           	      ~    [        [        U R                  [        [        SSS9n[        U R                  US   5        g )Nr/   rR   rc   r   rd   re   s     r   "test_trust_krylov_start_in_optimum9TestTrustRegionSolvers.test_trust_krylov_start_in_optimumf   s/    Utzzyzn6

AcF+r   c           	      ~    [        [        U R                  [        [        SSS9n[        U R                  US   5        g )Nr/   rS   rc   r   rd   re   s     r   !test_trust_exact_start_in_optimum8TestTrustRegionSolvers.test_trust_exact_start_in_optimumk   s/    Utzzyzm5

AcF+r   )r*   r+   r)   N)r   r   r    r!   r,   r=   rF   rK   markthread_unsaferN   r\   r`   rf   ri   rl   r#   r$   r   r   r&   r&      sJ    &
,
B [[= =F:0,
,
,r   r&   )r"   rK   numpyr   numpy.testingr   r   r   scipy.optimizer   r   r   r	   r
   r   r&   r$   r   r   <module>rs      s8      @ @- - T, T,r   