How to solve this tricky equation?
From the docs for Solve
: "Solve
gives generic solutions only." And the returned empty solution is generically correct.
From the docs for Reduce
: "The result of Reduce[expr,vars]
always describes exactly the same mathematical set as expr
."
This is not strictly true. For instance, 1/(x/y)
evaluates automatically to the generically equivalent y/x
, independently of Reduce
or Solve
. But even inside Reduce
, a similar transformation must take place in the following, since division by y
is indicated in the formula which should exclude y == 0
:
Reduce[1/(1 - x/y) == 0, x]
(* y == 0 && x != 0 *)
Well, somehow FunctionDomain
manages to be a bit more careful (although I don't think anything that lets 1/(x/y)
evaluate can save that case).
eqn = ((1/2017)*x - a)/(x/a - 2017) == (x/a - 2017)/((1/2017)*x - a);
Reduce[eqn && FunctionDomain[eqn /. Equal -> Subtract, x], {x}]
(* (a == -2017 && 4068289 + x != 0) || (a == 2017 && -4068289 + x != 0) *)
FullSimplify[((1/2017)*x - a)/(x/a - 2017) == (x/a - 2017)/((1/2017)*x - a)]
yields
a == 4068289/a
Solving that yields {{a->2017},{a-> -2017}}
.
Simply doing ((1/2017)*x - a)/(x/a - 2017) == (x/a - 2017)/((1/2017)*x - a) /. {{a->2017},{a-> -2017}} // FullSimplify
yields {True,True}
, indicating the equation is true independent of x
.