
    ^Mh*                     H   d dl Z d dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ  ej        dd	gd
dgddgg          Z ej        g d          Z G d d          Z G d d          Z G d dee          Z G d de          Z G d d          ZdS )    N)lstsq)assert_allcloseassert_equalassert_)rand
coo_matrix)aslinearoperator)
lsq_linear)BoundsgS?gv/gJ+gX9vϿgsh|?ſgS㥫?)gl?gMbX9?gPnؿc                   n    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej        j        d	             Zd
 ZdS )	BaseMixinc                 N    t           j                            d          | _        d S )Nr   )nprandomRandomStaternd)selfs    d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_lsq_linear.pysetup_methodzBaseMixin.setup_method   s    9((++    c           	         | j         D ]y}t          t          t          | j        |          }t          |j        t          t          t          d          d                    t          |j        |j        d                    zd S )Nmethod
lsq_solverrcondr   )	lsq_solversr
   Abr   r   xr   unbounded_sol)r   r   ress      r   test_dense_no_boundszBaseMixin.test_dense_no_bounds   sy    * 	9 	9JQ$+*MMMCCE5AR#8#8#8#;<<<CE3#4Q#78888	9 	9r   c           	         t          j        ddg          }t          j        ddg          }t          t          t          d          d         }| j        D ]w}t          t          t          ||f| j        |          }t          |j	        t          t          t          d          d                    t          |j
        d         |           xt          j        dt           j         g          }| j        D ]w}t          t          t          |t           j        f| j        |          }t          |j	        t          j        ddg          d	
           t          |j
        d         |           xt          j        ddg          }| j        D ]w}t          t          t          |t           j        f| j        |          }t          |j	        t          j        ddg          d
           t          |j
        d         |           xt          j        t           j        dg          }| j        D ]v}t          t          t          t           j         |f| j        |          }t          |j	        t          j        ddg                     t          |j
        d         |           wt          j        dt           j        g          }| j        D ]v}t          t          t          t           j         |f| j        |          }t          |j	        t          j        ddg                     t          |j
        d         |           wt          j        ddg          }t          j        ddg          }| j        D ]k}t          t          t          ||f| j        |          }t          |j	        t          j        ddg                     t          |j
        d         |           ld S )Nr   i   r   r   r           g1Vư>atolgԡw?gV瞯<ggUw-r 
su?)r   arrayr   r   r    r   r
   r   r   r!   r"   inf)r   lbubr"   r   r#   s         r   test_dense_boundszBaseMixin.test_dense_bounds   s   Xr3i  Xq!fa"---a0* 	A 	AJQB8DK(24 4 4CCE5AR#8#8#8#;<<<C-a0-@@@@XsRVGn%%* 	A 	AJQB<(24 4 4CCE28S2D,E#F#F!%' ' ' 'C-a0-@@@@Xr1g* 	A 	AJQB<(24 4 4CCE28->,B#C#C!&( ( ( (C-a0-@@@@Xrvrl##* 	A 	AJQRVGR=(24 4 4CCE28-?,D#E#EFFFC-a0-@@@@Xr26l##* 	A 	AJQRVGR=(24 4 4CCE28R1C,D#E#EFFFC-a0-@@@@Xq"gXq!f* 	A 	AJQB8DK(24 4 4CCE28->,C#D#DEEEC-a0-@@@@		A 	Ar   c                    t          j        ddg          }| j                            d          }||z  }t          j        ddg          }t          j        ddg          }||f}t	          ||          }t          |||          }t          |||          }	t          j        |	j        |	j        d                   rJ t          |j        |	j                   d S )Nr&      )   r5   sizer5   r   )
r   r.   r   uniformr   r
   allcloser!   r"   r   )
r   r!   r   r    r0   r1   
bounds_old
bounds_newres_oldres_news
             r   test_bounds_variantszBaseMixin.test_bounds_variantsP   s    HaVH&))aCXq!fXq!f"X
B^^
Q:..Q:..;wy'*?*BCCCCC	79-----r   c                 &   t           j                                        5 }|                    t                     t          j        g dg dg          }d d d            n# 1 swxY w Y   t          j        ddg          }t          ||           d S )N)   r,   r   r5   r4   )
   r&   r   r   r@      )r   testingsuppress_warningsfilterPendingDeprecationWarningmatrixr.   r
   )r   supr   ks       r   test_np_matrixzBaseMixin.test_np_matrix]   s    Z))++ 	CsJJ0111	,,,.@.@.@ABBA	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C Hb"X1as   5A  A$'A$c           	         t          j        ddgg          }t          j        dg          }ddg}ddg}| j        D ]e}t          ||||f| j        |          }t          |j        ddg           t          |j        d         t          ||d	          d                    ft          j        d
