RE: Replacement problem
- To: mathgroup at smc.vnet.net
- Subject: [mg36926] RE: [mg36906] Replacement problem
- From: "DrBob" <drbob at bigfoot.com>
- Date: Wed, 2 Oct 2002 03:32:14 -0400 (EDT)
- Reply-to: <drbob at bigfoot.com>
- Sender: owner-wri-mathgroup at wolfram.com
Look at the FullForm of your expressions:
FullForm[Sqrt[X + Y + Z]]
Power[Plus[X, Y, Z], Rational[1, 2]]
FullForm[f]
Plus[Times[Rational[1, 4], C, Power[F, -2], Power[Plus[X, Y,
Z], Rational[-1, 2]]], Times[B, Plus[A,
Power[Plus[X, Y, Z], Rational[1, 2]]]]]
FullForm[h]
Plus[Times[B, Plus[A, Power[Plus[X, Y, Z],
Rational[1, 2]]]], Times[C, Power[Plus[Times[4, Power[F, 2]],
Power[Plus[X, Y, Z], Rational[1, 2]]], -1]]]
The square root appears in two different forms! A solution is to
replace both patterns:
f = B*(A + Sqrt[X + Y + Z]) + C/(Sqrt[X + Y + Z]/4*F^2);
f /. {Sqrt[X + Y + Z] -> Q, 1/Sqrt[X + Y + Z] -> 1/Q}
(4*C)/(F^2*Q) + B*(A + Q)
This is very annoying, of course, and it may not take care of every
case. Looking at the FullForm should help, when it fails.
Bobby
-----Original Message-----
From: Carlos Felippa [mailto:carlos at colorado.edu]
To: mathgroup at smc.vnet.net
Subject: [mg36926] [mg36906] Replacement problem
These expressions are condensation of larger ones
(about 700 lines or so each) but they illustrate random
substitution failures in 4.2. Question: how can the
substitution Sqrt[...]->Q always be made to work?
The help file under ReplaceAll, ReplaceRepeated, etc,
does not address this problem.
Thanks
f=B*(A+Sqrt[X+Y+Z])+C/(Sqrt[X+Y+Z]/4*F^2);
Print[(f/.Sqrt[X+Y+Z]->Q)//InputForm];
B*(A + Q) + (4*C)/(F^2*Sqrt[X + Y + Z]) (* fails *)
g=B*(A+Sqrt[X+Y+Z])+C/(Sqrt[X+Y+Z]*4*F^2);
Print[(g/.Sqrt[X+Y+Z]->Q)//InputForm];
B*(A + Q) + C/(4*F^2*Sqrt[X + Y + Z]) (* fails *)
h=B*(A+Sqrt[X+Y+Z])+C/(Sqrt[X+Y+Z]+4*F^2);
Print[(h/.Sqrt[X+Y+Z]->Q)//InputForm];
B*(A + Q) + C/(4*F^2 + Q) (* works *)