# Resolve, Solve, Refine, etc., do not work, but Wolfram|Alpha does

As a teacher, I am trying to show some step-by-step execution. (Any help with tools would be most appreciated.)

Related, I cannot get the following to work:

Reduce[{Abs[1 + (1 - 2^x)/(1 + 2^x)] < ε, 0 < ε < 2}, {x}]


nor with Solve[], Resolve[], Refine[], etc.

Any ideas?

Interestingly, if I enter:

=solve |(1 - 2^x)/(1 + 2^x)+1|< ε, 0<ε<2 for x


Wolfram|Alpha solves this -- and also reports that Reduce[] cannot solve this with the methods available to it.

• You need to add the Reals domain, since Mathematica assumes everything is complex unless told otherwise: Reduce[{Abs[1 + (1 - 2^x)/(1 + 2^x)] < ε, 0 < ε < 2}, x, Reals] Nov 13 '17 at 6:35
• Thank you very much! I had seen on the help page: "Reduce[expr,vars] assumes by default that quantities appearing algebraically in inequalities are real, while all other quantities are complex." so it did not occur to me that that was necessary. Did I misunderstand the help page? Nov 13 '17 at 7:01
• I guess that that description was a bit imprecise, since e.g. Reduce[{Re[x + I y] < 1}, {x, y}] will show that the variables are still considered complex, and thus one has to do Reduce[Re[x + I y] < 1, {x, y}, Reals]. Nov 13 '17 at 7:07
• I do not understand, what do you mean by " step-by-step execution"? In your further discussion there is no step-by-step approach, but rather just a trial to solve it by the application of an appropriate function. Nov 13 '17 at 8:50
• @J.M., thank you for this example. Perhaps I should let the WR folk know. Nov 14 '17 at 8:22

According to your explanation, I developed a version of step-by-step solving of the inequality in question. I will write e instead of \[CurlyEpsilon] in order to better visualize it here, on the StackExchange. Here is the inequality and the domain for e:

ineq1 = Abs[1 + (1 - 2^x)/(1 + 2^x)] < e
dom=0 < e < 2


Let us check, if we need the absolute value function:

cond1 = 1 + (1 - 2^x)/(1 + 2^x) > 0;
Reduce[cond1 && x \[Element] Reals]

True


That is, the function Abs[] is unnecessary if x is Real. We, thus, form a new inequality:

ineq2 = 1 + (1 - 2^x)/(1 + 2^x) < e;


Let us now replace 2^x by y:

 ineq3 = ineq2 /. x -> Log[2, y]

(* 1 + (1 - y)/(1 + y) < e  *)


Let us take the unity into the RHS:

ineq4 = Map[Subtract[#, 1] &, ineq3]

(*  (1 - y)/(1 + y) < -1 + e  *)


Now we multiply the both parts by 1+y, expand the RHP and collect the terms with y in the RHP:

ineq5 = Map[Times[#, 1 + y] &, ineq4] // Expand // Collect[#, y] &

(*  1 - y < -1 + e + (-1 + e) y  *)


Now let us bring unity in the RHP, while the term containing y to the LHP and cancel there:

ineq6 = Map[Subtract[#, 1 + y (-1 + e)] &, ineq5] // Collect[#, y] &

(*   -e y < -2 + e   *)


and finally divide by e:

ineq7 = Map[Divide[#, -e] &, ineq6]

(*  y < -((-2 + e)/e)  *)


Now let us check, if the RHP of the obtained inequality is positive:

Reduce[-((-2 + e)/e) > 0 && dom]

(*  0 < e < 2  *)


The answer is yes. Then recalling the definition of yone can simply find the logarithm of both parts:

x < Log[2, -((-2 + e)/e)]

(*   x < Log[-((-2 + e)/e)]/Log[2] *)


Done.

Have fun!

• Comments are not for extended discussion; this conversation has been moved to chat.
– Kuba
Mar 20 '19 at 19:35