Está en la página 1de 14

Apuntes de Cálculo II

TEMA 2

Métodos numéricos de integración en R

Ignacio Bajo Palacio, Guillermo Garcı́a Lomba

18 de Febrero de 2021
Índice
Tema 2. Métodos numéricos de integración en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2. Error de interpolación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3. Casos particulares: Poncelet, Trapecio y Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4. Fórmulas de cuadratura compuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5. Implementación de los métodos numéricos en MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Tema 2
Métodos numéricos de integración
en R

2.1. Introducción
Z b
Dada una función f : [a, b] −→ R, cuando se quiere calcular la integral f (x)dx puede
a
suceder que:
• el cálculo de una primitiva de f sea complicado o imposible,
• no se conozca la función f sino solamente una tabla de valores.
En estos casos habrı́a que recurrir a métodos que nos permitan aproximar numéricamente el
valor de una integral definida.
Supongamos que se conocen los valores de f en los (n + 1) nodos distintos x0 , x1 , . . . , xn .
Rb
Vamos a tratar de aproximar la integral a f (x)dx por una fórmula de cuadratura del tipo:
Z b n
X
f (x)dx ' Ai f (xi ).
a i=0
Nos restringiremos al estudio de las fórmulas de tipo interpolatorio polinómico que reciben
ese nombre porque se basan en la aproximación de la función a integrar por un polinomio y
la integración de dicho polinomio en lugar de la función. Estas fórmulas verifican el siguiente
resultado:

Teorema 1. Una fórmula de cuadratura de n + 1 nodos:


Z b n
X
f (x)dx ' Ai f (xi )
a i=0

es de tipo interpolatorio polinómico si y sólo si es exacta en Πn (R) = h{1, x, . . . , xn }i.

Entonces, para el cálculo de los coeficientes Ai impondremos la exactitud de la fórmula


sobre los polinomios xk , 0 ≤ k ≤ n, de la base de Πn (R) :
n
X bk+1 − ak+1
Ai xki = , 0 ≤ k ≤ n.
k+1
i=0
24 2. Métodos numéricos de integración en R

Observación 1. Resolviendo este sistema lineal de (n + 1) ecuaciones y (n + 1) incógnitas se


obtienen los valores de los coeficientes Ai , i = 0, . . . , n. Este sistema tiene solución única ya
que su matriz es de tipo Vandermonde, con determinante:

1 1 ... 1
x0 x1 ... xn
x20 x21 x2n
Y
∆= ... = (xj − xi ) 6= 0
.. .. .. ..
. . . . 0≤i<j≤n
xn0 xn1 ... xnn
que es no nulo porque los nodos son distintos entre sı́.

Observación 2. La primera ecuación de este sistema nos dice que, en una fórmula de cuadratura
de tipo interpolatorio pólinomico, la suma de todos sus coeficientes es igual a la longitud del
intervalo de integración.

Ejemplo 1. Partimos de la tabla de valores:

xi −1 0 1
f (xi ) 2 −1 3

Entonces, para:
x0 = −1, x1 = 0, x2 = 1
se busca:
Z 1
f (x)dx ' A0 f (x0 ) + A1 f (x1 ) + A2 f (x2 )
−1

Debemos resolver el sistema:



 A0 +A1 +A2 = 1 − (−1) =2
12 − (−1)2



−A0 +A2 = =0
2
3 − (−1)3
1 2


 A0

+A2 = =
3 3
La solución es:

1 4 1
A0 = , A 1 = , A 2 =
3 3 3
Por tanto:
Z 1
1 4 1 1
f (x)dx ' 2 + (−1) + 3 =
−1 3 3 3 3
2.3. Casos particulares: Poncelet, Trapecio y Simpson 25

2.2. Error de interpolación


