Re: Algebraic simplification and speed
- To: mathgroup at smc.vnet.net
- Subject: [mg52681] Re: [mg52665] Algebraic simplification and speed
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Thu, 9 Dec 2004 20:22:34 -0500 (EST)
- Reply-to: hanlonr at cox.net
- Sender: owner-wri-mathgroup at wolfram.com
x=(x1^2+2 y1^2+3 Z1^2)/Sqrt[x1^2+y1^2+z1^2];
x = x /.
t_/Sqrt[x1^2+y1^2+z1^2]->t/r
(x1^2 + 2*y1^2 + 3*Z1^2)/r
Bob Hanlon
>
> From: Steve Gray <stevebg at adelphia.net>
To: mathgroup at smc.vnet.net
> Date: 2004/12/07 Tue AM 04:10:09 EST
> To: mathgroup at smc.vnet.net
> Subject: [mg52681] [mg52665] Algebraic simplification and speed
>
> 1. I'm not sure how to do manually aided simplification. Suppose Mathematica solves a set of equations and
> comes up with something like
> x=(x1^2 + 2 y1^2+3 Z1^2)/Sqrt[x1^2+y1^2+z1^2] and similarly for y and z. I want to manually tell it
> to use r=Sqrt[x1^2+y1^2+z1^2] for the denominator from here on in all expressions and further work.
> How do I do that? (The actual expressions are much more complex.) I could manually substitute "r"
> for the Sqrt by copying/pasting etc. in the further expressions, but doing this in the actual
> equations is very error-prone, so I need Mathematica's help in subsequent stages.
> Unless Mathematica does a great job of removing redundant calculations, my manually defined
> temporary variables will also speed up the calculations.
>
> 2. I had a Solve inside a loop. It was taking too long for the millions of numerical executions I
> need. Then I changed the code, executing a Solve once outside the loop, using symbols instead of
> numbers. Then I copied the resulting symbolic expressions into the loop, leaving Mathematica to do only
> numeric multiplies etc. in the loop, there now being no Solve in the loop. This made it about 30
> times faster. This seems like an obvious thing to do, but is there a more standard way? I almost
> didn't think of that trick, obvious as is may be to experienced users.
>
>
> Thanks for any help.
>
> Steve Gray
>
>