I do not know if a single Reduce
call will do it, but I can help OP with analyzing this problem.
A simple observation is that OPs expression only depends on the difference b2-b1
. Therefore, let us replace this by a new symbol that I will call u
. The assumptions that OP has given imply 0<u<bMax
that we will use below.
Replace b2-b1
with u
as follows:
x2=x/.{b2->b1+u}//Simplify
(* u (1+u)^2 (u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]) *)
Note that the expression does not contain b1
and does not contain b2
. The first factor is positive, u>0
. The second factor is positive, (1+u)^2>0
. Therefore the inequality x2>0
is equivalent to the third factor being positive. Let me use Reduce
for just that problem:
reduce[bMax_] := Reduce[u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]>0 && 0<u<bMax];
The idea is that if we provide a number for bMax
, then there us only one variable left, namely u
, and then Reduce
is much more likely to produce something useful. Here are two examples
reduce[3/2]
(* 0 < u < 3/2 *)
reduce[2163/1000]
(* False *)
In the first example, all u
are allowed, meaning all u
that satisfy the obvious inequality 0<u<bMax
. In the second example, no u
is allowed. By experimenting a little bit, the following picture emerges:
- If
0 < bMax <= 3/2
, then all u
that satisfy 0<u<bMax
are allowed.
- If
bMax >= threshold
, then no u
is allowed. The threshold is near 2.16258...
, a symbolic expression is given below.
- If
3/2 < bMax < threshold
, then the variable u
must lie in an interval of the form lower[bMax] < u < bMax
. The function lower[bMax]
is defined below.
Here is an example from the third case:
reduce[2]
(* 1.57...<u<2 *)
The lower bound is some Root
object.
Code to produce the lower bound directly would be
lower[bMax_]:=u/.First[Solve[{u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]==0,u>0},u]];
The threshold
mentioned above is that value bMax
where lower[threshold]
becomes equal to threshold
. Explicit code for this is
threshold=u/.First[Solve[{With[{bMax=u},
u^3+bMax u (2+3 u)-2 bMax (1+u)^2 Log[1+u]]==0,u>0}]]
(* 2.16... given as a Root object*)
Note. I did not provide a proof of each step, especially when I wrote down the three cases above. Some more work would be required to prove these things in detail. OP may also want to try to run reduce[bMax]
with bMax
symbolic, maybe it will return something useful.
Plot. Here is a plot for 3/2 < bMax < threshold
:
The yellow curve is not linear but it is approximately linear:
(* a linear approximation to lower[bMax] *)
lowerApproximate[bMax_]:=threshold*(bMax-3/2)/(threshold-3/2);
This was generated using
With[{aux=u^3/(-u (2+3 u)+2 (1+u)^2 Log[1+u])},ParametricPlot[{{aux,aux},{aux,u}},{u,0,threshold},AspectRatio->1,AxesLabel->{"bMax"},PlotLegends->{"bMax","lower[bMax]"}]]