
    {Kg                         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                  j                  dg d      d	        Zy)
    N)fmin_ncg)ConvergenceWarning)assert_array_almost_equal)
_newton_cgc            	         t         j                  j                  d      } | j                  d      t        j                  d      }fd}fdfd}fd}t        t        |||d	
      d   t        |||             y )Nr   )
   r   )sizer   c                 N    j                  |       }d|j                  |      z  S Ng      ?)dot)xAxAs     e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/utils/tests/test_optimize.pyfuncztest_newton_cg.<locals>.func   s#    UU1XbXXb\!!    c                 X    j                   j                  j                  |             S NTr   r   r   s    r   gradztest_newton_cg.<locals>.grad   s    sswwquuQx  r   c                     |j                  j                  j                  j                  | j                                           S r   )r   r   all)r   pr   s     r   hessztest_newton_cg.<locals>.hess   s-    uuQSSWWQUU1557^,--r   c                      |       fdfS )Nc                 X    j                   j                  j                  |             S r   r   r   s    r   <lambda>z3test_newton_cg.<locals>.grad_hess.<locals>.<lambda>   s    !##''!%%("3r    )r   r   r   s    r   	grad_hessz!test_newton_cg.<locals>.grad_hess   s    Aw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-   
   sw     ))


"C


!A	B"!.4 9dD"%8;4BtT:r   verbose)r         c           
      ^   t        j                  d      t        j                  ddgt              t	        fdfdfdt        j
                  j                  d         |       | j                         }|dk(  r|j                  d	k(  sJ g d
}|D ]  }||j                  v rJ  |dk\  rg d}|D ]  }||j                  v r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       | j                         }g d}|D ]  }||j                  v r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       | j                         }dg}|D ]  }||j                  v r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       | j                         }d g}|D ]  }||j                  v r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       | j                         }d'g}|D ]  }||j                  v rJ  yy# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w)(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8r   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    q1uqyr   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6r   c                     | z  z
  S r   r    r7   s    r   r   z*test_newton_cg_verbosity.<locals>.<lambda>U       q1uqyr          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@$Ar   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   $   sN    	q	A
!Qu%A8. 88AGGAJ   "H!|||r!!!
 A$$$  !|
 A$$$  !| HHsAhA'(4/HHc3Z  \\.)@6(88T1I& * $$&
 A$$$ 
 HHsAhI/0HHdAY\\,-@6( . $$&&
 A$$$  FF1IHHdAY\\.)A6(88S#J' * $$&G
 A$$$  GGN#HH^$\\,-@6(<<? . $$&8
 A$$$ g  *), .-* *)& .-s0   &2M=N
+3N2N#=N
NN #N,)numpyr'   r]   scipy.optimizer   sklearn.exceptionsr   sklearn.utils._testingr   sklearn.utils.optimizer   r-   markparametrizerf   r    r   r   <module>rn      sC      # 1 < -4 I.y% /y%r   