This question is related to this other one I posted on Stack Overflow some time ago. There, in a beautiful answer, acl (with some unhumble editing done by me) showed that the derivative of IntegerPart
is calculated numerically by a centered difference method of eighth order.
If you read the help for IntegerPart[]
you'll find:
Mathematical function, suitable for both symbolic and numerical manipulation.
At that time I assumed it was just a documentation (or program) bug.
I revisited the problem today because I needed to solve an equation that can be tracked down to something like:
Reduce[IntegerPart@x == x, x, Reals]
(*
-> Reduce::nsmet: This system cannot be solved with the methods available to Reduce. >>
*)
So again, Mma's failure to "symbolically manipulate" the IntegerPart[]
function is bothering me. And this time, the derivative calculation is not the issue.
All these functions {IntegerPart, FractionalPart, Ceiling, Floor, Round, PrimePi}
share the
Mathematical function, suitable for both symbolic and numerical manipulation.
legend in their help reference.
Look at their derivatives:
f = {IntegerPart, FractionalPart, Ceiling, Floor, Round, PrimePi};
GraphicsGrid[
Partition[
Plot[{#[u], D[#[x], x] /. x -> u}, {u, -1, 3},
PlotLabel -> Style[Framed[Hyperlink[#, "paclet:ref/" <> #] &@ToString@#], 16,
Blue, Background -> Lighter[Yellow]]] & /@ f,
2],
Frame -> All]
Moreover, the help file for NextPrime[]
doesn't state anything about its symbolic manipulation suitability, and the help for HeavisideTheta[]
says:
HeavisideTheta can be used in integrals, integral transforms and differential equations.
and its derivative is evaluated as DiracDelta[]
.
When you plot these functions you get:
So it seems that from the whole set, only HeavisideTheta
is treated symbolically.
However, when you try:
Reduce[HeavisideTheta@x == 1, x, Reals]
(*
-> Reduce::nsmet: This system cannot be solved with the methods available to Reduce. >>
*)
So the "symbolical manipulation" is not there (or so it looks like).
So the question is: What does it mean for a Mathematica function to be "suitable for symbolic manipulation"?