{ "cells": [ { "cell_type": "markdown", "id": "0a6680eb", "metadata": {}, "source": [ "# Example 3, no zero contour\n", "\n", "If there is no contour the initial zero finding will fail to converge to a zero value. After each Newton's step the code checks the value of the function to see if it is without the set tolerance of zero, if it is not it takes another step. After a fixed number of steps (`5 * max_newton`) if one of the inputs does not terminate, the zero finding code will write all value to `NaN` for that particular input.\n", "\n", "```{note}\n", "This is done with a threshold cut on the path's value set to 20 times the tolerance, if the path eventually finds its way to a contour it will return non-NaN values.\n", "```\n", "\n", "If you would rather the code throw an error when any of the input points fail set the keyword `silent_fail=False`. With this set the code will raise a `ValueError` value indicating it did not find a contour for at least one of the inputs and provide the index for those inputs.\n", "\n", "```{note}\n", "Just because one initial point fails to find a contour does not mean another point will also fail. Newton's method will get stuck if its path travels through any point where the gradient is equal to zero (e.g. a maximum or minimum of the function). Try to make sure your initial points are not near the any extremum of the function.\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "id": "6870cb66", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "id": "7fe74069", "metadata": {}, "outputs": [], "source": [ "import jax\n", "import jax.numpy as jnp\n", "\n", "jax.config.update(\"jax_enable_x64\", True)\n", "\n", "import matplotlib.pyplot as plt\n", "import matplotlib.colors as colors\n", "\n", "from jax_zero_contour import ZeroSolver" ] }, { "cell_type": "markdown", "id": "e9a5de55", "metadata": {}, "source": [ "Let's make a function that is always positive." ] }, { "cell_type": "code", "execution_count": null, "id": "1edc4b96", "metadata": {}, "outputs": [], "source": [ "@jax.tree_util.Partial\n", "def f(pos):\n", " # avoid r=0 so the grad is finite\n", " r = jnp.sqrt(jnp.sum(pos**2, axis=0) + 1e-15)\n", " return jnp.sinc(r) + 0.5" ] }, { "cell_type": "code", "execution_count": 4, "id": "44031a6d", "metadata": {}, "outputs": [], "source": [ "n = 1024\n", "x = jnp.linspace(-2, 2, n)\n", "y = jnp.linspace(-2, 2, n)\n", "X, Y = jnp.meshgrid(x, y)\n", "z = f(jnp.stack([X, Y]))" ] }, { "cell_type": "code", "execution_count": 5, "id": "8d6a26f1", "metadata": {}, "outputs": [ { "data": { "image/png": "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NVQ3u81GHEOZyYQpbLhndBWBPNUHwOJKqU16OeRBIlTvWRNUwbXxwQcfoKenB4888gg6Ojowc+ZMnH/++TjyyCOttO9Mkfjtb3+LK664AlOmTMFhhx2Gj3zkI1i1ahX2798vrPfee+/hqquuwpFHHonDDz8cn/70p9Hf36/cP/VCrJoyAei9tbFg8kZmolLovnHqvnmGbdhVL5oVNs+Dye9iei2oIrrWbSkQnkQI+sj5wVoFRWLLli046aSTcNRRR+Hwww/HokWL8MADD1hr3xmReOmll1Cv1/Hd734XL7zwAm655RasW7cOX/rSl4T1vvCFL+Df//3fcc899+DRRx/F7373O1xwwQVaNngyIYath1nehAIwexibkopkW61LLlwcmzGh0/zdTfq0uQprsxIIoDVJRDPgsccewznnnIOJEyeiVqthw4YNzHJr167FscceixEjRmD27NnYsmVLY9/vfvc7HHXUUY3vRx11FHbv3m3NRmeujYULF2LhwoWN78cddxy2bduGf/qnf8KNN97IrDMwMIB//ud/xl133YU//dM/BQDccccdOPHEE/Hkk0/i4x//eKbOvn37sG/fvkQbAPCH94fuWOoDpErJY9Kwc//quTzidQGzh4l61eSPlteDrOgcE3kRHlOyZlLdtG9PIEKY3hLUtTPaYuWi53ce7sAPgv1G7ok6PgAADA4OJra3t7ejvb3dyDYA2Lt3L6ZPn47PfOYz3Jfqu+++Gz09PVi3bh1mz56NNWvWYMGCBdi2bRvGjx9vbIMUQY743//7fwczZ87k7t+4cWMAIPjv//7vxPbJkycHN998M7POqlWrAoRXn//4j//4j/+00Ofll1+2OQQl8O677wZdXV1W7Dz88MMz21atWmXdZgDBvffem9k+a9as4Kqrrmp8P3DgQDBx4sRg9erVQRAEwRNPPBEsXry4sf/qq68Ovv/971uzK7dgy+3bt+M73/kOV40AgL6+PgwfPhyjR49ObO/s7ERfXx+zzsqVK9HT09P4/vbbb+OYY47Bzp070dHRYcX2vDA4OIhJkyZh165dGDVqVNHmkOHtzhfe7vzRrLY3q90DAwOYPHkyxowZ46yPESNGYMeOHdK4PQqCIMhM/7ahRlCwf/9+bN26FStXrmxsa2trw/z587F582YAwKxZs/D8889j9+7d6OjowM9//nN8+ctf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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(\n", " z,\n", " extent=(x.min(), x.max(), y.min(), y.max()),\n", " norm=colors.SymLogNorm(linthresh=0.1, vmin=-1, vmax=2),\n", " cmap='PuOr_r',\n", " origin='lower',\n", " interpolation='nearest'\n", ")\n", "plt.colorbar();" ] }, { "cell_type": "code", "execution_count": 6, "id": "78ad27df", "metadata": {}, "outputs": [], "source": [ "zs = ZeroSolver()" ] }, { "cell_type": "code", "execution_count": 7, "id": "a13e5916", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[nan nan nan ... nan nan nan]\n", " [nan nan nan ... nan nan nan]]\n" ] } ], "source": [ "init_guess_1 = jnp.array([[0.0, -0.6], [0.0, 1.0]])\n", "output = zs.zero_contour_finder(\n", " f,\n", " init_guess_1\n", ")\n", "print(output[0]['value'])" ] }, { "cell_type": "markdown", "id": "b67f4362", "metadata": {}, "source": [ "As expected, the zero finder code was unable to identify any zero values based on the initial point and all the output values are NaN. If we wanted to let the code to return an error instead we can set the keyword `silent_fail=False`." ] }, { "cell_type": "code", "execution_count": 8, "id": "87458ef0", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:2025-06-23 16:34:08,159:jax._src.debugging:95: jax.debug.callback failed\n", "Traceback (most recent call last):\n", " File \"/Users/coleman/anaconda3/envs/lensing/lib/python3.10/site-packages/jax/_src/debugging.py\", line 93, in debug_callback_impl\n", " callback(*args)\n", " File \"/Users/coleman/anaconda3/envs/lensing/lib/python3.10/site-packages/jax/_src/debugging.py\", line 278, in _flat_callback\n", " callback(*args, **kwargs)\n", " File \"/Users/coleman/Desktop/UoP/lensing/Jax-Zero-Contour/jax_zero_contour/zero_contour_finder.py\", line 247, in excepting_message\n", " raise ValueError(f'No zero contour found after 5 * max_newton ({5 * self.max_newton}) iterations')\n", "ValueError: No zero contour found after 5 * max_newton (25) iterations\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Index of failed input(s): [0 1]\n" ] } ], "source": [ "init_guess_1 = jnp.array([[0.0, -0.6], [0.0, 1.0]])\n", "output = zs.zero_contour_finder(\n", " f,\n", " init_guess_1,\n", " silent_fail=False\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "b91857e4", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "lensing", "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.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }