{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Convergence of Newton's Method" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as pt" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def f(x):\n", " return np.exp(x) - 2" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xgrid = np.linspace(-2, 3, 1000)\n", "pt.grid()\n", "pt.plot(xgrid, f(xgrid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What's the true solution of $f(x)=0$?" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.69314718056\n", "0.0\n" ] } ], "source": [ "xtrue = np.log(2)\n", "print(xtrue)\n", "print(f(xtrue))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's run Newton's method and keep track of the errors:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "errors = []\n", "x = 2\n", "xbefore = 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At each iteration, print the current guess and the error." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nan\n", "nan\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "-c:1: RuntimeWarning: invalid value encountered in double_scalars\n" ] } ], "source": [ "slope = (f(x)-f(xbefore))/(x-xbefore)\n", "\n", "xbefore = x\n", "x = x - f(x)/slope\n", "print(x)\n", "errors.append(abs(x-xtrue))\n", "print(errors[-1])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.882400077493\n", "0.411823511031\n", "0.147482044876\n", "0.0276859623403\n", "0.00198268429064\n", "2.73106724006e-05\n", "2.70651508982e-08\n", "3.69593244898e-13\n", "1.11022302463e-16\n", "1.11022302463e-16\n", "nan\n" ] } ], "source": [ "for err in errors:\n", " print(err)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Do you have a hypothesis about the order of convergence?" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Does not quite double the number of digits each round--unclear." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "------------\n", "Let's check:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.504224909965\n", "0.619635842142\n", "0.612688428557\n", "0.657169643929\n", "0.644727394358\n", "0.655276572424\n", "0.648759771781\n", "14482.1405299\n", "7243300082.99\n", "nan\n" ] } ], "source": [ "for i in range(len(errors)-1):\n", " print(errors[i+1]/errors[i]**1.618)" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 0 }