{ "metadata": { "name": "", "signature": "sha256:0da45ed7b3e1dc2524c5c7354bc848e07b372ec94aa50d34a6341368ff376230" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Bisection method" ] }, { "cell_type": "code", "collapsed": true, "input": [ "from numpy import exp,sin,linspace,sign,abs\n", "from matplotlib.pyplot import plot,grid,xlabel,ylabel" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "def fun(x):\n", " #f = x**2 - 4*x*np.sin(x) + (2*np.sin(x))**2\n", " f = exp(x) - sin(x)\n", " return f" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "x=linspace(-4,-2,100)\n", "f=fun(x)\n", "plot(x,f,'r-')\n", "grid(True)\n", "xlabel('x')\n", "ylabel('f')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "svg": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "# Initial interval [a,b]\n", "a, b = -4, -2\n", "\n", "M=100 # Maximum number of iterations\n", "eps=1.0e-4 # Tolerance on the interval\n", "delta=1.0e-4 # Tolerance on the function\n", "\n", "fa = fun(a)\n", "fb = fun(b)\n", "sa = sign(fa)\n", "sb = sign(fb)\n", "\n", "for i in range(M):\n", " e = b-a\n", " c = a + 0.5*e\n", " if abs(e) < eps*abs(c):\n", " print \"Interval size is below tolerance\\n\"\n", " break\n", " fc = fun(c)\n", " if abs(fc) < delta:\n", " print \"Function value is below tolerance\\n\"\n", " break\n", " sc = sign(fc)\n", " if sa != sc:\n", " b = c\n", " fb= fc\n", " sb= sc\n", " else:\n", " a = c\n", " fa= fc\n", " sa= sc\n", " print \"{0:5d} {1:16.8e} {2:16.8e} {3:16.8e}\".format(i+1,c,np.abs(b-a),np.abs(fc))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " 1 -3.00000000e+00 1.00000000e+00 1.90907076e-01\n", " 2 -3.50000000e+00 5.00000000e-01 3.20585844e-01\n", " 3 -3.25000000e+00 2.50000000e-01 6.94209267e-02\n", " 4 -3.12500000e+00 1.25000000e-01 6.05288259e-02\n", " 5 -3.18750000e+00 6.25000000e-02 4.61629389e-03\n", " 6 -3.15625000e+00 3.12500000e-02 2.79283147e-02\n", " 7 -3.17187500e+00 1.56250000e-02 1.16471966e-02\n", " 8 -3.17968750e+00 7.81250000e-03 3.51301957e-03\n", " 9 -3.18359375e+00 3.90625000e-03 5.52273640e-04\n", " 10 -3.18164062e+00 1.95312500e-03 1.48021741e-03\n", " 11 -3.18261719e+00 9.76562500e-04 4.63932552e-04\n", "Function value is below tolerance\n", "\n" ] } ], "prompt_number": 8 } ], "metadata": {} } ] }