
    tKg%                         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y)    )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y)
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       y )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          h/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/optimize/tests/test_lsq_common.pytest_step_size_to_boundsz#TestBounds.test_step_size_to_bounds   sK   XX'(XX'(HH%&HH_%'1b"5
dT2T9%HH'('1b"5
dT1T:&HH+,'1b"5
dT288B<(T:&HH%&'1b"5
dT3T:&HHQK'1b"5
dT266"T9%    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       y )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+   so   XX'(XX'(HH%&(B3VY'HH%&(B3VZ((B;VZ(HH./(B3VY'(B@VZ(XXsRVVGbffW-.XXrvvtRVV,-GGAJ(B3VZ( HH%&(B3VZ((B;VZ(r2   c                    t        j                  g d      }t        j                  g d      }t        j                  g d      }t        |||d      }t        |d   dkD         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       y )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=   XX'(XXo&HH+,&q"b:a4 U12Y!"&&q"b=U>?HH_%&q"b1456&q"b:456XXr5k"XXq-()HHaZ &q"b=UQ0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       y )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    XXwcBFF734XXsBFFD"&&12HH)*HH+,!!QB/2Q,-R./r2   N)__name__
__module____qualname__r1   r;   rB   rG    r2   r0   r   r      s    &<#)J240r2   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestQuadraticFunctionc                     t        j                  ddgddgddgg      | _        t        j                  ddg      | _        t        j                  ddg      | _        y )	Nr   皙?r   r   r!   r>   r"   r6   )r%   r&   JrD   diag)r)   s    r0   setup_methodz"TestQuadraticFunction.setup_methodu   sV    #J3K#J  3+&HHc3Z(	r2   c                 F   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       y )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}   s9   HHQK!$&&$&&!41QQ!$&&$&&!$))D1QQHHc4[!!$&&$&&!41QQ!$&&$&&!$))D1QQXXsCj!$TVVTVVQTYY2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                          y )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1Q1q!t8a!e+%8$Q2r21Q1q!t8a!e+%8$Q2q11Q1q!t8a!e+%8$Q2qA61Q1q!t8a!e+a/e<$QBFF7BFFa@1Q1qAv:A-1>$Q1bff:1Q1qAv:A-1>$QBFF7A;1Q1qAv:A-1>$QBFF7BFF;1Q $Q1bff51QQ $QBFF7A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       y )	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    HHc4[!"46646615UD!"4664661499EUD!HHsDk3Z3Z! " $DFFDFFA6 23#DFFDFFADIIF 12r2   N)rH   rI   rJ   rR   rY   r_   re   rK   r2   r0   rM   rM   t   s    )$2,!\3r2   rM   c                       e Zd Zd Zy)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        |||       y )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   HHQKHH_%-aE:uUBUAHH&'-aE:ux(w'HH^$HH[!-aE:ux(w'GGAJj"8!QFHHQKHHQKj"8!QFr2   N)rH   rI   rJ   rn   rK   r2   r0   rg   rg      s    Gr2   rg   c                  N   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       y )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BGGAJ
"a&A$QBHHbffbff5E,FGDAqQFRG$Q266'BFF71C(DbIDAqRGQG$QB/DAqQFRH	BFF7B-	 B	1bff+	B
"b'A$QB/DAqQGRGr2   c                  4   t        j                  d      j                  d      } t        j                  g d      }t        j                  |      j                  |       }t        | |      }t        j                  ddg      }| j                  t        j                  |            }t        | |      }t        j                  ddg      }dt        j                  dd	      j                  d
      z  }t        j                  g d      }	t        |j                  |      |j                  |             t        |j                  |      |j                  |             t        |j                  j                  |	      |j                  |	             t        |j                  |      |j                  |             t        |j                  |      |j                  |             t        |j                  j                  |	      |j                  |	             y )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     sj   
		!V$AXXj!F			Q	B%a0Fhh2wG	
rwww	 B'73G
"aA
RYYq!_$$V,,A	+	BBFF1Iv}}Q/0BFF1Iv}}Q/0BDDHHRL&.."45BFF1Iw~~a01BFF1Iw~~a01BDDHHRL'//""5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      sU    @ @ * 9 9 9 9e0 e0Pa3 a3HG G:>7r2   