       Re: [Q] Approximating polynomials w/several variables

• To: mathgroup at smc.vnet.net
• 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 wolfram.com

```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 physics.berkeley.edu

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
happening.

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

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

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

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

Daniel Lichtblau
Wolfram Research
danl at wolfram.com

```

• 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