
    ^Mh%                         d dl mZmZmZ d dlmZ d dlZd dl	m
Z
mZmZmZmZmZmZmZmZmZmZ  G d d          Z G d d          Z G d	 d
          Zd Zd ZdS )    )assert_assert_allcloseassert_equal)raisesN)step_size_to_boundfind_active_constraintsmake_strictly_feasibleCL_scaling_vectorintersect_trust_regionbuild_quadratic_1dminimize_quadratic_1devaluate_quadraticreflective_transformationleft_multiplied_operatorright_multiplied_operatorc                   &    e Zd Zd Zd Zd Zd ZdS )
TestBoundsc                    t          j        g d          }t          j        g d          }t          j        g d          }t          j        g d          }t          ||||          \  }}t          |d           t          |g d           t          j        g d          }t          ||||          \  }}t          |d           t          |g d	           t          j        g d
          }t          ||||          \  }}t          |t          j        d                     t          |g d           t          j        g d          }t          ||||          \  }}t          |d           t          |g d           t          j        d          }t          ||||          \  }}t          |t           j                   t          |g d           d S )N)            @      $@)      ?      @      Y@)        r   g      (@)皙?r   r   
   )   r   r   )g{Gz?g?r      )r   r   )r   g-C6r   r   )r   r    r   )r         ?       r   )r   r   r       r   r   r   )nparrayr   r   zerosinf)selflbubxsstephitss          d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_lsq_common.pytest_step_size_to_boundsz#TestBounds.test_step_size_to_bounds   s   X'''((X'''((H%%%&&H___%%'1b"55
dT2T999%%%H'''(('1b"55
dT1T:::&&&H+++,,'1b"55
dT28B<<(((T:::&&&H%%%&&'1b"55
dT3T:::&&&HQKK'1b"55
dT26"""T999%%%%%    c                 "   t          j        g d          }t          j        g d          }t          j        g d          }t          |||          }t          |g d           t          j        g d          }t          |||          }t          |g d           t          |||d          }t          |g d           t          j        g d	          }t          |||          }t          |g d
           t          |||d          }t          |g d           t          j        dt           j         t           j         g          }t          j        t           j        dt           j        g          }t          j        d          }t          |||          }t          |g d           t          j        g d          }t          |||          }t          |g d           t          |||d          }t          |g d           d S )N)r         $r   )r   r   r   )r!                @r$   )r   r   r   )r    r   r   r   rtol)g&.>g:0yEgX@)r   r   r   gA:>)r    r   r   r   r   r#   )r    r   r   )r   g      &@r   )r%   r&   r   r   r(   ones)r)   r*   r+   r,   actives        r0   test_find_active_constraintsz'TestBounds.test_find_active_constraints+   s
   X'''((X'''((H%%%&&(B33VYYY'''H%%%&&(B33VZZZ((((B;;;VZZZ(((H...//(B33VYYY'''(B@@@VZZZ(((XsRVGbfW-..XrvtRV,--GAJJ(B33VZZZ((( H%%%&&(B33VZZZ((((B;;;VZZZ(((((r2   c                 ^   t          j        g d          }t          j        g d          }t          j        g d          }t          |||d          }t          |d         dk               t	          |dd          |dd                     t          |||d          }t	          |g d	           t          j        g d
          }t          |||          }t          t          j        ||k    ||k    z                       t          |||d          }t          t          j        ||k    ||k    z                       t          j        ddg          }t          j        ddg          }t          j        ddg          }t          |||d          }t	          |ddg           d S )N)      gr6   )皙?r   g      @)r=   r   go    @r   )rstepr=   r   g-C6?)g<Nё\߿r   gqh  @)r=   r    g@r    r   g}    Y@g:0yE>g    Y@)r%   r&   r	   r   r   all)r)   r*   r+   r,   x_news        r0   test_make_strictly_feasiblez&TestBounds.test_make_strictly_feasibleP   s   X'''((Xooo&&H+++,,&q"b:::a4   U122Y!""&&&&q"b===U>>>???H___%%&q"b11455666&q"b:::455666Xr5k""Xq-())HaZ  &q"b===UQ011111r2   c                    t          j        t           j         ddt           j         g          }t          j        dt           j        dt           j        g          }t          j        g d          }t          j        g d          }t          ||||          \  }}t	          |g d           t	          |g d           d S )Nr5   r   r   )r!   r6   r   r   )r   r   r4   r   )r   g      @r   r   )r   r   r   r   )r%   r&   r(   r
   r   )r)   r*   r+   r,   gvdvs          r0   test_scaling_vectorzTestBounds.test_scaling_vectorj   s    XwcBF7344XsBFD"&122H)))**H+++,,!!QB//2Q,,,---R.../////r2   N)__name__
__module____qualname__r1   r;   rB   rG    r2   r0   r   r      sQ        & & &<#) #) #)J2 2 240 0 0 0 0r2   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestQuadraticFunctionc                     t          j        ddgddgddgg          | _        t          j        ddg          | _        t          j        ddg          | _        d S )	Nr   皙?r   r   r!   r>   r"   r6   )r%   r&   JrD   diag)r)   s    r0   setup_methodz"TestQuadraticFunction.setup_methodu   s_    #J3K#J   3+&&Hc3Z((			r2   c                 @   t          j        d          }t          | j        | j        |          \  }}t          |d           t          |d           t          | j        | j        || j                  \  }}t          |d           t          |d           t          j        ddg          }t          | j        | j        |          \  }}t          |d           t          |d           t          | j        | j        || j                  \  }}t          |d           t          |d           t          j        d	d	g          }t          | j        | j        || j        |
          \  }}}t          |d           t          |d           t          |d           d S )Nr   r   rQ   r   r   gffffff @gffffff@gffffff@r!   )rQ   s0gQ@gQÿ)	r%   r'   r   rP   rD   r   rQ   r&   r   )r)   r-   abrU   cs         r0   test_build_quadratic_1dz-TestQuadraticFunction.test_build_quadratic_1d}   s   HQKK!$&$&!441QQ!$&$&!$)DDD1QQHc4[!!!$&$&!441QQ!$&$&!$)DDD1QQXsCj!!$TVTVQTY2NNN1aQ4   7#####r2   c                    d}d}t          ||dd          \  }}t          |d           t          |||dz  z  ||z  z   d           t          ||dd          \  }}t          |d           t          |||dz  z  ||z  z   d           t          ||dd          \  }}t          |d           t          |||dz  z  ||z  z   d           d	}t          ||dd|
          \  }}t          |d           t          |||dz  z  ||z  z   |z   d           t          ||t          j         t          j        |
          \  }}t          |d           t          |||dz  z  ||z  z   |z   d           t          ||dt          j        |
          \  }}t          |d           t          |||dz  z  ||z  z   |z   d           t          ||t          j         d|
          \  }}t          |d           t          |||dz  z  ||z  z   |z   d           d}d}t          ||t          j         t          j                  \  }}t          |t          j                    t          ||dt          j                  \  }}t          |t          j                   t          |t          j                    t          ||t          j         d          \  }}t          |t          j                    t          |t          j                    d S )N   r    r   r   gV瞯<r7   r   r   )rX   r   rO   )r   r   r   r%   r(   )r)   rV   rW   tyrX   s         r0   test_minimize_quadratic_1dz0TestQuadraticFunction.test_minimize_quadratic_1d   s#   $Q1a001Q1q!t8a!e+%8888$Q2r221Q1q!t8a!e+%8888$Q2q111Q1q!t8a!e+%8888$Q2qA6661Q1q!t8a!e+a/e<<<<$QBF7BFa@@@1Q1qAv:A-1>>>>$Q1bf:::1Q1qAv:A-1>>>>$QBF7A;;;1Q1qAv:A-1>>>>$QBF7BF;;1Q   $Q1bf551QQ   $QBF7A661Q   Q     r2   c                    t          j        ddg          }t          | j        | j        |          }t          |d           t          | j        | j        || j                  }t          |d           t          j        ddgddgddgg          }t          | j        | j        |          }t          |g d           t          | j        | j        || j                  }t          |g d           d S )	Nr   r   ffffff@rT   ffffff@r   )ra   gQr   )rb   gzG?r   )r%   r&   r   rP   rD   r   rQ   r   )r)   r-   valuevaluess       r0   test_evaluate_quadraticz-TestQuadraticFunction.test_evaluate_quadratic   s    Hc4[!!"4646155UD!!!"4646149EEEUD!!!HsDk3Z3Z! " " $DFDFA66 2 2 2333#DFDFADIFFF 1 1 122222r2   N)rH   rI   rJ   rR   rY   r_   re   rK   r2   r0   rM   rM   t   sQ        ) ) )$ $ $2,! ,! ,!\3 3 3 3 3r2   rM   c                       e Zd Zd ZdS )TestTrustRegionc                    d}t          j        d          }t          j        g d          }t          |||          \  }}t	          |d           t	          |d           t          j        g d          }t          |||          \  }}t          |d           t          |d           t          j        g d	          }t          j        g d
          }t          |||          \  }}t          |d           t          |d           t          j        d          }t          t          t          |||           t          j        d          }t          j        d          }t          t          t          |||           d S )Nr   r#   )r   r   r   r    r   )r   r   r   g3Eyg3Ey?)r!   r=   r   )r   r   r   g;fg;f?)	r%   r'   r&   r   r   r   r9   assert_raises
ValueError)r)   Deltar,   r-   t_negt_poss         r0   test_intersectzTestTrustRegion.test_intersect   s]   HQKKH___%%-aE::uUBUAH&&&''-aE::ux(((w'''H^^^$$H[[[!!-aE::ux(((w'''GAJJj"8!QFFFHQKKHQKKj"8!QFFFFFr2   N)rH   rI   rJ   rn   rK   r2   r0   rg   rg      s(        G G G G Gr2   rg   c                     t          j        ddgt                    } t          j        ddgt                    }t          j        ddg          }t          || |          \  }}t	          ||           t	          |t          j        d                     t          j        dd	gt                    }t          || t          j        t           j        t           j        g                    \  }}t	          |dd	g           t	          |dd
g           t          |t          j        t           j         t           j         g          |          \  }}t	          |ddg           t	          |d
dg           t          || |          \  }}t	          |ddg           t	          |ddg           t          j        t           j         dg          } t          j        dt           j        g          }t          j        ddgt                    }t          || |          \  }}t	          |ddg           t	          |dd
g           d S )Nr    r\   )dtyper[   r#   r   r      r   r   )r%   r&   floatr   r   r9   r(   )r*   r+   r^   r,   rD   s        r0   test_reflective_transformationrt      s   	2r(%	(	(	(B	1a&	&	&	&B
!QA$QB//DAqABGAJJ
"a&&&A$QBHbfbf5E,F,FGGDAqQFRG$Q26'BF71C(D(DbIIDAqRGQG$QB//DAqQFRH	BF7B-	 	 B	1bf+		B
"b'''A$QB//DAqQGRGr2   c                     t          j        d                              d          } t          j        g d          }t          j        |                              |           }t          | |          }t          j        ddg          }|                     t          j        |                    }t          | |          }t          j        ddg          }dt          j        dd	                              d
          z  }t          j        g d          }	t          |                    |          |	                    |                     t          |                    |          |
                    |                     t          |j                            |	          |                    |	                     t          |                    |          |	                    |                     t          |                    |          |
                    |                     t          |j                            |	          |                    |	                     d S )N   )r#   r   )r    r   r[   r[   r   r\   r#   r      )r   r#   )r   r\      )r%   arangereshaper&   rQ   dotr   r   r   matvecmatmatTrmatvec)
Ad_leftDAJ_leftd_rightADJ_rightr,   Xxts
             r0   test_linear_operatorsr     s   
	!V$$AXjjj!!F			Q		B%a00Fh2wG	
rww	 	 B'733G
"aA
RYq!__$$V,,,A	+++		BBFF1IIv}}Q//000BFF1IIv}}Q//000BDHHRLL&.."4"4555BFF1IIw~~a00111BFF1IIw~~a00111BDHHRLL'//""5"566666r2   )numpy.testingr   r   r   pytestr   ri   numpyr%   scipy.optimize._lsq.commonr   r   r	   r
   r   r   r   r   r   r   r   r   rM   rg   rt   r   rK   r2   r0   <module>r      s}   @ @ @ @ @ @ @ @ @ @ * * * * * *    9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9e0 e0 e0 e0 e0 e0 e0 e0Pa3 a3 a3 a3 a3 a3 a3 a3HG G G G G G G G:  >7 7 7 7 7r2   