:orphan:
# SNESComputeJacobianDefault
Computes the Jacobian using finite differences.
## Synopsis
```
#include "petscsnes.h"
PetscErrorCode SNESComputeJacobianDefault(SNES snes, Vec x1, Mat J, Mat B, void *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 -*** 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 -*** Either wp or ds (see `MATMFFD_WP` or `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
## See Also
`SNES`, `SNESSetJacobian()`, `SNESSetJacobian()`, `SNESComputeJacobianDefaultColor()`, `MatCreateSNESMF()`
## Level
intermediate
## Location
src/snes/interface/snesj.c
## Examples
src/ts/tutorials/ex10.c
src/ts/tutorials/ex15.c
src/ts/tutorials/ex17.c
src/ts/tutorials/ex4.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/snes/interface/snesj.c)
[Index of all SNES routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)