# Nonlinear Problems

`SciMLBase.NonlinearProblem`

— TypeDefines a nonlinear system problem. Documentation Page: https://nonlinearsolve.sciml.ai/dev/basics/NonlinearProblem/

**Mathematical Specification of a Nonlinear Problem**

To define a Nonlinear Problem, you simply need to give the function $f$ which defines the nonlinear system:

\[f(u,p) = 0\]

and an initial guess $u₀$ of where `f(u,p)=0`

. `f`

should be specified as `f(u,p)`

(or in-place as `f(du,u,p)`

), and `u₀`

should be an AbstractArray (or number) whose geometry matches the desired geometry of `u`

. Note that we are not limited to numbers or vectors for `u₀`

; one is allowed to provide `u₀`

as arbitrary matrices / higher-dimension tensors as well.

**Problem Type**

**Constructors**

```
NonlinearProblem(f::NonlinearFunction,u0,p=NullParameters();kwargs...)
NonlinearProblem{isinplace}(f,u0,p=NullParameters();kwargs...)
```

`isinplace`

optionally sets whether the function is in-place or not. This is determined automatically, but not inferred.

Parameters are optional, and if not given, then a `NullParameters()`

singleton will be used, which will throw nice errors if you try to index non-existent parameters. Any extra keyword arguments are passed on to the solvers. For example, if you set a `callback`

in the problem, then that `callback`

will be added in every solve call.

For specifying Jacobians and mass matrices, see the NonlinearFunctions page.

**Fields**

`f`

: The function in the problem.`u0`

: The initial guess for the steady state.`p`

: The parameters for the problem. Defaults to`NullParameters`

.`kwargs`

: The keyword arguments passed on to the solvers.