
    ЏkhO                        d Z ddlmZ ddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZ ddlmZ ddlZddlZdd	lmZ d
dlmZ ej.                  ej0                  ej2                  ej4                  ej6                  ej8                  ej:                  dZej.                  ej6                  ej8                  ej:                  dZd Z g de _!        i e _"        i e _#        i e _$        d Z%g de%_!        ej2                  ej4                  de%_"        i e%_#        i e%_$        d Z&g de&_!        i e&_"        i e&_#        i e&_$        d Z'g de'_!        i e'_"        i e'_#        i e'_$        d Z(ddge(_!        ej2                  ej4                  ej0                  de(_"        dhe(_#        h de(_$        d Z)g de)_!        ej4                  ej2                  ej0                  de)_"        d dhe)_#        dhe)_$        d! Z*d"d#ge*_!        ej4                  ej2                  ej0                  de*_"        i e*_#        i e*_$         G d$ d%      Z+ G d& d'      Z, G d( d)      Z- G d* d+      Z. G d, d-      Z/y).zA Unit tests for nonlinear solvers
Author: Ondrej Certik
May 2007
    )assert_N)partial)_nonlinroot)	csr_array)diagdot)invminres   )pressure_network)andersondiagbroydenlinearmixingexcitingmixingbroyden1broyden2krylov)r   r   r   r   c                     t        j                  |       j                  } t        g d      }d}| | z  |t	        | j                  | z        z  | z  z
  }|S )N)      g      ?r         ?{Gz?)npasarrayTr   float)xdcfs       \/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_nonlin.pyFr$   "   sN    


1A !AA	
QU1337^#a''AH    )r   r   r   r   r   c                     | S N r   s    r#   F2r*   0       Hr%   )r   r   r            )r   r   c                     | S r'   r(   r)   s    r#   F2_luckyr0   ;   r+   r%   )r   r   r   r   r   r   c                 |    t        j                  g dg dg dg      }t        j                  g d      }|| z  |z
  S )N)r           )r   r2   r   )r   r   r2   )r   r         @)r   arrayr   Abs      r#   F3r9   E   s3    
+z:67A
Aq519r%   )r   r   r   c                     d}|| d   z  | d   z  dz
  t        j                  | d          t        j                  | d          z   dd|z  z   z
  gS )Ng     @r   r   )r   exp)r   r7   s     r#   	F4_powellr<   Q   sT    AadF1Q4K!ORVVQqTE]RVVQqTE]:a!A#gFGGr%   r2   )r   r   r   r   >   cgsgmrestfqmrr   bicgstabc                 F    t        | dt        j                  g d            S )Nr,   )r   r   r   r   )r   r   r5   r)   s    r#   F5rC   a   s    Aq"((+;"<==r%   )       @r   r   r   )r   r   r   r>   c           	      (   | \  }}t        j                  ddgddgg      }t        j                  |dz   |dz  dz
  z  dz   t        j                  |t        j                  |      z  d	z
        g      }t         j                  j                  ||       S )
