Skip to main content
`Ctrl`+`K`

# SNESComputeJacobianDefault

Computes the Jacobian using finite differences.

## Synopsis

    #include "petscsnes.h"
    PetscErrorCode SNESComputeJacobianDefault(SNES snes, Vec x1, Mat J, Mat B, PetscCtx ctx)

Collective

## Input Parameters

- snes - the `SNES` context

- x1 - compute Jacobian at this point

- ctx - application’s function context, as set with `SNESSetFunction()`

## Output Parameters

- J - Jacobian matrix (not altered in this routine)

- B - newly computed Jacobian matrix to use with preconditioner (generally the same as `J`)

## Options Database Keys

- -snes_fd - Activates `SNESComputeJacobianDefault()`

- -snes_fd_coloring - Activates a faster computation that uses a graph coloring of the matrix

- -snes_test_err etol - Square root of function error tolerance, default square root of machine epsilon (1.e-8 in double, 3.e-4 in single)

- -mat_fd_type (wp|ds) - See `MATMFFD_WP` and `MATMFFD_DS`

## Notes

This routine is slow and expensive, and is not currently optimized to take advantage of sparsity in the problem. Although `SNESComputeJacobianDefault()` is not recommended for general use in large-scale applications, It can be useful in checking the correctness of a user-provided Jacobian.

An alternative routine that uses coloring to exploit matrix sparsity is `SNESComputeJacobianDefaultColor()`.

This routine ignores the maximum number of function evaluations set with `SNESSetTolerances()` and the function evaluations it performs are not counted in what is returned by of `SNESGetNumberFunctionEvals()`.

This function can be provided to `SNESSetJacobian()` along with a dense matrix to hold the Jacobian

## Developer Note

The function has a poorly chosen name since it does not mention the use of finite differences

## See Also

SNES: Nonlinear Solvers, `SNES`, `SNESSetJacobian()`, `SNESComputeJacobianDefaultColor()`, `MatCreateSNESMF()`

## Level

intermediate

## Location

src/snes/interface/snesj.c

## Examples

src/ts/tutorials/ex17.c
src/ts/tutorials/ex4.c
src/ts/tutorials/ex15.c
src/ts/tutorials/ex10.c

Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages