Re: Simplifying algebraic expr: howto?
- To: mathgroup@smc.vnet.net
- Subject: [mg11473] Re: Simplifying algebraic expr: howto?
- From: Allan Hayes <hay@haystack.demon.co.uk>
- Date: Thu, 12 Mar 1998 01:35:01 -0500
- References: <6dqqf0$rk0@smc.vnet.net> <6dv577$5jm@smc.vnet.net>
Daniel G. Hyams wrote: > > On 7 Mar 1998, Daniel G. Hyams wrote: > > > > > I apologize for the (probable) simpleness of this questions, but I am > > new to mathamatica... > > > > I have an expression (for example): > > > > u*(nx*u + ny*v) ---- (1) > > > > and a definition: > > > > theta x*u+ny*v > > > > How do I get mathematica to simplify the expression (1) such that it > > returns: > > > > u*theta ? > > Thanks to the couple of folks who responded to the questions, but I am > afraid that I did not make it clear enough... > > 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 (nx*u + ny*v) *t > > or > > nx^2*u + 2*nx*ny*u*v + ny^2*v nx*u+ny*v)^2 ^2 > > and I would like Mathematica to identify occurances like these. > > ----------------------------------------------------------- Daniel G. > Hyams > email: dhyams@ebicom.net > phone: (601) 323-4198 > ----------------------------------------------------------- Daniel, PolynomialReduce may help ?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. T nx*u+ny*v)*u + (-nx*u-ny*v)*v; z - (nx*u+ny*v) ; PolynomialReduce[T,{z},{u,v}] {{-u+v},t u-t v} So, with z T reduces to Last[%] t u-t v A problem with z2 *nx*u + ny*v^2 - v*t; is that z2 only implies z if v *0 Here is a way that might be built into a more automatic process (perhaps displaying all possibilities or allowing assumptions to be included initi lly) FactorList[z2] {{-1,1},{v,1},{t-nx u-ny v,1}} First/@Rest[%] {v,t-nx u-ny v} Last[PolynomialReduce[T,%[[2]],{u,v}]] t u-t v z3 x^2*u^2 + 2*nx*ny*u*v + ny^2*v^2 - t^2; The third example First/@FactorList[z3] {-1,t-nx u-ny v,t+nx u+ny v} Last[PolynomialReduce[T,%[[2]],{u,v}]] t u-t v -- Allan Hayes Mathematica Training and Consulting Leicester, UK hay@haystack.demon.co.uk http://www.haystack.demon.co.uk voice: +44 (0)116 271 4198 fax: +44 (0)116 271 8642