;ò
rIFc           @   s   d  Z  d f  d „  ƒ  YZ d S(   s—   Solving an equation in one dimension.

See search.Search for 2 dimensions (represented by complex).

$Id: root.py,v 1.7 2007/03/24 15:53:22 eddy Exp $
s   Searchc           B   s³   t  Z d  Z e d d „ Z d „  Z d „  Z d „  Z d d „ Z d d d d	 „ Z	 e
 e	 ƒ  d
 „ Z [	 d „  Z e
 e
 e d „ Z e
 e
 e d „ Z [ d „  Z d d d „ Z RS(   s,   Searching for roots of a real function.
    i   c         C   sh   | | | f \ |  _ |  _ |  _ h  |  _ t d f |  _ |  i  | ƒ |  i d t j	 p
 t	 d ‚ d  S(   Nfinfi    s)   Whacky goal function you've got there ...(
   s   funcs   goals   strides   selfs   _Search__funcs   _Search__caches   Nones   _Search__bests   guesss   AssertionError(   s   selfs   funcs   guesss   goals   stride(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   __init__   s
    !	c         C   s…   y |  i | SWn t j
 o n X|  i | ƒ } | |  i | ƒ f \ |  i | <} | |  i d j  o | | f |  _ n | Sd  S(   Ni   (	   s   selfs   _Search__caches   vals   KeyErrors   _Search__funcs   anss   goals   scores   _Search__best(   s   selfs   vals   scores   ans(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   __call_func   s      " c         C   sE   | d j o |  i d Sn | d j o |  i d Sn t | ‚ d  S(   Ns   besti    s   scorei   (   s   keys   selfs   _Search__bests   AttributeError(   s   selfs   key(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   __getattr__   s
      c         C   s;   y | i |  i ƒ SWn  t j
 o |  i | ƒ Sn Xd  S(   N(   s   vals   evaluates   selfs   _Search__call_funcs   AttributeError(   s   selfs   val(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   func#   s      i
   c         C   sn   t  |  i ƒ | j oT t |  i d „ |  i i ƒ  ƒ } | i ƒ  x& | | D] \ } } |  i | =qL Wn d  S(   Nc         C   s   |  \ } } | | ƒ | f S(   N(   s   ks   vs   g(   s   .0s   gs   ks   v(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>)   s    (   s   lens   selfs   _Search__caches   keeps   maps   goals   itemss   rows   sorts   ss   k(   s   selfs   keeps   ss   ks   row(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   __flush'   s    !
  f-0.5c         C   sS   |  g } x9 | d j o+ |  | | d f \ }  } | i |  ƒ q Wt | ƒ Sd  S(   Ni    i   (   s   scales   rows   counts   steps   appends   tuple(   s   scales   counts   steps   row(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   logrange-   s    	 c         C   s   | o |  i } n t | | |  i d „ | ƒ t | |  i | ƒ d „ t | | d „ |  i i	 ƒ  ƒ ƒ } | i d „  ƒ t t | ƒ o- x* | o | d d o | d } q Wn t d „  | ƒ } | i ƒ  t t | ƒ d ƒ \ } } | o | | Sn | | | | d d	 Sd  S(
   Nc         C   s   | | |  | ƒ S(   N(   s   fs   vs   xs   s(   s   xs   vs   ss   f(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>6   s    c         C   s   |  \ } } | | | | f S(   N(   s   ks   vs   as   b(   s   .0s   as   bs   ks   v(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>7   s    c         C   s7   |  \ } } d t | | ƒ j  o t | ƒ j n S(   Ni    (   s   ks   vs   abss   as   s(   s   .0s   as   ss   ks   v(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>8   s    c         C   sM   |  \ } } | \ } } t t | ƒ t | ƒ ƒ p t t | ƒ t | ƒ ƒ S(   N(   s   xs   us   ys   vs   cmps   abs(   s   .0s   .2s   xs   us   ys   v(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda><   s    i    i   c         C   s   |  \ } } | | S(   N(   s   ks   v(   s   .0s   ks   v(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>A   s    i   f0.5(   s   scales   selfs   strides   maps   vals   funcs   dusts   filters   _Search__caches   itemss   datas   sorts   Nones   divmods   lens   mids   bit(   s   selfs   vals   scales   dusts   mids   bits   data(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   gradient4   s"       
 c         C   sy   y |  i d „  ƒ } Wn t j
 o |  d } n Xy% x |  i | j o |  i }  q< WWn t j
 o n X|  Sd  S(   Nc         C   s   d S(   Ni    (    (   s   x(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>I   s    i    (   s   vals   copys   zeros   AttributeErrors   widths   best(   s   vals   zero(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   exactH   s         c         C   sŠ   | t j o |  i } n | |  i | ƒ ƒ | |  i | | ƒ ƒ } | o | |  _	 n | | | ƒ } | |  i |  i | ƒ ƒ f Sd  S(   N(   s   vals   Nones   selfs   bests   hits   funcs   gradients   steps   moves   strides   anss   goal(   s   selfs   vals   steps   hits   moves   ans(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   RaphsonP   s     , c         C   sQ  | t j o |  i } n | o |  i } n |  i | ƒ |  i | | ƒ f |  i i ƒ  } | i
 ƒ  | d g  f \ \ }
 }	 } x| | d D]p \ } } | |	 d j  oA | i t |  i |	 ƒ |  i | ƒ ƒ |
 |	 f | | f f ƒ n | | f \ }
 }	 q W| o“ | i
 |  i d „ ƒ | d \ }
 }	 t |
 |	 d „ | ƒ } | i
 |
 |	 d „ ƒ | d \ } } | i |  i |	 ƒ |
 |	 f | | f f ƒ n t | ƒ \ } \ }
 }	 \ } } | | |	 ƒ | | |
 ƒ } | o9 | |	 | ƒ } | o | |  _ n | |
 | ƒ } n | | |
 ƒ d } | |  i |  i | ƒ ƒ f Sd  S(   Ni    i   c         C   s1   |  \ } } | \ } } t | | ƒ | | ƒ ƒ S(   N(   s   ks   vs   xs   ys   cmps   g(   s   .0s   .2s   gs   ks   vs   xs   y(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>d   s    c         C   s#   |  \ } } | | j o
 | | j S(   N(   s   ks   vs   xs   y(   s   .0s   xs   ys   ks   v(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>f   s    c         C   s=   |  \ } } | \ } } t | | | | | | | | ƒ S(   N(   s   ks   vs   ws   zs   cmps   ys   x(   s   .0s   .2s   xs   ys   ks   vs   ws   z(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>g   s    iÿÿÿÿf0.5(   s   vals   Nones   selfs   bests   steps   strides   funcs   _Search__caches   itemss   datas   sorts   xs   ys   cuts   ks   vs   appends   mins   goals   filters   igs   hits   rates   moves   ans(   s   selfs   vals   steps   hits   cuts   moves   rates   anss   vs   ys   xs   datas   ks   ig(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   chordW   s:       
  A/! c         C   sœ   x• n o |  i |  i |  i ƒ t d „  |  i i ƒ  ƒ } t | ƒ t	 | ƒ f \ } } | d | d j o Pn | d | d } d | |  _ q
 Wd  S(   Ni   c         C   s   |  \ } } | | f S(   N(   s   ks   v(   s   .0s   ks   v(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   <lambda>z   s    i    i
   (   s   selfs   funcs   bests   strides   maps   _Search__caches   itemss   valss   maxs   mins   his   los   gap(   s   selfs   gaps   his   los   vals(    (    s&   /home/eddy/.sys/py/study/maths/root.pys	   __broadenw   s      i*   iÿÿÿÿc         C   sí   |  i ƒ  |  i } xÆ | d j o¸ | d } | d o6 y |  i ƒ  Wq• t j
 o d | d } q• Xn( y |  i ƒ  Wn t j
 o
 q n X| |  i j  o2 |  i | j  o |  i
 ƒ  |  i Sn |  i } q q W|  i
 d ƒ d  S(   Ni    i   i   i   (   s   selfs   _Search__broadens   scores   goods   triess   Raphsons   ZeroDivisionErrors   chords
   IndexErrors	   thresholds   _Search__flushs   _Search__best(   s   selfs   triess	   thresholds   good(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   rummage€   s(    
	 
    
(   s   __name__s
   __module__s   __doc__s   abss   __init__s   _Search__call_funcs   __getattr__s   funcs   _Search__flushs   logranges   Nones   gradients   exacts   Raphsons   chords   _Search__broadens   rummage(    (    (    s&   /home/eddy/.sys/py/study/maths/root.pys   Search   s    							N(   s   __doc__s   Search(   s   Search(    (    s&   /home/eddy/.sys/py/study/maths/root.pys   ?   s   