|pkg_img| |doi| |tests| |coverage| |sonarcloud|
.. |tests| image:: https://github.com/rparini/cxroots/workflows/tests/badge.svg
:target: https://github.com/rparini/cxroots/actions
.. |doi| image:: https://zenodo.org/badge/79802240.svg
:target: https://zenodo.org/badge/latestdoi/79802240
.. |pkg_img| image:: https://badge.fury.io/py/cxroots.svg
:target: https://badge.fury.io/py/cxroots
.. |sonarcloud| image:: https://sonarcloud.io/api/project_badges/measure?project=rparini_cxroots&metric=alert_status
:target: https://sonarcloud.io/summary/new_code?id=rparini_cxroots
.. |coverage| image:: https://coveralls.io/repos/github/rparini/cxroots/badge.svg
:target: https://coveralls.io/github/rparini/cxroots
cxroots
=======
cxroots is a Python package for finding all the roots of a function, *f(z)*, of a single complex variable within a given contour, *C*, in the complex plane. It requires only that both:
- *f(z)* has no roots or poles on *C*
- *f(z)* is analytic in the interior of *C*
The implementation is primarily based on [KB]_ and evaluates contour integrals involving *f(z)* and its derivative *f'(z)* to determine the roots. If *f'(z)* is not provided then it is approximated using a finite difference method. The roots are further refined using Newton-Raphson if *f'(z)* is given or Muller's method if not. See the `documentation <https://rparini.github.io/cxroots/>`_ for a more details and a tutorial.
With `Python <http://www.python.org/>`_ installed you can install cxroots by entering in the terminal/command line
.. code:: bash
pip install cxroots
Example
-------
.. code:: python
from numpy import exp, cos, sin
f = lambda z: (exp(2*z)*cos(z)-1-sin(z)+z**5)*(z*(z+2))**2
from cxroots import Circle
C = Circle(0,3)
roots = C.roots(f)
roots.show()
.. Relative images do not display on pypi
.. image:: https://github.com/rparini/cxroots/blob/master/README_resources/readme_example.png?raw=true
.. code:: python
print(roots)
.. literalinclude readme_example.txt doesn't work on github
.. code::
Multiplicity | Root
------------------------------------------------
2 | -2.000000000000 +0.000000000000i
1 | -0.651114070264 -0.390425719088i
1 | -0.651114070264 +0.390425719088i
3 | 0.000000000000 +0.000000000000i
1 | 0.648578080954 -1.356622683988i
1 | 0.648578080954 +1.356622683988i
1 | 2.237557782467 +0.000000000000i
See also
--------
The Fortran 90 package `ZEAL <https://elsevier.digitalcommonsdata.com/datasets/yc9vv7rwyj/1>`_ is a direct implementation of [KB]_.
Citing cxroots
--------------
\R. Parini. *cxroots: A Python module to find all the roots of a complex analytic function within a given contour* (2018), https://github.com/rparini/cxroots https://doi.org/10.5281/zenodo.7013117
BibTex:
.. code::
@misc{cxroots,
author = {Robert Parini},
title = {{cxroots: A Python module to find all the roots of a complex analytic function within a given contour}},
doi = {10.5281/zenodo.7013116},
url = {https://github.com/rparini/cxroots},
year = {2018}
}
----------
Development
-----------
- Install the `pre-commit <https://pre-commit.com/>`_ and then run :code:`pre-commit install`. The pre-commit scripts can also be run manually with :code:`pre-commit run --all-files`
- The project uses `ruff <https://docs.astral.sh/ruff/>`_ for formatting and linting. It is run as part of the pre-commit hook and is recommended to be run on save in the developer's editor.
Release Procedure
-----------------
Making a release on GitHub with the tag vX.Y.Z will update the documentation on `master` and push cxroots at the tagged commit to PyPI.
The documentation can be manually generated by running `./create_docs` in the `docs_src` directory.
References
----------
.. [KB] \P. Kravanja and M. Van Barel. *Computing the Zeros of Analytic Functions*. Springer, Berlin, Heidelberg, 2000.
Raw data
{
"_id": null,
"home_page": "https://rparini.github.io/cxroots/",
"name": "cxroots",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "roots zeros complex analytic functions",
"author": "Robert Parini",
"author_email": "robert.parini@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/71/63/510e0e0d1929a6e1c7920d7bf06eaec2b6da9ea7befdd3b5ebff94f01c6c/cxroots-3.0.2.tar.gz",
"platform": "all",
"description": "|pkg_img| |doi| |tests| |coverage| |sonarcloud|\n\n.. |tests| image:: https://github.com/rparini/cxroots/workflows/tests/badge.svg\n :target: https://github.com/rparini/cxroots/actions\n\n.. |doi| image:: https://zenodo.org/badge/79802240.svg\n :target: https://zenodo.org/badge/latestdoi/79802240\n\n.. |pkg_img| image:: https://badge.fury.io/py/cxroots.svg\n :target: https://badge.fury.io/py/cxroots\n\n.. |sonarcloud| image:: https://sonarcloud.io/api/project_badges/measure?project=rparini_cxroots&metric=alert_status\n :target: https://sonarcloud.io/summary/new_code?id=rparini_cxroots\n\n.. |coverage| image:: https://coveralls.io/repos/github/rparini/cxroots/badge.svg\n\t:target: https://coveralls.io/github/rparini/cxroots\n\n\ncxroots\n=======\n\ncxroots is a Python package for finding all the roots of a function, *f(z)*, of a single complex variable within a given contour, *C*, in the complex plane. It requires only that both:\n\n- *f(z)* has no roots or poles on *C*\n- *f(z)* is analytic in the interior of *C*\n\nThe implementation is primarily based on [KB]_ and evaluates contour integrals involving *f(z)* and its derivative *f'(z)* to determine the roots. If *f'(z)* is not provided then it is approximated using a finite difference method. The roots are further refined using Newton-Raphson if *f'(z)* is given or Muller's method if not. See the `documentation <https://rparini.github.io/cxroots/>`_ for a more details and a tutorial.\n\nWith `Python <http://www.python.org/>`_ installed you can install cxroots by entering in the terminal/command line\n\n.. code:: bash\n\n pip install cxroots\n\nExample\n-------\n\n.. code:: python\n\n from numpy import exp, cos, sin\n f = lambda z: (exp(2*z)*cos(z)-1-sin(z)+z**5)*(z*(z+2))**2\n \n from cxroots import Circle\n C = Circle(0,3)\n roots = C.roots(f)\n roots.show()\n\n\n.. Relative images do not display on pypi\n.. image:: https://github.com/rparini/cxroots/blob/master/README_resources/readme_example.png?raw=true\n\n.. code:: python\n\n print(roots)\n\n\n.. literalinclude readme_example.txt doesn't work on github\n.. code::\n\n\t Multiplicity | Root \n\t------------------------------------------------\n\t 2 | -2.000000000000 +0.000000000000i\n\t 1 | -0.651114070264 -0.390425719088i\n\t 1 | -0.651114070264 +0.390425719088i\n\t 3 | 0.000000000000 +0.000000000000i\n\t 1 | 0.648578080954 -1.356622683988i\n\t 1 | 0.648578080954 +1.356622683988i\n\t 1 | 2.237557782467 +0.000000000000i\n\n\nSee also\n--------\n\nThe Fortran 90 package `ZEAL <https://elsevier.digitalcommonsdata.com/datasets/yc9vv7rwyj/1>`_ is a direct implementation of [KB]_.\n\nCiting cxroots\n--------------\n\n \\R. Parini. *cxroots: A Python module to find all the roots of a complex analytic function within a given contour* (2018), https://github.com/rparini/cxroots https://doi.org/10.5281/zenodo.7013117\n\nBibTex:\n\n.. code::\n\n\t@misc{cxroots,\n\t author = {Robert Parini},\n\t title = {{cxroots: A Python module to find all the roots of a complex analytic function within a given contour}},\n doi = {10.5281/zenodo.7013116},\n url = {https://github.com/rparini/cxroots},\n\t year = {2018}\n\t}\n\n----------\n\nDevelopment\n-----------\n- Install the `pre-commit <https://pre-commit.com/>`_ and then run :code:`pre-commit install`. The pre-commit scripts can also be run manually with :code:`pre-commit run --all-files`\n- The project uses `ruff <https://docs.astral.sh/ruff/>`_ for formatting and linting. It is run as part of the pre-commit hook and is recommended to be run on save in the developer's editor.\n\nRelease Procedure\n-----------------\nMaking a release on GitHub with the tag vX.Y.Z will update the documentation on `master` and push cxroots at the tagged commit to PyPI.\n\nThe documentation can be manually generated by running `./create_docs` in the `docs_src` directory.\n\nReferences\n----------\n\n.. [KB] \\P. Kravanja and M. Van Barel. *Computing the Zeros of Analytic Functions*. Springer, Berlin, Heidelberg, 2000.\n\n\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Find all the roots (zeros) of a complex analytic function within a given contour in the complex plane.",
"version": "3.0.2",
"project_urls": {
"Homepage": "https://rparini.github.io/cxroots/"
},
"split_keywords": [
"roots",
"zeros",
"complex",
"analytic",
"functions"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e7633e847cd9cc8222fae205f5c94b690643ac2b7bc3d55665dc7c7cd33b508f",
"md5": "a20b73102caef6d31fd6c47ae745fe8f",
"sha256": "2930d0327b0b908671e0ea713a61fc4f505fa61f627bb2f7d710841260e1f6c9"
},
"downloads": -1,
"filename": "cxroots-3.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a20b73102caef6d31fd6c47ae745fe8f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 51979,
"upload_time": "2024-07-27T20:57:32",
"upload_time_iso_8601": "2024-07-27T20:57:32.321382Z",
"url": "https://files.pythonhosted.org/packages/e7/63/3e847cd9cc8222fae205f5c94b690643ac2b7bc3d55665dc7c7cd33b508f/cxroots-3.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7163510e0e0d1929a6e1c7920d7bf06eaec2b6da9ea7befdd3b5ebff94f01c6c",
"md5": "840936e0cb7e219bd96cdf69d4b1ff49",
"sha256": "e9bb1f2dbf63e28a4dd081d0fb4d6dbb0d33effdb2df7e993c171f6d6a9fd24e"
},
"downloads": -1,
"filename": "cxroots-3.0.2.tar.gz",
"has_sig": false,
"md5_digest": "840936e0cb7e219bd96cdf69d4b1ff49",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 40050,
"upload_time": "2024-07-27T20:57:33",
"upload_time_iso_8601": "2024-07-27T20:57:33.917997Z",
"url": "https://files.pythonhosted.org/packages/71/63/510e0e0d1929a6e1c7920d7bf06eaec2b6da9ea7befdd3b5ebff94f01c6c/cxroots-3.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-27 20:57:33",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cxroots"
}