MathGroup Archive 2008

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

Search the Archive

Re: How to select terms wanted in a series

  • To: mathgroup at smc.vnet.net
  • Subject: [mg85929] Re: How to select terms wanted in a series
  • From: Albert Retey <awnl at arcor.net>
  • Date: Thu, 28 Feb 2008 02:44:54 -0500 (EST)
  • References: <fq3bhj$gas$1@smc.vnet.net>

Hi,

> I have an expression, which is a sum of large number of terms, e.g.
> 
> expression = x + 2x*y - x*y*z + u*x*y + 3u^2
> 
> And I want to select out terms with the factor (x*y). e.g.
> 
> The terms in "expression" that I want are 2x*y, -x*y*z, u*x*y
> 
> My first step is,
> 
> allterms = Apply[List, expression]
> 
> Then, I don't know how to extract the terms I want, I use
> 
> Select[allterms, (# == x*y*_)&]
> 
> But It doesn't work.
> 
> Anyone has some good ideas? any help will be appreciated much!
> Sincerely  Barrow
> 

this would work in this case:

Cases[allterms, HoldPattern[Times[___, x, ___, y, ___]]]

Note that there are many pitfalls when working with patterns on 
mathematical expressions, so it is usually better to use functions that 
do the right thing. Here the following should be much more robust, I think:

subterm=x*y;

subterm*List@@Coefficient[expression,subterm]

Depending on what you are trying to achieve I would recommend to look up 
Coefficient and CoefficientList in the Help.

hth,

albert


  • Prev by Date: Re: find and count partially identical sublist
  • Next by Date: Re: Using Fourier and InverseFourier instead of Convolve
  • Previous by thread: Re: How to select terms wanted in a series
  • Next by thread: Labeling axes in VectorFieldPlot3D?