How to test whether a function is positive over the entire range of an interval?
To find the intervals for which f[x]
is positive
f[x_] = -x^3 + x^2 + 7*x;
g[x_] = Piecewise[{{f[x], f[x] > 0}}, I];
Plot[{f[x], g[x]}, {x, -3, 4},
PlotStyle -> {Directive[Red, Dashed], Blue}]
FunctionDomain[g[x], x]
(* x < (1/2)*(1 - Sqrt[29]) ||
0 < x < (1/2)*(1 + Sqrt[29]) *)
% // N
(* x < -2.19258 || 0. < x < 3.19258 *)
EDIT:
Or, more succinctly
FunctionDomain[Piecewise[{{1, f[x] > 0}}, I], x]
(* x < (1/2)*(1 - Sqrt[29]) ||
0 < x < (1/2)*(1 + Sqrt[29]) *)
I like the answers using Reduce
and FunctionDomain
. Here's a numerical possibility that uses Minimize
to find the global minimum on the domain and tests to see if it's positive.
f[x_] = -x^3 + x^2 + 7*x;
0 <= First@Minimize[{f[x], 0 <= x <= 4}, x]
(* False *)
Alternatively, if needed, you can use NMinimize
:
NMinimize[{f[x], 0 <= x <= 4}, x]
(* {-20., {x -> 4.}} *)
0 <= First@NMinimize[{f[x], 0 <= x <= 4}, x]
(* False *)