I have a function

$$ R(\xi) := \prod_{i=0}^{n} (e^{-i\xi} - z_k) $$ where $z_{k} \in \mathbb{C}$. The $z_{k}$ are random, but clustered vaguely around the unit circle, if that is relevant. I need to calculate the phase $\Psi$ of $R$, where we define $\Psi$ via $$ R(\xi) = \exp(-i\Psi(\xi))|R(\xi)| $$ If we do not care about continuity of $\Psi$ in $\xi$, then this is easy: We could write (in C++)

auto Psi = [&](Real xi)->Real {
    Real phi = 0;
    Complex ii = {0,1};
    Complex z = exp(-ii*xi);
    for (zk in roots)
        phi -= arg(z-zk);
    return phi;

However, I have an additional constraint that the phase $\Psi$ must be continuous on the interval $[0, 2\pi)$. The arg function always returns a value in $[-\pi, \pi]$, and as such the phase has discontinuities at seemingly random locations, depending on the values of the roots $\{z_{k}\}$.

How can I patch up my code/figure out how to make $\Psi$ a continuous function of $\xi$ on the interval $[0, 2\pi)$?


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.