On Dec 27, 2007 1:53 PM, pgdoyle <[EMAIL PROTECTED]> wrote:
> I'm having problems doing symbolic computations in Sage.  Calls to
> rational_simplify() seem to take about .2 seconds each.  Working
> directly in Maxima is about 100 times faster.  Mathematica is
> something like 500 times faster.
>
> In Sage, where does the time go?  Is there something I can do right
> now to speed things up?  Is this something that will eventually go
> faster?
>
> Cheers,
>
> Peter Doyle
> -------------------------
> sage: var(x)
> x
> sage: time sum(((x+sin(i))/x+(x-sin(i))/x).rational_simplify() for i
> in xrange(100))
> 200
> CPU time: 5.29 s,  Wall time: 39.10 s
> sage: time maxima('sum(ratsimp((x+sin(i))/x+(x-sin(i))/x),i,1,100)')
> 200
> CPU time: 0.02 s,  Wall time: 0.55 s

Those times above are really weird.  On my laptop (OSX 10.5.1):

sage: var(x)
x
sage: time sum(((x+sin(i))/x+(x-sin(i))/x).rational_simplify() for i
in xrange(100))
200
Time: CPU 0.97 s, Wall: 3.20 s
sage: time maxima('sum(ratsimp((x+sin(i))/x+(x-sin(i))/x),i,1,100)')
200
CPU time: 0.01 s,  Wall time: 0.34 s

Thus it takes 3.2 seconds wall time instead of 39.10 seconds for me.

If you use more specialized algebraic structures in Sage, then the
time directly in Sage comes down a lot (to beat Maxima):

sage: x = RDF['x'].gen()
sage: time sum(((x+math.sin(i))/x+(x-math.sin(i))/x) for i in xrange(100))
200.0*x^200/(1.0*x^200)
CPU time: 0.20 s,  Wall time: 0.21 s

Above we make x the indeterminate of the RDF[x], and use the floating
point sin function from Python.   But it's not symbolic.

But sympy is still way faster and is symbolic:

sage: from sympy import Symbol, sin
sage: x = Symbol('x')
sage: time sum(((x+sin(i))/x+(x-sin(i))/x).expand() for i in xrange(100))
200
Time: CPU 0.09 s, Wall: 0.09 s

which is why it's a good thing that sympy is the future of symbolic
computation in Sage :-).

And since Sympy comes with Sage, maybe you can use it for
your intended application right now?!

 -- William

> sage: time mathematica('Sum[Simplify[(x+Sin[i])/x+(x-Sin[i])/x],{i,
> 1,100}]')
> 200
> CPU time: 0.00 s,  Wall time: 0.09 s
> sage: time maxima('sum(ratsimp((x+sin(i))/x+(x-sin(i))/x),i,1,10000)')
> 20000
> CPU time: 0.01 s,  Wall time: 30.21 s
> sage: time mathematica('Sum[Simplify[(x+Sin[i])/x+(x-Sin[i])/x],{i,
> 1,10000}]')
> 20000
> CPU time: 0.01 s,  Wall time: 2.20 s
> sage: time mathematica('Sum[Simplify[(x+Sin[i])/x+(x-Sin[i])/x],{i,
> 1,100000}]')
> 200000
> CPU time: 0.00 s,  Wall time: 70.05 s
> sage: time mathematica('Sum[Evaluate[Simplify[(x+Sin[i])/x+(x-Sin[i])/
> x]],{i,1,100000}]')
> 200000
> CPU time: 0.00 s,  Wall time: 0.03 s
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to