Theory¶
The goal of cxroots is to compute the distinct roots \(\{z_i\}_{i=1}^n\) and corresponding multiplicities \(\{m_i\}\) of the given function \(f(z)\) within the given contour \(C\). cxroots starts by computing the total number of roots (counting multiplicities) \(N\) within \(C\). If \(N>M\), where \(M\) is supplied by the user, then the contour is subdivided until a set of contours is obtained where the number of roots within each one is \(\leq M\).
The roots within each of these contours are approximated using the method of [1] which involves calculating integrals of the form
where \(\phi\), \(\psi\) are formal orthogonal polynomials. If \(f'(z)\) is not provided by the user then it is instead approximated using a finite difference method. These roots are then refined using the Newton-Raphson method if \(f'(z)\) is provided and Muller’s method otherwise.
References¶
[1] Kravanja, Peter, and Marc Van Barel. “Zeros of analytic functions.” Computing the Zeros of Analytic Functions. Springer Berlin Heidelberg, 2000. 1-59.