Práctica de Métodos de la Física Matemática.
Área de Física Teórica. Dpto. Física. UEx

[Graphics:Images/CuadraturaGauss.nb_gr_1.gif]: Santos Bravo Yuste. Email:  santos@unex.es

Fórmulas de integración de Gauss (cuadratura de Gauss)

En este cuaderno vamos a aprender en qué consisten las fórmulas de integración de Gauss.  Estas formúlas se caracterizan por ser muy precisas a pesar de requerir un numero pequeño (con relación a las fórmulas de integración de Newton-Cotes)  de  evaluaciones de la función a integrar.

[Graphics:Images/CuadraturaGauss.nb_gr_2.gif]
Polinomios de interpolación
Polinomios de interpolación de una función  f .  El polinomio ha de pasar por los puntos contenidos en la lista   listaxk

La función equipuntos[n_] genera una tabla de puntos equiespaciados en el intervalo [-1,1] (ambos extremos incluidos).

[Graphics:Images/CuadraturaGauss.nb_gr_3.gif]

Un ejemplo:

[Graphics:Images/CuadraturaGauss.nb_gr_4.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_5.gif]

alpha[x_,listaxk_] proporciona el polinomio α(x)  (véase el guión de practicas)  donde x_k son los componentes de la lista que llamamos listaxk.

[Graphics:Images/CuadraturaGauss.nb_gr_6.gif]

deralpha[x_,listaxk_] proporciona la derivada con respecto a x del  polinomio α(x)

[Graphics:Images/CuadraturaGauss.nb_gr_7.gif]

Un ejemplo:

[Graphics:Images/CuadraturaGauss.nb_gr_8.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_9.gif]

coefpi[m_,x_,listaxk_] proporciona la función c(x,x_m) (véase el guión de la práctica) donde x_m es el m-ésimo punto de la lista  de puntos llamada listaxk

[Graphics:Images/CuadraturaGauss.nb_gr_10.gif]

Un ejemplo:

[Graphics:Images/CuadraturaGauss.nb_gr_11.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_12.gif]

poliinterpola[x_,f_,listaxk_]  proporciona el polinomio de interpolación de Lagrange de la función f que pasa por los puntos de  listaxk. En el guión de prácticas se le llama  [Graphics:Images/CuadraturaGauss.nb_gr_13.gif](x).

[Graphics:Images/CuadraturaGauss.nb_gr_14.gif]

Un ejemplo.  Dibujamos el polinomio de interpolación de la función  cos(x) que pasa por los puntos de la lista  puntos3 y comparamos con la gráfica de la función cos(x). La línea roja es el polinomio de interpolación y la línea azul es el coseno.

[Graphics:Images/CuadraturaGauss.nb_gr_15.gif]

[Graphics:Images/CuadraturaGauss.nb_gr_16.gif]

Ejercicio 1: vamos a comprobar que el polinomio de interpolación se aproxima tanto más a f(x) cuanto mayor es el número de puntos de interpolación que usamos

Ahora vamos a usar una función f(x) un poco más enrevesada que el coseno en el intervalo [-1,1]:

f[x_]=0.3604242700385263 - 0.2859353381541252*x - 
  1.4348876857265924*x^2 + 2.1844018015303113*x^3 - 
  4.8343080908090785*x^4 + 2.4191882435488177*x^5 + 
  1.3915241814906099*x^6 - 4.278574852602567*x^7 - 
  4.720156693312884*x^8 - 0.6428146216358843*x^9 + 
  1.4534839207500816*x^10 + 4.528289022106261*x^11 - 
  2.7772444114996464*x^12 - 4.07493353487623*x^13 + 
  4.97255928084053*x^14 - 2.35378696839158*x^15 - 
  4.087173433313763*x^16 + 2.4066219548996215*x^17 - 
  1.3840320860954547*x^18 + 3.005116267279011*x^19 + 
  0.8217695864556585*x^20 + 4.622208898794499*x^21 - 
  1.6719052089391495*x^22 - 0.22298828147541416*x^23;

Comparamos  el polinomio de interpolación de f(x) que pasa por puntos3 con la función f(x). La línea roja es el polinomio de interpolación y la azul es f(x)

[Graphics:Images/CuadraturaGauss.nb_gr_17.gif]

[Graphics:Images/CuadraturaGauss.nb_gr_18.gif]

Generamos una lista de 5 puntos equiespaciados, mostramos la lista y hallamos el polinomio de interpolación de f(x) que pasa por estos puntos.

[Graphics:Images/CuadraturaGauss.nb_gr_19.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_20.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_21.gif]

Comparamos  el polinomio de interpolación de f(x) que pasa por puntos5 con la función f(x).La línea roja es el polinomio de interpolación y la azul es f(x).

[Graphics:Images/CuadraturaGauss.nb_gr_22.gif]

[Graphics:Images/CuadraturaGauss.nb_gr_23.gif]

Generamos una lista de 9 puntos equiespaciados, mostramos la lista y hallamos el polinomio de interpolación de f(x) que pasa por estos puntos.

[Graphics:Images/CuadraturaGauss.nb_gr_24.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_25.gif]

Comparamos  el polinomio de interpolación de f(x) que pasa por puntos9 con la función f(x).La línea roja es el polinomio de interpolación y la azul es f(x).

[Graphics:Images/CuadraturaGauss.nb_gr_26.gif]

[Graphics:Images/CuadraturaGauss.nb_gr_27.gif]

Aquí tienes instrucciones para generar al azar funciones polinómicas f2[x_] de grado mm y comparar f2(x) con los polinomios de interpolación de f2(x) que pasan por equipuntos[nptos]. Enjoy!

[Graphics:Images/CuadraturaGauss.nb_gr_28.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_29.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_30.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_31.gif]

[Graphics:Images/CuadraturaGauss.nb_gr_32.gif]

Ejercicio 2: ahora comprobamos que el polinomio de interpolación de   mm+1     puntos de un polinomio   poli[x]    de grado   mm   es justamente igual a    poli[x]
[Graphics:Images/CuadraturaGauss.nb_gr_33.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_34.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_35.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_36.gif]
Formulas de integración interpolatorias  [Graphics:Images/CuadraturaGauss.nb_gr_37.gif]~~[Graphics:Images/CuadraturaGauss.nb_gr_38.gif]

Calculamos el coeficiente   w[k_,listaxk_]= [Graphics:Images/CuadraturaGauss.nb_gr_39.gif]=[Graphics:Images/CuadraturaGauss.nb_gr_40.gif] para función peso r(x)=1 en el intervalo [a,b]= [-1,1]

[Graphics:Images/CuadraturaGauss.nb_gr_41.gif]

Si usamos tres puntos equiespaciados, los coeficientes w_k son los de la regla de Simpson (= fórmula de Newton-Cotes de 3 puntos).

[Graphics:Images/CuadraturaGauss.nb_gr_42.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_43.gif]

Calculamos los coeficientes de la fórmula de Newton-Cotes de 5 puntos:

[Graphics:Images/CuadraturaGauss.nb_gr_44.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_45.gif]

IntegraFormuInterpola[f_,listaxk_] proporciona la expresión aproximada [Graphics:Images/CuadraturaGauss.nb_gr_46.gif]de la  integral  [Graphics:Images/CuadraturaGauss.nb_gr_47.gif].   Aquí [Graphics:Images/CuadraturaGauss.nb_gr_48.gif] es el elemento k-ésimo de listaxk.

[Graphics:Images/CuadraturaGauss.nb_gr_49.gif]
Ejercicio 3: vamos a comparar diversas estimaciones proporcionadas  por las fórmulas de integración aproximada de Newton-Cotes de 3, 5 y 9 puntos con el resultado que proporciona la función  NIntegrate   de Mathematica.
[Graphics:Images/CuadraturaGauss.nb_gr_50.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_51.gif]
Formula de integración de Gauss-Legendre

