PRÁCTICAS DE CÁLCULO NUMÉRICO III PRÁCTICA 3 Página web de la asignatura: http://personales.unican.es/segurajj/cniii.html El objetivo de esta práctica es implementar la reglas de integración de Gauss-Legendre, Gauss-Hermite y Gauss-Laguerre, calculando los nodos y los pesos de la cuadratura mediante el algoritmo de GolubWelsch. Para calcular los nodos y los pesos, deberemos diagonalizar la matriz simétrica de Jacobi asociada a cada una de las cuadraturas gaussianas. Para ello, utilizaremos el comando eig de Matlab, que nos proporciona los valores y vectores propios (teclear “help eig” para tener información sobre este comando). Como ejemplo ilustrativo de la construcción de las cuadraturas, consideremos la cuadratura de 2 Gauss-Hermite, que es la correspondiente a la función peso w(x) = e−x en el intervalo (−∞, +∞). Los polinomios ortogonales asociados a este peso son los polinomios de Hermite, que verifican: Hn+1 (x) = 2xHn (x) − 2nHn−1 (x) y H0 (x) = 1, H1 (x) = 2x. La matriz (simétrica) de Jacobi de tamaño N es entonces J = 0 α1 0 ... α1 0 α2 0 .. .. .. . . ... . 0 αN −1 ... ... αN −1 0 p donde αi = i/2. El primer paso para construir la regla de cuadratura de Gauss-Hermite con N nodos será construir la matriz de Jacobi de tamaño N . Para ello, escribiremos el programa JacobiH.m con la sintaxis: function J=JacobiH(N) que nos dará como output la matriz de Jacobi de tamaño N . Los nodos y pesos los obtendremos mediante el algoritmo de Golub-Welsch, que implementaremos en el programa GW.m, cuya primera linea será function [x,w]=GW(mu0,J) siendo x el vector de los nodos y w el de los pesos. Como sabemos, los dos únicos datos de entrada que precisa el algoritmo de Golub-Welsch son el momento de orden cero (mu0), es decir: Z b µ0 = w(x)dx a √ que para el caso de la cuadratura de Gauss-Hermite es µ0 = π, junto con la matriz de Jacobi J. En GW.m utilizaremos el comando eig de Matlab para obtener los valores y vectores propios. Finalmente, construiremos el programa GaussH.m que implementará la cuadratura de GaussHermite para evaluar integrales de la forma Z +∞ −∞ En la primera linea escribiremos: 2 f (x)e−x dx . function I0=GaussH(f,N) el resultado numérico de la integración será I0. Las entradas son f, la función a integrar (que introduciremos como cadena alfanumérica), y N, el número de nodos de la integración. Para la cuadratura de Gauss-Legendre (w(x) = 1 en [−1, 1]) procederemos de similar forma, programando en JacobiL.m la construcción de la matriz de Jacobi y en GaussL.m la aplicación de la regla de cuadratura. Recordemos la relación de recurrencia para los polinomios de Legendre: (n + 1)Pn+1 (x) = (2n + 1)xPn (x) − nPn−1 (x) n = 1, 2 P0 (x) = 1, P1 (x) = x Para la integración de Gauss-Laguerre, cuyo peso depende de un parámetro (w(x) = xα e−x en [0, +∞), α > −1) deberemos considerar este parámetro (que fijaremos al valor que más nos convenga) como entrada en la función que construye la matriz de Jacobi (JacobiLa.m)y en la que implementa la regla de cuadratura (GaussLa.m). Utilizaremos la siguiente sintaxis: function J=JacobiLa(alpha,N) y function I0=GaussLa(f,alpha,N) (α) Recordemos la recurrencia para los polinomios de Laguerre Ln (x): (α) (α) (α) (n + 1)Ln+1 (x) = (−x + 2n + α + 1)Ln (x) − (n + α)Ln−1 (x) , n = 1, 2, ... (α) (α) L0 (x) = 1 , L1 (x) = −x + α + 1 1. Actividades 1. En un fichero matlab que llamaremos practi3.m, evaluaremos las siguientes integrales con la mayor precisión relativa posible utilizando en cada caso el mı́nimo número de nodos posible (pero sin separar las integrales en suma de integrales): a) b) c) d) e) R3 14 6 −2 (x − 7x )dx R +∞ 18 14 2 −4(x−2)2 dx −∞ (x + x − 6x )e R +∞ 10 (x + 5x4 )e−x dx 0 R +∞ −1/2 10 x (x + 5x4 + 20)e−x dx 0 R +∞ 10 (x + 5x4 + 20)e−x dx 2 En pantalla deberemos ver el resultado numérico ası́ como una descripción breve del motivo de la elección de cada método y del número de nodos. 2. Sabemos que las cuadraturas gaussianas (para un peso w(x) en [a, b]) con n nodos verifican que Z b f (x)w(x)dx = a n X wi f (xi ) + γ i=1 f (2n) (ζ) , ζ ∈ (a, b) (2n)! Encontrar numéricamente γ en los siguientes casos: a) Cuadratura de Gauss-Legendre con 10 nodos b) Cuadratura de Gauss-Hermite con 10 nodos 1 3. Evaluar la integral −1 cos(cos(x))dx con una precisión relativa mejor que 10−12 , comparando integraciones gaussianas con un número creciente de nodos hasta alcanzar la precisión requerida. R