MathGroup Archive 2005

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

Search the Archive

Re: Common factors in a list

  • To: mathgroup at
  • Subject: [mg58366] Re: Common factors in a list
  • From: David Bailey <dave at>
  • Date: Tue, 28 Jun 2005 21:56:59 -0400 (EDT)
  • References: <d9r50q$568$>
  • Sender: owner-wri-mathgroup at

John Reed wrote:
> I'm working with a list (vector) that's composed of functions such as 
> complex exponentials and Bessel functions.  Some of the functions are common 
> to each element of the list.  I'm trying to find a way to do the following:
>    {a x, a y, a z}-> a *{x, y, z}
> In this expression, a, x, y, z are polynomials, exponentials and/or Bessel 
> functions.
> So far I haven't had any luck with this.  Does anyone have a simple 
> solution?
> John Reed 

The best bet is to make use of Factor. This seems rather more powerful 
than the help might suggest - for example it recognises that Exp[a+b] is 
Exp[a]Exp[b]. To use Factor, convert the list into a polynomial in an 
otherwise unused variable - say q:

Plus@@MapIndexed[#1 q^(#2[[1]]-1)&,{a Exp[m],b Exp[m+n], c Exp[m]}]

a*E^m + b*E^(m + n)*q + c*E^m*q^2


E^m*(a + b*E^n*q + c*q^2)

It is not possible to convert the result back into a product of a term 
and a list (as you specified) because this will evaluate and leave you 
where you began! Instead, we can replace the product with a CircleTimes:

E^m*(a + b*E^n*q + c*q^2) /. (p1_)*(p2_Plus) :> p1 \[CircleTimes] 
CoefficientList[p2, q]

E^m \[CircleTimes] {a, b*E^n, c}

David Bailey

  • Prev by Date: Re: Optimal number of sheets
  • Next by Date: Re: fitting a function
  • Previous by thread: Re: Common factors in a list
  • Next by thread: Re: Common factors in a list