{"metadata": {"signature": "sha256:b526608195a916ec80a71e2cfc92be9570ffc1b88734ea439b0ba563efc2bd2c", "name": ""}, "nbformat": 3, "nbformat_minor": 0, "worksheets": [{"metadata": {}, "cells": [{"cell_type": "markdown", "source": ["# Finite differences vs Noise"], "metadata": {}}, {"metadata": {}, "language": "python", "prompt_number": 2, "cell_type": "code", "outputs": [], "input": ["import numpy as np\n", "import numpy.linalg as la\n", "import matplotlib.pyplot as pt"], "collapsed": false}, {"metadata": {}, "language": "python", "prompt_number": 10, "cell_type": "code", "outputs": [], "input": ["def f(x):\n", " return np.sin(2*x)\n", "def df(x):\n", " return 2*np.cos(2*x)"], "collapsed": false}, {"cell_type": "markdown", "source": ["Here's a pretty simple function and its derivative:"], "metadata": {}}, {"metadata": {}, "language": "python", "prompt_number": 15, "cell_type": "code", "outputs": [{"metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [""]}, {"metadata": {}, "output_type": "display_data", "png": "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\n", "text": [""]}], "input": ["plot_x = np.linspace(-1, 1, 200)\n", "\n", "pt.plot(plot_x, f(plot_x), label=\"f\")\n", "pt.plot(plot_x, df(plot_x), label=\"df/dx\")\n", "pt.grid()\n", "pt.legend()"], "collapsed": false}, {"cell_type": "markdown", "source": ["Now what happens to our numerical differentiation if\n", "**our function values have a slight amount of error**?"], "metadata": {}}, {"metadata": {}, "language": "python", "prompt_number": 44, "cell_type": "code", "outputs": [{"metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [""]}, {"metadata": {}, "output_type": "display_data", "png": "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\nQmCC\n", "text": [""]}], "input": ["\n", "# set up grid\n", "n = 10\n", "x = np.linspace(-1, 1, n)\n", "h = x[1] - x[0]\n", "x_df_result = x[1:-1] # chop off first, last point\n", "\n", "# evaluate f, perturb data, finite differences of f\n", "f_x = f(x)\n", "\n", "f_x += 0.025*np.random.randn(n)\n", "\n", "df_num_x = (f_x[2:] - f_x[:-2])/(2*h)\n", "\n", "# plot\n", "pt.plot(x, f_x, \"o-\", label=\"f\")\n", "pt.plot(plot_x, df(plot_x), label=\"df/dx\")\n", "pt.plot(x_df_result, df_num_x, label=\"df/dx num\")\n", "pt.grid()\n", "pt.legend(loc=\"best\")"], "collapsed": false}, {"cell_type": "markdown", "source": ["* Now what happens if you set `n = 100` instead of `n = 10`?"], "metadata": {}}]}]}