[Date Index]
[Thread Index]
[Author Index]
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**
| |