Martin (see below) gives a good explanation of the difference between AD and
symbolic
differentiations. I'm of the opinion we can use both. However, the real
issue as far
as I'm concerned (from an optimizer's point of view, which may also be
that of ODE and
PDE folk) is that right now none of the offerings that we have are easy to use.
Indeed,
usability is one of the key issues in my current efforts to improve optimization
tools.
There are several people in UK from both AD and R sides who are communicating,
an initiative that Shaun F. helped get going. I'm copying the folk I think
are
involved -- forgive omissions and pass things along please. The main purpose of
this
message is to ensure Martin's offer is noted, as in my opinion his knowledge
of the
R internals is very valuable.
Cheers, JN
[MM stumbling over on old thread ... he'd be interested]
>>>>> >>>>> "GaGr" == Gabor Grothendieck
<ggrothendieck at gmail.com>
>>>>> >>>>> on Wed, 15 Apr 2009 09:53:18 -0400
writes:
>>>>>
GaGr> Not sure if this is sufficient for your needs but R does include
symbolic
GaGr> differentiation, see ?D, and the Ryacas and rSymPy
GaGr> packages interface R to the yacas and sympy computer algebra
GaGr> systems (CAS) and those system include symbolic differentiation.
No, symbolic differentiation is not enough.
Automatic Differentiation (AD) is something much more general (in one
way) and much less mathematical from a classical view point:
But then, AD is much more generally useful for minimization as, basically,
the input is an R function
f(x) {with x multidimensional}
or f(x1,x2, ..., xp) {with scalar x1, x2, ..}
and the output is again an R function
which computes f() and all {or just selected} partial
derivatives d f / d{xi}.
Now consider that the function f() can contain if() and while()
clauses and conceptually ever language feature of R.
In practice, I'm pretty sure the list of features would have to
be restricted, similarly as they'd have to for an R compiler to
be feasible.
I agree that AD for R would be very nice and could be very
useful.
I'd also be interested to help AD people learn the S4 classes
and methods (hoping that it's close enough to what they call
"operator overloading" something I'd presume to be less general
than the powerful S4 class/methods system).
Martin Maechler, ETH Zurich