Some more questions Part II: Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg22188] Some more questions Part II: Mathematica
- From: "Jordan Rosenthal" <jr at ece.gatech.edu>
- Date: Thu, 17 Feb 2000 01:24:24 -0500 (EST)
- Organization: Georgia Institute of Technology, Atlanta GA, USA
- Sender: owner-wri-mathgroup at wolfram.com
Hi all,
This group has been so helpful I couldn't resist asking some more questions.
I've split them up into two messages, one for my general questions and the
other strictly Mathematica.
These are the Mathematica questions:
1) Consider the following expression:
intQ = FullSimplify[Integrate[Simplify[(1 - Cos[m*w])*(1 - Cos[n*w])],
{w, 0, wp}]]
Out =
wp +
((m*Cos[n*wp])/(m^2 - n^2) - 1/m)*Sin[m*wp] + ((n*Cos[m*wp])/(n^2 -
m^2) - 1/n)*Sin[n*wp]
In the output there are some common terms which I wanted to make obvious.
so I did the following:
intQ /. (n_ Cos[m_ wp]/(n_^2 - m_^2) - 1/n_)Sin[n_ wp] -> g[n, m]
Out =
wp + g[m, n] + g[n, m]
Now my question. I would like to be able to define g[n_,m_] according to
the replacement rule I just used above. Easy enough, but how can I register
this fact with Simplify so that it uses it during the simplification
process? I assume I need to define it with an upvalue in some way, but I
get protection complaints and am hesitant about using unprotect before
finding out if I'm on the right track. So am I?
2) When converting formulas to other languages (say C for example), it would
be nice to match similar terms as I did above manually; this would make it
easy to write modular functions that can be reused. Is there a
ComplexityFunction anyone can think of which, when given to
Simplify/FullSimplify, will return a formula with the number of matching
terms maximized (or number of dissimilar terms minimized)? It might have an
interesting application for compilers. (Is this ill-defined?)
Thanks,
Jordan