{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "9538cc3c-8031-430c-8adf-fe4f4888bb9a", "metadata": {}, "source": [ "# Getting started example" ] }, { "attachments": {}, "cell_type": "markdown", "id": "3758fe73", "metadata": {}, "source": [ "The base interface of `PyZEAL` is the `RootFinder`. To get started, import\n", "`RootFinder` from `pyzeal.rootfinders` and provide it with a target function.\n", "To calculate roots, you need to call `calculateRoots` with a search range. If\n", "you have not changed the default estimator, this will work without the\n", "derivative of the target function." ] }, { "cell_type": "code", "execution_count": 1, "id": "dad28967-a3aa-4772-9cd4-b172a1bf5d88", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "calculated roots: [-0.55705+0.j 0.13513+0.62178j 0.13513-0.62178j 0.88679+0.j ]\n", "root orders : [1 1 1 1]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "from pyzeal.rootfinders import RootFinder\n", "\n", "\n", "def f(x):\n", " return 5 * x**4 - 3 * x**3 - 1\n", "\n", "\n", "rf = RootFinder(f)\n", "rf.calculateRoots((-10, 10), (-5, 5))\n", "\n", "plt.scatter(rf.roots.real, rf.roots.imag, marker=\"x\")\n", "\n", "print(f\"calculated roots: {rf.roots}\")\n", "print(f\"root orders : {rf.orders}\")\n" ] }, { "attachments": {}, "cell_type": "markdown", "id": "5f3319cc-5f1f-4571-992f-a25005d7d55e", "metadata": {}, "source": [ "Some algorithms do however require the derivative. These may provide better\n", "performance and/or accuracy. For example, to use numerical quadrature, you need\n", "to import `EstimatorTypes` and pass the corresponding type to the rootfinder\n", "during setup. If the derivative is not provided, an error will be raised:" ] }, { "cell_type": "code", "execution_count": 2, "id": "5300d19e-40ac-4455-b1c2-1aab6b39aeb6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "calculated roots: [-0.58718-0.42313j -0.77467+0.98966j 1.13683+0.55651j 0.22656-0.69109j\n", " -1.26914+0.j -0.77467-0.98966j 0.27209+1.21769j 1.13683-0.55651j\n", " -0.58718+0.42313j 0.27209-1.21769j 0.22656+0.69109j 0.72186+0.j ]\n", "root orders : [1 1 1 1 1 1 1 1 1 1 1 1]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "from pyzeal.pyzeal_types.estimator_types import EstimatorTypes\n", "from pyzeal.rootfinders import RootFinder\n", "\n", "\n", "def f(x):\n", " return x**12 + 5 * x**5 - 1\n", "\n", "\n", "def df(x):\n", " return 12 * x**11 + 25 * x**4\n", "\n", "\n", "rf = RootFinder(f, df, estimatorType=EstimatorTypes.QUADRATURE_ESTIMATOR)\n", "rf.calculateRoots((-10, 10), (-5, 5))\n", "\n", "plt.scatter(rf.roots.real, rf.roots.imag, marker=\"x\")\n", "\n", "print(f\"calculated roots: {rf.roots}\")\n", "print(f\"root orders : {rf.orders}\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "28f3b344-a4b7-46d3-b684-8fd24e7cb66c", "metadata": {}, "source": [ "Additional settings can be passed to either the rootfinder or, depending on the\n", "concrete setting, to `calculateRoots` directly (if you want to apply a setting\n", "specifically for a single computational run only).\n", "\n", "Note how in the following example all zero orders are set to 0. This is due to\n", "the `NEWTON_GRID` algorithm not supporting the calculation of orders." ] }, { "cell_type": "code", "execution_count": 3, "id": "c7ba1c31-886f-4cfc-83b5-0c509578f05f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "calculated roots: [ 1.136833+0.55651j 0.226583+0.691124j 0.226583-0.691124j\n", " 0.226568-0.691092j 0.721855+0.j -0.587175+0.423125j\n", " 0.272094+1.21769j -0.774675-0.989668j 1.136833+0.556509j\n", " -0.587109-0.423232j 1.136833-0.55651j 0.272094-1.21769j\n", " 0.226568+0.691092j -0.587175-0.423125j -0.587106+0.423236j\n", " -0.774675+0.989668j -1.269145+0.j ]\n", "root orders : [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "from pyzeal.pyzeal_types.algorithm_types import AlgorithmTypes\n", "from pyzeal.pyzeal_types.container_types import ContainerTypes\n", "from pyzeal.rootfinders import RootFinder\n", "\n", "\n", "def f(x):\n", " return x**12 + 5 * x**5 - 1\n", "\n", "\n", "def df(x):\n", " return 12 * x**11 + 25 * x**4\n", "\n", "\n", "rf = RootFinder(\n", " f,\n", " df,\n", " algorithmType=AlgorithmTypes.NEWTON_GRID,\n", " precision=(3, 3),\n", " containerType=ContainerTypes.ROUNDING_CONTAINER,\n", ")\n", "rf.calculateRoots((-10, 10), (-5, 5), precision=(6, 6))\n", "\n", "plt.scatter(rf.roots.real, rf.roots.imag, marker=\"x\")\n", "\n", "print(f\"calculated roots: {rf.roots}\")\n", "print(f\"root orders : {rf.orders}\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }