{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Non-linear equations and root-finding\n", "\n", "Often we may encounter a problem where we need to find a root of an equation\n", "$$\n", "f(x) = 0\n", "$$\n", "that we cannot solve explicitly.\n", "The solution can be obtained using numerical methods.\n", "\n", "The most common methods are:\n", "\n", "- Non-local (two-point) methods\n", " - Bisection method\n", " - False position method\n", " - Secant method\n", "- Local methods\n", " - Newton method\n", " - Quasi-newton methods\n", " - Iteration method" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bisection method\n", "\n", "Let us consider an equation \n", "$$\n", "x+e^{-x}-2 = 0,\n", "$$\n", "i.e. $f(x) = x+e^{-x}-2$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAG2CAYAAABf1dN5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAASRpJREFUeJzt3XlcVPX+x/HXsIMsioSiIqDinvuWZm5l2eaSN7Pcs2zTqy23blba3q9s3+xquWRmZmllpXaNtFBRXHApQEUUVxQVBNnn/P4wuZEbjMCZ5f18POYP5nzny2eOX2benvM932MxDMNARERERMrFzewCRERERByRQpSIiIiIDRSiRERERGygECUiIiJiA4UoERERERsoRImIiIjYQCFKRERExAYKUSIiIiI28DC7AGdmtVo5ePAgAQEBWCwWs8sRERGRMjAMg1OnTlGnTh3c3C58vEkhqhIdPHiQ8PBws8sQERERG6SlpVGvXr0LbleIqkQBAQHAmX+EwMBAk6sRERGRssjKyiI8PLzke/xCFKIq0dlTeIGBgQpRIiIiDuZSU3E0sVxERETEBgpRIiIiIjZQiBIRERGxgUKUiIiIiA0UokRERERsoBAlIiIiYgOFKBEREREbKESJiIiI2EAhSkRERMQGClEiIiIiNlCIEhEREbGBQpSIiIiIDRSiRERExOGcyitkduweDMMwrQYP036ziIiIiA1y8osYPWsD8XtPcDQ7n8eub2pKHToSJSIiIg4jr7CYsXPiid97gkAfD/q1DDOtFqcMUYsWLWL8+PF0796dwMBALBYLw4YNs6mv/fv3M2bMGOrUqYO3tzeRkZFMnDiREydOVHDVIiIicjH5RcWM+3Qja1My8Pf2YM6YTrSsG2RaPU55Ou+FF14gISEBf39/6tWrR2Jiok397N69m65du5Kenk7//v1p2rQp69ev5+2332bZsmXExsZSs2bNCq5eRERE/q6w2MpD8zezKvkovp7ufDKqI23r1zC1Jqc8EvXmm2+SnJxMVlYWH374oc39PPDAA6Snp/POO++wZMkSXnnlFX7++WcmTZpEUlISkydPrsCqRURE5HyKiq1M+mILP/1+BC8PN2aO7ECnqGCzy3LOENWrVy+io6OxWCw297F7925WrFhBVFQUDz74YKltzz77LNWqVWPu3LlkZ2dfbrkiIiJyAVarwb8W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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "\n", "def func1(x):\n", " return x + np.exp(-x) - 2.\n", "\n", "xref = np.linspace(0,3,100)\n", "fref = func1(xref)\n", "\n", "import matplotlib.pyplot as plt\n", "# Default style parameters (feel free to modify as you see fit)\n", "params = {'legend.fontsize': 'large',\n", " 'axes.labelsize': 'x-large',\n", " 'axes.titlesize':'x-large',\n", " 'xtick.labelsize':'x-large',\n", " 'ytick.labelsize':'x-large',\n", " 'xtick.direction':'in',\n", " 'ytick.direction':'in',\n", " }\n", "plt.rcParams.update(params)\n", "\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref)\n", "plt.axhline(y = 0., color = 'black', linestyle = '--',label='max. error')\n", "#plt.plot([1.841406], [0], 'ro')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For $x>0$ the equation $f(x) = 0$ has a root at $x \\approx 1.84...$\n", "\n", "The idea of the bisection method is to consider an interval $a 0.):\n", " return None # Bisection method is not applicable\n", " \n", " global last_bisection_iterations\n", " last_bisection_iterations = 0\n", " \n", " \n", " while ((b-a) > tolerance):\n", " last_bisection_iterations += 1\n", " c = (a + b) / 2. # Take the midpoint\n", " fc = f(c) # Calculate the function at midpoint\n", " \n", " \n", " if bisection_verbose:\n", " print(\"Iteration: {0:5}, c = {1:20.15f}, f(c) = {2:10.15f}\".format(last_bisection_iterations, c, fc))\n", " \n", " if (fc * fa < 0.): \n", " b = c # The midpoint is the new right boundary\n", " fb = fc\n", " else: \n", " a = c # The midpoint is the new left boundary\n", " fa = fc\n", "\n", " return (a+b) / 2. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# The default desired accuracy\n", "accuracy = 1.e-10" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x + e^-x - 2 = 0 on an interval ( 0.0 , 3.0 ) using bisection method\n", "Iteration: 1, c = 1.500000000000000, f(c) = -0.276869839851570\n", "Iteration: 2, c = 2.250000000000000, f(c) = 0.355399224561864\n", "Iteration: 3, c = 1.875000000000000, f(c) = 0.028354966844928\n", "Iteration: 4, c = 1.687500000000000, f(c) = -0.127518600092696\n", "Iteration: 5, c = 1.781250000000000, f(c) = -0.050322518721816\n", "Iteration: 6, c = 1.828125000000000, f(c) = -0.011160374631956\n", "Iteration: 7, c = 1.851562500000000, f(c) = 0.008554175081233\n", "Iteration: 8, c = 1.839843750000000, f(c) = -0.001314006731460\n", "Iteration: 9, c = 1.845703125000000, f(c) = 0.003617373389399\n", "Iteration: 10, c = 1.842773437500000, f(c) = 0.001151003645707\n", "Iteration: 11, c = 1.841308593750000, f(c) = -0.000081671712691\n", "Iteration: 12, c = 1.842041015625000, f(c) = 0.000534623455207\n", "Iteration: 13, c = 1.841674804687500, f(c) = 0.000226465239541\n", "Iteration: 14, c = 1.841491699218750, f(c) = 0.000072394105009\n", "Iteration: 15, c = 1.841400146484375, f(c) = -0.000004639468506\n", "Iteration: 16, c = 1.841445922851562, f(c) = 0.000033877152093\n", "Iteration: 17, c = 1.841423034667969, f(c) = 0.000014618800253\n", "Iteration: 18, c = 1.841411590576172, f(c) = 0.000004989655488\n", "Iteration: 19, c = 1.841405868530273, f(c) = 0.000000175090895\n", "Iteration: 20, c = 1.841403007507324, f(c) = -0.000002232189455\n", "Iteration: 21, c = 1.841404438018799, f(c) = -0.000001028549442\n", "Iteration: 22, c = 1.841405153274536, f(c) = -0.000000426729314\n", "Iteration: 23, c = 1.841405510902405, f(c) = -0.000000125819220\n", "Iteration: 24, c = 1.841405689716339, f(c) = 0.000000024635835\n", "Iteration: 25, c = 1.841405600309372, f(c) = -0.000000050591693\n", "Iteration: 26, c = 1.841405645012856, f(c) = -0.000000012977929\n", "Iteration: 27, c = 1.841405667364597, f(c) = 0.000000005828953\n", "Iteration: 28, c = 1.841405656188726, f(c) = -0.000000003574488\n", "Iteration: 29, c = 1.841405661776662, f(c) = 0.000000001127232\n", "Iteration: 30, c = 1.841405658982694, f(c) = -0.000000001223628\n", "Iteration: 31, c = 1.841405660379678, f(c) = -0.000000000048198\n", "Iteration: 32, c = 1.841405661078170, f(c) = 0.000000000539517\n", "Iteration: 33, c = 1.841405660728924, f(c) = 0.000000000245659\n", "Iteration: 34, c = 1.841405660554301, f(c) = 0.000000000098731\n", "Iteration: 35, c = 1.841405660466990, f(c) = 0.000000000025266\n", "The solution is x = 1.8414056604233338 obtained with 35 iterations\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 0.\n", "b = 3.\n", "print(\"Solving the equation x + e^-x - 2 = 0 on an interval (\", a, \",\", b, \") using bisection method\")\n", "bisection_verbose = True\n", "xroot = bisection_method(func1,a,b,accuracy)\n", "print(\"The solution is x = \", xroot, \" obtained with \", last_bisection_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func1(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us try a polynomial equation with a single real root:\n", "$$\n", "f(x) = x^3 - x - 1\n", "$$" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration: 1, c = 1.500000000000000, f(c) = 0.875000000000000\n", "Iteration: 2, c = 0.750000000000000, f(c) = -1.328125000000000\n", "Iteration: 3, c = 1.125000000000000, f(c) = -0.701171875000000\n", "Iteration: 4, c = 1.312500000000000, f(c) = -0.051513671875000\n", "Iteration: 5, c = 1.406250000000000, f(c) = 0.374664306640625\n", "Iteration: 6, c = 1.359375000000000, f(c) = 0.152614593505859\n", "Iteration: 7, c = 1.335937500000000, f(c) = 0.048348903656006\n", "Iteration: 8, c = 1.324218750000000, f(c) = -0.002127945423126\n", "Iteration: 9, c = 1.330078125000000, f(c) = 0.022973485291004\n", "Iteration: 10, c = 1.327148437500000, f(c) = 0.010388596914709\n", "Iteration: 11, c = 1.325683593750000, f(c) = 0.004121791920625\n", "Iteration: 12, c = 1.324951171875000, f(c) = 0.000994790971163\n", "Iteration: 13, c = 1.324584960937500, f(c) = -0.000567110148040\n", "Iteration: 14, c = 1.324768066406250, f(c) = 0.000213707162629\n", "Iteration: 15, c = 1.324676513671875, f(c) = -0.000176734802636\n", "Iteration: 16, c = 1.324722290039062, f(c) = 0.000018477852226\n", "Iteration: 17, c = 1.324699401855469, f(c) = -0.000079130557112\n", "Iteration: 18, c = 1.324710845947266, f(c) = -0.000030326872924\n", "Iteration: 19, c = 1.324716567993164, f(c) = -0.000005924640470\n", "Iteration: 20, c = 1.324719429016113, f(c) = 0.000006276573348\n", "Iteration: 21, c = 1.324717998504639, f(c) = 0.000000175958307\n", "Iteration: 22, c = 1.324717283248901, f(c) = -0.000002874343115\n", "Iteration: 23, c = 1.324717640876770, f(c) = -0.000001349192913\n", "Iteration: 24, c = 1.324717819690704, f(c) = -0.000000586617430\n", "Iteration: 25, c = 1.324717909097672, f(c) = -0.000000205329594\n", "Iteration: 26, c = 1.324717953801155, f(c) = -0.000000014685651\n", "Iteration: 27, c = 1.324717976152897, f(c) = 0.000000080636326\n", "Iteration: 28, c = 1.324717964977026, f(c) = 0.000000032975337\n", "Iteration: 29, c = 1.324717959389091, f(c) = 0.000000009144842\n", "Iteration: 30, c = 1.324717956595123, f(c) = -0.000000002770405\n", "Iteration: 31, c = 1.324717957992107, f(c) = 0.000000003187219\n", "Iteration: 32, c = 1.324717957293615, f(c) = 0.000000000208407\n", "Iteration: 33, c = 1.324717956944369, f(c) = -0.000000001280999\n", "Iteration: 34, c = 1.324717957118992, f(c) = -0.000000000536296\n", "Iteration: 35, c = 1.324717957206303, f(c) = -0.000000000163944\n", "The solution is x = 1.324717957249959 obtained with 35 iterations\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG2CAYAAAB20iz+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATKRJREFUeJzt3XlcVOX+B/DP7KwziIiogCAgaqag5o5rmXorlyytNLXlumVp167lzbRM69e10spWu2bZqrmUlUuGWkq4YqImKqAgAgIywzowM+f3xwhJAg44zJk583m/XvNSzzxz+M7xOPPxOc95HpkgCAKIiIiIJEgudgFERERETYVBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCRLKXYBYrNYLMjKyoKvry9kMpnY5RAREZENBEFAUVERWrduDbm87n4btw86WVlZCAkJEbsMIiIiaoSMjAwEBwfX+bzbBx1fX18A1gOl1WpFroaIiIhsYTAYEBISUv09Xhe3DzpVl6u0Wi2DDhERkYu50bATDkYmIiIiyWLQISIiIsli0CEiIiLJYtAhIiIiyXL7wcgNVVlZCbPZLHYZkqVQKKBSqcQug4iIJIJBx0YGgwF5eXkwGo1ilyJ5Go0GAQEBvAuOiIhuGoOODQwGAy5evAgfHx8EBARApVJxFuUmIAgCKisrodfrcfHiRQBg2CEiopvCoGODvLw8+Pj4IDg4mAGniXl6esLX1xeZmZnIy8tj0CEiopvCwcg3UFlZCaPRCJ1Ox5DjIDKZDDqdDkajEZWVlWKXQ0RELoxB5waqBh5zgKxjVR1vDvwmIqKbwaBjI/bmOBaPNxER2QODDhEREUkWgw4RERE1idPZRdh1KgdmiyBaDQw6hK+//hq33HILPD09IZPJkJSUBAB45JFHMHz48Abvb9euXfDx8am+RZyIiNzTe7vP4tG1h/DKj6dEq4FBx81dvnwZkyZNQkREBLZt24aEhAS0b98eR48exdq1a/Hyyy83eJ9Dhw5Fz549sWDBgiaomIiIXEFuUTl+OH4JADAqpo1odTDouLmUlBRUVlZi4sSJGDhwIHr37g0vLy+8+uqr6NmzJ3r06NGo/c6aNQuff/45MjIy7FwxERG5gq8OZKDSLKBbqB9uDdaJVgeDTiMJgoDSCpPTPASh4dc/p0yZgv79+wMAxo8fD5lMhkGDBiEnJwebNm3CpEmTarSfPn06PDw8cPjw4eptFosFQ4cORcuWLXHp0qXq7XfffTd8fHzw0UcfNfIIExGRq6o0W/B54nkAwOS+YaLWwpmRG6ms0oxOL2wXu4xqJ1+6E17qhv11Lly4ED179sSsWbOwbNkyDB48GFqtFjt27EBlZSUGDx5co/2KFSuQmJiI+++/H4cPH4afnx9efPFF7N69G9u2bUOrVq2q26rVavTt2xc//PADXnrpJbu8RyIicg3bT2Qjx2BEgI8GIzq3uvELmhB7dNxYREQEOnXqBACIiopC79690alTJyQkJMDT0xMdOnSo0d7DwwPr169HXl4epk6dil27duHll1/GggULcMcdd1y3/27duiEpKQklJSUOeT9EROQc1u5PBwA82CsUaqW4UYM9Oo3kqVLg5Et3il1GNU+Vwm77ysrKQosWLWqdtC8yMhIfffQRxo8fj23btiEuLg6LFy+udT+BgYGwWCzIzs5GRESE3eojIiLndSJLj4PpV6CUy/BQr1Cxy2HQaSyZTNbgS0WuoqysDB4eHnU+/49//AMtW7ZETk4Onn76aSgUtYesqn2UlZU1SZ1EROR8Pt1vHZszvHMQWmrr/i5xFF66ousEBASgoKCgzuenT5+OoqIi3HLLLXjyySdx5cqVWttV7SMgIKBJ6iQiIudypaQCm5Osc6hNEXkQchUGHbpOhw4dkJ+fD71ef91zq1evxrp16/DOO+/gu+++Q2FhIaZOnVrrflJTU9G8eXO0bNmyqUsmIiIn8M2hDBhNFtzSWovubZuJXQ4ABh2qxaBBgyAIAhITE2tsP378OJ588klMnjwZU6dORbt27fDxxx9jy5YtWLFixXX7+f333zFw4EAu0ElE5AbMFgGf/X71lvI+YU7z2c+gQ9fp168fwsLCsGXLluptJSUluP/++xEeHo533323evu9996LWbNm4d///jcOHDhQvf3cuXM4fvw4HnroIYfWTkRE4th1KgeZV8rg56XCPTGtxS6nGoOOm6vqvRk3blz1NrlcjieeeAJffvll9UBib29vnDp1CidOnICXl1eNfbzzzjuoqKhAz549q7d98sknCA0NxT333OOYN0JERKJasy8dADDhtlB42PFO4JvFoEO1mjVrFnQ6HVatWtXg1xYWFmLVqlVYtmwZ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V0JERFS7lbvOoNhoQuc2WtzdpbXY5UiOywedxMREVFRUXLd9z549eOONNwCgzuUjiIiIxHQ2txifJ1oX7lwwsiPkci7caW9OORh58+bN2Lx5MwAgOzsbAJCQkIApU6YAAAICArB8+XIAwPz583HixAkMGjQIwcHBAIDjx49j165dAIAlS5agb9++jn0DRERENnj1pz9htgi4vWMg+kZw4c6m4JRBJykpCWvXrq2xLTU1Famp1muYbdu2rQ46kyZNwqZNm3Dw4EH89NNPqKysRMuWLXH//ffjiSeeQFxcnMPrJyIiupGEc/n4+VQOFHIZnh3RUexyJEsmCIIgdhFiMhgM0Ol00Ov1NW4vJyIiaioWi4B7Vv2G5IsGTOrdFktGcwHqhrL1+9vlx+gQERG5mi3HLiL5ogE+GiWeuj1K7HIkjUGHiIjIgcorzfjvttMAgBmDIhDgw3nbmhKDDhERkQP9b18asvTlaK3zwKP9w8UuR/IYdIiIiBzkcpER78afAwA8MzwaHipODtjUGHSIiIgc5I2dp1FsNKFLsA6jurYRuxy3wKBDRETkACey9PjqYAYA4IW7OnFyQAdh0CEiImpigiBgydaTEATgri6t0CPMX+yS3AaDDhERURPbcTIHv6cWQK2U49kRHcQux60w6BARETUho8mMZT+eAgD8M64dgpt5iVyRe2HQISIiakJr96fjfH4pWvhqMGNQhNjluB0GHSIioiaSV2zE27vOAgD+fWc0vDVOucSkpDHoEBERNZHXd5xGkdGEzm20uLdbsNjluCUGHSIioiZwPPOv28kX3X0LbycXCYMOERGRnQmCgMXfn4AgAKNiWuM23k4uGgYdIiIiO9uSlIXD56/AS63AcyM6il2OW2PQISIisqMSowmv/GS9nXzW4EgE6TxErsi9MegQERHZ0ar4s8gxGBHq78XVyZ0Agw4REZGdnM8vwepf0wAAz/+jI1cndwIMOkRERHayZOspVJgtiIsKwB2dWopdDoFBh4iIyC7iT+fi51M5UMplWHR3J8hkvJ3cGTDoEBER3aTySjMWf3cCADC1XxgiA31FroiqMOgQERHdpI/2puJ8filaajV46vb2YpdD12DQISIiugkZBaVYtdu6ntWCkR3hw/WsnAqDDhER0U1YsvUkyist6N3OH/d0bS12OfQ3DDpERESNFH86FztOWgcgvzSqMwcgOyEGHSIiokYwmsx48eoA5Cl9w9C+JQcgOyMGHSIiokb4cE8q0vNLEeirwVO3R4ldDtWBQYeIiKiBLuSX4p146wDk//yjI3w9VCJXRHVh0CEiImoAQRCwcEsyjCYL+kU25wBkJ8egQ0RE1AA/JWdjT8plqBVyLOEAZKfHoENERGSjYqMJL31/EgAwfWA7tGvhI3JFdCMMOkRERDZ6c2cKsg3lCPX3wszBkWKXQzZg0CEiIrLBiSw9PtmfDgB4adQt8FApxC2IbMKgQ0REdAMWi4DnNyfDbBHwj1tbYVB0oNglkY0YdIiIiG7g8wMXcPRCIbzVCiy8q5PY5VADNHrlsZSUFOzcuRN79+5FRkYG8vLy4OnpicDAQMTExGDw4MEYMmQIPDw87FkvERGRQ+UYyvHaT38CAJ65MxpBOn6vuRKZIAhCQ17w1Vdf4d1338W+ffsAWOcTqHXHMhn8/PwwZcoUzJ49G2FhYTddbFMwGAzQ6XTQ6/XQarVil0NERE5mxrrD+Ck5G11D/LBxRl8o5Lyd3BnY+v1t86Wr+Ph4xMbG4sEHH8SJEycwZcoUfPjhh0hKSkJ2djYqKiqg1+uRmpqKH3/8EQsXLkR0dDTefPNNdOzYEfPnz4fBYLDLmyMiInKEnSdz8FNyNhRyGV4ZcytDjguy+dLV0KFD0a1bN3zzzTe45557oFarr2vj6+sLX19fhIWFYfjw4Vi8eDHOnDmD999/H++88w58fHywcOFCu74BIiKiplBsNOGFLckAgMfiwtGpNXv9XZHNl642bdqEMWPGNPoHZWdnIz09Hb179270PpoCL10REVFtXvz+BNbsS0eIvyd2zBkITzVvJ3cmtn5/29yjczMhBwCCgoIQFBR0U/sgIiJyhGMZhVh7dc6cpaNvZchxYU1+e7nZbG7qH0FERGQ3lWYL5n/7BywCMDqmNQa0byF2SXQTGh10ZsyYAaPRWG+b8+fPIy4urrE/goiIyOE+2HMOf2YXoZmXCs9zzhyX1+ig88EHH6BXr144ffp0rc9v3LgRsbGxSExMbHRxREREjnQ2twhv7ToLAFh09y0I8NGIXBHdrEYHnf/85z9ITk5Gjx49sHbt2urtFRUVmDVrFu677z7I5XJs2rTJLoUSERE1JYtFwPxvj6PCbMHg6BYYFdNa7JLIDhoddJYsWYLt27fDx8cHjzzyCCZNmoRDhw6hV69eeO+999C3b18kJSXhnnvusWe9RERETeKz38/j8Pkr8FYr8PKYWyGTcc4cKbipwchDhw7FsWPHcPvtt+OLL75Ar169kJycjOeffx579uxBcHCwveokIiJqMplXSvF/26zLPDw7ogPa+HmKXBHZS6PXuqri4+ODFi1aVC8FodPpMHDgQMjlXC+UiIicnyAIWLApGaUVZtwW1gwP9WordklkRzeVRo4dO4Zu3brhyy+/xJ133on3338fFRUVuPPOO/H888/DYrHYq04iIqImseFwJvamXIZaKcer93aBnMs8SEqjg86qVavQp08fpKamYtmyZfjpp5/wz3/+E4cPH0aXLl3wyiuvYODAgcjMzLRnvURERHaTrS/HS1tPAgDm3B6FiBY+IldE9tbg1curyOVyhIaG4ssvv0SfPn1qPFdRUYF//etfWLVqFfz9/ZGXl2eXYpsCl4AgInJPgiDg0bWH8MufuegarMO3M/pCqeCwC1dh99XL/27UqFE4evTodSEHANRqNd5++21s3LgRjcxRRERETWrjkYv45c9cqBVy/Pe+rgw5EtXowci2zI8zevRodO/evbE/goiIqEnkGMrx4vcnAABP3R6F9i19Ra6ImkqTx9eQkJAGv2bDhg2YPXs24uLioNVqIZPJMHHixHpfs3//fowcORL+/v7w8vJCly5dsGLFCq61RURENQiCgAUbj8NQbkKXYB2mDWgndknUhGwOOllZWTf9wy5dumRTu5dffhnvvPMOkpKS0KZNmxu237JlCwYMGIC9e/dizJgxmDVrFioqKjB37lxMmDDhZssmIiIJ2Zx0EbuqLlmN4yUrqbP5bzciIgLz5s1DTk5Og36AIAjYsmULYmNj8dFHH9n0mjfffBMpKSkwGAx477336m1rMBjw2GOPQaFQYPfu3fj444/x3//+F0lJSejTpw82bNiAr776qkE1ExGRNGXry7Foy1+XrKKDeMlK6mwOOs888wzee+89hISE4J577sG6deuQmppaa9vi4mL88ssvmD9/PkJCQjB27Fh4eHhg7NixNv2swYMHIyoqyqbpt9evX4+8vDw88MAD6NGjR/V2Dw8PvPzyywCAd99916afS0RE0iUIAv797R8wlJvQlZes3IbNg5FfeuklPP7441iyZAm++OIL/PDDDwCsMyEHBgaiWbNm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def func2(x):\n", " return x**3 - x - 1.\n", "\n", "a = 0.\n", "b = 3.\n", "xroot = bisection_method(func2, a, b, accuracy)\n", "print(\"The solution is x = \", xroot, \" obtained with \", last_bisection_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### False position method\n", "\n", "In the false position method instead of choosing the midpoint, we choose the point where the straight line between current interval edges crosses the $y = 0$ axis.\n", "\n", "![falseposition](falseposition.png)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "last_falseposition_iterations = 0\n", "falseposition_verbose = True\n", "\n", "def falseposition_method(\n", " f, # The function whose root we are trying to find\n", " a, # The left boundary\n", " b, # The right boundary\n", " tolerance = 1.e-10, # The desired accuracy of the solution\n", " max_iterations = 100 # Maximum number of iterations\n", " ):\n", " fa = f(a) # The value of the function at the left boundary\n", " fb = f(b) # The value of the function at the right boundary\n", " if (fa * fb > 0.):\n", " return None # False position method is not applicable\n", " \n", " xprev = xnew = (a+b) / 2. # Estimate of the solution from the previous step \n", " \n", " global last_falseposition_iterations\n", " last_falseposition_iterations = 0\n", " \n", " for i in range(max_iterations):\n", " last_falseposition_iterations += 1\n", " \n", " xprev = xnew\n", " xnew = a - fa * (b - a) / (fb - fa) # Take the point where straight line between a and b crosses y = 0\n", " fnew = f(xnew) # Calculate the function at midpoint\n", "\n", " if falseposition_verbose:\n", " print(\"Iteration: {0:5}, x = {1:20.15f}, f(x) = {2:10.15f}\".format(last_falseposition_iterations, xnew, fnew))\n", " \n", " if (fnew * fa < 0.): \n", " b = xnew # The intersection is the new right boundary\n", " fb = fnew\n", " else: \n", " a = xnew # The midpoint is the new left boundary\n", " fa = fnew\n", " \n", " if (abs(xnew-xprev) < tolerance):\n", " return xnew\n", " \n", " print(\"False position method failed to converge to a required precision in \" + str(max_iterations) + \" iterations\")\n", " print(\"The error estimate is \", abs(xnew - xprev))\n", " \n", " return xnew " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x + e^-x - 2 = 0 on an interval ( 0.0 , 3.0 ) using the false position method\n", "Iteration: 1, x = 1.463566653481105, f(x) = -0.305023902720619\n", "Iteration: 2, x = 1.809481253839539, f(x) = -0.026779692379373\n", "Iteration: 3, x = 1.839095511827520, f(x) = -0.001943348598294\n", "Iteration: 4, x = 1.841240588240115, f(x) = -0.000138890519932\n", "Iteration: 5, x = 1.841393875903701, f(x) = -0.000009915561978\n", "Iteration: 6, x = 1.841404819191791, f(x) = -0.000000707828391\n", "Iteration: 7, x = 1.841405600384506, f(x) = -0.000000050528475\n", "Iteration: 8, x = 1.841405656150106, f(x) = -0.000000003606984\n", "Iteration: 9, x = 1.841405660130943, f(x) = -0.000000000257485\n", "Iteration: 10, x = 1.841405660415115, f(x) = -0.000000000018381\n", "Iteration: 11, x = 1.841405660435401, f(x) = -0.000000000001312\n", "The solution is x = 1.8414056604354012 obtained after 11 iterations\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 0.\n", "b = 3.\n", "print(\"Solving the equation x + e^-x - 2 = 0 on an interval (\", a, \",\", b, \") using the false position method\")\n", "xroot = falseposition_method(func1, a, b, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_falseposition_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func1(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x^3 - x - 1 = 0 on an interval ( 0.0 , 3.0 ) using the false position method\n", "Iteration: 1, x = 0.125000000000000, f(x) = -1.123046875000000\n", "Iteration: 2, x = 0.258845437616387, f(x) = -1.241502544655680\n", "Iteration: 3, x = 0.399230727605107, f(x) = -1.335599268673875\n", "Iteration: 4, x = 0.541967526475374, f(x) = -1.382776055418208\n", "Iteration: 5, x = 0.681365453934702, f(x) = -1.365035490183169\n", "Iteration: 6, x = 0.811265467641601, f(x) = -1.277329754233812\n", "Iteration: 7, x = 0.926423756077868, f(x) = -1.131310399158622\n", "Iteration: 8, x = 1.023635980751716, f(x) = -0.951038855271058\n", "Iteration: 9, x = 1.102112700940041, f(x) = -0.763428857530277\n", "Iteration: 10, x = 1.163084623011103, f(x) = -0.589703475641066\n", "Iteration: 11, x = 1.209004461867383, f(x) = -0.441812567314840\n", "Iteration: 12, x = 1.242759715838447, f(x) = -0.323377345963561\n", "Iteration: 13, x = 1.267123755869329, f(x) = -0.232626542846002\n", "Iteration: 14, x = 1.284474915416815, f(x) = -0.165250826057421\n", "Iteration: 15, x = 1.296712725379603, f(x) = -0.116337099147602\n", "Iteration: 16, x = 1.305284823099690, f(x) = -0.081381697897300\n", "Iteration: 17, x = 1.311260149895704, f(x) = -0.056675277433967\n", "Iteration: 18, x = 1.315411216706803, f(x) = -0.039346415911536\n", "Iteration: 19, x = 1.318288144277179, f(x) = -0.027256756945956\n", "Iteration: 20, x = 1.320278742279728, f(x) = -0.018853392932333\n", "Iteration: 21, x = 1.321654503458967, f(x) = -0.013027238417732\n", "Iteration: 22, x = 1.322604583024956, f(x) = -0.008995024910972\n", "Iteration: 23, x = 1.323260335853139, f(x) = -0.006207779657019\n", "Iteration: 24, x = 1.323712771581656, f(x) = -0.004282733486323\n", "Iteration: 25, x = 1.324024847881927, f(x) = -0.002953948207525\n", "Iteration: 26, x = 1.324240069970690, f(x) = -0.002037106345411\n", "Iteration: 27, x = 1.324388478616892, f(x) = -0.001404674045584\n", "Iteration: 28, x = 1.324490806628938, f(x) = -0.000968508967562\n", "Iteration: 29, x = 1.324561357818050, f(x) = -0.000667741626827\n", "Iteration: 30, x = 1.324609998150458, f(x) = -0.000460359597848\n", "Iteration: 31, x = 1.324643531473506, f(x) = -0.000317376586783\n", "Iteration: 32, x = 1.324666649368313, f(x) = -0.000218798801115\n", "Iteration: 33, x = 1.324682586648379, f(x) = -0.000150837640515\n", "Iteration: 34, x = 1.324693573573097, f(x) = -0.000103985047874\n", "Iteration: 35, x = 1.324701147748373, f(x) = -0.000071685209996\n", "Iteration: 36, x = 1.324706369216883, f(x) = -0.000049418152359\n", "Iteration: 37, x = 1.324709968770709, f(x) = -0.000034067656374\n", "Iteration: 38, x = 1.324712450210734, f(x) = -0.000023485358447\n", "Iteration: 39, x = 1.324714160849362, f(x) = -0.000016190175755\n", "Iteration: 40, x = 1.324715340116887, f(x) = -0.000011161062609\n", "Iteration: 41, x = 1.324716153071144, f(x) = -0.000007694125345\n", "Iteration: 42, x = 1.324716713498952, f(x) = -0.000005304113208\n", "Iteration: 43, x = 1.324717099842002, f(x) = -0.000003656505113\n", "Iteration: 44, x = 1.324717366175894, f(x) = -0.000002520690342\n", "Iteration: 45, x = 1.324717549778863, f(x) = -0.000001737691789\n", "Iteration: 46, x = 1.324717676349487, f(x) = -0.000001197914878\n", "Iteration: 47, x = 1.324717763603640, f(x) = -0.000000825808104\n", "Iteration: 48, x = 1.324717823754144, f(x) = -0.000000569288357\n", "Iteration: 49, x = 1.324717865220170, f(x) = -0.000000392451009\n", "Iteration: 50, x = 1.324717893805655, f(x) = -0.000000270544424\n", "Iteration: 51, x = 1.324717913511665, f(x) = -0.000000186505532\n", "Iteration: 52, x = 1.324717927096420, f(x) = -0.000000128571540\n", "Iteration: 53, x = 1.324717936461359, f(x) = -0.000000088633515\n", "Iteration: 54, x = 1.324717942917278, f(x) = -0.000000061101390\n", "Iteration: 55, x = 1.324717947367803, f(x) = -0.000000042121538\n", "Iteration: 56, x = 1.324717950435866, f(x) = -0.000000029037373\n", "Iteration: 57, x = 1.324717952550901, f(x) = -0.000000020017529\n", "Iteration: 58, x = 1.324717954008944, f(x) = -0.000000013799507\n", "Iteration: 59, x = 1.324717955014078, f(x) = -0.000000009512983\n", "Iteration: 60, x = 1.324717955706987, f(x) = -0.000000006557976\n", "Iteration: 61, x = 1.324717956184660, f(x) = -0.000000004520880\n", "Iteration: 62, x = 1.324717956513953, f(x) = -0.000000003116564\n", "Iteration: 63, x = 1.324717956740958, f(x) = -0.000000002148470\n", "Iteration: 64, x = 1.324717956897449, f(x) = -0.000000001481093\n", "Iteration: 65, x = 1.324717957005330, f(x) = -0.000000001021022\n", "Iteration: 66, x = 1.324717957079699, f(x) = -0.000000000703863\n", "The solution is x = 1.3247179570796994 obtained after 66 iterations\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG2CAYAAAB20iz+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATKRJREFUeJzt3XlcVOX+B/DP7KwziIiogCAgaqag5o5rmXorlyytNLXlumVp167lzbRM69e10spWu2bZqrmUlUuGWkq4YqImKqAgAgIywzowM+f3xwhJAg44zJk583m/XvNSzzxz+M7xOPPxOc95HpkgCAKIiIiIJEgudgFERERETYVBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCRLKXYBYrNYLMjKyoKvry9kMpnY5RAREZENBEFAUVERWrduDbm87n4btw86WVlZCAkJEbsMIiIiaoSMjAwEBwfX+bzbBx1fX18A1gOl1WpFroaIiIhsYTAYEBISUv09Xhe3DzpVl6u0Wi2DDhERkYu50bATDkYmIiIiyWLQISIiIsli0CEiIiLJYtAhIiIiyXL7wcgNVVlZCbPZLHYZkqVQKKBSqcQug4iIJIJBx0YGgwF5eXkwGo1ilyJ5Go0GAQEBvAuOiIhuGoOODQwGAy5evAgfHx8EBARApVJxFuUmIAgCKisrodfrcfHiRQBg2CEiopvCoGODvLw8+Pj4IDg4mAGniXl6esLX1xeZmZnIy8tj0CEiopvCwcg3UFlZCaPRCJ1Ox5DjIDKZDDqdDkajEZWVlWKXQ0RELoxB5waqBh5zgKxjVR1vDvwmIqKbwaBjI/bmOBaPNxER2QODDhEREUkWgw4RERE1idPZRdh1KgdmiyBaDQw6hK+//hq33HILPD09IZPJkJSUBAB45JFHMHz48Abvb9euXfDx8am+RZyIiNzTe7vP4tG1h/DKj6dEq4FBx81dvnwZkyZNQkREBLZt24aEhAS0b98eR48exdq1a/Hyyy83eJ9Dhw5Fz549sWDBgiaomIiIXEFuUTl+OH4JADAqpo1odTDouLmUlBRUVlZi4sSJGDhwIHr37g0vLy+8+uqr6NmzJ3r06NGo/c6aNQuff/45MjIy7FwxERG5gq8OZKDSLKBbqB9uDdaJVgeDTiMJgoDSCpPTPASh4dc/p0yZgv79+wMAxo8fD5lMhkGDBiEnJwebNm3CpEmTarSfPn06PDw8cPjw4eptFosFQ4cORcuWLXHp0qXq7XfffTd8fHzw0UcfNfIIExGRq6o0W/B54nkAwOS+YaLWwpmRG6ms0oxOL2wXu4xqJ1+6E17qhv11Lly4ED179sSsWbOwbNkyDB48GFqtFjt27EBlZSUGDx5co/2KFSuQmJiI+++/H4cPH4afnx9efPFF7N69G9u2bUOrVq2q26rVavTt2xc//PADXnrpJbu8RyIicg3bT2Qjx2BEgI8GIzq3uvELmhB7dNxYREQEOnXqBACIiopC79690alTJyQkJMDT0xMdOnSo0d7DwwPr169HXl4epk6dil27duHll1/GggULcMcdd1y3/27duiEpKQklJSUOeT9EROQc1u5PBwA82CsUaqW4UYM9Oo3kqVLg5Et3il1GNU+Vwm77ysrKQosWLWqdtC8yMhIfffQRxo8fj23btiEuLg6LFy+udT+BgYGwWCzIzs5GRESE3eojIiLndSJLj4PpV6CUy/BQr1Cxy2HQaSyZTNbgS0WuoqysDB4eHnU+/49//AMtW7ZETk4Onn76aSgUtYesqn2UlZU1SZ1EROR8Pt1vHZszvHMQWmrr/i5xFF66ousEBASgoKCgzuenT5+OoqIi3HLLLXjyySdx5cqVWttV7SMgIKBJ6iQiIudypaQCm5Osc6hNEXkQchUGHbpOhw4dkJ+fD71ef91zq1evxrp16/DOO+/gu+++Q2FhIaZOnVrrflJTU9G8eXO0bNmyqUsmIiIn8M2hDBhNFtzSWovubZuJXQ4ABh2qxaBBgyAIAhITE2tsP378OJ588klMnjwZU6dORbt27fDxxx9jy5YtWLFixXX7+f333zFw4EAu0ElE5AbMFgGf/X71lvI+YU7z2c+gQ9fp168fwsLCsGXLluptJSUluP/++xEeHo533323evu9996LWbNm4d///jcOHDhQvf3cuXM4fvw4HnroIYfWTkRE4th1KgeZV8rg56XCPTGtxS6nGoOOm6vqvRk3blz1NrlcjieeeAJffvll9UBib29vnDp1CidOnICXl1eNfbzzzjuoqKhAz549q7d98sknCA0NxT333OOYN0JERKJasy8dADDhtlB42PFO4JvFoEO1mjVrFnQ6HVatWtXg1xYWFmLVqlVYtmwZ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V0JERFS7lbvOoNhoQuc2WtzdpbXY5UiOywedxMREVFRUXLd9z549eOONNwCgzuUjiIiIxHQ2txifJ1oX7lwwsiPkci7caW9OORh58+bN2Lx5MwAgOzsbAJCQkIApU6YAAAICArB8+XIAwPz583HixAkMGjQIwcHBAIDjx49j165dAIAlS5agb9++jn0DRERENnj1pz9htgi4vWMg+kZw4c6m4JRBJykpCWvXrq2xLTU1Famp1muYbdu2rQ46kyZNwqZNm3Dw4EH89NNPqKysRMuWLXH//ffjiSeeQFxcnMPrJyIiupGEc/n4+VQOFHIZnh3RUexyJEsmCIIgdhFiMhgM0Ol00Ov1NW4vJyIiaioWi4B7Vv2G5IsGTOrdFktGcwHqhrL1+9vlx+gQERG5mi3HLiL5ogE+GiWeuj1K7HIkjUGHiIjIgcorzfjvttMAgBmDIhDgw3nbmhKDDhERkQP9b18asvTlaK3zwKP9w8UuR/IYdIiIiBzkcpER78afAwA8MzwaHipODtjUGHSIiIgc5I2dp1FsNKFLsA6jurYRuxy3wKBDRETkACey9PjqYAYA4IW7OnFyQAdh0CEiImpigiBgydaTEATgri6t0CPMX+yS3AaDDhERURPbcTIHv6cWQK2U49kRHcQux60w6BARETUho8mMZT+eAgD8M64dgpt5iVyRe2HQISIiakJr96fjfH4pWvhqMGNQhNjluB0GHSIioiaSV2zE27vOAgD+fWc0vDVOucSkpDHoEBERNZHXd5xGkdGEzm20uLdbsNjluCUGHSIioiZwPPOv28kX3X0LbycXCYMOERGRnQmCgMXfn4AgAKNiWuM23k4uGgYdIiIiO9uSlIXD56/AS63AcyM6il2OW2PQISIisqMSowmv/GS9nXzW4EgE6TxErsi9MegQERHZ0ar4s8gxGBHq78XVyZ0Agw4REZGdnM8vwepf0wAAz/+jI1cndwIMOkRERHayZOspVJgtiIsKwB2dWopdDoFBh4iIyC7iT+fi51M5UMplWHR3J8hkvJ3cGTDoEBER3aTySjMWf3cCADC1XxgiA31FroiqMOgQERHdpI/2puJ8filaajV46vb2YpdD12DQISIiugkZBaVYtdu6ntWCkR3hw/WsnAqDDhER0U1YsvUkyist6N3OH/d0bS12OfQ3DDpERESNFH86FztOWgcgvzSqMwcgOyEGHSIiokYwmsx48eoA5Cl9w9C+JQcgOyMGHSIiokb4cE8q0vNLEeirwVO3R4ldDtWBQYeIiKiBLuSX4p146wDk//yjI3w9VCJXRHVh0CEiImoAQRCwcEsyjCYL+kU25wBkJ8egQ0RE1AA/JWdjT8plqBVyLOEAZKfHoENERGSjYqMJL31/EgAwfWA7tGvhI3JFdCMMOkRERDZ6c2cKsg3lCPX3wszBkWKXQzZg0CEiIrLBiSw9PtmfDgB4adQt8FApxC2IbMKgQ0REdAMWi4DnNyfDbBHwj1tbYVB0oNglkY0YdIiIiG7g8wMXcPRCIbzVCiy8q5PY5VADNHrlsZSUFOzcuRN79+5FRkYG8vLy4OnpicDAQMTExGDw4MEYMmQIPDw87FkvERGRQ+UYyvHaT38CAJ65MxpBOn6vuRKZIAhCQ17w1Vdf4d1338W+ffsAWOcTqHXHMhn8/PwwZcoUzJ49G2FhYTddbFMwGAzQ6XTQ6/XQarVil0NERE5mxrrD+Ck5G11D/LBxRl8o5Lyd3BnY+v1t86Wr+Ph4xMbG4sEHH8SJEycwZcoUfPjhh0hKSkJ2djYqKiqg1+uRmpqKH3/8EQsXLkR0dDTefPNNdOzYEfPnz4fBYLDLmyMiInKEnSdz8FNyNhRyGV4ZcytDjguy+dLV0KFD0a1bN3zzzTe45557oFarr2vj6+sLX19fhIWFYfjw4Vi8eDHOnDmD999/H++88w58fHywcOFCu74BIiKiplBsNOGFLckAgMfiwtGpNXv9XZHNl642bdqEMWPGNPoHZWdnIz09Hb179270PpoCL10REVFtXvz+BNbsS0eIvyd2zBkITzVvJ3cmtn5/29yjczMhBwCCgoIQFBR0U/sgIiJyhGMZhVh7dc6cpaNvZchxYU1+e7nZbG7qH0FERGQ3lWYL5n/7BywCMDqmNQa0byF2SXQTGh10ZsyYAaPRWG+b8+fPIy4urrE/goiIyOE+2HMOf2YXoZmXCs9zzhyX1+ig88EHH6BXr144ffp0rc9v3LgRsbGxSExMbHRxREREjnQ2twhv7ToLAFh09y0I8NGIXBHdrEYHnf/85z9ITk5Gjx49sHbt2urtFRUVmDVrFu677z7I5XJs2rTJLoUSERE1JYtFwPxvj6PCbMHg6BYYFdNa7JLIDhoddJYsWYLt27fDx8cHjzzyCCZNmoRDhw6hV69eeO+999C3b18kJSXhnnvusWe9RERETeKz38/j8Pkr8FYr8PKYWyGTcc4cKbipwchDhw7FsWPHcPvtt+OLL75Ar169kJycjOeffx579uxBcHCwveokIiJqMplXSvF/26zLPDw7ogPa+HmKXBHZS6PXuqri4+ODFi1aVC8FodPpMHDgQMjlXC+UiIicnyAIWLApGaUVZtwW1gwP9WordklkRzeVRo4dO4Zu3brhyy+/xJ133on3338fFRUVuPPOO/H888/DYrHYq04iIqImseFwJvamXIZaKcer93aBnMs8SEqjg86qVavQp08fpKamYtmyZfjpp5/wz3/+E4cPH0aXLl3wyiuvYODAgcjMzLRnvURERHaTrS/HS1tPAgDm3B6FiBY+IldE9tbg1curyOVyhIaG4ssvv0SfPn1qPFdRUYF//etfWLVqFfz9/ZGXl2eXYpsCl4AgInJPgiDg0bWH8MufuegarMO3M/pCqeCwC1dh99XL/27UqFE4evTodSEHANRqNd5++21s3LgRjcxRRERETWrjkYv45c9cqBVy/Pe+rgw5EtXowci2zI8zevRodO/evbE/goiIqEnkGMrx4vcnAABP3R6F9i19Ra6ImkqTx9eQkJAGv2bDhg2YPXs24uLioNVqIZPJMHHixHpfs3//fowcORL+/v7w8vJCly5dsGLFCq61RURENQiCgAUbj8NQbkKXYB2mDWgndknUhGwOOllZWTf9wy5dumRTu5dffhnvvPMOkpKS0KZNmxu237JlCwYMGIC9e/dizJgxmDVrFioqKjB37lxMmDDhZssmIiIJ2Zx0EbuqLlmN4yUrqbP5bzciIgLz5s1DTk5Og36AIAjYsmULYmNj8dFHH9n0mjfffBMpKSkwGAx477336m1rMBjw2GOPQaFQYPfu3fj444/x3//+F0lJSejTpw82bNiAr776qkE1ExGRNGXry7Foy1+XrKKDeMlK6mwOOs888wzee+89hISE4J577sG6deuQmppaa9vi4mL88ssvmD9/PkJCQjB27Fh4eHhg7NixNv2swYMHIyoqyqbpt9evX4+8vDw88MAD6NGjR/V2Dw8PvPzyywCAd99916afS0RE0iUIAv797R8wlJvQlZes3IbNg5FfeuklPP7441iyZAm++OIL/PDDDwCsMyEHBgaiWbNm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 0.\n", "b = 3.\n", "print(\"Solving the equation x^3 - x - 1 = 0 on an interval (\", a, \",\", b, \") using the false position method\")\n", "xroot = falseposition_method(func2, a, b, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_falseposition_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "last_secant_iterations = 0\n", "secant_verbose = True\n", "\n", "def secant_method(\n", " f, # The function whose root we are trying to find\n", " a, # The left boundary\n", " b, # The right boundary\n", " tolerance = 1.e-10, # The desired accuracy of the solution\n", " max_iterations = 100 # Maximum number of iterations\n", " ):\n", " fa = f(a) # The value of the function at the left boundary\n", " fb = f(b) # The value of the function at the right boundary\n", " \n", " xprev = xnew = a # Estimate of the solution from the previous step \n", " \n", " global last_secant_iterations\n", " last_secant_iterations = 0\n", " \n", " for i in range(max_iterations):\n", " last_secant_iterations += 1\n", " \n", " xprev = xnew\n", " xnew = a - fa * (b - a) / (fb - fa) # Take the point where straight line between a and b crosses y = 0\n", " fnew = f(xnew) # Calculate the function at midpoint\n", " \n", " if secant_verbose:\n", " print(\"Iteration: {0:5}, x = {1:20.15f}, f(x) = {2:10.15f}\".format(last_secant_iterations, xnew, fnew))\n", " \n", " b = a\n", " fb = fa\n", " a = xnew\n", " fa = fnew\n", " \n", " if (abs(xnew-xprev) < tolerance):\n", " return xnew\n", " \n", " print(\"Secant method failed to converge to a required precision in \" + str(max_iterations) + \" iterations\")\n", " print(\"The error estimate is \", abs(xnew - xprev))\n", " \n", " return xnew " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x + e^-x - 2 = 0 on an interval ( 0.0 , 3.0 ) using the secant method\n", "Iteration: 1, x = 1.463566653481105, f(x) = -0.305023902720619\n", "Iteration: 2, x = 2.105923727751964, f(x) = 0.227656901758072\n", "Iteration: 3, x = 1.831393427201715, f(x) = -0.008416373991634\n", "Iteration: 4, x = 1.841180853051291, f(x) = -0.000189150198961\n", "Iteration: 5, x = 1.841405873494811, f(x) = 0.000000179268085\n", "Iteration: 6, x = 1.841405660432446, f(x) = -0.000000000003799\n", "Iteration: 7, x = 1.841405660436961, f(x) = 0.000000000000000\n", "The solution is x = 1.8414056604369606 obtained after 7 iterations\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 0.\n", "b = 3.\n", "print(\"Solving the equation x + e^-x - 2 = 0 on an interval (\", a, \",\", b, \") using the secant method\")\n", "xroot = secant_method(func1, a, b, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_secant_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func1(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x^3 - x - 1 = 0 on an interval ( 0.0 , 3.0 ) using the secant method\n", "Iteration: 1, x = 0.125000000000000, f(x) = -1.123046875000000\n", "Iteration: 2, x = -1.015873015873016, f(x) = -1.032505888892888\n", "Iteration: 3, x = -14.026092564115256, f(x) = -2746.344947419933305\n", "Iteration: 4, x = -1.010979901305751, f(x) = -1.022322801027050\n", "Iteration: 5, x = -1.006133240911884, f(x) = -1.012379562467959\n", "Iteration: 6, x = -0.512666258317272, f(x) = -0.622076118670072\n", "Iteration: 7, x = 0.273834681149844, f(x) = -1.253301069122821\n", "Iteration: 8, x = -1.287767830907429, f(x) = -1.847796782789951\n", "Iteration: 9, x = 3.565966235528240, f(x) = 40.779271189538719\n", "Iteration: 10, x = -1.077368321415013, f(x) = -1.173157330026346\n", "Iteration: 11, x = -0.947522156044583, f(x) = -0.903161564408282\n", "Iteration: 12, x = -0.513174359589628, f(x) = -0.621969042319750\n", "Iteration: 13, x = 0.447558454314033, f(x) = -1.357908660326462\n", "Iteration: 14, x = -1.325124217388110, f(x) = -2.001733206403897\n", "Iteration: 15, x = 4.186373891812861, f(x) = 68.182869385339558\n", "Iteration: 16, x = -1.167930924631363, f(x) = -1.425200021260205\n", "Iteration: 17, x = -1.058303471905222, f(x) = -1.127003019010034\n", "Iteration: 18, x = -0.643978481189561, f(x) = -0.623084729828961\n", "Iteration: 19, x = -0.131674045244213, f(x) = -0.870608926487776\n", "Iteration: 20, x = -1.933586024088406, f(x) = -6.295618222310159\n", "Iteration: 21, x = 0.157497929951306, f(x) = -1.153591099624717\n", "Iteration: 22, x = 0.626623389695762, f(x) = -1.380575409253824\n", "Iteration: 23, x = -2.226715128003442, f(x) = -9.813918004365664\n", "Iteration: 24, x = 1.093727500240917, f(x) = -0.785367085117557\n", "Iteration: 25, x = 1.382563036703896, f(x) = 0.260179317740376\n", "Iteration: 26, x = 1.310687668369503, f(x) = -0.059054486528599\n", "Iteration: 27, x = 1.323983763313963, f(x) = -0.003128925829655\n", "Iteration: 28, x = 1.324727653842468, f(x) = 0.000041352804288\n", "Iteration: 29, x = 1.324717950607204, f(x) = -0.000000028306680\n", "Iteration: 30, x = 1.324717957244686, f(x) = -0.000000000000256\n", "Iteration: 31, x = 1.324717957244746, f(x) = 0.000000000000000\n", "The solution is x = 1.324717957244746 obtained after 31 iterations\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG2CAYAAAB20iz+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATKRJREFUeJzt3XlcVOX+B/DP7KwziIiogCAgaqag5o5rmXorlyytNLXlumVp167lzbRM69e10spWu2bZqrmUlUuGWkq4YqImKqAgAgIywzowM+f3xwhJAg44zJk583m/XvNSzzxz+M7xOPPxOc95HpkgCAKIiIiIJEgudgFERERETYVBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCRLKXYBYrNYLMjKyoKvry9kMpnY5RAREZENBEFAUVERWrduDbm87n4btw86WVlZCAkJEbsMIiIiaoSMjAwEBwfX+bzbBx1fX18A1gOl1WpFroaIiIhsYTAYEBISUv09Xhe3DzpVl6u0Wi2DDhERkYu50bATDkYmIiIiyWLQISIiIsli0CEiIiLJYtAhIiIiyXL7wcgNVVlZCbPZLHYZkqVQKKBSqcQug4iIJIJBx0YGgwF5eXkwGo1ilyJ5Go0GAQEBvAuOiIhuGoOODQwGAy5evAgfHx8EBARApVJxFuUmIAgCKisrodfrcfHiRQBg2CEiopvCoGODvLw8+Pj4IDg4mAGniXl6esLX1xeZmZnIy8tj0CEiopvCwcg3UFlZCaPRCJ1Ox5DjIDKZDDqdDkajEZWVlWKXQ0RELoxB5waqBh5zgKxjVR1vDvwmIqKbwaBjI/bmOBaPNxER2QODDhEREUkWgw4RERE1idPZRdh1KgdmiyBaDQw6hK+//hq33HILPD09IZPJkJSUBAB45JFHMHz48Abvb9euXfDx8am+RZyIiNzTe7vP4tG1h/DKj6dEq4FBx81dvnwZkyZNQkREBLZt24aEhAS0b98eR48exdq1a/Hyyy83eJ9Dhw5Fz549sWDBgiaomIiIXEFuUTl+OH4JADAqpo1odTDouLmUlBRUVlZi4sSJGDhwIHr37g0vLy+8+uqr6NmzJ3r06NGo/c6aNQuff/45MjIy7FwxERG5gq8OZKDSLKBbqB9uDdaJVgeDTiMJgoDSCpPTPASh4dc/p0yZgv79+wMAxo8fD5lMhkGDBiEnJwebNm3CpEmTarSfPn06PDw8cPjw4eptFosFQ4cORcuWLXHp0qXq7XfffTd8fHzw0UcfNfIIExGRq6o0W/B54nkAwOS+YaLWwpmRG6ms0oxOL2wXu4xqJ1+6E17qhv11Lly4ED179sSsWbOwbNkyDB48GFqtFjt27EBlZSUGDx5co/2KFSuQmJiI+++/H4cPH4afnx9efPFF7N69G9u2bUOrVq2q26rVavTt2xc//PADXnrpJbu8RyIicg3bT2Qjx2BEgI8GIzq3uvELmhB7dNxYREQEOnXqBACIiopC79690alTJyQkJMDT0xMdOnSo0d7DwwPr169HXl4epk6dil27duHll1/GggULcMcdd1y3/27duiEpKQklJSUOeT9EROQc1u5PBwA82CsUaqW4UYM9Oo3kqVLg5Et3il1GNU+Vwm77ysrKQosWLWqdtC8yMhIfffQRxo8fj23btiEuLg6LFy+udT+BgYGwWCzIzs5GRESE3eojIiLndSJLj4PpV6CUy/BQr1Cxy2HQaSyZTNbgS0WuoqysDB4eHnU+/49//AMtW7ZETk4Onn76aSgUtYesqn2UlZU1SZ1EROR8Pt1vHZszvHMQWmrr/i5xFF66ousEBASgoKCgzuenT5+OoqIi3HLLLXjyySdx5cqVWttV7SMgIKBJ6iQiIudypaQCm5Osc6hNEXkQchUGHbpOhw4dkJ+fD71ef91zq1evxrp16/DOO+/gu+++Q2FhIaZOnVrrflJTU9G8eXO0bNmyqUsmIiIn8M2hDBhNFtzSWovubZuJXQ4ABh2qxaBBgyAIAhITE2tsP378OJ588klMnjwZU6dORbt27fDxxx9jy5YtWLFixXX7+f333zFw4EAu0ElE5AbMFgGf/X71lvI+YU7z2c+gQ9fp168fwsLCsGXLluptJSUluP/++xEeHo533323evu9996LWbNm4d///jcOHDhQvf3cuXM4fvw4HnroIYfWTkRE4th1KgeZV8rg56XCPTGtxS6nGoOOm6vqvRk3blz1NrlcjieeeAJffvll9UBib29vnDp1CidOnICXl1eNfbzzzjuoqKhAz549q7d98sknCA0NxT333OOYN0JERKJasy8dADDhtlB42PFO4JvFoEO1mjVrFnQ6HVatWtXg1xYWFmLVqlVYtmwZ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V0JERFS7lbvOoNhoQuc2WtzdpbXY5UiOywedxMREVFRUXLd9z549eOONNwCgzuUjiIiIxHQ2txifJ1oX7lwwsiPkci7caW9OORh58+bN2Lx5MwAgOzsbAJCQkIApU6YAAAICArB8+XIAwPz583HixAkMGjQIwcHBAIDjx49j165dAIAlS5agb9++jn0DRERENnj1pz9htgi4vWMg+kZw4c6m4JRBJykpCWvXrq2xLTU1Famp1muYbdu2rQ46kyZNwqZNm3Dw4EH89NNPqKysRMuWLXH//ffjiSeeQFxcnMPrJyIiupGEc/n4+VQOFHIZnh3RUexyJEsmCIIgdhFiMhgM0Ol00Ov1NW4vJyIiaioWi4B7Vv2G5IsGTOrdFktGcwHqhrL1+9vlx+gQERG5mi3HLiL5ogE+GiWeuj1K7HIkjUGHiIjIgcorzfjvttMAgBmDIhDgw3nbmhKDDhERkQP9b18asvTlaK3zwKP9w8UuR/IYdIiIiBzkcpER78afAwA8MzwaHipODtjUGHSIiIgc5I2dp1FsNKFLsA6jurYRuxy3wKBDRETkACey9PjqYAYA4IW7OnFyQAdh0CEiImpigiBgydaTEATgri6t0CPMX+yS3AaDDhERURPbcTIHv6cWQK2U49kRHcQux60w6BARETUho8mMZT+eAgD8M64dgpt5iVyRe2HQISIiakJr96fjfH4pWvhqMGNQhNjluB0GHSIioiaSV2zE27vOAgD+fWc0vDVOucSkpDHoEBERNZHXd5xGkdGEzm20uLdbsNjluCUGHSIioiZwPPOv28kX3X0LbycXCYMOERGRnQmCgMXfn4AgAKNiWuM23k4uGgYdIiIiO9uSlIXD56/AS63AcyM6il2OW2PQISIisqMSowmv/GS9nXzW4EgE6TxErsi9MegQERHZ0ar4s8gxGBHq78XVyZ0Agw4REZGdnM8vwepf0wAAz/+jI1cndwIMOkRERHayZOspVJgtiIsKwB2dWopdDoFBh4iIyC7iT+fi51M5UMplWHR3J8hkvJ3cGTDoEBER3aTySjMWf3cCADC1XxgiA31FroiqMOgQERHdpI/2puJ8filaajV46vb2YpdD12DQISIiugkZBaVYtdu6ntWCkR3hw/WsnAqDDhER0U1YsvUkyist6N3OH/d0bS12OfQ3DDpERESNFH86FztOWgcgvzSqMwcgOyEGHSIiokYwmsx48eoA5Cl9w9C+JQcgOyMGHSIiokb4cE8q0vNLEeirwVO3R4ldDtWBQYeIiKiBLuSX4p146wDk//yjI3w9VCJXRHVh0CEiImoAQRCwcEsyjCYL+kU25wBkJ8egQ0RE1AA/JWdjT8plqBVyLOEAZKfHoENERGSjYqMJL31/EgAwfWA7tGvhI3JFdCMMOkRERDZ6c2cKsg3lCPX3wszBkWKXQzZg0CEiIrLBiSw9PtmfDgB4adQt8FApxC2IbMKgQ0REdAMWi4DnNyfDbBHwj1tbYVB0oNglkY0YdIiIiG7g8wMXcPRCIbzVCiy8q5PY5VADNHrlsZSUFOzcuRN79+5FRkYG8vLy4OnpicDAQMTExGDw4MEYMmQIPDw87FkvERGRQ+UYyvHaT38CAJ65MxpBOn6vuRKZIAhCQ17w1Vdf4d1338W+ffsAWOcTqHXHMhn8/PwwZcoUzJ49G2FhYTddbFMwGAzQ6XTQ6/XQarVil0NERE5mxrrD+Ck5G11D/LBxRl8o5Lyd3BnY+v1t86Wr+Ph4xMbG4sEHH8SJEycwZcoUfPjhh0hKSkJ2djYqKiqg1+uRmpqKH3/8EQsXLkR0dDTefPNNdOzYEfPnz4fBYLDLmyMiInKEnSdz8FNyNhRyGV4ZcytDjguy+dLV0KFD0a1bN3zzzTe45557oFarr2vj6+sLX19fhIWFYfjw4Vi8eDHOnDmD999/H++88w58fHywcOFCu74BIiKiplBsNOGFLckAgMfiwtGpNXv9XZHNl642bdqEMWPGNPoHZWdnIz09Hb179270PpoCL10REVFtXvz+BNbsS0eIvyd2zBkITzVvJ3cmtn5/29yjczMhBwCCgoIQFBR0U/sgIiJyhGMZhVh7dc6cpaNvZchxYU1+e7nZbG7qH0FERGQ3lWYL5n/7BywCMDqmNQa0byF2SXQTGh10ZsyYAaPRWG+b8+fPIy4urrE/goiIyOE+2HMOf2YXoZmXCs9zzhyX1+ig88EHH6BXr144ffp0rc9v3LgRsbGxSExMbHRxREREjnQ2twhv7ToLAFh09y0I8NGIXBHdrEYHnf/85z9ITk5Gjx49sHbt2urtFRUVmDVrFu677z7I5XJs2rTJLoUSERE1JYtFwPxvj6PCbMHg6BYYFdNa7JLIDhoddJYsWYLt27fDx8cHjzzyCCZNmoRDhw6hV69eeO+999C3b18kJSXhnnvusWe9RERETeKz38/j8Pkr8FYr8PKYWyGTcc4cKbipwchDhw7FsWPHcPvtt+OLL75Ar169kJycjOeffx579uxBcHCwveokIiJqMplXSvF/26zLPDw7ogPa+HmKXBHZS6PXuqri4+ODFi1aVC8FodPpMHDgQMjlXC+UiIicnyAIWLApGaUVZtwW1gwP9WordklkRzeVRo4dO4Zu3brhyy+/xJ133on3338fFRUVuPPOO/H888/DYrHYq04iIqImseFwJvamXIZaKcer93aBnMs8SEqjg86qVavQp08fpKamYtmyZfjpp5/wz3/+E4cPH0aXLl3wyiuvYODAgcjMzLRnvURERHaTrS/HS1tPAgDm3B6FiBY+IldE9tbg1curyOVyhIaG4ssvv0SfPn1qPFdRUYF//etfWLVqFfz9/ZGXl2eXYpsCl4AgInJPgiDg0bWH8MufuegarMO3M/pCqeCwC1dh99XL/27UqFE4evTodSEHANRqNd5++21s3LgRjcxRRERETWrjkYv45c9cqBVy/Pe+rgw5EtXowci2zI8zevRodO/evbE/goiIqEnkGMrx4vcnAABP3R6F9i19Ra6ImkqTx9eQkJAGv2bDhg2YPXs24uLioNVqIZPJMHHixHpfs3//fowcORL+/v7w8vJCly5dsGLFCq61RURENQiCgAUbj8NQbkKXYB2mDWgndknUhGwOOllZWTf9wy5dumRTu5dffhnvvPMOkpKS0KZNmxu237JlCwYMGIC9e/dizJgxmDVrFioqKjB37lxMmDDhZssmIiIJ2Zx0EbuqLlmN4yUrqbP5bzciIgLz5s1DTk5Og36AIAjYsmULYmNj8dFHH9n0mjfffBMpKSkwGAx477336m1rMBjw2GOPQaFQYPfu3fj444/x3//+F0lJSejTpw82bNiAr776qkE1ExGRNGXry7Foy1+XrKKDeMlK6mwOOs888wzee+89hISE4J577sG6deuQmppaa9vi4mL88ssvmD9/PkJCQjB27Fh4eHhg7NixNv2swYMHIyoqyqbpt9evX4+8vDw88MAD6NGjR/V2Dw8PvPzyywCAd99916afS0RE0iUIAv797R8wlJvQlZes3IbNg5FfeuklPP7441iyZAm++OIL/PDDDwCsMyEHBgaiWbNm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 0.\n", "b = 3.\n", "print(\"Solving the equation x^3 - x - 1 = 0 on an interval (\", a, \",\", b, \") using the secant method\")\n", "xroot = secant_method(func2, a, b, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_secant_iterations, \" iterations\")\n", "\"\"\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "31 iterations!\n", "\n", "Why so many compared to the previous example?\n", "\n", "See the animation\n", "\n", "![img-secant2](secant-func2.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The method is not convergent during the initial phase.\n", "The reasons is that the interval (0,3) covers a point $x = 1/\\sqrt{3} = 0.577...$ where the derivative is zero $f'(x) = 0$. In this case we can go far outside the initial interval and lose convergence.\n", "\n", "Let us try to reduce the interval to (1,3)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x^3 - x - 1 = 0 on an interval ( 1.0 , 3.0 ) using the secant method\n", "Iteration: 1, x = 1.083333333333333, f(x) = -0.811921296296297\n", "Iteration: 2, x = 1.443076923076923, f(x) = 0.562088928538917\n", "Iteration: 3, x = 1.295910704621766, f(x) = -0.119578283458892\n", "Iteration: 4, x = 1.321726650403328, f(x) = -0.012721292233753\n", "Iteration: 5, x = 1.324800030879539, f(x) = 0.000350040702043\n", "Iteration: 6, x = 1.324717728006158, f(x) = -0.000000977618237\n", "Iteration: 7, x = 1.324717957227214, f(x) = -0.000000000074767\n", "Iteration: 8, x = 1.324717957244746, f(x) = 0.000000000000000\n", "The solution is x = 1.324717957244746 obtained after 8 iterations\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG2CAYAAAB20iz+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATKRJREFUeJzt3XlcVOX+B/DP7KwziIiogCAgaqag5o5rmXorlyytNLXlumVp167lzbRM69e10spWu2bZqrmUlUuGWkq4YqImKqAgAgIywzowM+f3xwhJAg44zJk583m/XvNSzzxz+M7xOPPxOc95HpkgCAKIiIiIJEgudgFERERETYVBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCRLKXYBYrNYLMjKyoKvry9kMpnY5RAREZENBEFAUVERWrduDbm87n4btw86WVlZCAkJEbsMIiIiaoSMjAwEBwfX+bzbBx1fX18A1gOl1WpFroaIiIhsYTAYEBISUv09Xhe3DzpVl6u0Wi2DDhERkYu50bATDkYmIiIiyWLQISIiIsli0CEiIiLJYtAhIiIiyXL7wcgNVVlZCbPZLHYZkqVQKKBSqcQug4iIJIJBx0YGgwF5eXkwGo1ilyJ5Go0GAQEBvAuOiIhuGoOODQwGAy5evAgfHx8EBARApVJxFuUmIAgCKisrodfrcfHiRQBg2CEiopvCoGODvLw8+Pj4IDg4mAGniXl6esLX1xeZmZnIy8tj0CEiopvCwcg3UFlZCaPRCJ1Ox5DjIDKZDDqdDkajEZWVlWKXQ0RELoxB5waqBh5zgKxjVR1vDvwmIqKbwaBjI/bmOBaPNxER2QODDhEREUkWgw4RERE1idPZRdh1KgdmiyBaDQw6hK+//hq33HILPD09IZPJkJSUBAB45JFHMHz48Abvb9euXfDx8am+RZyIiNzTe7vP4tG1h/DKj6dEq4FBx81dvnwZkyZNQkREBLZt24aEhAS0b98eR48exdq1a/Hyyy83eJ9Dhw5Fz549sWDBgiaomIiIXEFuUTl+OH4JADAqpo1odTDouLmUlBRUVlZi4sSJGDhwIHr37g0vLy+8+uqr6NmzJ3r06NGo/c6aNQuff/45MjIy7FwxERG5gq8OZKDSLKBbqB9uDdaJVgeDTiMJgoDSCpPTPASh4dc/p0yZgv79+wMAxo8fD5lMhkGDBiEnJwebNm3CpEmTarSfPn06PDw8cPjw4eptFosFQ4cORcuWLXHp0qXq7XfffTd8fHzw0UcfNfIIExGRq6o0W/B54nkAwOS+YaLWwpmRG6ms0oxOL2wXu4xqJ1+6E17qhv11Lly4ED179sSsWbOwbNkyDB48GFqtFjt27EBlZSUGDx5co/2KFSuQmJiI+++/H4cPH4afnx9efPFF7N69G9u2bUOrVq2q26rVavTt2xc//PADXnrpJbu8RyIicg3bT2Qjx2BEgI8GIzq3uvELmhB7dNxYREQEOnXqBACIiopC79690alTJyQkJMDT0xMdOnSo0d7DwwPr169HXl4epk6dil27duHll1/GggULcMcdd1y3/27duiEpKQklJSUOeT9EROQc1u5PBwA82CsUaqW4UYM9Oo3kqVLg5Et3il1GNU+Vwm77ysrKQosWLWqdtC8yMhIfffQRxo8fj23btiEuLg6LFy+udT+BgYGwWCzIzs5GRESE3eojIiLndSJLj4PpV6CUy/BQr1Cxy2HQaSyZTNbgS0WuoqysDB4eHnU+/49//AMtW7ZETk4Onn76aSgUtYesqn2UlZU1SZ1EROR8Pt1vHZszvHMQWmrr/i5xFF66ousEBASgoKCgzuenT5+OoqIi3HLLLXjyySdx5cqVWttV7SMgIKBJ6iQiIudypaQCm5Osc6hNEXkQchUGHbpOhw4dkJ+fD71ef91zq1evxrp16/DOO+/gu+++Q2FhIaZOnVrrflJTU9G8eXO0bNmyqUsmIiIn8M2hDBhNFtzSWovubZuJXQ4ABh2qxaBBgyAIAhITE2tsP378OJ588klMnjwZU6dORbt27fDxxx9jy5YtWLFixXX7+f333zFw4EAu0ElE5AbMFgGf/X71lvI+YU7z2c+gQ9fp168fwsLCsGXLluptJSUluP/++xEeHo533323evu9996LWbNm4d///jcOHDhQvf3cuXM4fvw4HnroIYfWTkRE4th1KgeZV8rg56XCPTGtxS6nGoOOm6vqvRk3blz1NrlcjieeeAJffvll9UBib29vnDp1CidOnICXl1eNfbzzzjuoqKhAz549q7d98sknCA0NxT333OOYN0JERKJasy8dADDhtlB42PFO4JvFoEO1mjVrFnQ6HVatWtXg1xYWFmLVqlVYtmwZ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V0JERFS7lbvOoNhoQuc2WtzdpbXY5UiOywedxMREVFRUXLd9z549eOONNwCgzuUjiIiIxHQ2txifJ1oX7lwwsiPkci7caW9OORh58+bN2Lx5MwAgOzsbAJCQkIApU6YAAAICArB8+XIAwPz583HixAkMGjQIwcHBAIDjx49j165dAIAlS5agb9++jn0DRERENnj1pz9htgi4vWMg+kZw4c6m4JRBJykpCWvXrq2xLTU1Famp1muYbdu2rQ46kyZNwqZNm3Dw4EH89NNPqKysRMuWLXH//ffjiSeeQFxcnMPrJyIiupGEc/n4+VQOFHIZnh3RUexyJEsmCIIgdhFiMhgM0Ol00Ov1NW4vJyIiaioWi4B7Vv2G5IsGTOrdFktGcwHqhrL1+9vlx+gQERG5mi3HLiL5ogE+GiWeuj1K7HIkjUGHiIjIgcorzfjvttMAgBmDIhDgw3nbmhKDDhERkQP9b18asvTlaK3zwKP9w8UuR/IYdIiIiBzkcpER78afAwA8MzwaHipODtjUGHSIiIgc5I2dp1FsNKFLsA6jurYRuxy3wKBDRETkACey9PjqYAYA4IW7OnFyQAdh0CEiImpigiBgydaTEATgri6t0CPMX+yS3AaDDhERURPbcTIHv6cWQK2U49kRHcQux60w6BARETUho8mMZT+eAgD8M64dgpt5iVyRe2HQISIiakJr96fjfH4pWvhqMGNQhNjluB0GHSIioiaSV2zE27vOAgD+fWc0vDVOucSkpDHoEBERNZHXd5xGkdGEzm20uLdbsNjluCUGHSIioiZwPPOv28kX3X0LbycXCYMOERGRnQmCgMXfn4AgAKNiWuM23k4uGgYdIiIiO9uSlIXD56/AS63AcyM6il2OW2PQISIisqMSowmv/GS9nXzW4EgE6TxErsi9MegQERHZ0ar4s8gxGBHq78XVyZ0Agw4REZGdnM8vwepf0wAAz/+jI1cndwIMOkRERHayZOspVJgtiIsKwB2dWopdDoFBh4iIyC7iT+fi51M5UMplWHR3J8hkvJ3cGTDoEBER3aTySjMWf3cCADC1XxgiA31FroiqMOgQERHdpI/2puJ8filaajV46vb2YpdD12DQISIiugkZBaVYtdu6ntWCkR3hw/WsnAqDDhER0U1YsvUkyist6N3OH/d0bS12OfQ3DDpERESNFH86FztOWgcgvzSqMwcgOyEGHSIiokYwmsx48eoA5Cl9w9C+JQcgOyMGHSIiokb4cE8q0vNLEeirwVO3R4ldDtWBQYeIiKiBLuSX4p146wDk//yjI3w9VCJXRHVh0CEiImoAQRCwcEsyjCYL+kU25wBkJ8egQ0RE1AA/JWdjT8plqBVyLOEAZKfHoENERGSjYqMJL31/EgAwfWA7tGvhI3JFdCMMOkRERDZ6c2cKsg3lCPX3wszBkWKXQzZg0CEiIrLBiSw9PtmfDgB4adQt8FApxC2IbMKgQ0REdAMWi4DnNyfDbBHwj1tbYVB0oNglkY0YdIiIiG7g8wMXcPRCIbzVCiy8q5PY5VADNHrlsZSUFOzcuRN79+5FRkYG8vLy4OnpicDAQMTExGDw4MEYMmQIPDw87FkvERGRQ+UYyvHaT38CAJ65MxpBOn6vuRKZIAhCQ17w1Vdf4d1338W+ffsAWOcTqHXHMhn8/PwwZcoUzJ49G2FhYTddbFMwGAzQ6XTQ6/XQarVil0NERE5mxrrD+Ck5G11D/LBxRl8o5Lyd3BnY+v1t86Wr+Ph4xMbG4sEHH8SJEycwZcoUfPjhh0hKSkJ2djYqKiqg1+uRmpqKH3/8EQsXLkR0dDTefPNNdOzYEfPnz4fBYLDLmyMiInKEnSdz8FNyNhRyGV4ZcytDjguy+dLV0KFD0a1bN3zzzTe45557oFarr2vj6+sLX19fhIWFYfjw4Vi8eDHOnDmD999/H++88w58fHywcOFCu74BIiKiplBsNOGFLckAgMfiwtGpNXv9XZHNl642bdqEMWPGNPoHZWdnIz09Hb179270PpoCL10REVFtXvz+BNbsS0eIvyd2zBkITzVvJ3cmtn5/29yjczMhBwCCgoIQFBR0U/sgIiJyhGMZhVh7dc6cpaNvZchxYU1+e7nZbG7qH0FERGQ3lWYL5n/7BywCMDqmNQa0byF2SXQTGh10ZsyYAaPRWG+b8+fPIy4urrE/goiIyOE+2HMOf2YXoZmXCs9zzhyX1+ig88EHH6BXr144ffp0rc9v3LgRsbGxSExMbHRxREREjnQ2twhv7ToLAFh09y0I8NGIXBHdrEYHnf/85z9ITk5Gjx49sHbt2urtFRUVmDVrFu677z7I5XJs2rTJLoUSERE1JYtFwPxvj6PCbMHg6BYYFdNa7JLIDhoddJYsWYLt27fDx8cHjzzyCCZNmoRDhw6hV69eeO+999C3b18kJSXhnnvusWe9RERETeKz38/j8Pkr8FYr8PKYWyGTcc4cKbipwchDhw7FsWPHcPvtt+OLL75Ar169kJycjOeffx579uxBcHCwveokIiJqMplXSvF/26zLPDw7ogPa+HmKXBHZS6PXuqri4+ODFi1aVC8FodPpMHDgQMjlXC+UiIicnyAIWLApGaUVZtwW1gwP9WordklkRzeVRo4dO4Zu3brhyy+/xJ133on3338fFRUVuPPOO/H888/DYrHYq04iIqImseFwJvamXIZaKcer93aBnMs8SEqjg86qVavQp08fpKamYtmyZfjpp5/wz3/+E4cPH0aXLl3wyiuvYODAgcjMzLRnvURERHaTrS/HS1tPAgDm3B6FiBY+IldE9tbg1curyOVyhIaG4ssvv0SfPn1qPFdRUYF//etfWLVqFfz9/ZGXl2eXYpsCl4AgInJPgiDg0bWH8MufuegarMO3M/pCqeCwC1dh99XL/27UqFE4evTodSEHANRqNd5++21s3LgRjcxRRERETWrjkYv45c9cqBVy/Pe+rgw5EtXowci2zI8zevRodO/evbE/goiIqEnkGMrx4vcnAABP3R6F9i19Ra6ImkqTx9eQkJAGv2bDhg2YPXs24uLioNVqIZPJMHHixHpfs3//fowcORL+/v7w8vJCly5dsGLFCq61RURENQiCgAUbj8NQbkKXYB2mDWgndknUhGwOOllZWTf9wy5dumRTu5dffhnvvPMOkpKS0KZNmxu237JlCwYMGIC9e/dizJgxmDVrFioqKjB37lxMmDDhZssmIiIJ2Zx0EbuqLlmN4yUrqbP5bzciIgLz5s1DTk5Og36AIAjYsmULYmNj8dFHH9n0mjfffBMpKSkwGAx477336m1rMBjw2GOPQaFQYPfu3fj444/x3//+F0lJSejTpw82bNiAr776qkE1ExGRNGXry7Foy1+XrKKDeMlK6mwOOs888wzee+89hISE4J577sG6deuQmppaa9vi4mL88ssvmD9/PkJCQjB27Fh4eHhg7NixNv2swYMHIyoqyqbpt9evX4+8vDw88MAD6NGjR/V2Dw8PvPzyywCAd99916afS0RE0iUIAv797R8wlJvQlZes3IbNg5FfeuklPP7441iyZAm++OIL/PDDDwCsMyEHBgaiWbNm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 1.\n", "b = 3.\n", "print(\"Solving the equation x^3 - x - 1 = 0 on an interval (\", a, \",\", b, \") using the secant method\")\n", "xroot = secant_method(func2, a, b, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_secant_iterations, \" iterations\")\n", "\"\"\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Newton-Raphson method\n", "\n", "Newton's method is a local method. \n", "\n", "Let us assume that a given point $x$ is close to the root $x^*$, where $f(x^*) = 0$.\n", "\n", "We can express $f(x^*)$ by expanding it around x:\n", "$$\n", "f(x^*) \\approx f(x) + f'(x) (x^* - x)\n", "$$\n", "\n", "Given that $f(x^*) = 0$, we can express the root $x^*$ as\n", "$$\n", "x^* \\approx x - \\frac{f(x)}{f'(x)}\n", "$$\n", "which is accurate is $x$ is sufficiently close to $x^*$.\n", "\n", "Newton-Raphson method is an iterative procedure to find $x^*$.\n", "The $(n+1)$th approximation is\n", "$$\n", "x_{n+1} = x_n - \\frac{f(x_n)}{f'(x_n)}.\n", "$$\n", "\n", "The method is expected to work well if the initial guess $x_0$ is not too far from $x$ and/or we avoid regions where $f'(x) = 0$. The method converges faster than other methods considered so far but requires the evaluation of the derivative $f'$ at each step.\n", "\n", "![newton](newton.png)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "last_newton_iterations = 0\n", "newton_verbose = False\n", "\n", "def newton_method(\n", " f, # The function whose root we are trying to find\n", " df, # The derivative of the function\n", " x0, # The initial guess\n", " tolerance = 1.e-10, # The desired accuracy of the solution\n", " max_iterations = 100 # Maximum number of iterations\n", " ):\n", " \n", " xprev = xnew = x0\n", " \n", " global last_newton_iterations\n", " last_newton_iterations = 0\n", " \n", " if newton_verbose:\n", " print(\"Iteration: {0:5}, x = {1:20.15f}, f(x) = {2:10.15f}\".format(last_newton_iterations, x0, f(x0)))\n", " \n", " for i in range(max_iterations):\n", " last_newton_iterations += 1\n", " \n", " xprev = xnew\n", " fval = f(xprev) # The current function value\n", " dfval = df(xprev) # The current function derivative value\n", " \n", " xnew = xprev - fval / dfval # The next iteration\n", " \n", " if newton_verbose:\n", " print(\"Iteration: {0:5}, x = {1:20.15f}, f(x) = {2:10.15f}\".format(last_newton_iterations, xnew, f(xnew)))\n", "\n", " if (abs(xnew-xprev) < tolerance):\n", " return xnew\n", " \n", " \n", " print(\"Newton-Raphson method failed to converge to a required precision in \" + str(max_iterations) + \" iterations\")\n", " print(\"The error estimate is \", abs(xnew-xprev))\n", " \n", " return xnew " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x + e^-x - 2 = 0 with an initial guess of x0 = 0.5\n", "Iteration: 0, x = 0.500000000000000, f(x) = -0.893469340287367\n", "Iteration: 1, x = 2.770747041268399, f(x) = 0.833362252387609\n", "Iteration: 2, x = 1.881718050961633, f(x) = 0.034046224211712\n", "Iteration: 3, x = 1.841553658165603, f(x) = 0.000124527863398\n", "Iteration: 4, x = 1.841405662500950, f(x) = 0.000000001736652\n", "Iteration: 5, x = 1.841405660436960, f(x) = -0.000000000000000\n", "Iteration: 6, x = 1.841405660436961, f(x) = 0.000000000000000\n", "The solution is x = 1.8414056604369606 obtained after 6 iterations\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Recall function 1\n", "def func1(x):\n", " return x + np.exp(-x) - 2.\n", "\n", "# Now we have to define the derivative\n", "def dfunc1(x):\n", " return 1. - np.exp(-x)\n", "\n", "# Initial guess\n", "x0 = 0.5\n", "\n", "print(\"Solving the equation x + e^-x - 2 = 0 with an initial guess of x0 = \", x0)\n", "newton_verbose = True\n", "xroot = newton_method(func1, dfunc1, x0, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_newton_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func1(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x^3 - x - 1 = 0 with an initial guess of x0 = 0.5\n", "Iteration: 0, x = 0.500000000000000, f(x) = -1.375000000000000\n", "Iteration: 1, x = -5.000000000000000, f(x) = -121.000000000000000\n", "Iteration: 2, x = -3.364864864864865, f(x) = -35.733196947860939\n", "Iteration: 3, x = -2.280955053664953, f(x) = -10.586297439073974\n", "Iteration: 4, x = -1.556276567967263, f(x) = -3.213020231094429\n", "Iteration: 5, x = -1.043505227179037, f(x) = -1.092770911285728\n", "Iteration: 6, x = -0.561409518771311, f(x) = -0.615535897017610\n", "Iteration: 7, x = -11.864344921350634, f(x) = -1659.192647549701178\n", "Iteration: 8, x = -7.925964323903187, f(x) = -490.990330807181920\n", "Iteration: 9, x = -5.306828631368327, f(x) = -145.146361872742261\n", "Iteration: 10, x = -3.568284222599895, f(x) = -42.865438067273487\n", "Iteration: 11, x = -2.415924209768375, f(x) = -12.685075952386104\n", "Iteration: 12, x = -1.647600608320907, f(x) = -3.824955843874735\n", "Iteration: 13, x = -1.112174714899762, f(x) = -1.263510442920995\n", "Iteration: 14, x = -0.646071913773210, f(x) = -0.623604264554248\n", "Iteration: 15, x = 1.826323485985127, f(x) = 3.265300837953712\n", "Iteration: 16, x = 1.463768987529280, f(x) = 0.672531206531874\n", "Iteration: 17, x = 1.339865398074654, f(x) = 0.065513601104520\n", "Iteration: 18, x = 1.324927455582133, f(x) = 0.000893607955833\n", "Iteration: 19, x = 1.324717998133174, f(x) = 0.000000174374144\n", "Iteration: 20, x = 1.324717957244748, f(x) = 0.000000000000007\n", "Iteration: 21, x = 1.324717957244746, f(x) = 0.000000000000000\n", "The solution is x = 1.324717957244746 obtained after 21 iterations\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG2CAYAAAB20iz+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATKRJREFUeJzt3XlcVOX+B/DP7KwziIiogCAgaqag5o5rmXorlyytNLXlumVp167lzbRM69e10spWu2bZqrmUlUuGWkq4YqImKqAgAgIywzowM+f3xwhJAg44zJk583m/XvNSzzxz+M7xOPPxOc95HpkgCAKIiIiIJEgudgFERERETYVBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCRLKXYBYrNYLMjKyoKvry9kMpnY5RAREZENBEFAUVERWrduDbm87n4btw86WVlZCAkJEbsMIiIiaoSMjAwEBwfX+bzbBx1fX18A1gOl1WpFroaIiIhsYTAYEBISUv09Xhe3DzpVl6u0Wi2DDhERkYu50bATDkYmIiIiyWLQISIiIsli0CEiIiLJYtAhIiIiyXL7wcgNVVlZCbPZLHYZkqVQKKBSqcQug4iIJIJBx0YGgwF5eXkwGo1ilyJ5Go0GAQEBvAuOiIhuGoOODQwGAy5evAgfHx8EBARApVJxFuUmIAgCKisrodfrcfHiRQBg2CEiopvCoGODvLw8+Pj4IDg4mAGniXl6esLX1xeZmZnIy8tj0CEiopvCwcg3UFlZCaPRCJ1Ox5DjIDKZDDqdDkajEZWVlWKXQ0RELoxB5waqBh5zgKxjVR1vDvwmIqKbwaBjI/bmOBaPNxER2QODDhEREUkWgw4RERE1idPZRdh1KgdmiyBaDQw6hK+//hq33HILPD09IZPJkJSUBAB45JFHMHz48Abvb9euXfDx8am+RZyIiNzTe7vP4tG1h/DKj6dEq4FBx81dvnwZkyZNQkREBLZt24aEhAS0b98eR48exdq1a/Hyyy83eJ9Dhw5Fz549sWDBgiaomIiIXEFuUTl+OH4JADAqpo1odTDouLmUlBRUVlZi4sSJGDhwIHr37g0vLy+8+uqr6NmzJ3r06NGo/c6aNQuff/45MjIy7FwxERG5gq8OZKDSLKBbqB9uDdaJVgeDTiMJgoDSCpPTPASh4dc/p0yZgv79+wMAxo8fD5lMhkGDBiEnJwebNm3CpEmTarSfPn06PDw8cPjw4eptFosFQ4cORcuWLXHp0qXq7XfffTd8fHzw0UcfNfIIExGRq6o0W/B54nkAwOS+YaLWwpmRG6ms0oxOL2wXu4xqJ1+6E17qhv11Lly4ED179sSsWbOwbNkyDB48GFqtFjt27EBlZSUGDx5co/2KFSuQmJiI+++/H4cPH4afnx9efPFF7N69G9u2bUOrVq2q26rVavTt2xc//PADXnrpJbu8RyIicg3bT2Qjx2BEgI8GIzq3uvELmhB7dNxYREQEOnXqBACIiopC79690alTJyQkJMDT0xMdOnSo0d7DwwPr169HXl4epk6dil27duHll1/GggULcMcdd1y3/27duiEpKQklJSUOeT9EROQc1u5PBwA82CsUaqW4UYM9Oo3kqVLg5Et3il1GNU+Vwm77ysrKQosWLWqdtC8yMhIfffQRxo8fj23btiEuLg6LFy+udT+BgYGwWCzIzs5GRESE3eojIiLndSJLj4PpV6CUy/BQr1Cxy2HQaSyZTNbgS0WuoqysDB4eHnU+/49//AMtW7ZETk4Onn76aSgUtYesqn2UlZU1SZ1EROR8Pt1vHZszvHMQWmrr/i5xFF66ousEBASgoKCgzuenT5+OoqIi3HLLLXjyySdx5cqVWttV7SMgIKBJ6iQiIudypaQCm5Osc6hNEXkQchUGHbpOhw4dkJ+fD71ef91zq1evxrp16/DOO+/gu+++Q2FhIaZOnVrrflJTU9G8eXO0bNmyqUsmIiIn8M2hDBhNFtzSWovubZuJXQ4ABh2qxaBBgyAIAhITE2tsP378OJ588klMnjwZU6dORbt27fDxxx9jy5YtWLFixXX7+f333zFw4EAu0ElE5AbMFgGf/X71lvI+YU7z2c+gQ9fp168fwsLCsGXLluptJSUluP/++xEeHo533323evu9996LWbNm4d///jcOHDhQvf3cuXM4fvw4HnroIYfWTkRE4th1KgeZV8rg56XCPTGtxS6nGoOOm6vqvRk3blz1NrlcjieeeAJffvll9UBib29vnDp1CidOnICXl1eNfbzzzjuoqKhAz549q7d98sknCA0NxT333OOYN0JERKJasy8dADDhtlB42PFO4JvFoEO1mjVrFnQ6HVatWtXg1xYWFmLVqlVYtmwZ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V0JERFS7lbvOoNhoQuc2WtzdpbXY5UiOywedxMREVFRUXLd9z549eOONNwCgzuUjiIiIxHQ2txifJ1oX7lwwsiPkci7caW9OORh58+bN2Lx5MwAgOzsbAJCQkIApU6YAAAICArB8+XIAwPz583HixAkMGjQIwcHBAIDjx49j165dAIAlS5agb9++jn0DRERENnj1pz9htgi4vWMg+kZw4c6m4JRBJykpCWvXrq2xLTU1Famp1muYbdu2rQ46kyZNwqZNm3Dw4EH89NNPqKysRMuWLXH//ffjiSeeQFxcnMPrJyIiupGEc/n4+VQOFHIZnh3RUexyJEsmCIIgdhFiMhgM0Ol00Ov1NW4vJyIiaioWi4B7Vv2G5IsGTOrdFktGcwHqhrL1+9vlx+gQERG5mi3HLiL5ogE+GiWeuj1K7HIkjUGHiIjIgcorzfjvttMAgBmDIhDgw3nbmhKDDhERkQP9b18asvTlaK3zwKP9w8UuR/IYdIiIiBzkcpER78afAwA8MzwaHipODtjUGHSIiIgc5I2dp1FsNKFLsA6jurYRuxy3wKBDRETkACey9PjqYAYA4IW7OnFyQAdh0CEiImpigiBgydaTEATgri6t0CPMX+yS3AaDDhERURPbcTIHv6cWQK2U49kRHcQux60w6BARETUho8mMZT+eAgD8M64dgpt5iVyRe2HQISIiakJr96fjfH4pWvhqMGNQhNjluB0GHSIioiaSV2zE27vOAgD+fWc0vDVOucSkpDHoEBERNZHXd5xGkdGEzm20uLdbsNjluCUGHSIioiZwPPOv28kX3X0LbycXCYMOERGRnQmCgMXfn4AgAKNiWuM23k4uGgYdIiIiO9uSlIXD56/AS63AcyM6il2OW2PQISIisqMSowmv/GS9nXzW4EgE6TxErsi9MegQERHZ0ar4s8gxGBHq78XVyZ0Agw4REZGdnM8vwepf0wAAz/+jI1cndwIMOkRERHayZOspVJgtiIsKwB2dWopdDoFBh4iIyC7iT+fi51M5UMplWHR3J8hkvJ3cGTDoEBER3aTySjMWf3cCADC1XxgiA31FroiqMOgQERHdpI/2puJ8filaajV46vb2YpdD12DQISIiugkZBaVYtdu6ntWCkR3hw/WsnAqDDhER0U1YsvUkyist6N3OH/d0bS12OfQ3DDpERESNFH86FztOWgcgvzSqMwcgOyEGHSIiokYwmsx48eoA5Cl9w9C+JQcgOyMGHSIiokb4cE8q0vNLEeirwVO3R4ldDtWBQYeIiKiBLuSX4p146wDk//yjI3w9VCJXRHVh0CEiImoAQRCwcEsyjCYL+kU25wBkJ8egQ0RE1AA/JWdjT8plqBVyLOEAZKfHoENERGSjYqMJL31/EgAwfWA7tGvhI3JFdCMMOkRERDZ6c2cKsg3lCPX3wszBkWKXQzZg0CEiIrLBiSw9PtmfDgB4adQt8FApxC2IbMKgQ0REdAMWi4DnNyfDbBHwj1tbYVB0oNglkY0YdIiIiG7g8wMXcPRCIbzVCiy8q5PY5VADNHrlsZSUFOzcuRN79+5FRkYG8vLy4OnpicDAQMTExGDw4MEYMmQIPDw87FkvERGRQ+UYyvHaT38CAJ65MxpBOn6vuRKZIAhCQ17w1Vdf4d1338W+ffsAWOcTqHXHMhn8/PwwZcoUzJ49G2FhYTddbFMwGAzQ6XTQ6/XQarVil0NERE5mxrrD+Ck5G11D/LBxRl8o5Lyd3BnY+v1t86Wr+Ph4xMbG4sEHH8SJEycwZcoUfPjhh0hKSkJ2djYqKiqg1+uRmpqKH3/8EQsXLkR0dDTefPNNdOzYEfPnz4fBYLDLmyMiInKEnSdz8FNyNhRyGV4ZcytDjguy+dLV0KFD0a1bN3zzzTe45557oFarr2vj6+sLX19fhIWFYfjw4Vi8eDHOnDmD999/H++88w58fHywcOFCu74BIiKiplBsNOGFLckAgMfiwtGpNXv9XZHNl642bdqEMWPGNPoHZWdnIz09Hb179270PpoCL10REVFtXvz+BNbsS0eIvyd2zBkITzVvJ3cmtn5/29yjczMhBwCCgoIQFBR0U/sgIiJyhGMZhVh7dc6cpaNvZchxYU1+e7nZbG7qH0FERGQ3lWYL5n/7BywCMDqmNQa0byF2SXQTGh10ZsyYAaPRWG+b8+fPIy4urrE/goiIyOE+2HMOf2YXoZmXCs9zzhyX1+ig88EHH6BXr144ffp0rc9v3LgRsbGxSExMbHRxREREjnQ2twhv7ToLAFh09y0I8NGIXBHdrEYHnf/85z9ITk5Gjx49sHbt2urtFRUVmDVrFu677z7I5XJs2rTJLoUSERE1JYtFwPxvj6PCbMHg6BYYFdNa7JLIDhoddJYsWYLt27fDx8cHjzzyCCZNmoRDhw6hV69eeO+999C3b18kJSXhnnvusWe9RERETeKz38/j8Pkr8FYr8PKYWyGTcc4cKbipwchDhw7FsWPHcPvtt+OLL75Ar169kJycjOeffx579uxBcHCwveokIiJqMplXSvF/26zLPDw7ogPa+HmKXBHZS6PXuqri4+ODFi1aVC8FodPpMHDgQMjlXC+UiIicnyAIWLApGaUVZtwW1gwP9WordklkRzeVRo4dO4Zu3brhyy+/xJ133on3338fFRUVuPPOO/H888/DYrHYq04iIqImseFwJvamXIZaKcer93aBnMs8SEqjg86qVavQp08fpKamYtmyZfjpp5/wz3/+E4cPH0aXLl3wyiuvYODAgcjMzLRnvURERHaTrS/HS1tPAgDm3B6FiBY+IldE9tbg1curyOVyhIaG4ssvv0SfPn1qPFdRUYF//etfWLVqFfz9/ZGXl2eXYpsCl4AgInJPgiDg0bWH8MufuegarMO3M/pCqeCwC1dh99XL/27UqFE4evTodSEHANRqNd5++21s3LgRjcxRRERETWrjkYv45c9cqBVy/Pe+rgw5EtXowci2zI8zevRodO/evbE/goiIqEnkGMrx4vcnAABP3R6F9i19Ra6ImkqTx9eQkJAGv2bDhg2YPXs24uLioNVqIZPJMHHixHpfs3//fowcORL+/v7w8vJCly5dsGLFCq61RURENQiCgAUbj8NQbkKXYB2mDWgndknUhGwOOllZWTf9wy5dumRTu5dffhnvvPMOkpKS0KZNmxu237JlCwYMGIC9e/dizJgxmDVrFioqKjB37lxMmDDhZssmIiIJ2Zx0EbuqLlmN4yUrqbP5bzciIgLz5s1DTk5Og36AIAjYsmULYmNj8dFHH9n0mjfffBMpKSkwGAx477336m1rMBjw2GOPQaFQYPfu3fj444/x3//+F0lJSejTpw82bNiAr776qkE1ExGRNGXry7Foy1+XrKKDeMlK6mwOOs888wzee+89hISE4J577sG6deuQmppaa9vi4mL88ssvmD9/PkJCQjB27Fh4eHhg7NixNv2swYMHIyoqyqbpt9evX4+8vDw88MAD6NGjR/V2Dw8PvPzyywCAd99916afS0RE0iUIAv797R8wlJvQlZes3IbNg5FfeuklPP7441iyZAm++OIL/PDDDwCsMyEHBgaiWbNm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Recall function 1\n", "def func2(x):\n", " return x**3 - x - 1.\n", "\n", "# Now we have to define the derivative\n", "def dfunc2(x):\n", " return 3. * x**2 - 1.\n", "\n", "# Initial guess\n", "x0 = 0.50\n", "\n", "print(\"Solving the equation x^3 - x - 1 = 0 with an initial guess of x0 = \", x0)\n", "newton_verbose = True\n", "xroot = newton_method(func2, dfunc2, x0, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_newton_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For an unfortunate choice of initial guess the Newton-Raphson method can enter a loop" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x^3 - 2x - 2 = 0 with an initial guess of x0 = 0.0\n", "Iteration: 0, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 1, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 2, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 3, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 4, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 5, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 6, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 7, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 8, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 9, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 10, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 11, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 12, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 13, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 14, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 15, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 16, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 17, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 18, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 19, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 20, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 21, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 22, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 23, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 24, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 25, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 26, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 27, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 28, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 29, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 30, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 31, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 32, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 33, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 34, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 35, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 36, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 37, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 38, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 39, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 40, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 41, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 42, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 43, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 44, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 45, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 46, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 47, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 48, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 49, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 50, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 51, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 52, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 53, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 54, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 55, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 56, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 57, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 58, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 59, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 60, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 61, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 62, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 63, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 64, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 65, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 66, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 67, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 68, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 69, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 70, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 71, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 72, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 73, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 74, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 75, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 76, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 77, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 78, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 79, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 80, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 81, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 82, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 83, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 84, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 85, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 86, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 87, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 88, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 89, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 90, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 91, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 92, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 93, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 94, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 95, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 96, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 97, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 98, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Iteration: 99, x = 1.000000000000000, f(x) = 1.000000000000000\n", "Iteration: 100, x = 0.000000000000000, f(x) = 2.000000000000000\n", "Newton-Raphson method failed to converge to a required precision in 100 iterations\n", "The error estimate is 1.0\n", "The solution is x = 0.0 obtained after 100 iterations\n" ] }, { "data": { "image/png": "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cm2lUWe3MLmaqhSWpN4EBQXx1ltvERgYeNL33bVrF/fddx9jxoyph8pERMTdpG09xMG8EqJDA7joDPc6qUd/sku9Ov/88yuvHXcyunTpQpcuXeqhIhERcUfvrtkDlM9VCvQz76K51VHPkoiIiJhq35EiVmw7BMDoHu41BAcKSyIiImKy+T+kYxjQM6UxyTGhZpdzDK8MSzk5Obz22msMHz6c1q1bExwcTGRkJOeffz6vv/46Tqez2vutWrWKiy++mOjoaEJCQujUqRMzZszA4XC4+BWIiIg0DGV/mtg95hz361UCL52z9MEHH3DzzTcTHx/PgAEDaNGiBZmZmSxatIjrrruOTz/9lAULFlRZ6PDDDz9kxIgRBAUFMWrUKKKjo/n444+ZPHkyK1eu5IMPPjDxFYmIiHin5b9lkZVvo3FoAINS480up1peGZbatm3LkiVLuOSSS6pcoPWJJ56gR48eLFq0iIULF1auC5SXl8d1112Hr68vK1asoHv37gA8+uijDBgwgAULFvD+++8zevRoU16PiIiIt3pv7V4ARnZPIMDPPQe83LOq0zRgwACGDh16zJXs4+PjuemmmwBYsWJF5fYPPviA7OxsrrzyysqgBOWnvj/22GMAVVacFhERkdOXfriIb7aXT+y+0s3WVvozrwxLNQkICADA39+/cltaWhoAgwcPPqZ9nz59CAkJYfXq1dhsNtcUKdV69913q71+nIiIeKb3f9iLYcD5rWNIcsOJ3RUaVFiy2+3MnTsXqBqMtm7dCkCbNm2OuY+fnx/JycnY7XZ27tzpmkJry+GAFSvgvffK//XyiegKSyIi3qPU7uS/6/YB7juxu4JXzlk6nnvvvZfNmzczZMgQLrroosrtVqsVgMjIyGrvV7E9Nze3xsfPy8ur8nVgYOAprV5dK4sWwe23w759f2xLSIDnn4fLLquf5zwJRUVFx1z/TUREpMLnvxzkUL6NmLBALujgXit2/1WD6VmaMWMGzz33HO3atWPevHkndV/DMACqnD1XncTERCIjIytvTz755CnXW6NFi2DkyKpBCSAjo3z7okX187zHMX36dCwWCz/++CMjR46kUaNGpKSkUFJSwn333UdycjIBAQE0b96cSZMmHRM6nU4nzzzzDO3btycwMJDY2FjGjRvHvj+9vn79+vG///2PPXv2YLFYKm8iIuKZ5q3e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EydOrHZidr9+/ejXr1+VbXfddRf//ve/q1zuZP78+eTk5Jh2uROtDF57OlYnR8er9nSsak/HqvZ0rGqvPo9VbR/bLecsnY5du3YBkJ2dzSOPPHLcdn8NS8899xydOnVi5syZvPrqq/j4+NC1a1emTJnCJZdcUp8li4iIiBvzurC0YsWKU77vNddcwzXXXFN3xYiIiIjH87qwZIaKkcy/Lkp5uioer64f1xvpWJ0cHa/a07GqPR2r2tOxqr36PFYVj3miGUleN2fJDPv27SMxMdHsMkREROQUpKenk5CQcNz9Ckt1wOl0sn//fsLDw2u10reIiIiYzzAM8vPzadasWY1nzissiYiIiNTA69ZZEhEREalLCksiIiIiNVBY8iDp6elMnDiRc845h/j4eAIDA2nWrBm9e/dmzpw5lJWVmV2i29i+fTtPP/00AwYMIDExkYCAAOLi4rj00ktJS0szuzy3UlZWxvPPP8+ECRPo3LkzAQEBWCwWXnvtNbNLM9W+ffu49tpradasGYGBgSQlJXHHHXdUWeVfYMGCBdx666307t2biIgILBYLV111ldlluZ2cnBxee+01hg8fTuvWrQkODiYyMpLzzz+f119/HafTaXaJbuWee+5h4MCBJCYmEhwcTHR0NF26dOHhhx8mJyfH5fVozpIHWbFiBUOHDuWcc86hVatWREdHk5OTw2effUZ6ejr9+vXjiy++wM9PK0KMHj2a+fPn06FDB3r37k10dDRbt27lo48+wuFwMGPGDG6//Xazy3QLubm5NGrUCIC4uDgCAgJIT09n9uzZXHfddSZXZ44dO3bQs2dPsrKyGDp0KO3bt2ft2rWkpaXRrl07Vq5cSePGjc0u0y107tyZjRs3EhYWRkJCAlu2bGHs2LG8/fbbZpfmVl555RVuvvlm4uPjGTBgAC1atCAzM5NFixZhtVq57LLLWLBggU4SOiogIICuXbuSmppKbGwshYWFfP/996xbt45mzZqxevVqWrRo4bqCDPEYNpvNcDgcx2wvLS01+vbtawDG+++/b0Jl7ueNN94w1q1bd8z2FStWGP7+/oa/v7+xf/9+EypzPzabzfj0008rj8e0adMMwJg9e7bJlZln0KBBBmC88MILVbZPnjzZAIwbb7zRpMrcz1dffWVs27bNcDqdRlpamgEYY8eONbsst7N8+XJjyZIlht1u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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# The method ends up in a cycle\n", "def func3(x):\n", " return x**3 - 2. * x + 2.\n", "\n", "# Now we have to define the derivative\n", "def dfunc3(x):\n", " return 3. * x**2 - 2.\n", "\n", "# Initial guess\n", "x0 = 0.0\n", "\n", "print(\"Solving the equation x^3 - 2x - 2 = 0 with an initial guess of x0 = \", x0)\n", "newton_verbose = True\n", "xroot = newton_method(func3, dfunc3, x0, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_newton_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(-3,3,100)\n", "fref = func3(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![newton-3](newton-func3.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Relaxation method\n", "\n", "Another local method is iteration (or relaxation) method\n", "\n", "The idea is to rewrite the equation\n", "$$\n", "f(x) = 0\n", "$$\n", "in a form\n", "$$\n", "x = \\varphi(x).\n", "$$\n", "This is always possible to do, for instance by choosing $\\varphi(x) = f(x) + x$, although this choice of $\\varphi(x)$ is not unique.\n", "\n", "The root $x^*$ of this equation is approximated iteratively starting from some initial guess $x_0$\n", "$$\n", "x_{n+1} = \\varphi(x_n).\n", "$$\n", "\n", "It turns out that this iterative procedure in some cases converges quickly (as a geometric progression) to the root $x^*$.\n", "Namely, this is the case if the derivative\n", "$$\n", "|\\varphi'(x)| < 1\n", "$$\n", "for all $x$ in the interval of value covered by all $x_i$." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "last_relaxation_iterations = 0\n", "relaxation_verbose = True\n", "\n", "def relaxation_method(\n", " phi, # The function from the equation x = phi(x)\n", " x0, # The initial guess\n", " tolerance = 1.e-10, # The desired accuracy of the solution\n", " max_iterations = 100 # Maximum number of iterations\n", " ):\n", " \n", " xprev = xnew = x0\n", " \n", " global last_relaxation_iterations\n", " last_relaxation_iterations = 0\n", " \n", " if relaxation_verbose:\n", " print(\"Iteration: {0:5}, x = {1:20.15f}, phi(x) = {2:10.15f}\".format(last_relaxation_iterations, x0, phi(x0)))\n", " \n", " for i in range(max_iterations):\n", " last_relaxation_iterations += 1\n", " \n", " xprev = xnew\n", " xnew = phi(xprev) # The next iteration\n", " \n", " if relaxation_verbose:\n", " print(\"Iteration: {0:5}, x = {1:20.15f}, phi(x) = {2:10.15f}\".format(last_relaxation_iterations, xnew, phi(xnew)))\n", "\n", " if (abs(xnew-xprev) < tolerance):\n", " return xnew\n", " \n", " \n", " print(\"The iteration method failed to converge to a required precision in \" + str(max_iterations) + \" iterations\")\n", " print(\"The error estimate is \", abs(xnew - xprev))\n", " \n", " return xnew " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x = 2 - e^-x with relaxation method an initial guess of x0 = 0.5\n", "Iteration: 0, x = 0.500000000000000, phi(x) = 1.393469340287367\n", "Iteration: 1, x = 1.393469340287367, phi(x) = 1.751787325113973\n", "Iteration: 2, x = 1.751787325113973, phi(x) = 1.826536369684999\n", "Iteration: 3, x = 1.826536369684999, phi(x) = 1.839029855597129\n", "Iteration: 4, x = 1.839029855597129, phi(x) = 1.841028423293983\n", "Iteration: 5, x = 1.841028423293983, phi(x) = 1.841345821475382\n", "Iteration: 6, x = 1.841345821475382, phi(x) = 1.841396170032424\n", "Iteration: 7, x = 1.841396170032424, phi(x) = 1.841404155305379\n", "Iteration: 8, x = 1.841404155305379, phi(x) = 1.841405421731432\n", "Iteration: 9, x = 1.841405421731432, phi(x) = 1.841405622579610\n", "Iteration: 10, x = 1.841405622579610, phi(x) = 1.841405654432999\n", "Iteration: 11, x = 1.841405654432999, phi(x) = 1.841405659484766\n", "Iteration: 12, x = 1.841405659484766, phi(x) = 1.841405660285948\n", "Iteration: 13, x = 1.841405660285948, phi(x) = 1.841405660413011\n", "Iteration: 14, x = 1.841405660413011, phi(x) = 1.841405660433162\n", "Iteration: 15, x = 1.841405660433162, phi(x) = 1.841405660436358\n", "The solution is x = 1.8414056604331623 obtained after 15 iterations\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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reLhhx/miiuuoF27djRt2pSjR4+ybt06EhMTCQ0N5Z133ilb/9ChQ8TExBAeHk5SUlK5bf3jH/+gT58+TJkyhTVr1hATE0N8fDxxcXFERUWV+wKuKXlFJXR66osa3251/PrMMHy9Kv+fOiUlhXvvvZdrr72WJUuW8OijjxIUFMQDDzxAjx49GDBgAKtXry4LWT169Djrdh566CHeeustpk+fzuzZs7n++uv5y1/+wrx5885Yt0ePHnz11VeVrlVERJzEqWOwbAIkrDHbXf4M1/0dvJ3v9lJOF4KuvPJK7rnnHjZs2MC2bdvIyMjAz8+PqKgoxo4dy5QpU2jSpEmFttWuXTu2bNlSdgPVzz//nLCwMKZMmUJsbGyFt+OqFixYQF5eHnPnzgUgPj6eHj16YLPZaNWqFWD2xKWlpWGz2c55E1lfX1+ee+45xo8fz6BBg7j22mt55513znpmXkhICGlpabolhohIfZT0LSy5E06lgocPXPMSdB/rVL0/v+d03zKdO3c+Y/jqfCIiIs473NO6dWsWLlxYE6VViI+nO78+M6zO3q8ifDzPP3/qXL7++mtiYmJo164dhmHw008/cc899wC/zc2KioriwIEDeHp6nneeVukEdJvNxvvvv3/OdRs1aoRhGOTn5+Pv71+lukVEpI45SuCbl2HtbDAcEBwNN74PzTtZXdl5OV0Iqu9sNluVhp6c0YEDB8quuL13714yMzPp2bMnAF999RU+Pj5cffXV/PTTTxQWFpKTk3PWOVZbt27luuuuo2/fvmzYsIH33nvvjPu5lTpx4gTe3t4KQCIi9UX2UVh6N+xfZ7Yv/h+4dg541eyc29rgdBOjxXkEBQWxb98+ALZs2QJAz549OXz4MK+//jp33303/v7+dOzYETj7jW13797NsGHDuPzyy4mLi2PEiBHMnDnznNdvSkxMpFMn5/6Xg4iInJa41jz7a/868PSFkW/CqDfrRQAChSA5j5tvvpkDBw4wefJkVq5cibe3N3FxcVx66aVERUXxt7/9DYCBAwcC8N1335V7fVJSEldeeSXR0dF88skneHp68sILL3Dy5ElmzZp1xvs5HA42b9581rPMRETEiThK4Ovn4YORkJMGIZ3gnrXQ7X+srqxSFILknB555BEeeughPv74Yz7++GMKCwt59tlnue2221izZg1eXl6AOe+qf//+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Recall the equation x + e^-x - 2 = 0, rewrite as x = phi(x), where phi(x) = 2 - e^-x\n", "def phi1(x):\n", " return 2. - np.exp(-x)\n", "\n", "# Initial guess\n", "x0 = 0.5\n", "\n", "print(\"Solving the equation x = 2 - e^-x with relaxation method an initial guess of x0 = \", x0)\n", "xroot = relaxation_method(phi1, x0, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_relaxation_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func1(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()\n", "\n", "\n", "phiref = phi1(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,phiref, label = '${\\\\varphi(x)}$')\n", "plt.plot(xref,xref, label = 'x')\n", "plt.plot([xroot], [xroot], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = 0.0\n", "Iteration: 0, x = 0.000000000000000, phi(x) = -1.000000000000000\n", "Iteration: 1, x = -1.000000000000000, phi(x) = -2.000000000000000\n", "Iteration: 2, x = -2.000000000000000, phi(x) = -9.000000000000000\n", "Iteration: 3, x = -9.000000000000000, phi(x) = -730.000000000000000\n", "Iteration: 4, x = -730.000000000000000, phi(x) = -389017001.000000000000000\n", "Iteration: 5, x = -389017001.000000000000000, phi(x) = -58871587162270591457689600.000000000000000\n", "Iteration: 6, x = -58871587162270591457689600.000000000000000, phi(x) = -204040901322752646989478259680513109526757826056202557355691431285390611316736.000000000000000\n", "Iteration: 7, x = -204040901322752646989478259680513109526757826056202557355691431285390611316736.000000000000000, phi(x) = -8494771472237387691242611538599472199333045034070888643295870583150028612258583145101302119543367284932616097722814131127104275290993706669943943557518825041720139256751756296514363510463501782805696167407096791414943273033163341824.000000000000000\n" ] }, { "ename": "OverflowError", "evalue": "(34, 'Result too large')", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mOverflowError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[19], line 9\u001b[0m\n\u001b[1;32m 6\u001b[0m x0 \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0.\u001b[39m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSolving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = \u001b[39m\u001b[38;5;124m\"\u001b[39m, x0)\n\u001b[0;32m----> 9\u001b[0m xroot \u001b[38;5;241m=\u001b[39m \u001b[43mrelaxation_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mphi2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx0\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maccuracy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe solution is x = \u001b[39m\u001b[38;5;124m\"\u001b[39m, xroot, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mobtained after \u001b[39m\u001b[38;5;124m\"\u001b[39m, last_relaxation_iterations, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m iterations\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# Plotting\u001b[39;00m\n", "Cell \u001b[0;32mIn[17], line 26\u001b[0m, in \u001b[0;36mrelaxation_method\u001b[0;34m(phi, x0, tolerance, max_iterations)\u001b[0m\n\u001b[1;32m 23\u001b[0m xnew \u001b[38;5;241m=\u001b[39m phi(xprev) \u001b[38;5;66;03m# The next iteration\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m relaxation_verbose:\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIteration: \u001b[39m\u001b[38;5;132;01m{0:5}\u001b[39;00m\u001b[38;5;124m, x = \u001b[39m\u001b[38;5;132;01m{1:20.15f}\u001b[39;00m\u001b[38;5;124m, phi(x) = \u001b[39m\u001b[38;5;132;01m{2:10.15f}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(last_relaxation_iterations, xnew, \u001b[43mphi\u001b[49m\u001b[43m(\u001b[49m\u001b[43mxnew\u001b[49m\u001b[43m)\u001b[49m))\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mabs\u001b[39m(xnew\u001b[38;5;241m-\u001b[39mxprev) \u001b[38;5;241m<\u001b[39m tolerance):\n\u001b[1;32m 29\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m xnew\n", "Cell \u001b[0;32mIn[19], line 3\u001b[0m, in \u001b[0;36mphi2\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mphi2\u001b[39m(x):\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mx\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m3\u001b[39;49m \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m\n", "\u001b[0;31mOverflowError\u001b[0m: (34, 'Result too large')" ] } ], "source": [ "# Recall the equation x^3 - x - 1 = 0, rewrite as x = phi(x), where phi(x) = x^3 - 1\n", "def phi2(x):\n", " return x**3 - 1\n", "\n", "# Initial guess\n", "x0 = 0.\n", "\n", "print(\"Solving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = \", x0)\n", "xroot = relaxation_method(phi2, x0, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_relaxation_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = 0.0\n", "Iteration: 0, x = 0.000000000000000, phi(x) = 1.000000000000000\n", "Iteration: 1, x = 1.000000000000000, phi(x) = 1.259921049894873\n", "Iteration: 2, x = 1.259921049894873, phi(x) = 1.312293836683289\n", "Iteration: 3, x = 1.312293836683289, phi(x) = 1.322353819138825\n", "Iteration: 4, x = 1.322353819138825, phi(x) = 1.324268744551578\n", "Iteration: 5, x = 1.324268744551578, phi(x) = 1.324632625250920\n", "Iteration: 6, x = 1.324632625250920, phi(x) = 1.324701748510359\n", "Iteration: 7, x = 1.324701748510359, phi(x) = 1.324714878440951\n", "Iteration: 8, x = 1.324714878440951, phi(x) = 1.324717372435671\n", "Iteration: 9, x = 1.324717372435671, phi(x) = 1.324717846162146\n", "Iteration: 10, x = 1.324717846162146, phi(x) = 1.324717936144965\n", "Iteration: 11, x = 1.324717936144965, phi(x) = 1.324717953236911\n", "Iteration: 12, x = 1.324717953236911, phi(x) = 1.324717956483471\n", "Iteration: 13, x = 1.324717956483471, phi(x) = 1.324717957100144\n", "Iteration: 14, x = 1.324717957100144, phi(x) = 1.324717957217279\n", "Iteration: 15, x = 1.324717957217279, phi(x) = 1.324717957239529\n", "Iteration: 16, x = 1.324717957239529, phi(x) = 1.324717957243755\n", "The solution is x = 1.324717957239529 obtained after 16 iterations\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG2CAYAAAB20iz+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATKRJREFUeJzt3XlcVOX+B/DP7KwziIiogCAgaqag5o5rmXorlyytNLXlumVp167lzbRM69e10spWu2bZqrmUlUuGWkq4YqImKqAgAgIywzowM+f3xwhJAg44zJk583m/XvNSzzxz+M7xOPPxOc95HpkgCAKIiIiIJEgudgFERERETYVBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCSLQYeIiIgki0GHiIiIJItBh4iIiCRLKXYBYrNYLMjKyoKvry9kMpnY5RAREZENBEFAUVERWrduDbm87n4btw86WVlZCAkJEbsMIiIiaoSMjAwEBwfX+bzbBx1fX18A1gOl1WpFroaIiIhsYTAYEBISUv09Xhe3DzpVl6u0Wi2DDhERkYu50bATDkYmIiIiyWLQISIiIsli0CEiIiLJYtAhIiIiyXL7wcgNVVlZCbPZLHYZkqVQKKBSqcQug4iIJIJBx0YGgwF5eXkwGo1ilyJ5Go0GAQEBvAuOiIhuGoOODQwGAy5evAgfHx8EBARApVJxFuUmIAgCKisrodfrcfHiRQBg2CEiopvCoGODvLw8+Pj4IDg4mAGniXl6esLX1xeZmZnIy8tj0CEiopvCwcg3UFlZCaPRCJ1Ox5DjIDKZDDqdDkajEZWVlWKXQ0RELoxB5waqBh5zgKxjVR1vDvwmIqKbwaBjI/bmOBaPNxER2QODDhEREUkWgw4RERE1idPZRdh1KgdmiyBaDQw6hK+//hq33HILPD09IZPJkJSUBAB45JFHMHz48Abvb9euXfDx8am+RZyIiNzTe7vP4tG1h/DKj6dEq4FBx81dvnwZkyZNQkREBLZt24aEhAS0b98eR48exdq1a/Hyyy83eJ9Dhw5Fz549sWDBgiaomIiIXEFuUTl+OH4JADAqpo1odTDouLmUlBRUVlZi4sSJGDhwIHr37g0vLy+8+uqr6NmzJ3r06NGo/c6aNQuff/45MjIy7FwxERG5gq8OZKDSLKBbqB9uDdaJVgeDTiMJgoDSCpPTPASh4dc/p0yZgv79+wMAxo8fD5lMhkGDBiEnJwebNm3CpEmTarSfPn06PDw8cPjw4eptFosFQ4cORcuWLXHp0qXq7XfffTd8fHzw0UcfNfIIExGRq6o0W/B54nkAwOS+YaLWwpmRG6ms0oxOL2wXu4xqJ1+6E17qhv11Lly4ED179sSsWbOwbNkyDB48GFqtFjt27EBlZSUGDx5co/2KFSuQmJiI+++/H4cPH4afnx9efPFF7N69G9u2bUOrVq2q26rVavTt2xc//PADXnrpJbu8RyIicg3bT2Qjx2BEgI8GIzq3uvELmhB7dNxYREQEOnXqBACIiopC79690alTJyQkJMDT0xMdOnSo0d7DwwPr169HXl4epk6dil27duHll1/GggULcMcdd1y3/27duiEpKQklJSUOeT9EROQc1u5PBwA82CsUaqW4UYM9Oo3kqVLg5Et3il1GNU+Vwm77ysrKQosWLWqdtC8yMhIfffQRxo8fj23btiEuLg6LFy+udT+BgYGwWCzIzs5GRESE3eojIiLndSJLj4PpV6CUy/BQr1Cxy2HQaSyZTNbgS0WuoqysDB4eHnU+/49//AMtW7ZETk4Onn76aSgUtYesqn2UlZU1SZ1EROR8Pt1vHZszvHMQWmrr/i5xFF66ousEBASgoKCgzuenT5+OoqIi3HLLLXjyySdx5cqVWttV7SMgIKBJ6iQiIudypaQCm5Osc6hNEXkQchUGHbpOhw4dkJ+fD71ef91zq1evxrp16/DOO+/gu+++Q2FhIaZOnVrrflJTU9G8eXO0bNmyqUsmIiIn8M2hDBhNFtzSWovubZuJXQ4ABh2qxaBBgyAIAhITE2tsP378OJ588klMnjwZU6dORbt27fDxxx9jy5YtWLFixXX7+f333zFw4EAu0ElE5AbMFgGf/X71lvI+YU7z2c+gQ9fp168fwsLCsGXLluptJSUluP/++xEeHo533323evu9996LWbNm4d///jcOHDhQvf3cuXM4fvw4HnroIYfWTkRE4th1KgeZV8rg56XCPTGtxS6nGoOOm6vqvRk3blz1NrlcjieeeAJffvll9UBib29vnDp1CidOnICXl1eNfbzzzjuoqKhAz549q7d98sknCA0NxT333OOYN0JERKJasy8dADDhtlB42PFO4JvFoEO1mjVrFnQ6HVatWtXg1xYWFmLVqlVYtmwZ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V0JERFS7lbvOoNhoQuc2WtzdpbXY5UiOywedxMREVFRUXLd9z549eOONNwCgzuUjiIiIxHQ2txifJ1oX7lwwsiPkci7caW9OORh58+bN2Lx5MwAgOzsbAJCQkIApU6YAAAICArB8+XIAwPz583HixAkMGjQIwcHBAIDjx49j165dAIAlS5agb9++jn0DRERENnj1pz9htgi4vWMg+kZw4c6m4JRBJykpCWvXrq2xLTU1Famp1muYbdu2rQ46kyZNwqZNm3Dw4EH89NNPqKysRMuWLXH//ffjiSeeQFxcnMPrJyIiupGEc/n4+VQOFHIZnh3RUexyJEsmCIIgdhFiMhgM0Ol00Ov1NW4vJyIiaioWi4B7Vv2G5IsGTOrdFktGcwHqhrL1+9vlx+gQERG5mi3HLiL5ogE+GiWeuj1K7HIkjUGHiIjIgcorzfjvttMAgBmDIhDgw3nbmhKDDhERkQP9b18asvTlaK3zwKP9w8UuR/IYdIiIiBzkcpER78afAwA8MzwaHipODtjUGHSIiIgc5I2dp1FsNKFLsA6jurYRuxy3wKBDRETkACey9PjqYAYA4IW7OnFyQAdh0CEiImpigiBgydaTEATgri6t0CPMX+yS3AaDDhERURPbcTIHv6cWQK2U49kRHcQux60w6BARETUho8mMZT+eAgD8M64dgpt5iVyRe2HQISIiakJr96fjfH4pWvhqMGNQhNjluB0GHSIioiaSV2zE27vOAgD+fWc0vDVOucSkpDHoEBERNZHXd5xGkdGEzm20uLdbsNjluCUGHSIioiZwPPOv28kX3X0LbycXCYMOERGRnQmCgMXfn4AgAKNiWuM23k4uGgYdIiIiO9uSlIXD56/AS63AcyM6il2OW2PQISIisqMSowmv/GS9nXzW4EgE6TxErsi9MegQERHZ0ar4s8gxGBHq78XVyZ0Agw4REZGdnM8vwepf0wAAz/+jI1cndwIMOkRERHayZOspVJgtiIsKwB2dWopdDoFBh4iIyC7iT+fi51M5UMplWHR3J8hkvJ3cGTDoEBER3aTySjMWf3cCADC1XxgiA31FroiqMOgQERHdpI/2puJ8filaajV46vb2YpdD12DQISIiugkZBaVYtdu6ntWCkR3hw/WsnAqDDhER0U1YsvUkyist6N3OH/d0bS12OfQ3DDpERESNFH86FztOWgcgvzSqMwcgOyEGHSIiokYwmsx48eoA5Cl9w9C+JQcgOyMGHSIiokb4cE8q0vNLEeirwVO3R4ldDtWBQYeIiKiBLuSX4p146wDk//yjI3w9VCJXRHVh0CEiImoAQRCwcEsyjCYL+kU25wBkJ8egQ0RE1AA/JWdjT8plqBVyLOEAZKfHoENERGSjYqMJL31/EgAwfWA7tGvhI3JFdCMMOkRERDZ6c2cKsg3lCPX3wszBkWKXQzZg0CEiIrLBiSw9PtmfDgB4adQt8FApxC2IbMKgQ0REdAMWi4DnNyfDbBHwj1tbYVB0oNglkY0YdIiIiG7g8wMXcPRCIbzVCiy8q5PY5VADNHrlsZSUFOzcuRN79+5FRkYG8vLy4OnpicDAQMTExGDw4MEYMmQIPDw87FkvERGRQ+UYyvHaT38CAJ65MxpBOn6vuRKZIAhCQ17w1Vdf4d1338W+ffsAWOcTqHXHMhn8/PwwZcoUzJ49G2FhYTddbFMwGAzQ6XTQ6/XQarVil0NERE5mxrrD+Ck5G11D/LBxRl8o5Lyd3BnY+v1t86Wr+Ph4xMbG4sEHH8SJEycwZcoUfPjhh0hKSkJ2djYqKiqg1+uRmpqKH3/8EQsXLkR0dDTefPNNdOzYEfPnz4fBYLDLmyMiInKEnSdz8FNyNhRyGV4ZcytDjguy+dLV0KFD0a1bN3zzzTe45557oFarr2vj6+sLX19fhIWFYfjw4Vi8eDHOnDmD999/H++88w58fHywcOFCu74BIiKiplBsNOGFLckAgMfiwtGpNXv9XZHNl642bdqEMWPGNPoHZWdnIz09Hb179270PpoCL10REVFtXvz+BNbsS0eIvyd2zBkITzVvJ3cmtn5/29yjczMhBwCCgoIQFBR0U/sgIiJyhGMZhVh7dc6cpaNvZchxYU1+e7nZbG7qH0FERGQ3lWYL5n/7BywCMDqmNQa0byF2SXQTGh10ZsyYAaPRWG+b8+fPIy4urrE/goiIyOE+2HMOf2YXoZmXCs9zzhyX1+ig88EHH6BXr144ffp0rc9v3LgRsbGxSExMbHRxREREjnQ2twhv7ToLAFh09y0I8NGIXBHdrEYHnf/85z9ITk5Gjx49sHbt2urtFRUVmDVrFu677z7I5XJs2rTJLoUSERE1JYtFwPxvj6PCbMHg6BYYFdNa7JLIDhoddJYsWYLt27fDx8cHjzzyCCZNmoRDhw6hV69eeO+999C3b18kJSXhnnvusWe9RERETeKz38/j8Pkr8FYr8PKYWyGTcc4cKbipwchDhw7FsWPHcPvtt+OLL75Ar169kJycjOeffx579uxBcHCwveokIiJqMplXSvF/26zLPDw7ogPa+HmKXBHZS6PXuqri4+ODFi1aVC8FodPpMHDgQMjlXC+UiIicnyAIWLApGaUVZtwW1gwP9WordklkRzeVRo4dO4Zu3brhyy+/xJ133on3338fFRUVuPPOO/H888/DYrHYq04iIqImseFwJvamXIZaKcer93aBnMs8SEqjg86qVavQp08fpKamYtmyZfjpp5/wz3/+E4cPH0aXLl3wyiuvYODAgcjMzLRnvURERHaTrS/HS1tPAgDm3B6FiBY+IldE9tbg1curyOVyhIaG4ssvv0SfPn1qPFdRUYF//etfWLVqFfz9/ZGXl2eXYpsCl4AgInJPgiDg0bWH8MufuegarMO3M/pCqeCwC1dh99XL/27UqFE4evTodSEHANRqNd5++21s3LgRjcxRRERETWrjkYv45c9cqBVy/Pe+rgw5EtXowci2zI8zevRodO/evbE/goiIqEnkGMrx4vcnAABP3R6F9i19Ra6ImkqTx9eQkJAGv2bDhg2YPXs24uLioNVqIZPJMHHixHpfs3//fowcORL+/v7w8vJCly5dsGLFCq61RURENQiCgAUbj8NQbkKXYB2mDWgndknUhGwOOllZWTf9wy5dumRTu5dffhnvvPMOkpKS0KZNmxu237JlCwYMGIC9e/dizJgxmDVrFioqKjB37lxMmDDhZssmIiIJ2Zx0EbuqLlmN4yUrqbP5bzciIgLz5s1DTk5Og36AIAjYsmULYmNj8dFHH9n0mjfffBMpKSkwGAx477336m1rMBjw2GOPQaFQYPfu3fj444/x3//+F0lJSejTpw82bNiAr776qkE1ExGRNGXry7Foy1+XrKKDeMlK6mwOOs888wzee+89hISE4J577sG6deuQmppaa9vi4mL88ssvmD9/PkJCQjB27Fh4eHhg7NixNv2swYMHIyoqyqbpt9evX4+8vDw88MAD6NGjR/V2Dw8PvPzyywCAd99916afS0RE0iUIAv797R8wlJvQlZes3IbNg5FfeuklPP7441iyZAm++OIL/PDDDwCsMyEHBgaiWbNm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Recall the equation x^3 - x - 1 = 0, rewrite as x = phi(x), where phi(x) = x^3 - 1\n", "def phi2(x):\n", " return (1+x)**(1/3)\n", "\n", "# Initial guess\n", "x0 = 0.\n", "\n", "print(\"Solving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = \", x0)\n", "xroot = relaxation_method(phi2, x0, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_relaxation_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = 1.2\n", "Iteration: 0, x = 1.200000000000000, phi(x) = 2.272727272727273\n", "Iteration: 1, x = 2.272727272727273, phi(x) = 0.240079365079365\n", "Iteration: 2, x = 0.240079365079365, phi(x) = -1.061163446475196\n", "Iteration: 3, x = -1.061163446475196, phi(x) = 7.932235852407031\n", "Iteration: 4, x = 7.932235852407031, phi(x) = 0.016149775441666\n", "Iteration: 5, x = 0.016149775441666, phi(x) = -1.000260883289156\n", "Iteration: 6, x = -1.000260883289156, phi(x) = 1916.315871752755584\n", "Iteration: 7, x = 1916.315871752755584, phi(x) = 0.000000272311464\n", "Iteration: 8, x = 0.000000272311464, phi(x) = -1.000000000000074\n", "Iteration: 9, x = -1.000000000000074, phi(x) = 6741915609836.072265625000000\n", "Iteration: 10, x = 6741915609836.072265625000000, phi(x) = 0.000000000000000\n", "Iteration: 11, x = 0.000000000000000, phi(x) = -1.000000000000000\n" ] }, { "ename": "ZeroDivisionError", "evalue": "float division by zero", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[21], line 9\u001b[0m\n\u001b[1;32m 6\u001b[0m x0 \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1.2\u001b[39m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSolving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = \u001b[39m\u001b[38;5;124m\"\u001b[39m, x0)\n\u001b[0;32m----> 9\u001b[0m xroot \u001b[38;5;241m=\u001b[39m \u001b[43mrelaxation_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mphi2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx0\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maccuracy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe solution is x = \u001b[39m\u001b[38;5;124m\"\u001b[39m, xroot, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mobtained after \u001b[39m\u001b[38;5;124m\"\u001b[39m, last_relaxation_iterations, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m iterations\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# Plotting\u001b[39;00m\n", "Cell \u001b[0;32mIn[17], line 26\u001b[0m, in \u001b[0;36mrelaxation_method\u001b[0;34m(phi, x0, tolerance, max_iterations)\u001b[0m\n\u001b[1;32m 23\u001b[0m xnew \u001b[38;5;241m=\u001b[39m phi(xprev) \u001b[38;5;66;03m# The next iteration\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m relaxation_verbose:\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIteration: \u001b[39m\u001b[38;5;132;01m{0:5}\u001b[39;00m\u001b[38;5;124m, x = \u001b[39m\u001b[38;5;132;01m{1:20.15f}\u001b[39;00m\u001b[38;5;124m, phi(x) = \u001b[39m\u001b[38;5;132;01m{2:10.15f}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(last_relaxation_iterations, xnew, \u001b[43mphi\u001b[49m\u001b[43m(\u001b[49m\u001b[43mxnew\u001b[49m\u001b[43m)\u001b[49m))\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mabs\u001b[39m(xnew\u001b[38;5;241m-\u001b[39mxprev) \u001b[38;5;241m<\u001b[39m tolerance):\n\u001b[1;32m 29\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m xnew\n", "Cell \u001b[0;32mIn[21], line 3\u001b[0m, in \u001b[0;36mphi2\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mphi2\u001b[39m(x):\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1.\u001b[39;49m\u001b[43m)\u001b[49m\n", "\u001b[0;31mZeroDivisionError\u001b[0m: float division by zero" ] } ], "source": [ "# Recall the equation x^3 - x - 1 = 0, rewrite as x = phi(x), where phi(x) = x^3 - 1\n", "def phi2(x):\n", " return 1/(x**2 - 1.)\n", "\n", "# Initial guess\n", "x0 = 1.2\n", "\n", "print(\"Solving the equation x = x^3 - 1 with relaxation method an initial guess of x0 = \", x0)\n", "xroot = relaxation_method(phi2, x0, accuracy)\n", "print(\"The solution is x = \", xroot, \"obtained after \", last_relaxation_iterations, \" iterations\")\n", "\n", "# Plotting\n", "xref = np.linspace(0,3,100)\n", "fref = func2(xref)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"f(x)\")\n", "plt.plot(xref,fref, label = 'f(x)')\n", "plt.axhline(y = 0., color = 'black', linestyle = '--')\n", "plt.plot([xroot], [0], 'ro',label='root')\n", "plt.legend()\n", "plt.show()" ] } ], "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.10.16" } }, "nbformat": 4, "nbformat_minor": 4 }