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