{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import os\n", "import sys\n", "import glob\n", "import operator as op\n", "import itertools as it\n", "from functools import reduce, partial\n", "import numpy as np\n", "import pandas as pd\n", "from pandas import DataFrame, Series\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "sns.set_context(\"notebook\", font_scale=1.5)\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Homework 06\n", "====\n", "\n", "Write code to solve all problems. The grading rubric includes the following criteria:\n", "\n", "- Correctness\n", "- Readability\n", "- Efficiency\n", "\n", "Please do not copy answers found on the web or elsewhere as it will not benefit your learning. Searching the web for general references etc. is OK. Some discussion with friends is fine too - but again, do not just copy their answer. \n", "\n", "**Honor Code: By submitting this assignment, you certify that this is your original work.**" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Background for Exercises 1 and 2\n", "----\n", "\n", "The first 2 exercises are about using Newton's method to find the cube roots of unity - find $z$ such that $z^3 = 1$. From the fundamental theorem of algebra, we know there must be exactly 3 complex roots since this is a degree 3 polynomial.\n", "\n", "We start with Euler's fabulous equation\n", "$$\n", "e^{ix} = \\cos x + i \\sin x\n", "$$\n", "\n", "Raising $e^{ix}$ to the $n$th power where $n$ is an integer, we get from Euler's formula with $nx$ substituting for $x$\n", "$$\n", "(e^{ix})^n = e^{i(nx)} = \\cos nx + i \\sin nx\n", "$$\n", "\n", "Whenever $nx$ is an integer multiple of $2\\pi$ (i.e. $n=2\\pi k$), we have\n", "$$\n", "\\cos nx + i \\sin nx = 1\n", "$$\n", "\n", "So\n", "$$\n", "e^{2\\pi i \\frac{k}{n}}\n", "$$\n", "is a root of 1 whenever $k/n = 0, 1, 2, \\ldots$.\n", "\n", "So the cube roots of unity are $1, e^{2\\pi i/3}, e^{4\\pi i/3}$. \n", "\n", "While we can do this analytically, the idea is to use Newton's method to find the basins of attraction for these roots, and in the process, discover some rather perplexing behavior of Newton's method.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sympy import Symbol, exp, I, pi, N, expand\n", "from sympy import init_printing \n", "init_printing()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAF4AAAAvBAMAAACYgmA5AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMlTvq5l2ZiK7\niUTiBfEGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB6klEQVRIDd2UvUvDQBjGnzTaNsa2QQcHB6UI\nHRysCDqJjm46iU71Axz9wEVEaBzEDg4dFQf7Dwh+IIgidNBNpCiKCMWOTmrRgiBa7y6aJpcLaVdf\naPo+z/O78F5IDqim1DKt12pQxgQKVaMMPKgNx1ptvBSvjQ+O4Cx/Qdas2NaNajZZEc1QdSQywHLF\ng7SUdOMfoJQQcQy148KT8cOzaGu33Jy1brySoTGdx14i/pkgMsWkfkibadsCAa9MEWKL/NSbVYTC\nE178/k4BMDZ6VzgKtnvxaMuiIcco/6QW8ZwHwU/IGhlnD40lJEhnKcH8UD+wS5BIkfIxyUIDIh5J\nrZtA/izkT6kU8uaHb3UCNWSQSIdfT6z8+lwsY9VG75tiQz+lrsjrI8j5FfUfvOOhOz1yGo9XwViR\nf8w39dDqAMwj7zoa7Y1GY3T/EWZaL9anUun/8fOpbPJ44/xPcPtVU5eDf5H5L83jsfCrWk2XNS0I\nfdsdogIa/BMOlxkLwIwj8ccReHe4zJgGkoN85Cu68l2agCfr5SJ/E1MP2I8ew3/JmTnXhL84g8k+\nkck8eV4QBXWBaVgpUbIpMpmn6IKoXsepwKbWGD1w+RoCtnnP0HU6FAev9ufX42L+MH+/6Eh85LNz\n4bvK5bdf/gf9Wn/HfH3osAAAAABJRU5ErkJggg==\n", "text/latex": [ "$$- \\frac{1}{2} + \\frac{\\sqrt{3} i}{2}$$" ], "text/plain": [ " ___ \n", " 1 ╲╱ 3 ⋅ⅈ\n", "- ─ + ───────\n", " 2 2 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expand(exp(2*pi*I/3), complex=True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAF4AAAAvBAMAAACYgmA5AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMlTvq5l2ZiK7\niUTiBfEGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB0ElEQVRIDe2Uv0sCYRjHv+flj/NSjxoabQgc\nGjQamiTHtpqizTJoLKMlIvAaQocGR6NB/4GgHwRRBA61RQRRRCA5NlVSgiBl770Xenfve5zO9YDy\nPp/v5zmek/OAbkpuafXejUodb7VrlYpHvenY7s0XYr35vhlcVK7IzKZpblYxtZ1mELKKZAnY6DAI\n6xk7/wlSHSFmqaKNT9YPLiM8bLg4Pdr5UkmLtX3MxfNfiSJqmhCHUMibBji+lCLGLvnId1sIBOed\n/MNiFdBv9KF64ht28hEuw39LLc+CEnLcB74mRIWsc4D+OpLkZCjO/pAb2CdKqKb5EcFgAzwfGWWM\nSJ4yxKZQDzj70/cqkfwlJPPB9zOjn12JlIy9fnal6NIvuRvy+HBy64S7YSUO/ahD/h+bfoGBca1G\ngPYrr03IY0Oh8cs0+7ea051LmxuWc9cJJhLSeK4ylIIhBL6ZxKvAM89QClaBJSbxxOD9ZCgFi0Am\nYY1cNVs/qnB8Mi/WrBdp95PmV4/O327bueUQ/LIA2k7wIGVimhP5VA7UUY6XFHiQMknlRG4V5xys\noTnthWutKWDPyvS+T4XE+HK8ko3x/ePK4xqTuMjfzsaPtlofv/4PlRp6/m+SYOwAAAAASUVORK5C\nYII=\n", "text/latex": [ "$$- \\frac{1}{2} - \\frac{\\sqrt{3} i}{2}$$" ], "text/plain": [ " ___ \n", " 1 ╲╱ 3 ⋅ⅈ\n", "- ─ - ───────\n", " 2 2 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expand(exp(4*pi*I/3), complex=True)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nWCIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(4,4))\n", "roots = np.array([[1,0], [-0.5, np.sqrt(3)/2], [-0.5, -np.sqrt(3)/2]])\n", "plt.scatter(roots[:,0], roots[:,1], s=50, c='red')\n", "xp = np.linspace(0, 2*np.pi, 100)\n", "plt.plot(np.cos(xp), np.sin(xp), c='blue');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 1 (20 points)**. Netwon's method for functions of complex variables - stability and basins of attraction.\n", "\n", "1. Write a function with the following function signature `newton(z, f, fprime, max_iter=100, tol=1e-6)` where\n", " - `z` is a starting value (a complex number e.g.` 3 + 4j`)\n", " - `f` is a function of `z`\n", " - `fprime` is the derivative of `f`\n", "The function will run until either max_iter is reached or the absolute value of the Newton step is less than tol. In either case, the function should return the number of iterations taken and the final value of `z` as a tuple (`i`, `z`). \n", "\n", "2. Define the function `f` and `fprime` that will result in Newton's method finding the cube roots of 1. Find 3 starting points that will give different roots, and print both the start and end points. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def newton(z, f, fprime, max_iter=100, tol=1e-6):\n", " \"\"\"The Newton-Raphson method.\"\"\"\n", " for i in range(max_iter):\n", " step = f(z)/fprime(z)\n", " if abs(step) < tol:\n", " return i, z\n", " z -= step\n", " return i, z" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "f = lambda x: x**3 - 1\n", "fprime = lambda x: 3*x**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " **Exercise 2 (20 points)**. Write the following two plotting functions to see some (pretty) aspects of Newton's algorithm in the complex plane.\n", " \n", " 1. The first function `plot_newton_iters(f, fprime, n=200, extent=[-1,1,-1,1], cmap='hsv')` calculates and stores the number of iterations taken for convergence (or max_iter) for each point in a 2D array. The 2D array limits are given by `extent` - for example, when `extent = [-1,1,-1,1]` the corners of the plot are `(-i, -i), (1, -i), (1, i), (-1, i)`. There are `n` grid points in both the real and imaginary axes. The argument `cmap` specifies the color map to use - the suggested defaults are fine. Finally plot the image using `plt.imshow` - make sure the axis ticks are correctly scaled. Make a plot for the cube roots of 1.\n", "\n", "2. The second function `plot_newton_basins(f, fprime, n=200, extent=[-1,1,-1,1], cmap='jet')` has the same arguments, but this time the grid stores the identity of the root that the starting point convered to. Make a plot for the cube roots of 1 - since there are 3 roots, there should be only 3 colors in the plot.\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_newton_iters(p, pprime, n=200, extent=[-1,1,-1,1], cmap='hsv'):\n", " \"\"\"Shows how long it takes to converge to a root using the Newton-Rahphson method.\"\"\"\n", " m = np.zeros((n,n))\n", " xmin, xmax, ymin, ymax = extent\n", " for r, x in enumerate(np.linspace(xmin, xmax, n)):\n", " for s, y in enumerate(np.linspace(ymin, ymax, n)):\n", " z = x + y*1j\n", " m[r, s] = newton(z, p, pprime)[0]\n", " plt.imshow(m.T, cmap=cmap, extent=extent)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.23 s, sys: 3.41 ms, total: 1.23 s\n", "Wall time: 1.23 s\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%time\n", "plot_newton_iters(f, fprime)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_newton_basins(p, pprime, n=200, extent=[-1,1,-1,1], cmap='jet'):\n", " \"\"\"Shows basin of attraction for convergence to each root using the Newton-Raphson method.\"\"\"\n", " root_count = 0\n", " roots = {}\n", "\n", " m = np.zeros((n,n))\n", " xmin, xmax, ymin, ymax = extent\n", " for r, x in enumerate(np.linspace(xmin, xmax, n)):\n", " for s, y in enumerate(np.linspace(ymin, ymax, n)):\n", " z = x + y*1j\n", " root = np.round(newton(z, p, pprime)[1], 1)\n", " if not root in roots:\n", " roots[root] = root_count\n", " root_count += 1\n", " m[r, s] = roots[root]\n", " plt.imshow(m.T, cmap=cmap, extent=extent)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 2.05 s, sys: 3.56 ms, total: 2.05 s\n", "Wall time: 2.05 s\n" ] }, { "data": { "image/png": "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\n0/h/B3e2FPRg2H4AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%time\n", "plot_newton_basins(f, fprime)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3 (30 points)**. Create your own steepest descent optimizer.\n", "\n", "1. Your optimizer should take as arguments a function $f$, its gradient, an initial guess, a step size, a tolerance (to determine convergence), and a maximum number of steps. It should output convergence status, total number of steps, and the value of the input variable that optimizes $f$.\n", "\n", "2. Setting $\\alpha = -0.05$, use your optimizer to find the minimum of\n", "$$f(x,y) = x^2 + 2y^2$$\n", " using an initial guess of $(0.1,0.1)$, a tolerance of $0.001$ and a max of $100$ interations.\n", "\n", "3. In this case, it is possible to (analytically) determine the optimal step size. Compute the optimal step size $\\alpha^*$ for the initial point of $(0.1,0.1)$ and run the optimizer using step sizes $\\alpha = \\alpha^*/2$ and $\\alpha = 2\\alpha^*$. What do you observe about the behavior of the optimizer as step size is varied?" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.000892111760426\n", "12\n", "0.000370367407434\n", "2\n", "4.67078810442e+42\n", "100\n", "0.000905379424362\n", "3\n" ] } ], "source": [ "def f(x):\n", " return(x[0]**2 + 2*x[1]**2)\n", "def gradf(x):\n", " return(np.array([2*x[0],4*x[1]]))\n", "\n", "def NCG(f,gradf,alpha,x0,tol=0.001,maxiter=100):\n", " nsteps = 0\n", " xs = [x0]\n", " xnext=x0\n", " while (nstepstol ):\n", " xnext = xs[nsteps] + alpha * gradf(xs[nsteps]) \n", " nsteps = nsteps+1\n", " xs.append(xnext)\n", " if (maxiter == nsteps):\n", " converge = \"Not Converged\"\n", " else:\n", " converge = \"Converged\"\n", " return(converge,nsteps,xs)\n", "\n", "\n", "cnv, totsteps, listxs = NCG(f,gradf,-.05,np.array([0.1,0.1]))\n", "print(f(listxs[totsteps]))\n", "print(totsteps)\n", "cnv, totsteps, listxs = NCG(f,gradf,-0.2777777,np.array([0.1,0.1]))\n", "print(f(listxs[totsteps]))\n", "print(totsteps)\n", "cnv, totsteps, listxs = NCG(f,gradf,2*(-0.277777),np.array([0.1,0.1]))\n", "print(f(listxs[totsteps]))\n", "print(totsteps)\n", "cnv, totsteps, listxs = NCG(f,gradf,(-0.277777)/2,np.array([0.1,0.1]))\n", "print(f(listxs[totsteps]))\n", "print(totsteps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 4 (30 points)**. Conjugate Gradient. \n", "\n", "Consider the function:\n", "\n", "$$f:\\mathbb{R}^2\\rightarrow \\mathbb{R}$$\n", "$$(x,y) \\mapsto x^2 +2y^2 -2x+y$$\n", "\n", "The following is intended to help you understand the conjugate gradient method, by computing the first two steps by hand ('by hand' means that you write code to explicitly compute each of the values requested).\n", "\n", "1. Express the function $f$ in matrix form.\n", "\n", "2. Starting at some initial point $x_0\\in \\mathbb{R}^2$, compute $\\alpha_0,p_0,x_1,\\alpha_1,p_1$ and $x_2$ as defined in the notes on Newton-CG." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Let $v=(x,y)$\n", "\n", "$f(v) = v^T A v + b v = v^T \\left(\\begin{matrix}1&0\\\\0&2\\end{matrix}\\right)v + \\left(\\begin{matrix}-2\\\\1\\end{matrix}\\right)v$\n", "\n", "$p_0 = \\nabla f = 2Av_0 + b = 2\\left(\\begin{matrix}1&0\\\\0&2\\end{matrix}\\right)v_0 + \\left(\\begin{matrix}-2\\\\1\\end{matrix}\\right)$\n", "\n", "$\\alpha_0 = -\\frac{\\langle{p}_0, {b}\\rangle}{\\,\\,\\,\\|{p}_0\\|_{A}^2} = -\\frac{\\langle{Av_0+b}, {b}\\rangle}{\\,\\,\\,\\|{Av_0+b}\\|_{A}^2}$, etc." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_alpha_p(A,v,b,oldp):\n", " \n", " # gradient at current step\n", " gradv = -A.dot(v) - b \n", " \n", " # squared norm of previous p (in A-norm)\n", " norm_oldp = oldp.dot(A.dot(oldp)) \n", " \n", " # next p is the current gradient, minus projection onto previous p\n", " pnext = gradv - (oldp.dot(A.dot(gradv))/norm_oldp)*oldp \n", " \n", " # squared A-norm of new p\n", " norm_p = pnext.dot(A.dot(pnext))\n", " \n", " # step size for this step\n", " alpha = (pnext.dot(gradv))/(norm_p)\n", " \n", " return ([pnext,alpha])\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 2. 0.]\n", " [ 0. 4.]]\n", "p0,alpha0\n", "[-0.02 0.024] -20.618556701\n", "v1\n", "[ 1.42237113 -0.75084536]\n", "p1,v1,alpha1\n", "[ 0.61217983 0.25507493] [ 1.42237113 -0.75084536] 0.959895833333\n", "[ 2.01 -0.506]\n" ] } ], "source": [ "# Multiply matrix by factor of 2 - because of quadratic form\n", "A = 2.0*np.array([[1,0],[0,2]])\n", "print(A)\n", "\n", "b = np.array([-2.0,1.0])\n", "\n", "# Initial point\n", "v0 = np.array([20,-20])\n", "\n", "# Initial step = gradient\n", "p0 = -A.dot(v0) - b\n", "\n", "# Initial step size\n", "#norm_p0 = p0.dot(A.dot(p0))\n", "#alpha0 = -(p0.dot(b))/norm_p0\n", "\n", "norm_p0 = np.dot(p0,np.dot(A,p0))\n", "alpha0 = np.dot(p0,p0)/norm_p0\n", "\n", "print(\"p0,alpha0\")\n", "print(p0,alpha0)\n", "\n", "# Move to next point\n", "v1 = v0 + alpha0*p0\n", "print(\"v1\")\n", "print(v1)\n", "\n", "# Get next step\n", "p1,alpha1 = get_alpha_p(A,v1,b,p0)\n", "print(\"p1,v1,alpha1\")\n", "print(p1,v1,alpha1)\n", "\n", "# Move to third point\n", "v2 = v1 + alpha1*p1\n", "print(v2)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }