Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

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

Search the Archive

Re: Simplifying complicated expressions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg110217] Re: Simplifying complicated expressions
  • From: David Bailey <dave at removedbailey.co.uk>
  • Date: Wed, 9 Jun 2010 07:18:56 -0400 (EDT)
  • References: <hufu1o$eel$1@smc.vnet.net>

On 06/06/10 11:42, David Park wrote:
> "The normal
> /. and ->  substitutions and patterns are not adequate for this."
>
> That sounds like a completely unfounded statement so why don't you
> demonstrate it?
>
>
> David Park
> djmpark at comcast.net
> http://home.comcast.net/~djmpark/
>
>
> From: S. B. Gray [mailto:stevebg at ROADRUNNER.COM]
>
>
> Suppose I  have a long complex expression in which terms like
> (x^2+y^3-x^2y^2+Sqrt[z3+y2]) (for a simple example) appear many times
> along with various powers and the reciprocals of it, etc. To make the
> expression comprehensible and to make the computation faster, I would
> like to substitute say "f1xyz" for it everywhere it appears. The normal
> /. and ->  substitutions and patterns are not adequate for this. Of
> course at evaluation time I want to compute f1xyz only once and not have
> the final formula revert to the original variables. How do I prevent that?
>
> Also a welcome addition to Mathematica would be the ability to find these
> repeated expressions automatically and put them in, because doing it
> manually is very error-prone and slow.
>
> Tips will be appreciated!
>
> Steve Gray
>
>
>
>
In[10]:= x^2 + y^3 + b - x^2 y^2 + Sqrt[z3 + y2] +
   Sqrt[x^2 + y^3 - x^2 y^2 + Sqrt[z3 + y2]] //.
  x^2 + y^3 - x^2 y^2 + Sqrt[z3 + y2] -> flxyz

Out[10]= b + Sqrt[flxyz] + flxyz

Notice that Mathematica is not fooled by the fact that the 'b' term is 
embedded in one of the expressions that need to be replaced. Notice also 
that I used //. to obtain complete replacement. I was a little surprised 
that this was necessary, but the idea of //. (ReplaceAllRepeated) is 
that it looks again at subexpressions that have been changed.

Extracting common sub expressions from a larger expression is a fairly 
tricky problem in general to do automatically, but you can get a fair 
way with /. and //. .

The safest way to do this is to select the relevant subexpression using 
repeated clicking (or Control-.) so that you pick up a whole, valid 
expression, and then copy/paste it to the other side of the replacement 
operator.

David Bailey

www.dbaileyconsultancy.co.uk


  • Prev by Date: Re: Programatically creating delayed assignment
  • Next by Date: Re: SendMail under Mac OS X
  • Previous by thread: Re: Simplifying complicated expressions
  • Next by thread: Re: Simplifying complicated expressions