
    ^Mh                         d Z ddl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dS )z>
Unit tests for Krylov space trust-region subproblem solver.

    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                   P    e Zd Zd Zd Zd Zd Zej        j	        d             Z
dS )TestKrylovQuadraticSubproblemc                    t          j        g dg dg dg          t          j        g d          d}t          dd fdd	 fd
          }|                    |          \  }}t	          |t          j        g d                     t          |d           t          t           j                            	                    |          |j
        |z  z   z             d           t          t           j                            |          |           d}|                    |          \  }}t	          |t          j        g d                     t          |d           t          t           j                            	                    |          |j
        |z  z   z             d           t          t           j                            |          |           d S )N      ?              @r   g       @r   r   r   g      @)g      @r   r   r   r   c                     dS Nr    xs    l/var/www/html/test/jupyter/venv/lib/python3.11/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                     d S r   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>"       $ r   c                 .                         |          S r   dotr   yHs     r   r   zFTestKrylovQuadraticSubproblem.test_for_the_easy_case.<locals>.<lambda>#       aeeAhh r   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   s    Hooo%oo%oo' ( ( H___%%  Q*{*{{{ .!6!6!6!6	8 8 8
 #==66=!!RX.>.>.>%?%?@@@]D)))	quuQxx'+/9A=>>	 	 	 	BINN1--|<<<"==66=!!77788	: 	: 	:]D)))	quuQxx'+/9A=>>	 	 	 	BINN1--|<<<<<r   c                    t          j        g dg dg dg          t          j        g d          d}t          dd fdd fd	
          }|                    |          \  }}t	          |t          j        g d                     t          t           j                                                |          |j	        |z  z   z             d           t          t           j                            |          |           d}|                    |          \  }}t	          |t          j        g d                     t          t           j                                                |          |j	        |z  z   z             d           t          t           j                            |          |           d S )Nr   r   r   r   r   c                     dS r   r   r   s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>J   r   r   c                     S r   r   r    s    r   r   zFTestKrylovQuadraticSubproblem.test_for_the_hard_case.<locals>.<lambda>K   r"   r   c                     d S 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   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<   s    Hooo%oo%oo' ( ( H___%%  Q*{*{{{ .!6!6!6!6	8 8 8
 #==66=!!RX.>.>.>%?%?@@@	quuQxx'+/9A=>>	 	 	 	BINN1--|<<<"==66=!!RX.>.>.>%?%?@@@	quuQxx'+/9A=>>	 	 	 	BINN1--|<<<<<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          }|                    |          \  }}t	          t           j                                                |          |j        |z  z   z             d           t          |g d           t          |d           d S )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                     dS r   r   r   s    r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>o   r   r   c                     S r   r   r    s    r   r   zMTestKrylovQuadraticSubproblem.test_for_interior_convergence.<locals>.<lambda>p   r"   r   c                     d S 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   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_convergencec   s6   HQQQSSSRRRUUUSSS	U V V
 HRRRSS Q*{*{{{ .!6!6!6!6	8 8 8
 #==66= 		quuQxx'+/9A=>>	 	 	 	"! &? &? &? 	@ 	@ 	@!-7777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          }|                    |          \  }}t	          t           j                                                |          |j        |z  z   z             d           t	          t           j                            |          |           t          |g d           t          |d           d S )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                     dS 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                     d S 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   r,   r   )giG7㰱?gl$WgZg-O|οgm/TrW   r:   s        @@r   test_for_very_close_to_zeroz9TestKrylovQuadraticSubproblem.test_for_very_close_to_zero~   sS   HTTTTTTUUUUUUVVV	X Y Y
 H'''(( Q*{*{{{ .!6!6!6!6	8 8 8
 #==66= 		quuQxx'+/9A=>>	 	 	 	BINN1--|<<<!! &3 &3 &3 	4 	4 	4 	"-66666r   c                 Z  	 t          j        d           t          j        g d          	d}t          dd 	fdd fd	          }|                    |          \  }}|                                \  }}t          |                    d
          t          |                     d S )N   rd   rR   r   c                     dS r   r   r   s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    a r   c                     S r   r   r    s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    a r   c                     d S r   r   r   s    r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    t r   c                 .                         |          S r   r&   r(   s     r   r   z9TestKrylovQuadraticSubproblem.test_disp.<locals>.<lambda>   s    15588 r   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    VAYYJH'''((!$/K$/KKK%3^&;&;&;&;	= = =
 #==66=$$&&SABBDIINNNNNr   N)__name__
__module____qualname__r@   rF   rX   ri   pytestmarkthread_unsaferx   r   r   r   r   r      sx        (= (= (=T%= %= %=N8 8 867 7 7< [O O O O Or   r   )__doc__r|   numpyr3   scipy.optimize._trlibr   numpy.testingr   r   r   r   r5   rq   r   r   r   r   <module>r      s          B B B B B BD D D D D D D D D D D D *)DDIII..48: : :YO YO YO YO YO YO YO YO YO YOr   