I'd say nsolve and lambdify should be able to do it. Especially for lambdify, I don't see the point of using mpmath if you aren't going to support arbitrary precision.
Aaron Meurer On Tue, Jan 13, 2015 at 5:00 AM, Colin Macdonald <[email protected]> wrote: > I'd like to solve SymPy expressions to high (arbitrary) precision. I > tried `nsolve` with `mpmath.mp.dps = 128`, and filed #8564, > as nsolve is currently limited to double precision. > > My current idea is to convert my expression to an lambda involving only > mpmath objects. Then call `mpmath.mp.findroot`. This is essentially what > nsolve does anyway (except for the part about "only mpmath" objects). > > How do I do that? `lambdify(x, expr, module=mpmath)` is limited to > double-precision (filed #8818, but not sure if this is by design or a bug). > > `mpmath.mpmathify` works for individual floats... > > Best I have so far is something like: > > ```` > d = 128 % precision desired. > g = sqrt(2) - x % I want to solve g == 0 for x > > % here's my approach > h = g.evalf(d) > f = lambda meh: h.subs(x, meh) % yuck > > q = mpmath.mp.findroot(f, 1.0) > > q*q % should be 2 to 128 digits, looks good: > % > mpf('2.000000000000000000000000000000000000000000000000000000000000000038') > ```` > > thanks, > Colin > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/bd276484-1f37-4d29-b9b4-2cfbbee3fb5c%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/bd276484-1f37-4d29-b9b4-2cfbbee3fb5c%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6LwjocCSnjdBjyT3Mzp%2BTpSxfw7w%3DXtFV9u3UBE_%3D29CQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
