MathGroup Archive 2007

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

Search the Archive

Re: small question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg74880] Re: small question
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Tue, 10 Apr 2007 05:11:11 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <evd3or$5fo$1@smc.vnet.net>

KFUPM wrote:
> Dear Group
> 
> I have two variables multiplied by each other
> 
> N1 x    (N1 times x) which is a part of an equation.
> 
> What i want to do is to replace  this multiplication by Nx1 (one
> variable) and i want to do this automatically using Mathematica,
> because i have a huge number of such terms, for example, N2 y, N3 z,
> N4 x, N5 y.... etc.
> 
> Thereofore, i need to get this transformation:
> 
> N1 x ------> Nx1
> N2 y ------> Ny2
> N3 z ------> Nz3
> and so on.
> 
> Please notice that the letter N doesn't change only numbers(1,2,...)
> and (x,y,z....) do.
> 
> 
> Any help in this regard is highly appreciated.

You could use a transformation rule. In the following expression, you 
just have to provide the list of the variables not in the format N1, N2, 
etc.

expr = N1*x + N2*x + N3*x + N1*y + N2*y + N3*y +
  N1*z + N2*z + N3*z;

vars = {x, y, z};

expr /. (n_)*(x_ /; MemberQ[vars, x]) :>
  ToExpression[StringInsert[ToString[n], ToString[x], 2]]

Nx1 + Nx2 + Nx3 + Ny1 + Ny2 + Ny3 + Nz1 + Nz2 + Nz3

Regards,
Jean-Marc


  • Prev by Date: Re: Enquirey
  • Next by Date: RootSum 2
  • Previous by thread: small question
  • Next by thread: Re: small question