Number of solutions of cyclic-5 system of equations

206 Views Asked by At

I have a series of questions which ask me to, in various ways, to find the number of solutions of the following cyclic-5 problem:

\begin{align}a+b+c+d+e&=0\\ ab+bc+cd+de+ea &=0\\ abc+bcd+cde+dea+eab&=0\\ abcd+bcde+cdea+deab+eabc&=0\\ abcde-1&=0\end{align}

My problem arises when checking my answers - I am currently getting different results for different methods and I would like to know which, if any, are correct.

I have tried using Maple's $\mathtt{solve}$ command which gives me $20$ solutions, except these are of the following form:

\begin{align}a&=1\\ b&=1\\ c&=\mathtt{RootOf}\left(Z^2+3Z+1\right)\\ d&=-\mathtt{RootOf}\left(Z^2+3Z+1\right)-3\\ e&=1\end{align}

Given that $$\mathtt{RootOf}\left(Z^2+3Z+1\right) = \begin{cases}\frac{-3-\sqrt{5}}2\\\\\frac{\sqrt{5}-3}2\end{cases}$$

this 'solution' given by Maple actually contains $4$ solutions.

Now, I could go through these Maple 'solutions' and count up how many solutions each 'solution' gives and then work out how many there are in total, but this is prone to error and would take a long time.

Is there a way of getting Maple to list all the solutions individually? Or somewhere else I could turn to for a definite answer (WolframAlpha times out on me for this computation or I would go there!)?

1

There are 1 best solutions below

1
On BEST ANSWER

Using Maple 2017.2,

restart;

sys:={a+b+c+d+e=0,
      a*b+b*c+c*d+d*e+e*a=0,
      a*b*c+b*c*d+c*d*e+d*e*a+e*a*b=0,
      a*b*c*d+b*c*d*e+c*d*e*a+d*e*a*b+e*a*b*c=0,
      a*b*c*d*e-1=0}:

# These contain the implicit RootOfs.
sols_impl:=[solve(sys)]:

nops(sols_impl);

                                 20

sols:=[solve(sys, {a,b,c,d,e}, explicit, allsolutions)]:

nops(sols());

                                 70

# Another way to get all the explicit solutions
# from those containing the implicit RootOfs.

temp:=allvalues(sols_impl):
sols_alt:={seq(op(temp[i]), i=1..nops([temp]))}:

nops(sols_alt);

                                 70

# They are the same.

{op(sols)} minus sols_alt;

                                 {}

sols_alt minus {op(sols)};

                                 {}

evalb( {op(sols)} = sols_alt );

                                true