In this paper a free Python algorithm, entitled CCOMP (Complex roots COMPutation), is developed for the efficient computation of complex roots of determinantal equations inside a prescribed complex domain. The key to the method presented is the efficient determination of the candidate points inside the domain which, in their close neighborhood, a complex root may lie. Once these points are detected, the algorithm proceeds to a two-dimensional minimization problem with respect to the minimum modulus eigenvalue of the system matrix. In the core of CCOMP exist three sub-algorithms whose tasks are the efficient estimation of the minimum modulus eigenvalues of the system matrix inside the prescribed domain, the efficient computation of candidate points which guarantee the existence of minima, and finally, the computation of minima via bound constrained minimization algorithms. Theoretical results and heuristics support the development and the performance of the algorithm, which is discussed in detail. CCOMP supports general complex matrices, and its efficiency, applicability and validity is demonstrated to a variety of microwave applications. Program summaryProgram Title: CCOMPProgram Files doi:http://dx.doi.org/10.17632/x6fx4zssft.1Licensing provisions: GPLv3Programming language: PythonNature of problem: The determination of the resonances of a physical system, arising from determinantal type equations. These resonances arise from the non trivial solution of a homogeneous system of equations, whose system matrix depends on a parameter z, which can be either real or complex depending on the application. The values of z for which the determinant of the aforementioned system matrix is zero, are the resonances of the physical system.Solution method: An open-source software is developed for the efficient detection of all complex roots inside a prescribed complex domain D. The program is written in Python programming language [1] in conjunction with NumPy [2], SciPy [3], and Matplotlib [4]. The key to the method presented is the efficient determination of the candidate points inside D which in their close neighborhood the existence of a minimum is guaranteed. Once these points are detected, the algorithm proceeds to a two-dimensional minimization problem with respect to the minimum modulus eigenvalue of the system matrix, which is a positive function inside D. If the minimization yields global minima (near zero), the roots are found. For local minima (values of minimum modulus eigenvalue function away from zero), no roots exist. For all other points which have not been flagged as candidates, the algorithm does not proceed to the minimization problem.Additional comments including restrictions and unusual features: Python library psutil is used to compute memory consumption. [1]The Python programming language, https://www.python.org/.[2]NumPy, http://numpy.org/.[3]SciPy, http://scipy.org/.[4]Matplotlib, http://matplotlib.org/.
Read full abstract