ó
î&]\c           @` s  d  Z  d d l m Z m Z m Z d d l Z d d l m Z m	 Z	 m
 Z
 d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z d d l m Z m Z m Z m Z m Z d „  Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   ss   
Unit tests for trust-region iterative subproblem.

To run it in its simplest form::
  nosetests test_optimize.py

i    (   t   divisiont   print_functiont   absolute_importN(   t    estimate_smallest_singular_valuet   singular_leading_submatrixt   IterativeSubproblem(	   t   svdt   get_lapack_funcst   dett
   cho_factort	   cho_solvet   qrt   eigvalsht   eigt   norm(   t   assert_t   assert_array_equalt   assert_equalt   assert_array_almost_equalt   assert_array_lessc         C` s$  t  j j d d |  |  f ƒ } t | d d ƒ\ } } } t  j j | | |  ƒ } t  j | ƒ d  d  d … } t  j | | ƒ } t  j | | j ƒ }	 | d k rä t  j |  ƒ }
 t  j j d d |  d ƒ |
 d *t  j | |
 ƒ }
 n6 | d k rt  j |  ƒ }
 n t  j j d d |  ƒ }
 |	 |
 f S(   Niÿÿÿÿi   t   pivotingt   Truet   hardt   jac_equal_zero(	   t   npt   randomt   uniformR   t   sortt   multiplyt   dott   Tt   zeros(   t   nt   min_eigt   max_eigt   caset   randt   Qt   _t	   eigvaluest   Qauxt   At   g(    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   random_entry   s     t!   TestEstimateSmallestSingularValuec           B` s   e  Z d  „  Z RS(   c   	      C` sÈ   t  j d d d d g d d d d g d d d	 d
 g d d d d g g ƒ } t | ƒ \ } } } | d } | d d  d  … f } t | ƒ \ } } t | | d d ƒt t | ƒ t | ƒ d d ƒd  S(   Ni   i   i   i   i    gš™™™™™©?i<   i   gš™™™™™é?i	   i
   iÿÿÿÿt   decimali   (   R   t   arrayR   R   R   t   abs(	   t   selft   Ct   Ut   st   Vtt   smin_svdt   zmin_svdt   smint   zmin(    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt    test_for_ill_condiotioned_matrix7   s    
(   t   __name__t
   __module__R9   (    (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyR,   5   s   t   TestSingularLeadingSubmatrixc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` sú   t  j d d d g d d d g d d d g g ƒ } t d | f ƒ \ } | | d t d	 t d
 t ƒ\ } } t | | | ƒ \ } } | | d | d f c | 7<t t | d  | … d  | … f ƒ d ƒ t  j | t  j | | ƒ ƒ } t | d ƒ d  S(   Ni   i   i   i   i   i   t   potrft   lowert   overwrite_at   cleani    (   R=   (	   R   R.   R   t   FalseR   R   R   R   R   (   R0   R)   t   choleskyt   ct   kt   deltat   vt   quadratic_term(    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt+   test_for_already_singular_leading_submatrixP   s    $)c      
   C` s0  t  j d d d d d g d d d d d g d d d	 d d g d d d d d g d d d d d g g ƒ } t d | f ƒ \ } | | d t d t d t ƒ\ } } t | | | ƒ \ } } | | d | d f c | 7<t t | d  | … d  | … f ƒ d ƒ t  j | t  j | | ƒ ƒ } t | d ƒ d  S(   Ni   i   i   i   i   i   i	   i    i   R=   R>   R?   R@   (   R=   (	   R   t   asarrayR   RA   R   R   R   R   R   (   R0   R)   RB   RC   RD   RE   RF   RG   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt#   test_for_simetric_indefinite_matrixi   s    $)c         C` sú   t  j d d d g d d d g d d d g g ƒ } t d | f ƒ \ } | | d t d	 t d
 t ƒ\ } } t | | | ƒ \ } } | | d | d f c | 7<t t | d  | … d  | … f ƒ d ƒ t  j | t  j | | ƒ ƒ } t | d ƒ d  S(   Ni    i   i   i   i   i   R=   R>   R?   R@   i   (   R=   (	   R   R.   R   RA   R   R   R   R   R   (   R0   R)   RB   RC   RD   RE   RF   RG   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt$   test_for_first_element_equal_to_zero„   s    $)(   R:   R;   RH   RJ   RK   (    (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyR<   N   s   		t   TestIterativeSubproblemc           B` s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         ` sÛ   d d d d g d d d d g d d d d g d d d d g g ‰  d d d d g ‰ d } t  d d d	 d
 „  d ‡ f d †  d ‡  f d †  d d d d ƒ } | j | ƒ \ } } t | d d d d g ƒ t | t ƒ d  S(   Ni
   i   i   i   i   i   t   xi    t   func         S` s   d S(   Ni    (    (   RM   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   <lambda>¯   s    t   jacc         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   R*   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   °   s    t   hessc         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   t   H(    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   ±   s    t   k_easyg»½×Ùß|Û=t   k_hardgë8<Œbp?gøgÌEø®á¿gÎþ vå?gËùëÛªß¿(   R   t   solveR   R   (   R0   t   trust_radiust   subprobt   pt   hits_boundary(    (   RR   R*   sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   test_for_the_easy_case    s     		c         ` sÌ   d d d d g d d d d g d d d d g d d d d g g ‰  d d d d g ‰ d } d } t  d	 d
 d d „  d ‡ f d †  d ‡  f d †  d d d d ƒ } | j | ƒ \ } } t | | j ƒ d  S(   Ni
   i   i   i   i   i   gASýéð@grv»f(n ÀRM   i    RN   c         S` s   d S(   Ni    (    (   RM   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   Ê   s    RP   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   R*   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   Ë   s    RQ   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   RR   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   Ì   s    RS   g»½×Ùß|Û=RT   (   R   RU   R   t   lambda_current(   R0   R3   RV   RW   RX   RY   (    (   RR   R*   sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   test_for_the_hard_caseº   s    		c      
   ` s  d d d d d g d d d d d	 g d d d
 d d g d d d d d g d d	 d d d g g ‰  d d d d d g ‰ t  d d d d „  d ‡ f d †  d ‡  f d †  ƒ } | j d ƒ \ } } t | d d d  d! d" g ƒ t | t ƒ t | j d ƒ t | j d# ƒ d  S($   NgÛn‚ošþü?gž¶¡½uê?g,wnó)ôË?g”/ËK¼Ëà¿gÿëš˜GÐ?gì¼®ÛwO@gÙ¢y¾n*Ô?gr–<8±Ù¿gõ¶Û&ÃŽ¶?gÓ6›ª
