hessMTg

Purpose

Computes numerical Hessian using gradient procedure.

Format

h = hessMTg(&gfct, par1, data1)
Parameters:
  • &gfct (scalar) – pointer to procedure computing either 1xK gradient or NxK Jacobian.

  • par1 (struct) – an instance of structure of type PV containing parameter vector at which Hessian is to be evaluated

  • data1 (struct) – structure of type DS containing any data needed by gfct

Returns:

h (KxK matrix) – Hessian.

Examples

// Define a PV structure
struct PV p1;

// Create p1 PV structure
p1 = pvCreate;

// Fill PV structure
p1 = pvPack(p1, 0.1|0.2, "P");

// Create data matrix
x = seqa(1, 1, 15);

// Function to compute Hessian
proc gfct(struct PV p0, x);
   local p, g1, g2;

   // Unpack parameters
   p = pvUnpack(p0, "P");

   // Define gradients
   g1 = exp(-p[2] * x);
   g2 = -p[1] * x .* g1;

  retp(g1~g2);
endp;

// Find Hessian
h = hessMTg(&gfct, p1, x);

Remarks

par1 must be created using the pvPack() procedures.

Source

hessmt.src