OK, I figured out how to get an answer that is reproducible in another
software (PyIMSL's zeroFunction routine, which uses a combination of
Brent and Muller's methods)!

In [100]: mpmath.findroot(lambda w: 1e80*exp(w) - 1e-300, (-1000,0),
solver='bisect')
Out[100]: -874.982335337737

I am still a poor sympy user though. For example, with
In [101]: mpmath.findroot(lambda w: 1e80*exp(w) - 1e-300, (-1000,0),
solver='anderson')
Out[101]:
                              -1000.0
          1.0e-300 - 1.0e+80*e
-1000.0 + ---------------------------
                              -1000.0
           1.0e+77 - 1.0e+77*e

How do I get a numerical evaluation of this expression?

And, when testing Ridder's method, which is what I want to compare
apples with apples in Scipy, R etc, I get the dreaded

      TypeError: cannot create mpf from...

message, and I have no idea what this means, though I keep managing to
generate it as I play around.


In [102]: mpmath.findroot(lambda w: 1e80*exp(w) - 1e-300, (-1000,0),
solver='ridder')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call
last)

C:\Jabberwocky\examples\<ipython console> in <module>()

C:\Program Files\EPD_511\Lib\site-packages\sympy\mpmath\mptypes.pyc in
g(*args, **kwargs)
     66                     return +v
     67                 else:
---> 68                     return f(*args, **kwargs)
     69             finally:
     70                 self.mp.prec = orig

C:\Program Files\EPD_511\Lib\site-packages\sympy\mpmath
\optimization.pyc in findroot(f, x0, solver, tol, verbose, verify,
force_type, **kwargs)
    942         maxsteps = iterations.maxsteps
    943     i = 0
--> 944     for x, error in iterations:
    945         if verbose:
    946             print 'x:    ', x

C:\Program Files\EPD_511\Lib\site-packages\sympy\mpmath
\optimization.pyc in __iter__(self)
    483             x3 = 0.5*(x1 + x2)
    484             fx3 = f(x3)
--> 485             x4 = x3 + (x3 - x1) * sign(fx1 - fx2) * fx3 /
sqrt(fx3**2 - fx1*fx2)
    486             fx4 = f(x4)
    487             if abs(fx4) < self.tol:

C:\Program Files\EPD_511\Lib\site-packages\sympy\mpmath\functions.pyc
in sign(ctx, x)
    251
    252     """
--> 253     x = ctx.convert(x)
    254     if not x or ctx.isnan(x):
    255         return x

C:\Program Files\EPD_511\Lib\site-packages\sympy\mpmath\mptypes.pyc in
convert(ctx, x, strings)
    361         if hasattr(x, '_mpmath_'):
    362             return ctx.convert(x._mpmath_(*prec_rounding))
--> 363         raise TypeError("cannot create mpf from " + repr(x))
    364
    365     def isnan(ctx, x):

TypeError: cannot create mpf from -1.0e+80 + 1.0e+80*exp(-1000.0)




-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to