FunctionMonotonicity[f,x]
finds the monotonicity of the function f with the variable x over the reals.
FunctionMonotonicity[f,x,dom]
finds the monotonicity of f when x is restricted to the domain dom.
FunctionMonotonicity[{f,cons},x,dom]
gives the monotonicity of f when x is restricted by the constraints cons.
FunctionMonotonicity
FunctionMonotonicity[f,x]
finds the monotonicity of the function f with the variable x over the reals.
FunctionMonotonicity[f,x,dom]
finds the monotonicity of f when x is restricted to the domain dom.
FunctionMonotonicity[{f,cons},x,dom]
gives the monotonicity of f when x is restricted by the constraints cons.
Details and Options
- Monotonicity is also known as increasing, decreasing, non-decreasing, non-increasing, strictly increasing and strictly decreasing.
- By default, the following definitions are used:
-

+1 non-decreasing, i.e.
for all 

0 constant, i.e.
for all 

-1 non-increasing, i.e.
for all 

Indeterminate neither non-decreasing nor non-increasing - The constant function is both non-decreasing and non-increasing.
- With the setting StrictInequalitiesTrue, the following definitions are used:
-

+1 increasing, i.e.
for all 

-1 decreasing, i.e.
for all 

Indeterminate neither increasing nor decreasing - Possible values for dom include: Reals, Integers, PositiveReals, PositiveIntegers, etc. The default is Reals.
- The function f should be a real-valued function for all x in the domain dom that satisfy the constraints cons.
- cons can contain equations, inequalities or logical combinations of these.
- The following options can be given:
-
Assumptions $Assumptions assumptions on parameters GenerateConditions True whether to generate conditions on parameters PerformanceGoal $PerformanceGoal whether to prioritize speed or quality StrictInequalities True whether to require strict monotonicity - Possible settings for GenerateConditions include:
-
Automatic nongeneric conditions only True all conditions False no conditions None return unevaluated if conditions are needed - Possible settings for PerformanceGoal are "Speed" and "Quality".
Examples
open all close allBasic Examples (3)
Find the monotonicity of a function:
FunctionMonotonicity[E ^ x, x]Find the monotonicity of a function with the variable restricted by constraints:
FunctionMonotonicity[{x ^ 2, x < 0}, x]Find the monotonicity of a function over the integers:
FunctionMonotonicity[Cos[2 Pi n] n, n, Integers]Scope (5)
Monotonicity over unrestricted reals:
FunctionMonotonicity[Sin[x], x]FunctionMonotonicity[2 ^ x, x]FunctionMonotonicity[Sqrt[x ^ 2] - x, x]Plot[{Sin[x], 2 ^ x, Sqrt[x ^ 2] - x}, {x, -3, 3}]A function that is not real valued has Indeterminate monotonicity:
FunctionMonotonicity[Log[x], x]The function is real valued and increasing for positive
:
FunctionMonotonicity[{Log[x], x > 0}, x]Monotonicity with constraints on the variable:
FunctionMonotonicity[{Sin[x], -Pi / 2 ≤ x ≤ Pi / 2}, x]FunctionMonotonicity[{Sqrt[x ^ 2] - x, x ≥ 0}, x]Strict monotonicity of a function:
FunctionMonotonicity[Floor[x], x, StrictInequalities -> True]FunctionMonotonicity[Floor[x] + x, x, StrictInequalities -> True]
is non-decreasing, but not strictly increasing.
is strictly increasing:
Plot[{Floor[x], Floor[x] + x}, {x, -10, 10}]Functions with symbolic parameters:
FunctionMonotonicity[x ^ 3 + a x + b, x]Options (5)
Assumptions (1)
FunctionMonotonicity gives a conditional answer here:
FunctionMonotonicity[a x + 1, x]Check monotonicity for other values of
:
FunctionMonotonicity[a x + 1, x, Assumptions -> a < 0]GenerateConditions (2)
By default, FunctionMonotonicity may generate conditions on symbolic parameters:
FunctionMonotonicity[E ^ (a x), x]With GenerateConditionsNone, FunctionMonotonicity fails instead of giving a conditional result:
FunctionMonotonicity[E ^ (a x), x, GenerateConditions -> None]This returns a conditionally valid result without stating the condition:
FunctionMonotonicity[E ^ (a x), x, GenerateConditions -> False]By default, all conditions are reported:
FunctionMonotonicity[x / a ^ 2, x]With GenerateConditionsAutomatic, conditions that are generically true are not reported:
FunctionMonotonicity[x / a ^ 2, x, GenerateConditions -> Automatic]PerformanceGoal (1)
Use PerformanceGoal to avoid potentially expensive computations:
FunctionMonotonicity[a x ^ 5 + b x ^ 3 + c x ^ 2 + d x, x, PerformanceGoal -> "Speed"]The default setting uses all available techniques to try to produce a result:
FunctionMonotonicity[a x ^ 5 + b x ^ 3 + c x ^ 2 + d x, x]StrictInequalities (1)
By default, FunctionMonotonicity computes the non-strict monotonicity:
FunctionMonotonicity[#, x]& /@ {Ramp[x] + 1, Ramp[x] + x}With StrictInequalitiesTrue, FunctionMonotonicity computes the strict monotonicity:
FunctionMonotonicity[#, x, StrictInequalities -> True]& /@ {Ramp[x] + 1, Ramp[x] + x}Ramp[x]+1 is non-decreasing, but is not strictly increasing. Ramp[x]+x is strictly increasing:
Plot[{Ramp[x] + 1, Ramp[x] + x}, {x, -2, 2}]Applications (19)
Basic Cases (5)
Positive powers
are all non-decreasing for the positive reals
:
Table[FunctionMonotonicity[f, x, PositiveReals], {f, {x^1 / 3, Sqrt[x], x, x^2, x^3}}]Plot[{x^1 / 3, Sqrt[x], x, x^2, x^3}, {x, 0, 2}, Rule[...]]This shows that the whole family is non-decreasing:
FunctionMonotonicity[x^α, x, PositiveReals, Assumptions -> α > 0]In fact, they are all increasing:
FunctionMonotonicity[x^α, x, PositiveReals, Assumptions -> α > 0, StrictInequalities -> True]Negative powers
are non-increasing for the positive reals
:
Table[FunctionMonotonicity[f, x, PositiveReals], {f, {(1/x^1 / 3), (1/Sqrt[x]), (1/x), (1/x^2), (1/x^3)}}]Plot[{(1/x^1 / 3), (1/Sqrt[x]), (1/x), (1/x^2), (1/x^3)}, {x, 0, 2}, PlotLegends -> "Expressions"]This shows that the whole family is decreasing:
FunctionMonotonicity[x^α, x, PositiveReals, Assumptions -> α < 0, StrictInequalities -> True]Exponential functions
are increasing for
and decreasing for
:
{FunctionMonotonicity[a^x, x, Assumptions -> a > 1], FunctionMonotonicity[a^x, x, Assumptions -> 0 < a < 1]}Plot[{0.5^x, 1.5^x}, {x, -3, 3}]Trigonometric functions are non-monotonic over the reals:
FunctionMonotonicity[Sin[x], x]Plot[Sin[x], {x, -3Pi, 3Pi}]But over smaller ranges they are monotone:
FunctionMonotonicity[{Sin[x], -Pi / 2 ≤ x ≤ Pi / 2}, x]Plot[Sin[x], {x, -Pi / 2, Pi / 2}]
is non-decreasing but not increasing:
FunctionMonotonicity[Ceiling[x], x]FunctionMonotonicity[Ceiling[x], x, StrictInequalities -> True]Plot[Ceiling[x], {x, -5, 5}]Combination Cases (5)
The sum of functions with monotonicity
has monotonicity
:
{f, g} = {Cos[x] - x, 5Erfc[x / 5]};{FunctionMonotonicity[f, x], FunctionMonotonicity[g, x]}The sum has the same monotonicity:
FunctionMonotonicity[f + g, x]Plot[{f, g, f + g}, {x, -10, 10}, Rule[...]]The product of non-negative non-decreasing functions is non-decreasing:
{f, g} = {Floor[E ^ x], Erf[x] + 1};{FunctionMonotonicity[f, x], FunctionMonotonicity[g, x]}Their product is also non-decreasing:
FunctionMonotonicity[f g, x]Plot[{f, g, f g}, {x, -2, 2}, ...]The composition of non-decreasing functions is non-decreasing:
{f, g} = {Function[x, Sinh[x / 3]], Function[x, x + Sin[x]]};{FunctionMonotonicity[f[x], x], FunctionMonotonicity[g[x], x]}Their compositions are also non-decreasing:
{FunctionMonotonicity[f[g[x]], x], FunctionMonotonicity[g[f[x]], x]}Plot[{f[g[x]], g[f[x]]}, {x, -10, 10}, PlotLegends -> "Expressions"]The inverse of an increasing function is increasing:
f = Function[x, ConditionalExpression[x ^ 3 - x ^ 2 + x, Element[x, Reals]]]FunctionMonotonicity[f[x], x]The inverse is also increasing:
g = InverseFunction[f]FunctionMonotonicity[g[x], x]Plot[{f[x], g[x]}, {x, -2, 2}, Rule[...]]The range of a non-decreasing function
on an interval
is
:
f[x_] := Gamma[x] + Log[x ^ 2]FunctionMonotonicity[{f[x], 1 ≤ x ≤ 5}, x]{f[1], f[5]}For comparison, compute the range using FunctionRange:
FunctionRange[{f[x], 1 ≤ x ≤ 5}, x, y]Plot[{f[x], f[1], f[5]}, {x, 1, 5}]Calculus (4)
f = ArcTan[x] + Sin[x] / (2x ^ 2);Plot[f, {x, 1 / 2, 30}, PlotRange -> All]
is non-decreasing and bounded from above for
:
FunctionMonotonicity[{f, x ≥ 2}, x]FunctionSign[{2 - f, x ≥ 2}, x]The limit of
at
equals the supremum of
:
Limit[f, x -> Infinity]MaxValue[{f, x ≥ 2}, x]f = 2 ^ -n - 3 ^ -n;Plot[f, {n, 1, 10}]Terms of the series are non-negative, hence the partial sums are increasing:
FunctionSign[{f, n ≥ 1}, n]s = Sum[f, {n, 1, k}]FunctionMonotonicity[{s, k ≥ 1}, k]The partial sums are bounded from above, hence the series converges:
FunctionSign[{1 - s, k ≥ 1}, k]Use Sum to compute the sum of the series:
Sum[f, {n, 1, Infinity}]If
is non-negative, then
is a non-decreasing function of
:
f = t ^ 2 Sin[5t] ^ 4;FunctionSign[f, t]Plot[f, {t, -5, 5}]g = Integrate[f, {t, 0, x}]FunctionMonotonicity[g, x]Plot[g, {x, -5, 5}]Write a differentiable function as a sum of an increasing function and a decreasing function:
f = x ^ 4 - 2x ^ 3 + x;finc = Integrate[Max[D[f, x], 0] + 1, x]//Togetherfdec = Integrate[Min[D[f, x], 0] - 1, x]//TogetherCheck whether the functions need to be adjusted by a constant:
f - (finc + fdec)//SimplifyFunctionMonotonicity[finc, x]FunctionMonotonicity[fdec, x]Plot[{f, finc, fdec}, {x, -1, 2}]Probability (3)
CDF is always non-decreasing:
cdf = CDF[NormalDistribution[], x]FunctionMonotonicity[cdf, x]Plot[cdf, {x, -5, 5}]SurvivalFunction is always non-increasing:
sf = SurvivalFunction[NormalDistribution[], x]FunctionMonotonicity[sf, x]Plot[sf, {x, -5, 5}]Quantile is always non-decreasing in
:
qf = Quantile[NormalDistribution[], x]FunctionMonotonicity[{qf, 0 < x < 1}, x]Plot[qf, {x, 0, 1}]Equation Solving and Optimization (2)
If
is increasing and continuous in
and
, then
has exactly one root in
:
f[x_] := RiemannR[x ^ 2 + 1] - 2FunctionMonotonicity[{f[x], 0 ≤ x ≤ 3}, x, StrictInequalities -> True, "Continuity" -> True]Use Solve to find the root:
Solve[RiemannR[x ^ 2 + 1] - 2 == 0 && 0 ≤ x ≤ 3, x]Plot[f[x], {x, 0, 3}, Epilog -> {Red, Point[{x /. %[[1]], 0}]}]Compute the maximum of
when
is a non-decreasing function:
f[t_] := Erf[t]
g[x_, y_] := x ^ 3 - 5x y + y ^ 3
constraints = x ^ 2 + y ^ 2 ≤ 1;FunctionMonotonicity[f[t], t]{mval, mpoint} = Maximize[{g[x, y], constraints}, {x, y}]//RootReduceThe maximum value of
is
and is attained at
:
{f[mval], mpoint}For comparison, compute the maximum directly:
Maximize[{f[g[x, y]], constraints}, {x, y}]//RootReduceShow[{Plot3D[{f[g[x, y]], f[mval]}, {x, -1, 1}, {y, -1, 1}, ...], Graphics3D[{Red, PointSize[Large], Point[{x, y, f[mval]} /. mpoint]}]}]Properties & Relations (2)
The sum and composition of non-decreasing functions are non-decreasing:
f[x_] := ArcTan[x]
g[x_] := 2 ^ xFunctionMonotonicity[#, x]& /@ {f[x], g[x], f[x] + g[x], f[g[x]], g[f[x]]}Plot[{f[x], g[x], f[x] + g[x], f[g[x]], g[f[x]]}, {x, -2, 2}]The derivative of a non-decreasing function is non-negative:
f = x ^ 3 - x ^ 2Cos[x] + x Sin[x]FunctionMonotonicity[f, x]Use D to compute the derivative:
g = D[f, x]Use FunctionSign to verify that the derivative is non-negative:
FunctionSign[g, x]Plot the function and the derivative:
Plot[{f, g}, {x, -7, 7}]See Also
Related Guides
History
Text
Wolfram Research (2020), FunctionMonotonicity, Wolfram Language function, https://reference.wolfram.com/language/ref/FunctionMonotonicity.html.
CMS
Wolfram Language. 2020. "FunctionMonotonicity." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FunctionMonotonicity.html.
APA
Wolfram Language. (2020). FunctionMonotonicity. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FunctionMonotonicity.html
BibTeX
@misc{reference.wolfram_2026_functionmonotonicity, author="Wolfram Research", title="{FunctionMonotonicity}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/FunctionMonotonicity.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_functionmonotonicity, organization={Wolfram Research}, title={FunctionMonotonicity}, year={2020}, url={https://reference.wolfram.com/language/ref/FunctionMonotonicity.html}, note=[Accessed: 13-June-2026]}