
&]\c           @` s   d  Z  d d l m Z m Z m Z d d l Z d d l m Z d d l	 m
 Z
 m Z m Z m Z m Z m Z e d d d d	  Z e d d d d	 d
 e  Z d e f d     YZ d S(   s}   
Unit tests for Krylov space trust-region subproblem solver.

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

i    (   t   divisiont   print_functiont   absolute_importN(   t   get_trlib_quadratic_subproblem(   t   assert_t   assert_array_equalt   assert_almost_equalt   assert_equalt   assert_array_almost_equalt   assert_array_lesst	   tol_rel_ig:0yE>t	   tol_rel_bgư>t   dispt   TestKrylovQuadraticSubproblemc           B` s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         ` s  t  j d d d g d d d g d d d g g    t  j d d d g   d } t d d d	 d
   d  f d   d d   d   f d    } | j |  \ } } t | t  j d d d g   t | t  t t  j j	   j
 |  | j |   d  t t  j j	 |  |  d } | j |  \ } } t | t  j d d d g   t | t  t t  j j	   j
 |  | j |   d  t t  j j	 |  |  d  S(   Ng      ?g        g      @g       @g      @g      @t   xi    t   func         S` s   d S(   Ni    (    (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyt   <lambda>$   s    t   jacc         ` s     S(   N(    (   R   (   t   g(    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   %   s    t   hessc         S` s   d  S(   N(   t   None(   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   &   s    t   hesspc         ` s     j  |  S(   N(   t   dot(   R   t   y(   t   H(    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   '   s    g      g      ?gb5m1ݿgp돬ӳȿ(   t   npt   arrayt   KrylovQPt   solveR   R   t   TrueR   t   linalgt   normR   t   lam(   t   selft   trust_radiust   subprobt   pt   hits_boundary(    (   R   R   sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyt   test_for_the_easy_case   s4    		''c         ` s  t  j d d d g d d d g d d d g g    t  j d d d g   d } t d d d d	   d
  f d   d d   d   f d    } | j |  \ } } t | t  j d d d g   t t  j j   j |  | j	 |   d  t t  j j |  |  d } | j |  \ } } t | t  j d d d g   t t  j j   j |  | j	 |   d  t t  j j |  |  d  S(   Ng      ?g        g      @g       @g      @R   i    R   c         S` s   d S(   Ni    (    (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   N   s    R   c         ` s     S(   N(    (   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   O   s    R   c         S` s   d  S(   N(   R   (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   P   s    R   c         ` s     j  |  S(   N(   R   (   R   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   Q   s    g      g      ?g      (
   R   R   R   R   R   R   R   R   R   R    (   R!   R"   R#   R$   R%   (    (   R   R   sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyt   test_for_the_hard_case@   s.    		''c         ` s?  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  j d d d d d g   d } t d d d d   d  f d   d d   d   f d    } | j |  \ } } t t  j j   j |  | j |   d   t	 | d! d" d# d$ d% g  t	 | t
  d  S(&   Ngno?gu?g,wn)?g/Kg뚘G?g켮wO@g٢yn*?gr<8ٿg&Î?g6
@gĽCԿg8K?gc?g>ڿg-Q?g*<sA?gE?gM x?gz?g=޿g?R   i    R   c         S` s   d S(   Ni    (    (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   s   s    R   c         ` s     S(   N(    (   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   t   s    R   c         S` s   d  S(   N(   R   (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   u   s    R   c         ` s     j  |  S(   N(   R   (   R   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR   v   s    g        g8b҄gO
L?gp4OF̿g qgo-7?(   R   R   R   R   R   R   R   R   R    R   t   False(   R!   R"   R#   R$   R%   (    (   R   R   sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyt   test_for_interior_convergenceg   s&    		'c         ` sX  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  j d d d d d g   d } t d d d d   d  f d   d d   d   f d    } | j |  \ } } t t  j j   j |  | j |   d  t t  j j |  |  t	 | d d d d  d! g  t	 | t
  d  S("   NgVaU?g`A@g5F?g9)n@gcѿg{g.<?g~g:]?g@33g 5:gIgйTgFKտg&Ri    gư>g?R   R   c         S` s   d S(   Ni    (    (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    R   c         ` s     S(   N(    (   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    R   c         S` s   d  S(   N(   R   (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    R   c         ` s     j  |  S(   N(   R   (   R   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    g        giG7㰱?gl$WgZg-O|οgm/(   R   R   R   R   R   R   R   R   R    R   R   (   R!   R"   R#   R$   R%   (    (   R   R   sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyt   test_for_very_close_to_zero   s*    		'
c         ` s   t  j d    t  j d d d d d g   d } t d d d d   d  f d	   d
 d   d   f d    } | j |  \ } } | j   \ } } t | j d  t |   d  S(   Ni   i    gư>g?R   R   c         S` s   d S(   Ni    (    (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    R   c         ` s     S(   N(    (   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    R   c         S` s   d  S(   N(   R   (   R   (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    R   c         ` s     j  |  S(   N(   R   (   R   R   (   R   (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s    s     TR Solving trust region problem(	   R   t   eyeR   t   KrylovQP_dispR   t
   readouterrR   t
   startswitht   repr(   R!   t   capsysR"   R#   R$   R%   t   outt   err(    (   R   R   sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyt	   test_disp   s    		(   t   __name__t
   __module__R&   R'   R)   R*   R3   (    (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyR      s
   	*	'		(   t   __doc__t
   __future__R    R   R   t   numpyR   t   scipy.optimize._trlibR   t   numpy.testingR   R   R   R   R   R	   R   R   R,   t   objectR   (    (    (    sK   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyt   <module>   s   .