{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Physics 3800 - Gaussian Integration" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import sympy as sp\n", "sp.init_printing(use_latex='mathjax')\n", "from ipywidgets import interactive, fixed\n", "\n", "from scipy.special import *\n", "import scipy.integrate as integrate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Legendre Polynomial Coefficients" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "poly1d([ 4.37500000e+00, 4.85722573e-16, -3.75000000e+00, 2.42861287e-16,\n", " 3.75000000e-01])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "legendre(4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Graphs of Legendre Polynomials" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-1,1,100)\n", "\n", "plt.title(f'$P_m(x)$')\n", "\n", "for m in range(5):\n", " y = eval_legendre(m, x)\n", " plt.plot(x,y, label=f'$y=P_{m}(x)$')\n", "\n", "plt.legend(fontsize=12)\n", "plt.xlabel('x')\n", "\n", "plt.ylabel('y')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Roots" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.86113631, -0.33998104, 0.33998104, 0.86113631])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roots, weights = roots_legendre(4)\n", "roots" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.00000000e+00, 5.55111512e-17, 5.55111512e-17, -5.55111512e-17])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eval_legendre(4,roots)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Construct matrix \n", "\n", "Each row $n$ ($n = 0$ to 3) is $P_n(x)$ evaluated at each of the four roots of $P_4(x)$. Also need inverse of $P$, $P^{-1}$, and the weights, which are the first row of $2 P^{-1}$. We compare this with what the *scipy* function *roots_legendre* reports as the weights for Gauss-Legendre integration." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1. , -0.86113631, 0.61233362, -0.30474698],\n", " [ 1. , -0.33998104, -0.32661934, 0.411728 ],\n", " [ 1. , 0.33998104, -0.32661934, -0.411728 ],\n", " [ 1. , 0.86113631, 0.61233362, 0.30474698]])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P = np.eye(4,4)\n", "\n", "for n in range(4):\n", " P[n]=eval_legendre(n,roots)\n", " \n", "P = np.transpose(P)\n", "P" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.17392742, 0.32607258, 0.32607258, 0.17392742],\n", " [-0.44932566, -0.33257549, 0.33257549, 0.44932566],\n", " [ 0.53250804, -0.53250804, -0.53250804, 0.53250804],\n", " [-0.371027 , 0.93977247, -0.93977247, 0.371027 ]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Pinv = np.linalg.inv(P)\n", "Pinv" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.34785485, 0.65214515, 0.65214515, 0.34785485])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w = 2*Pinv[0]\n", "w" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.34785485, 0.65214515, 0.65214515, 0.34785485])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weights" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integrate a function\n", "\n", "A function that can be well fit with a polynomial of order $2n-1 = 2(4)-1 = 7$. Use library function to calculate integral and compare with Gauss-Legendre method." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def f(x):\n", " return np.exp(-x)*np.sin(3*x)\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-1,1,100)\n", "\n", "plt.title(f'$f(x)$')\n", "\n", "y = f(x)\n", "plt.plot(x,y, label=f'$y=f(x)$')\n", "\n", "plt.legend(fontsize=12)\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "p7=np.polyfit(x,y,7)\n", "ypoly7=np.polyval(p7,x)\n", "\n", "plt.plot(x,y, label=f'$y=f(x)$')\n", "plt.plot(x,ypoly7, label=f'$y=p_7(x)$')\n", "\n", "\n", "plt.legend(fontsize=12)\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.7416161285463809 1.708125114500024e-14\n" ] } ], "source": [ "val,error = integrate.quad(f,-1,1)\n", "print(val, error)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.7431706299286471\n" ] } ], "source": [ "scipy_GaussLegendre, tmp = integrate.fixed_quad(f,-1,1,n=4)\n", "print(scipy_GaussLegendre)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-0.86113631 -0.33998104 0.33998104 0.86113631]\n", "[-1.25306278 -1.1971026 0.60649551 0.22387177]\n", "[0.34785485 0.65214515 0.65214515 0.34785485]\n", "-0.7431706299286476\n" ] } ], "source": [ "gauss_fxi = f(roots)\n", "print(roots)\n", "print(gauss_fxi)\n", "print(weights)\n", "our_GaussLegendre=np.dot(gauss_fxi,weights)\n", "print(our_GaussLegendre)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.20960997508422305\n" ] } ], "source": [ "Percent_error = abs((val-our_GaussLegendre)/val)*100\n", "print(Percent_error)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Only 0.2% error with 4 points!" ] } ], "metadata": { "anaconda-cloud": {}, "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.8.3" } }, "nbformat": 4, "nbformat_minor": 2 }