
    4[g                     r    d Z ddlZddlmZ ddlmZmZmZm	Z	  edd      Z
 eddd	      Z G d
 d      Zy)z}
Unit tests for Krylov space trust-region subproblem solver.

To run it in its simplest form::
  nosetests test_optimize.py

    N)get_trlib_quadratic_subproblem)assert_assert_almost_equalassert_equalassert_array_almost_equalg:0yE>ư>)	tol_rel_i	tol_rel_bT)r	   r
   dispc                   *    e Zd Zd Zd Zd Zd Zd Zy)TestKrylovQuadraticSubproblemc                 ~   t        j                  g dg dg dg      t        j                  g d      d}t        dd fdd	 fd
      }|j                  |      \  }}t	        |t        j                  g d             t        |d       t        t         j                  j                  j                  |      |j                  |z  z   z         d       t        t         j                  j                  |      |       d}|j                  |      \  }}t	        |t        j                  g d             t        |d       t        t         j                  j                  j                  |      |j                  |z  z   z         d       t        t         j                  j                  |      |       y )N      ?              @r   g       @r   r   r   g      @)g      @r   r   r   r   c                      yNr    xs    g/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_trustregion_krylov.py<lambda>zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>"           c                     S Nr   r   gs    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>#       r   c                      y r   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>$       $r   c                 &    j                  |      S r   dotr   yHs     r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>%       aeeAhr   r   funjachesshessp)      r   r   Tr         ?)gb5m1ݿr   gp돬ӳȿ)nparrayKrylovQPsolver   r   r   linalgnormr'   lamselftrust_radiussubprobphits_boundaryr*   r!   s        @@r   test_for_the_easy_casez4TestKrylovQuadraticSubproblem.test_for_the_easy_case   sY    HHo%%' ( HH_%  Q** .!6	8
 #==6=!!RXX.>%?@]D)		quuQx'++/9A=>	 	BIINN1-|<"==6=!!78	:]D)		quuQx'++/9A=>	 	BIINN1-|<r   c                 N   t        j                  g dg dg dg      t        j                  g d      d}t        dd fdd fd	
      }|j                  |      \  }}t	        |t        j                  g d             t        t         j                  j                  j                  |      |j                  |z  z   z         d       t        t         j                  j                  |      |       d}|j                  |      \  }}t	        |t        j                  g d             t        t         j                  j                  j                  |      |j                  |z  z   z         d       t        t         j                  j                  |      |       y )Nr   r   r   r   r   c                      yr   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>L   r   r   c                     S r   r   r    s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>M   r"   r   c                      y r   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>N   r$   r   c                 &    j                  |      S r   r&   r(   s     r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>O   r+   r   r,   )r   r1   r   r   r2   )r   g      r   )
r3   r4   r5   r6   r   r   r7   r8   r'   r9   r:   s        @@r   test_for_the_hard_casez4TestKrylovQuadraticSubproblem.test_for_the_hard_case>   sB    HHo%%' ( HH_%  Q** .!6	8
 #==6=!!RXX.>%?@		quuQx'++/9A=>	 	BIINN1-|<"==6=!!RXX.>%?@		quuQx'++/9A=>	 	BIINN1-|<r   c                    t        j                  g dg dg dg dg dg      t        j                  g d      d}t        dd	 fd
d fd      }|j                  |      \  }}t	        t         j
                  j                  j                  |      |j                  |z  z   z         d       t        |g d       t        |d       y )N)gno?獞u?,wn)?/K뚘G?)rH   g켮wO@٢yn*?r<8ٿ&Î?)rI   rL   g6
@ĽCԿ8K?)rJ   rM   rO   gc?>ڿ)rK   rN   rP   rQ   g-Q?)g*<sA?gE?gM x?gz?g=޿皙?r   c                      yr   r   r   s    r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>q   r   r   c                     S r   r   r    s    r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>r   r"   r   c                      y r   r   r   s    r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>s   r$   r   c                 &    j                  |      S r   r&   r(   s     r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>t   r+   r   r,   r   )g8b҄gO
L?gp4OF̿g qgo-7?F
r3   r4   r5   r6   r   r7   r8   r'   r9   r   r:   s        @@r   test_for_interior_convergencez;TestKrylovQuadraticSubproblem.test_for_interior_convergencee   s    HHQSRUS	U V
 HHRS Q** .!6	8
 #==6= 			quuQx'++/9A=>	 	"! &? 	@!-7r   c                    t        j                  g dg dg dg dg dg      t        j                  g d      d}t        dd	 fd
d fd      }|j                  |      \  }}t	        t         j
                  j                  j                  |      |j                  |z  z   z         d       t	        t         j
                  j                  |      |       t        |g d       t        |d       y )N)gVaU?`A@5F?9)n@cѿ)rZ   g{.<?~:]?)r[   r^   g@33 5:I)r\   r_   ra   gйTFKտ)r]   r`   rb   rc   g&Rr   r   r   r   r   rR   r   c                      yr   r   r   s    r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>   r   r   c                     S r   r   r    s    r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>   r"   r   c                      y r   r   r   s    r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>   r$   r   c                 &    j                  |      S r   r&   r(   s     r   r   zKTestKrylovQuadraticSubproblem.test_for_very_close_to_zero.<locals>.<lambda>   r+   r   r,   r   )giG7㰱?gl$WgZg-O|οgm/TrW   r:   s        @@r   test_for_very_close_to_zeroz9TestKrylovQuadraticSubproblem.test_for_very_close_to_zero   s    HHTTUUV	X Y
 HH'( Q** .!6	8
 #==6= 			quuQx'++/9A=>	 	BIINN1-|<!! &3 	4 	"-6r   c                 ,  	 t        j                  d       t        j                  g d      	d}t        dd 	fdd fd	      }|j	                  |      \  }}|j                         \  }}t        |j                  d
      t        |             y )N   rd   rR   r   c                      yr   r   r   s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    ar   c                     S r   r   r    s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    ar   c                      y r   r   r   s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    tr   c                 &    j                  |      S r   r&   r(   s     r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    1558r   r,   z  TR Solving trust region problem)	r3   eyer4   KrylovQP_dispr6   
readouterrr   
startswithrepr)
r;   capsysr<   r=   r>   r?   outerrr*   r!   s
           @@r   	test_dispz'TestKrylovQuadraticSubproblem.test_disp   s}    VVAYJHH'(!$/$/%3&;	=
 #==6=$$&SABDINr   N)__name__
__module____qualname__r@   rF   rX   ri   rx   r   r   r   r   r      s    (=T%=N867<Or   r   )__doc__numpyr3   scipy.optimize._trlibr   numpy.testingr   r   r   r   r5   rq   r   r   r   r   <module>r      sK     BD D *DDI.48:XO XOr   