Re: Replacing terms and expanding one at a time
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1836] Re: [mg1804] Replacing terms and expanding one at a time
- From: adams (Adam Strzebonski)
- Date: Mon, 7 Aug 1995 20:24:26 -0400
You can use a series for replacement. Then only the coefficents
at "significant" powers of y are computed:
In[1]:= e = x^10; rep = {x-> a1 y + a2 y^2 + a3 y^3 + a4 y^4};
In[2]:= (e2 = Normal[Series[ e /. rep, {y,0,15}]]);//Timing
Out[2]= {6.05 Second, Null}
In[3]:= rep1 = {x -> Series[a1 y + a2 y^2 + a3 y^3 + a4 y^4,
{y,0,6}]};
(* The lowest order "unsignificant" term in x^10 will be here
(a1 y)^9*O[y]^7 = O[y]^16 *)
In[4]:= (e3 = Normal[e/.rep1]);//Timing
Out[4]= {0.0833333 Second, Null}
In[5]:= e2-e3
Out[5]= 0
Adam Strzebonski
WRI
Begin forwarded message:
>From: Stephen Corcoran <corcoran at news.ox.ac.uk>
>Subject: [mg1804] Replacing terms and expanding one at a time
>Organization: Oxford University
Suppose I have an expression like
e = x^10,
where I want to replace x by something like
rep = {x-> a1 y + a2 y^2 + a3 y^3 + a4 y^4}
I then want to expand e, keeping terms up to say , order 15. I can do
this
by using:
e2 = Normal[Series[ e /. rep,{y,0,15}]]
Presumably, however, this is a relatively inefficient way of
proceeding as it
involves manipulation of the product of 10 4th degree polynomials.
Is there
a way to replace one of the x's at a time, and then do the
expansions,i.e.
something like:
e2 = x^9 (a1 y + a2 y^2 + a3 y^3 + a4 y^4)
e3 = x^8 (a1^2 y^2 + ..... + a4^2 y^8)
e4 = x^7 (a1^3 y^3 + ..... + a4^3 y^12)
e5 = x^6 (a1^4 y^4 + ..... + 4 a3 a4^3 y^15)
..
and so on ?
If so, is there any better in terms of speed and/or memory usage? Is
this
more or less what Mathematica does anyway?
Thanks.
----------------------------------------------------------------------
---
Stephen Corcoran, email: corcoran at stats.ox.ac.uk
(internet)
Dept. of Statistics, corcoran at uk.ac.ox.stats
(janet)
University of Oxford,
1, South Parks Road phone: (01865) 272879
OXFORD, OX1 3TG fax: (01865) 272595
----------------------------------------------------------------------
----