Well, it still fails there with the subs.  Like I said, it's a bug.  Can you 
open an issue for it?

Aaron Meurer

On May 26, 2011, at 9:09 PM, Matthew Emmett wrote:

> Thanks for the quick reply Aaron.  I will get the latest git version
> and run with it.  BTW, I was running the sample on 0.6.7.
> 
> Thanks again,
> Matt
> 
> On Thu, May 26, 2011 at 08:28:51PM -0600, Aaron S. Meurer wrote:
>> If I try this with mpmath 0.16 (the version we currently have in sympy in 
>> the latest git master), I get:
>> 
>> In [22]: print 'subs:  ', mpmath.findroot(lambda xi: p.subs(x, xi), 1.0)
>> subs:  
>> ---------------------------------------------------------------------------
>> ValueError                                Traceback (most recent call last)
>> 
>> /Users/aaronmeurer/Documents/python/sympy/sympy/<ipython console> in 
>> <module>()
>> 
>> /Users/aaronmeurer/Documents/python/sympy/sympy/sympy/mpmath/calculus/optimization.pyc
>>  in findroot(ctx, f, x0, solver, tol, verbose, verify, **kwargs)
>>    968                              '(%g > %g)\n'
>>    969                              'Try another starting point or tweak 
>> arguments.'
>> --> 970                              % (norm(f(*xl))**2, tol))
>>    971         return x
>>    972     finally:
>> 
>> ValueError: Could not find root within given tolerance. (6.67917e-33 > 
>> 1.71057e-49)
>> Try another starting point or tweak arguments.
>> 
>> Another option for Poly is eval.  I get this:
>> 
>> In [37]: print 'eval:  ', mpmath.findroot(lambda xi: p.eval(x, xi), 1.0)
>> eval:   0.774596669241483377035853079956479922166584341
>> 
>> In [38]: print 'exact: ', mpmath.sqrt(mpmath.mpf('3.0')/mpmath.mpf('5.0'))
>> exact:  0.774596669241483377035853079956479922166584341
>> 
>> In [39]: print 'lambda:', mpmath.findroot(lambda x: 5.0*x**3/2.0 - 
>> 3.0*x/2.0, 1.0)
>> lambda: 0.774596669241483377035853079956479922166584341
>> 
>> So I'd say there is some kind of bug with subs.
>> 
>> Aaron Meurer
>> 
>> On May 26, 2011, at 8:21 PM, Matthew Emmett wrote:
>> 
>>> Hi everyone,
>>> 
>>> I am having trouble combining mpmath's findroot function with sympy.
>>> Here is a short example of what I am trying to accomplish:
>>> 
>>> import sympy
>>> import mpmath
>>> 
>>> mpmath.mp.dps = 45
>>> 
>>> x = sympy.var('x')
>>> p = (5.0/2.0*x**3 - 3.0/2.0*x).as_poly()
>>> 
>>> print 'subs:  ', mpmath.findroot(lambda xi: p.subs(x, xi), 1.0)
>>> print 'lambda:', mpmath.findroot(lambda x: 5.0*x**3/2.0 - 3.0*x/2.0,
>>> 1.0)
>>> print 'exact: ', mpmath.sqrt(mpmath.mpf('3.0')/mpmath.mpf('5.0'))
>>> 
>>> 
>>> The output is:
>>> 
>>> subs:   0.77459666924148342341315597798728447146706553
>>> lambda: 0.774596669241483377035853079956479922166584341
>>> exact:  0.774596669241483377035853079956479922166584341
>>> 
>>> 
>>> That is, when using mpmath.findroot, substituting into a SymPy
>>> polynomial does not produce the same result as using a lambda form
>>> with a handwritten version of the polynomial.  Is there a way to the
>>> SymPy subs method to work as expected?
>>> 
>>> Thanks,
>>> Matt
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "sympy" group.
>>> To post to this group, send email to sympy@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> sympy+unsubscr...@googlegroups.com.
>>> For more options, visit this group at 
>>> http://groups.google.com/group/sympy?hl=en.
>>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sympy" group.
>> To post to this group, send email to sympy@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> sympy+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/sympy?hl=en.
>> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To post to this group, send email to sympy@googlegroups.com.
> To unsubscribe from this group, send email to 
> sympy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sympy?hl=en.
> 

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

Reply via email to