Ng/$gffffff-@g+,?grD0?r   r-         r   )r   r5   sinr;   linalgsolve)r   x1x2J0vs        r#   F6rO   p   s    FB	FD>z*, 
-B
26b!eai(3.&&bffRj1,-/ 	0AIIOOB"""r%   g      gffffff?c                   r   e Zd ZdZddZddZej                  j                  d        Z	ej                  j                  d      d        Zej                  j                  d      ej                  j                  dg d      d	               Zej                  j                  d      d
        Zd Zd Zd Zy)
TestNonlinz
    Check the Broyden methods for a few test problems.

    broyden1, broyden2, and newton_krylov must succeed for
    all functions. Some of the others don't -- tests in KNOWN_BAD are skipped.

    c           
      |   |t         d   k(  rddD ]_  }||j                  v r |||j                  |d |dd      }t        t	        j
                   ||            j                         |k         a  |||j                  |dd      }t        t	        j
                   ||            j                         |k         y )Nr   r?   rA   r>   r   r@      r   )methodline_searchf_tolmaxiterverbose)rW   rX   rY   )SOLVERSJAC_KSP_BADxinr   r   absolutemax)selfr"   funcrW   rU   r   s         r#   _check_nonlin_funczTestNonlin._check_nonlin_func   s    78$$I 9Q]]*AEE&d$c1>AaD)--/%789 AEEQ?AaD!%%'%/0r%   c                    |dk(  rodD ]j  }||j                   v rt        ||j                  ||ddd|id      }t        t	        j
                  |j                        j                         |k         l t        ||j                  ||ddd      }t        t	        j
                  |j                        j                         |k         y )	Nr   rS   rT   r   rU   )ftolrX   dispjac_optionsrU   options)rc   rX   rd   )ROOT_JAC_KSP_BADr   r\   r   r   r]   funr^   )r_   r"   rU   rW   
jac_methodress         r#   _check_rootzTestNonlin._check_root   s    XM <
!3!331aeeF,1c,-4<j3I$KL CGG,002U:;< 1aeeF$)c1EGCGG$((*U23r%   c                      y r'   r(   )r_   akws      r#   _check_func_failzTestNonlin._check_func_fail   s    r%   zignore::DeprecationWarningc                 8   t         t        t        t        t        t
        t        fD ]r  }t        j                         D ]Y  }||j                  j                         v r)|t        j                         v r| j                  ||       H| j                  ||       [ t y r'   )r$   r*   r0   r9   r<   rC   rO   rZ   values	KNOWN_BAD	MUST_WORKrp   ra   )r_   r"   r`   s      r#   test_problem_nonlinzTestNonlin.test_problem_nonlin   s    R2y"b9 	1A( 11;;--//y//11--a6''401	1r%   rU   )lgmresr?   rA   r>   r   r@   c           	           d _          fd}t        j                  t        t        j                  |ddd|       t         j                          y )NFc                 X    d_         t        j                  |       j                         S )NT)_tol_norm_usedr   r]   r^   )r   r_   s    r#   local_norm_funcz8TestNonlin.test_tol_norm_called.<locals>.local_norm_func   s"    "&D;;q>%%''r%   r   rT   r   )rU   rW   rX   rY   tol_norm)ry   nonlinnewton_krylovr$   r\   r   )r_   rU   rz   s   `  r#   test_tol_norm_calledzTestNonlin.test_tol_norm_called   sF    
 $	( 	QfD%(!&5	7 	##$r%   c                     t         t        t        t        t        t
        t        fD ]H  }t        D ]=  }||j                  v r|t        v r| j                  ||       ,| j                  ||       ? J y r'   )r$   r*   r0   r9   r<   rC   rO   rZ   rs   rt   rp   rl   )r_   r"   meths      r#   test_problem_rootzTestNonlin.test_problem_root   sf    R2y"b9 	*A *1;;&y(--a6  D)*	*r%   c                     d }t        j                  t        j                  j                        5  t        j                  |dgd       d d d        y # 1 sw Y   y xY w)Nc                     d| z   S )Ng     @@r(   r)   s    r#   wont_convergez5TestNonlin.test_no_convergence.<locals>.wont_converge   s    7Nr%   r   r   )r\   rX   )pytestraisesscipyoptimizeNoConvergencer|   r}   )r_   r   s     r#   test_no_convergencezTestNonlin.test_no_convergence   sL    	 ]]5>>778 	D  QCC	D 	D 	Ds   AAc                 n   t        j                  t        d      5  t        j                  t
        t
        j                  dd       ddd       t        j                  t
        t
        j                  ddd 	       d
 }t        j                  t
        t
        j                  |       y# 1 sw Y   dxY w)a  
        Test for ENH #21986, for behavior of `nonlin.newton_krylov`
        Test the following scenarios:
        1. Raise warning for invalid inner param
        2. No warning for valid inner param
        3. No warning for user-provided callable method
        z'Please check inner method documentationmatchr   h㈵>)rU   
inner_atolNd   c                      y)N.r(   )_s    r#   <lambda>z>TestNonlin.test_warnings_invalid_inner_param.<locals>.<lambda>   s    r%   )rU   inner_maxiterinner_callbackc                     t        | |fi |S )z2A dummy user-provided callable method for testing.r   )oprhskwargss      r#   'user_provided_callable_method_enh_21986z]TestNonlin.test_warnings_invalid_inner_param.<locals>.user_provided_callable_method_enh_21986   s     "c,V,,r%   )rU   )r   warnsUserWarningr|   r}   r$   r\   )r_   r   s     r#   !test_warnings_invalid_inner_paramz,TestNonlin.test_warnings_invalid_inner_param   s     \\+ IK 	M  AEE(tL	M 	Qhc-;	=	-
 	Q$K	M	M 	Ms   ,B++B4c                     t        j                  t        d      5  t        j                  t
        t
        j                  dd       d d d        y # 1 sw Y   y xY w)NzUnknown parameterr   r   r   )rU   invalid_param)r   r   
ValueErrorr|   r}   r$   r\   r_   s    r#   test_non_inner_prefixz TestNonlin.test_non_inner_prefix   sF    ]]:!4 	P   AEE($O		P 	P 	Ps   ,AAN)r   )__name__
__module____qualname____doc__ra   rl   r   markxfailrp   filterwarningsru   parametrizer~   r   r   r   r   r(   r%   r#   rQ   rQ      s    14" [[  [[ <=1 >1 [[ <=[[X (; <%< >% [[ <=* >*DM8Pr%   rQ   c                      e Zd ZdZ ej
                  g d       ej
                  g d       ej
                  g d       ej
                  g d       ej
                  g d       ej
                  g d       ej
                  g d       ej
                  g d	      gZeD  cg c]
  }|d
z  dz
   c}} ZddZd Z	d Z
d Zd Zd Zyc c}} w )
TestSecantzDCheck that some Jacobian approximations satisfy the secant condition)      ?rD   r4         @      @)rD   r4   r   r   r   )r4   r   r   r   rD   )r   r   r   rD   r4   )      "@r   r   r   r4   )r3   r   r   r   r4   )r   r         @r   r   )r   rD   r   r   r   r   r   c           
      J    |di |}|j                  | j                  d   | j                  d   d       t        t	        | j                  dd | j                  dd             D ];  \  }\  }}|j                  ||       t        t        ||dz               D ]  }| j                  ||z
  dz      | j                  ||z
     z
  }	| j                  ||z
  dz      | j                  ||z
     z
  }
t        t        j                  |	|j                  |
                    ||k\  s| j                  ||z
  dz      | j                  ||z
     z
  }	| j                  ||z
  dz      | j                  ||z
     z
  }
t        t        j                  |	|j                  |
                    > y)z|
        Check that the given Jacobian approximation satisfies secant
        conditions for last `npoints` points.
        r   Nr   r(   )setupxsfs	enumeratezipupdaterangeminr   r   allcloserJ   )r_   jac_clsnpointsro   jacjr   r"   kdxdfs              r#   _check_secantzTestSecant._check_secant  sq   
 mm		$''!*dggaj$/"3twwqr{DGGABK#@A 	<IAv1JJq!3w!,- 8WWQqSU^dggacl2WWQqSU^dggacl2B		"678 G|WWQwYq[)DGGAgI,>>WWQwYq[)DGGAgI,>>BKKCIIbM::;	<r%   c                 B    | j                  t        j                         y r'   )r   r|   BroydenFirstr   s    r#   test_broyden1zTestSecant.test_broyden1#  s    6../r%   c                 B    | j                  t        j                         y r'   )r   r|   BroydenSecondr   s    r#   test_broyden2zTestSecant.test_broyden2&  s    6//0r%   c           	      Z   t        j                  d      }|j                  | j                  d   | j                  d   d        t        j                  d      dz  }t        t        | j                  dd  | j                  dd              D ]  \  }\  }}|| j                  |   z
  }|| j                  |   z
  }||t        ||      z
  d d d f   |d d d f   z  t        ||      z  z  }|j                  ||       t        t        j                  |j                         |dd	              y )
N皙?alphar   r-   g      $r   绽|=vIh%<=rtolatol)r|   r   r   r   r   r   identityr   r   r	   r   r   r   todense)r_   r   Blast_jr   r"   r   r   s           r#   test_broyden1_updatezTestSecant.test_broyden1_update)  s   !!,		$''!*dggaj$/KKNf%'DGGABK(EF 	KNFFQTWWV_$BTWWV_$B"s1bz/1d7+bqk9CBKGGAJJq!BKKqu5IJ	Kr%   c           	      l   t        j                  d      }|j                  | j                  d   | j                  d   d        t        j                  d      dz  }t        t        | j                  dd  | j                  dd              D ]  \  }\  }}|| j                  |   z
  }|| j                  |   z
  }||t        ||      z
  d d d f   |d d d f   z  t        ||      z  z  }|j                  ||       t        t        j                  |j                         t        |      dd	              y )
Nr   r   r   r-   gr   r   r   r   )r|   r   r   r   r   r   r   r   r   r	   r   r   r   r   r
   )r_   r   Hr   r   r"   r   r   s           r#   test_broyden2_updatezTestSecant.test_broyden2_update7  s   ""-		$''!*dggaj$/KKNd#'DGGABK(EF 	PNFFQTWWV_$BTWWV_$B"s1bz/1d7+bqk9CBKGGAJJq!BKKs1vENO	Pr%   c                 J    | j                  t        j                  ddd       y )Nr   r   )Mw0r   )r   r|   Andersonr   s    r#   test_andersonzTestSecant.test_andersonE  s    
 	6??aAqAr%   N)r   )r   r   r   r   r   r5   r   r   r   r   r   r   r   r   ).0r   s   00r#   r   r     s    N
"(('
(
"(('
(
"(('
(
"(('
(
"(('
(
"(('
(
"(('
(
"(('
(
+B 	q!Q$(	B<*01KPBs 
 s   &Cr   c                   B    e Zd ZdZddZd Zd Zd Zd Zd Z	d Z
d	 Zy
)
TestLinearz]Solve a linear equation;
    some methods find the exact solution in a finite number of stepsc           	      "  	 t         j                  j                  d       t         j                  j                  ||      |r&dt         j                  j                  ||      z  z   t         j                  j                  |      	|r%	dt         j                  j                  |      z  z   		fd}t	        j
                  |t        j                  |      ||dd d      }t        t        j                  t        |      	d             y )N{                 ?c                 "    t        |       z
  S r'   r	   r6   s    r#   r`   zTestLinear._check.<locals>.func[  s    q!9q= r%   ư>r   rX   rW   rV   rY   r   )
r   randomseedrandnr|   nonlin_solvezerosr   r   r	   )
r_   r   NrX   complexro   r`   solr7   r8   s
           @@r#   _checkzTestLinear._checkQ  s    
		sIIOOAq!Bryyq!,,,AIIOOABryyq)))A	! !!$S'(,$KC3K67r%   c                     | j                  t        j                  d      ddd       | j                  t        j                  d      ddd       y Nr   r      )   FT)r   r|   r   r   s    r#   r   zTestLinear.test_broyden1b  s<    F''c2BEBF''c2BDAr%   c                     | j                  t        j                  d      ddd       | j                  t        j                  d      ddd       y r   )r   r|   r   r   s    r#   r   zTestLinear.test_broyden2g  s<    F((s3RUCF((s3RTBr%   c                     | j                  t        j                  dd      ddd       | j                  t        j                  dd      ddd       y )N2   r   )r   r   r      FT)r   r|   r   r   s    r#   r   zTestLinear.test_andersonl  s<    FOOb4b"eDFOOb4b"dCr%   c                     | j                  t        j                  dddd       | j                  t        j                  dddd       y )Nr   r   F
   )inner_mT)r   r|   KrylovJacobianr   s    r#   test_krylovzTestLinear.test_krylovq  s:    F))2q%DF))2q$Cr%   c           	         fd}fd}t        j                  |t        j                  j                  d         |ddd d      }t        j
                  j                  |z  d       t        j                  |t        j                  j                  d         ddd d      }t        j
                  j                  |z  d       y )Nc                 ,    j                  |       z
  S r'   r   r6   s    r#   r`   z'TestLinear._check_autojac.<locals>.funcw  s    558a<r%   c                     S r'   r(   )rN   r7   s    r#   r   z&TestLinear._check_autojac.<locals>.jacz  s    Hr%   r   r   r   r   r   )r|   r   r   r   shapetestingassert_allclose)r_   r7   r8   r`   r   r   s    ``   r#   _check_autojaczTestLinear._check_autojacv  s    	 	 !!$(<c1(,$K


""1s7AD"9!!$(<a(,$K


""1s7AD"9r%   c                     t        ddgddgg      }t        j                  ddg      }| j                  ||       | j                  d|z  d|z         y Nr   r   r=   y      ?       @y       @       @)r   r   r5   r  r_   r7   r8   s      r#   test_jac_sparsezTestLinear.test_jac_sparse  sS    1v1v&'HHaWAq!VqL6Q,7r%   c                     t        j                  ddgddgg      }t        j                  ddg      }| j                  ||       | j                  d|z  d|z         y r	  )r   r5   r  r
  s      r#   test_jac_ndarrayzTestLinear.test_jac_ndarray  sW    HHq!fq!f%&HHaWAq!VqL6Q,7r%   N)F)r   r   r   r   r   r   r   r   r   r  r  r  r(   r%   r#   r   r   M  s4    H8"B
C
D
D
:88r%   r   c                   |    e Zd ZdZddZddZd Zd Zd Zd Z	d	 Z
d
 Zej                  j                  d        Zy)TestJacobianDotSolvezP
    Check that solve/dot methods in Jacobian approximations are consistent
    Nc                 @    |dz  dz
  t        j                  ||      z   S )Nr   r   )r   r	   )r_   r   r7   s      r#   _funczTestJacobianDotSolve._func  s    !tax"&&A,&&r%   c                    t         j                  j                  d      d}fd}fd} |||      }j                  |      }	 |di |}
|
j	                  |	| j                  |	|      t        | j
                  |             t        d|z        D ]5  } ||      }t        |
d      rMt        j                  |
      }t        |
d      r;|
j                  |      }t         j                  j                  ||      } |||d	       t        |
d
      rS|
j                  |      }t         j                  j                  |j                  j                         |      } |||d       t        |
d      r1|
j                  |      }t        j                   ||      } |||d       t        |
d      rI|
j#                  |      }t        j                   |j                  j                         |      } |||d       t        |
d      rGt        |
d      r;|
j                  |      }|
j                  |
j                  |            } |||d       t        |
d      rGt        |
d
      r;|
j#                  |      }|
j#                  |
j                  |            } |||d        ||      }|
j%                  || j                  ||             8 y )Nr   rF   c                  T     j                   |  }r|d j                   |  z  z   }|S )Nr   )rand)rn   qr   rngs     r#   r  z-TestJacobianDotSolve._check_dot.<locals>.rand  s2    !A8388Q<'Hr%   c                     t        | |z
        j                         }t        |      j                         z  z   }||kD  rt        | d|d      y )Nz: err g)absr^   AssertionError)rn   r8   msgr    r"   tols        r#   assert_closez5TestJacobianDotSolve._check_dot.<locals>.assert_close  sT    AE
 Ac!fjjl3&&A1u$uF1Q%%899 r%   )r7   r   	__array__rJ   zsolve vs arrayrsolvezrsolve vs arraymatveczdot vs arrayrmatveczrmatvec vs arrayzdot vs solvezrmatvec vs rsolver(   )r   r   RandomStater  r   r  r   r   hasattrr5   rJ   rI   r  r   conjr   r	   r!  r   )r_   r   r   r  ro   r   r  r  r7   x0r   r   rN   JdGvGv2JvJv2r   r  s     ``               @r#   
_check_dotzTestJacobianDotSolve._check_dot  s>   ii##C(		: AJ XXa[mm		"djjQ'q)AB qs !	,AQAsK(XXc]3(1B))//"a0C S*:;3)AB))//"$$))+q9C S*;<3)AB&&Q-C S.93	*QB&&a0C S*<=sH%'#w*?ZZ]ii

2/Rn5sI&73+A[[^kk#**R.1R&9:QAJJq$**Q*+C!	,r%   c                     | j                  t        j                  d       | j                  t        j                  d       y NF)r   T)r+  r|   r   r   s    r#   r   z"TestJacobianDotSolve.test_broyden1  .    ++U;++T:r%   c                     | j                  t        j                  d       | j                  t        j                  d       y r-  )r+  r|   r   r   s    r#   r   z"TestJacobianDotSolve.test_broyden2  s.    ,,e<,,d;r%   c                     | j                  t        j                  d       | j                  t        j                  d       y r-  )r+  r|   r   r   s    r#   r   z"TestJacobianDotSolve.test_anderson  s*    76r%   c                     | j                  t        j                  d       | j                  t        j                  d       y r-  )r+  r|   DiagBroydenr   s    r#   test_diagbroydenz%TestJacobianDotSolve.test_diagbroyden  s.    **E:**D9r%   c                     | j                  t        j                  d       | j                  t        j                  d       y r-  )r+  r|   LinearMixingr   s    r#   test_linearmixingz&TestJacobianDotSolve.test_linearmixing  r.  r%   c                     | j                  t        j                  d       | j                  t        j                  d       y r-  )r+  r|   ExcitingMixingr   s    r#   test_excitingmixingz(TestJacobianDotSolve.test_excitingmixing  s.    --u=--t<r%   c                     | j                  t        j                  dd       | j                  t        j                  dd       y )NFgMbP?)r   r  T)r+  r|   r   r   s    r#   r   z TestJacobianDotSolve.test_krylov  s2    --u$G--tFr%   r'   )Fr   )r   r   r   r   r  r+  r   r   r   r3  r6  r9  r   r   thread_unsafer   r(   r%   r#   r  r    sP    ':,x;<7:;= [[G Gr%   r  c                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestNonlinOldTestsz Test case for a simple constrained entropy maximization problem
    (the machine translation example of Berger et al in
    Computational Linguistics, vol 22, num 1, pp 39--72, 1996.)
    c                     t        j                  t        t        j                  dd      }t	        t        j
                  |      dk         t	        t        j
                  t        |            dk         y N   r   iterr   &.>)r|   r   r$   r\   r   normr_   r   s     r#   r   z TestNonlinOldTests.test_broyden1  I    OOAquu2Q7A%&AaD!D()r%   c                     t        j                  t        t        j                  dd      }t	        t        j
                  |      dk         t	        t        j
                  t        |            dk         y r?  )r|   r   r$   r\   r   rD  rE  s     r#   r   z TestNonlinOldTests.test_broyden2  rF  r%   c                     t        j                  t        t        j                  ddd      }t	        t        j
                  |      dk         y )Nr@  Q?r-   )rB  r   r   Q?)r|   r   r$   r\   r   rD  rE  s     r#   r   z TestNonlinOldTests.test_anderson  s1    OOAquu2TQ?A%&r%   c                     t        j                  t        t        j                  dd      }t	        t        j
                  |      dk         t	        t        j
                  t        |            dk         y )N<   r   rA  Hz>)r|   r   r$   r\   r   rD  rE  s     r#   r6  z$TestNonlinOldTests.test_linearmixing  sK    155r=A%&AaD!D()r%   c                     t        j                  t        t        j                  dd      }t	        t        j
                  |      dk         t	        t        j
                  t        |            dk         y )Nr   r   rA  r   )r|   r   r$   r\   r   rD  rE  s     r#   test_excitingz TestNonlinOldTests.test_exciting  sK    !!!QUU3?A%&AaD!D()r%   c                     t        j                  t        t        j                  dd      }t	        t        j
                  |      dk         t	        t        j
                  t        |            dk         y )N   r   rA  :0yE>)r|   r   r$   r\   r   rD  rE  s     r#   r3  z#TestNonlinOldTests.test_diagbroyden  sK    q!%%b:A%&AaD!D()r%   c                     t        t        t        j                  ddddid      }t        t	        j
                  |j                        dk         t        t	        j
                  |j                        dk         y )Nr   r@  r   r   nitre   rf   rC  r   r$   r\   r   r|   rD  r   ri   r_   rk   s     r#   test_root_broyden1z%TestNonlinOldTests.test_root_broyden1  W    1aeeJ#%wlCECEE"T)*CGG$t+,r%   c                     t        t        t        j                  ddddid      }t        t	        j
                  |j                        dk         t        t	        j
                  |j                        dk         y )Nr   r@  r   r   rT  rf   rC  rV  rW  s     r#   test_root_broyden2z%TestNonlinOldTests.test_root_broyden2  rY  r%   c           	          t        t        t        j                  dddddd      }t        t	        j
                  |j                        dk         y )	Nr   r@  rI  r-   )r   r   rT  rf   rJ  )r   r$   r\   r   r|   rD  r   rW  s     r#   test_root_andersonz%TestNonlinOldTests.test_root_anderson#  sD    1aeeJ#%59+BDE 	CEE"T)*r%   c                     t        t        t        j                  ddddid      }t        t	        j
                  |j                        dk         t        t	        j
                  |j                        dk         y )Nr   rL  r   r   rT  rf   rM  rV  rW  s     r#   test_root_linearmixingz)TestNonlinOldTests.test_root_linearmixing)  s[    1aeeN#%,3S>;< 	CEE"T)*CGG$t+,r%   c                     t        t        t        j                  ddddid      }t        t	        j
                  |j                        dk         t        t	        j
                  |j                        dk         y )Nr   r   r   r   rT  rf   r   rV  rW  s     r#   test_root_excitingmixingz+TestNonlinOldTests.test_root_excitingmixing0  s\    1aee$4#%,3S>;< 	CEE"T)*CGG$t+,r%   c                     t        t        t        j                  ddddid      }t        t	        j
                  |j                        dk         t        t	        j
                  |j                        dk         y )Nr   rQ  r   r   rT  rf   rR  rV  rW  s     r#   test_root_diagbroydenz(TestNonlinOldTests.test_root_diagbroyden7  s[    1aeeM#%,3Q<9: 	CEE"T)*CGG$t+,r%   N)r   r   r   r   r   r   r   r6  rO  r3  rX  r[  r]  r_  ra  rc  r(   r%   r#   r=  r=    sC    
*
*
'*
*
*
--+---r%   r=  )0r   numpy.testingr   r   	functoolsr   scipy.optimizer   r|   r   scipy.sparser   numpyr   r	   numpy.linalgr
   r   r   scipy.sparse.linalgr   test_minpackr   r   r   r   r   r   r   r}   rZ   rt   r$   r\   rs   r[   rh   r*   r0   r9   r<   rC   rO   rQ   r   r   r  r=  r(   r%   r#   <module>rl     s\   "   2 "     & * ,,!..#22))+  fooF4H4HJ	 	  
 & 3 3"("7"79  "    
 H
 R	'-':':)/)>)>&,&8&8:	  "
	 L	 > 
"("7"7 & 3 3%113 "j # "("7"7 & 3 3%113  xP xPvIB IBXB8 B8J_G _GDH- H-r%   