poly1 = a h^2 + b;
poly2 = d h + e;
Carl Woll and Rolf Mertig
Do[(poly1 + O[h]^3 )(poly2 + O[h]^3) // Normal, {100}]//Timing
{0.71 Second, Null}
Ted Ersek
Do[Series[poly1*poly2, {h, 0, 2}] // Normal, {100}] // Timing
{0.55 Second, Null}
Thomas Bell (Extended)
Do[Expand[poly1*poly2] /. h^n_?(# > 2 &) -> 0, {100}] // Timing
{0.16 Second, Null}
** And for larger polynomials**
poly1 =
Table[Random[Integer, {1, 50}]h^n, {n, 0, 100}];
poly2 =
Table[Random[Integer, {1, 50}]h^n, {n, 0, 100}];
Timing[Do[(poly1 + O[h]^51)(poly2 + O[h]^51) // Normal, {10}]]
{6.59 Second, Null}
Do[Series[poly1*poly2, {h, 0, 50}] // Normal, {10}] // Timing
{3.51 Second, Null}
Do[Expand[poly1*poly2] /. h^n_?(# > 50 &) -> 0, {10}] // Timing
{0.44 Second, Null}
** Separating out the expansions in the first computation shows that
most of the time is taken up with the expansions **
Do[(s1 = poly1 + O[h]^51; s2 = poly2 + O[h]^51;), {10}] // Timing
{6.15 Second, Null}
Timing[Do[s1 s2 // Normal, {10}]]
{0.5 Second, Null}
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
www.haystack.demon.co.uk
h...@haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565
*******************************************************
Thomas Bell wrote in message <7257a7$8...@smc.vnet.net>...
>I'm trying to multiply two huge polynomials, and memory is a major
>concern. I want to truncate the resulting polynomial to a specified
>power (N) in one of the variables (h), and I was wondering if it was
>possible to tell Mathematica to not bother multiplying two terms if the
>resulting power of h was greater than N. This is, of course, in the
>hope that this "automatic truncation" would save time and memory. For
>example, if
>
>poly1 = a h^2 + b;
>poly2 = d h + e;
>N = 2;
>
>then I would like to result to be
>
>result = a e h^2 + b d h + b e
>
>Instead, I have to write
>
>result = Expand[poly1 poly2]/.h^3 -> 0;
>
>which forces Mathematica to create the enormous product before
>truncating. Please cc to tom...@stanford.edu, and thanks in advance
>for any suggestions.
>
>