Computation speeds: numerical vs symbolic
- To: mathgroup at smc.vnet.net
- Subject: [mg55741] Computation speeds: numerical vs symbolic
- From: AES <siegman at stanford.edu>
- Date: Tue, 5 Apr 2005 03:21:06 -0400 (EDT)
- Organization: Stanford University
- Sender: owner-wri-mathgroup at wolfram.com
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. 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 (???).
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?