dgddgddgg          }t          j        g d          }ddg}ddg}| j        D ]e}t          ||||f| j        |          }t          |j	        dd           t          |j        d         t          ||d	          d                    fd S )NgSӿgZd;Oǿg#~j?皙g?r   r   r   r   gK7A`?gK7A`?gPngPng~jt?g~jt?)g`"gHzG?gJ+?r&   g      gdy=r)   )
r   r.   r   r
   r   r   r!   r"   r   
optimality)r   r   r    r0   r1   r   r#   s          r   test_dense_rank_deficientz#BaseMixin.test_dense_rank_deficiente   s   Hvv&'((HeWD\3Z* 	L 	LJQB8DK(24 4 4CCED$<000C-a0%1B2G2G2G2JKKKKHENVEN
  
 H+++,,WY* 	L 	LJQB8DK(24 4 4CCNAE::::C-a0%1B2G2G2G2JKKKK		L 	Lr   c                 `   t          j        ddg          }t          j        ddg          }t          t          t          ||f| j                  }t          |j        ddg           t          |j        d         t          t          t          d          d                    t          
                    |j                  t          z
  }t          |j        dt          j
        ||          z             t          |j        |           t          |j        d	d
           t          |j        ddg           t!          |j        dk                t!          |j        dk    p
|j        dk               t!          t'          |j        t*                               t!          |j                   d S )Nr   r,   r&   r   r-   r   r   g      ?r'   g-q=r)   rC   r4   )r   r.   r
   r   r    r   r   r!   r"   r   dotcostfunrN   r   active_maskr   nitstatus
isinstancemessagestrsuccess)r   r0   r1   r#   rs        r   test_full_resultzBaseMixin.test_full_result~   sa   Xq"gXq!fABx<<< 126777)!,eAq.C.C.CA.FGGGEE#%LL1#q!"4555###%8888S_q"g..."
a23:?333
3;,,---r   c                     t          j        g dg dg dg          }t          j        g d          }t          ||| j                  }t	          |j        dk                d S )N)gSQcU?gn-(8?g(8?)gڌ?g,?gk,?)g\s`?gAʨY?g Y?)gt\O?v?g"He?gFH{?rQ   gg5_PG>)r   r.   r
   r   r   rS   )r   r   r    results       r   test_almost_singularzBaseMixin.test_almost_singular   s    HIIIIIIIIIKL L
 HHHHJ J Aq555f$%%%%%r   c           	      l   t           j                            d           t          j        t           j                            ddd                    \  }}|dz  }dt           j                            dd||g          z  }dt           j                            dd|g          z  }dt          j        t           j                            ddd|f          d          z  }|d	d d fxx         dz  cc<   t           j                            ||          }|d d |f         }t          |||d
          j        }t          |||d          j        }t          j        ||z  |z
  dz            }	t          j        ||z  |z
  dz            }
t          t          |	|
z
            |
dz  k                d S )Nr   r5     r6         ?ic   )axisr&   bvlsboundsr   trf绽|=)r   r   seedsortrandintchoicer
   r!   sumr   abs)r   nmr   r    rh   wx_bvlsx_trf	cost_bvlscost_trfs              r   test_large_rank_deficientz#BaseMixin.test_large_rank_deficient   s   
	qwry((Dq(99::1	Q")##C1a&#999")##C1##666rwry00b1v0FFQOOOOq!!!t IQ""aaadGAq???A1au===?FAJNQ.//	61u9q=1,--I())HUN:;;;;;r   c                    t          j        g dg dg dg          }t          j        g d          }t          j        g dg dg          }t          |||d          j        }t          |||d	          j        }t          j        ||z  |z
  d
z            }t          j        ||z  |z
  d
z            }t          t          ||z
            |dz  k                d S )N)g     H@g     D@      @)g      3rz   g       )g      *g      $@g     @Q@)g     Dg     Vg     G@)g      ?@g      Fg      :@)g      K@rz   g      <@rf   rg   ri   r5   rj   )r   r.   r
   r!   ro   r   rp   )r   r   r    rh   rt   ru   rv   rw   s           r   test_convergence_small_matrixz'BaseMixin.test_convergence_small_matrix   s	   H)))***)))+ , , H)))**......0 1 1 Aq???A1au===?FAJNQ.//	61u9q=1,--I())HUN:;;;;;r   N)__name__
