ó
Ê½÷Xc           @` 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
 m Z m Z d d l m Z m Z m Z m Z m Z d d d „  ƒ  YZ d e f d	 „  ƒ  YZ e d
 k r½ e ƒ  n  d S(   st   
Unit tests for trust-region optimization routines.

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

i    (   t   divisiont   print_functiont   absolute_importN(   t   minimizet   rosent	   rosen_dert
   rosen_hesst   rosen_hess_prod(   t   TestCaset   assert_t   assert_equalt   assert_allcloset   run_module_suitet   Accumulatorc           B` s    e  Z d  Z d „  Z d „  Z RS(   s    This is for testing callbacks.c         C` s   d |  _  d  |  _ d  S(   Ni    (   t   countt   Nonet   accum(   t   self(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   __init__   s    	c         C` sF   |  j  d 7_  |  j d  k r3 t j | ƒ |  _ n |  j | 7_ d  S(   Ni   (   R   R   R   t   npt   array(   R   t   x(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   __call__   s    (   t   __name__t
   __module__t   __doc__R   R   (    (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyR      s   	t   TestTrustRegionSolversc           B` s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s1   d d g |  _  d d g |  _ d d g |  _ d  S(   Ng      ð?g       @g333333ó¿(   t   x_optt
   easy_guesst
   hard_guess(   R   (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   setUp!   s    c         C` sƒ   |  j  } t t | d t d t d d d d d i t d 6ƒ} t | | d	 d
 ƒ t | d | d	 d ƒ t | d |  j ƒ d  S(   Nt   jact   hesst   tolg:Œ0âŽyE>t   methodt   doglegt   optionst
   return_allt   allvecsi    R   iÿÿÿÿ(   R   R   R   R   R   t   TrueR   R   (   R   t   x0t   r(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   test_dogleg_accuracy&   s    	c         C` s³   t  ƒ  } d } t t |  j d t d t d | d d d i t d 6| d	 6ƒ} t | j | ƒ t t	 | d
 ƒ | d ƒ t
 | d | d
 d ƒ t
 t | d
 d ƒ | j ƒ d  S(   Ni   R   R    t   callbackR"   R#   R$   R%   t   maxiterR&   i   R   iÿÿÿÿ(   R   R   R   R   R   R   R'   R
   R   t   lenR   t   sumR   (   R   t   accumulatorR,   R)   (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   test_dogleg_callback/   s    	c         C` s/  t  } t } t } x|  j |  j f D]} t | | d | d | d d d d d i t d 6ƒ} t | | d | d | d d d d	 d i t d 6ƒ} t | | d | d | d d d d
 d i t d 6ƒ} t |  j | d ƒ t |  j | d ƒ t |  j | d ƒ t	 t
 | d ƒ t
 | d ƒ k  ƒ q% Wd  S(   NR   R    R!   g:Œ0âŽyE>R"   R#   R$   R%   s	   trust-ncgs	   newton-cgR   R&   (   R   R   R   R   R   R   R'   R   R   R	   R-   (   R   t   ft   gt   hR(   t   r_doglegt   r_trust_ncgt   r_ncg(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   test_solver_concordance;   s    c         C` s\   xU |  j  |  j f D]A } t t | d t d t d d d d ƒ} t |  j | d ƒ q Wd  S(   NR   t   hesspR!   g:Œ0âŽyE>R"   s	   trust-ncgR   (   R   R   R   R   R   R   R   R   (   R   R(   R)   (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   test_trust_ncg_hesspP   s    (   R   R   R   R*   R0   R7   R9   (    (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyR      s
   					t   __main__(    (   R   t
   __future__R    R   R   t   numpyR   t   scipy.optimizeR   R   R   R   R   t   numpy.testingR   R	   R
   R   R   R   R   R   (    (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/optimize/tests/test_trustregion.pyt   <module>   s   ((8