MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Numerical derivatives of compiled functions

  • To: mathgroup at
  • Subject: [mg32873] Re: Numerical derivatives of compiled functions
  • From: Thomas Anderson <tga at>
  • Date: Sat, 16 Feb 2002 04:35:36 -0500 (EST)
  • Organization: Stanford University
  • References: <a4if7p$9on$>
  • Reply-to: tga at
  • Sender: owner-wri-mathgroup at

It has always bothered me that ND[] does not hold the function argument
when it constructs the symbolic expression for the derivative prior to
evaluation. One way to get around this problem is to define a "wrapper"
function that is defined only for real numbers:

In:  f = Compile[x, ...];

In:  F[x_Real] := f[x]

In:  ND[F[x], ...]

This tactic works well for me. 


In article <a4if7p$9on$1 at>, Kyriakos Chourdakis
<k.chourdakis at> wrote:

> Dear all,
> I have a compiled function and want to find the Hessian matrix numerically
> at a specific point. The function ND[] does not work even in simple cases
> like:
> In:  cf = Compile[{x, y}, Module[{a = 3}, Print[x, " ", y]; a x^a y]]
> Out: CompiledFunction[{x, y},Module[{a = 3}, Print[x, " ", y]; a x^a y],
> -CompiledCode-]
> In:  ND[cf[q, 4], q, 2]
>      CompiledFunction::"cfsa": "Argument q at position 1 should be a
> machine-size real number.
>      q 4
> Out: 144.
> My guess is that ND[] tries to evaluate the function symbolically first. In
> my problem I have the product/sum of over 10000 primitive functions, and
> symbolic computations for all second-order derivs will take for ever.
> When plotting is concerned, I suppose that the option Compiled does the
> trick. How would that work with ND[]?
> Cheers,
> Kyriakos

  • Prev by Date: RE: A Learning TableForm Problem
  • Next by Date: Re: Very urgent problem...PLEASE help me!
  • Previous by thread: Numerical derivatives of compiled functions
  • Next by thread: Partitions