# Interface HessianSchurComplement<S extends DMatrix>

All Superinterfaces:
`HessianMath`
All Known Implementing Classes:
`HessianSchurComplement_Base`, `HessianSchurComplement_DDRM`, `HessianSchurComplement_DSCC`

```public interface HessianSchurComplement<S extends DMatrix>
extends HessianMath```

Given the already computed Jacobian (broken up into a left and right side) compute the decomposed approximate Hessian matrix, i.e. [A B, B D]

```     A=L'*L
B=L'*R
D=R*R
```

Where L and R are the left and right hand side of the Jacobian, respectively

• ## Method Summary

Modifier and Type Method Description
`void` ```computeGradient​(S jacLeft, S jacRight, DMatrixRMaj residuals, DMatrixRMaj gradient)```
Computes the gradient given the Jacobian and the residuals.
`void` ```computeHessian​(S jacLeft, S jacRight)```
Given the left and right hand side of the Jacobian compute the Hessian.
`S` `createMatrix()`
Creates a matrix of the same type that this interface can process

### Methods inherited from interface org.ddogleg.optimization.math.HessianMath

`divideRowsCols, extractDiagonals, init, initializeSolver, innerVectorHessian, setDiagonals, solve`
• ## Method Details

• ### computeHessian

void computeHessian​(S jacLeft, S jacRight)
Given the left and right hand side of the Jacobian compute the Hessian.
Parameters:
`jacLeft` - (input) Jacobian left side
`jacRight` - (input) Jacobian right side

`jacLeft` - (input) Jacobian left side
`jacRight` - (input) Jacobian right side
`residuals` - (Input) residuals
`gradient` - (Output) gradient