Q: pattern and simplify

• To: mathgroup at smc.vnet.net
• Subject: [mg22271] Q: pattern and simplify
• From: "H. J. Wang" <hjwang at ieas.econ.sinica.edu.tw>
• Date: Mon, 21 Feb 2000 20:00:36 -0500 (EST)
• Organization: Computing Center, Academia Sinica
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,

I'd like to know how to simply an expression that involves many
cumulative distribution functions (CDF) and probability density
functions
(PDF) of a standard normal variable.  In short, how can I make Mathematica
recognize the "pattern" of "2*mcdf[x]->mycdf[x]", so that it would
automatically substitute, say, "2*mcdf[x^2+1]" by "mycdf[x^2+1]"?  I'm
using Mathematica 3.0.

The expression comes from a partial derivative of a function which
has some CDFs and PDFs.  The result returned by Mathematica is messy, and I
believe the expression can be greatly simplified if Mathematica can recognize
the CDF and PDF, and substitute them with appropriate symbols.  For
example, since a standard normal variable's CDF is "1/2*(1 +
Erf[x/Sqrt[2]])", expressions like "1 + Erf[x/Sqrt[2]]" should be
substitute with "2*myCDF[x]", for all function forms of x. Similarly,
"Exp[-(x^2)/2]" should be substituted with "Sqrt[2 Pi]*myPDF[x]".

What I can do now is using something like

D[ myfunc[x], x] /.{2*mcdf[x]->mycdf[x], Sqrt[2 Pi]*mpdf[-x]->mypdf[x]}

but this works only for literal "x" in the expressions.  How can I
make Mathematica recognize the "pattern" of "2*mcdf[x]->mycdf[x]", so that it
would automatically translate, say, "2*mcdf[x^2+1]" into "mycdf[x^2+1]"?