MathGroup Archive 1997

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: [Q] Approximating polynomials w/several variables

  • To: mathgroup at
  • Subject: [mg7418] Re: [Q] Approximating polynomials w/several variables
  • From: Daniel Lichtblau <danl>
  • Date: Sat, 31 May 1997 15:07:29 -0400 (EDT)
  • Organization: Wolfram Research, Inc.
  • Sender: owner-wri-mathgroup at

Jack Boyce wrote:
> Hello,
> I have a very large polynomial in Mathematica that has several "small"
> variables (each substantially less than unity), and I would like to expand
> it to lowest order in those small variables.  As an illustration, take the
> following example:
>       P[x,y,z] = x^3*y*z + x*y^2*z + x*y^3*z + x^3*y*z^2
> The lowest-order expansion keeps only the first two terms:
>                  x^3*y*z + x*y^2*z
> since the third term is dominated by the second (when y is small) and the
> fourth term is dominated by the first (when z is small).  Note that altough
> the first term is of total order 5, compared with order 4 of the second
> term, it is not known to be smaller than the second term because we don't
> know if x,y,z are small or large relative to each other.
> My question is: can Mathematica do this useful operation with some existing
> function or add-on, or should I just write this myself?  The closest thing
> I've seen is the power-series expansion function, which can be applied to
> each variable in turn but doesn't give the result I need.
> Any help/advice is greatly appreciated!
> Jack Boyce
> jboyce at

Here is a way to do this. You want to keep only thos terms whose
power-products are not divisible by those of other terms. These can by
found by getting a Groebner basis of the set of monomials. Then we need
to do a bit of work to recover the coefficients (not necessary in your
example, though, since they are all one there). I show all the
intermediate steps in the example below, just so you see exactly what is

In[27]:= ee = 40*x^3*y*z + 11*x*y^2*z - 18*x*y^3*z + 28*x^3*y*z^2;

In[28]:= InputForm[ff = GroebnerBasis[Apply[List, ee]]]
Out[28]//InputForm= {x*y^2*z, x^3*y*z}

In[29]:= InputForm[gg = Coefficient[ee, ff]]
Out[29]//InputForm= {11, 40}

In[30]:= gg . ff // InputForm
Out[30]//InputForm= 40*x^3*y*z + 11*x*y^2*z

Daniel Lichtblau
Wolfram Research
danl at

  • Prev by Date: Re: error in complex integration
  • Next by Date: Re: "Save Graphic As BMP" problems...
  • Previous by thread: Re: error in complex integration
  • Next by thread: Re: Version 3.0 Speed