I opened an issue for this. As noted by Mateusz, Tom and Vinzent, there are ways around this. However, from an end users perspective, it would be nice if it worked as I had originally tried.
Thanks again for the quick reply, Matt On Thu, May 26, 2011 at 10:31:02PM -0600, Aaron S. Meurer wrote: > 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. > -- 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.