El siguiente resultado proporciona una acotación teórica del error cometido, válida para
cualquier fórmula de cuadratura de tipo interpolatorio polinómico. Esta estimación puede mejo-
rarse para el caso de nodos equiespaciados.
Teorema 2. Sea f ∈ C n+1 ([a, b]). Si consideremos los nodos de cuadratura x0 , x1 , . . . , xn ∈ [a, b]
y el polinomio π(x) = (x − x0 ) . . . (x − xn ), entonces:
Z b n Z b
X 1
f (x)dx − Ai f (xi ) ≤ max |f (n+1 (ζ)| |π(x)|dx .
a (n + 1)! ζ∈[a,b] a
i=0

2.3. Casos particulares: Poncelet, Trapecio y Simpson


2.3.1. Fórmula de Poncelet (o del punto medio)
a+b
Caso n = 0: x0 = (punto medio). Se aproxima la integral mediante el área del
2
rectángulo de altura f (x0 ).

A0 = b − a
Z b  
a+b
f (x)dx ' (b − a) f
a 2

(b − a)3
|error| ≤ max |f 00 (ζ)| .
24 ζ∈[a,b]

2.3.2. Fórmula del Trapecio

Caso n = 1: x0 = a, x1 = b. Se aproxima la integral mediante el área del trapecio


determinado por f (a) y f (b).

 A0 +A1 =b−a b−a
b2 − a2 ⇒ A0 = A1 =
 A0 a +A1 b = 2
2
Z b
b−a
f (x)dx ' [f (a) + f (b)]
a 2
(b − a)3
|error| ≤ max |f 00 (ζ)| .
12 ζ∈[a,b]

2.3.3. Fórmula de Simpson

Caso n = 2: Se aproxima la integral mediante el área limitada por la parábola que pasa por
los puntos (x0 , f (x0 )), (x1 , f (x1 )) y (x2 , f (x2 )).
26 2. Métodos numéricos de integración en R

a+b
x0 = a, x1 = , x2 = b.
 2

 A0 +A1 +A2 =b−a
a+b b2 − a2


A0 a +A1 +A2 b =

 2 2 2
3 − a3

 2 a + b 2 b
 A0 a +A1 +A2 b =


2 3
b−a 2
⇒ A0 = A2 = , A1 = (b − a)
6 3
Z b  
b−a a+b
f (x)dx ' [f (a) + 4f + f (b)]
a 6 2

(b − a)5
|error| ≤ max |f IV (ζ)| .
2880 ζ∈[a,b]

Observación 3. Como consecuencia directa de las fórmulas de error, puede verse que las
fórmulas de Poncelet y del Trapecio son exactas para polinomios de grado menor o igual que 1,
mientras que la fórmula de Simpson es exacta para polinomios de grado menor o igual que 3.

2.4. Fórmulas de cuadratura compuesta


Consisten en dividir el intervalo [a, b] en subintervalos y aplicar, en cada uno de ellos, una
fórmula de cuadratura con nodos equiespaciados.

Supongamos m subintervalos con (n + 1) nodos cada uno:

b−a H
H= , h= .
m n

yj = a + jH, j = 0, . . . , m.
xk = a + kh, k = 0, . . . , mn.

a = y0 y1 y2 y3 y4 = b

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12

Ejemplo de fórmula compuesta para m = 4, n = 3.


Entonces: Z b m Z
X yj
f (x)dx = f (x)dx,
a j=1 yj−1
2.4. Fórmulas de cuadratura compuesta 27

con: Z yj n
X
f (x)dx ' Ak f (yj−1 + kh), j = 1, . . . , m.
yj−1 k=0

2.4.1. Fórmula de Poncelet compuesta

Caso n = 0. No se ajusta exactamente a las expresiones anteriores. Se aproxima la integral


en cada subintervalo mediante la fórmula de Poncelet (en cada intervalo [yj−1 , yj ] se tomarı́a un
único punto xk , el punto medio).

m  
Rb X yj−1 + yj
a f (x)dx ' H f =
2
j=1

m  
b−aX yj−1 + yj
= f .
m 2
j=1

2.4.2. Fórmula del Trapecio compuesta


b−a
Caso n = 1 : h = . Se aproxima la integral en cada subintervalo mediante la fórmula
m
del trapecio.

Z b m−1
1 X
f (x)dx ' h { [f (a)+f (b)]+ f (a+kh)}.
a 2
k=1

(b − a)3
|error| ≤ max |f 00 (ζ)|.
12m2 ζ∈[a,b]

2.4.3. Fórmula de Simpson compuesta


b−a
Caso n = 2 : h = . Se aproxima la integral en cada subintervalo mediante la fórmula
2m
de Simpson.
Z b m−1
h X
f (x)dx ' [ f (a) + f (b) + 2 f (a + 2kh)
a 3
k=1
m
X
+4 f (a + (2k − 1)h)].
k=1

(b − a)5
|error| ≤ max |f IV (ζ)|.
2880m4 ζ∈[a,b]
28 2. Métodos numéricos de integración en R

2.5. Implementación de los métodos numéricos en MATLAB


En esta sección se recopilan los principales comandos de MATLAB relacionados con el
cálculo integral: comandos de cálculo simbólico para la búsqueda de primitivas y del cálculo
de integrales definidas, y comandos que implementan los métodos numéricos expuestos en el
apartado anterior. Además, se incluyen ejemplos concretos de aplicación de todos ellos y algún
ejercicio propuesto.
Comencemos por unas nociones básicas de MATLAB.

2.5.1. Operaciones y funciones básicas