En la fórmula de Gauss-Legendre de n  puntos, los puntos  x_k  con k=1,..,n , son justamente los n  ceros del polinomio de Legendre de grado n.  En Mathematica, este polinomio viene dado por la función  LegendreP[n,x].
La función raicesLeg[n_] proporciona una lista con los n ceros del polinomio de Legrendre de grado n.

[Graphics:Images/CuadraturaGauss.nb_gr_52.gif]

La función raizLeg[n_,m_]  proporciona el elemento m-ésimo de la lista a lista  raicesLeg[n] de los  n ceros del polinomio de Legrendre de grado n.

[Graphics:Images/CuadraturaGauss.nb_gr_53.gif]

wGaussLegendre[k_,n_] proporciona el coeficiente [Graphics:Images/CuadraturaGauss.nb_gr_54.gif] de la fórmula de Gauss-Legendre de n puntos.

[Graphics:Images/CuadraturaGauss.nb_gr_55.gif]

IntegraGaussLegendre[f_,listaxk_] proporciona la expresión aproximada [Graphics:Images/CuadraturaGauss.nb_gr_56.gif]de la  integral  [Graphics:Images/CuadraturaGauss.nb_gr_57.gif].según el método de Gauss-Legendre.  Esto significa que [Graphics:Images/CuadraturaGauss.nb_gr_58.gif] viene dado por  wGaussLegendre[k_,n_]  y  [Graphics:Images/CuadraturaGauss.nb_gr_59.gif] es ell  k-ésimo cero del polinomio de Legendre de orden n.

[Graphics:Images/CuadraturaGauss.nb_gr_60.gif]

Fórmula explícita de la cuadratura de Gauss-Legendre de n puntos para una función   fun    cualquiera

[Graphics:Images/CuadraturaGauss.nb_gr_61.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_62.gif]

Resultados aproximados proporcionados por fórmulas de Newton-Cotes de 3,5,9,13 y 17 puntos, junto con el resultado hallado con NIntegrate para la función f definida anteriormente

Ejercicio 4: vamos a comparar  las fórmulas de integración aproximada de Newton-Cotes y de Gauss_Legendre.
de 3, 5 y 9 puntos con el resultado que proporciona la función  NIntegrate   de Mathematica.

Resultados proporcionados por la fórmulas de integración aproximada de Newton-Cotes de 3, 5,  9, 13 y 17 puntos junto con el resultado que proporciona la función NIntegrate de Mathematica.

[Graphics:Images/CuadraturaGauss.nb_gr_63.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_64.gif]

Resultados aproximados proporcionados por fórmulas de Gauss-Legendre de 3, 5,  7 y 10 puntos, junto con el resultado hallado con NIntegrate para la función f definida anteriormente.  Compárense estos resultados con los obtenidos en la celda anterior.  ¿Convincente?

[Graphics:Images/CuadraturaGauss.nb_gr_65.gif]
[Graphics:Images/CuadraturaGauss.nb_gr_66.gif]
Ejercicio 5.  Construye la función IntegraGaussLaguere[f, n]  que calcule mediante la cuadratura de Gauss-Laguerre la integral    [Graphics:Images/CuadraturaGauss.nb_gr_67.gif].
Compara los resultados obtenidos para n=10 con los exactos si f(x)= x^m  con m= 0,1,... 25.  
Halla los valores de w_k  y   x_k correspondientes a n=6 y n=10 y compara con los proporcionados en Abramowitz-Stegun [1]
Ejercicio 6.  Construye la función IntegraGaussHermite[f, n]  que calcule mediante la cuadratura de Gauss-Hermite la integral    [Graphics:Images/CuadraturaGauss.nb_gr_68.gif].
Compara los resultados obtenidos para n=10 con los exactos si f(x)= x^m  con m= 0,2, 4,...22.  
Halla los valores de w_k  y   x_k correspondientes a n=6 y n=10 y compara con los proporcionados en Abramowitz-Stegun [1]

[1] M.Abramowitz y I. A.Stegun, Handbook of Mathematical Functions.  Dover, Nueva York, 1972.