@gøòÄ½CÔ¿g8Š¤ÄKƒÑ?gÀc‘‰èù?gò†«>øÚ¿gÂ-£Qõ?g*‹ã<sAè?g³¢¼E?gM x¾—©Õ?gzý‹˜ÀÊê?gôÒ=€©Þ¿RM   i    RN   c         S` s   d S(   Ni    (    (   RM   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   ß   s    RP   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   R*   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   à   s    RQ   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   RR   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   á   s    gš™™™™™ñ?g8bÒ„òå¿gåO
©‘L¿?g p4OÇFÌ¿g Ïqå¿g­oš-7Ô?i   (   R   RU   R   RA   R[   t   niter(   R0   RW   RX   RY   (    (   RR   R*   sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   test_for_interior_convergenceÓ   s     	c         ` sù   d d d d d g d d d d d	 g d d d
 d d g d d d d d g d d	 d d d g g ‰  d d d d d g ‰ t  d d d d „  d ‡ f d †  d ‡  f d †  d d d d ƒ } | j d ƒ \ } } t | d d d d d  g ƒ t | t ƒ d  S(!   NgÝVaÐUì?gø˜›±`A@g5“ýF€ï?gÔ9Ô)n@é¿g€îcñÑ¿gµÚ{ú¥§¿g.<íøÕ?g~õýÏËê¿gÔ:]³èÅ?g@33ôë¿g 5Ð:²°¿g¦ä¤IŒâö¿gÐ¹ÛõÒTú¿g¦F¦K°Õ¿g¬¢&—Rùú¿i    RM   RN   c         S` s   d S(   Ni    (    (   RM   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   ö   s    RP   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   R*   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   ÷   s    RQ   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   RR   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   ø   s    RS   g»½×Ùß|Û=RT   gš™™™™™ñ?g÷iG7ã°±?glµ$“•W¿gÀü€ÍZæä¿g-ðOˆ|Î¿g¦mô‚/ë¿(   R   RU   R   R   (   R0   RW   RX   RY   (    (   RR   R*   sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   test_for_jac_equal_zeroê   s"    		
c         ` sù   d d d d d g d d d d d	 g d d d
 d d g d d d d d g d d	 d d d g g ‰  d d d d d g ‰ t  d d d d „  d ‡ f d †  d ‡  f d †  d d d d ƒ } | j d ƒ \ } } t | d d d d  d! g ƒ t | t ƒ d  S("   NgÝVaÐUì?gø˜›±`A@g5“ýF€ï?gÔ9Ô)n@é¿g€îcñÑ¿gµÚ{ú¥§¿g.<íøÕ?g~õýÏËê¿gÔ:]³èÅ?g@33ôë¿g 5Ð:²°¿g¦ä¤IŒâö¿gÐ¹ÛõÒTú¿g¦F¦K°Õ¿g¬¢&—Rùú¿i    gVçž¯Ò<RM   RN   c         S` s   d S(   Ni    (    (   RM   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO     s    RP   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   R*   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO     s    RQ   c         ` s   t  j ˆ  ƒ S(   N(   R   R.   (   RM   (   RR   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO     s    RS   g»½×Ùß|Û=RT   gš™™™™™ñ?g÷iG7ã°±?glµ$“•W¿gÀü€ÍZæä¿g-ðOˆ|Î¿g¦mô‚/ë¿(   R   RU   R   R   (   R0   RW   RX   RY   (    (   RR   R*   sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   test_for_jac_very_close_to_zero  s"    		
c         ` s^  t  j j d ƒ d } xAd# D]9} d$ d% d& d' d( d) d* d+ g } x| D]
\ } } t | | | | ƒ \ ‰  ‰ d d d d d d d d d g	 } x¿| D]·} t d
 d „  ‡ f d †  ‡  f d †  d d d d ƒ} | j | ƒ \ }	 }
 d, t  j |	 t  j ˆ  |	 ƒ ƒ t  j ˆ |	 ƒ } d- d. d/ g } x"| D]\ } } t | d d t  j | ƒ ƒ } d | } t d
 d  „  ‡ f d! †  ‡  f d" †  d | d | ƒ} | j | ƒ \ } } d0 t  j | t  j ˆ  | ƒ ƒ t  j ˆ | ƒ } | rt	 t  j
 t | ƒ | ƒ | d | k t ƒ n t t | ƒ | k t ƒ t | | | k t ƒ q0Wq— WqH Wq Wd  S(1   Ni   i   t   easyR   R   iìÿÿÿiñÿÿÿiöÿÿÿiûÿÿÿi    i
   i   i   gš™™™™™¹?g333333Ó?g333333ã?gš™™™™™é?g333333ó?gffffff
@g      @c         S` s   d S(   Ni    (    (   RM   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   7  s    c         ` s   ˆ  S(   N(    (   RM   (   R*   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   8  s    c         ` s   ˆ  S(   N(    (   RM   (   RR   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   9  s    RS   g»½×Ùß|Û=RT   i   g      à?gš™™™™™ñ?gÍÌÌÌÌÌì?g)\Âõ(ð?c         S` s   d S(   Ni    (    (   RM   (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   R  s    c         ` s   ˆ  S(   N(    (   RM   (   R*   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   S  s    c         ` s   ˆ  S(   N(    (   RM   (   RR   (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRO   T  s    (   Ra   R   R   (   iìÿÿÿiñÿÿÿ(   iöÿÿÿiûÿÿÿ(   iöÿÿÿi    (   iûÿÿÿi   (   iöÿÿÿi
   (   i    i
   (   i   i
   (   i   i   g      à?(   gš™™™™™¹?i   (   g      à?gš™™™™™ñ?(   gÍÌÌÌÌÌì?g)\Âõ(ð?g      à?(   R   R   t   seedR+   R   RU   R   t   mint   sqrtR   R/   R   R   R   (   R0   R    R#   t
   eig_limitsR!   R"   t   trust_radius_listRV   t
   subprob_act   p_act   hits_boundary_act   J_act   stop_criteriat   k_optt   k_trfRS   RT   RW   RX   RY   t   J(    (   RR   R*   sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   test_for_random_entries  sV    	!	2	

	2(   R:   R;   RZ   R\   R^   R_   R`   Ro   (    (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyRL   ž   s   					(    t   __doc__t
   __future__R    R   R   t   numpyR   t!   scipy.optimize._trustregion_exactR   R   R   t   scipy.linalgR   R   R   R	   R
   R   R   R   R   t   numpy.testingR   R   R   R   R   R+   t   objectR,   R<   RL   (    (    (    sJ   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyt   <module>   s   @(	P