{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "\n", "import numpy\n", "import numpy.linalg as la" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "nodes = [0, 1]\n", "#nodes = [0, 0.5, 1]\n", "#nodes = [3, 3.5, 4]\n", "#nodes = [0, 1, 2]\n", "#nodes = np.linspace(0, 1, 12)\n", "\n", "max_degree = len(nodes)-1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "nodes = np.array(nodes)\n", "powers = np.arange(max_degree+1)\n", "\n", "Vt = nodes ** powers.reshape(-1, 1)\n", "\n", "a = nodes[0]\n", "b = nodes[-1]\n", "rhs = 1/(powers+1) * (b**(powers+1) - a**(powers+1))\n", "\n", "if len(nodes) <= 4:\n", " print Vt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[1 1]\n", " [0 1]]\n" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "weights = la.solve(Vt, rhs)\n", "\n", "print weights" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0.5 0.5]\n" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "for i in range(len(nodes) + 1):\n", " approx = np.dot(weights, nodes**i)\n", " true = 1/(i+1)*(b**(i+1) - a**(i+1))\n", " \n", " print \"Error at degree %d: %g\" % (i, approx-true)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Error at degree 0: 0\n", "Error at degree 1: 0\n", "Error at degree 2: 0.166667\n" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 } ], "metadata": {} } ] }