Re: Re: Simplifying algebraic expr: howto?
- To: mathgroup@smc.vnet.net
- Subject: [mg11437] Re: [mg11397] Re: Simplifying algebraic expr: howto?
- From: Daniel Lichtblau <danl@wolfram.com>
- Date: Thu, 12 Mar 1998 01:33:23 -0500
- References: <6dqqf0$rk0@smc.vnet.net> <199803090113.UAA06480@smc.vnet.net.>
Daniel G. Hyams wrote:
> ...
> The code that follows does indeed work:
>
> T = (nx*u+ny*v)*u
> T /. (nx*u+ny*v -> t)
>
> Mathematica: t*u
>
> But, this seems to do just a textual-type substitution. The following
> snippet does not work (like I want it to):
>
> T = (nx*u+ny*v)*u + (-nx*u-ny*v)*v
> T /. (nx*u+ny*v -> t)
>
> Mathematica: t*u + v(-nx*u - ny*v)
>
> Obviously, the solution that I want is: t*u-t*v
>
> The point is that the variable "t" is in a very complicated expression,
> which can be considerably simplified by factoring it out, if only I
> could tell Mathematica its identity. It also appears as
> v*nx*u + ny*v^2 = v(nx*u + ny*v) = v*t
>
> or
>
> nx^2*u + 2*nx*ny*u*v + ny^2*v = (nx*u+ny*v)^2 = t^2
>
> and I would like Mathematica to identify occurances like these.
>
> ----------------------------------------------------------- Daniel G.
> Hyams
> email: dhyams@ebicom.net
> phone: (601) 323-4198
> -----------------------------------------------------------
In[4]:= ??PolynomialReduce
PolynomialReduce[poly, {poly1, poly2, ... }, {x1, x2, ... }] yields a
list
representing a reduction of poly in terms of the polyi. The list has
the
form {{a1, a2, ... }, b}, where b is minimal and a1 poly1 + a2 poly2
+ ...
+ b is exactly poly.
Attributes[PolynomialReduce] = {Protected} Options[PolynomialReduce] =
{CoefficientDomain -> Rationals, Modulus -> 0,
MonomialOrder -> Lexicographic, ParameterVariables -> {}, Sort ->
False}
In[5]:= ee = T = (nx*u+ny*v)*u + (-nx*u-ny*v)*v;
In[6]:= Last[PolynomialReduce[ee, nx*u+ny*v-t, Variables[ee]]] Out[6]= t
u - t v
We use Variables[ee] because any variable not listed, e.g. t, will be
placed lexicographically after those explicitly given.
For non-polynomial input you would need to map PolynomialReduce to
relevant parts; for input with outrageously large exponents you may
need to go inside the powers (PolynomialReduce will balk if exponents
are too big).
Daniel Lichtblau
Wolfram Research
- References:
- Re: Simplifying algebraic expr: howto?
- From: "Daniel G. Hyams" <dgh2@Ra.MsState.EDU>
- Re: Simplifying algebraic expr: howto?