Skip to content

Releases: rparini/cxroots

v1.1.8

20 Apr 10:40
ba06aab
Compare
Choose a tag to compare
  • Fix NotImplementedError in Contour base (#31 thanks @fchapoton)
  • Added __call__ placeholder to ComplexPath

v1.1.7

10 Feb 13:30
34a9298
Compare
Choose a tag to compare
  • Fix setup.py test.
  • Fix invalid escape characters

v1.1.6

27 Jan 22:42
Compare
Choose a tag to compare

1.1.6 - 19/Sep/2018

  • Added example to index page of documentation.
  • Removed unnecessary imports.
  • Enable 'setup.py test'.

v1.1.5

05 Aug 20:43
Compare
Choose a tag to compare

Changelog

  • Rewritten documentation with separate tutorial, user guide and reference sections. In the process added/improved many docstrings.
  • Function capitalisation now consistent.
  • Added many tests and converted most others to using pytest
  • Changed AnnulusSector's rRange -> radii to match Annulus
  • Contours which have some known roots and unknown roots in them will be subdivided to avoid calculating already known roots.
  • If the number of roots (counting multiplicities) in a contour does not match the sum of the number of roots in its subdivided contours then the number of roots is recalculated in both the parent and child contours with NIntAbsTol set to half the provided value.
  • Romberg integration now requires the last two consecutive iterations (instead of just the last) to satisfy the prescribed error tolerance before the last iteration is accepted as the result.
  • If Romberg integration is used then the function evaluations are cached and the number of roots within a contour checked while the roots within the contour are being calculated.
  • Introduced parameter m which is only used if df=None and method='quad'. The argument order=m is the order of the error term in the approximation for the derivative used during contour integration.
  • Implemented methods to determine the distance between a point and the closest point on a line or circular arc in the complex plane.
  • If a proposed subdivision introduces a contour with a minimum distance of < 0.01 from any known root then it is discarded and a new subdivision chosen.
  • Exposes the parameter errStop to the user. The number of distinct roots within a contour, n, is determined by checking if all the elements of a list of contour integrals involving formal orthogonal polynomials are sufficently close to zero, ie. that the absolute value of each element is < errStop. If errStop is too large/small then n may be smaller/larger than it actually is.
  • Computing multiplicities now reuses integrals used to calculate distinct roots.
  • If the computed multiplicity for a root is not sufficiently close to an integer (as determined by integerTol) then the multiplicity will be determined again by computing the roots within a small circle centred on the root.
  • Final multiplicities are now returned as integers, rather than rounded floats.
  • Muller’s method rather than Newton-Raphson iteration if df is not provided.
  • Added attemptIterBest parameter. If True then the iterative method used to refine the roots will exit when error of the previous iteration, x0, was at least as good as the current iteration, x, in the sense that abs(f(x)) >= abs(f(x0)) and the previous iteration satisfied abs(dx0) < newtonStepTol. In this case the previous iteration is returned as the approximation of the root. The idea is that it will attempt to get the best accuracy it can at the expense of more function evaluations.
  • RootResult now a subclass of namedtuple()

Note that the only difference in versions 1.1.0 to 1.1.5 are README.rst. They exist because updating the project description on pypi requires the entire project to be uploaded again with a new version number.

v1.0.0

12 Oct 07:38
Compare
Choose a tag to compare

cxroots is now able to locate roots of analytic functions with multiplicities greater than one. This involved a large rewrite to approximate the roots and the multiplicities of roots within a contour based on the method of [KB]. This approach should also be more accurate and faster since roots can now be approximated using contour integration and then refined with the Newton-Raphson method, rather than relying on the Newton-Raphson method with random initial points to hit upon the root within a contour.


[KB] Kravanja, Peter, and Marc Van Barel. "Zeros of analytic functions." Computing the Zeros of Analytic Functions. Springer Berlin Heidelberg, 2000. 1-59.