Can't verify a solution of a simple algebraic equation.

Hello,

I wanted to see if Mathematica 9.0.1 (64bit under Linux) can solve a simple problem from Analytical Geometry: to derive the ellipse’s equation from the fact that the sum of distances to the foci is a constant with the given coordinates of the foci: F1(Sqrt[a^2-b^2],0) and F2(-Sqrt[a^2-b^2],0).

PF1 = Sqrt[(x - Sqrt[a^2 - b^2])^2 + y^2];PF2 = Sqrt[(x + Sqrt[a^2 - b^2])^2 + y^2];sol = Solve[PF1 + PF2 == 2*a, y]

This produced the correct solutions. However, when I wanted to let Mathematica verify them it failed, i.e.

(PF1+PF2) /. sol // FullSimplify

did NOT produce {2*a, 2*a}. Please see the attached nb file. So, my question is: is there some way of forcing Mathematica to verify this solution correctly?

I tried the same thing on Maple 17 (64bit Linux) and it behaved exactly the same as Mathematica, i.e. solved the equation correctly but could not verify the solution by substituting it into the expression PF1+PF2 or other expressions like (PF1+PF2)^2 - 4*a^2. On Reduce it could not even solve it, let alone verify…

Any ideas?

Kind regards
Tigran

Why did you use 2 for the sum of the distances? Doesn’t the sum depend on a and b?

No, the sum doesn’t depend on b, it is a well-known fact (from elementary analytical geometry) that the sum of distances to the foci is 2*a (for the ellipse of the form x^2/a^2 + y^2/b^2 = 1)

Ok, I see what you are doing. The distance of the foci from the origin, c, is Sqrt[ a*a - b*b].

You are assuming a > b. Maybe that should go into the calculation.

I tried that as well, i.e. added a > b assumption as a second argument to FullSimplify[] but it still did not manage to do it.

PF1 = Sqrt[(x - Sqrt[a^2 - b^2])^2 + y^2];
PF2 = Sqrt[(x + Sqrt[a^2 - b^2])^2 + y^2];
res = (PF1 + PF2) /. sol;
Reduce[{sum == res, a >= b, b > 0, -a <= x <= a}, {sum, x}, Reals]
b > 0 && a >= b && sum == 2 a && -a <= x <= a

I left out the Solve step in the previous post

sol = Solve[PF1 + PF2 == 2*a, y]

Thank you, Frank, your solution completely answers my question. Now I know that I should use Reduce[] function in such situations.