0
$\begingroup$

Let's consider the following system of polynomial equations. The s and the capital S are two different variables (I know the capital-s is not recommended).

eqOrig = {s^2 - S^2 - b[0] - (S b[3] - s b[4])^2/(
     4 (s^2 + S^2)^2) + (-s b[3] - S b[4])^2/(
     4 (s^2 + S^2)^2) - (S b[2] + s b[5])^2/(
     4 (s^2 + S^2)^2) + (-s b[2] + S b[5])^2/(
     4 (s^2 + S^2)^2) - (S b[1] - s b[6])^2/(
     4 (s^2 + S^2)^2) + (-s b[1] - S b[6])^2/(4 (s^2 + S^2)^2) == 0, 
   2 s S + ((S b[3] - s b[4]) (-s b[3] - S b[4]))/(
     2 (s^2 + S^2)^2) + ((S b[2] + s b[5]) (-s b[2] + S b[5]))/(
     2 (s^2 + S^2)^2) + ((S b[1] - s b[6]) (-s b[1] - S b[6]))/(
     2 (s^2 + S^2)^2) - b[7] == 0};

After the substitution

eqReducedOrderGB = 
  GroebnerBasis[
    Join[eqOrig, {s*S == stS, s^2 + S^2 == s2pS2}], {stS, s2pS2}, {s, S}, 
    MonomialOrder -> EliminationOrder]

I can reduce the order of the initial equation from 8 to 4, and then solve the reduced equation in terms of radicals

(soleqReducedOrderGB = 
  Solve[Thread[eqReducedOrderGB == 0], {stS, s2pS2}]) // LeafCount
(* 40445 *)

The solution is given in terms of radicals

FreeQ[soleqReducedOrderGB, _Root]
(*True*)

If, instead, I solve the initial equation (do not try this unless you really want to investigate the problem since it takes few hours using Mma10.3)

(solOrig = Solve[eqOrig, {s, S}]) // LeafCount
(*5382364097*) !!!

The solution given for the first variable is simple enough.

solSolve[[1]][[1]] // LeafCount
(*7237*)

However, it cannot be written in terms of radicals

FreeQ[ToRadicals[solSolve[[1]][[1]]], _Root]
(* False *)

I think that the property (of a solution being written in radicals) should depend only on the equation itself and not on the way equation is solved.

$\endgroup$
  • 3
    $\begingroup$ ... and your question is? why the two solutions are expressed differently? how you can show that they are equivalent? What would you like to know exactly? $\endgroup$ – MarcoB Mar 5 at 21:56
  • $\begingroup$ Could you provide the value of solSolve[[1]][[1]] so we don't have to run the few hours long computation? $\endgroup$ – Chip Hurst Mar 5 at 21:59
  • $\begingroup$ Or if it's too big, either Cases[solSolve[[1]][[1]], _Root, ∞] or even FirstCase[solSolve[[1]][[1]], _Root, {}, ∞] for that matter. $\endgroup$ – Chip Hurst Mar 5 at 22:01
  • 4
    $\begingroup$ The sticky point is the final assertion. Obtaining radical solutions is not trivial even when they exist. The change of variables (introducing a level of radical nesting) has the effect of making the task trivial in this case. $\endgroup$ – Daniel Lichtblau Mar 5 at 23:10
  • $\begingroup$ @ChipHurst You can get a good idea of the behavior, but much faster, by changing parameters to numbers: polysNum = Numerator[Together[eqOrig[[All, 1]]]] /. Thread[Array[b, 8, 0] -> RandomInteger[{-20, 20}, 8]] and then set result to zero and solve. $\endgroup$ – Daniel Lichtblau Mar 5 at 23:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.