2
$\begingroup$

For reference, the linked paper is Composite parameterization and Haar measure for all unitary and special unitary groups by Christoph Spengler, Marcus Huber and Beatrix C. Hiesmayr (J. Math. Phys. 53, 013501 (2012)).

I am implementing an algorithm that "scrambles" a Hamiltonian by a random (w.r.t. to the Haar measure) special unitary operator: $$H_{\text{scram}} = UH_0U^\dagger.$$

I would like these unitaries to be parameterized as the algorithm minimizes a quantity by varying $U$. I found that this paper provides precisely what I need as it gives a parameterization of $\mathrm{SU}(N)$ and the Haar measure in terms of the same parameters.

It would not be too bad to implement the results of the linked paper from scratch, but I was wondering if a Python package already exists which samples random special unitaries and provides a parameterization of said unitaries, so that I can scramble a Hamiltonian as defined above and then perform an optimization procedure w.r.t. the parameters parameterizing $\mathrm{SU}(N)$.

$\endgroup$
9
  • $\begingroup$ Is this what you are looking for? docs.scipy.org/doc/scipy/reference/generated/… $\endgroup$ Commented Jun 21, 2023 at 17:25
  • $\begingroup$ To my understanding the scipy function just yields a random special unitary, not a parameterized one. There are a few quantum computing packages which also yield random special unitaries, but none that I have found parameterize the unitaries. @MartinSeysen $\endgroup$ Commented Jun 21, 2023 at 17:32
  • $\begingroup$ For me the linked article in your question is behind a paywall. So I have no idea about the parametrization you are looking for. $\endgroup$ Commented Jun 21, 2023 at 17:52
  • $\begingroup$ Oops. I swapped it out for ArXiv link. Any parameterization that works will do. @MartinSeysen $\endgroup$ Commented Jun 21, 2023 at 18:51
  • $\begingroup$ After a glance through the paper cited in the question I found nothing about generating a (uniform) unitary matrix with a given parameterization. I think the easiest way to achieve that goal is to generate a random (special) unitary $N \times N$ matrix with one of the tools mentioned above, and then to compute the requested parametrization from the $N \times N$ entries of that matrix. But I'm not expert in this field. $\endgroup$ Commented Jun 21, 2023 at 20:52

1 Answer 1

3
$\begingroup$

I would just use Euler angles to parameterise the unitary, and then vary the angles according to the Haar measure. Below I copy the relevant equations from Zyczkowski and Kus. I do not have a Python code (when I used this method we were still using Fortran...), but it should be only a few lines. (For $SU(N)$ instead of $U(N)$ you would omit the angle $\alpha$.)

There is an alternative method that is computationally more intensive, but can be explained in one line: Parameterize a general complex symmetric matrix $H$ with normally distributed elements and compute the unitary matrix $U$ of eigenvectors.


$\endgroup$
1
  • $\begingroup$ From a practical perspective, one of the simplest methods for getting Haar-distributed unitary matrices is taking the unitary part of the QR decomposition of a matrix with i.i.d. normal entries (with a suitable choice of diagonal entries of a triangular factor). But in many implementations QR decomposition can output a sequence of Givens rotations or their unitary counterparts instead of their product, so, essentially, a parametrization. $\endgroup$ Commented Jun 22, 2023 at 10:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .