
    0Ph                         d dl Zd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d Zej                            dg d          d	             ZdS )
    N)fmin_ncg)ConvergenceWarning)assert_array_almost_equal)
_newton_cgc            	      8   t           j                            d          } |                     d          t          j        d          }fd}fdfd}fd}t          t          |||d	
          d         t          |||                     d S )Nr   )
   r   )sizer   c                 ^                         |           }d|                     |          z  S Ng      ?)dot)xAxAs     a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_optimize.pyfuncztest_newton_cg.<locals>.func   s'    UU1XXbXXb\\!!    c                 ^    j                                                 |                     S NTr   r   r   s    r   gradztest_newton_cg.<locals>.grad   s!    swwquuQxx   r   c                     |                     j                                                  |                                                               S r   )r   r   all)r   pr   s     r   hessztest_newton_cg.<locals>.hess   s5    uuQSWWQUU15577^^,,---r   c                 $     |           fdfS )Nc                 ^    j                                                 |                     S r   r   r   s    r   <lambda>z3test_newton_cg.<locals>.grad_hess.<locals>.<lambda>   s    !#''!%%(("3"3 r    )r   r   r   s    r   	grad_hessz!test_newton_cg.<locals>.grad_hess   s     tAww333333r   g|=)tol)fx0fprimefhess_p)nprandomRandomStatenormalonesr   r   r   )rngr$   r   r   r!   r   r   s        @@r   test_newton_cgr-   
   s     )


"
"C


!!A	B" " " " "! ! ! ! !. . . . .4 4 4 4 4 4 9dD"%888;4BtT:::    r   verbose)r         c           
      T   t          j        d          t          j        ddgt                    t	          fdfdfdt          j        j        d                   |           |                                 }|dk    r|j        d	k    sJ ng d
}|D ]}||j        v sJ |dk    rg d}|D ]}||j        v sJ |dk    rt          j        ddgddgg          dz  t          j        ddg          t          j
        t                    5  t	          fdfdfdt          j        ddg          |           ddd           n# 1 swxY w Y   |                                 }g d}|D ]}||j        v sJ t          j        ddgddgg          t          j        ddg          t          j
        t                    5  t	          fdfdfd|d           ddd           n# 1 swxY w Y   |                                 }dg}|D ]}||j        v sJ t          j        d          t          j        ddg          t          j
        t                    5  t	          fdfdfdt          j        ddg          |d           ddd           n# 1 swxY w Y   |                                 }d g}|D ]}||j        v sJ t          j        g d!          t          j        g d"          t          j
        t                    5  t	          fd#fd$fd%t          j                  |dd&           ddd           n# 1 swxY w Y   |                                 }d'g}|D ]}||j        v sJ dS dS )(z0Test the std output of verbose newton_cg solver.r0   r/   )dtypec                     | z  z
  fdfS )Nc                     | z  S r   r    zr   s    r   r   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>+   s    !a% r   r    r   r   bs    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>+   s    QUQY8 r   c                 &    d| z  z  | z  | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>,   s    sQw{QQ. r   c                     | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>-   s    q1uqy r   r   )r!   r   r   r$   r.    )zNewton-CG iter = 1zCheck Convergencezmax |gradient|zSolver did converge at loss = )z(Inner CG solver iteration 1 stopped withzsum(|residuals|) <= tolzLine Searchztry line search wolfe1z!wolfe1 line search was successfulg      ?   gꌠ9Y>)F       @c                     | z  z
  fdfS )Nc                     | z  S r   r    r5   s    r   r   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>S       !a% r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>S       QUQY$@ r   c                 &    d| z  z  | z  | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>T       sQw{QQ6 r   c                     | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>U       q1uqy r          N)z%wolfe1 line search was not successfulz-check loss |improvement| <= eps * |loss_old|:z,check sum(|gradient|) < sum(|gradient_old|):z#last resort: try line search wolfe2g      @c                     | z  z
  fdfS )Nc                     | z  S r   r    r5   s    r   r   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>i   r@   r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>i   rA   r   c                 &    d| z  z  | z  | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>j   rC   r   c                     | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>k   rE   r   )r!   r   r   r$   r.   maxiterztiny_|p| = eps * ||p||^2c                     | z  z
  fdfS )Nc                      | z  S r   r    r5   s    r   r   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>   s    1"q& r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>   s    QUQY0@0@0@0@$A r   c                 &    d| z  z  | z  | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>   rC   r   c                     | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>   rE   r      z9Inner CG solver iteration 0 fell back to steepest descent)gMbP?r/   g     @@)rF   r/   r=   c                     | z  z
  fdfS )Nc                     | z  S r   r    r5   s    r   r   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>   r@   r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>   rA   r   c                 &    d| z  z  | z  | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>   rC   r   c                     | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>   rE   r   )r!   r   r   r$   r.   rK   maxinnerz*Inner CG solver stopped reaching maxiter=1)r'   eyearrayfloatr   zerosshape
readouterroutpytestwarnsRuntimeWarningr   diag	ones_like)capsysr.   capturedmsgmr   r8   s        @@r   test_newton_cg_verbosityrf   $   s    	q		A
!Qu%%%A88888.....     8AGAJ      ""H!|||r!!!!!
 
 
  	% 	%A$$$$$!||
 
 
  	% 	%A$$$$$!|| HsAhA'((4/Hc3Z   \.)) 	 	@@@@@66666(((((8T1I&&   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $$&&
 
 
  	% 	%A$$$$$ HsAhI/00HdAY\,-- 	 	@@@@@66666(((((   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $$&&&
  	% 	%A$$$$$
 F1IIHdAY\.)) 		 		AAAAA66666(((((8S#J''   		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 $$&&G
  	% 	%A$$$$$GNNN##H^^^$$\,-- 		 		@@@@@66666(((((<??   		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 $$&&8
  	% 	%A$$$$$i |f	% 	%sH   5EE"E"HH	H	:6J<<K K 35M44M8;M8)numpyr'   r]   scipy.optimizer   sklearn.exceptionsr   sklearn.utils._testingr   sklearn.utils.optimizer   r-   markparametrizerf   r    r   r   <module>rn      s         # # # # # # 1 1 1 1 1 1 < < < < < < - - - - - -  4 III..y% y% /.y% y% y%r   