SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.analysis.differentiation.multivariate
Class BorderedHessian

java.lang.Object
  extended by com.numericalmethod.suanshu.matrix.doubles.matrixtype.MatrixMathImpl<T>
      extended by com.numericalmethod.suanshu.matrix.doubles.matrixtype.MatrixStorageImpl<SymmetricMatrix>
          extended by com.numericalmethod.suanshu.matrix.doubles.matrixtype.dense.triangle.SymmetricMatrix
              extended by com.numericalmethod.suanshu.analysis.differentiation.multivariate.BorderedHessian
All Implemented Interfaces:
DeepCopyable, AbelianGroup<Matrix>, Monoid<Matrix>, Ring<Matrix>, Matrix, MatrixAccessor, MatrixRing, Densifiable, MatrixDimension

public class BorderedHessian
extends SymmetricMatrix

A bordered Hessian matrix consists of the Hessian of a multivariate function f, and the gradient of a multivariate function g.

We assume that the function f is continuous so that the bordered Hessian matrix is square and symmetric.

For scalar functions f and g, we have

           |
           |       ∂g         ∂g    |
           |  0   ----, ..., ----   |
           |       ∂x1        ∂xn    |
           | ∂g    ∂f         ∂f    |
 H(f,g) =  |----  ----, ..., ----   |
           | ∂x1   ∂x21       ∂x1∂xn  |
           | .                 .    |
           | .                 .    |
           | .                 .    |
           | ∂g    ∂f         ∂f    |
           |----  ----, ..., ----   |
           | ∂xn   ∂xn∂x1     ∂x2∂xn  |
 

The bordered Hessian matrix is computed numerically using the finite difference method.

See Also:
FiniteDifference, Wikipedia: Bordered Hessian

Field Summary
 RealScalarFunction g
          the multivariate function g, usually a constraint function
 
Fields inherited from class com.numericalmethod.suanshu.matrix.doubles.matrixtype.dense.triangle.SymmetricMatrix
dim
 
Constructor Summary
BorderedHessian(RealScalarFunction f, RealScalarFunction g, double... x)
          Construct a bordered Hessian matrix for multivariate functions f and g at point x.
 
Method Summary
 double discriminant()
          Compute the determinant of the bordered Hessian at x.
 
Methods inherited from class com.numericalmethod.suanshu.matrix.doubles.matrixtype.dense.triangle.SymmetricMatrix
add, deepCopy, equals, get, getColumn, getRow, hashCode, minus, ONE, scaled, set, t, toDense, toString, ZERO
 
Methods inherited from class com.numericalmethod.suanshu.matrix.doubles.matrixtype.MatrixStorageImpl
getMatrixData, setMatrixData
 
Methods inherited from class com.numericalmethod.suanshu.matrix.doubles.matrixtype.MatrixMathImpl
add, call, getSample, minus, multiply, multiply, nCols, nRows, opposite, setColumn, setColumn, setRow, setRow
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

g

public final RealScalarFunction g
the multivariate function g, usually a constraint function

Constructor Detail

BorderedHessian

public BorderedHessian(RealScalarFunction f,
                       RealScalarFunction g,
                       double... x)
Construct a bordered Hessian matrix for multivariate functions f and g at point x.

The dimension is (n+1) x (n+1), where n is the domain dimension of both f and g.

Parameters:
f - a multivariate function, usually an objective function
g - a multivariate function, usually a constraint function
x - the point to evaluate the bordered Hessian at
Method Detail

discriminant

public double discriminant()
Compute the determinant of the bordered Hessian at x.

Returns:
the discriminant

SuanShu, a Java numerical and statistical library

Copyright © 2011 Numerical Method Inc. Ltd. All Rights Reserved.