{ "metadata": { "name": "", "signature": "sha256:a4126d6c54dc8683b5daa028f38743ed277fdf4bf63f2b5b535cc1b37c666f55" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Vandermonde Conditioning" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import numpy.linalg as la\n", "import scipy.special as sp\n", "import matplotlib.pyplot as pt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "n = 5\n", "\n", "nodes = np.linspace(-1, 1, n)\n", "#nodes = sp.legendre(n).weights[:, 0]\n", "\n", "pt.plot(nodes, 0*nodes, \"o\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRK5CYII=\n", "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Monomials" ] }, { "cell_type": "code", "collapsed": false, "input": [ "exponents = np.arange(n)\n", "exponents" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "array([0, 1, 2, 3, 4])" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "exponents[:, np.newaxis]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "array([[0],\n", " [1],\n", " [2],\n", " [3],\n", " [4]])" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "vdm = nodes ** exponents[:, np. newaxis]\n", "\n", "if n < 5:\n", " print(vdm)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "print(la.cond(vdm))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "4.30037521416\n" ] } ], "prompt_number": 29 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Legendre polynomials" ] }, { "cell_type": "code", "collapsed": false, "input": [ "vdm = np.array([sp.eval_legendre(i, nodes) for i in range(n)]).T\n", "\n", "print(la.cond(vdm))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "4.30037521416\n" ] } ], "prompt_number": 30 } ], "metadata": {} } ] }