# Solving an equation for rational modulus 1

I want to solve an system of equations of the form $$\prod_{i=1}^n x_i^{M_{i,k}}=1 \qquad k=1,\ldots,n$$ with complex $x_i$ with constraint $|x_i|=1$ and $M_{i,k}$ integers. This is basically a system of polynomial equation and I can just use Solve over the complexes. Is this efficient? My equations are in Eq[1],... Eq[n], e.g. Eq[1]={x[2] x[3]^3 == x[2]^3} and my code is

And @@ Array[Eq, {m - 1}]
Solve[%, Table[x[i], {i, 2, R}], Complexes]


Wouldn't it be better to solve the following linear system? Because $\{x_i:i=1,\ldots,n\}$ are roots of unity this can be made into a linear system with $x_i = \exp(2\pi i h_i)$ $$\sum_{i=1}^n M_{i,k} h_i=0 \qquad k=1,\ldots,n$$ where $h_i\in \mathbb Q/\mathbb Z$. It seems to be much more efficient to solve the linear system over the $\mathbb Q /\mathbb Z$. Has Mathematica something like this built in?

Unfortunately, I can just find how to solve such linear equations in $\mathbb Z/m\mathbb Z$. If I knew a common divisor $N$ of the solution I could also multiply by $N$ and solve it over an integer $\mathbb Z/N\mathbb Z$

• Hi, welcome to Mathematica.SE, please consider taking the tour so you learn the basic rules of the site. Your question may be put on-hold because it seems to be off-topic, i.e. its about mathematics and not Mathematica. If that's not the case, please edit your question to make it explicitly about Mathematica programming. Include a minimum example of the code you are working on. – rhermans Oct 21 '14 at 16:29
• Yes, taking logs to make it linear would be better. But where do you get the constraint that these must be roots of unity? – Daniel Lichtblau Oct 21 '14 at 18:50
• This are the only solutions I am interested in, in the particular equations I have, the only solutions are roots of unity or 0. I will edit the post. – Marcel Bischoff Oct 21 '14 at 21:09
• If you post a representative example you are more likely to get a viable response. – Daniel Lichtblau Oct 22 '14 at 15:35