Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Replacing an expression by an expression

  • To: mathgroup at smc.vnet.net
  • Subject: [mg55647] Re: [mg55625] Replacing an expression by an expression
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Fri, 1 Apr 2005 05:36:19 -0500 (EST)
  • References: <200503310624.BAA15217@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

carlos at colorado.edu wrote:
> I have a 8 x 8 symbolic matrix B of complicated entries.
> Several partial expressions, however, can be simplified. Sample:
> 
> rep= {(J12*x14-J11*y14)*(J12*(x32+x43)-J11*(y32+y43)) -> A0*(A1-A0)};
> 
> The left expression appears verbatim in entry B[[1,1]], which is
> 
> -(L21*(J12*x14-J11*y14)*(J12*(-x32-x43)+J11*(y32+y43)))/
> (16*A412*J*(J11^2+J12^2))
> 
> But when I say B=B/.rep, nothing happens.  For a few entries I could do
> cut and paste by hand:
> 
> -(L21*  A0*(A1-A0)    )/
> (16*A412*J*(J11^2+J12^2))
> 
> But it get tedious and error prone for 64.  Any suggestions on how to
> get Mathematica to do the replacement?

Your notion of verbatim might need some tuning. Those expressions, while 
mathematically equivalent, do not evaluate to the same thing (look at 
placement of minus signs).

Algebraic replacement comes up from time to time, e.g. in

http://forums.wolfram.com/mathgroup/archive/2004/Feb/msg00205.html

Here is the tactic noted in that post.

replacementFunction[expr_,rep_,vars_] := If [
    PolynomialQ[Numerator[expr],vars] &&
    PolynomialQ[Denominator[expr],vars],
      PolynomialReduce[expr, rep, vars][[2]], expr]

expr = -(L21*(J12*x14-J11*y14)*(J12*(-x32-x43)+J11*(y32+y43)))/
   (16*A412*J*(J11^2+J12^2));

rep = (J12*x14-J11*y14)*(J12*(x32+x43)-J11*(y32+y43))-A0*(A1-A0);

InputForm[replacementFunction[expr, rep, Variables[expr]]]

Out[12]//InputForm=
(-((A0^2*L21)/(A412*J*(J11^2 + J12^2))) +
   (A0*A1*L21)/(A412*J*(J11^2 + J12^2)))/16


Daniel Lichtblau
Wolfram Research




  • Prev by Date: Re: Simplifying Jacobian elliptic functions
  • Next by Date: Re: plotting weighted graphs
  • Previous by thread: Re: Replacing an expression by an expression
  • Next by thread: Re: Replacing an expression by an expression