Las operaciones matemáticas se introducen de la forma habitual: suma a+b, resta a-b, pro-
ducto a*b, cociente a/b y potencia a∧ b. En caso de que se desee hacer alguna de las últimas 3
para listas de valores, almacenadas en vectores c y d del mismo tamaño, bastarı́a escribir: c.*d,
c./d o c.∧ d ; a estas operaciones se les suele llamar operaciones término a término.

Las funciones básicas predefinidas en MATLAB son sqrt, exp, log, sin, cos, tan, asin,
acos, atan, abs,. . .

El número e habrı́a que introducirlo como exp(1), mientras que para π basta escribir pi.

Por defecto, MATLAB muestra los resultados obtenidos en simple precisión (con 4 cifras
decimales). Para poder verlos en doble precisión, debemos utilizar el comando format long.

2.5.2. Cálculo simbólico: comando int

MATLAB incluye herramientas de cálculo simbólico que podemos utilizar, por ejemplo,
para el cálculo de primitivas de funciones. Para ello, en primer lugar, hay que declarar las
variables simbólicas que se necesiten:

>> syms x s;

El comando de integración int es un comando de cálculo simbólico que se puede utilizar


con diferentes argumentos según se quiera obtener una primitiva de una función o una integral
definida. Las diferentes opciones de este comando son:
Z
>> int(f) intenta obtener f (x) dx.

Considera como variable de integración la variable simbólica que aparece en la expresión de f ;


si hay más de una, la variable de integración por defecto es x.
Z
>> int(f,s) intenta obtener f (s) ds.
>> int(f,s,a,b) donde a y b son valores numéricos, intenta obtener el valor numérico
Z b
de la integral definida f (s) ds.
a

En todas las opciones f representa una expresión simbólica (escalar o matricial) de alguna
de las variables simbólicas definidas y se puede introducir directamente en el comando int. Si f
es un valor numérico, por defecto se integra respecto de la variable independiente x.
2.5. Implementación de los métodos numéricos en MATLAB 29

Es importante tener en cuenta que, cuando se utiliza el cálculo simbólico, los resultados se
muestran en forma simbólica (exactos). Si queremos obtener el correspondiente valor numérico
(aproximado), debemos usar el comando double.
Z
1
Ejemplo 2. Calcula la integral indefinida dx.
1 + x2
>> syms x;
>> F=int(1/(1+x∧ 2))
Z 1
1
Ejemplo 3. Calcula la integral definida dx.
−1 1 + x2
>> A=int(1/(1+x∧ 2),-1,1)
>> double(A)

Ejemplo 4. Comprueba la regla de Barrow para el ejemplo anterior.


>> B=subs(F,1)-subs(F,-1)
>> double(B)
Lógicamente, los valores de A y B coinciden.
Nota: el comando subs(F,1) proporciona el valor simbólico de F (1), sustituyendo la variable de
la expresión de F por el valor 1. Para obtener su valor numérico, en este caso, es necesario
utilizar el comando double.

Observación 4. En aquellos casos en que la primitiva no puede expresarse en forma explı́cita


o en los que MATLAB no es capaz de obtenerla, devuelve el comando sin evaluar o lo deja en
función de las integrales que no es capaz de calcular.

2.5.3. Fórmula de Poncelet compuesta. Comando rsums

El comando rsums(’f ’,a,b) aproxima la integral definida de una función f en el intervalo


[a, b] mediante la fórmula de Poncelet compuesta. Si no se especifican los extremos del intervalo,
toma el intervalo por defecto: [0, 1].

>> rsums(’x∧ 2’)

El comando abre una ventana gráfica en la que muestra el valor obtenido mediante la fórmula
de Poncelet compuesta, para una división con 10 subintervalos equiespaciados, y las gráficas de
la función y de la aproximación de la integral definida. Moviendo con el ratón el deslizador que
aparece bajo la gráfica se puede modificar el número de subintervalos y obtener la aproximación
correspondiente.
Z 1 Z π
Ejemplo 5. Aproxima ln(x + 1)dx , cos(x)dx con la fórmula de Poncelet compuesta.
0 0

>> rsums(’log(x+1)’)
>> rsums(’cos(x)’,0,pi)
30 2. Métodos numéricos de integración en R

Ejercicio 1. Utiliza rsums para calcular la integral definida


Z 2π
sen(x)
dx.
0 x
Compara el resultado, para diferentes números de subintervalos, con el valor que proporciona el
comando int.

Ejercicio 2. Utiliza rsums para calcular la integral definida


Z 6
sen4 (x) dx.
1
Compara el resultado, para diferentes números de subintervalos, con el valor exacto de la integral
definida.

2.5.4. Fórmula del trapecio compuesta. Comando trapz

