5
$\begingroup$

From the determinant of a matrix $\mathbf M$, I derive a symbolic expression of a polynomial say for example, 1 + a*x^2 + b*x^4 + Sqrt[a^2 - (x + c)^2] - Sqrt[a^2 - (x - c)^2] == 0 . (My actual equation is far more complex than that) The obvious way to eliminate square roots manually is to shift to right hand side the sqrt term and square both side, rearrange and repeat until the all square root terms vanish. This way we preserve equation without any limit approach. Does Mathematica have a function for this?

$\endgroup$
1
  • $\begingroup$ Why do you want to eliminate the square root? Why not just solve your equation? Also Sqrt[x^-c] is non-syntactic. $\endgroup$ Jun 19, 2017 at 16:09

1 Answer 1

6
$\begingroup$

You can use Eliminate for this. Include auxiliary variables s1 and s2, and then eliminate them:

Eliminate[
    {1 + a x^2 + b x^4 + s1 - s2 == 0, s1^2 == x^2 + c, s2^2 == x^2 - c},
    {s1, s2}
]

-1 + 4 x^2 - 4 a x^2 + 8 a x^4 - 6 a^2 x^4 - 4 b x^4 + 4 a^2 x^6 - 4 a^3 x^6 + 8 b x^6 - 12 a b x^6 - a^4 x^8 + 8 a b x^8 - 12 a^2 b x^8 - 6 b^2 x^8 - 4 a^3 b x^10 + 4 b^2 x^10 - 12 a b^2 x^10 - 6 a^2 b^2 x^12 - 4 b^3 x^12 - 4 a b^3 x^14 - b^4 x^16 == 4 c^2

An alternative usually suggested by @DanielLichtblau is the use of GroebnerBasis:

GroebnerBasis[
    {1 + a x^2 + b x^4 + s1 - s2, s1^2 - x^2 - c, s2^2 - x^2 + c},
    x,
    {s1, s2}
]

{1 + 4 c^2 - 4 x^2 + 4 a x^2 - 8 a x^4 + 6 a^2 x^4 + 4 b x^4 - 4 a^2 x^6 + 4 a^3 x^6 - 8 b x^6 + 12 a b x^6 + a^4 x^8 - 8 a b x^8 + 12 a^2 b x^8 + 6 b^2 x^8 + 4 a^3 b x^10 - 4 b^2 x^10 + 12 a b^2 x^10 + 6 a^2 b^2 x^12 + 4 b^3 x^12 + 4 a b^3 x^14 + b^4 x^16}

$\endgroup$
4
  • $\begingroup$ I just corrected my question. Typo mistake. But I think I know how to modify your solution. My apologies. $\endgroup$
    – Aschoolar
    Jun 20, 2017 at 14:56
  • $\begingroup$ in case if Eliminate works, is there a way to remove '==' sign from results, so that its results can be used further for calculations? $\endgroup$
    – Aschoolar
    Jun 20, 2017 at 15:01
  • $\begingroup$ I wish I understood what GroebnerBasis is. It seems like a powerful function, but I don't know how to use it to solve problems... $\endgroup$
    – QuantumDot
    Jun 21, 2017 at 1:58
  • $\begingroup$ GroebnerBasis[] can actually handle the expressions with square roots, but you need to pick out the desired expression from the results: Select[GroebnerBasis[1 + a*x^2 + b*x^4 + Sqrt[a^2 - (x + c)^2] - Sqrt[a^2 - (x - c)^2], x], FreeQ[#, Power[_, _Rational]] &]. @Quantum, it's basically a generalization of Gaussian elimination. See this math.SE question, or read Cox/Little/O'Shea for an intro. $\endgroup$ Jul 30, 2017 at 20:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.