{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Root Finding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose that you want to find the solution(s) of a transcendental equation. For example, you might want to know what values of $x$ that solve the equation\n", "$$ \\sin x = 2x\\cos x.$$ \n", "The graphical approach is to plot both sides of the equation and see where they cross as shown below." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEPCAYAAABBUX+lAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XdclfX///HHG1BUxIUoiYoDQVFcOXNEmjOzHKml5mjY\nLq3PRxufxq9h06ZZal/LyizNSWZOXLm3IuIE90ZRRBnv3x8XCBqmwjnnfcbrfrtdtwMHONfT4znP\nc533eV/XpbTWCCGEcH9epgMIIYRwDCl8IYTwEFL4QgjhIaTwhRDCQ0jhCyGEh5DCF0IID2GTwldK\nfaeUOqaU2pLrujeUUgeVUhuylo62WJcQQoj8sdUW/gSgQx7Xj9JaN8xa5tpoXUIIIfLBJoWvtV4O\nnMnjR8oWty+EEKLg7D2G/7RSapNSarxSqqSd1yWEEOJf2LPwvwaqa63rA0eBUXZclxBCiBvwsdcN\na61P5Pp2HDA7r99TSsnBfIQQIh+01rc0bG7LLXxFrjF7pVRQrp91B7Zd7w+11rJozRtvvGE8g7Ms\ncl/IfSH3xb8v+WGTLXyl1CQgCghQSiUCbwB3KaXqA5nAfmCILdYlhBAif2xS+Frrh/K4eoItblsI\nIYRtyJ62TiQqKsp0BKch90UOuS9yyH1RMCq/Y0E2C6CUNp1BCCFcjVIKfYsf2tptlk5BValShYSE\nBNMxXFpISAj79+83HUMI4SScdgs/69XLQCL3IfehEO4rP1v4MoYvhBAeQgpfCCE8hBS+EEJ4CCl8\nIYTwEFL4NqK1JjQ0lH379pmOIoQQeZLCtxGlFB999BGVKlUyHUUIIfIk0zLdmNyHQrgvmZbpQFu3\nbmX8+PFMnz6dbt26sWjRIurWrcvff/8NwI8//khgYCCLFi1i8uTJDBw4kMTERMOphRCezGn3tL0Z\nykYnUMzPRvDYsWMZMWIEwcHBJCcn06ZNGxo0aEB6ejoA/fv3Z9y4cVy6dIk+ffpw/Phxpk6dyrBh\nw5g1axY+Pj4sXbqUyMhI5s6dy2uvvUZ4eLht/kHCI8Wfimdm3EyWJCwh7mQcSalJKKUI9g+mbvm6\ntKvWjvtr3o+/r7/pqMIQly58k6MV3bp1o2HDhrRu3ZqhQ4cC4OV19Rsmb29vatasCUDJkiVJSEjg\nwIEDREREEBoayv/+9z9GjBhBqVKlqFy5ssP/DcI9LNq3iHeXvUvsiVi61ezG4AaDiQiMIKBoAJk6\nk4PnDrLu8Dqm7pjK83OfZ0C9AbzS6hUC/QJNRxcO5tKFb1JYWBixsbHMmTOHxx57jEWLFuX5e97e\n3ld9n/2h7vHjxylRogSlSpXinnvusXte4X4Szyby/Nzn2Xx0M29FvUXvOr0p7F34H79Xvnh5bq9w\nO0MaDeFw8mFGLhtJrdG1GNl2JI82fBRlq7fKwunJGH4+ffnll5QoUYL+/fvz/PPPc+TIkRv+jdaa\nuLg4Nm/ezJw5c2jdujUA0dHR9o4r3MzU2Kk0HteYhkENiX06lv71+udZ9teq4F+BLzt/yZKBSxiz\nbgzdfu1G8qVkByQWzkC28PPJ19eX7777Dn9/f86fP8/Ro0dZuXIlFy5coHHjxsyaNYu4uDhGjhzJ\nkCFDmDRpEmfPnsXLywtvb29uu+02UlNTmTFjBsHBwab/OcJFZOpMXln4ClNipxD9YDSNgxvn63Zq\nl6vNqkdX8fQfT9NyQkuiH4ymUkmZUuzuZFqmG5P70L1czrjMgBkDOHD2ADP7zCSgWECBb1Nrzcd/\nf8zX674mZkAMIaVCbJBUOIJbHQ9fCJEjLSON3lN7o7VmwcMLKOJTxCa3q5TiPy3+g6+PL20ntiVm\nYAwVS1S0yW0L5yOFL4STS89Mp9/0fqRlpDGt97SbGqu/Vc81fY6LaRfp/HNnVgxeIVM33ZQM6bgx\nuQ9dn9aaJ/94kr1n9jLrwVk227K/3rqGRA/h6PmjTO89HW8v7xv/kTBG9rQVws18tuoz/j7wN7/3\n+t2uZQ9WgXzV+SvOXTrHW0vesuu6hBlS+EI4qT/i/+Cjvz9i9oOzHTbEUti7MJN7Tmb8hvEs3rfY\nIesUjiOFL4QTSkhKYPCswUztNdXhM2eCigfx/f3f0396f06mnHTouoV9yRi+G5P70DWlZaTR+vvW\ndK/Znf+0+I+xHC/+9SJHzh9hUo9JxjKI65MxfCHcwCsLXyGgaAAv3vGi0Rxvt3mb1YdW80f8H0Zz\nCNuRwhfCiSzcu5DJ2yfzw/0/4KXMPj2LFSrG2C5jeWrOU3L4BTchQzoFMGnSJI4cOcKaNWvo1q0b\nffr0MR3pKq5wH4ocyZeSiRwTyZh7xtCpRifTca4YPHMwJXxL8FnHz0xHEbnkZ0jHJoWvlPoO6AIc\n01rXzbquNPArEALsB3pprc/m8bcuWfh79uxhzpw5PPvss5w8eZIaNWqwceNGqlSpYjraFc5+H4qr\nPRH9BOmZ6YzvOt50lKucuHCCiK8jWDpwKbUCa5mOI7KYHMOfAHS45roRwAKtdTiwCHjZRutyCtu3\nb+ejjz4CoGzZsoSGhrJu3TrDqYSrmr9nPnN2zeGT9p+YjvIPgX6BvNzyZV6a/5LpKKKAbDako5QK\nAWbn2sKPA+7UWh9TSgUBMVrrmnn8nUtu4aenpxMXF0edOnUAqFixItHR0dSvX/+6fzNmzBguXLhA\n0aJF8fX15dFHHwXgl19+4fTp0xQuXBgvLy8eeeQRtm7dyurVqwkICGDixIlMnz79ljM6+30oLBfT\nLlJnTB2+6vSVUw3l5HY54zJ1vq7DF52+oGNoR9NxBM538LRyWutjAFrro0opm59eR71lmxM36Ddu\nvRR9fHyulH10dDSNGjW6UvZ5ncJwyJAhREdH88cff7Bx40bGjBnDo48+yvr161m8eDFjx44FYOjQ\noSxdupQpU6ZcdQrF692unBrR9b2//H0aBDVw2rIHa4esj9t/zEvzXqJdtXZy2AVXpbW2yYI1Vr8l\n1/enr/n5qev8nc7L9a53NmfPntU9e/bUycnJWmutExIS9K5du7TWWjds2FCfOXNGR0dH66FDh+r3\n3nvvH38/fPhw/emnn175fuzYsfrJJ5/UixYt0uXKldM9e/bUy5cvv+7tpqSkXDebq9yHniz+ZLwO\n+CBAJyYlmo5yQ5mZmbr5+Ob65y0/m44i9JXn9y31tD238I8ppcrrnCGd49f7xTfffPPK11FRUURF\nRdkxlm19+OGHjBs3juLFi5OQkEBIiLVX5LWnMJw/f36ewyupqamkpaVd+T4tLY20tLSrTqH4+OOP\ns2jRIipXriynRnQjWmue/fNZhrcY7hInH1FK8fZdb/PEH0/Qq3YvfLzkYLuOFBMTQ0xMTIFuw5Zj\n+FWwxvAjs77/AGsr/wOl1HCgtNZ6RB5/p/PK4Arjz1999RXNmjWjUqVKJCYmcvHiRcqVK8elS5fY\nuHEj+/bt46233iI6Oho/Pz/effddFixYAFjDQF26dGHZsmWMHj2ayZMnA/D444/TvXt3Fi9ezDvv\nvEOhQoUYO3YsdevWpWjRov+43S5dulw3nyvch55s2o5p/G/x/9g0ZBOFvAuZjnNTtNa0mdiG/nX7\nM7jBYNNxPJrJaZmTgCggADgGvAHMAKYAlYBE4AGtdVIef+uShb9ixYor56TVWqOUIjExkd9//53z\n589z2223ERcXR/PmzQkODqZx48Z8+eWXnDx5kurVqxMeHk7Tpk0BmDBhAikpKWRkZODt7c3TTz/N\n66+/ToUKFfD39+fYsWMUKlSI5OTkPG/3epz9PvRkl9IvEfF1BGO7jKVttbam49yS5YnL6TetH7ue\n3eUyL1TuyFjhF4SrFr4rkPvQeX268lMW7ltI9EOueQL7thPbMqDeAB6u97DpKB5LCl9cRe5D53T6\n4mnCvwpnycAlRARGmI6TL/P3zOeFv15g65NbjR8CwlPJwdOEcAHvLH2HHrV6uGzZA9xd7W6K+BSR\nA6u5GCl8IRxo9+nd/LD5B96Kcu0zSimlGN5iOCOXj5R3kS5ECl8IB3p10asMbTaU8sXLm45SYD1q\n9eD4heMsS1xmOoq4SVL4QjjI5qObWbJ/CUObDTUdxSa8vbx56Y6XGLVylOko4iZJ4QvhIK/HvM6I\nliPwK+xnOorN9K/bn+WJy9mftN90FHETnLbwQ0JCUErJUoAle69fYd7aQ2tZf3g9TzR6wnQUm/Ir\n7MfA+gP5eu3XpqOIm+C00zKFcCcdf+rI/TXvd7vCB9h7Zi9NxjUhcWgixQoVMx3HY8i0TCGc0LKE\nZew8tdNtD0VQrXQ1WlRuwc9bfjYdRdyAFL4QdqS15rXFr/HGnW9Q2Luw6Th282yTZ/lizRcyRdPJ\nSeELYUdLEpZwOPkw/er2Mx3FrtpWbUtaRhp/H/jbdBTxL6TwhbCjd5a+wystX3H7QwkrpXi04aOM\n2zDOdBTxL6TwhbCTVQdXsev0Lrffus82oN4AZsTN4GzqWdNRxHVI4QthJ+8ue5fhLYZ7zCGEA/0C\naV+9PZO2TjIdRVyHFL4QdrD56GbWH17vtjNzruexho/JsI4Tk8IXwg7eW/4eLzZ/kSI+RUxHcai2\n1dpyJvUM6w+vNx1F5EEKXwgbizsZx+J9ixnSaIjpKA7npbx4pMEjjN8w3nQUkQcpfCFs7P3l7/Nc\n0+coXri46ShGDKo/iF+3/8rFtIumo4hrSOELYUP7k/YzO342zzR5xnQUY4JLBNOoQiNmx882HUVc\nQwpfCBv6fNXnPNLgEUoVKWU6ilH96/Zn4uaJpmOIa8jB04SwkaTUJKp9Xo0tT26hYomKpuMYdf7y\neSqOqkj8s/GU8ytnOo5bkoOnCWHQ+A3j6VSjk8eXPUDxwsW5N/xeJm+bbDqKyEUKXwgbSMtI44vV\nX/Bi8xdNR3Ea/ev258ctP5qOIXKRwhfCBqbETqF6meo0vK2h6ShOo23Vthw6d4i4k3Gmo4gsUvhC\nFJDWmk9WfsKwZsNMR3Eq3l7ePBT5ED9ulq18ZyGFL0QBLU1YyoXLF7gn7B7TUZxO/7r9+WnrT2Tq\nTNNRBFL4QhTYJys/YWizoXgpeTpdq15QPfwL+7Pq4CrTUQRS+EIUyM6TO1l1cBX96/U3HcVp9a7d\nm1+3/Wo6hkAKX4gC+WzVZzzR6Ak5efe/eKD2A0yJnSLDOk7A7qfhUUrtB84CmUCa1rqJvdcphCOc\nTDnJ5O2TiXtaZqH8m5plaxLoF8iKxBW0CmllOo5Hc8QWfiYQpbVuIGUv3MmYtWPoXrM75YuXNx3F\n6fWu3Ztft8uwjmmOKHzloPUI4TCp6al8ve5rhjWXqZg3o1ftXkyNnUpGZobpKB7NEUWsgb+UUmuV\nUo85YH1C2N2krZOoH1Sf2uVqm47iEkLLhBJcIpilCUtNR/Fodh/DB+7QWh9VSgUC85VSO7TWy3P/\nwptvvnnl66ioKKKiohwQS4j80VozauUoPu3wqekoLqVXRC9+2/4bd1W9y3QUlxQTE0NMTEyBbsOh\nR8tUSr0BJGutR+W6To6WKVzK3N1zGb5gOJuGbEKpWzpYoUfbe2YvzcY34/CLh/HxcsS2pntzuqNl\nKqWKKaWKZ33tB7QHttlznULY26iVoxjWbJiU/S2qVroaVUpVIWZ/jOkoHsveY/jlgeVKqY3AKmC2\n1nqendcphN1sObaFbce30adOH9NRXNIDEQ8wNXaq6RgeS06AIsQtGDhjIGEBYbzS6hXTUVzS7tO7\naTWhFYeGHZJDURSQ0w3pCOFOjiQfYebOmTzR6AnTUVxWaJlQyhYrK8fWMUQKX4ib9NWar+gb2Zcy\nRcuYjuLSutXsxvQd003H8EhS+ELchAuXLzB2w1heaPaC6Sgur1vNbkyPm44M5TqeFL4QN+GHzT/Q\nsnJLQsuEmo7i8uoH1Sc9M51tx2XCnqNJ4QtxAxmZGXy66lM5X62NKKWubOULx5LCF+IGZsfPpnSR\n0rSo1MJ0FLfRrZYUvglS+ELcwCcrP+HF5i/KjlY21KJSCw6dO8S+M/tMR/EoUvhC/Is1h9aQeDaR\nHhE9TEdxK95e3nQN78qMuBmmo3gUKXwh/sWolaN4vunzcuwXO5BxfMeTwhfiOhKSEpi/dz6PNnzU\ndBS31LZaW7Yc28LxC8dNR/EYUvhCXMcXq79gUP1BlPAtYTqKWyriU4T21dsTHR9tOorHkMIXIg9n\nU8/y/ebvea7pc6ajuLV7w+6VwncgKXwh8jB+w3jaV29P5ZKVTUdxa51qdGLhvoWkpqeajuIRpPCF\nuEZaRhpfrPmCYc3kfLX2VrZYWSLLRbJk/xLTUTyCFL4Q15gaO5WqparSOLix6Sge4d6we5kdP9t0\nDI8ghS9ELlprPl75sRxGwYG6hHUhOj5aDqbmAFL4QuSyJGEJFy5f4J6we0xH8RgRgRF4KS85mJoD\nSOELkcvHf1tb93I2JsdRStElrIsM6ziAPKqFyLLjxA7WHV5H/3r9TUfxODI90zGk8IXIMmrlKJ5q\n/BRFfIqYjuJxWoe0ZvuJ7bLXrZ1J4QsBHDt/jKk7pvJkoydNR/FIvj6+3F3tbv7c9afpKG5NCl8I\nYPTa0fSp3YdAv0DTUTyWTM+0Pyl84fFS0lL4Zt03DG0+1HQUj9a5RmcW7F3A5YzLpqO4Lbc95mtS\nahKxJ2I5cPYAB88d5HDyYVLSUkjNSCUtIw2/Qn4UL1ycMkXLUKVUFaqWrkrNsjUpU7SM6ejCwb7f\n9D13VLqDsIAw01E8Wjm/ctQKrMWS/UtoV72d6ThuSZne2UEppQuaISMzgw1HNrB4/2JWHFjB5qOb\nOXXxFBGBEYSUDCHYP5gK/hUoXrg4RXyK4OPlQ0paCucvn+dkykn2Je1jX9I+dpzYQfni5Wka3JQW\nFe6iUcl70MlBHD8OJ07AuXOQnAznz1tLcjJcuABpaZCZCRkZOZcAhQtDkSLg65uzFC8OpUvnLKVK\nWZflysFtt0HRoja4U8VNy8jMoObomky4bwItK7c0HcftXL4MJ09az5/cl2fPWs+dlJSrL3eUfZdL\nhY5Ra/8XaA3Z1eDraz03ihSxLosWBT8/KFMGAgKsy+ylbFlrcfcTlCml0Frf0r/SZQv/zMUzRMdH\nMz1uOov3LybYP5g2VdvQqnIrGtzWgGqlq113LnV6OiQkWMv+/bm+Tshgz9k4jvuuIj1kHlSbR9GU\nMEKSHyJS96O8fwD+/lZpZy9+flCoEHh7g5dXziVYD/bUVLh0KWc5fx7OnPnncuIEHD5s3V5wMFSo\nYC2VK0P16hAaal2WK+f+D2RHmr5jOh+s+ICVj6yUUxjmw6lTEB9vPX8SE69eDhywNpKyCzgwMOfr\nUqWgWDHr8e7nl/P1wfRNjNzTk/F1d6NUzmP90iXruXTxYs5y4QKcPp2znDplXZ44Yf0sOBgqVrx6\nqVYNatSAqlWt560rc/vCT76UzJTYKfy6/VdWHlhJm6pt6F6rOx2qd6B88fL/+P1z5yAuzlp27sz5\neu9eKF8eqlSBkJCcy5AQq2Bvu8168KVlXmbJ/iX8sPkHouOj6RjakWHNh9EkuIlt74QsWlsP2kOH\nrPI/dMh6Iu3Zk7NcumQVf/XqEBEBdepA7doQFma9oxA3T2tN0/FNGdFyBN1rdTcdx2mlp1ulnv08\nio+3LnfutH4WFmYVaOXKOUulStblrW5pa60JHhXMkoFLqBFQI9+ZU1Ks59DBgzlLYqL1HNq1y3pu\nVapklX+NGhAebj2XIiOtdwmuwC0LX2vN0oSlTNg0gZk7Z3JnyJ30jexLpxqdKF64eNbvWMW4aVPO\nsnmz9UofHg41a169hIbe+tBJUmoSEzdP5JOVnxBaJpRXWr5C22ptC/JPz5ekJOtBu3s3xMbC9u2w\nbZv1769e3Sr/OnWgXj24/XbrXYJsuOZt4d6FPPPnM2x/arvsWZvl9GnYssV6/mQvO3ZYW8u1alnP\np/Bwq+TDw+3zjvORmY9QL6ieXc9FcOkS7Ntnlf+uXdaL2bZt1uLvbxV/7qV2befboHLKwldKdQQ+\nw5oR9J3W+oNrfp5n4SelJjFh4wRGrx1NEZ8iDG4wmL6RfSnnV55du2D1ali/Pqfg/fygfv2rl+rV\nc4ZXbCUtI41JWyfx7rJ3qVq6Kh+3+5jI8pG2XUk+pKZaW1zZD9pNm6z7x8sLGja0yj97qVhRXgQA\n7p54N/3q9mNg/YGmoxhx5gysXQtr1ljLxo3W2HpkpLXBkL3UqWMNXzrK1NipfLfxO/7s6/g5+dkb\nj1u35ixbtlgvDnXqQKNGOUtEBPgYnPbidIWvlPIC4oG2wGFgLdBHax2X63euKvydJ3fy5ZovmbR1\nEh1DO/Jw+LNkJDRjzRrF6tXWA9PfH5o2hcaNoUED60EZ6ODp02kZaXy7/lveXvo294Xfxwd3f0Dp\noqUdG+IGtLbeyq5ff/WitVX8TZtC8+bQpIn1wbEnWXtoLT1+68Hu53ZT2NvJNt3sIDXV2gjILvc1\na+DIEetx0KSJ9Vy6/XZreNPWG0m3Kik1iUqfVuL4S8cpWsg5ZjGcP2/df+vW5SwHDljdk/0C0KyZ\nNTzkqI0pZyz8ZsAbWutOWd+PAHTurXyllM7IzOCv3X/x2aovWHtwA429HqfY9ifZ+ncFTpyw7sym\nTa2lSRNrjN1ZJKUm8dqi15i2YxpfdPqCHrV6OPWHf1pb45fr1lnvklatsr6uWNF6wGYvtWub3Xqx\nt+6/dieqSpRbnsIwM9N6t5dd7KtXW8N/NWtaz5/spVYta5KBM2o9oTUvt3yZTjU6mY5yXefOwYYN\n1vNn7VrruXT+fM6GVLNm1v1csqR91u+Mhd8D6KC1fjzr+35AE631c7l+R5f6XxiXz/uRvvx5wtN7\n07xxkSsFX7Om8z4oc1uRuILHZj9GzbI1+bbLty61x2Z6uvVZwKpVOcvBg9YLbfYDt2lT64NudxB7\nIpa7friLfc/vo1ihYqbjFNjp0zkv3qtWWSVfunRO4TRpYr0TdqUpvyOXjeTI+SN80ekL01FuyeHD\nV/9frF9vTQbJ3pDq3Nn6PMQWnLHwewLtryn8xlrr53P9jpz1QAgh8uFWC9/eb9oPArnPAl0Rayz/\nKqZnCtna/D3zGTBjAAPqDeDtNm/j4+X6YyO5hwmyP0vZsSNnmCB7uK1mTfNjwP8mISmBhmMbsue5\nPZQqUsp0nBs6duzqd165h9+y333Vru0a74Jvha2mZ7qz/Awd23sL3xvYifWh7RFgDfCg1npHrt8p\n8J62zuj4heP0m9aPDJ3Bbz1/I6BYgOlINnfxYs4HgdkvArk/c8l+IXCmz1yenfMsxQoV44N2H9z4\nlx3sxImrP1xft87am7tp05yC96QP2B0xPdOVOd2QDlyZlvk5OdMy37/m525Z+GDttv/ywpeZGjuV\nGX1mULd8XdOR7O7kSesDrOwXgNWrrd3i69WzpspmT/ULC3P8VumR5CPU/ro2sU/HElQ8yLErz0Vr\na6x361brQ7/scj979uoptI0aWXuGOvM7JnsyOT3TFThl4d8wgBsXfraft/zMC3+9wLddvvW4PTq1\ntvZwzN6JJ3unuCNHrKGIevWgbt2cHXoqVbJfwb0w9wW8lBejOoyyzwrycPp0zr4R27ZZJb9tm/Ui\nWLv21QVvj/1GXJkzTs90JlL4Tmz94fV0ndyV4S2Gy1tUrKGK7D06t23L2VX/zBlrT+jsF4AaNaxd\n9ENCrNkN+d3b8XDyYep8XcfmW/eZmda7mr17rb2fcy+7dlkH1qtTJ2eJjLQuHb3fiKtyhemZpkjh\nO7n9Sfvp+FNHuoZ35f2735fd+fOQnHz1sVp27845GNeRI1ZRhoRY7wTKlbO+zz4oV/Zl7gPbFSli\n7Qjz/J/P4+3l/a9b91pbU1RTU63hldwH5jpzxjrO0dGj1n4MBw9al0eOWDsCVq1qvVCFhlovUtlf\nBwbKXs0F4arTMx1BCt8FnEo5RdfJXQkpGcKE+ybg6+NrOpLLSE+3Cjb7SIzZh63OvZw6Ze38cuGC\ndZmWBkUCD3NxUB3K/hpLoUtBV47CqJS1hZ6amnMkRrDmq5csefUhd8uUsT4sDQrKOQpj9lFNi8gp\ncO1m09FNPDDlAXY9u8t0FKcjhe8iLqZdpO+0vqSkpTCt9zS32PnHWaWnwzN/PAeZhXi96SdobZV8\n9rHWvbxyjrFepIh7713sirKnZy4dtJTQMqGm4zgVKXwXkp6ZzqCZgzh47iCz+szC39ffdCS3dOjc\nISLHRLLj6R15HkJbOL/BMwfTIKgBzzZ91nQUp5KfwpdBZEN8vHz44f4fqFGmBu1/ak9SapLpSG5p\n5PKRDKo/SMrehXWu0Zk/d8vUTFuQwjfIS3nxbZdvaVKhCW1+aMPJlJOmI7mVvWf2MnnbZEa0HGE6\niiiAu6vdzbLEZVxMu2g6isuTwjdMKcVnHT+jQ/UO3PXDXZy4cMJ0JLfxv8X/47mmz7nUgezEP5Uq\nUooGQQ1YkrDEdBSXJ4XvBJRSvNf2Pe4Nu5d2P7bj9MXTpiO5vE1HN7Fo3yKGNR9mOoqwgY6hHZm7\ne67pGC5PCt9JKKV4t827tKvWjnY/tpMx/QJ6eeHLvNrq1SunwRSuTQrfNqTwnYhSig/bfUjLSi3p\n8FMHzl06ZzqSS4rZH0P8qXgev/1x01GEjdQPqk9SahL7zuwzHcWlSeE7mewx/dtvu51OP3ci+VKy\n6UguRWvN8AXDefuutz3i1IWewkt50SG0g2zlF5AUvhNSSvFV56+IKBvBPZPu4cLlC6YjuYxft/9K\nWkYafer0MR1F2FjH6h2Zu0cKvyCk8J2Ul/Li23u/pWrpqtz/6/2kpqeajuT0UtJS+O/8//J5x8/l\nOEVuqF31dsTsj+FyxmXTUVyWPCucmJfy4ruu3xFQNICev/WUB/oNfLTiI+6odAetQlqZjiLsoGyx\nstQqW4vlictNR3FZUvhOzsfLhx+7/Ugh70I8+PuDpGemm47klBLPJvLlmi/5sN2HpqMIO5LZOgUj\nhe8CCnkXYnKPyaSkpfDw9IfJyMwwHcnpDF8wnGeaPEPlkpVv/MvCZUnhF4wUvovw9fFlWq9pHLtw\njMdmP0Y4Qzu+AAAQL0lEQVSmzjQdyWksTVjKisQV/LfFf01HEXbWuEJjDicf5uC5g6ajuCQpfBdS\ntFBRZvWZRfypeJ6Z8wyeeJTRa11Kv8SQ6CF81vEzOcy0B/D28qZd9Xb8tfsv01FckhS+i/Er7Mec\nvnNYd3gdL8570eNL/8MVHxIWEEa3mt1MRxEOItMz808K3wWV8C3BX/3+YvH+xby26DXTcYyJPxXP\n56s/58tOX6LkPIIeo0NoBxbuXSgTGPJBCt9FlS5amnn95jFj5wzeWfqO6TgOp7XmyT+e5NVWr8oH\ntR4mqHgQVUpVYdXBVaajuBwpfBcW6BfIwocXMnHzRD75+xPTcRxq3IZxnE09K2dB8lAyWyd/pPBd\nXFDxIBY+vJDRa0czes1o03EcYu+Zvby66FUmdpuIj5echNYTSeHnjxS+G6hUshILH17IBys+4LsN\n35mOY1cZmRkMnDGQES1GEBEYYTqOMKR5xebsObOHY+ePmY7iUqTw3UTV0lVZ8PACXo95nZ+3/Gw6\njt18tuozlFK80OwF01GEQYW8C9Gmahvm7ZlnOopLkcJ3I2EBYczrN4+X5r/E77G/m45jcxuObOD9\nFe/z/X3f4+3lbTqOMEymZ946KXw3U7tcbf7s+ydPzXmK6Pho03Fs5mzqWXpN6cXozqOpWrqq6TjC\nCXQM7ci8PfPkUCO3wG6Fr5R6Qyl1UCm1IWvpaK91iavVD6pP9IPRDJ45mDm75piOU2BaawbPGkzH\n0I70qt3LdBzhJCqVrER5v/KsP7LedBSXYe8t/FFa64ZZi7z3cqDGwY2Z9eAsBs8czORtk03HKZBP\nV31KQlICn7T3rKmn4sZkts6tsXfhy+6PBjWr2Iz5/efz0ryX+GbdN6bj5MucXXP4+O+P+b3X7/j6\n+JqOI5yMFP6tsXfhP62U2qSUGq+UKmnndYk8RJaPZMnAJXy44kNGLhvpUsfe2XZ8GwNmDOD3Xr8T\nUirEdBzhhFpVbsX2E9s5ffG06SguoUB7rSil5gPlc18FaOBV4Gvg/2mttVLqHWAU8Ehet/Pmm29e\n+ToqKoqoqKiCxBLXqF6mOssHL6f9j+05ev4oozqMcvpZLofOHeLeX+7lsw6f0bxSc9NxhJPy9fGl\ndUhr5u+ZT+86vU3HsauYmBhiYmIKdBvKEVt8SqkQYLbWum4eP9OutNXpys5cPMMDUx7A18eXyT0m\n4+/rbzpSnk5cOEHr71szoN4ARrQcYTqOcHKj14xm3ZF1TLhvgukoDqWUQmt9S8Pm9pylE5Tr2+7A\nNnutS9yc0kVL82ffP6noX5EW/9eChKQE05H+ISk1iQ4/daB7ze5S9uKmdKrRibm758pJgW6CPcfw\nP1RKbVFKbQLuBIbacV3iJhXyLsQ3Xb5hcIPBNPuuGQv2LjAd6YoTF05w98S7aVW5Fe+08bwjgIr8\nqVa6Gv6F/dlybIvpKE7PIUM6/xpAhnSMWbRvEf2m9eOxho/x+p2vGx3XP3D2AO1+bEfPiJ68fdfb\ncnx7cUue+/M5KvhX8Kh3hU41pCOcX5uqbdgwZAPLEpfR/qf2JJ5NNJJj1cFV3PF/d/D47Y/zTpt3\npOzFLesU2kmmZ94EKXwPF1Q8iPn959OmShtuH3s736771mFjoVprxq0fR9dfujLmnjEMaz7MIesV\n7ufOKney/sh6zl06ZzqKU5MhHXHF9uPbGTxrMEV8ivB5x8+pH1Tfbus6dv4YQ6KHsOfMHqY+MJXw\nsuF2W5fwDB1+6sATtz9Bt1qecX5jGdIRBVK7XG3+Hvw3vWv3puNPHRk0c5DNh3nSM9P5Zt031Pum\nHhGBEax7bJ2UvbCJjtVlr9sbkcIXV/H28uapxk+x85mdBPkFUf+b+vSb1o9NRzcV6HYvZ1zml62/\nUHdMXX7b/htz+s7hvbbvyeEShM10qtGJP3f/6VJ7kzuaDOmIf5WUmsTY9WP5cs2XBBQNoG9kXzrX\n6ExEYMQNP1zN1JmsPbSWmTtn8v2m76lZtiYv3fESnUI7yQezwua01lT9vCpz+s7xiLOh5WdIRwpf\n3JSMzAyWJixl8rbJzN87nwtpF2h4W0PCA8KpVKISfoX98FbenEk9w7Hzx9hyfAsbj2yknF857gu/\nj4ciHyKyfKTpf4Zwc09EP0FYQJhHTACQwhcOk5CUwJZjW9h5aieHkw+TkpZCWkYaZYqWIdAvkDrl\n6lA/qD4V/CuYjio8yMy4mYxeO5p5/d3/1IdS+EIIj5Z8KZkKoypw9MWj+BX2Mx3HrmSWjhDCo/n7\n+tOoQiNi9seYjuKUpPCFEG5FpmdenxS+EMKtZE/PFP8khS+EcCuR5SJJSUth9+ndpqM4HSl8IYRb\nUUrJuW6vQwpfCOF25OiZeZPCF0K4nbur3c3ShKWkpqeajuJUpPCFEG6ndNHSRJaPZFnCMtNRnIoU\nvhDCLcmwzj9J4Qsh3FLH0I4yPfMaUvhCCLfU8LaGnEw5SUJSgukoTkMKXwjhlryUF+2rt+evPX+Z\njuI0pPCFEG5LxvGvJoUvhHBb7au3Z9G+RVzOuGw6ilOQwhdCuK1Av0BqBNRg5YGVpqM4BSl8IYRb\nk2GdHFL4Qgi3JtMzc0jhCyHcWpPgJiSeTeRw8mHTUYyTwhdCuDUfLx/aVW/HX7tlemaBCl8p1VMp\ntU0plaGUanjNz15WSu1SSu1QSrUvWEwhhMi/zqGd+WPXH6ZjGFfQLfytQDdgSe4rlVK1gF5ALaAT\n8LVS6pZOtiuEELbSuUZnFuxd4PFHzyxQ4Wutd2qtdwHXlvl9wGStdbrWej+wC2hSkHUJIUR+BfoF\nElk+0uNPbm6vMfxg4ECu7w9lXSeEEEZ0DevKzLiZpmMYdcPCV0rNV0ptybVszbq899/+LI/rdP5j\nCiFEwXQN78qs+Flo7blV5HOjX9Bat8vH7R4EKuX6viJw3TlRb7755pWvo6KiiIqKyscqhRDi+sLL\nhuNf2J8NRzZwe4XbTce5ZTExMcTExBToNpQtXu2UUouBl7TW67O+jwB+BppiDeXMB2roPFamlMrr\naiGEsLn/zv8vRX2K8tZdb5mOUmBKKbTWtzQZpqDTMu9XSh0AmgHRSqk/AbTWscBvQCwwB3hKWl0I\nYVrX8K7M3Om54/g22cIvUADZwhdCOEhGZgZBnwSx7rF1hJQKMR2nQBy+hS+EEK7E28ube2rcw+z4\n2aajGCGFL4TwKPeF38esnbNMxzBCCl8I4VHaVW/HqoOrOJt61nQUh5PCF0J4lOKFi9MqpJVHHiNf\nCl8I4XG6hnVlxs4ZpmM4nBS+EMLj3FfzPubunsul9EumoziUFL4QwuMEFQ+ibvm6zN8733QUh5LC\nF0J4pB61ejA1dqrpGA4lhS+E8Ejda3Vndvxs0jLSTEdxGCl8IYRHqliiImEBYSzev9h0FIeRwhdC\neCxPG9aRwhdCeKwetXowI24GGZkZpqM4hBS+EMJjVS1dlUolK7EscZnpKA4hhS+E8Gg9avXg99jf\nTcdwCCl8IYRH6xnRk2lx08jUmaaj2J0UvhDCo4UFhBFQNIAViStMR7E7KXwhhMd7KPIhftn2i+kY\ndieFL4TweH3q9GFK7BS33wlLCl8I4fGqlKpCWECY2x9bRwpfCCGAB+s8yKStk0zHsCspfCGEAB6I\neIDo+GhS0lJMR7EbKXwhhADKFy9P04pNmb3TfU9wLoUvhBBZHqrzEJO2ue+wjhS+EEJk6VarGzH7\nYzh98bTpKHYhhS+EEFlK+JagQ/UO/LrtV9NR7EIKXwghchlUfxATNk0wHcMupPCFECKX9tXbcyj5\nENuPbzcdxeak8IUQIhdvL28ervuwW27lF6jwlVI9lVLblFIZSqmGua4PUUqlKKU2ZC1fFzyqEEI4\nxqAGg/hpy09ud6iFgm7hbwW6AUvy+NlurXXDrOWpAq7HI8TExJiO4DTkvsgh90UOR90XYQFhhJYJ\nZc6uOQ5Zn6MUqPC11ju11rsAlceP87pO/At5YueQ+yKH3Bc5HHlfDG4w2O2Gdew5hl9FKbVeKbVY\nKdXSjusRQgibeyDiAZYkLOHo+aOmo9jMDQtfKTVfKbUl17I16/Lef/mzw0BlrfXtwIvAJKVUcVuF\nFkIIe/P39adXRC/GrR9nOorNKK11wW9EqcXAi1rrDbf6c6VUwQMIIYQH0lrf0tC5jw3XfWXFSqmy\nwGmtdaZSqhoQCuzN649uNbAQQoj8Kei0zPuVUgeAZkC0UurPrB+1BrYopTYCvwFDtNZJBYsqhBCi\nIGwypCOEEML5Gd3TVinVUSkVp5SKV0oNN5nFJKVURaXUIqVUbNaH4s+ZzmSaUsora6e9WaazmKSU\nKqmUmqKU2qGU2q6Uamo6kylKqaFZO3puUUr9rJQqbDqToyilvlNKHVNKbcl1XWml1Dyl1E6l1F9K\nqZI3uh1jha+U8gK+AjoAtYEHlVI1TeUxLB0YprWOAJoDT3vwfZHteSDWdAgn8DkwR2tdC6gH7DCc\nxwilVAXgWaCh1rou1uePfcymcqgJWF2Z2whggdY6HFgEvHyjGzG5hd8E2KW1TtBapwGTgfsM5jFG\na31Ua70p6+vzWE/qYLOpzFFKVQQ6A+NNZzFJKeUPtNJaTwDQWqdrrc8ZjmWSN+CnlPIBimFN//YI\nWuvlwJlrrr4P+CHr6x+A+290OyYLPxg4kOv7g3hwyWVTSlUB6gOrzSYx6lPgP4Cnf8BUDTiplJqQ\nNbw1VilV1HQoE7TWh4FPgETgEJCktV5gNpVx5bTWx8DaaAQCb/QHJgs/r+mYHv0Ez9o5bSrwfNaW\nvsdRSt0DHMt6x6Pw7EN0+AANgdFa64ZACtbbeI+jlCqFtUUbAlQAiiulHjKbyvWYLPyDQOVc31fE\ng96iXSvrbepU4Eet9UzTeQxqAXRVSu0FfgHuUkpNNJzJlIPAAa31uqzvp2K9AHiiu4G9WuvTWusM\nYBpwh+FMph1TSpUHUEoFAcdv9AcmC38tEJp1KOXCWB/AePKMjP8DYrXWn5sOYpLW+hWtdWWtdTWs\nx8QirfXDpnOZkPV2/YBSKizrqrZ47gfZiUAzpVQRpZTCui887QPsa9/xzgIGZn09ALjhhqIt97S9\nJVrrDKXUM8A8rBee77TWnvYfCIBSqgXQF9iatbOaBl7RWs81m0w4geeAn5VShbD2Vh9kOI8RWus1\nSqmpwEYgLetyrNlUjqOUmgREAQFKqUTgDeB9YIpSajDWC+IDN7wd2fFKCCE8g5ziUAghPIQUvhBC\neAgpfCGE8BBS+EII4SGk8IUQwkNI4QshhIeQwhdCCA8hhS+EEB5CCl8IITyEsUMrCOGslFLeQG+s\nwxMfwDp3w8da631GgwlRQLKFL8Q/1cM6MuVerINVTQGOGE0khA1I4QtxDa31Bq31ZazTTS7RWsdo\nrVNN5xKioKTwhbiGUqqxUioAqK213qeUamU6kxC2IGP4QvxTR+Ao8LdS6n7gpOE8QtiEHB5ZCCE8\nhAzpCCGEh5DCF0IIDyGFL4QQHkIKXwghPIQUvhBCeAgpfCGE8BBS+EII4SGk8IUQwkP8f+7C6Men\nqrcVAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pylab import * \n", "#from scipy import *\n", "\n", "x = linspace(0,3*pi,1000)\n", "yL = sin(x)\n", "yR = 2*x*cos(x)\n", "\n", "figure()\n", "plot(x,yL,label=r'$\\sin x$')\n", "plot(x,yR,label=r'$2x\\cos x$')\n", "legend(loc='upper left')\n", "ylim(-15,15)\n", "xlabel(r'$x$')\n", "axhline(y=0, c=\"k\") # draw horizontal line at y=0\n", "show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the graph above, it is possible to find approximate solutions. There is a solution at $x=0$. You can also see that there are solutions between $n\\pi$ and $(n+1)\\pi$ for integer values of $n$. \n", "Another way to find the solution graphically is to plot the difference of the two sides of the original equation. If we define the function\n", "$$f(x) = \\sin x - 2x\\cos x,$$ \n", "the original equation has a solution where $f(x)=0$. These are known as the roots of $f(x)$. It is slightly easier to find the solutions by looking at a graph of this funciton as shown below." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ntjY0uJhTAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = linspace(0,3*pi,1000)\n", "fx = sin(x) - 2*x*cos(x)\n", "\n", "figure()\n", "plot(x,fx)\n", "#ylim(-15,15)\n", "xlabel(r'$x$')\n", "ylabel(r'$f(x)$')\n", "axhline(y=0, c=\"k\") # draw horizontal line at y=0\n", "show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are several functions in the **`scipy.optimize`** library for finding the roots of a function. For all of the methods, you must define the function whose roots you want to find. In general, you must know the approximate location of the root. \n", " \n", "First, you can use the **`optimize.brentq`** function if you know values that bracket the root. As mentioned above, the roots of the example function $f(x)$ are between $n\\pi$ and $(n+1)\\pi$ for integer values of $n$." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0\n", "4.6042167772\n", "7.78988375114\n", "10.9499436485\n", "14.1017251336\n", "17.2497818346\n", "20.3958423573\n", "23.5407082923\n", "26.6848024909\n", "29.8283692131\n" ] } ], "source": [ "from scipy import optimize\n", "\n", "# Define the function\n", "def f(x):\n", " return sin(x) - 2*x*cos(x)\n", "\n", "# The function has roots between 0, pi, 2*pi, etc.\n", "for n in arange(10):\n", " print(optimize.brentq(f, n*pi, (n+1)*pi))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that for the range 0 to $\\pi$, the function found the root $x=0$, not the root near $x=1$. The other root can be found by changing the lower limit of the range slightly as shown below." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.16556118521\n" ] } ], "source": [ "print(optimize.brentq(f,0.1,pi))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function $f(x)$ must have opposite signs at the two limits given or the the root-finding function will fail as shown below." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "ename": "ValueError", "evalue": "f(a) and f(b) must have different signs", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moptimize\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbrentq\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m8\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m/projects/sage/sage-7.3/local/lib/python2.7/site-packages/scipy/optimize/zeros.pyc\u001b[0m in \u001b[0;36mbrentq\u001b[1;34m(f, a, b, args, xtol, rtol, maxiter, full_output, disp)\u001b[0m\n\u001b[0;32m 436\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mrtol\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0m_rtol\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 437\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"rtol too small (%g < %g)\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mrtol\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_rtol\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 438\u001b[1;33m \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_zeros\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_brentq\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mb\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mxtol\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mrtol\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mmaxiter\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mfull_output\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdisp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 439\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresults_c\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfull_output\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 440\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mValueError\u001b[0m: f(a) and f(b) must have different signs" ] } ], "source": [ "print(optimize.brentq(f,4,8))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Second, you can use the **`optimize.fsolve`** function if you know approximate values of the roots. In the example below, initial guesses of $x\\approx (n+\\frac{1}{2})\\pi$ for integers $n$ from 0 to 9 are used." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 1.16556119 4.60421678 7.78988375 10.94994365 14.10172513\n", " 17.24978183 20.39584236 23.54070829 26.68480249 29.82836921]\n" ] } ], "source": [ "n = arange(10) # make a list of integers from 0 to 9 \n", "guesses = (n+0.5)*pi # make a list of guesses\n", "print(optimize.fsolve(f,guesses))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Additional Documentation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "More information is available at \n", "http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.brentq.html \n", "http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fsolve.html" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2 (SageMath)", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }