12

Why does

Solve[Sqrt[x + Sqrt[x]] - Sqrt[x - Sqrt[x]] ==
      m Sqrt[x/(x + Sqrt[x])], x, Reals, Method -> Reduce]

give a different result than

Reduce[Sqrt[x + Sqrt[x]] - Sqrt[x - Sqrt[x]] ==
       m Sqrt[x/(x + Sqrt[x])], x, Reals]

note that the first one says $1<m<2$ while the second one says $1<m\le 2$.
The documentation says

With Method->Reduce, Solve uses only equivalent transformations and finds all solutions.

celtschk
  • 19,133
  • 1
  • 51
  • 106
Zero
  • 727
  • 5
  • 13

1 Answers1

12

Solve by default works with generic parameters, even if you use the option Method -> Reduce. To get the special parameter value m = 2 you need to set MaxExtraConditions to All:

Solve[Sqrt[x + Sqrt[x]] - Sqrt[x - Sqrt[x]] == m Sqrt[x/(x + Sqrt[x])], x, Reals, 
    Method -> Reduce, MaxExtraConditions -> All]
Out[1]= {{x -> ConditionalExpression[(4 - 8 m + 8 m^2 - 4 m^3 + m^4)/(4 - 8 m + 4 m^2),
    1 < m <= 2]}}
rm -rf
  • 88,781
  • 21
  • 293
  • 472
Andrzej Kozlowski
  • 2,839
  • 19
  • 20
  • As discussed in this thread, Even both Method -> Reduce, MaxExtraConditions -> All are turned on, Solve and Reduce could give different results. For example, Solve[x^2 + y^2 <= r^2, {x, y}, Method -> Reduce, MaxExtraConditions -> All], and the Reduce counterpart. – Yi Wang Feb 10 '14 at 14:08