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]"?
Thanks in advance.