Form a matrix from its complex eigenvalues

I would like to form a matrix from its eigenvalues located within the unit circle, not necessarily real. For example, I would like to place them very close to the unit circle, though inside, and then form a real matrix. The entries in the matrix are really not important as long as the eigenvalues match the ones I want to place and the entries are real.

How to do this?

• In general, that can't be done. – José Carlos Santos Sep 26 '18 at 13:31
• In a real matrix, complex eigenvalues always appear in pairs. – 5xum Sep 26 '18 at 13:44

This problem is not solvable for any arbitrary collection of complex numbers, for the following reason: if the matrix $$A$$ is real, any complex eigenvalues occur in conjugate pairs. So for example it is impossible to construct a real matrix with eigenvalues $$1, 2, 2 + 3i$$, but it is possible to construct one with eigenvalues $$1, 2, 2 + 3i, 2 - 3i$$.
The construction is not too difficult. For a real eigenvalue, place it on the diagonal. For the complex conjugate pair $$a \pm bi$$, place the real $$2 \times 2$$ matrix
$$\begin{pmatrix} a & b \\ -b & a \end{pmatrix}$$
on the diagonal. (Check that this matrix has $$a \pm ib$$ as its eigenvalues).
For example, starting with the set of desired eigenvalues $$1, 2, 2 + 3i, 2-3i$$, we construct the matrix $$A = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 2 & 0 & 0 \\ 0 & 0 & 2 & 3 \\ 0 & 0 & -3 & 2 \end{pmatrix}$$ which is real, and has precisely the set $$1, 2, 2 \pm 3i$$ as its eigenvalues.
It's not possible in general, for the following reason : the eigenvalues are the root of the characteristic polynomial of your matrix. Given eigenvalues $$\lambda_1, ..., \lambda_n \in \mathcal{C}$$, the characteristic polynomial of your matrix should be $$P(X)=-\prod_{i=1}^n (X- \lambda_i)$$ but for arbitrary $$\lambda_i \in \mathbb{C}$$, this polynomial has no reason to have real coefficients (as it would have for a real matrix).