El comando trapz(x,y) aproxima la integral definida de una función f en el intervalo [a, b]


mediante la fórmula del trapecio compuesta. Los argumentos de entrada son dos vectores de
la misma longitud: x = (x0 , . . . , xn ) e y = (f (x0 ), . . . , f (xn )), es decir, una tabla de valores de
y = f (x) para los n + 1 puntos que se consideran en el intervalo [a, b]. Ası́,
Z b
∆x
f (x) dx ' [y0 + 2y1 + . . . + 2yn−1 + yn ]
a 2

Nota: Para utilizar este comando no es necesario conocer la expresión de la función f (x);
llega con una tabla de valores. En caso de conocerla, para construir en MATLAB el vector y, es
necesario escribir dicha expresión utilizando las operaciones término a término (.* , ./ , .∧ ).
Z 4
Ejemplo 6. Aproxima (x2 + 3) dx mediante la fórmula del trapecio compuesta, con una
0
partición de 17 nodos.

>> x=linspace(0,4,17);
>> y=x.∧ 2+3;
>> trapz(x,y)
Teniendo en cuenta que la partición tendrı́a 16 elementos (o subintervalos) de tamaño 0.25, la
primera lı́nea se podrı́a sustituir por
>> x=0:0.25:4;

Ejercicio 3. Comprueba que la fórmula del trapecio es exacta para funciones lineales:
elige una función lineal (recta) y observa cómo el valor de la integral es independiente del número
de elementos de la partición.

Ejercicio 4. Para ciertos trabajos sobre recursos hidráulicos se requieren canales con una cierta
área transversal. A falta de otros medios para el cálculo de dicha área, se han tomado medidas
de la profundidad a lo largo de la sección transversal. La siguiente tabla muestra la profundidad
(en metros), medida cada 2m a lo largo de la longitud transversal.
2.5. Implementación de los métodos numéricos en MATLAB 31

Longitud l 0 2 4 6 8 10 12 14 16 18 20
Profundidad p 0.0 1.8 2.0 4.0 4.0 6.0 4.0 3.4 3.6 2.8 0.0

Calcula el área transversal mediante la fórmula del trapecio compuesta. Para conocer la forma
de la sección transversal del canal, representa la gráfica de la misma mediante el comando
plot(l,-p).

Ejercicio 5. Calcula el valor aproximado de las siguientes integrales definidas mediante la


fórmula del trapecio compuesta y compara los resultados que obtengas al elegir mayor o menor
número de subdivisiones del intervalo.
Z π Z 1 Z 1
2
(a) sen(x) dx , (b) x
e dx , (c) e−x dx .
0 −1 −1

2.5.5. Fórmula de Simpson compuesta. Comando quad

El comando quad proporciona una aproximación de la integral definida de una función f


en el intervalo [a, b] con la fórmula de Simpson compuesta, es decir, mediante el área delimitada
por las parábolas determinadas por cada bloque de 3 puntos consecutivos de la discretización.
Se trata de una aproximación cuadrática y, por tanto, más precisa que las anteriores. Para n
par, la aproximación serı́a:
Z b
∆x
f (x) dx ' [y0 + 4y1 + 2y2 + 4y3 + . . . + 2yn−2 + 4yn−1 + yn ]
a 3

El comando presenta el siguiente formato:


>> I=quad(’funcion’,a,b)
donde la función f (x) se puede proporcionar de diferentes maneras; en estas notas solamente
incluiremos la forma más sencilla y directa.

El comando quad elige internamente una discretización que proporciona una aproximación
que grantiza con un determinado error que, por defecto, está fijado a 1.0e–6. Esta precisión puede
modificarse introduciendo un cuarto argumento de entrada, tol, que representa la tolerancia
personalizada.
>> [I,m]=quad(’funcion’,a,b,tol)
Además tiene un segundo argumento de salida m que muestra el número de puntos de la partición
que MATLAB necesitó tomar para lograr una aproximación que cumpla la tolerancia pedida.
Z 1
2
Ejemplo 7. Aproxima e−x dx.
0

>> [I,m]=quad(’exp(-x.∧ 2)’,0,1)

Nota: La expresión de la función debe escribirse entre apóstrofes y usando operaciones “con
punto” porque el comando quad la evalúa internamente en vectores que contienen los puntos de
la discretización.
32 2. Métodos numéricos de integración en R

Ejercicio 6. Calcula valores aproximados del logaritmo neperiano log(2) utilizando los comandos
trapz y quad. ¿Cuántos puntos necesita cada uno de los dos métodos de integración para
obtener un error inferior a 1.0e–8? [ Sugerencia: integra la función f (x) = 1/x en un intervalo
adecuado.]

También podría gustarte