Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

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

Search the Archive

Re: How do I create a parametric expression?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg68572] Re: How do I create a parametric expression?
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Wed, 9 Aug 2006 23:57:20 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <ebc7b6$l58$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

axlq wrote:
> I'm trying to figure out how to simplify a large expression so that it's
> expressed in terms of a sub-expression that's factored into the larger
> one.
> 
> My expression looks like this:
> 
> -((1 + 2*n)*((a^4*k^2 + a^2*(-1 + k^2*(q - z)^2) + 2*(q - z)^2)
>    *Cos[k*Sqrt[a^2 + (q - z)^2]] - k*(a^2 - 2*(q - z)^2)
>      *Sqrt[a^2 + (q - z)^2]*Sin[k*Sqrt[a^2 + (q - z)^2]])
>        *Sin[((1 + 2*n)*Pi*z)/L])/(8*Pi*w*(a^2 + (q - z)^2)^(5/2))
> 
> Now, I *know* there are places in there were Sqrt[a^2+(q-z)^2] occurs,
> either by itself or raised to various powers.  If I want to define
> 
> R:=Sqrt[a^2+(q-z)^2]
> 
> ...then how can I make Mathematica re-state my expression in terms
> of R?  The ReplaceRepated[] function doesn't seem to do the job.
> 
> I need to do this because I am translating the expressions into
> Visual Basic code for an Excel application, and it would be nice to
> find groupings of terms repeated throughout the expression that I
> need to calculate only once.
> 
> -Alex
> 
Hi Alex,

Use Replace [1] with level specification [2]:

expr = -((1 + 2*n)*((a^4*k^2 + a^2*(-1 + k^2*(q - z)^2) + 2*(q - 
z)^2)*Cos[k*Sqrt[a^2 + (q - z)^2]] - k*(a^2 - 2*(q - z)^2)*Sqrt[a^2 + (q 
- z)^2]*Sin[k*Sqrt[a^2 + (q - z)^2]])*Sin[((1 + 
2*n)*Pi*z)/L])/(8*Pi*w*(a^2 + (q - z)^2)^(5/2))

Replace[expr, Sqrt[a^2 + (q - z)^2] -> R, {0, Infinity}]

--> -(((1 + 2*n)*((a^4*k^2 + a^2*(-1 + k^2*(q - z)^2) + 2*(q - 
z)^2)*Cos[k*R] - k*R*(a^2 - 2*(q - z)^2)*Sin[k*R])*Sin[((1 + 
2*n)*Pi*z)/L])/(8*Pi*w*(a^2 + (q - z)^2)^(5/2)))

Why level specifications are important? Compare

Cases[expr, Sqrt[a^2 + (q - z)^2]]
--> {}

vs

Cases[expr, Sqrt[a^2 + (q - z)^2], {0, Infinity}]
--> {Sqrt[a^2 + (q - z)^2], Sqrt[a^2 + (q - z)^2], Sqrt[a^2 + (q - z)^2]}

Best regards,
Jean-Marc

[1] http://documents.wolfram.com/mathematica/functions/Replace

[2] _The Mathematica Book_, "A.3.6 Level Specifications", 
http://documents.wolfram.com/mathematica/book/section-A.3.6


  • Prev by Date: Re: How do I create a parametric expression?
  • Next by Date: Re: How do I create a parametric expression?
  • Previous by thread: Re: How do I create a parametric expression?
  • Next by thread: Re: How do I create a parametric expression?