__module____qualname__r   r$   r2   r>   rK   rO   r]   r`   pytestmarkxslowrx   r{    r   r   r   r      s        , , ,9 9 9/A /A /Ab. . .  L L L2  (
& 
& 
& [< < <*< < < < <r   r   c                   `    e Zd Zd Zej                            d          d             Zd ZdS )SparseMixinc                 T   d}d}t           j                            d          }t          |||          }|                    |          }t          ||          }t          |j        dd           t          |          }t          ||          }t          |j        dd           d S )N  rb   r   random_stater(   r)   )	r   r   r   r   randnr
   r   rN   r	   )r   rr   rq   rngr   r    r#   s          r   test_sparse_and_LinearOperatorz*SparseMixin.test_sparse_and_LinearOperator   s    i##A&&AC(((IIaLLA5555QA555555r   rA   c                    d}d}t           j                            d          }t          |||          }|                    |          }|                    |          }|dz   }t          ||||f          }t          |j        dd           t          ||||fd	d
          }t          |j        dd           t          ||||fd          }t          |j        dd           d S )Nr   rb   r   r   r&   r'   r(   r)   gvIh%<=i  )lsmr_tollsmr_maxiterauto)r   )r   r   r   r   r   r
   r   rN   )	r   rr   rq   r   r   r    r0   r1   r#   s	            r   test_sparse_boundszSparseMixin.test_sparse_bounds   s    i##A&&AC(((IIaLLYYq\\!VABx(($7777ABx%&*, , ,$7777ABx&999$777777r   c                 2   t          j        g d          }t          j        g d          }t          j        g d          }t          |||ffd          }t          |                                t
          d          }t          |t
          d          }t          j        t          d	
          5  t          |j
        |j
                   d d d            n# 1 swxY w Y   t          |t
          dd          }t          |j
        |j
                   d S )N)rc   rc   rc   gzo ?rc   )r   r   r&   r5   r5   )r   r5   r&   r   r5   )r4   r4   )shapeexact)r   lsmr matchrA   r   r   )r   r.   r   r
   toarrayr    r   raisesAssertionErrorr   r!   )r   datarowcolr   	exact_soldefault_lsmr_sol	conv_lsmrs           r   test_sparse_ill_conditionedz'SparseMixin.test_sparse_ill_conditioned   s@   x33344h''h''sCj)888 qyy{{A'BBB	 &av>>>]>444 	= 	=IK)9);<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= q!RHHH		Y[11111s   3CC!CN)	r|   r}   r~   r   r   r   	fail_slowr   r   r   r   r   r   r      s^        6 6 6 [28 8 8$2 2 2 2 2r   r   c                       e Zd ZdZddgZdS )TestTRFri   r   r   Nr|   r}   r~   r   r   r   r   r   r   r      s        FF#KKKr   r   c                       e Zd ZdZdgZdS )TestBVLSrf   r   Nr   r   r   r   r   r      s        F)KKKr   r   c                       e Zd Zd Zd ZdS )TestErrorCheckingc                    t          t          t          dd          }t          t          t          dd          }t          t          t          dd           }d}t          j        t
          |          5  t          t          t          dd          }d d d            n# 1 swxY w Y   t          j        t
          |          5  t          t          t          dd          }d d d            n# 1 swxY w Y   t          j        t
          |          5  t          t          t          dd	          }d d d            d S # 1 swxY w Y   d S )
Nr   g{Gz?)r   r   r   z3`lsmr_tol` must be None, 'auto', or positive float.r   rM   foor&   r
   r   r    r   r   
ValueErrorr   _err_messages      r   test_option_lsmr_tolz&TestErrorChecking.test_option_lsmr_tol  s   q!>>>q!@@@q!>>> L]:[999 	C 	C1aFTBBBA	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C]:[999 	D 	D1aFUCCCA	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D]:[999 	@ 	@1aFQ???A	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s6   5BB#&B#C//C36C3E  EEc                    t          t          t          dd          }t          t          t          dd           }d}t          j        t
          |          5  t          t          t          dd          }d d d            n# 1 swxY w Y   t          j        t
          |          5  t          t          t          dd          }d d d            d S # 1 swxY w Y   d S )Nr   r&   r   z0`lsmr_maxiter` must be None or positive integer.r   r   r   r   r   s      r   test_option_lsmr_maxiterz*TestErrorChecking.test_option_lsmr_maxiter  sj   q!Q???q!TBBB I]:[999 	D 	D1aFCCCA	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D]:[999 	E 	E1aFDDDA	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es$   BB	B(CCCN)r|   r}   r~   r   r   r   r   r   r   r     s:        @ @ @ 
E 
E 
E 
E 
Er   r   )r   numpyr   numpy.linalgr   numpy.testingr   r   r   scipy.sparser   r   scipy.sparse.linalgr	   scipy.optimizer
   scipy.optimize._minimizer   r.   r   r    r   r   r   r   r   r   r   r   <module>r      s              @ @ @ @ @ @ @ @ @ @ ) ) ) ) ) ) ) ) 0 0 0 0 0 0 % % % % % % + + + + + + BH
FOVUO  
 BH###$$m< m< m< m< m< m< m< m<`22 22 22 22 22 22 22 22j$ $ $ $ $i $ $ $
    y   
E E E E E E E E E Er   