1. Análisis Numérico
Universidad Nacional de Misiones
Mario R. ROSENBERGER 1 de 6
Integración numérica con MatLab
Matlab cuenta con las siguientes comandos para calcular la integral de
una serie de datos en numérica:
quad Método Simpson 1/3, recursivo* y adaptativo**
quadl Método Gauss-Lobatto recursivo* y adaptativo**
dblquad Evalúa numéricamente la integral doble
triplequad Evalúa numéricamente la integral triple
quad8 Método de Newton-Cotes 8 panel rule
¿Método de Simpson 3/8? y adaptativo**.
trapz Método del trapecio.
La palabra inglesa “quadrature” se usa para designar el cálculo de un área encerrada por una
función y los ejes de coordenadas, es decir, el valor de la integral definida. De allí el nombre de estos
comandos. Quadrature es los que nosotros llamamos integración numérica.
De la lista el comando quad8 se considera obsoleto y se recomienda emplear el método quadl.
Trapz es el único comando que acepta datos sueltos, los demás trabajan con funciones
declaradas en forma simbólica.
* Recursividad implica que la función realiza una referencia a si misma para calcular nuevos valores de
la imagen.
** Adaptativo indica que el tamaño de los intervalos varía para minimizar el error de la aproximación.
El comando “trapz”
El formato de este comando se describe en el esiguiente esquema:
Donde:
X es una vector columna que indica los valores de abscisas de los datos cuya integral se quiere
calcular.
Y es un vector o matriz donde cada columna es una serie de datos a integrar.
Algunos ejemplos de implementación:
>> trapz([ 1 1 1 1])
ans =
3
>> trapz([0 1 2 6],[ 1 1 1 1])
ans =
6
>> trapz([0 1 2 6]',[ 1 1 1 1])
ans =
Comandos utilizados
en esta guía
quad
quadl
dbquad
inline
polyint
int
@
),( YXtrapz
espaciado de los datos
datos a integrar
2. Integración numérica con MatLab
Mario R. ROSENBERGER
2 de 6
6
>> trapz([0 1 2 6]',[ 1 1 1 1; 2 2 2 2 ]')
ans =
6 12
El comando “quad”
El formato del comando quad admite los argumentos, tal como se muestra en el siguiente esquema:
La función a integra debe definirse en forma simbólica mediante el comando inline o a través de
un archivo m. Por ejemplo, para integrar la función y = x2
+5, entre los límites [0,1], puede escribirse:
>> quad('x.^2+5',0,1)
ans =
5.3333
y utilizando un archivo m, llamado fun.m y definido como :
function y=fun(x)
y= x.^2+5;
>> quad('fun',0,1)
ans =
5.3333
o
q = quad(@fun,0,1)
q =
5.3333
Este comando admite más argumentos, tales como, tolerancia del cálculo(tol), la posibilidad de
imprimir los resultados de las iteraciones (trace) e incluir parámetros adicionales para la función (p1
p2,...)tal como se muestra a continuación:
q = quad( fun , a , b , tol , trace , p1 , p2 , ...)
Para quadl, quad8 rigen las mismas recomendaciones.
Integrales dobles:
En Matlab pueden calcularse numéricamente integrales dobles, para ello se usa el comando
dblquad, el formato de dicho comando es como sigue:
q = dblquad ( fun, xmin, xmax, ymin, ymax, tol, method, p1, p2, ...)
),,( bafunciónquad
función a integrar
límite inferior
del intervalo
límite superior
del intervalo
3. Integración numérica con MatLab
Mario R. ROSENBERGER
3 de 6
donde:
fun es una función declarada del tipo inline o a través de un archivo m.
xmin ; xmax : son los valores extremos de la variable x
ymin; ymax : son los valores extremos de la variable y
tol : es la tolerancia para el cálculo numérico
method: especifica el método de cálculo
p1, p2 ,...: son parámetros adicionales que se pueden utilizar en el cálculo.
Ejemplos:
1). usando un función definica con inline:
>>dblquad(inline('y*sin(x) + x*cos(y)'),0, 1, 0,1)
ans =
0.65058433794530
2). usando una función definida en un archivo_m.
function out = esta(x,y)
out = y*sin(x) + x*cos(y);
>> dblquad(@esta,0, 1, 0,1)
ans =
0.65058433794530
3). otra manera de invocar una función definida en un archivo_m.
>> dblquad(‘esta’,0, 1, 0,1, [], @quadl)
ans =
0.65058433946982
En el ejemplo nº 3 los corchetes vacíos “[]” indican que no se modifica el parámetro tolerancia,
empleándose el valor predeterminado
Atención al orden de las variables de integración: estas siguen el orden alfabético. Para los
ejemplos siguientes se define la función: f(x,y) = y2
*x de tres diferentes maneras.
>> a=inline('y^2.*x')
a =
Inline function:
a(x,y) = y^2.*x
>> a2=inline('x*y^2’);
>> a3=inline(‘y*x.^2’);
>> a, dblquad(a,1.3,1.4,2.1,2.2)
a =
Inline function:
a(x,y) = y^2.*x
ans =
0.062415
4. Integración numérica con MatLab
Mario R. ROSENBERGER
4 de 6
>> a2, dblquad(a2,1.3,1.4,2.1,2.2)
a2 =
Inline function:
a2(x,y) = x*y^2
ans =
0.062415
Pero si cambiamos y por x, también debemos cambiar los límites de integración, ya que sino
darán valores diferentes. Comparar los dos ejemplos que siguen:
>> a3, dblquad(a3,1.3,1.4,2.1,2.2) % se invirtieron las variables pero no los límites de integración
a3 =
Inline function:
a3(x,y) = y*x.^2
ans =
0.039202
>> a3, dblquad(a4,2.1,2.2, 1.3,1.4) % aquí se invirtieron las variables y los límites de integración
a3 =
Inline function:
a3(x,y) = y*x.^2
ans =
0.062415
Posibles mensajes de error:
'Minimum step size reached' indicates that the recursive interval subdivision has produced a
subinterval whose length is on the order of roundoff error in the length of the original interval. A
nonintegrable singularity is possible.
'Maximum function count exceeded' indicates that the integrand has been evaluated more than
10,000 times. A nonintegrable singularity is likely.
'Infinite or Not-a-Number function value encountered' indicates a floating point overflow or division
by zero during the evaluation of the integrand in the interior of the interval.
Integración de Polinomios:
Un comando específico, polyint, permite calcular la integral analítica de polinomios, el formato se
indica a continuación:
polyint (p , k)
donde:
p es el polinomio definido como vector fila y k es una constante de integración, cuyo valor
predeterminado es 0 (cero).
>> p = [1 3 4];
polyint(p)
ans =
0.33333 1.5 4 0
eso se interpreta como:
5. Integración numérica con MatLab
Mario R. ROSENBERGER
5 de 6
p = 1*x2
+ 3*x + 4
y
ans = 0.3333*x3
+ 1.5*x2
+ 4*x + 0
Integración simbólica:
El comando int permite calcular la integral de funciones en forma simbólica, su formato es el siguiente:
int (fun , v)
donde:
fun: es la función que se desea integrar.
v: es la variable sobre la que se quiere integrar
Una variable:
>> syms x
>> int(x^2)
ans =
1/3*x^3
más de una variable:
>> syms v x
>> int(v*x^2)
ans =
1/3*v*x^3
>> int(v*x^2,x)
ans =
1/3*v*x^3
>> int(v*x^2,v)
ans =
1/2*v^2*x^2
>> int(v*x^2,v)+int(v*x^2,x)
ans =
1/2*v^2*x^2+1/3*v*x^3
Integral definida resuelta simbólicamente
El comando int además permite calcular la integral definida de
una función, tal como:
y el formato es:
int (f,v,a,b)
∫
b
a
dvvf )(
6. Integración numérica con MatLab
Mario R. ROSENBERGER
6 de 6
donde:
fun: es la función que se desea integrar.
v: es la variable sobre la que se quiere integrar
a y b son los límites de integración
El programa asume de forma predeterminada la variable x como incógnita, entonces puede usarse:
int ( f, a, b)
por ejemplo:
>> int(x^2,1,3)
ans =
26/3
integrales dobles empleando funciones “int” anidadas:
Si anidamos dos comandos int podremos calcular integrales doble. Por anidar se entiende poner un
comando como elemento sobre el que se aplica otro comando del mismo tipo, es decir, un comando
dentro de otro.
por ejemplo:
>> syms x y
>> int ( int (x.^2 * y, x, 1.3, 1.4) , y, 2.1, 2.2 )
ans =
23521/600000
>> eval (ans)
ans =
0.03920166666667