{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5f35bc8a-ca77-4d10-8d37-6ef1ea61da36",
   "metadata": {},
   "source": [
    "# Import modules:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "9b0779af-b27a-4d61-b425-100d71ef8f55",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "422b2cc5-5567-4670-8c80-a067810e0241",
   "metadata": {},
   "source": [
    "# Define Newton Rafson function (it checked if the derivative is zero):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ffd82ddf-658c-4dcc-bc15-34684b584edf",
   "metadata": {},
   "outputs": [],
   "source": [
    "def newton_method(f, df, x0, tolerance=1e-6, max_iterations=100):\n",
    "    \"\"\"\n",
    "    Newton's method for solving f(x) = 0.\n",
    "\n",
    "    Parameters:\n",
    "        f              : function f(x)\n",
    "        df             : derivative f'(x)\n",
    "        x0             : initial guess\n",
    "        tolerance      : stopping tolerance\n",
    "        max_iterations : maximum number of iterations\n",
    "\n",
    "    Returns:\n",
    "        Approximate root\n",
    "    \"\"\"\n",
    "\n",
    "    xn = x0\n",
    "\n",
    "    for it in np.arange(max_iterations):\n",
    "        # Avoid division by zero\n",
    "        if df(xn) == 0:\n",
    "            print(\"Derivative is zero. Newton's method cannot continue.\")\n",
    "            return None\n",
    "\n",
    "        # Newton's method formula\n",
    "        xn1 = xn - f(xn) / df(xn)\n",
    "\n",
    "        # Check convergence\n",
    "        if abs(xn1 - xn) < tolerance:\n",
    "            print(f\"Converged after {it + 1} iterations.\")\n",
    "            return xn1\n",
    "\n",
    "        xn = xn1\n",
    "\n",
    "    print(\"Maximum number of iterations reached.\")\n",
    "    return xn"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5cdf4a00-2967-4f2b-9bd8-cbdf64596a68",
   "metadata": {},
   "source": [
    "# Define a test function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "06443c7f-1250-4b17-a5f6-b281469455e9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Converged after 13 iterations.\n",
      "Root: 2.0\n"
     ]
    }
   ],
   "source": [
    "def f1(x):\n",
    "    return x**2 - 4\n",
    "\n",
    "def df1(x):\n",
    "    return 2*x\n",
    "\n",
    "root = newton_method(f1, df1, x0=600)\n",
    "\n",
    "print(\"Root:\", root)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b25e5389-4b86-438c-92de-bc743cec009b",
   "metadata": {},
   "source": [
    "# Define a trigo function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "61f23c0e-dc76-4901-b3c3-54d147a26948",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Converged after 99 iterations.\n",
      "Root: 0.7390851332151611\n"
     ]
    }
   ],
   "source": [
    "def f2(x):\n",
    "    return np.cos(x) - x\n",
    "\n",
    "def df2(x):\n",
    "    return -np.sin(x) - 1\n",
    "\n",
    "root = newton_method(f2, df2, x0=200)\n",
    "\n",
    "print(\"Root:\", root)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94631020-96a9-4d64-923d-4e6c976a8133",
   "metadata": {},
   "source": [
    "# Oscillating function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ac6832df-fb35-4cd1-92e5-0d1cf84f856c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Maximum number of iterations reached.\n",
      "Root: 0.0\n"
     ]
    }
   ],
   "source": [
    "def f3(x):\n",
    "    return x**3 - 2*x + 2\n",
    "\n",
    "def df3(x):\n",
    "    return 3*x**2 - 2\n",
    "\n",
    "root = newton_method(f3, df3, x0=0)\n",
    "\n",
    "print(\"Root:\", root)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "98a83f74-192d-4bfa-aa0f-c4c0299c13c1",
   "metadata": {},
   "outputs": [],
   "source": [
    "x0 = 0\n",
    "\n",
    "nt = 100\n",
    "xn = np.empty(nt+1)\n",
    "xn[0]=0\n",
    "\n",
    "for it in np.arange(nt):\n",
    "    #print(f\"x_{i} = {x}\")\n",
    "\n",
    "    xn[it+1] = xn[it] - f(xn[it]) / df(xn[it])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "1f8e46fb-f5a7-4ad3-bcec-f2c31a7d396a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f52d8fdd8e0>]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIE5JREFUeJzt3QuQ1VXhB/CziC6gLCBEiq4PFDNBRfMRioVl+QbDZ0kNIz0sU4dgUpIEGZOMytTJSntYMllpStrgAyqflYpQaoKmKSI+AWV5uIDs/c85/7l3dnFX7+LC4e5+PjN3lt+557f74+zvnvvdc87vd6sKhUIhAABk0inXDwYAiIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAsuocKkBDQ0N46aWXQvfu3UNVVVXuwwEAyhDvq7pixYrQr1+/0KlTp8oOIzGI1NbW5j4MAGAjLFq0KOy8886VHUbiiEjxP1NTU5P7cACAMtTV1aXBhOL7eEWHkeLUTAwiwggAVJb3WmJhASsAkJUwAgBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQOWFkTVr1oRnnnkmrFy5sux96uvr0x1U165duzE/EgBop1oVRl588cVwwQUXhP79+4cBAwaEGTNmlLXfpEmTwvbbbx8GDx4c+vTpE66++uqNPV4AoCOHkXvvvTf06tUrzJs3r+x9brjhhjBt2rQwe/bssHTp0jB9+vQwduzYMGvWrLAleq2uPlwx6+n0VR3t49zwutAnbDn9oT66frO29RYbRs4888xw4YUXhr59+5a9z09+8pNw8sknh8MOOyxtDx8+PBxxxBGpfEv02oo14cq//Dd9VUf7ODe8LvQJW05/qI9es1nbut0sYG1oaAhz584NQ4YMaVI+dOjQMGfOnE35owGACrFJP7V3xYoVabFr7969m5THdSNLlixpcb+4T3w0/gjiTSkOVRUT4hOLlzf5GvXtXv3/9dTRPs4Nrwt9wmbtD/vWdNFHr9h8bZ1LVaFQKGzUjlVVaT3IqFGj3jWM1NTUvKNeXEMyZcqU9HxzJk+eHC655JJ3lC9fvjx9v7YW587ikFVLzv/kgPRVHe3j3PC60Cds3v5w7Kf20kf/ZfO1dVuLgwk9evR4z/fvTRpGop49e4aJEyeG8ePHl8rGjRsXZs6cGebPn1/2yEhtbe0mCyMbjoxceMvj4bsj9w2DdurRYqpUR/s4N7wu9Ambvj9sbmRE/7vvJmvrXGGkzadpli1bln7o7rvvnraHDRsW7rrrriZh5I477kjlLamurk6PzSX+Ajb8JcRfUPGX1LieOtrHueF1oU/Y/P2h/nfztHVFLGB966230s3O4iN69dVX079ff/31Up2rrroqHHDAAaXtiy66KNx3333h4osvDo888kg455xz0s3P4ugIAECrwki8v8gxxxyTHnvssUe6PDf++4orrijViTc3izdFKzr44IPD3XffnYLI6NGjw+LFi9P9Svbcc88tsvXjUFWcOysOa6mjfZwbXhf6hC2jP9RHV2/Wtt6cNnrNyOZU7pwTAFB5798+KA8AyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAoLLCyJ/+9KdwyCGHhA9+8INh6NCh4Z577nnX+uvWrQuXXHJJ2G+//cIOO+wQDjzwwPCDH/wgFAqF93PcAEA70bk1le+9995wyimnpDBx4oknhl/96lfhmGOOCXPmzAmDBg1qdp+JEyemejfeeGMYOHBg+Oc//xlGjRoVOnXqFMaOHdtW/w8AoEJVFVoxRHHcccelEPHnP/+5VHbAAQekxy9/+ctm94mjJ3vvvXf4+c9/Xio7/vjjQ7du3cJNN91U1s+tq6sLPXr0CMuXLw81NTXlHi4AkFG579+tmqZ54IEHwic/+ckmZZ/61KdSeUuGDx8e/vrXv4bnnnsubT/22GPh4YcfDiNGjGjNjwYAOvo0TUw3K1asSGtFGuvbt2946aWXWtzvm9/8ZnjllVdC//79Q5cuXcLatWvD1KlT01RNS9asWZMejX82ANA+tXoBa5ymaaxz587vuhj10ksvTetF7rzzzvDss8+mqZnLLrusxWmdKIaVOKxTfNTW1rb2MAGA9hZGunfvHrp27RqWLFnSpPy1115LoyPNiSHl8ssvD+PHjw9HH3106NevXxg5cmT40pe+lAJJSyZMmJDml4qPRYsWteb/BAC0xzBSVVUVDj744HD//fe/4wqbQw89tMUw0tDQkKZnGovbsbwl1dXVaaFL4wcA0D61aprm/PPPDzNmzAi33XZbePvtt9Mluw899FA499xzS3W++93vhl133fX/v3mnTukKnCuvvDI89dRTqWzevHnhuuuuS1fUAAC06j4jcYrl+9//fhgzZkx444030k3Mfv3rX4fDDz+8VKe+vj5NrRT97Gc/C+PGjUujJ2+99Vaa7vnsZz+bpm8AAFp1n5HGYrCIa0g2FMNIvBImLjzdUCyPUzCt5T4jAFB5yn3/btXISGPNBZHiepAN14gUbUwQAQDaNx+UBwBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQFbCCACQlTACAGQljAAAWQkjAEBWwggAkJUwAgBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQFbCCACQlTACAGQljAAAWQkjAEBWwggAkJUwAgBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQFbCCACQlTACAGQljAAAWQkjAEBWwggAkJUwAgBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQFbCCACQlTACAGQljAAAWQkjAEBWwggAkJUwAgBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQFadW7vDU089Fa688sqwcOHCMGDAgDBu3LhQW1v7rvs0NDSE6dOnh5kzZ4aqqqrwuc99Lpx44onv57gBgI44MvL000+HQw45JKxatSqMHj06PPfcc2n7lVdeaXGf9evXh+HDh4fJkyeHo446Kpxxxhnh+uuvD7fddltbHD8AUOGqCoVCodzKo0aNCv/973/DQw89lLbXrVuXRkdOPfXUMG3atGb3ueaaa8L48ePDk08+GXbbbbdS+cqVK8N2221X1s+tq6sLPXr0CMuXLw81NTXlHi4AkFG579+tGhm5++67w4gRI0rbW2+9dTjhhBNSeUviKEgcGWkcRKJygwgA0L6VvWZk9erV4fXXXw8777xzk/K4/fzzz7e43xNPPJFGTn74wx+Gv/3tb6Fv377hlFNOCccee2yL+6xZsyY9GicrAKB9KntkZO3atelr165dm5R369at9NyG4gxQfX19+N73vhcWLFgQvvjFL4Y999wzjBw5Mi2CbcnUqVPTsE7x8V4LZAGADjAyEqdVOnfuHJYtW9akfOnSpaFXr17N7hOvnOnZs2cKINdee20qi9M8caQjrjE5//zzm91vwoQJ4Rvf+EZpO9YXSACgg4eRGEQGDRoU5s6d26Q8bg8ePLjF/Q488MDQp0+fJmW77LJLCjFx5CQGlg1VV1enBwDQ/rVqAWu8nPemm24KzzzzTNqeM2dOWrway4t+85vfhJNOOqm0PWbMmDB79uywaNGitB2nbW688cbwsY99rNkgAgB0LK266dnXv/71NBKy//77h7333jtdrnvOOeeE0047rVTnf//7X7jnnntK25/97GfDvHnzwsCBA9PISnw+XlkTb4IGANCq+4wUxbuvvvDCC2GPPfYI/fr1a/JcDBtxFOTjH/94k/J4Y7Q4orLjjjuG/v37t2pUxH1GAKDylPv+vVFhZHMTRgCg8mySm54BALQ1YQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAsurc2h1WrlwZ/vCHP4SFCxeGAQMGhNNOOy1ss802Ze377LPPhuuuuy7su+++4cwzz9yY4wUAOvLIyNKlS8NBBx0UrrnmmlBfXx8uu+yyMHTo0LB69er33Hft2rXhjDPOSGHk1ltvfT/HDAB01DDyne98J6xfvz7cd9994fLLLw/3339/Gu348Y9//J77XnjhhWlEZMiQIe/neAGAjhxGbrnllnDqqaeGbt26pe3evXuHE088MZW/m5kzZ4bbb789XHXVVe/vaAGAjrtmZM2aNWmdyJ577tmkPG7HoNGSl19+OXzxi19MgWW77bYr+2fFR1FdXV25hwkAtNeRkeK6kJqamiblPXr0CKtWrWp2n4aGhrRQ9Stf+Ur46Ec/WvZBTZ06NX3f4qO2trbsfQGAdhpGtt1221BVVRWWL1/epPzNN99sccTjrrvuCg8++GC6AieuGYmPBQsWhCeeeCL9+4033mh2vwkTJqSfU3wsWrSotf8vAKC9TdPEy3f79+8fnnrqqSblcfvDH/5ws/vEKZxLLrmkSdnWW28dOnfuHHr27Bk6dWo+C1VXV6cHAND+VRUKhUK5leOIxY033hgee+yxNF0T14PEIDJlypRw3nnnpTqzZ89OoyGTJk1q9nuccMIJoUuXLuHmm28u+yDjmpE4XRNHSTacJgIAtkzlvn+36mqaOLXSq1evcOihh6Z1IPEy3QMPPDD9u+iBBx4IV1xxxfs7egCgw2jVHVhjunnooYfS1TMvvPBCuqz32GOPDVtttVWpzlFHHZWmYFoyevToNE0DANDqaZpcTNMAQOXZJNM0AABtTRgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKw6b8xOjz32WFi4cGEYMGBA2Hvvvd+z/qpVq8K8efPCunXrwr777hv69OmzMT8WAOjoIyNr164NJ510UjjyyCPDj370o3DIIYeEMWPGhEKh0OI+U6ZMCXvttVe48MILw+TJk8Ouu+4apk2b1hbHDgB0tJGRGEAefPDB8O9//zvsvPPO4T//+U846KCDwrBhw8LnP//5Zvfp27dvWLBgQejevXvanjFjRvjMZz6T9jn44IPb5n8BAHSMkZEbbrghnH766SmIRAMHDgzHHntsKm/J2WefXQoiURxZ2WabbdK0DQBA2WHk7bffDvPnzw/77bdfk/K4HdeQlOuBBx5I0z0xyLRkzZo1oa6urskDAOjgYWTlypVh/fr1oVevXk3Ke/fuHd58882yvscbb7wRzjrrrHD88ceHww8/vMV6U6dODT169Cg9amtryz1MAKC9hpHq6ur0dfXq1e8IKV26dHnP/ePoRpzS6dmzZ/jtb3/7rnUnTJgQli9fXnosWrSo3MMEANrrAtauXbuGHXbYIbzwwgtNyuN2//7933XfFStWhGOOOSZN9cyePTvU1NS8Z/Aphh8AoH1r1QLWOLJxyy23hIaGhrRdX18fbr/99lRe9OSTT4bbbrutychJDCJxncisWbPSyAgAQFFV4d1uErKB559/Pl2OO3To0HDccceF3/3ud+HZZ58Njz76aFo7EsV7icRLgIvrSOI9SebMmROuuOKKJkFkn332SY9yxCmeuHYkTtm816gKALBlKPf9u1X3Gdltt93C3LlzwzXXXBPuueeecMQRR6RAUgwiUQwYI0aMKG3vuOOO4eijjw533nlnk+912mmnlR1GAID2q1UjI7kYGQGAylPu+7cPygMAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRACArYQQAyEoYAQCyEkYAgKyEEQAgK2EEAMhKGAEAshJGAICshBEAICthBADIShgBALISRgCArIQRAKDywkh9fX1YtGhRWLt27SbdBwBo/1odRiZNmhS23377MHjw4NCnT59w9dVXb5J9AICOoVVh5IYbbgjTpk0Ls2fPDkuXLg3Tp08PY8eODbNmzWrTfTaX1+rqwxWznk5f1Wkf7bMlHpM62se54XVR6X3CFhVGfvKTn4STTz45HHbYYWl7+PDh4YgjjkjlbbnP5vLaijXhyr/8N31Vp320z5Z4TOpoH+eG10Wl9wlbTBhpaGgIc+fODUOGDGlSPnTo0DBnzpw22wcA6Fg6l1txxYoVYc2aNaF3795NyuMakCVLlrTZPlHcJz6K6urqQluJw1DF9PfE4uVNvkZ9u1f/fz11KqZ9+tZ08Xvdgn4f6mgf50b76Vs3l6pCoVAop2IMFjU1NWkNyKhRo0rlcT3IlClT0vNtsU80efLkcMkll7yjfPny5en7vR9xXiwOR7Xk/E8OSF/VqZz2Gfupvfxet6Dfhzrax7nRfvrW9ysOJvTo0eM937/LDiNRz549w8SJE8P48eNLZePGjQszZ84M8+fPb7N9mhsZqa2tbZMwsuHIyIW3PB6+O3LfMGinHi0mRnW27PZpbmQk9zGpo32cG14Xld4n9G2DkZFyw0jZ0zTRsGHDwl133dUkWNxxxx2pvGjZsmXph+6+++5l77Oh6urq9NgUYuNu2MCx8Yu/gMb11Kms9tkSj0kd7ePc8Lqo5D5hi7ya5qKLLgr33XdfuPjii8MjjzwSzjnnnHQjszjSUXTVVVeFAw44oFX7AAAdV6vCyMEHHxzuvvvuFCpGjx4dFi9eHO69996w5557lurEm5v179+/VfvkEoeh4rxYcchKncpvny3xmNTRPs4Nr4tK7xM2tVatGcml3DknAKDy3r99UB4AkJUwAgBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQFbCCACQVas+KC+X4k1i453cAIDKUHzffq+bvVdEGFmxYkX6Wltbm/tQAICNeB+Pt4Wv6M+maWhoCC+99FLo3r17qKqqatPEFgNO/BRhn3mz6WjnzUdba+f2xPlc+e0cI0YMIv369QudOnWq7JGR+B/YeeedN9n3j40vjGx62nnz0dbauT1xPld2O7/biEiRBawAQFbCCACQVYcOI9XV1WHSpEnpK9q5PXBOa+f2xPnccdq5IhawAgDtV4ceGQEA8hNGAICshBEAIKuKuM/IprBu3brw4IMPhuXLl4eDDjoo7LTTTrkPqV148sknw7PPPpvuCzN48OBmb1K3dOnS8I9//CMtljr88MNDt27dshxrezBv3rzw1FNPhY997GPppkKNrV69OjzwwANh7dq14bDDDgvbb799tuOsZEuWLAkPP/xw6NWrVzjkkEPCVltt1eT5t99+O53Py5YtCwcccEDYZZddsh1rJffHjzzySHjttdfSeRz75OZukDV37tywcOHCMGDAgDBo0KAsx1pJCoVC+Nvf/pba9bTTTmu2Tevr61M/8dZbb4WPfvSj4QMf+MBG1WmLg+1wFi5cWNhrr70Ke+yxR+HII48sdO3atXD11VfnPqyK9sgjjxQ+8pGPFPbZZ5/CCSecUNhpp53S9ksvvdSk3h//+MfCdtttVzj88MMLgwYNKuy4446FefPmZTvuSvb8888XPvjBD8YF6IXbb7+9yXNz5sxJz+23336Fww47rNC9e/fCjBkzsh1rpbr00ksL3bp1K3ziE58oHHXUUem8XbZsWen5l19+OZ3Hu+22W6oT+5LLL7886zFXmscff7xQW1ub+uQRI0YUdtlll8KHPvSh1E8X1dfXF44//vhCnz59Cp/+9KcLPXr0KHzhC18orF+/Puuxb8l++tOfpve4+Ih9xFtvvfWOOk888UTqq2O/PXTo0MK2225buPHGG1tdpy10yDAST+rYqGvXrk3bN9xwQ2GrrbYqLFiwIPehVax77rmnMHfu3NL26tWrC4MHDy6ceuqppbKlS5cWampqClOnTi2VnXLKKakzp3XWrVtXGDJkSGHatGnvCCMNDQ2Fvffeu3DmmWeWyiZNmlTo2bNn4c0339TUZfrFL35RqK6uLvz9739vEroXL15c2j799NNT6C529LfeemuhqqqqyWuBdzd8+PDUHxeDRQweMYx8+ctfLtWJfUbfvn1Lbf/kk0+m4Hf99ddr3hZce+21hWeeeaZw0003tRhG4rl70kknpT4jiv1JDN+vvvpqq+q0hQ4XRpYsWVLo1KlT4fe//32pLL4Idthhh8LkyZOzHlt7M2HChMKAAQNK27/61a8K22yzTaGurq5UFjv6+EL517/+lekoK7dtY5B7/fXX3xFG4htmLHv00UebBMHOnTsXpk+fnumIK0/8i7LxG+KGVq1alc7nGFoa69+/f2H8+PGb4Qjbh6OPPrrwuc99rklZHLEePXp0aXvgwIGFc889t0mdkSNHptEq3l1LYWT+/Pmp/N577y2VrVy5MoW8OKpSbp220qkjrmmIH7zXeL4xzqMNHDgwPP7441mPrT2JQfevf/1rk3aO7bvrrrumDzws2nfffUvPUZ6//OUvYfr06eFnP/tZs88X27Jx28f1InFdlHYuT/xgzrj26dOf/nR4+umnw5/+9Ke0XqHxbZniWp24HmfDtQvxnNbO5bvsssvCQw89FC644ILw61//Onzta18Lr776apg4cWJpTc78+fO1cxtrrp/YdtttQ//+/UvPlVOnrXS4BaxxwWq04WK+3r17p4WVtF0H8+9//ztce+21Tdp+w3bfbrvtwjbbbBPefPNNTV+GuBDtC1/4QvjNb36T2jIurtxQbOfYYcR23fAc187lt3P0+9//Pr1J7rPPPmmBZVycOnPmzNSW79aX/Oc//3E+lykuWN1///3DLbfckkLHY489Fo488sjQp0+f9PzKlSvTH5DNtbPzeeMVz9+4MLuldi2nTlvpcCMjxdvdxhO8sbjdpUuXTEfVvsS/2KdMmRJ+97vfhf32269J22/Y7nEVffzrUtuX51vf+lb6qO/XX389te+tt96ayu+///40ElVs57jqPXbgjTnHy1c8H+MISXyDvO2229IISQx/xb/Y9SVtI17lEa/WWLBgQWrnOOIUR7DPPvts7bwJFc/fVatWtdhPlFOnrXS4MLLHHnukry+88EKT8ni5WBx64v257rrrwnnnnZfeKEeMGPGOtl+8eHFYv359k3aPtH15PvzhD4fddtstzJgxIz3uuOOOVB4vLY2X3hXbOQaRF198sbRfHOqOb6zauTxxOjFewnviiSeGrbfeOpXF6cU4bfPoo482OWf1JRsv9gXxFgsjR44sXTId3wBju8dLUqOuXbuGHXfcUTtvhvfCOA25aNGi0rldTp02U+iA4krts88+u8mlS7Ep7rzzzqzHVel+/vOfpwV98fLd5sQV8PFKg8btHC+djFd5NLfSm/fW3ALWuLAyXsr7/e9/v1QWL+uNbf/0009r1lYsrGy8iDIaNmxYWjjZ+EqDUaNGlbb/97//pQXyN998s3YuU7xsdNy4cU3K4oLW2LZFY8aMKey///6Ft99+u3S1Xr9+/QoTJ07Uzhu5gDVeTRovlW584cbs2bNT3eLtFsqp01Y63JqR6Ec/+lFK3nFOPSa/K6+8Mhx//PHh6KOPzn1oFSv+lf6lL30pnHHGGWnaJY6MRPGvypNPPrn0V/1Xv/rV8PnPfz5885vfTPORl19+efjxj39smqYNxZvIxXYdO3ZsqKurS+ty4nYcsYo3i6I806ZNSzeTi+tvDjzwwDQNFm9+Fv+SL/rBD36QRktinbjIL57LH//4x8NnPvMZzVymb3/72+Hcc89NoyRxWvef//xnWqtz8803l+pcfPHF6UZoJ510UjjuuOPS83EEJZ7jNG/OnDnhmWeeSYuDo5tuuin1x8OGDQs77LBD+vcPf/jDMGbMmLBmzZq0Riee83E73rAyKqdOW+mwn9obh1rjIsD4hjhkyJBw1llnlYZjab0//OEPaQHahuK84vXXX1/ajqdbDCqzZ89Oncmpp56aFquxcVasWJFCYFxkGe/+2Vhs4z/+8Y8pHMY3zNNPP10zt9Jzzz2Xph5ffvnlsPvuu6d+It5duLG44DKe4/EOrPENM/4+cn4UeyWKb5hx/VO8iiZe9RX/qNnwKqU4xfvTn/40TRnEUB3/sIkLKWneL37xizBr1qx3lE+YMCEtGC667777UriL68xiXzxq1Kh33Dm7nDrvV4cNIwDAlqHDLWAFALYswggAkJUwAgBkJYwAAFkJIwBAVsIIAJCVMAIAZCWMAABZCSMAQFbCCACQlTACAGQljAAAIaf/AxQrgnRfSlAkAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(xn,'+')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c8a2aa1e-2282-4012-8de9-b3e7344221fc",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Numeric_Env",
   "language": "python",
   "name": "numeric_env"
  },
  "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.12.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
