{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "import numpy as np\n", "import scipy.linalg as la\n", "\n", "import matplotlib.pyplot as pt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's solve $u''=-30x^2$ with $u(0)=1$ and $u(1)=-1$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "n = 50\n", "\n", "mesh = np.linspace(0, 1, n)\n", "h = mesh[1] - mesh[0]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "A = ..." ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 136 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "(edit cell for solution)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "b = -30*mesh**2\n", "b[0] = 1\n", "b[-1] = -1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 145 }, { "cell_type": "code", "collapsed": false, "input": [ "x_true = la.solve(A, b)\n", "pt.plot(mesh, x_true)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 138, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 138 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### And now with Jacobi" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = np.zeros(n)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 440 }, { "cell_type": "code", "collapsed": false, "input": [ "x_new = np.empty(n)\n", "\n", "for i in xrange(n):\n", " x_new[i] = b[i]\n", " for j in xrange(i):\n", " x_new[i] -= ...\n", " for j in xrange(i+1, n):\n", " x_new[i] -= ...\n", " \n", " x_new[i] = ...\n", "\n", "x = x_new\n", "pt.plot(mesh, x)\n", "pt.plot(mesh, x_true, label=\"true\")\n", "pt.legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 444, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 444 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "(Edit cell for solution)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Ideas to accelerate this?\n", "* Multigrid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### And now Gauss-Seidel" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = np.zeros(n)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 148 }, { "cell_type": "code", "collapsed": false, "input": [ "x_new = np.empty(n)\n", "\n", "for i in xrange(n):\n", " x_new[i] = b[i]\n", " for j in xrange(i):\n", " x_new[i] -= A[i,j]*x_new[j]\n", " for j in xrange(i+1, n):\n", " x_new[i] -= A[i,j]*x[j]\n", " \n", " x_new[i] = x_new[i] / A[i,i]\n", "\n", "x = x_new\n", "pt.plot(mesh, x)\n", "pt.plot(mesh, x_true, label=\"true\")\n", "pt.legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 425, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nYII=\n", "text": [ "" ] } ], "prompt_number": 425 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### And now Successive Over-Relaxation (\"SOR\")" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = np.zeros(n)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 426 }, { "cell_type": "code", "collapsed": false, "input": [ "x_new = np.empty(n)\n", "\n", "for i in xrange(n):\n", " x_new[i] = b[i]\n", " for j in xrange(i):\n", " x_new[i] -= A[i,j]*x_new[j]\n", " for j in xrange(i+1, n):\n", " x_new[i] -= A[i,j]*x[j]\n", " \n", " x_new[i] = x_new[i] / A[i,i]\n", "\n", "direction = x_new - x\n", "omega = 1.5\n", "x = x + omega*direction\n", "\n", "pt.plot(mesh, x)\n", "pt.plot(mesh, x_true, label=\"true\")\n", "pt.legend()\n", "pt.ylim([-1.3, 1.3])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 439, "text": [ "(-1.3, 1.3)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 439 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }