Re: Computation speeds: numerical vs symbolic

• To: mathgroup at smc.vnet.net
• Subject: [mg55879] Re: Computation speeds: numerical vs symbolic
• From: Paul Abbott <paul at physics.uwa.edu.au>
• Date: Fri, 8 Apr 2005 01:37:15 -0400 (EDT)
• Organization: The University of Western Australia
• References: <d2tfah\$ql7\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

In article <d2tfah\$ql7\$1 at smc.vnet.net>, AES <siegman at stanford.edu>
wrote:

> No actual question, or at least no immediately useful question in this
> post.  I'm just expressing surprise and/or asking for enlightenment on
> what seems like a vast disparity in speeds of symbolic vs numerical
> calculations in the latest version of Mathematica.
>
> To be specific, take an expression like
>
>   v = Exp[ -a (s+y)] ( Exp[2 a y] Cos[s0 + q (s-y)] - Cos[s0 + q (s+y)] )
>
> which happens to have come up in a problem I'm just working on (y and s
> are the independent variables of interest, dimensionless surrogates for
> space and time; a, q and s0 are parameters; q happens to be an integer
> in the end).  I then want to evaluate the integral
>
>    w = Integrate[v^2, {y, 0 , Pi}]
>
> (symbolically) and make some plots of w versus s, with values of a, s0
> and q being set by rules for each plot.
>
> The integration involved here (nothing but products of exponentials and
> cosines)  I would describe as trivial but tedious,  that is, I could do
> it by hand, but it would be a (very) dull job.  Yet on my Mac iBook G4
> under Mathematica 5.1, it takes 15 seconds to do this particular
> integration.

It is trivial -- and you can speed things up considerably using
indefinite integration and substituting in the limits (as you would do
by hand).

int = Integrate[v^2, y];

Timing[Simplify[(int /. y -> Pi) - int /. y -> 0), Element[q,Integers]]

You can justify this approach for this example.

> If I follow the above cell with a second cell putting in
> the "simplifying" assumption
>
>    w = Integrate[v^2, {y, 0 , Pi}, Assumptions->Element[q,Integers]]
>
> this calculation takes 27 seconds.
>
> Oddly, if I immediate re-evaluate either of the cells it only takes 2.7
> seconds or 5 seconds, respectively, for the results to come up the
> second time,  but having evaluated the first cell (without the
> Assumption) doesn't seem to speed up the second cell (with the
> Assumption), so it's not like some integration rules have gotten loaded
> and cached in evaluating the first cell and used in evaluating the
> second cell. So, I don't see how I can use this speedup in any practical
> way (???).

Indeed, you cannot.

> The speed contrast comes when I then make a single DisplayPlot
> containing Plots of the w function from above and two very similar
> functions wp and wpp versus s for 10 instances of rules specifying
> values of a, s0 and q,  in other words, thirty decaying-sinusoid-like
> curves in all, each containing 5 or 6 complete cycles.  This plot
> appears on the screen faster than I can release the Enter key to create
> it.
>
> So, I'm just curious, how can a calculate and plot command like this
> be so stunningly fast?  and the trivially simple symbolic integration
> above be so slow?

I'm suprised that you think this. In general, direct numerical
computation is _much_ easier and faster than symbolic computation,
especially definite symbolic integration.

Cheers,
Paul

--
Paul Abbott                                   Phone: +61 8 6488 2734
School of Physics, M013                         Fax: +61 8 6488 1014
The University of Western Australia      (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009                      mailto:paul at physics.uwa.edu.au
AUSTRALIA                            http://physics.uwa.edu.au/~paul

• Prev by Date: Re: Re: spiral cipher
• Next by Date: Re: Complex Function Graphics for Mathematica
• Previous by thread: Re: having trouble controling evaluation
• Next by thread: Re: Computation speeds: numerical vs symbolic